libclamav/c++/PPCGenDAGISel.inc
f8058910
 //===- TableGen'erated file -------------------------------------*- C++ -*-===//
 //
 // DAG Instruction Selector for the PPC 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.
 
5f42f863
 // The main instruction selector code.
 SDNode *SelectCode(SDNode *N) {
   // Opcodes are emitted as 2 bytes, TARGET_OPCODE handles this.
   #define TARGET_OPCODE(X) X & 255, unsigned(X) >> 8
   static const unsigned char MatcherTable[] = {
95937a6a
           OPC_SwitchOpcode , 40,  TARGET_OPCODE(ISD::MEMBARRIER),
5f42f863
             OPC_RecordNode,
             OPC_MoveChild, 1,
95937a6a
             OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
5f42f863
             OPC_CheckType, MVT::i32,
             OPC_MoveParent,
             OPC_MoveChild, 2,
95937a6a
             OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
5f42f863
             OPC_MoveParent,
             OPC_MoveChild, 3,
95937a6a
             OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
5f42f863
             OPC_MoveParent,
             OPC_MoveChild, 4,
95937a6a
             OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
5f42f863
             OPC_MoveParent,
             OPC_MoveChild, 5,
95937a6a
             OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
5f42f863
             OPC_MoveParent,
95937a6a
             OPC_EmitMergeInputChains1_0,
5f42f863
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::SYNC), 0|OPFL_Chain,
                 0, 0, 
95937a6a
           73|128,4,  TARGET_OPCODE(ISD::INTRINSIC_VOID),
5f42f863
             OPC_RecordNode,
             OPC_MoveChild, 1,
95937a6a
             OPC_Scope, 17, 
               OPC_CheckInteger, 67|128,2, 
5f42f863
               OPC_MoveParent,
               OPC_RecordChild2,
               OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::DCBA), 0|OPFL_Chain,
                   0, 2, 2, 3, 
95937a6a
             17, 
               OPC_CheckInteger, 68|128,2, 
5f42f863
               OPC_MoveParent,
               OPC_RecordChild2,
               OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::DCBF), 0|OPFL_Chain,
                   0, 2, 2, 3, 
95937a6a
             17, 
               OPC_CheckInteger, 69|128,2, 
5f42f863
               OPC_MoveParent,
               OPC_RecordChild2,
               OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::DCBI), 0|OPFL_Chain,
                   0, 2, 2, 3, 
95937a6a
             17, 
               OPC_CheckInteger, 70|128,2, 
5f42f863
               OPC_MoveParent,
               OPC_RecordChild2,
               OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::DCBST), 0|OPFL_Chain,
                   0, 2, 2, 3, 
95937a6a
             17, 
               OPC_CheckInteger, 71|128,2, 
5f42f863
               OPC_MoveParent,
               OPC_RecordChild2,
               OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::DCBT), 0|OPFL_Chain,
                   0, 2, 2, 3, 
95937a6a
             17, 
               OPC_CheckInteger, 72|128,2, 
5f42f863
               OPC_MoveParent,
               OPC_RecordChild2,
               OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::DCBTST), 0|OPFL_Chain,
                   0, 2, 2, 3, 
95937a6a
             17, 
               OPC_CheckInteger, 73|128,2, 
5f42f863
               OPC_MoveParent,
               OPC_RecordChild2,
               OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::DCBZ), 0|OPFL_Chain,
                   0, 2, 2, 3, 
95937a6a
             17, 
               OPC_CheckInteger, 74|128,2, 
5f42f863
               OPC_MoveParent,
               OPC_RecordChild2,
               OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::DCBZL), 0|OPFL_Chain,
                   0, 2, 2, 3, 
95937a6a
             19, 
               OPC_CheckInteger, 63|128,1, 
5f42f863
               OPC_MoveParent,
               OPC_RecordChild2,
               OPC_RecordChild3,
               OPC_CheckComplexPat, /*CP*/0, /*#*/2,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::STVEBX), 0|OPFL_Chain,
                   0, 3, 1, 3, 4, 
95937a6a
             19, 
               OPC_CheckInteger, 64|128,1, 
5f42f863
               OPC_MoveParent,
               OPC_RecordChild2,
               OPC_RecordChild3,
               OPC_CheckComplexPat, /*CP*/0, /*#*/2,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::STVEHX), 0|OPFL_Chain,
                   0, 3, 1, 3, 4, 
95937a6a
             19, 
               OPC_CheckInteger, 65|128,1, 
5f42f863
               OPC_MoveParent,
               OPC_RecordChild2,
               OPC_RecordChild3,
               OPC_CheckComplexPat, /*CP*/0, /*#*/2,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::STVEWX), 0|OPFL_Chain,
                   0, 3, 1, 3, 4, 
95937a6a
             19, 
               OPC_CheckInteger, 66|128,1, 
5f42f863
               OPC_MoveParent,
               OPC_RecordChild2,
               OPC_RecordChild3,
               OPC_CheckComplexPat, /*CP*/0, /*#*/2,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::STVX), 0|OPFL_Chain,
                   0, 3, 1, 3, 4, 
95937a6a
             19, 
               OPC_CheckInteger, 67|128,1, 
5f42f863
               OPC_MoveParent,
               OPC_RecordChild2,
               OPC_RecordChild3,
               OPC_CheckComplexPat, /*CP*/0, /*#*/2,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::STVXL), 0|OPFL_Chain,
                   0, 3, 1, 3, 4, 
95937a6a
             33, 
               OPC_CheckInteger, 48|128,1, 
5f42f863
               OPC_MoveParent,
               OPC_RecordChild2,
               OPC_MoveChild, 2,
95937a6a
               OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
5f42f863
               OPC_MoveParent,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_EmitInteger, MVT::i32, 0, 
               OPC_EmitConvertToTarget, 1,
               OPC_EmitInteger, MVT::i32, 0, 
               OPC_EmitInteger, MVT::i32, 0, 
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::DSS), 0|OPFL_Chain,
                   0, 4, 2, 3, 4, 5, 
95937a6a
             61, 
               OPC_CheckInteger, 50|128,1, 
5f42f863
               OPC_MoveParent,
               OPC_RecordChild2,
95937a6a
               OPC_Scope, 26, 
5f42f863
                 OPC_CheckChild2Type, MVT::i32,
                 OPC_RecordChild3,
                 OPC_RecordChild4,
                 OPC_MoveChild, 4,
95937a6a
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
5f42f863
                 OPC_MoveParent,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_EmitInteger, MVT::i32, 0, 
                 OPC_EmitConvertToTarget, 3,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::DST), 0|OPFL_Chain,
                     0, 4, 4, 5, 1, 2, 
95937a6a
               26, 
5f42f863
                 OPC_CheckChild2Type, MVT::i64,
                 OPC_RecordChild3,
                 OPC_RecordChild4,
                 OPC_MoveChild, 4,
95937a6a
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
5f42f863
                 OPC_MoveParent,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_EmitInteger, MVT::i32, 0, 
                 OPC_EmitConvertToTarget, 3,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::DST64), 0|OPFL_Chain,
                     0, 4, 4, 5, 1, 2, 
               0, 
95937a6a
             61, 
               OPC_CheckInteger, 53|128,1, 
5f42f863
               OPC_MoveParent,
               OPC_RecordChild2,
95937a6a
               OPC_Scope, 26, 
5f42f863
                 OPC_CheckChild2Type, MVT::i32,
                 OPC_RecordChild3,
                 OPC_RecordChild4,
                 OPC_MoveChild, 4,
95937a6a
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
5f42f863
                 OPC_MoveParent,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_EmitInteger, MVT::i32, 1, 
                 OPC_EmitConvertToTarget, 3,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::DSTT), 0|OPFL_Chain,
                     0, 4, 4, 5, 1, 2, 
95937a6a
               26, 
5f42f863
                 OPC_CheckChild2Type, MVT::i64,
                 OPC_RecordChild3,
                 OPC_RecordChild4,
                 OPC_MoveChild, 4,
95937a6a
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
5f42f863
                 OPC_MoveParent,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_EmitInteger, MVT::i32, 1, 
                 OPC_EmitConvertToTarget, 3,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::DSTT64), 0|OPFL_Chain,
                     0, 4, 4, 5, 1, 2, 
               0, 
95937a6a
             61, 
               OPC_CheckInteger, 51|128,1, 
5f42f863
               OPC_MoveParent,
               OPC_RecordChild2,
95937a6a
               OPC_Scope, 26, 
5f42f863
                 OPC_CheckChild2Type, MVT::i32,
                 OPC_RecordChild3,
                 OPC_RecordChild4,
                 OPC_MoveChild, 4,
95937a6a
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
5f42f863
                 OPC_MoveParent,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_EmitInteger, MVT::i32, 0, 
                 OPC_EmitConvertToTarget, 3,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::DSTST), 0|OPFL_Chain,
                     0, 4, 4, 5, 1, 2, 
95937a6a
               26, 
5f42f863
                 OPC_CheckChild2Type, MVT::i64,
                 OPC_RecordChild3,
                 OPC_RecordChild4,
                 OPC_MoveChild, 4,
95937a6a
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
5f42f863
                 OPC_MoveParent,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_EmitInteger, MVT::i32, 0, 
                 OPC_EmitConvertToTarget, 3,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::DSTST64), 0|OPFL_Chain,
                     0, 4, 4, 5, 1, 2, 
               0, 
95937a6a
             61, 
               OPC_CheckInteger, 52|128,1, 
5f42f863
               OPC_MoveParent,
               OPC_RecordChild2,
95937a6a
               OPC_Scope, 26, 
5f42f863
                 OPC_CheckChild2Type, MVT::i32,
                 OPC_RecordChild3,
                 OPC_RecordChild4,
                 OPC_MoveChild, 4,
95937a6a
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
5f42f863
                 OPC_MoveParent,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_EmitInteger, MVT::i32, 1, 
                 OPC_EmitConvertToTarget, 3,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::DSTSTT), 0|OPFL_Chain,
                     0, 4, 4, 5, 1, 2, 
95937a6a
               26, 
5f42f863
                 OPC_CheckChild2Type, MVT::i64,
                 OPC_RecordChild3,
                 OPC_RecordChild4,
                 OPC_MoveChild, 4,
95937a6a
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
5f42f863
                 OPC_MoveParent,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_EmitInteger, MVT::i32, 1, 
                 OPC_EmitConvertToTarget, 3,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::DSTSTT64), 0|OPFL_Chain,
                     0, 4, 4, 5, 1, 2, 
               0, 
95937a6a
             11, 
               OPC_CheckInteger, 75|128,2, 
5f42f863
               OPC_MoveParent,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::SYNC), 0|OPFL_Chain,
                   0, 0, 
95937a6a
             13, 
               OPC_CheckInteger, 62|128,1, 
5f42f863
               OPC_MoveParent,
               OPC_RecordChild2,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::MTVSCR), 0|OPFL_Chain,
                   0, 1, 1, 
95937a6a
             27, 
               OPC_CheckInteger, 49|128,1, 
5f42f863
               OPC_MoveParent,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_EmitInteger, MVT::i32, 1, 
               OPC_EmitInteger, MVT::i32, 0, 
               OPC_EmitInteger, MVT::i32, 0, 
               OPC_EmitInteger, MVT::i32, 0, 
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::DSSALL), 0|OPFL_Chain,
                   0, 4, 1, 2, 3, 4, 
             0, 
95937a6a
           32|128,4,  TARGET_OPCODE(ISD::ADD),
             OPC_Scope, 49|128,1, 
5f42f863
               OPC_RecordChild0,
               OPC_MoveChild, 1,
95937a6a
               OPC_SwitchOpcode , 24,  TARGET_OPCODE(PPCISD::Lo),
5f42f863
                 OPC_RecordChild0,
                 OPC_MoveChild, 0,
95937a6a
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::TargetGlobalAddress),
5f42f863
                 OPC_MoveParent,
                 OPC_MoveChild, 1,
                 OPC_CheckInteger, 0, 
                 OPC_MoveParent,
                 OPC_MoveParent,
                 OPC_CheckType, MVT::i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LA), 0,
                     1, MVT::i32, 2, 0, 1, 
95937a6a
               13|128,1,  TARGET_OPCODE(PPCISD::Hi),
5f42f863
                 OPC_RecordChild0,
                 OPC_MoveChild, 0,
95937a6a
                 OPC_SwitchOpcode , 31,  TARGET_OPCODE(ISD::TargetGlobalAddress),
5f42f863
                   OPC_MoveParent,
                   OPC_MoveChild, 1,
                   OPC_CheckInteger, 0, 
                   OPC_MoveParent,
                   OPC_MoveParent,
                   OPC_SwitchType , 9,  MVT::i32,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS), 0,
                         1, MVT::i32, 2, 0, 1, 
                   9,  MVT::i64,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS8), 0,
                         1, MVT::i64, 2, 0, 1, 
                   0, 
95937a6a
                 31,  TARGET_OPCODE(ISD::TargetConstantPool),
5f42f863
                   OPC_MoveParent,
                   OPC_MoveChild, 1,
                   OPC_CheckInteger, 0, 
                   OPC_MoveParent,
                   OPC_MoveParent,
                   OPC_SwitchType , 9,  MVT::i32,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS), 0,
                         1, MVT::i32, 2, 0, 1, 
                   9,  MVT::i64,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS8), 0,
                         1, MVT::i64, 2, 0, 1, 
                   0, 
95937a6a
                 31,  TARGET_OPCODE(ISD::TargetJumpTable),
5f42f863
                   OPC_MoveParent,
                   OPC_MoveChild, 1,
                   OPC_CheckInteger, 0, 
                   OPC_MoveParent,
                   OPC_MoveParent,
                   OPC_SwitchType , 9,  MVT::i32,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS), 0,
                         1, MVT::i32, 2, 0, 1, 
                   9,  MVT::i64,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS8), 0,
                         1, MVT::i64, 2, 0, 1, 
                   0, 
95937a6a
                 31,  TARGET_OPCODE(ISD::TargetBlockAddress),
5f42f863
                   OPC_MoveParent,
                   OPC_MoveChild, 1,
                   OPC_CheckInteger, 0, 
                   OPC_MoveParent,
                   OPC_MoveParent,
                   OPC_SwitchType , 9,  MVT::i32,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS), 0,
                         1, MVT::i32, 2, 0, 1, 
                   9,  MVT::i64,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS8), 0,
                         1, MVT::i64, 2, 0, 1, 
                   0, 
                 0, 
               0, 
95937a6a
             53|128,1, 
5f42f863
               OPC_MoveChild, 0,
95937a6a
               OPC_SwitchOpcode , 25,  TARGET_OPCODE(PPCISD::Lo),
5f42f863
                 OPC_RecordChild0,
                 OPC_MoveChild, 0,
95937a6a
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::TargetGlobalAddress),
5f42f863
                 OPC_MoveParent,
                 OPC_MoveChild, 1,
                 OPC_CheckInteger, 0, 
                 OPC_MoveParent,
                 OPC_MoveParent,
                 OPC_RecordChild1,
                 OPC_CheckType, MVT::i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LA), 0,
                     1, MVT::i32, 2, 1, 0, 
95937a6a
               17|128,1,  TARGET_OPCODE(PPCISD::Hi),
5f42f863
                 OPC_RecordChild0,
                 OPC_MoveChild, 0,
95937a6a
                 OPC_SwitchOpcode , 32,  TARGET_OPCODE(ISD::TargetGlobalAddress),
5f42f863
                   OPC_MoveParent,
                   OPC_MoveChild, 1,
                   OPC_CheckInteger, 0, 
                   OPC_MoveParent,
                   OPC_MoveParent,
                   OPC_RecordChild1,
                   OPC_SwitchType , 9,  MVT::i64,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS8), 0,
                         1, MVT::i64, 2, 1, 0, 
                   9,  MVT::i32,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS), 0,
                         1, MVT::i32, 2, 1, 0, 
                   0, 
95937a6a
                 32,  TARGET_OPCODE(ISD::TargetConstantPool),
5f42f863
                   OPC_MoveParent,
                   OPC_MoveChild, 1,
                   OPC_CheckInteger, 0, 
                   OPC_MoveParent,
                   OPC_MoveParent,
                   OPC_RecordChild1,
                   OPC_SwitchType , 9,  MVT::i64,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS8), 0,
                         1, MVT::i64, 2, 1, 0, 
                   9,  MVT::i32,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS), 0,
                         1, MVT::i32, 2, 1, 0, 
                   0, 
95937a6a
                 32,  TARGET_OPCODE(ISD::TargetJumpTable),
5f42f863
                   OPC_MoveParent,
                   OPC_MoveChild, 1,
                   OPC_CheckInteger, 0, 
                   OPC_MoveParent,
                   OPC_MoveParent,
                   OPC_RecordChild1,
                   OPC_SwitchType , 9,  MVT::i64,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS8), 0,
                         1, MVT::i64, 2, 1, 0, 
                   9,  MVT::i32,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS), 0,
                         1, MVT::i32, 2, 1, 0, 
                   0, 
95937a6a
                 32,  TARGET_OPCODE(ISD::TargetBlockAddress),
5f42f863
                   OPC_MoveParent,
                   OPC_MoveChild, 1,
                   OPC_CheckInteger, 0, 
                   OPC_MoveParent,
                   OPC_MoveParent,
                   OPC_RecordChild1,
                   OPC_SwitchType , 9,  MVT::i64,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS8), 0,
                         1, MVT::i64, 2, 1, 0, 
                   9,  MVT::i32,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS), 0,
                         1, MVT::i32, 2, 1, 0, 
                   0, 
                 0, 
               0, 
95937a6a
             50|128,1, 
5f42f863
               OPC_RecordChild0,
               OPC_RecordChild1,
95937a6a
               OPC_Scope, 113, 
5f42f863
                 OPC_MoveChild, 1,
95937a6a
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
5f42f863
                 OPC_Scope, 16, 
                   OPC_CheckPredicate, 0,
                   OPC_MoveParent,
                   OPC_CheckType, MVT::i32,
                   OPC_EmitConvertToTarget, 1,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDI), 0,
                       1, MVT::i32, 2, 0, 2, 
                 19, 
                   OPC_CheckPredicate, 1,
                   OPC_MoveParent,
                   OPC_CheckType, MVT::i32,
                   OPC_EmitConvertToTarget, 1,
                   OPC_EmitNodeXForm, 0, 2,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS), 0,
                       1, MVT::i32, 2, 0, 3, 
                 16, 
                   OPC_CheckPredicate, 0,
                   OPC_MoveParent,
                   OPC_CheckType, MVT::i64,
                   OPC_EmitConvertToTarget, 1,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDI8), 0,
                       1, MVT::i64, 2, 0, 2, 
                 19, 
                   OPC_CheckPredicate, 1,
                   OPC_MoveParent,
                   OPC_CheckType, MVT::i64,
                   OPC_EmitConvertToTarget, 1,
                   OPC_EmitNodeXForm, 0, 2,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS8), 0,
                       1, MVT::i64, 2, 0, 3, 
                 31, 
                   OPC_MoveParent,
                   OPC_CheckType, MVT::i32,
                   OPC_EmitConvertToTarget, 1,
                   OPC_EmitNodeXForm, 1, 2,
                   OPC_EmitNode, TARGET_OPCODE(PPC::ADDI), 0,
                       1, MVT::i32, 2, 0, 3, 
                   OPC_EmitConvertToTarget, 1,
                   OPC_EmitNodeXForm, 2, 5,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIS), 0,
                       1, MVT::i32, 2, 4, 6, 
                 0, 
               11, 
                 OPC_CheckType, MVT::i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADD4), 0,
                     1, MVT::i32, 2, 0, 1, 
               11, 
95937a6a
                 OPC_CheckType, MVT::i64,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADD8), 0,
                     1, MVT::i64, 2, 0, 1, 
               11, 
5f42f863
                 OPC_CheckType, MVT::v16i8,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VADDUBM), 0,
                     1, MVT::v16i8, 2, 0, 1, 
               11, 
                 OPC_CheckType, MVT::v8i16,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VADDUHM), 0,
                     1, MVT::v8i16, 2, 0, 1, 
               11, 
                 OPC_CheckType, MVT::v4i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VADDUWM), 0,
                     1, MVT::v4i32, 2, 0, 1, 
               0, 
             0, 
95937a6a
           72|128,6,  TARGET_OPCODE(ISD::LOAD),
5d2a1c48
             OPC_RecordMemRef,
             OPC_RecordNode,
             OPC_RecordChild1,
5f42f863
             OPC_CheckPredicate, 2,
95937a6a
             OPC_Scope, 19, 
5f42f863
               OPC_CheckPredicate, 3,
               OPC_CheckPredicate, 4,
               OPC_CheckType, MVT::i32,
               OPC_CheckComplexPat, /*CP*/1, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZ), 0|OPFL_Chain|OPFL_MemRefs,
                   1, MVT::i32, 2, 2, 3, 
95937a6a
             19, 
5f42f863
               OPC_CheckPredicate, 5,
               OPC_CheckPredicate, 6,
               OPC_CheckType, MVT::i32,
               OPC_CheckComplexPat, /*CP*/1, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::LHA), 0|OPFL_Chain|OPFL_MemRefs,
                   1, MVT::i32, 2, 2, 3, 
95937a6a
             19, 
5f42f863
               OPC_CheckPredicate, 3,
               OPC_CheckPredicate, 7,
               OPC_CheckType, MVT::i32,
               OPC_CheckComplexPat, /*CP*/1, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::LHZ), 0|OPFL_Chain|OPFL_MemRefs,
                   1, MVT::i32, 2, 2, 3, 
95937a6a
             17, 
5f42f863
               OPC_CheckPredicate, 8,
95937a6a
               OPC_CheckType, MVT::i32,
               OPC_CheckComplexPat, /*CP*/1, /*#*/1,
               OPC_EmitMergeInputChains1_0,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::LWZ), 0|OPFL_Chain|OPFL_MemRefs,
                   1, MVT::i32, 2, 2, 3, 
             19, 
5f42f863
               OPC_CheckPredicate, 3,
               OPC_CheckPredicate, 4,
               OPC_CheckType, MVT::i32,
               OPC_CheckComplexPat, /*CP*/2, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZX), 0|OPFL_Chain|OPFL_MemRefs,
                   1, MVT::i32, 2, 2, 3, 
95937a6a
             19, 
5f42f863
               OPC_CheckPredicate, 5,
               OPC_CheckPredicate, 6,
               OPC_CheckType, MVT::i32,
               OPC_CheckComplexPat, /*CP*/2, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::LHAX), 0|OPFL_Chain|OPFL_MemRefs,
                   1, MVT::i32, 2, 2, 3, 
95937a6a
             19, 
5f42f863
               OPC_CheckPredicate, 3,
               OPC_CheckPredicate, 7,
               OPC_CheckType, MVT::i32,
               OPC_CheckComplexPat, /*CP*/2, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::LHZX), 0|OPFL_Chain|OPFL_MemRefs,
                   1, MVT::i32, 2, 2, 3, 
95937a6a
             17, 
5f42f863
               OPC_CheckPredicate, 8,
95937a6a
               OPC_CheckType, MVT::i32,
               OPC_CheckComplexPat, /*CP*/2, /*#*/1,
               OPC_EmitMergeInputChains1_0,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::LWZX), 0|OPFL_Chain|OPFL_MemRefs,
                   1, MVT::i32, 2, 2, 3, 
             36, 
5f42f863
               OPC_CheckPredicate, 3,
               OPC_CheckPredicate, 9,
               OPC_CheckType, MVT::i32,
95937a6a
               OPC_Scope, 13, 
5f42f863
                 OPC_CheckComplexPat, /*CP*/1, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZ), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i32, 2, 2, 3, 
95937a6a
               13, 
5f42f863
                 OPC_CheckComplexPat, /*CP*/2, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZX), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i32, 2, 2, 3, 
               0, 
95937a6a
             105, 
5f42f863
               OPC_CheckPredicate, 10,
5d2a1c48
               OPC_CheckType, MVT::i32,
95937a6a
               OPC_Scope, 32, 
5f42f863
                 OPC_CheckPredicate, 11,
95937a6a
                 OPC_Scope, 13, 
5f42f863
                   OPC_CheckComplexPat, /*CP*/1, /*#*/1,
95937a6a
                   OPC_EmitMergeInputChains1_0,
5f42f863
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZ), 0|OPFL_Chain|OPFL_MemRefs,
                       1, MVT::i32, 2, 2, 3, 
95937a6a
                 13, 
5f42f863
                   OPC_CheckComplexPat, /*CP*/2, /*#*/1,
95937a6a
                   OPC_EmitMergeInputChains1_0,
5f42f863
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZX), 0|OPFL_Chain|OPFL_MemRefs,
                       1, MVT::i32, 2, 2, 3, 
                 0, 
95937a6a
               32, 
5f42f863
                 OPC_CheckPredicate, 12,
95937a6a
                 OPC_Scope, 13, 
5f42f863
                   OPC_CheckComplexPat, /*CP*/1, /*#*/1,
95937a6a
                   OPC_EmitMergeInputChains1_0,
5f42f863
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZ), 0|OPFL_Chain|OPFL_MemRefs,
                       1, MVT::i32, 2, 2, 3, 
95937a6a
                 13, 
5f42f863
                   OPC_CheckComplexPat, /*CP*/2, /*#*/1,
95937a6a
                   OPC_EmitMergeInputChains1_0,
5f42f863
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZX), 0|OPFL_Chain|OPFL_MemRefs,
                       1, MVT::i32, 2, 2, 3, 
                 0, 
95937a6a
               32, 
5f42f863
                 OPC_CheckPredicate, 13,
95937a6a
                 OPC_Scope, 13, 
5f42f863
                   OPC_CheckComplexPat, /*CP*/1, /*#*/1,
95937a6a
                   OPC_EmitMergeInputChains1_0,
5f42f863
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::LHZ), 0|OPFL_Chain|OPFL_MemRefs,
                       1, MVT::i32, 2, 2, 3, 
95937a6a
                 13, 
5f42f863
                   OPC_CheckComplexPat, /*CP*/2, /*#*/1,
95937a6a
                   OPC_EmitMergeInputChains1_0,
5f42f863
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::LHZX), 0|OPFL_Chain|OPFL_MemRefs,
                       1, MVT::i32, 2, 2, 3, 
                 0, 
               0, 
95937a6a
             70, 
5f42f863
               OPC_CheckPredicate, 5,
5d2a1c48
               OPC_CheckType, MVT::i64,
95937a6a
               OPC_Scope, 15, 
5f42f863
                 OPC_CheckPredicate, 6,
                 OPC_CheckComplexPat, /*CP*/1, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LHA8), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i64, 2, 2, 3, 
95937a6a
               15, 
5f42f863
                 OPC_CheckPredicate, 14,
                 OPC_CheckComplexPat, /*CP*/3, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LWA), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i64, 2, 2, 3, 
95937a6a
               15, 
5f42f863
                 OPC_CheckPredicate, 6,
                 OPC_CheckComplexPat, /*CP*/2, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LHAX8), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i64, 2, 2, 3, 
95937a6a
               15, 
5f42f863
                 OPC_CheckPredicate, 14,
                 OPC_CheckComplexPat, /*CP*/2, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LWAX), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i64, 2, 2, 3, 
               0, 
95937a6a
             102, 
5f42f863
               OPC_CheckPredicate, 3,
5d2a1c48
               OPC_CheckType, MVT::i64,
95937a6a
               OPC_Scope, 15, 
5f42f863
                 OPC_CheckPredicate, 4,
                 OPC_CheckComplexPat, /*CP*/1, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZ8), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i64, 2, 2, 3, 
95937a6a
               15, 
5f42f863
                 OPC_CheckPredicate, 7,
                 OPC_CheckComplexPat, /*CP*/1, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LHZ8), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i64, 2, 2, 3, 
95937a6a
               15, 
5f42f863
                 OPC_CheckPredicate, 15,
                 OPC_CheckComplexPat, /*CP*/1, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LWZ8), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i64, 2, 2, 3, 
95937a6a
               15, 
5f42f863
                 OPC_CheckPredicate, 4,
                 OPC_CheckComplexPat, /*CP*/2, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZX8), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i64, 2, 2, 3, 
95937a6a
               15, 
5f42f863
                 OPC_CheckPredicate, 7,
                 OPC_CheckComplexPat, /*CP*/2, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LHZX8), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i64, 2, 2, 3, 
95937a6a
               15, 
5f42f863
                 OPC_CheckPredicate, 15,
                 OPC_CheckComplexPat, /*CP*/2, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LWZX8), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i64, 2, 2, 3, 
               0, 
95937a6a
             34, 
5f42f863
               OPC_CheckPredicate, 8,
               OPC_CheckType, MVT::i64,
95937a6a
               OPC_Scope, 13, 
5f42f863
                 OPC_CheckComplexPat, /*CP*/3, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LD), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i64, 2, 2, 3, 
95937a6a
               13, 
5f42f863
                 OPC_CheckComplexPat, /*CP*/2, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LDX), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i64, 2, 2, 3, 
               0, 
95937a6a
             36, 
5f42f863
               OPC_CheckPredicate, 3,
               OPC_CheckPredicate, 9,
               OPC_CheckType, MVT::i64,
95937a6a
               OPC_Scope, 13, 
5f42f863
                 OPC_CheckComplexPat, /*CP*/1, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZ8), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i64, 2, 2, 3, 
95937a6a
               13, 
5f42f863
                 OPC_CheckComplexPat, /*CP*/2, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZX8), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i64, 2, 2, 3, 
               0, 
95937a6a
             10|128,1, 
5f42f863
               OPC_CheckPredicate, 10,
95937a6a
               OPC_CheckType, MVT::i64,
               OPC_Scope, 32, 
                 OPC_CheckPredicate, 11,
                 OPC_Scope, 13, 
                   OPC_CheckComplexPat, /*CP*/1, /*#*/1,
                   OPC_EmitMergeInputChains1_0,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZ8), 0|OPFL_Chain|OPFL_MemRefs,
                       1, MVT::i64, 2, 2, 3, 
                 13, 
                   OPC_CheckComplexPat, /*CP*/2, /*#*/1,
                   OPC_EmitMergeInputChains1_0,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZX8), 0|OPFL_Chain|OPFL_MemRefs,
                       1, MVT::i64, 2, 2, 3, 
                 0, 
               32, 
                 OPC_CheckPredicate, 12,
                 OPC_Scope, 13, 
                   OPC_CheckComplexPat, /*CP*/1, /*#*/1,
                   OPC_EmitMergeInputChains1_0,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZ8), 0|OPFL_Chain|OPFL_MemRefs,
                       1, MVT::i64, 2, 2, 3, 
                 13, 
                   OPC_CheckComplexPat, /*CP*/2, /*#*/1,
                   OPC_EmitMergeInputChains1_0,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::LBZX8), 0|OPFL_Chain|OPFL_MemRefs,
                       1, MVT::i64, 2, 2, 3, 
5f42f863
                 0, 
95937a6a
               32, 
                 OPC_CheckPredicate, 13,
                 OPC_Scope, 13, 
                   OPC_CheckComplexPat, /*CP*/1, /*#*/1,
                   OPC_EmitMergeInputChains1_0,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::LHZ8), 0|OPFL_Chain|OPFL_MemRefs,
                       1, MVT::i64, 2, 2, 3, 
                 13, 
                   OPC_CheckComplexPat, /*CP*/2, /*#*/1,
                   OPC_EmitMergeInputChains1_0,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::LHZX8), 0|OPFL_Chain|OPFL_MemRefs,
                       1, MVT::i64, 2, 2, 3, 
                 0, 
               32, 
                 OPC_CheckPredicate, 16,
                 OPC_Scope, 13, 
5f42f863
                   OPC_CheckComplexPat, /*CP*/1, /*#*/1,
95937a6a
                   OPC_EmitMergeInputChains1_0,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::LWZ8), 0|OPFL_Chain|OPFL_MemRefs,
                       1, MVT::i64, 2, 2, 3, 
                 13, 
                   OPC_CheckComplexPat, /*CP*/2, /*#*/1,
                   OPC_EmitMergeInputChains1_0,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::LWZX8), 0|OPFL_Chain|OPFL_MemRefs,
                       1, MVT::i64, 2, 2, 3, 
                 0, 
               0, 
             68, 
               OPC_CheckPredicate, 8,
               OPC_SwitchType , 30,  MVT::f32,
                 OPC_Scope, 13, 
                   OPC_CheckComplexPat, /*CP*/1, /*#*/1,
                   OPC_EmitMergeInputChains1_0,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::LFS), 0|OPFL_Chain|OPFL_MemRefs,
5f42f863
                       1, MVT::f32, 2, 2, 3, 
95937a6a
                 13, 
5f42f863
                   OPC_CheckComplexPat, /*CP*/2, /*#*/1,
95937a6a
                   OPC_EmitMergeInputChains1_0,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::LFSX), 0|OPFL_Chain|OPFL_MemRefs,
5f42f863
                       1, MVT::f32, 2, 2, 3, 
95937a6a
                 0, 
               30,  MVT::f64,
                 OPC_Scope, 13, 
                   OPC_CheckComplexPat, /*CP*/1, /*#*/1,
                   OPC_EmitMergeInputChains1_0,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::LFD), 0|OPFL_Chain|OPFL_MemRefs,
                       1, MVT::f64, 2, 2, 3, 
                 13, 
                   OPC_CheckComplexPat, /*CP*/2, /*#*/1,
                   OPC_EmitMergeInputChains1_0,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::LFDX), 0|OPFL_Chain|OPFL_MemRefs,
                       1, MVT::f64, 2, 2, 3, 
5f42f863
                 0, 
               0, 
95937a6a
             60, 
               OPC_CheckPredicate, 10,
               OPC_CheckPredicate, 17,
               OPC_CheckType, MVT::f64,
               OPC_Scope, 25, 
                 OPC_CheckComplexPat, /*CP*/1, /*#*/1,
                 OPC_EmitMergeInputChains1_0,
                 OPC_EmitNode, TARGET_OPCODE(PPC::LFS), 0|OPFL_Chain,
                     1, MVT::f32, 2, 2, 3, 
                 OPC_EmitInteger, MVT::i32, PPC::F8RCRegClassID,
                 OPC_MorphNodeTo, TARGET_OPCODE(TargetOpcode::COPY_TO_REGCLASS), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::f64, 2, 4, 5, 
               25, 
                 OPC_CheckComplexPat, /*CP*/2, /*#*/1,
                 OPC_EmitMergeInputChains1_0,
                 OPC_EmitNode, TARGET_OPCODE(PPC::LFSX), 0|OPFL_Chain,
                     1, MVT::f32, 2, 2, 3, 
                 OPC_EmitInteger, MVT::i32, PPC::F8RCRegClassID,
                 OPC_MorphNodeTo, TARGET_OPCODE(TargetOpcode::COPY_TO_REGCLASS), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::f64, 2, 4, 5, 
               0, 
             17, 
               OPC_CheckPredicate, 8,
               OPC_CheckType, MVT::v4i32,
               OPC_CheckComplexPat, /*CP*/0, /*#*/1,
               OPC_EmitMergeInputChains1_0,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::LVX), 0|OPFL_Chain|OPFL_MemRefs,
                   1, MVT::v4i32, 2, 2, 3, 
5f42f863
             0, 
95937a6a
           29|128,4,  TARGET_OPCODE(ISD::STORE),
5d2a1c48
             OPC_RecordMemRef,
             OPC_RecordNode,
             OPC_RecordChild1,
95937a6a
             OPC_Scope, 52|128,1, 
5d2a1c48
               OPC_CheckChild1Type, MVT::i32,
               OPC_RecordChild2,
95937a6a
               OPC_Scope, 110, 
5d2a1c48
                 OPC_CheckPredicate, 18,
95937a6a
                 OPC_Scope, 36, 
5d2a1c48
                   OPC_CheckPredicate, 19,
95937a6a
                   OPC_Scope, 15, 
5d2a1c48
                     OPC_CheckPredicate, 20,
                     OPC_CheckComplexPat, /*CP*/1, /*#*/2,
95937a6a
                     OPC_EmitMergeInputChains1_0,
5d2a1c48
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::STB), 0|OPFL_Chain|OPFL_MemRefs,
                         0, 3, 1, 3, 4, 
95937a6a
                   15, 
5d2a1c48
                     OPC_CheckPredicate, 21,
                     OPC_CheckComplexPat, /*CP*/1, /*#*/2,
95937a6a
                     OPC_EmitMergeInputChains1_0,
5d2a1c48
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::STH), 0|OPFL_Chain|OPFL_MemRefs,
                         0, 3, 1, 3, 4, 
                   0, 
95937a6a
                 15, 
5d2a1c48
                   OPC_CheckPredicate, 22,
5f42f863
                   OPC_CheckComplexPat, /*CP*/1, /*#*/2,
95937a6a
                   OPC_EmitMergeInputChains1_0,
5f42f863
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::STW), 0|OPFL_Chain|OPFL_MemRefs,
                       0, 3, 1, 3, 4, 
95937a6a
                 36, 
5d2a1c48
                   OPC_CheckPredicate, 19,
95937a6a
                   OPC_Scope, 15, 
5d2a1c48
                     OPC_CheckPredicate, 20,
                     OPC_CheckComplexPat, /*CP*/2, /*#*/2,
95937a6a
                     OPC_EmitMergeInputChains1_0,
5d2a1c48
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::STBX), 0|OPFL_Chain|OPFL_MemRefs,
                         0, 3, 1, 3, 4, 
95937a6a
                   15, 
5d2a1c48
                     OPC_CheckPredicate, 21,
                     OPC_CheckComplexPat, /*CP*/2, /*#*/2,
95937a6a
                     OPC_EmitMergeInputChains1_0,
5d2a1c48
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::STHX), 0|OPFL_Chain|OPFL_MemRefs,
                         0, 3, 1, 3, 4, 
                   0, 
95937a6a
                 15, 
5d2a1c48
                   OPC_CheckPredicate, 22,
5f42f863
                   OPC_CheckComplexPat, /*CP*/2, /*#*/2,
95937a6a
                   OPC_EmitMergeInputChains1_0,
5f42f863
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::STWX), 0|OPFL_Chain|OPFL_MemRefs,
                       0, 3, 1, 3, 4, 
                 0, 
95937a6a
               63, 
5d2a1c48
                 OPC_RecordChild3,
95937a6a
                 OPC_Scope, 40, 
5f42f863
                   OPC_CheckPredicate, 23,
5d2a1c48
                   OPC_CheckPredicate, 24,
95937a6a
                   OPC_Scope, 16, 
5d2a1c48
                     OPC_CheckPredicate, 25,
                     OPC_CheckComplexPat, /*CP*/4, /*#*/3,
95937a6a
                     OPC_EmitMergeInputChains1_0,
5d2a1c48
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::STBU), 0|OPFL_Chain|OPFL_MemRefs,
                         1, MVT::iPTR, 3, 1, 4, 2, 
95937a6a
                   16, 
5d2a1c48
                     OPC_CheckPredicate, 26,
                     OPC_CheckComplexPat, /*CP*/4, /*#*/3,
95937a6a
                     OPC_EmitMergeInputChains1_0,
5d2a1c48
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::STHU), 0|OPFL_Chain|OPFL_MemRefs,
                         1, MVT::iPTR, 3, 1, 4, 2, 
                   0, 
95937a6a
                 18, 
5d2a1c48
                   OPC_CheckPredicate, 27,
                   OPC_CheckPredicate, 28,
                   OPC_CheckComplexPat, /*CP*/4, /*#*/3,
95937a6a
                   OPC_EmitMergeInputChains1_0,
5d2a1c48
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::STWU), 0|OPFL_Chain|OPFL_MemRefs,
                       1, MVT::iPTR, 3, 1, 4, 2, 
5f42f863
                 0, 
5d2a1c48
               0, 
95937a6a
             60, 
5d2a1c48
               OPC_CheckChild1Type, MVT::f32,
               OPC_RecordChild2,
95937a6a
               OPC_Scope, 34, 
5d2a1c48
                 OPC_CheckPredicate, 18,
5f42f863
                 OPC_CheckPredicate, 22,
95937a6a
                 OPC_Scope, 13, 
5d2a1c48
                   OPC_CheckComplexPat, /*CP*/1, /*#*/2,
95937a6a
                   OPC_EmitMergeInputChains1_0,
5d2a1c48
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::STFS), 0|OPFL_Chain|OPFL_MemRefs,
5f42f863
                       0, 3, 1, 3, 4, 
95937a6a
                 13, 
5f42f863
                   OPC_CheckComplexPat, /*CP*/2, /*#*/2,
95937a6a
                   OPC_EmitMergeInputChains1_0,
5d2a1c48
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::STFSX), 0|OPFL_Chain|OPFL_MemRefs,
5f42f863
                       0, 3, 1, 3, 4, 
                 0, 
95937a6a
               19, 
5f42f863
                 OPC_RecordChild3,
                 OPC_CheckPredicate, 27,
5d2a1c48
                 OPC_CheckPredicate, 28,
5f42f863
                 OPC_CheckComplexPat, /*CP*/4, /*#*/3,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::STFSU), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::iPTR, 3, 1, 4, 2, 
               0, 
95937a6a
             60, 
5d2a1c48
               OPC_CheckChild1Type, MVT::f64,
               OPC_RecordChild2,
95937a6a
               OPC_Scope, 34, 
5d2a1c48
                 OPC_CheckPredicate, 18,
                 OPC_CheckPredicate, 22,
95937a6a
                 OPC_Scope, 13, 
5d2a1c48
                   OPC_CheckComplexPat, /*CP*/1, /*#*/2,
95937a6a
                   OPC_EmitMergeInputChains1_0,
5d2a1c48
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::STFD), 0|OPFL_Chain|OPFL_MemRefs,
                       0, 3, 1, 3, 4, 
95937a6a
                 13, 
5d2a1c48
                   OPC_CheckComplexPat, /*CP*/2, /*#*/2,
95937a6a
                   OPC_EmitMergeInputChains1_0,
5d2a1c48
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::STFDX), 0|OPFL_Chain|OPFL_MemRefs,
                       0, 3, 1, 3, 4, 
                 0, 
95937a6a
               19, 
5f42f863
                 OPC_RecordChild3,
                 OPC_CheckPredicate, 27,
5d2a1c48
                 OPC_CheckPredicate, 28,
5f42f863
                 OPC_CheckComplexPat, /*CP*/4, /*#*/3,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::STFDU), 0|OPFL_Chain|OPFL_MemRefs,
5f42f863
                     1, MVT::iPTR, 3, 1, 4, 2, 
               0, 
95937a6a
             20, 
5d2a1c48
               OPC_CheckChild1Type, MVT::v4i32,
5f42f863
               OPC_RecordChild2,
5d2a1c48
               OPC_CheckPredicate, 18,
               OPC_CheckPredicate, 22,
               OPC_CheckComplexPat, /*CP*/0, /*#*/2,
95937a6a
               OPC_EmitMergeInputChains1_0,
5d2a1c48
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::STVX), 0|OPFL_Chain|OPFL_MemRefs,
                   0, 3, 1, 3, 4, 
95937a6a
             81|128,1, 
5d2a1c48
               OPC_CheckChild1Type, MVT::i64,
               OPC_RecordChild2,
95937a6a
               OPC_Scope, 10|128,1, 
5d2a1c48
                 OPC_CheckPredicate, 18,
95937a6a
                 OPC_Scope, 100, 
5d2a1c48
                   OPC_CheckPredicate, 19,
95937a6a
                   OPC_Scope, 15, 
5d2a1c48
                     OPC_CheckPredicate, 20,
                     OPC_CheckComplexPat, /*CP*/1, /*#*/2,
95937a6a
                     OPC_EmitMergeInputChains1_0,
5d2a1c48
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::STB8), 0|OPFL_Chain|OPFL_MemRefs,
                         0, 3, 1, 3, 4, 
95937a6a
                   15, 
5d2a1c48
                     OPC_CheckPredicate, 21,
                     OPC_CheckComplexPat, /*CP*/1, /*#*/2,
95937a6a
                     OPC_EmitMergeInputChains1_0,
5d2a1c48
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::STH8), 0|OPFL_Chain|OPFL_MemRefs,
                         0, 3, 1, 3, 4, 
95937a6a
                   15, 
5d2a1c48
                     OPC_CheckPredicate, 29,
                     OPC_CheckComplexPat, /*CP*/1, /*#*/2,
95937a6a
                     OPC_EmitMergeInputChains1_0,
5d2a1c48
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::STW8), 0|OPFL_Chain|OPFL_MemRefs,
                         0, 3, 1, 3, 4, 
95937a6a
                   15, 
5d2a1c48
                     OPC_CheckPredicate, 20,
                     OPC_CheckComplexPat, /*CP*/2, /*#*/2,
95937a6a
                     OPC_EmitMergeInputChains1_0,
5d2a1c48
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::STBX8), 0|OPFL_Chain|OPFL_MemRefs,
                         0, 3, 1, 3, 4, 
95937a6a
                   15, 
5d2a1c48
                     OPC_CheckPredicate, 21,
                     OPC_CheckComplexPat, /*CP*/2, /*#*/2,
95937a6a
                     OPC_EmitMergeInputChains1_0,
5d2a1c48
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::STHX8), 0|OPFL_Chain|OPFL_MemRefs,
                         0, 3, 1, 3, 4, 
95937a6a
                   15, 
5d2a1c48
                     OPC_CheckPredicate, 29,
                     OPC_CheckComplexPat, /*CP*/2, /*#*/2,
95937a6a
                     OPC_EmitMergeInputChains1_0,
5d2a1c48
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::STWX8), 0|OPFL_Chain|OPFL_MemRefs,
                         0, 3, 1, 3, 4, 
                   0, 
95937a6a
                 32, 
5d2a1c48
                   OPC_CheckPredicate, 22,
95937a6a
                   OPC_Scope, 13, 
5d2a1c48
                     OPC_CheckComplexPat, /*CP*/3, /*#*/2,
95937a6a
                     OPC_EmitMergeInputChains1_0,
5d2a1c48
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::STD), 0|OPFL_Chain|OPFL_MemRefs,
                         0, 3, 1, 3, 4, 
95937a6a
                   13, 
5d2a1c48
                     OPC_CheckComplexPat, /*CP*/2, /*#*/2,
95937a6a
                     OPC_EmitMergeInputChains1_0,
5d2a1c48
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::STDX), 0|OPFL_Chain|OPFL_MemRefs,
                         0, 3, 1, 3, 4, 
                   0, 
                 0, 
95937a6a
               63, 
5d2a1c48
                 OPC_RecordChild3,
95937a6a
                 OPC_Scope, 40, 
5d2a1c48
                   OPC_CheckPredicate, 23,
                   OPC_CheckPredicate, 24,
95937a6a
                   OPC_Scope, 16, 
5d2a1c48
                     OPC_CheckPredicate, 25,
                     OPC_CheckComplexPat, /*CP*/4, /*#*/3,
95937a6a
                     OPC_EmitMergeInputChains1_0,
5d2a1c48
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::STBU8), 0|OPFL_Chain|OPFL_MemRefs,
                         1, MVT::iPTR, 3, 1, 4, 2, 
95937a6a
                   16, 
5d2a1c48
                     OPC_CheckPredicate, 26,
                     OPC_CheckComplexPat, /*CP*/4, /*#*/3,
95937a6a
                     OPC_EmitMergeInputChains1_0,
5d2a1c48
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::STHU8), 0|OPFL_Chain|OPFL_MemRefs,
                         1, MVT::iPTR, 3, 1, 4, 2, 
                   0, 
95937a6a
                 18, 
5d2a1c48
                   OPC_CheckPredicate, 27,
                   OPC_CheckPredicate, 28,
                   OPC_CheckComplexPat, /*CP*/4, /*#*/3,
95937a6a
                   OPC_EmitMergeInputChains1_0,
5d2a1c48
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::STDU), 0|OPFL_Chain|OPFL_MemRefs,
                       1, MVT::iPTR, 3, 1, 4, 2, 
                 0, 
               0, 
5f42f863
             0, 
95937a6a
           79,  TARGET_OPCODE(ISD::ATOMIC_LOAD_ADD),
5d2a1c48
             OPC_RecordMemRef,
             OPC_RecordNode,
             OPC_RecordChild1,
             OPC_RecordChild2,
95937a6a
             OPC_SwitchType , 53,  MVT::i32,
               OPC_Scope, 16, 
                 OPC_CheckPredicate, 30,
5d2a1c48
                 OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_ADD_I8), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i32, 3, 3, 4, 2, 
95937a6a
               16, 
                 OPC_CheckPredicate, 31,
5d2a1c48
                 OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_ADD_I16), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i32, 3, 3, 4, 2, 
95937a6a
               16, 
                 OPC_CheckPredicate, 32,
5d2a1c48
                 OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_ADD_I32), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i32, 3, 3, 4, 2, 
               0, 
95937a6a
             16,  MVT::i64,
               OPC_CheckPredicate, 33,
5f42f863
               OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_ADD_I64), 0|OPFL_Chain|OPFL_MemRefs,
                   1, MVT::i64, 3, 3, 4, 2, 
             0, 
95937a6a
           79,  TARGET_OPCODE(ISD::ATOMIC_LOAD_SUB),
5d2a1c48
             OPC_RecordMemRef,
             OPC_RecordNode,
             OPC_RecordChild1,
             OPC_RecordChild2,
95937a6a
             OPC_SwitchType , 53,  MVT::i32,
               OPC_Scope, 16, 
                 OPC_CheckPredicate, 34,
5d2a1c48
                 OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_SUB_I8), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i32, 3, 3, 4, 2, 
95937a6a
               16, 
                 OPC_CheckPredicate, 35,
5d2a1c48
                 OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_SUB_I16), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i32, 3, 3, 4, 2, 
95937a6a
               16, 
                 OPC_CheckPredicate, 36,
5d2a1c48
                 OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_SUB_I32), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i32, 3, 3, 4, 2, 
               0, 
95937a6a
             16,  MVT::i64,
               OPC_CheckPredicate, 37,
5f42f863
               OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_SUB_I64), 0|OPFL_Chain|OPFL_MemRefs,
                   1, MVT::i64, 3, 3, 4, 2, 
             0, 
95937a6a
           79,  TARGET_OPCODE(ISD::ATOMIC_LOAD_AND),
5d2a1c48
             OPC_RecordMemRef,
             OPC_RecordNode,
             OPC_RecordChild1,
             OPC_RecordChild2,
95937a6a
             OPC_SwitchType , 53,  MVT::i32,
               OPC_Scope, 16, 
                 OPC_CheckPredicate, 38,
5d2a1c48
                 OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_AND_I8), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i32, 3, 3, 4, 2, 
95937a6a
               16, 
                 OPC_CheckPredicate, 39,
5d2a1c48
                 OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_AND_I16), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i32, 3, 3, 4, 2, 
95937a6a
               16, 
                 OPC_CheckPredicate, 40,
5d2a1c48
                 OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_AND_I32), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i32, 3, 3, 4, 2, 
               0, 
95937a6a
             16,  MVT::i64,
               OPC_CheckPredicate, 41,
5f42f863
               OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_AND_I64), 0|OPFL_Chain|OPFL_MemRefs,
                   1, MVT::i64, 3, 3, 4, 2, 
             0, 
95937a6a
           79,  TARGET_OPCODE(ISD::ATOMIC_LOAD_OR),
5d2a1c48
             OPC_RecordMemRef,
             OPC_RecordNode,
             OPC_RecordChild1,
             OPC_RecordChild2,
95937a6a
             OPC_SwitchType , 53,  MVT::i32,
               OPC_Scope, 16, 
                 OPC_CheckPredicate, 42,
5d2a1c48
                 OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_OR_I8), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i32, 3, 3, 4, 2, 
95937a6a
               16, 
                 OPC_CheckPredicate, 43,
5d2a1c48
                 OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_OR_I16), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i32, 3, 3, 4, 2, 
95937a6a
               16, 
                 OPC_CheckPredicate, 44,
5d2a1c48
                 OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_OR_I32), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i32, 3, 3, 4, 2, 
               0, 
95937a6a
             16,  MVT::i64,
               OPC_CheckPredicate, 45,
5f42f863
               OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_OR_I64), 0|OPFL_Chain|OPFL_MemRefs,
                   1, MVT::i64, 3, 3, 4, 2, 
             0, 
95937a6a
           79,  TARGET_OPCODE(ISD::ATOMIC_LOAD_XOR),
5d2a1c48
             OPC_RecordMemRef,
             OPC_RecordNode,
             OPC_RecordChild1,
             OPC_RecordChild2,
95937a6a
             OPC_SwitchType , 53,  MVT::i32,
               OPC_Scope, 16, 
                 OPC_CheckPredicate, 46,
5d2a1c48
                 OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_XOR_I8), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i32, 3, 3, 4, 2, 
95937a6a
               16, 
                 OPC_CheckPredicate, 47,
5d2a1c48
                 OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_XOR_I16), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i32, 3, 3, 4, 2, 
95937a6a
               16, 
                 OPC_CheckPredicate, 48,
5d2a1c48
                 OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_XOR_I32), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i32, 3, 3, 4, 2, 
               0, 
95937a6a
             16,  MVT::i64,
               OPC_CheckPredicate, 49,
5f42f863
               OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_XOR_I64), 0|OPFL_Chain|OPFL_MemRefs,
                   1, MVT::i64, 3, 3, 4, 2, 
             0, 
95937a6a
           79,  TARGET_OPCODE(ISD::ATOMIC_LOAD_NAND),
5d2a1c48
             OPC_RecordMemRef,
             OPC_RecordNode,
             OPC_RecordChild1,
             OPC_RecordChild2,
95937a6a
             OPC_SwitchType , 53,  MVT::i32,
               OPC_Scope, 16, 
                 OPC_CheckPredicate, 50,
5d2a1c48
                 OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_NAND_I8), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i32, 3, 3, 4, 2, 
95937a6a
               16, 
                 OPC_CheckPredicate, 51,
5d2a1c48
                 OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_NAND_I16), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i32, 3, 3, 4, 2, 
95937a6a
               16, 
                 OPC_CheckPredicate, 52,
5d2a1c48
                 OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_NAND_I32), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i32, 3, 3, 4, 2, 
               0, 
95937a6a
             16,  MVT::i64,
               OPC_CheckPredicate, 53,
5f42f863
               OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_LOAD_NAND_I64), 0|OPFL_Chain|OPFL_MemRefs,
                   1, MVT::i64, 3, 3, 4, 2, 
             0, 
95937a6a
           84,  TARGET_OPCODE(ISD::ATOMIC_CMP_SWAP),
5d2a1c48
             OPC_RecordMemRef,
             OPC_RecordNode,
             OPC_RecordChild1,
             OPC_RecordChild2,
             OPC_RecordChild3,
95937a6a
             OPC_SwitchType , 56,  MVT::i32,
               OPC_Scope, 17, 
                 OPC_CheckPredicate, 54,
5d2a1c48
                 OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_CMP_SWAP_I8), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i32, 4, 4, 5, 2, 3, 
95937a6a
               17, 
                 OPC_CheckPredicate, 55,
5d2a1c48
                 OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_CMP_SWAP_I16), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i32, 4, 4, 5, 2, 3, 
95937a6a
               17, 
                 OPC_CheckPredicate, 56,
5d2a1c48
                 OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_CMP_SWAP_I32), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i32, 4, 4, 5, 2, 3, 
               0, 
95937a6a
             17,  MVT::i64,
               OPC_CheckPredicate, 57,
5f42f863
               OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_CMP_SWAP_I64), 0|OPFL_Chain|OPFL_MemRefs,
                   1, MVT::i64, 4, 4, 5, 2, 3, 
             0, 
95937a6a
           79,  TARGET_OPCODE(ISD::ATOMIC_SWAP),
5d2a1c48
             OPC_RecordMemRef,
             OPC_RecordNode,
             OPC_RecordChild1,
             OPC_RecordChild2,
95937a6a
             OPC_SwitchType , 53,  MVT::i32,
               OPC_Scope, 16, 
                 OPC_CheckPredicate, 58,
5d2a1c48
                 OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_SWAP_I8), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i32, 3, 3, 4, 2, 
95937a6a
               16, 
                 OPC_CheckPredicate, 59,
5d2a1c48
                 OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_SWAP_I16), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i32, 3, 3, 4, 2, 
95937a6a
               16, 
                 OPC_CheckPredicate, 60,
5d2a1c48
                 OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_SWAP_I32), 0|OPFL_Chain|OPFL_MemRefs,
                     1, MVT::i32, 3, 3, 4, 2, 
               0, 
95937a6a
             16,  MVT::i64,
               OPC_CheckPredicate, 61,
5f42f863
               OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::ATOMIC_SWAP_I64), 0|OPFL_Chain|OPFL_MemRefs,
                   1, MVT::i64, 3, 3, 4, 2, 
             0, 
95937a6a
           48,  TARGET_OPCODE(PPCISD::DYNALLOC),
5f42f863
             OPC_RecordNode,
             OPC_RecordChild1,
95937a6a
             OPC_SwitchType , 20,  MVT::i32,
5f42f863
               OPC_CheckChild1Type, MVT::i32,
               OPC_RecordChild2,
               OPC_CheckChild2Type, MVT::iPTR,
               OPC_CheckComplexPat, /*CP*/1, /*#*/2,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::DYNALLOC), 0|OPFL_Chain,
95937a6a
                   2, MVT::i32, MVT::i32, 3, 1, 3, 4, 
             20,  MVT::i64,
5f42f863
               OPC_CheckChild1Type, MVT::i64,
               OPC_RecordChild2,
               OPC_CheckChild2Type, MVT::iPTR,
               OPC_CheckComplexPat, /*CP*/1, /*#*/2,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::DYNALLOC8), 0|OPFL_Chain,
95937a6a
                   2, MVT::i64, MVT::i64, 3, 1, 3, 4, 
5f42f863
             0, 
95937a6a
           34,  TARGET_OPCODE(PPCISD::LARX),
5f42f863
             OPC_RecordNode,
             OPC_RecordChild1,
95937a6a
             OPC_SwitchType , 13,  MVT::i32,
5f42f863
               OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::LWARX), 0|OPFL_Chain,
                   1, MVT::i32, 2, 2, 3, 
95937a6a
             13,  MVT::i64,
5f42f863
               OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::LDARX), 0|OPFL_Chain,
                   1, MVT::i64, 2, 2, 3, 
             0, 
7820abe4
           40,  TARGET_OPCODE(PPCISD::STCX),
             OPC_RecordNode,
             OPC_RecordChild1,
             OPC_Scope, 17, 
               OPC_CheckChild1Type, MVT::i32,
               OPC_RecordChild2,
               OPC_CheckComplexPat, /*CP*/0, /*#*/2,
               OPC_EmitMergeInputChains1_0,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::STWCX), 0|OPFL_Chain,
                   1, MVT::i32, 3, 1, 3, 4, 
             17, 
               OPC_CheckChild1Type, MVT::i64,
               OPC_RecordChild2,
               OPC_CheckComplexPat, /*CP*/0, /*#*/2,
               OPC_EmitMergeInputChains1_0,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::STDCX), 0|OPFL_Chain,
                   1, MVT::i32, 3, 1, 3, 4, 
             0, 
95937a6a
           40,  TARGET_OPCODE(PPCISD::LBRX),
5f42f863
             OPC_RecordNode,
             OPC_RecordChild1,
             OPC_MoveChild, 2,
95937a6a
             OPC_Scope, 16, 
5f42f863
               OPC_CheckValueType, MVT::i16,
               OPC_MoveParent,
               OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::LHBRX), 0|OPFL_Chain,
                   1, MVT::i32, 2, 2, 3, 
95937a6a
             16, 
5f42f863
               OPC_CheckValueType, MVT::i32,
               OPC_MoveParent,
               OPC_CheckComplexPat, /*CP*/0, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::LWBRX), 0|OPFL_Chain,
                   1, MVT::i32, 2, 2, 3, 
             0, 
7820abe4
           41,  TARGET_OPCODE(PPCISD::STBRX),
             OPC_RecordNode,
             OPC_RecordChild1,
             OPC_RecordChild2,
             OPC_MoveChild, 3,
             OPC_Scope, 16, 
               OPC_CheckValueType, MVT::i16,
               OPC_MoveParent,
               OPC_CheckComplexPat, /*CP*/0, /*#*/2,
               OPC_EmitMergeInputChains1_0,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::STHBRX), 0|OPFL_Chain,
                   0, 3, 1, 3, 4, 
             16, 
               OPC_CheckValueType, MVT::i32,
               OPC_MoveParent,
               OPC_CheckComplexPat, /*CP*/0, /*#*/2,
               OPC_EmitMergeInputChains1_0,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::STWBRX), 0|OPFL_Chain,
                   0, 3, 1, 3, 4, 
             0, 
           16,  TARGET_OPCODE(PPCISD::STFIWX),
             OPC_RecordNode,
             OPC_RecordChild1,
             OPC_RecordChild2,
             OPC_CheckComplexPat, /*CP*/0, /*#*/2,
             OPC_EmitMergeInputChains1_0,
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::STFIWX), 0|OPFL_Chain,
                 0, 3, 1, 3, 4, 
95937a6a
           37,  TARGET_OPCODE(PPCISD::LOAD),
5f42f863
             OPC_RecordNode,
             OPC_CaptureFlagInput,
             OPC_RecordChild1,
             OPC_CheckChild1Type, MVT::iPTR,
             OPC_CheckType, MVT::i64,
95937a6a
             OPC_Scope, 13, 
5f42f863
               OPC_CheckComplexPat, /*CP*/3, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::LD), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput,
                   1, MVT::i64, 2, 2, 3, 
95937a6a
             13, 
5f42f863
               OPC_CheckComplexPat, /*CP*/2, /*#*/1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::LDX), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput,
                   1, MVT::i64, 2, 2, 3, 
             0, 
7820abe4
           35,  TARGET_OPCODE(PPCISD::STD_32),
             OPC_RecordNode,
             OPC_RecordChild1,
             OPC_CheckChild1Type, MVT::i32,
             OPC_RecordChild2,
             OPC_Scope, 13, 
               OPC_CheckComplexPat, /*CP*/3, /*#*/2,
               OPC_EmitMergeInputChains1_0,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::STD_32), 0|OPFL_Chain,
                   0, 3, 1, 3, 4, 
             13, 
               OPC_CheckComplexPat, /*CP*/2, /*#*/2,
               OPC_EmitMergeInputChains1_0,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::STDX_32), 0|OPFL_Chain,
                   0, 3, 1, 3, 4, 
             0, 
95937a6a
           84|128,4,  TARGET_OPCODE(ISD::XOR),
             OPC_Scope, 39|128,1, 
5f42f863
               OPC_MoveChild, 0,
95937a6a
               OPC_SwitchOpcode , 41,  TARGET_OPCODE(ISD::AND),
5f42f863
                 OPC_RecordChild0,
                 OPC_RecordChild1,
                 OPC_MoveParent,
                 OPC_MoveChild, 1,
                 OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1, 
                 OPC_MoveParent,
                 OPC_SwitchType , 9,  MVT::i32,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::NAND), 0,
                       1, MVT::i32, 2, 0, 1, 
                 9,  MVT::i64,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::NAND8), 0,
                       1, MVT::i64, 2, 0, 1, 
                 0, 
95937a6a
               41,  TARGET_OPCODE(ISD::OR),
5f42f863
                 OPC_RecordChild0,
                 OPC_RecordChild1,
                 OPC_MoveParent,
                 OPC_MoveChild, 1,
                 OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1, 
                 OPC_MoveParent,
                 OPC_SwitchType , 9,  MVT::i32,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::NOR), 0,
                       1, MVT::i32, 2, 0, 1, 
                 9,  MVT::i64,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::NOR8), 0,
                       1, MVT::i64, 2, 0, 1, 
                 0, 
95937a6a
               72,  TARGET_OPCODE(ISD::XOR),
5f42f863
                 OPC_RecordChild0,
                 OPC_Scope, 40, 
                   OPC_RecordChild1,
                   OPC_MoveParent,
                   OPC_MoveChild, 1,
                   OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1, 
                   OPC_MoveParent,
                   OPC_SwitchType , 9,  MVT::i32,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::EQV), 0,
                         1, MVT::i32, 2, 0, 1, 
                   9,  MVT::i64,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::EQV8), 0,
                         1, MVT::i64, 2, 0, 1, 
                   0, 
                 27, 
                   OPC_MoveChild, 1,
                   OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1, 
                   OPC_MoveParent,
                   OPC_MoveParent,
                   OPC_RecordChild1,
                   OPC_CheckType, MVT::i32,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::EQV), 0,
                       1, MVT::i32, 2, 0, 1, 
                 0, 
               0, 
95937a6a
             33, 
5f42f863
               OPC_RecordChild0,
               OPC_MoveChild, 1,
95937a6a
               OPC_CheckOpcode, TARGET_OPCODE(ISD::XOR),
5f42f863
               OPC_RecordChild0,
               OPC_MoveChild, 1,
               OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1, 
               OPC_MoveParent,
               OPC_MoveParent,
               OPC_CheckType, MVT::i32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::EQV), 0,
                   1, MVT::i32, 2, 1, 0, 
95937a6a
             33, 
5f42f863
               OPC_MoveChild, 0,
95937a6a
               OPC_CheckOpcode, TARGET_OPCODE(ISD::XOR),
5f42f863
               OPC_RecordChild0,
               OPC_MoveChild, 1,
               OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1, 
               OPC_MoveParent,
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_CheckType, MVT::i64,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::EQV8), 0,
                   1, MVT::i64, 2, 0, 1, 
95937a6a
             84|128,1, 
5f42f863
               OPC_RecordChild0,
95937a6a
               OPC_Scope, 59, 
5f42f863
                 OPC_MoveChild, 1,
95937a6a
                 OPC_Scope, 30, 
                   OPC_CheckOpcode, TARGET_OPCODE(ISD::XOR),
                   OPC_RecordChild0,
                   OPC_MoveChild, 1,
                   OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1, 
5f42f863
                   OPC_MoveParent,
                   OPC_MoveParent,
95937a6a
                   OPC_CheckType, MVT::i64,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::EQV8), 0,
                       1, MVT::i64, 2, 1, 0, 
                 23, 
                   OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1, 
                   OPC_MoveParent,
                   OPC_CheckType, MVT::i32,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::NOR), 0,
                       1, MVT::i32, 2, 0, 0, 
5f42f863
                 0, 
95937a6a
               19|128,1, 
                 OPC_RecordChild1,
                 OPC_Scope, 119, 
                   OPC_MoveChild, 1,
                   OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
                   OPC_Scope, 19, 
                     OPC_CheckPredicate, 62,
                     OPC_MoveParent,
                     OPC_CheckType, MVT::i32,
                     OPC_EmitConvertToTarget, 1,
                     OPC_EmitNodeXForm, 1, 2,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::XORI), 0,
                         1, MVT::i32, 2, 0, 3, 
                   19, 
                     OPC_CheckPredicate, 63,
                     OPC_MoveParent,
                     OPC_CheckType, MVT::i32,
                     OPC_EmitConvertToTarget, 1,
                     OPC_EmitNodeXForm, 0, 2,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::XORIS), 0,
                         1, MVT::i32, 2, 0, 3, 
                   19, 
                     OPC_CheckPredicate, 62,
                     OPC_MoveParent,
                     OPC_CheckType, MVT::i64,
                     OPC_EmitConvertToTarget, 1,
                     OPC_EmitNodeXForm, 1, 2,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::XORI8), 0,
                         1, MVT::i64, 2, 0, 3, 
                   19, 
                     OPC_CheckPredicate, 63,
                     OPC_MoveParent,
                     OPC_CheckType, MVT::i64,
                     OPC_EmitConvertToTarget, 1,
                     OPC_EmitNodeXForm, 0, 2,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::XORIS8), 0,
                         1, MVT::i64, 2, 0, 3, 
                   31, 
                     OPC_MoveParent,
                     OPC_CheckType, MVT::i32,
                     OPC_EmitConvertToTarget, 1,
                     OPC_EmitNodeXForm, 1, 2,
                     OPC_EmitNode, TARGET_OPCODE(PPC::XORI), 0,
                         1, MVT::i32, 2, 0, 3, 
                     OPC_EmitConvertToTarget, 1,
                     OPC_EmitNodeXForm, 0, 5,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::XORIS), 0,
                         1, MVT::i32, 2, 4, 6, 
                   0, 
                 11, 
                   OPC_CheckType, MVT::i32,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::XOR), 0,
                       1, MVT::i32, 2, 0, 1, 
                 11, 
                   OPC_CheckType, MVT::i64,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::XOR8), 0,
                       1, MVT::i64, 2, 0, 1, 
                 0, 
               0, 
             70, 
               OPC_MoveChild, 0,
               OPC_SwitchOpcode , 30,  TARGET_OPCODE(ISD::OR),
5f42f863
                 OPC_RecordChild0,
                 OPC_RecordChild1,
                 OPC_MoveParent,
95937a6a
                 OPC_MoveChild, 1,
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::BIT_CONVERT),
                 OPC_MoveChild, 0,
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::BUILD_VECTOR),
                 OPC_CheckPredicate, 64,
                 OPC_CheckType, MVT::v16i8,
                 OPC_MoveParent,
                 OPC_MoveParent,
5f42f863
                 OPC_CheckType, MVT::v4i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VNOR), 0,
                     1, MVT::v4i32, 2, 0, 1, 
95937a6a
               30,  TARGET_OPCODE(ISD::BIT_CONVERT),
                 OPC_MoveChild, 0,
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::BUILD_VECTOR),
5f42f863
                 OPC_CheckPredicate, 64,
95937a6a
                 OPC_CheckType, MVT::v16i8,
                 OPC_MoveParent,
5f42f863
                 OPC_MoveParent,
                 OPC_MoveChild, 1,
95937a6a
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::OR),
5f42f863
                 OPC_RecordChild0,
                 OPC_RecordChild1,
                 OPC_MoveParent,
                 OPC_CheckType, MVT::v4i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VNOR), 0,
                     1, MVT::v4i32, 2, 0, 1, 
               0, 
95937a6a
             28, 
5f42f863
               OPC_RecordChild0,
95937a6a
               OPC_MoveChild, 1,
               OPC_CheckOpcode, TARGET_OPCODE(ISD::BIT_CONVERT),
5f42f863
               OPC_MoveChild, 0,
95937a6a
               OPC_CheckOpcode, TARGET_OPCODE(ISD::BUILD_VECTOR),
               OPC_CheckPredicate, 64,
               OPC_CheckType, MVT::v16i8,
               OPC_MoveParent,
               OPC_MoveParent,
               OPC_CheckType, MVT::v4i32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VNOR), 0,
                   1, MVT::v4i32, 2, 0, 0, 
             28, 
               OPC_MoveChild, 0,
               OPC_CheckOpcode, TARGET_OPCODE(ISD::BIT_CONVERT),
               OPC_MoveChild, 0,
               OPC_CheckOpcode, TARGET_OPCODE(ISD::BUILD_VECTOR),
               OPC_CheckPredicate, 64,
               OPC_CheckType, MVT::v16i8,
               OPC_MoveParent,
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_CheckType, MVT::v4i32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VNOR), 0,
                   1, MVT::v4i32, 2, 0, 0, 
             13, 
5f42f863
               OPC_RecordChild0,
               OPC_RecordChild1,
95937a6a
               OPC_CheckType, MVT::v4i32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VXOR), 0,
                   1, MVT::v4i32, 2, 0, 1, 
5f42f863
             0, 
95937a6a
           9|128,4,  TARGET_OPCODE(ISD::AND),
             OPC_Scope, 46, 
5f42f863
               OPC_RecordChild0,
               OPC_MoveChild, 1,
95937a6a
               OPC_CheckOpcode, TARGET_OPCODE(ISD::XOR),
5f42f863
               OPC_RecordChild0,
               OPC_MoveChild, 1,
               OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1, 
               OPC_MoveParent,
               OPC_MoveParent,
               OPC_SwitchType , 9,  MVT::i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ANDC), 0,
                     1, MVT::i32, 2, 0, 1, 
               9,  MVT::i64,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ANDC8), 0,
                     1, MVT::i64, 2, 0, 1, 
               0, 
95937a6a
             88, 
5f42f863
               OPC_MoveChild, 0,
95937a6a
               OPC_SwitchOpcode , 41,  TARGET_OPCODE(ISD::XOR),
5f42f863
                 OPC_RecordChild0,
                 OPC_MoveChild, 1,
                 OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1, 
                 OPC_MoveParent,
                 OPC_MoveParent,
                 OPC_RecordChild1,
                 OPC_SwitchType , 9,  MVT::i32,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::ANDC), 0,
                       1, MVT::i32, 2, 1, 0, 
                 9,  MVT::i64,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::ANDC8), 0,
                       1, MVT::i64, 2, 1, 0, 
                 0, 
95937a6a
               37,  TARGET_OPCODE(ISD::ROTL),
5f42f863
                 OPC_RecordChild0,
                 OPC_RecordChild1,
                 OPC_CheckChild1Type, MVT::i32,
                 OPC_MoveParent,
                 OPC_RecordChild1,
                 OPC_MoveChild, 1,
95937a6a
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
                 OPC_CheckPredicate, 65,
5f42f863
                 OPC_MoveParent,
                 OPC_CheckType, MVT::i32,
                 OPC_EmitConvertToTarget, 2,
                 OPC_EmitNodeXForm, 3, 3,
                 OPC_EmitConvertToTarget, 2,
                 OPC_EmitNodeXForm, 4, 5,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::RLWNM), 0,
                     1, MVT::i32, 4, 0, 1, 4, 6, 
               0, 
95937a6a
             63|128,1, 
5f42f863
               OPC_RecordChild0,
95937a6a
               OPC_Scope, 119, 
                 OPC_RecordChild1,
                 OPC_Scope, 91, 
                   OPC_MoveChild, 1,
                   OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
                   OPC_Scope, 20, 
                     OPC_CheckPredicate, 62,
                     OPC_MoveParent,
                     OPC_CheckType, MVT::i32,
                     OPC_EmitConvertToTarget, 1,
                     OPC_EmitNodeXForm, 1, 2,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::ANDIo), 0,
                         2, MVT::i32, MVT::i32, 2, 0, 3, 
                   20, 
                     OPC_CheckPredicate, 63,
                     OPC_MoveParent,
                     OPC_CheckType, MVT::i32,
                     OPC_EmitConvertToTarget, 1,
                     OPC_EmitNodeXForm, 0, 2,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::ANDISo), 0,
                         2, MVT::i32, MVT::i32, 2, 0, 3, 
                   20, 
                     OPC_CheckPredicate, 62,
                     OPC_MoveParent,
                     OPC_CheckType, MVT::i64,
                     OPC_EmitConvertToTarget, 1,
                     OPC_EmitNodeXForm, 1, 2,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::ANDIo8), 0,
                         2, MVT::i64, MVT::i32, 2, 0, 3, 
                   20, 
                     OPC_CheckPredicate, 63,
                     OPC_MoveParent,
                     OPC_CheckType, MVT::i64,
                     OPC_EmitConvertToTarget, 1,
                     OPC_EmitNodeXForm, 0, 2,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::ANDISo8), 0,
                         2, MVT::i64, MVT::i32, 2, 0, 3, 
                   0, 
                 11, 
                   OPC_CheckType, MVT::i32,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::AND), 0,
                       1, MVT::i32, 2, 0, 1, 
                 11, 
                   OPC_CheckType, MVT::i64,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::AND8), 0,
                       1, MVT::i64, 2, 0, 1, 
                 0, 
               67, 
5f42f863
                 OPC_MoveChild, 1,
95937a6a
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::XOR),
                 OPC_Scope, 29, 
                   OPC_RecordChild0,
                   OPC_MoveChild, 1,
                   OPC_CheckOpcode, TARGET_OPCODE(ISD::BIT_CONVERT),
                   OPC_MoveChild, 0,
                   OPC_CheckOpcode, TARGET_OPCODE(ISD::BUILD_VECTOR),
                   OPC_CheckPredicate, 64,
                   OPC_CheckType, MVT::v16i8,
                   OPC_MoveParent,
5f42f863
                   OPC_MoveParent,
                   OPC_MoveParent,
                   OPC_CheckType, MVT::v4i32,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::VANDC), 0,
                       1, MVT::v4i32, 2, 0, 1, 
95937a6a
                 29, 
                   OPC_MoveChild, 0,
                   OPC_CheckOpcode, TARGET_OPCODE(ISD::BIT_CONVERT),
                   OPC_MoveChild, 0,
                   OPC_CheckOpcode, TARGET_OPCODE(ISD::BUILD_VECTOR),
5f42f863
                   OPC_CheckPredicate, 64,
95937a6a
                   OPC_CheckType, MVT::v16i8,
5f42f863
                   OPC_MoveParent,
                   OPC_MoveParent,
95937a6a
                   OPC_RecordChild1,
                   OPC_MoveParent,
5f42f863
                   OPC_CheckType, MVT::v4i32,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::VANDC), 0,
                       1, MVT::v4i32, 2, 0, 1, 
                 0, 
               0, 
95937a6a
             69, 
5f42f863
               OPC_MoveChild, 0,
95937a6a
               OPC_CheckOpcode, TARGET_OPCODE(ISD::XOR),
               OPC_Scope, 30, 
5f42f863
                 OPC_RecordChild0,
                 OPC_MoveChild, 1,
95937a6a
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::BIT_CONVERT),
                 OPC_MoveChild, 0,
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::BUILD_VECTOR),
                 OPC_CheckPredicate, 64,
                 OPC_CheckType, MVT::v16i8,
                 OPC_MoveParent,
5f42f863
                 OPC_MoveParent,
                 OPC_MoveParent,
                 OPC_RecordChild1,
                 OPC_CheckType, MVT::v4i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VANDC), 0,
                     1, MVT::v4i32, 2, 1, 0, 
95937a6a
               30, 
5f42f863
                 OPC_MoveChild, 0,
95937a6a
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::BIT_CONVERT),
                 OPC_MoveChild, 0,
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::BUILD_VECTOR),
                 OPC_CheckPredicate, 64,
                 OPC_CheckType, MVT::v16i8,
                 OPC_MoveParent,
5f42f863
                 OPC_MoveParent,
                 OPC_RecordChild1,
                 OPC_MoveParent,
                 OPC_RecordChild1,
                 OPC_CheckType, MVT::v4i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VANDC), 0,
                     1, MVT::v4i32, 2, 1, 0, 
               0, 
95937a6a
             35, 
5f42f863
               OPC_RecordChild0,
               OPC_MoveChild, 1,
95937a6a
               OPC_CheckOpcode, TARGET_OPCODE(ISD::XOR),
               OPC_MoveChild, 0,
               OPC_CheckOpcode, TARGET_OPCODE(ISD::BIT_CONVERT),
5f42f863
               OPC_MoveChild, 0,
95937a6a
               OPC_CheckOpcode, TARGET_OPCODE(ISD::BUILD_VECTOR),
5f42f863
               OPC_CheckPredicate, 64,
95937a6a
               OPC_CheckType, MVT::v16i8,
               OPC_MoveParent,
5f42f863
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_MoveParent,
               OPC_CheckType, MVT::v4i32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VANDC), 0,
                   1, MVT::v4i32, 2, 0, 1, 
95937a6a
             69, 
5f42f863
               OPC_MoveChild, 0,
95937a6a
               OPC_CheckOpcode, TARGET_OPCODE(ISD::XOR),
               OPC_Scope, 30, 
5f42f863
                 OPC_RecordChild0,
                 OPC_MoveChild, 1,
95937a6a
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::BIT_CONVERT),
                 OPC_MoveChild, 0,
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::BUILD_VECTOR),
5f42f863
                 OPC_CheckPredicate, 64,
95937a6a
                 OPC_CheckType, MVT::v16i8,
                 OPC_MoveParent,
5f42f863
                 OPC_MoveParent,
                 OPC_MoveParent,
                 OPC_RecordChild1,
                 OPC_CheckType, MVT::v4i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VANDC), 0,
                     1, MVT::v4i32, 2, 1, 0, 
95937a6a
               30, 
                 OPC_MoveChild, 0,
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::BIT_CONVERT),
5f42f863
                 OPC_MoveChild, 0,
95937a6a
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::BUILD_VECTOR),
5f42f863
                 OPC_CheckPredicate, 64,
95937a6a
                 OPC_CheckType, MVT::v16i8,
                 OPC_MoveParent,
5f42f863
                 OPC_MoveParent,
                 OPC_RecordChild1,
                 OPC_MoveParent,
                 OPC_RecordChild1,
                 OPC_CheckType, MVT::v4i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VANDC), 0,
                     1, MVT::v4i32, 2, 1, 0, 
               0, 
95937a6a
             13, 
5f42f863
               OPC_RecordChild0,
               OPC_RecordChild1,
95937a6a
               OPC_CheckType, MVT::v4i32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VAND), 0,
                   1, MVT::v4i32, 2, 0, 1, 
5f42f863
             0, 
95937a6a
           2|128,2,  TARGET_OPCODE(ISD::OR),
             OPC_Scope, 46, 
5f42f863
               OPC_RecordChild0,
               OPC_MoveChild, 1,
95937a6a
               OPC_CheckOpcode, TARGET_OPCODE(ISD::XOR),
5f42f863
               OPC_RecordChild0,
               OPC_MoveChild, 1,
               OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1, 
               OPC_MoveParent,
               OPC_MoveParent,
               OPC_SwitchType , 9,  MVT::i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ORC), 0,
                     1, MVT::i32, 2, 0, 1, 
               9,  MVT::i64,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ORC8), 0,
                     1, MVT::i64, 2, 0, 1, 
               0, 
95937a6a
             46, 
5f42f863
               OPC_MoveChild, 0,
95937a6a
               OPC_CheckOpcode, TARGET_OPCODE(ISD::XOR),
5f42f863
               OPC_RecordChild0,
               OPC_MoveChild, 1,
               OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1, 
               OPC_MoveParent,
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_SwitchType , 9,  MVT::i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ORC), 0,
                     1, MVT::i32, 2, 1, 0, 
               9,  MVT::i64,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ORC8), 0,
                     1, MVT::i64, 2, 1, 0, 
               0, 
95937a6a
             32|128,1, 
5f42f863
               OPC_RecordChild0,
               OPC_RecordChild1,
95937a6a
               OPC_Scope, 119, 
5f42f863
                 OPC_MoveChild, 1,
95937a6a
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
5f42f863
                 OPC_Scope, 19, 
95937a6a
                   OPC_CheckPredicate, 62,
5f42f863
                   OPC_MoveParent,
                   OPC_CheckType, MVT::i32,
                   OPC_EmitConvertToTarget, 1,
                   OPC_EmitNodeXForm, 1, 2,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::ORI), 0,
                       1, MVT::i32, 2, 0, 3, 
                 19, 
95937a6a
                   OPC_CheckPredicate, 63,
5f42f863
                   OPC_MoveParent,
                   OPC_CheckType, MVT::i32,
                   OPC_EmitConvertToTarget, 1,
                   OPC_EmitNodeXForm, 0, 2,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::ORIS), 0,
                       1, MVT::i32, 2, 0, 3, 
                 19, 
95937a6a
                   OPC_CheckPredicate, 62,
5f42f863
                   OPC_MoveParent,
                   OPC_CheckType, MVT::i64,
                   OPC_EmitConvertToTarget, 1,
                   OPC_EmitNodeXForm, 1, 2,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::ORI8), 0,
                       1, MVT::i64, 2, 0, 3, 
                 19, 
95937a6a
                   OPC_CheckPredicate, 63,
5f42f863
                   OPC_MoveParent,
                   OPC_CheckType, MVT::i64,
                   OPC_EmitConvertToTarget, 1,
                   OPC_EmitNodeXForm, 0, 2,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::ORIS8), 0,
                       1, MVT::i64, 2, 0, 3, 
                 31, 
                   OPC_MoveParent,
                   OPC_CheckType, MVT::i32,
                   OPC_EmitConvertToTarget, 1,
                   OPC_EmitNodeXForm, 1, 2,
                   OPC_EmitNode, TARGET_OPCODE(PPC::ORI), 0,
                       1, MVT::i32, 2, 0, 3, 
                   OPC_EmitConvertToTarget, 1,
                   OPC_EmitNodeXForm, 0, 5,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::ORIS), 0,
                       1, MVT::i32, 2, 4, 6, 
                 0, 
               11, 
                 OPC_CheckType, MVT::i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::OR), 0,
                     1, MVT::i32, 2, 0, 1, 
               11, 
                 OPC_CheckType, MVT::i64,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::OR8), 0,
                     1, MVT::i64, 2, 0, 1, 
95937a6a
               11, 
                 OPC_CheckType, MVT::v4i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VOR), 0,
                     1, MVT::v4i32, 2, 0, 1, 
5f42f863
               0, 
             0, 
95937a6a
           1|128,1,  TARGET_OPCODE(PPCISD::Hi),
5f42f863
             OPC_RecordChild0,
             OPC_MoveChild, 0,
95937a6a
             OPC_SwitchOpcode , 28,  TARGET_OPCODE(ISD::TargetGlobalAddress),
5f42f863
               OPC_MoveParent,
               OPC_MoveChild, 1,
               OPC_CheckInteger, 0, 
               OPC_MoveParent,
               OPC_SwitchType , 8,  MVT::i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LIS), 0,
                     1, MVT::i32, 1, 0, 
               8,  MVT::i64,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LIS8), 0,
                     1, MVT::i64, 1, 0, 
               0, 
95937a6a
             28,  TARGET_OPCODE(ISD::TargetConstantPool),
5f42f863
               OPC_MoveParent,
               OPC_MoveChild, 1,
               OPC_CheckInteger, 0, 
               OPC_MoveParent,
               OPC_SwitchType , 8,  MVT::i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LIS), 0,
                     1, MVT::i32, 1, 0, 
               8,  MVT::i64,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LIS8), 0,
                     1, MVT::i64, 1, 0, 
               0, 
95937a6a
             28,  TARGET_OPCODE(ISD::TargetJumpTable),
5f42f863
               OPC_MoveParent,
               OPC_MoveChild, 1,
               OPC_CheckInteger, 0, 
               OPC_MoveParent,
               OPC_SwitchType , 8,  MVT::i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LIS), 0,
                     1, MVT::i32, 1, 0, 
               8,  MVT::i64,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LIS8), 0,
                     1, MVT::i64, 1, 0, 
               0, 
95937a6a
             28,  TARGET_OPCODE(ISD::TargetBlockAddress),
5f42f863
               OPC_MoveParent,
               OPC_MoveChild, 1,
               OPC_CheckInteger, 0, 
               OPC_MoveParent,
               OPC_SwitchType , 8,  MVT::i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LIS), 0,
                     1, MVT::i32, 1, 0, 
               8,  MVT::i64,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LIS8), 0,
                     1, MVT::i64, 1, 0, 
               0, 
             0, 
95937a6a
           1|128,1,  TARGET_OPCODE(PPCISD::Lo),
5f42f863
             OPC_RecordChild0,
             OPC_MoveChild, 0,
95937a6a
             OPC_SwitchOpcode , 28,  TARGET_OPCODE(ISD::TargetGlobalAddress),
5f42f863
               OPC_MoveParent,
               OPC_MoveChild, 1,
               OPC_CheckInteger, 0, 
               OPC_MoveParent,
               OPC_SwitchType , 8,  MVT::i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LI), 0,
                     1, MVT::i32, 1, 0, 
               8,  MVT::i64,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LI8), 0,
                     1, MVT::i64, 1, 0, 
               0, 
95937a6a
             28,  TARGET_OPCODE(ISD::TargetConstantPool),
5f42f863
               OPC_MoveParent,
               OPC_MoveChild, 1,
               OPC_CheckInteger, 0, 
               OPC_MoveParent,
               OPC_SwitchType , 8,  MVT::i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LI), 0,
                     1, MVT::i32, 1, 0, 
               8,  MVT::i64,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LI8), 0,
                     1, MVT::i64, 1, 0, 
               0, 
95937a6a
             28,  TARGET_OPCODE(ISD::TargetJumpTable),
5f42f863
               OPC_MoveParent,
               OPC_MoveChild, 1,
               OPC_CheckInteger, 0, 
               OPC_MoveParent,
               OPC_SwitchType , 8,  MVT::i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LI), 0,
                     1, MVT::i32, 1, 0, 
               8,  MVT::i64,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LI8), 0,
                     1, MVT::i64, 1, 0, 
               0, 
95937a6a
             28,  TARGET_OPCODE(ISD::TargetBlockAddress),
5f42f863
               OPC_MoveParent,
               OPC_MoveChild, 1,
               OPC_CheckInteger, 0, 
               OPC_MoveParent,
               OPC_SwitchType , 8,  MVT::i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LI), 0,
                     1, MVT::i32, 1, 0, 
               8,  MVT::i64,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LI8), 0,
                     1, MVT::i64, 1, 0, 
               0, 
             0, 
95937a6a
           118,  TARGET_OPCODE(ISD::SUB),
             OPC_Scope, 28, 
               OPC_MoveChild, 0,
               OPC_CheckInteger, 0, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_SwitchType , 8,  MVT::i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::NEG), 0,
                     1, MVT::i32, 1, 0, 
               8,  MVT::i64,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::NEG8), 0,
                     1, MVT::i64, 1, 0, 
               0, 
             86, 
               OPC_RecordChild0,
               OPC_Scope, 23, 
                 OPC_MoveChild, 0,
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
                 OPC_CheckPredicate, 0,
                 OPC_MoveParent,
                 OPC_RecordChild1,
                 OPC_CheckType, MVT::i32,
                 OPC_EmitConvertToTarget, 0,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::SUBFIC), 0,
                     2, MVT::i32, MVT::i32, 2, 1, 2, 
               58, 
                 OPC_RecordChild1,
                 OPC_SwitchType , 9,  MVT::i32,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::SUBF), 0,
                       1, MVT::i32, 2, 1, 0, 
                 9,  MVT::i64,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::SUBF8), 0,
                       1, MVT::i64, 2, 1, 0, 
                 9,  MVT::v16i8,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUBUBM), 0,
                       1, MVT::v16i8, 2, 0, 1, 
                 9,  MVT::v8i16,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUBUHM), 0,
                       1, MVT::v8i16, 2, 0, 1, 
                 9,  MVT::v4i32,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUBUWM), 0,
                       1, MVT::v4i32, 2, 0, 1, 
                 0, 
               0, 
             0, 
           102,  TARGET_OPCODE(ISD::ADDE),
5f42f863
             OPC_CaptureFlagInput,
95937a6a
             OPC_RecordChild0,
             OPC_Scope, 69, 
5f42f863
               OPC_MoveChild, 1,
95937a6a
               OPC_Scope, 36, 
                 OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1, 
                 OPC_MoveParent,
                 OPC_SwitchType , 9,  MVT::i32,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDME), 0|OPFL_FlagInput|OPFL_FlagOutput,
                       2, MVT::i32, MVT::i32, 1, 0, 
                 9,  MVT::i64,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDME8), 0|OPFL_FlagInput|OPFL_FlagOutput,
                       2, MVT::i64, MVT::i32, 1, 0, 
5f42f863
                 0, 
95937a6a
               27, 
                 OPC_CheckInteger, 0, 
                 OPC_MoveParent,
                 OPC_SwitchType , 9,  MVT::i32,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDZE), 0|OPFL_FlagInput|OPFL_FlagOutput,
                       2, MVT::i32, MVT::i32, 1, 0, 
                 9,  MVT::i64,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDZE8), 0|OPFL_FlagInput|OPFL_FlagOutput,
                       2, MVT::i64, MVT::i32, 1, 0, 
5f42f863
                 0, 
95937a6a
               0, 
             27, 
               OPC_RecordChild1,
               OPC_SwitchType , 10,  MVT::i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDE), 0|OPFL_FlagInput|OPFL_FlagOutput,
                     2, MVT::i32, MVT::i32, 2, 0, 1, 
               10,  MVT::i64,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDE8), 0|OPFL_FlagInput|OPFL_FlagOutput,
                     2, MVT::i64, MVT::i32, 2, 0, 1, 
               0, 
             0, 
           104,  TARGET_OPCODE(ISD::SUBE),
             OPC_CaptureFlagInput,
             OPC_Scope, 71, 
               OPC_MoveChild, 0,
               OPC_Scope, 37, 
                 OPC_CheckInteger, 127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,127|128,1, 
                 OPC_MoveParent,
                 OPC_RecordChild1,
                 OPC_SwitchType , 9,  MVT::i32,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::SUBFME), 0|OPFL_FlagInput|OPFL_FlagOutput,
                       2, MVT::i32, MVT::i32, 1, 0, 
                 9,  MVT::i64,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::SUBFME8), 0|OPFL_FlagInput|OPFL_FlagOutput,
                       2, MVT::i64, MVT::i32, 1, 0, 
                 0, 
               28, 
                 OPC_CheckInteger, 0, 
                 OPC_MoveParent,
                 OPC_RecordChild1,
                 OPC_SwitchType , 9,  MVT::i32,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::SUBFZE), 0|OPFL_FlagInput|OPFL_FlagOutput,
                       2, MVT::i32, MVT::i32, 1, 0, 
                 9,  MVT::i64,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::SUBFZE8), 0|OPFL_FlagInput|OPFL_FlagOutput,
                       2, MVT::i64, MVT::i32, 1, 0, 
5f42f863
                 0, 
               0, 
95937a6a
             28, 
               OPC_RecordChild0,
               OPC_RecordChild1,
               OPC_SwitchType , 10,  MVT::i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::SUBFE), 0|OPFL_FlagInput|OPFL_FlagOutput,
                     2, MVT::i32, MVT::i32, 2, 1, 0, 
               10,  MVT::i64,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::SUBFE8), 0|OPFL_FlagInput|OPFL_FlagOutput,
                     2, MVT::i64, MVT::i32, 2, 1, 0, 
               0, 
             0, 
           69,  TARGET_OPCODE(ISD::ADDC),
             OPC_RecordChild0,
             OPC_RecordChild1,
             OPC_Scope, 38, 
               OPC_MoveChild, 1,
               OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
               OPC_CheckPredicate, 0,
               OPC_MoveParent,
               OPC_SwitchType , 12,  MVT::i32,
                 OPC_EmitConvertToTarget, 1,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIC), 0|OPFL_FlagOutput,
                     2, MVT::i32, MVT::i32, 2, 0, 2, 
               12,  MVT::i64,
                 OPC_EmitConvertToTarget, 1,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDIC8), 0|OPFL_FlagOutput,
                     2, MVT::i64, MVT::i32, 2, 0, 2, 
               0, 
             12, 
               OPC_CheckType, MVT::i32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDC), 0|OPFL_FlagOutput,
                   2, MVT::i32, MVT::i32, 2, 0, 1, 
             12, 
               OPC_CheckType, MVT::i64,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADDC8), 0|OPFL_FlagOutput,
                   2, MVT::i64, MVT::i32, 2, 0, 1, 
             0, 
           50,  TARGET_OPCODE(ISD::MUL),
             OPC_RecordChild0,
             OPC_RecordChild1,
             OPC_Scope, 21, 
               OPC_MoveChild, 1,
               OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
               OPC_CheckPredicate, 0,
               OPC_MoveParent,
               OPC_CheckType, MVT::i32,
               OPC_EmitConvertToTarget, 1,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::MULLI), 0,
                   1, MVT::i32, 2, 0, 2, 
             11, 
               OPC_CheckType, MVT::i32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::MULLW), 0,
                   1, MVT::i32, 2, 0, 1, 
             11, 
               OPC_CheckType, MVT::i64,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::MULLD), 0,
                   1, MVT::i64, 2, 0, 1, 
             0, 
           71,  TARGET_OPCODE(ISD::SUBC),
             OPC_RecordChild0,
             OPC_Scope, 39, 
               OPC_MoveChild, 0,
               OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
               OPC_CheckPredicate, 0,
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_SwitchType , 12,  MVT::i32,
                 OPC_EmitConvertToTarget, 0,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::SUBFIC), 0|OPFL_FlagOutput,
                     2, MVT::i32, MVT::i32, 2, 1, 2, 
               12,  MVT::i64,
                 OPC_EmitConvertToTarget, 0,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::SUBFIC8), 0|OPFL_FlagOutput,
                     2, MVT::i64, MVT::i32, 2, 1, 2, 
               0, 
             27, 
               OPC_RecordChild1,
               OPC_SwitchType , 10,  MVT::i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::SUBFC), 0|OPFL_FlagOutput,
                     2, MVT::i32, MVT::i32, 2, 1, 0, 
               10,  MVT::i64,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::SUBFC8), 0|OPFL_FlagOutput,
                     2, MVT::i64, MVT::i32, 2, 1, 0, 
               0, 
             0, 
           114,  TARGET_OPCODE(ISD::SRA),
             OPC_RecordChild0,
             OPC_RecordChild1,
             OPC_Scope, 38, 
               OPC_MoveChild, 1,
               OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
               OPC_CheckType, MVT::i32,
               OPC_MoveParent,
               OPC_SwitchType , 12,  MVT::i32,
                 OPC_EmitConvertToTarget, 1,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::SRAWI), 0,
                     2, MVT::i32, MVT::i32, 2, 0, 2, 
               12,  MVT::i64,
                 OPC_EmitConvertToTarget, 1,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::SRADI), 0,
                     2, MVT::i64, MVT::i32, 2, 0, 2, 
               0, 
             28, 
5f42f863
               OPC_CheckChild1Type, MVT::i32,
95937a6a
               OPC_SwitchType , 10,  MVT::i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::SRAW), 0,
                     2, MVT::i32, MVT::i32, 2, 0, 1, 
               10,  MVT::i64,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::SRAD), 0,
                     2, MVT::i64, MVT::i32, 2, 0, 1, 
               0, 
             13, 
               OPC_CheckChild1Type, MVT::v16i8,
               OPC_CheckType, MVT::v16i8,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSRAB), 0,
                   1, MVT::v16i8, 2, 0, 1, 
             13, 
               OPC_CheckChild1Type, MVT::v8i16,
               OPC_CheckType, MVT::v8i16,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSRAH), 0,
                   1, MVT::v8i16, 2, 0, 1, 
             13, 
               OPC_CheckChild1Type, MVT::v4i32,
               OPC_CheckType, MVT::v4i32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSRAW), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             0, 
           126,  TARGET_OPCODE(ISD::SHL),
             OPC_RecordChild0,
             OPC_RecordChild1,
             OPC_Scope, 52, 
               OPC_MoveChild, 1,
               OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
               OPC_CheckType, MVT::i32,
5f42f863
               OPC_MoveParent,
95937a6a
               OPC_SwitchType , 21,  MVT::i32,
                 OPC_EmitConvertToTarget, 1,
                 OPC_EmitInteger, MVT::i32, 0, 
                 OPC_EmitConvertToTarget, 1,
                 OPC_EmitNodeXForm, 5, 4,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::RLWINM), 0,
                     1, MVT::i32, 4, 0, 2, 3, 5, 
               17,  MVT::i64,
                 OPC_EmitConvertToTarget, 1,
                 OPC_EmitConvertToTarget, 1,
                 OPC_EmitNodeXForm, 6, 3,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::RLDICR), 0,
                     1, MVT::i64, 3, 0, 2, 4, 
               0, 
             26, 
               OPC_CheckChild1Type, MVT::i32,
               OPC_SwitchType , 9,  MVT::i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::SLW), 0,
                     1, MVT::i32, 2, 0, 1, 
               9,  MVT::i64,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::SLD), 0,
                     1, MVT::i64, 2, 0, 1, 
               0, 
             13, 
               OPC_CheckChild1Type, MVT::v16i8,
               OPC_CheckType, MVT::v16i8,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSLB), 0,
                   1, MVT::v16i8, 2, 0, 1, 
             13, 
               OPC_CheckChild1Type, MVT::v8i16,
               OPC_CheckType, MVT::v8i16,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSLH), 0,
                   1, MVT::v8i16, 2, 0, 1, 
             13, 
               OPC_CheckChild1Type, MVT::v4i32,
               OPC_CheckType, MVT::v4i32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSLW), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             0, 
           126,  TARGET_OPCODE(ISD::SRL),
             OPC_RecordChild0,
             OPC_RecordChild1,
             OPC_Scope, 52, 
               OPC_MoveChild, 1,
               OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
               OPC_CheckType, MVT::i32,
5f42f863
               OPC_MoveParent,
95937a6a
               OPC_SwitchType , 21,  MVT::i32,
                 OPC_EmitConvertToTarget, 1,
                 OPC_EmitNodeXForm, 7, 2,
                 OPC_EmitConvertToTarget, 1,
                 OPC_EmitInteger, MVT::i32, 31, 
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::RLWINM), 0,
                     1, MVT::i32, 4, 0, 3, 4, 5, 
               17,  MVT::i64,
                 OPC_EmitConvertToTarget, 1,
                 OPC_EmitNodeXForm, 8, 2,
                 OPC_EmitConvertToTarget, 1,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::RLDICL), 0,
                     1, MVT::i64, 3, 0, 3, 4, 
               0, 
             26, 
               OPC_CheckChild1Type, MVT::i32,
               OPC_SwitchType , 9,  MVT::i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::SRW), 0,
                     1, MVT::i32, 2, 0, 1, 
               9,  MVT::i64,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::SRD), 0,
                     1, MVT::i64, 2, 0, 1, 
               0, 
             13, 
               OPC_CheckChild1Type, MVT::v16i8,
               OPC_CheckType, MVT::v16i8,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSRB), 0,
                   1, MVT::v16i8, 2, 0, 1, 
             13, 
               OPC_CheckChild1Type, MVT::v8i16,
               OPC_CheckType, MVT::v8i16,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSRH), 0,
                   1, MVT::v8i16, 2, 0, 1, 
             13, 
               OPC_CheckChild1Type, MVT::v4i32,
               OPC_CheckType, MVT::v4i32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSRW), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             0, 
           92,  TARGET_OPCODE(ISD::ROTL),
             OPC_RecordChild0,
             OPC_RecordChild1,
             OPC_Scope, 48, 
               OPC_MoveChild, 1,
               OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
               OPC_CheckType, MVT::i32,
               OPC_MoveParent,
               OPC_SwitchType , 19,  MVT::i32,
                 OPC_EmitConvertToTarget, 1,
                 OPC_EmitInteger, MVT::i32, 0, 
                 OPC_EmitInteger, MVT::i32, 31, 
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::RLWINM), 0,
                     1, MVT::i32, 4, 0, 2, 3, 4, 
               15,  MVT::i64,
                 OPC_EmitConvertToTarget, 1,
                 OPC_EmitInteger, MVT::i32, 0, 
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::RLDICL), 0,
                     1, MVT::i64, 3, 0, 2, 3, 
               0, 
             38, 
               OPC_CheckChild1Type, MVT::i32,
               OPC_SwitchType , 17,  MVT::i32,
                 OPC_EmitInteger, MVT::i32, 0, 
                 OPC_EmitInteger, MVT::i32, 31, 
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::RLWNM), 0,
                     1, MVT::i32, 4, 0, 1, 2, 3, 
               13,  MVT::i64,
                 OPC_EmitInteger, MVT::i32, 0, 
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::RLDCL), 0,
                     1, MVT::i64, 3, 0, 1, 2, 
               0, 
             0, 
           19,  TARGET_OPCODE(PPCISD::TOC_ENTRY),
             OPC_RecordChild0,
             OPC_MoveChild, 0,
             OPC_CheckOpcode, TARGET_OPCODE(ISD::TargetGlobalAddress),
             OPC_MoveParent,
             OPC_RecordChild1,
             OPC_CheckType, MVT::i64,
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::LDtoc), 0,
                 1, MVT::i64, 2, 0, 1, 
           97,  TARGET_OPCODE(ISD::Constant),
             OPC_RecordNode,
             OPC_SwitchType , 59,  MVT::i32,
               OPC_Scope, 12, 
                 OPC_CheckPredicate, 0,
                 OPC_EmitConvertToTarget, 0,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LI), 0,
                     1, MVT::i32, 1, 1, 
               15, 
                 OPC_CheckPredicate, 1,
                 OPC_EmitConvertToTarget, 0,
                 OPC_EmitNodeXForm, 0, 1,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LIS), 0,
                     1, MVT::i32, 1, 2, 
               27, 
                 OPC_EmitConvertToTarget, 0,
                 OPC_EmitNodeXForm, 0, 1,
                 OPC_EmitNode, TARGET_OPCODE(PPC::LIS), 0,
                     1, MVT::i32, 1, 2, 
                 OPC_EmitConvertToTarget, 0,
                 OPC_EmitNodeXForm, 1, 4,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::ORI), 0,
                     1, MVT::i32, 2, 3, 5, 
               0, 
             31,  MVT::i64,
               OPC_Scope, 12, 
                 OPC_CheckPredicate, 0,
                 OPC_EmitConvertToTarget, 0,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LI8), 0,
                     1, MVT::i64, 1, 1, 
               15, 
                 OPC_CheckPredicate, 1,
                 OPC_EmitConvertToTarget, 0,
                 OPC_EmitNodeXForm, 0, 1,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::LIS8), 0,
                     1, MVT::i64, 1, 2, 
               0, 
5f42f863
             0, 
95937a6a
           28,  TARGET_OPCODE(PPCISD::SHL),
             OPC_RecordChild0,
             OPC_RecordChild1,
             OPC_CheckChild1Type, MVT::i32,
             OPC_SwitchType , 9,  MVT::i32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::SLW), 0,
                   1, MVT::i32, 2, 0, 1, 
             9,  MVT::i64,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::SLD), 0,
                   1, MVT::i64, 2, 0, 1, 
             0, 
           28,  TARGET_OPCODE(PPCISD::SRL),
             OPC_RecordChild0,
             OPC_RecordChild1,
             OPC_CheckChild1Type, MVT::i32,
             OPC_SwitchType , 9,  MVT::i32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::SRW), 0,
                   1, MVT::i32, 2, 0, 1, 
             9,  MVT::i64,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::SRD), 0,
                   1, MVT::i64, 2, 0, 1, 
             0, 
           30,  TARGET_OPCODE(PPCISD::SRA),
             OPC_RecordChild0,
             OPC_RecordChild1,
             OPC_CheckChild1Type, MVT::i32,
             OPC_SwitchType , 10,  MVT::i32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::SRAW), 0,
                   2, MVT::i32, MVT::i32, 2, 0, 1, 
             10,  MVT::i64,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::SRAD), 0,
                   2, MVT::i64, MVT::i32, 2, 0, 1, 
             0, 
           23,  TARGET_OPCODE(ISD::CTLZ),
             OPC_RecordChild0,
             OPC_SwitchType , 8,  MVT::i32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::CNTLZW), 0,
                   1, MVT::i32, 1, 0, 
             8,  MVT::i64,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::CNTLZD), 0,
                   1, MVT::i64, 1, 0, 
             0, 
           69,  TARGET_OPCODE(ISD::SIGN_EXTEND_INREG),
             OPC_RecordChild0,
             OPC_MoveChild, 1,
             OPC_Scope, 25, 
               OPC_CheckValueType, MVT::i8,
               OPC_MoveParent,
               OPC_SwitchType , 8,  MVT::i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::EXTSB), 0,
                     1, MVT::i32, 1, 0, 
               8,  MVT::i64,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::EXTSB8), 0,
                     1, MVT::i64, 1, 0, 
               0, 
             25, 
               OPC_CheckValueType, MVT::i16,
               OPC_MoveParent,
               OPC_SwitchType , 8,  MVT::i32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::EXTSH), 0,
                     1, MVT::i32, 1, 0, 
               8,  MVT::i64,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::EXTSH8), 0,
                     1, MVT::i64, 1, 0, 
               0, 
             11, 
               OPC_CheckValueType, MVT::i32,
               OPC_MoveParent,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::EXTSW), 0,
                   1, MVT::i64, 1, 0, 
             0, 
           26,  TARGET_OPCODE(ISD::SDIV),
             OPC_RecordChild0,
             OPC_RecordChild1,
             OPC_SwitchType , 9,  MVT::i32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::DIVW), 0,
                   1, MVT::i32, 2, 0, 1, 
             9,  MVT::i64,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::DIVD), 0,
                   1, MVT::i64, 2, 0, 1, 
             0, 
           26,  TARGET_OPCODE(ISD::UDIV),
             OPC_RecordChild0,
             OPC_RecordChild1,
             OPC_SwitchType , 9,  MVT::i32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::DIVWU), 0,
                   1, MVT::i32, 2, 0, 1, 
             9,  MVT::i64,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::DIVDU), 0,
                   1, MVT::i64, 2, 0, 1, 
             0, 
           26,  TARGET_OPCODE(ISD::MULHS),
             OPC_RecordChild0,
             OPC_RecordChild1,
             OPC_SwitchType , 9,  MVT::i32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::MULHW), 0,
                   1, MVT::i32, 2, 0, 1, 
             9,  MVT::i64,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::MULHD), 0,
                   1, MVT::i64, 2, 0, 1, 
             0, 
           26,  TARGET_OPCODE(ISD::MULHU),
             OPC_RecordChild0,
             OPC_RecordChild1,
             OPC_SwitchType , 9,  MVT::i32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::MULHWU), 0,
                   1, MVT::i32, 2, 0, 1, 
             9,  MVT::i64,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::MULHDU), 0,
                   1, MVT::i64, 2, 0, 1, 
             0, 
           11,  TARGET_OPCODE(PPCISD::EXTSW_32),
             OPC_RecordChild0,
             OPC_CheckType, MVT::i32,
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::EXTSW_32), 0,
                 1, MVT::i32, 1, 0, 
           13,  TARGET_OPCODE(ISD::SIGN_EXTEND),
             OPC_RecordChild0,
             OPC_CheckChild0Type, MVT::i32,
             OPC_CheckType, MVT::i64,
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::EXTSW_32_64), 0,
                 1, MVT::i64, 1, 0, 
           14,  TARGET_OPCODE(ISD::ANY_EXTEND),
             OPC_RecordChild0,
             OPC_CheckChild0Type, MVT::i32,
             OPC_CheckType, MVT::i64,
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::OR4To8), 0,
                 1, MVT::i64, 2, 0, 0, 
           12,  TARGET_OPCODE(ISD::TRUNCATE),
             OPC_RecordChild0,
             OPC_CheckType, MVT::i32,
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::OR8To4), 0,
                 1, MVT::i32, 2, 0, 0, 
           30,  TARGET_OPCODE(ISD::ZERO_EXTEND),
             OPC_RecordChild0,
             OPC_CheckChild0Type, MVT::i32,
             OPC_CheckType, MVT::i64,
             OPC_EmitNode, TARGET_OPCODE(PPC::OR4To8), 0,
                 1, MVT::i64, 2, 0, 0, 
             OPC_EmitInteger, MVT::i32, 0, 
             OPC_EmitInteger, MVT::i32, 32, 
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::RLDICL), 0,
                 1, MVT::i64, 3, 1, 2, 3, 
           61|128,1,  TARGET_OPCODE(ISD::FNEG),
             OPC_Scope, 33|128,1, 
5f42f863
               OPC_MoveChild, 0,
95937a6a
               OPC_SwitchOpcode , 84,  TARGET_OPCODE(ISD::FADD),
                 OPC_Scope, 40, 
5f42f863
                   OPC_MoveChild, 0,
95937a6a
                   OPC_CheckOpcode, TARGET_OPCODE(ISD::FMUL),
5f42f863
                   OPC_RecordChild0,
                   OPC_RecordChild1,
                   OPC_MoveParent,
                   OPC_RecordChild1,
                   OPC_MoveParent,
                   OPC_SwitchType , 12,  MVT::f64,
                     OPC_CheckPatternPredicate, 0,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::FNMADD), 0,
                         1, MVT::f64, 3, 0, 1, 2, 
                   12,  MVT::f32,
                     OPC_CheckPatternPredicate, 0,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::FNMADDS), 0,
                         1, MVT::f32, 3, 0, 1, 2, 
                   0, 
95937a6a
                 40, 
5f42f863
                   OPC_RecordChild0,
                   OPC_MoveChild, 1,
95937a6a
                   OPC_CheckOpcode, TARGET_OPCODE(ISD::FMUL),
5f42f863
                   OPC_RecordChild0,
                   OPC_RecordChild1,
                   OPC_MoveParent,
                   OPC_MoveParent,
                   OPC_SwitchType , 12,  MVT::f64,
                     OPC_CheckPatternPredicate, 0,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::FNMADD), 0,
                         1, MVT::f64, 3, 1, 2, 0, 
                   12,  MVT::f32,
                     OPC_CheckPatternPredicate, 0,
                     OPC_MorphNodeTo, TARGET_OPCODE(PPC::FNMADDS), 0,
                         1, MVT::f32, 3, 1, 2, 0, 
                   0, 
                 0, 
95937a6a
               40,  TARGET_OPCODE(ISD::FSUB),
5f42f863
                 OPC_MoveChild, 0,
95937a6a
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::FMUL),
5f42f863
                 OPC_RecordChild0,
                 OPC_RecordChild1,
                 OPC_MoveParent,
                 OPC_RecordChild1,
                 OPC_MoveParent,
                 OPC_SwitchType , 12,  MVT::f64,
                   OPC_CheckPatternPredicate, 0,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::FNMSUB), 0,
                       1, MVT::f64, 3, 0, 1, 2, 
                 12,  MVT::f32,
                   OPC_CheckPatternPredicate, 0,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::FNMSUBS), 0,
                       1, MVT::f32, 3, 0, 1, 2, 
                 0, 
95937a6a
               24,  TARGET_OPCODE(ISD::FABS),
5f42f863
                 OPC_RecordChild0,
                 OPC_MoveParent,
                 OPC_SwitchType , 8,  MVT::f32,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::FNABSS), 0,
                       1, MVT::f32, 1, 0, 
                 8,  MVT::f64,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::FNABSD), 0,
                       1, MVT::f64, 1, 0, 
                 0, 
               0, 
             23, 
               OPC_RecordChild0,
               OPC_SwitchType , 8,  MVT::f32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::FNEGS), 0,
                     1, MVT::f32, 1, 0, 
               8,  MVT::f64,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::FNEGD), 0,
                     1, MVT::f64, 1, 0, 
               0, 
             0, 
95937a6a
           24,  TARGET_OPCODE(PPCISD::MTFSF),
             OPC_CaptureFlagInput,
             OPC_RecordChild0,
             OPC_MoveChild, 0,
             OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
             OPC_CheckType, MVT::i32,
             OPC_MoveParent,
             OPC_RecordChild1,
             OPC_RecordChild2,
             OPC_EmitConvertToTarget, 0,
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::MTFSF), 0|OPFL_FlagInput,
                 1, MVT::f64, 3, 3, 1, 2, 
           47|128,1,  TARGET_OPCODE(ISD::FADD),
             OPC_Scope, 39, 
5f42f863
               OPC_MoveChild, 0,
95937a6a
               OPC_CheckOpcode, TARGET_OPCODE(ISD::FMUL),
               OPC_RecordChild0,
               OPC_RecordChild1,
5f42f863
               OPC_MoveParent,
               OPC_RecordChild1,
95937a6a
               OPC_SwitchType , 12,  MVT::f64,
                 OPC_CheckPatternPredicate, 0,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::FMADD), 0,
                     1, MVT::f64, 3, 0, 1, 2, 
               12,  MVT::f32,
                 OPC_CheckPatternPredicate, 0,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::FMADDS), 0,
                     1, MVT::f32, 3, 0, 1, 2, 
5f42f863
               0, 
95937a6a
             68, 
5f42f863
               OPC_RecordChild0,
95937a6a
               OPC_Scope, 38, 
                 OPC_MoveChild, 1,
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::FMUL),
                 OPC_RecordChild0,
5f42f863
                 OPC_RecordChild1,
                 OPC_MoveParent,
95937a6a
                 OPC_SwitchType , 12,  MVT::f64,
                   OPC_CheckPatternPredicate, 0,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::FMADD), 0,
                       1, MVT::f64, 3, 1, 2, 0, 
                 12,  MVT::f32,
                   OPC_CheckPatternPredicate, 0,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::FMADDS), 0,
                       1, MVT::f32, 3, 1, 2, 0, 
5f42f863
                 0, 
               25, 
95937a6a
                 OPC_RecordChild1,
                 OPC_SwitchType , 9,  MVT::f64,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::FADD), 0,
                       1, MVT::f64, 2, 0, 1, 
                 9,  MVT::f32,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::FADDS), 0,
                       1, MVT::f32, 2, 0, 1, 
5f42f863
                 0, 
               0, 
95937a6a
             23, 
               OPC_MoveChild, 0,
               OPC_CheckOpcode, TARGET_OPCODE(ISD::FMUL),
               OPC_RecordChild0,
5f42f863
               OPC_RecordChild1,
95937a6a
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_CheckType, MVT::v4f32,
               OPC_CheckPatternPredicate, 0,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMADDFP), 0,
                   1, MVT::v4f32, 3, 0, 1, 2, 
             39, 
               OPC_RecordChild0,
               OPC_Scope, 22, 
                 OPC_MoveChild, 1,
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::FMUL),
                 OPC_RecordChild0,
                 OPC_RecordChild1,
                 OPC_MoveParent,
                 OPC_CheckType, MVT::v4f32,
                 OPC_CheckPatternPredicate, 0,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMADDFP), 0,
                     1, MVT::v4f32, 3, 1, 2, 0, 
               12, 
                 OPC_RecordChild1,
                 OPC_CheckType, MVT::v4f32,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VADDFP), 0,
                     1, MVT::v4f32, 2, 0, 1, 
5f42f863
               0, 
             0, 
95937a6a
           35|128,1,  TARGET_OPCODE(ISD::FSUB),
             OPC_Scope, 39, 
5f42f863
               OPC_MoveChild, 0,
95937a6a
               OPC_CheckOpcode, TARGET_OPCODE(ISD::FMUL),
               OPC_RecordChild0,
               OPC_RecordChild1,
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_SwitchType , 12,  MVT::f64,
                 OPC_CheckPatternPredicate, 0,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::FMSUB), 0,
                     1, MVT::f64, 3, 0, 1, 2, 
               12,  MVT::f32,
                 OPC_CheckPatternPredicate, 0,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::FMSUBS), 0,
                     1, MVT::f32, 3, 0, 1, 2, 
               0, 
             68, 
               OPC_RecordChild0,
               OPC_Scope, 38, 
                 OPC_MoveChild, 1,
                 OPC_CheckOpcode, TARGET_OPCODE(ISD::FMUL),
                 OPC_RecordChild0,
5f42f863
                 OPC_RecordChild1,
                 OPC_MoveParent,
95937a6a
                 OPC_SwitchType , 12,  MVT::f64,
                   OPC_CheckPatternPredicate, 0,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::FNMSUB), 0,
                       1, MVT::f64, 3, 1, 2, 0, 
                 12,  MVT::f32,
                   OPC_CheckPatternPredicate, 0,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::FNMSUBS), 0,
                       1, MVT::f32, 3, 1, 2, 0, 
                 0, 
               25, 
5f42f863
                 OPC_RecordChild1,
95937a6a
                 OPC_SwitchType , 9,  MVT::f64,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::FSUB), 0,
                       1, MVT::f64, 2, 0, 1, 
                 9,  MVT::f32,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::FSUBS), 0,
                       1, MVT::f32, 2, 0, 1, 
5f42f863
                 0, 
               0, 
95937a6a
             37, 
               OPC_MoveChild, 0,
               OPC_CheckOpcode, TARGET_OPCODE(ISD::BUILD_VECTOR),
               OPC_CheckPredicate, 66,
               OPC_MoveParent,
               OPC_MoveChild, 1,
               OPC_CheckOpcode, TARGET_OPCODE(ISD::FSUB),
               OPC_MoveChild, 0,
               OPC_CheckOpcode, TARGET_OPCODE(ISD::FMUL),
5f42f863
               OPC_RecordChild0,
               OPC_RecordChild1,
95937a6a
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_MoveParent,
               OPC_CheckType, MVT::v4f32,
               OPC_CheckPatternPredicate, 0,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VNMSUBFP), 0,
                   1, MVT::v4f32, 3, 0, 1, 2, 
             13, 
               OPC_RecordChild0,
               OPC_RecordChild1,
               OPC_CheckType, MVT::v4f32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUBFP), 0,
                   1, MVT::v4f32, 2, 0, 1, 
             0, 
           11,  TARGET_OPCODE(PPCISD::FCTIWZ),
             OPC_RecordChild0,
             OPC_CheckType, MVT::f64,
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::FCTIWZ), 0,
                 1, MVT::f64, 1, 0, 
           9,  TARGET_OPCODE(ISD::FP_ROUND),
             OPC_RecordChild0,
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::FRSP), 0,
                 1, MVT::f32, 1, 0, 
           23,  TARGET_OPCODE(ISD::FSQRT),
             OPC_RecordChild0,
             OPC_SwitchType , 8,  MVT::f64,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::FSQRT), 0,
                   1, MVT::f64, 1, 0, 
             8,  MVT::f32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::FSQRTS), 0,
                   1, MVT::f32, 1, 0, 
5f42f863
             0, 
95937a6a
           23,  TARGET_OPCODE(ISD::FABS),
             OPC_RecordChild0,
             OPC_SwitchType , 8,  MVT::f32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::FABSS), 0,
                   1, MVT::f32, 1, 0, 
             8,  MVT::f64,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::FABSD), 0,
                   1, MVT::f64, 1, 0, 
             0, 
           7,  TARGET_OPCODE(PPCISD::MFFS),
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::MFFS), 0|OPFL_FlagOutput,
                 1, MVT::f64, 0, 
           14,  TARGET_OPCODE(PPCISD::FADDRTZ),
             OPC_CaptureFlagInput,
5f42f863
             OPC_RecordChild0,
             OPC_RecordChild1,
95937a6a
             OPC_CheckType, MVT::f64,
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::FADDrtz), 0|OPFL_FlagInput|OPFL_FlagOutput,
                 1, MVT::f64, 2, 0, 1, 
           29,  TARGET_OPCODE(PPCISD::FSEL),
             OPC_RecordChild0,
             OPC_RecordChild1,
             OPC_RecordChild2,
             OPC_SwitchType , 10,  MVT::f64,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::FSELD), 0,
                   1, MVT::f64, 3, 0, 1, 2, 
             10,  MVT::f32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::FSELS), 0,
                   1, MVT::f32, 3, 0, 1, 2, 
             0, 
           26,  TARGET_OPCODE(ISD::FDIV),
             OPC_RecordChild0,
             OPC_RecordChild1,
             OPC_SwitchType , 9,  MVT::f64,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::FDIV), 0,
                   1, MVT::f64, 2, 0, 1, 
             9,  MVT::f32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::FDIVS), 0,
                   1, MVT::f32, 2, 0, 1, 
             0, 
           45,  TARGET_OPCODE(ISD::FMUL),
             OPC_RecordChild0,
             OPC_RecordChild1,
             OPC_SwitchType , 9,  MVT::f64,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::FMUL), 0,
                   1, MVT::f64, 2, 0, 1, 
             9,  MVT::f32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::FMULS), 0,
                   1, MVT::f32, 2, 0, 1, 
             17,  MVT::v4f32,
               OPC_EmitNode, TARGET_OPCODE(PPC::V_SET0), 0,
                   1, MVT::v4i32, 0, 
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMADDFP), 0,
                   1, MVT::v4f32, 3, 0, 1, 2, 
             0, 
           13,  TARGET_OPCODE(ISD::FP_EXTEND),
             OPC_RecordChild0,
             OPC_EmitInteger, MVT::i32, PPC::F8RCRegClassID,
             OPC_MorphNodeTo, TARGET_OPCODE(TargetOpcode::COPY_TO_REGCLASS), 0,
                 1, MVT::f64, 2, 0, 1, 
           11,  TARGET_OPCODE(PPCISD::FCFID),
             OPC_RecordChild0,
             OPC_CheckType, MVT::f64,
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::FCFID), 0,
                 1, MVT::f64, 1, 0, 
           11,  TARGET_OPCODE(PPCISD::FCTIDZ),
             OPC_RecordChild0,
             OPC_CheckType, MVT::f64,
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::FCTIDZ), 0,
                 1, MVT::f64, 1, 0, 
           113,  TARGET_OPCODE(ISD::INTRINSIC_W_CHAIN),
             OPC_RecordNode,
             OPC_MoveChild, 1,
             OPC_Scope, 18, 
               OPC_CheckInteger, 54|128,1, 
5f42f863
               OPC_MoveParent,
95937a6a
               OPC_RecordChild2,
               OPC_CheckComplexPat, /*CP*/0, /*#*/1,
               OPC_EmitMergeInputChains1_0,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::LVEBX), 0|OPFL_Chain,
                   1, MVT::v16i8, 2, 2, 3, 
             18, 
               OPC_CheckInteger, 55|128,1, 
               OPC_MoveParent,
               OPC_RecordChild2,
               OPC_CheckComplexPat, /*CP*/0, /*#*/1,
               OPC_EmitMergeInputChains1_0,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::LVEHX), 0|OPFL_Chain,
                   1, MVT::v8i16, 2, 2, 3, 
             18, 
               OPC_CheckInteger, 56|128,1, 
               OPC_MoveParent,
               OPC_RecordChild2,
               OPC_CheckComplexPat, /*CP*/0, /*#*/1,
               OPC_EmitMergeInputChains1_0,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::LVEWX), 0|OPFL_Chain,
                   1, MVT::v4i32, 2, 2, 3, 
             18, 
               OPC_CheckInteger, 59|128,1, 
               OPC_MoveParent,
               OPC_RecordChild2,
               OPC_CheckComplexPat, /*CP*/0, /*#*/1,
               OPC_EmitMergeInputChains1_0,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::LVX), 0|OPFL_Chain,
                   1, MVT::v4i32, 2, 2, 3, 
             18, 
               OPC_CheckInteger, 60|128,1, 
               OPC_MoveParent,
               OPC_RecordChild2,
               OPC_CheckComplexPat, /*CP*/0, /*#*/1,
               OPC_EmitMergeInputChains1_0,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::LVXL), 0|OPFL_Chain,
                   1, MVT::v4i32, 2, 2, 3, 
             12, 
               OPC_CheckInteger, 61|128,1, 
               OPC_MoveParent,
               OPC_EmitMergeInputChains1_0,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::MFVSCR), 0|OPFL_Chain,
                   1, MVT::v8i16, 0, 
             0, 
           22|128,13,  TARGET_OPCODE(ISD::INTRINSIC_WO_CHAIN),
             OPC_MoveChild, 0,
             OPC_Scope, 17, 
               OPC_CheckInteger, 57|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_CheckComplexPat, /*CP*/0, /*#*/0,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::LVSL), 0,
                   1, MVT::v16i8, 2, 1, 2, 
             17, 
               OPC_CheckInteger, 58|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_CheckComplexPat, /*CP*/0, /*#*/0,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::LVSR), 0,
                   1, MVT::v16i8, 2, 1, 2, 
             23, 
               OPC_CheckInteger, 109|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MoveChild, 2,
               OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
               OPC_MoveParent,
               OPC_EmitConvertToTarget, 1,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCTSXS), 0,
                   1, MVT::v4i32, 2, 2, 0, 
             23, 
               OPC_CheckInteger, 110|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MoveChild, 2,
               OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
               OPC_MoveParent,
               OPC_EmitConvertToTarget, 1,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCTUXS), 0,
                   1, MVT::v4i32, 2, 2, 0, 
             17, 
               OPC_CheckInteger, 121|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_RecordChild3,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMHADDSHS), 0,
                   1, MVT::v8i16, 3, 0, 1, 2, 
             17, 
               OPC_CheckInteger, 122|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_RecordChild3,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMHRADDSHS), 0,
                   1, MVT::v8i16, 3, 0, 1, 2, 
             17, 
               OPC_CheckInteger, 2|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_RecordChild3,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMLADDUHM), 0,
                   1, MVT::v8i16, 3, 0, 1, 2, 
             17, 
               OPC_CheckInteger, 18|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_RecordChild3,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VPERM), 0,
                   1, MVT::v4i32, 3, 0, 1, 2, 
             17, 
               OPC_CheckInteger, 35|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_RecordChild3,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSEL), 0,
                   1, MVT::v4i32, 3, 0, 1, 2, 
             15, 
               OPC_CheckInteger, 68|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VADDCUW), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 69|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VADDSBS), 0,
                   1, MVT::v16i8, 2, 0, 1, 
5f42f863
             15, 
               OPC_CheckInteger, 70|128,1, 
               OPC_MoveParent,
95937a6a
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VADDSHS), 0,
                   1, MVT::v8i16, 2, 0, 1, 
5f42f863
             15, 
95937a6a
               OPC_CheckInteger, 71|128,1, 
5f42f863
               OPC_MoveParent,
95937a6a
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VADDSWS), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 72|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VADDUBS), 0,
                   1, MVT::v16i8, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 73|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VADDUHS), 0,
                   1, MVT::v8i16, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 74|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VADDUWS), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 75|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VAVGSB), 0,
                   1, MVT::v16i8, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 76|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VAVGSH), 0,
                   1, MVT::v8i16, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 77|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VAVGSW), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 78|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VAVGUB), 0,
                   1, MVT::v16i8, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 79|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VAVGUH), 0,
                   1, MVT::v8i16, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 80|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VAVGUW), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 115|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMAXSB), 0,
                   1, MVT::v16i8, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 116|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMAXSH), 0,
                   1, MVT::v8i16, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 117|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMAXSW), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 118|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMAXUB), 0,
                   1, MVT::v16i8, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 119|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMAXUH), 0,
                   1, MVT::v8i16, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 120|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMAXUW), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 124|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMINSB), 0,
                   1, MVT::v16i8, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 125|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMINSH), 0,
                   1, MVT::v8i16, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 126|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMINSW), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 127|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMINUB), 0,
                   1, MVT::v16i8, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 0|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMINUH), 0,
                   1, MVT::v8i16, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 1|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMINUW), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             17, 
               OPC_CheckInteger, 3|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_RecordChild3,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMSUMMBM), 0,
                   1, MVT::v4i32, 3, 0, 1, 2, 
             17, 
               OPC_CheckInteger, 4|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_RecordChild3,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMSUMSHM), 0,
                   1, MVT::v4i32, 3, 0, 1, 2, 
             17, 
               OPC_CheckInteger, 5|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_RecordChild3,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMSUMSHS), 0,
                   1, MVT::v4i32, 3, 0, 1, 2, 
             17, 
               OPC_CheckInteger, 6|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_RecordChild3,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMSUMUBM), 0,
                   1, MVT::v4i32, 3, 0, 1, 2, 
             17, 
               OPC_CheckInteger, 7|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_RecordChild3,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMSUMUHM), 0,
                   1, MVT::v4i32, 3, 0, 1, 2, 
             17, 
               OPC_CheckInteger, 8|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_RecordChild3,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMSUMUHS), 0,
                   1, MVT::v4i32, 3, 0, 1, 2, 
             15, 
               OPC_CheckInteger, 9|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMULESB), 0,
                   1, MVT::v8i16, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 10|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMULESH), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 11|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMULEUB), 0,
                   1, MVT::v8i16, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 12|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMULEUH), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 13|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMULOSB), 0,
                   1, MVT::v8i16, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 14|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMULOSH), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 15|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMULOUB), 0,
                   1, MVT::v8i16, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 16|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMULOUH), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 49|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUBCUW), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 50|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUBSBS), 0,
                   1, MVT::v16i8, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 51|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUBSHS), 0,
                   1, MVT::v8i16, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 52|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUBSWS), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 53|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUBUBS), 0,
                   1, MVT::v16i8, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 54|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUBUHS), 0,
                   1, MVT::v8i16, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 55|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUBUWS), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 60|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUMSWS), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 56|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUM2SWS), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 57|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUM4SBS), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 58|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUM4SHS), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 59|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSUM4UBS), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 31|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VRLB), 0,
                   1, MVT::v16i8, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 32|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VRLH), 0,
                   1, MVT::v8i16, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 33|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VRLW), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 36|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSL), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 39|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSLO), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 37|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSLB), 0,
                   1, MVT::v16i8, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 38|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSLH), 0,
                   1, MVT::v8i16, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 40|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSLW), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 41|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSR), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 47|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSRO), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 42|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSRAB), 0,
                   1, MVT::v16i8, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 43|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSRAH), 0,
                   1, MVT::v8i16, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 44|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSRAW), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 45|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSRB), 0,
                   1, MVT::v16i8, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 46|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSRH), 0,
                   1, MVT::v8i16, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 48|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSRW), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 19|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VPKPX), 0,
                   1, MVT::v8i16, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 20|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VPKSHSS), 0,
                   1, MVT::v16i8, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 21|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VPKSHUS), 0,
                   1, MVT::v16i8, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 22|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VPKSWSS), 0,
                   1, MVT::v16i8, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 23|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VPKSWUS), 0,
                   1, MVT::v8i16, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 24|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VPKUHUS), 0,
                   1, MVT::v16i8, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 25|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VPKUWUS), 0,
                   1, MVT::v8i16, 2, 0, 1, 
             13, 
               OPC_CheckInteger, 61|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VUPKHPX), 0,
                   1, MVT::v4i32, 1, 0, 
             13, 
               OPC_CheckInteger, 62|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VUPKHSB), 0,
                   1, MVT::v8i16, 1, 0, 
             13, 
               OPC_CheckInteger, 63|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VUPKHSH), 0,
                   1, MVT::v4i32, 1, 0, 
             13, 
               OPC_CheckInteger, 64|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VUPKLPX), 0,
                   1, MVT::v4i32, 1, 0, 
             13, 
               OPC_CheckInteger, 65|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VUPKLSB), 0,
                   1, MVT::v8i16, 1, 0, 
             13, 
               OPC_CheckInteger, 66|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VUPKLSH), 0,
                   1, MVT::v4i32, 1, 0, 
             23, 
               OPC_CheckInteger, 81|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MoveChild, 2,
               OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
               OPC_MoveParent,
               OPC_EmitConvertToTarget, 1,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCFSX), 0,
                   1, MVT::v4f32, 2, 2, 0, 
             23, 
               OPC_CheckInteger, 82|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MoveChild, 2,
               OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
               OPC_MoveParent,
               OPC_EmitConvertToTarget, 1,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCFUX), 0,
                   1, MVT::v4f32, 2, 2, 0, 
             13, 
               OPC_CheckInteger, 111|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VEXPTEFP), 0,
                   1, MVT::v4f32, 1, 0, 
             13, 
               OPC_CheckInteger, 112|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VLOGEFP), 0,
                   1, MVT::v4f32, 1, 0, 
             15, 
               OPC_CheckInteger, 114|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMAXFP), 0,
5f42f863
                   1, MVT::v4f32, 2, 0, 1, 
             15, 
95937a6a
               OPC_CheckInteger, 123|128,1, 
5f42f863
               OPC_MoveParent,
95937a6a
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMINFP), 0,
5f42f863
                   1, MVT::v4f32, 2, 0, 1, 
95937a6a
             13, 
               OPC_CheckInteger, 26|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VREFP), 0,
                   1, MVT::v4f32, 1, 0, 
             13, 
               OPC_CheckInteger, 27|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VRFIM), 0,
                   1, MVT::v4f32, 1, 0, 
             13, 
               OPC_CheckInteger, 28|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VRFIN), 0,
                   1, MVT::v4f32, 1, 0, 
             13, 
               OPC_CheckInteger, 29|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VRFIP), 0,
                   1, MVT::v4f32, 1, 0, 
             13, 
               OPC_CheckInteger, 30|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VRFIZ), 0,
                   1, MVT::v4f32, 1, 0, 
             13, 
               OPC_CheckInteger, 34|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VRSQRTEFP), 0,
                   1, MVT::v4f32, 1, 0, 
             17, 
               OPC_CheckInteger, 113|128,1, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_RecordChild3,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMADDFP), 0,
                   1, MVT::v4f32, 3, 0, 1, 2, 
             17, 
               OPC_CheckInteger, 17|128,2, 
               OPC_MoveParent,
               OPC_RecordChild1,
               OPC_RecordChild2,
               OPC_RecordChild3,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VNMSUBFP), 0,
                   1, MVT::v4f32, 3, 0, 1, 2, 
             0, 
           26,  TARGET_OPCODE(ISD::CALLSEQ_END),
             OPC_RecordNode,
             OPC_CaptureFlagInput,
             OPC_RecordChild1,
             OPC_MoveChild, 1,
             OPC_CheckOpcode, TARGET_OPCODE(ISD::TargetConstant),
             OPC_MoveParent,
             OPC_RecordChild2,
             OPC_MoveChild, 2,
             OPC_CheckOpcode, TARGET_OPCODE(ISD::TargetConstant),
             OPC_MoveParent,
             OPC_EmitMergeInputChains1_0,
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADJCALLSTACKUP), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput,
                 1, MVT::i32, 2, 1, 2, 
           70|128,1,  TARGET_OPCODE(PPCISD::TC_RETURN),
             OPC_RecordNode,
             OPC_CaptureFlagInput,
             OPC_RecordChild1,
             OPC_Scope, 21|128,1, 
               OPC_MoveChild, 1,
               OPC_SwitchOpcode , 48,  TARGET_OPCODE(ISD::Constant),
                 OPC_SwitchType , 21,  MVT::i32,
                   OPC_MoveParent,
                   OPC_RecordChild2,
                   OPC_MoveChild, 2,
                   OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
                   OPC_MoveParent,
                   OPC_EmitMergeInputChains1_0,
                   OPC_EmitConvertToTarget, 1,
                   OPC_EmitConvertToTarget, 2,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::TCRETURNai), 0|OPFL_Chain|OPFL_FlagInput|OPFL_Variadic2,
                       0, 2, 3, 4, 
                 21,  MVT::i64,
                   OPC_MoveParent,
                   OPC_RecordChild2,
                   OPC_MoveChild, 2,
                   OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
                   OPC_MoveParent,
                   OPC_EmitMergeInputChains1_0,
                   OPC_EmitConvertToTarget, 1,
                   OPC_EmitConvertToTarget, 2,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::TCRETURNai8), 0|OPFL_Chain|OPFL_FlagInput|OPFL_Variadic2,
                       0, 2, 3, 4, 
                 0, 
               44,  TARGET_OPCODE(ISD::TargetGlobalAddress),
                 OPC_SwitchType , 19,  MVT::i32,
                   OPC_MoveParent,
                   OPC_RecordChild2,
                   OPC_MoveChild, 2,
                   OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
                   OPC_MoveParent,
                   OPC_EmitMergeInputChains1_0,
                   OPC_EmitConvertToTarget, 2,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::TCRETURNdi), 0|OPFL_Chain|OPFL_FlagInput|OPFL_Variadic2,
                       0, 2, 1, 3, 
                 19,  MVT::i64,
                   OPC_MoveParent,
                   OPC_RecordChild2,
                   OPC_MoveChild, 2,
                   OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
                   OPC_MoveParent,
                   OPC_EmitMergeInputChains1_0,
                   OPC_EmitConvertToTarget, 2,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::TCRETURNdi8), 0|OPFL_Chain|OPFL_FlagInput|OPFL_Variadic2,
                       0, 2, 1, 3, 
                 0, 
               44,  TARGET_OPCODE(ISD::TargetExternalSymbol),
                 OPC_SwitchType , 19,  MVT::i32,
                   OPC_MoveParent,
                   OPC_RecordChild2,
                   OPC_MoveChild, 2,
                   OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
                   OPC_MoveParent,
                   OPC_EmitMergeInputChains1_0,
                   OPC_EmitConvertToTarget, 2,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::TCRETURNdi), 0|OPFL_Chain|OPFL_FlagInput|OPFL_Variadic2,
                       0, 2, 1, 3, 
                 19,  MVT::i64,
                   OPC_MoveParent,
                   OPC_RecordChild2,
                   OPC_MoveChild, 2,
                   OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
                   OPC_MoveParent,
                   OPC_EmitMergeInputChains1_0,
                   OPC_EmitConvertToTarget, 2,
                   OPC_MorphNodeTo, TARGET_OPCODE(PPC::TCRETURNdi8), 0|OPFL_Chain|OPFL_FlagInput|OPFL_Variadic2,
                       0, 2, 1, 3, 
                 0, 
               0, 
             20, 
               OPC_CheckChild1Type, MVT::i32,
               OPC_RecordChild2,
               OPC_MoveChild, 2,
               OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
               OPC_MoveParent,
               OPC_EmitMergeInputChains1_0,
               OPC_EmitConvertToTarget, 2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::TCRETURNri), 0|OPFL_Chain|OPFL_FlagInput|OPFL_Variadic2,
                   0, 2, 1, 3, 
             20, 
               OPC_CheckChild1Type, MVT::i64,
               OPC_RecordChild2,
               OPC_MoveChild, 2,
               OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
               OPC_MoveParent,
               OPC_EmitMergeInputChains1_0,
               OPC_EmitConvertToTarget, 2,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::TCRETURNri8), 0|OPFL_Chain|OPFL_FlagInput|OPFL_Variadic2,
                   0, 2, 1, 3, 
             0, 
           84|128,1,  TARGET_OPCODE(PPCISD::VCMP),
             OPC_RecordChild0,
             OPC_RecordChild1,
             OPC_MoveChild, 2,
             OPC_Scope, 14, 
5f42f863
               OPC_CheckInteger, 6, 
               OPC_MoveParent,
               OPC_CheckType, MVT::v16i8,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPEQUB), 0,
                   1, MVT::v16i8, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 6|128,6, 
               OPC_MoveParent,
               OPC_CheckType, MVT::v16i8,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTSB), 0,
                   1, MVT::v16i8, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 6|128,4, 
               OPC_MoveParent,
               OPC_CheckType, MVT::v16i8,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTUB), 0,
                   1, MVT::v16i8, 2, 0, 1, 
             14, 
               OPC_CheckInteger, 70, 
               OPC_MoveParent,
               OPC_CheckType, MVT::v8i16,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPEQUH), 0,
                   1, MVT::v8i16, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 70|128,6, 
               OPC_MoveParent,
               OPC_CheckType, MVT::v8i16,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTSH), 0,
                   1, MVT::v8i16, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 70|128,4, 
               OPC_MoveParent,
               OPC_CheckType, MVT::v8i16,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTUH), 0,
                   1, MVT::v8i16, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 6|128,1, 
               OPC_MoveParent,
               OPC_CheckType, MVT::v4i32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPEQUW), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 6|128,7, 
               OPC_MoveParent,
               OPC_CheckType, MVT::v4i32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTSW), 0,
                   1, MVT::v4i32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 6|128,5, 
               OPC_MoveParent,
               OPC_CheckType, MVT::v4i32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTUW), 0,
                   1, MVT::v4i32, 2, 0, 1, 
95937a6a
             15, 
5f42f863
               OPC_CheckInteger, 70|128,7, 
               OPC_MoveParent,
               OPC_CheckType, MVT::v4f32,
95937a6a
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPBFP), 0,
5f42f863
                   1, MVT::v4f32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 70|128,1, 
               OPC_MoveParent,
               OPC_CheckType, MVT::v4f32,
95937a6a
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPEQFP), 0,
5f42f863
                   1, MVT::v4f32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 70|128,3, 
               OPC_MoveParent,
               OPC_CheckType, MVT::v4f32,
95937a6a
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGEFP), 0,
5f42f863
                   1, MVT::v4f32, 2, 0, 1, 
             15, 
               OPC_CheckInteger, 70|128,5, 
               OPC_MoveParent,
               OPC_CheckType, MVT::v4f32,
95937a6a
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTFP), 0,
5f42f863
                   1, MVT::v4f32, 2, 0, 1, 
95937a6a
             0, 
           97|128,1,  TARGET_OPCODE(PPCISD::VCMPo),
             OPC_RecordChild0,
             OPC_RecordChild1,
             OPC_MoveChild, 2,
             OPC_Scope, 15, 
5f42f863
               OPC_CheckInteger, 6, 
               OPC_MoveParent,
               OPC_CheckType, MVT::v16i8,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPEQUBo), 0|OPFL_FlagOutput,
95937a6a
                   2, MVT::v16i8, MVT::i32, 2, 0, 1, 
             16, 
5f42f863
               OPC_CheckInteger, 6|128,6, 
               OPC_MoveParent,
               OPC_CheckType, MVT::v16i8,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTSBo), 0|OPFL_FlagOutput,
95937a6a
                   2, MVT::v16i8, MVT::i32, 2, 0, 1, 
             16, 
5f42f863
               OPC_CheckInteger, 6|128,4, 
               OPC_MoveParent,
               OPC_CheckType, MVT::v16i8,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTUBo), 0|OPFL_FlagOutput,
95937a6a
                   2, MVT::v16i8, MVT::i32, 2, 0, 1, 
             15, 
5f42f863
               OPC_CheckInteger, 70, 
               OPC_MoveParent,
               OPC_CheckType, MVT::v8i16,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPEQUHo), 0|OPFL_FlagOutput,
95937a6a
                   2, MVT::v8i16, MVT::i32, 2, 0, 1, 
             16, 
5f42f863
               OPC_CheckInteger, 70|128,6, 
               OPC_MoveParent,
               OPC_CheckType, MVT::v8i16,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTSHo), 0|OPFL_FlagOutput,
95937a6a
                   2, MVT::v8i16, MVT::i32, 2, 0, 1, 
             16, 
5f42f863
               OPC_CheckInteger, 70|128,4, 
               OPC_MoveParent,
               OPC_CheckType, MVT::v8i16,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTUHo), 0|OPFL_FlagOutput,
95937a6a
                   2, MVT::v8i16, MVT::i32, 2, 0, 1, 
             16, 
5f42f863
               OPC_CheckInteger, 6|128,1, 
               OPC_MoveParent,
               OPC_CheckType, MVT::v4i32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPEQUWo), 0|OPFL_FlagOutput,
95937a6a
                   2, MVT::v4i32, MVT::i32, 2, 0, 1, 
             16, 
5f42f863
               OPC_CheckInteger, 6|128,7, 
               OPC_MoveParent,
               OPC_CheckType, MVT::v4i32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTSWo), 0|OPFL_FlagOutput,
95937a6a
                   2, MVT::v4i32, MVT::i32, 2, 0, 1, 
             16, 
5f42f863
               OPC_CheckInteger, 6|128,5, 
               OPC_MoveParent,
               OPC_CheckType, MVT::v4i32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTUWo), 0|OPFL_FlagOutput,
95937a6a
                   2, MVT::v4i32, MVT::i32, 2, 0, 1, 
             16, 
               OPC_CheckInteger, 70|128,7, 
5f42f863
               OPC_MoveParent,
95937a6a
               OPC_CheckType, MVT::v4f32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPBFPo), 0|OPFL_FlagOutput,
                   2, MVT::v4f32, MVT::i32, 2, 0, 1, 
             16, 
               OPC_CheckInteger, 70|128,1, 
5f42f863
               OPC_MoveParent,
95937a6a
               OPC_CheckType, MVT::v4f32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPEQFPo), 0|OPFL_FlagOutput,
                   2, MVT::v4f32, MVT::i32, 2, 0, 1, 
             16, 
               OPC_CheckInteger, 70|128,3, 
5f42f863
               OPC_MoveParent,
95937a6a
               OPC_CheckType, MVT::v4f32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGEFPo), 0|OPFL_FlagOutput,
                   2, MVT::v4f32, MVT::i32, 2, 0, 1, 
             16, 
               OPC_CheckInteger, 70|128,5, 
               OPC_MoveParent,
               OPC_CheckType, MVT::v4f32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VCMPGTFPo), 0|OPFL_FlagOutput,
                   2, MVT::v4f32, MVT::i32, 2, 0, 1, 
5f42f863
             0, 
95937a6a
           52|128,2,  TARGET_OPCODE(ISD::VECTOR_SHUFFLE),
             OPC_Scope, 73, 
5f42f863
               OPC_RecordNode,
5d2a1c48
               OPC_RecordChild0,
               OPC_MoveChild, 1,
95937a6a
               OPC_CheckOpcode, TARGET_OPCODE(ISD::UNDEF),
5d2a1c48
               OPC_MoveParent,
               OPC_CheckType, MVT::v16i8,
               OPC_Scope, 14, 
95937a6a
                 OPC_CheckPredicate, 67,
                 OPC_EmitNodeXForm, 9, 0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSPLTB), 0,
                     1, MVT::v16i8, 2, 2, 1, 
5d2a1c48
               14, 
95937a6a
                 OPC_CheckPredicate, 68,
                 OPC_EmitNodeXForm, 10, 0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSPLTH), 0,
                     1, MVT::v16i8, 2, 2, 1, 
5d2a1c48
               14, 
95937a6a
                 OPC_CheckPredicate, 69,
                 OPC_EmitNodeXForm, 11, 0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSPLTW), 0,
                     1, MVT::v16i8, 2, 2, 1, 
5d2a1c48
               15, 
95937a6a
                 OPC_CheckPredicate, 70,
                 OPC_EmitNodeXForm, 12, 0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSLDOI), 0,
                     1, MVT::v16i8, 3, 1, 1, 2, 
               0, 
95937a6a
             107, 
5f42f863
               OPC_RecordChild0,
               OPC_MoveChild, 1,
95937a6a
               OPC_CheckOpcode, TARGET_OPCODE(ISD::UNDEF),
5f42f863
               OPC_MoveParent,
               OPC_CheckType, MVT::v16i8,
5d2a1c48
               OPC_Scope, 11, 
95937a6a
                 OPC_CheckPredicate, 71,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VPKUWUM), 0,
                     1, MVT::v16i8, 2, 0, 0, 
               11, 
95937a6a
                 OPC_CheckPredicate, 72,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VPKUHUM), 0,
                     1, MVT::v16i8, 2, 0, 0, 
               11, 
95937a6a
                 OPC_CheckPredicate, 73,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMRGLB), 0,
                     1, MVT::v16i8, 2, 0, 0, 
               11, 
95937a6a
                 OPC_CheckPredicate, 74,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMRGLH), 0,
                     1, MVT::v16i8, 2, 0, 0, 
               11, 
95937a6a
                 OPC_CheckPredicate, 75,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMRGLW), 0,
                     1, MVT::v16i8, 2, 0, 0, 
               11, 
95937a6a
                 OPC_CheckPredicate, 76,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMRGHB), 0,
                     1, MVT::v16i8, 2, 0, 0, 
               11, 
95937a6a
                 OPC_CheckPredicate, 77,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMRGHH), 0,
                     1, MVT::v16i8, 2, 0, 0, 
               11, 
95937a6a
                 OPC_CheckPredicate, 78,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMRGHW), 0,
                     1, MVT::v16i8, 2, 0, 0, 
               0, 
5f42f863
             20, 
               OPC_RecordNode,
               OPC_RecordChild0,
               OPC_RecordChild1,
95937a6a
               OPC_CheckPredicate, 79,
5f42f863
               OPC_CheckType, MVT::v16i8,
95937a6a
               OPC_EmitNodeXForm, 13, 0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSLDOI), 0,
                   1, MVT::v16i8, 3, 1, 2, 3, 
5d2a1c48
             102, 
5f42f863
               OPC_RecordChild0,
               OPC_RecordChild1,
               OPC_CheckType, MVT::v16i8,
5d2a1c48
               OPC_Scope, 11, 
95937a6a
                 OPC_CheckPredicate, 80,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMRGHB), 0,
                     1, MVT::v16i8, 2, 0, 1, 
               11, 
95937a6a
                 OPC_CheckPredicate, 81,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMRGHH), 0,
                     1, MVT::v16i8, 2, 0, 1, 
               11, 
95937a6a
                 OPC_CheckPredicate, 82,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMRGHW), 0,
                     1, MVT::v16i8, 2, 0, 1, 
               11, 
95937a6a
                 OPC_CheckPredicate, 83,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMRGLB), 0,
                     1, MVT::v16i8, 2, 0, 1, 
               11, 
95937a6a
                 OPC_CheckPredicate, 84,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMRGLH), 0,
                     1, MVT::v16i8, 2, 0, 1, 
               11, 
95937a6a
                 OPC_CheckPredicate, 85,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMRGLW), 0,
                     1, MVT::v16i8, 2, 0, 1, 
               11, 
95937a6a
                 OPC_CheckPredicate, 86,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VPKUHUM), 0,
                     1, MVT::v16i8, 2, 0, 1, 
               11, 
95937a6a
                 OPC_CheckPredicate, 87,
5d2a1c48
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VPKUWUM), 0,
                     1, MVT::v16i8, 2, 0, 1, 
               0, 
5f42f863
             0, 
95937a6a
           17,  TARGET_OPCODE(ISD::CALLSEQ_START),
5f42f863
             OPC_RecordNode,
             OPC_RecordChild1,
             OPC_MoveChild, 1,
95937a6a
             OPC_CheckOpcode, TARGET_OPCODE(ISD::TargetConstant),
5f42f863
             OPC_MoveParent,
95937a6a
             OPC_EmitMergeInputChains1_0,
5f42f863
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::ADJCALLSTACKDOWN), 0|OPFL_Chain|OPFL_FlagOutput,
95937a6a
                 1, MVT::i32, 1, 1, 
           98,  TARGET_OPCODE(PPCISD::CALL_Darwin),
5f42f863
             OPC_RecordNode,
             OPC_CaptureFlagInput,
             OPC_RecordChild1,
             OPC_MoveChild, 1,
95937a6a
             OPC_SwitchOpcode , 30,  TARGET_OPCODE(ISD::Constant),
               OPC_SwitchType , 12,  MVT::i32,
5f42f863
                 OPC_MoveParent,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_EmitConvertToTarget, 1,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::BLA_Darwin), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic1,
95937a6a
                     1, MVT::i32, 1, 2, 
               12,  MVT::i64,
5f42f863
                 OPC_MoveParent,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_EmitConvertToTarget, 1,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::BLA8_Darwin), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic1,
95937a6a
                     1, MVT::i64, 1, 2, 
5f42f863
               0, 
95937a6a
             26,  TARGET_OPCODE(ISD::TargetGlobalAddress),
               OPC_SwitchType , 10,  MVT::i32,
5f42f863
                 OPC_MoveParent,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::BL_Darwin), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic1,
95937a6a
                     1, MVT::i32, 1, 1, 
               10,  MVT::i64,
5f42f863
                 OPC_MoveParent,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::BL8_Darwin), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic1,
95937a6a
                     1, MVT::i64, 1, 1, 
5f42f863
               0, 
95937a6a
             26,  TARGET_OPCODE(ISD::TargetExternalSymbol),
               OPC_SwitchType , 10,  MVT::i32,
5f42f863
                 OPC_MoveParent,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::BL_Darwin), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic1,
95937a6a
                     1, MVT::i32, 1, 1, 
               10,  MVT::i64,
5f42f863
                 OPC_MoveParent,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::BL8_Darwin), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic1,
95937a6a
                     1, MVT::i64, 1, 1, 
5f42f863
               0, 
             0, 
95937a6a
           98,  TARGET_OPCODE(PPCISD::CALL_SVR4),
5f42f863
             OPC_RecordNode,
             OPC_CaptureFlagInput,
             OPC_RecordChild1,
             OPC_MoveChild, 1,
95937a6a
             OPC_SwitchOpcode , 30,  TARGET_OPCODE(ISD::Constant),
               OPC_SwitchType , 12,  MVT::i32,
5f42f863
                 OPC_MoveParent,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_EmitConvertToTarget, 1,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::BLA_SVR4), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic1,
95937a6a
                     1, MVT::i32, 1, 2, 
               12,  MVT::i64,
5f42f863
                 OPC_MoveParent,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_EmitConvertToTarget, 1,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::BLA8_ELF), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic1,
95937a6a
                     1, MVT::i64, 1, 2, 
5f42f863
               0, 
95937a6a
             26,  TARGET_OPCODE(ISD::TargetGlobalAddress),
               OPC_SwitchType , 10,  MVT::i32,
5f42f863
                 OPC_MoveParent,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::BL_SVR4), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic1,
95937a6a
                     1, MVT::i32, 1, 1, 
               10,  MVT::i64,
5f42f863
                 OPC_MoveParent,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::BL8_ELF), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic1,
95937a6a
                     1, MVT::i64, 1, 1, 
5f42f863
               0, 
95937a6a
             26,  TARGET_OPCODE(ISD::TargetExternalSymbol),
               OPC_SwitchType , 10,  MVT::i32,
5f42f863
                 OPC_MoveParent,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::BL_SVR4), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic1,
95937a6a
                     1, MVT::i32, 1, 1, 
               10,  MVT::i64,
5f42f863
                 OPC_MoveParent,
95937a6a
                 OPC_EmitMergeInputChains1_0,
5f42f863
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::BL8_ELF), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic1,
95937a6a
                     1, MVT::i64, 1, 1, 
5f42f863
               0, 
             0, 
95937a6a
           19,  TARGET_OPCODE(PPCISD::MTFSB0),
5f42f863
             OPC_CaptureFlagInput,
             OPC_RecordChild0,
             OPC_MoveChild, 0,
95937a6a
             OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
5f42f863
             OPC_CheckType, MVT::i32,
             OPC_MoveParent,
             OPC_EmitConvertToTarget, 0,
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::MTFSB0), 0|OPFL_FlagInput|OPFL_FlagOutput,
                 0, 1, 1, 
95937a6a
           19,  TARGET_OPCODE(PPCISD::MTFSB1),
5f42f863
             OPC_CaptureFlagInput,
             OPC_RecordChild0,
             OPC_MoveChild, 0,
95937a6a
             OPC_CheckOpcode, TARGET_OPCODE(ISD::Constant),
5f42f863
             OPC_CheckType, MVT::i32,
             OPC_MoveParent,
             OPC_EmitConvertToTarget, 0,
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::MTFSB1), 0|OPFL_FlagInput|OPFL_FlagOutput,
                 0, 1, 1, 
95937a6a
           63,  TARGET_OPCODE(ISD::BUILD_VECTOR),
5d2a1c48
             OPC_Scope, 48, 
5f42f863
               OPC_RecordNode,
5d2a1c48
               OPC_SwitchType , 13,  MVT::v16i8,
95937a6a
                 OPC_CheckPredicate, 88,
5f42f863
                 OPC_EmitNodeXForm, 14, 0,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSPLTISB), 0,
                     1, MVT::v16i8, 1, 1, 
5d2a1c48
               13,  MVT::v8i16,
95937a6a
                 OPC_CheckPredicate, 89,
5f42f863
                 OPC_EmitNodeXForm, 15, 0,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSPLTISH), 0,
                     1, MVT::v8i16, 1, 1, 
5d2a1c48
               13,  MVT::v4i32,
95937a6a
                 OPC_CheckPredicate, 90,
5f42f863
                 OPC_EmitNodeXForm, 16, 0,
                 OPC_MorphNodeTo, TARGET_OPCODE(PPC::VSPLTISW), 0,
                     1, MVT::v4i32, 1, 1, 
               0, 
             11, 
95937a6a
               OPC_CheckPredicate, 91,
5f42f863
               OPC_CheckType, MVT::v4i32,
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::V_SET0), 0,
                   1, MVT::v4i32, 0, 
             0, 
95937a6a
           83,  TARGET_OPCODE(ISD::BIT_CONVERT),
5f42f863
             OPC_RecordChild0,
             OPC_Scope, 19, 
               OPC_CheckChild0Type, MVT::v8i16,
               OPC_SwitchType , 3,  MVT::v16i8,
                 OPC_CompleteMatch, 1, 0, 
 
               3,  MVT::v4i32,
                 OPC_CompleteMatch, 1, 0, 
 
               3,  MVT::v4f32,
                 OPC_CompleteMatch, 1, 0, 
 
               0, 
             19, 
               OPC_CheckChild0Type, MVT::v4i32,
               OPC_SwitchType , 3,  MVT::v16i8,
                 OPC_CompleteMatch, 1, 0, 
 
               3,  MVT::v8i16,
                 OPC_CompleteMatch, 1, 0, 
 
               3,  MVT::v4f32,
                 OPC_CompleteMatch, 1, 0, 
 
               0, 
             19, 
               OPC_CheckChild0Type, MVT::v4f32,
               OPC_SwitchType , 3,  MVT::v16i8,
                 OPC_CompleteMatch, 1, 0, 
 
               3,  MVT::v8i16,
                 OPC_CompleteMatch, 1, 0, 
 
               3,  MVT::v4i32,
                 OPC_CompleteMatch, 1, 0, 
 
               0, 
             19, 
               OPC_CheckChild0Type, MVT::v16i8,
               OPC_SwitchType , 3,  MVT::v8i16,
                 OPC_CompleteMatch, 1, 0, 
 
               3,  MVT::v4i32,
                 OPC_CompleteMatch, 1, 0, 
 
               3,  MVT::v4f32,
                 OPC_CompleteMatch, 1, 0, 
 
               0, 
             0, 
7820abe4
           15,  TARGET_OPCODE(PPCISD::VPERM),
             OPC_RecordChild0,
             OPC_RecordChild1,
             OPC_RecordChild2,
             OPC_CheckType, MVT::v16i8,
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::VPERM), 0,
                 1, MVT::v16i8, 3, 0, 1, 2, 
95937a6a
           17,  TARGET_OPCODE(PPCISD::RET_FLAG),
5f42f863
             OPC_RecordNode,
             OPC_CaptureFlagInput,
95937a6a
             OPC_EmitMergeInputChains1_0,
5f42f863
             OPC_EmitInteger, MVT::i32, 20, 
             OPC_EmitRegister, MVT::i32, 0 ,
95937a6a
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::BLR), 0|OPFL_Chain|OPFL_FlagInput|OPFL_Variadic0,
5f42f863
                 0, 2, 1, 2, 
95937a6a
           16,  TARGET_OPCODE(ISD::BR),
5f42f863
             OPC_RecordNode,
             OPC_RecordChild1,
             OPC_MoveChild, 1,
95937a6a
             OPC_CheckOpcode, TARGET_OPCODE(ISD::BasicBlock),
5f42f863
             OPC_MoveParent,
95937a6a
             OPC_EmitMergeInputChains1_0,
5f42f863
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::B), 0|OPFL_Chain,
                 0, 1, 1, 
95937a6a
           26,  TARGET_OPCODE(PPCISD::BCTRL_Darwin),
5f42f863
             OPC_RecordNode,
             OPC_CaptureFlagInput,
95937a6a
             OPC_Scope, 10, 
5f42f863
               OPC_CheckPatternPredicate, 1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::BCTRL_Darwin), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic0,
95937a6a
                   1, MVT::i32, 0, 
             10, 
5f42f863
               OPC_CheckPatternPredicate, 2,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::BCTRL8_Darwin), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic0,
95937a6a
                   1, MVT::i64, 0, 
5f42f863
             0, 
95937a6a
           26,  TARGET_OPCODE(PPCISD::BCTRL_SVR4),
5f42f863
             OPC_RecordNode,
             OPC_CaptureFlagInput,
95937a6a
             OPC_Scope, 10, 
5f42f863
               OPC_CheckPatternPredicate, 1,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::BCTRL_SVR4), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic0,
95937a6a
                   1, MVT::i32, 0, 
             10, 
5f42f863
               OPC_CheckPatternPredicate, 2,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::BCTRL8_ELF), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput|OPFL_Variadic0,
95937a6a
                   1, MVT::i64, 0, 
5f42f863
             0, 
95937a6a
           8,  TARGET_OPCODE(ISD::TRAP),
5f42f863
             OPC_RecordNode,
95937a6a
             OPC_EmitMergeInputChains1_0,
5f42f863
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::TRAP), 0|OPFL_Chain,
                 0, 0, 
95937a6a
           29,  TARGET_OPCODE(PPCISD::MTCTR),
5f42f863
             OPC_RecordNode,
             OPC_CaptureFlagInput,
             OPC_RecordChild1,
95937a6a
             OPC_Scope, 11, 
5f42f863
               OPC_CheckChild1Type, MVT::i32,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::MTCTR), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput,
95937a6a
                   1, MVT::i32, 1, 1, 
             11, 
5f42f863
               OPC_CheckChild1Type, MVT::i64,
95937a6a
               OPC_EmitMergeInputChains1_0,
5f42f863
               OPC_MorphNodeTo, TARGET_OPCODE(PPC::MTCTR8), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput,
95937a6a
                   1, MVT::i64, 1, 1, 
5f42f863
             0, 
95937a6a
           15,  TARGET_OPCODE(PPCISD::VMADDFP),
5f42f863
             OPC_RecordChild0,
             OPC_RecordChild1,
             OPC_RecordChild2,
             OPC_CheckType, MVT::v4f32,
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::VMADDFP), 0,
                 1, MVT::v4f32, 3, 0, 1, 2, 
95937a6a
           15,  TARGET_OPCODE(PPCISD::VNMSUBFP),
5f42f863
             OPC_RecordChild0,
             OPC_RecordChild1,
             OPC_RecordChild2,
             OPC_CheckType, MVT::v4f32,
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::VNMSUBFP), 0,
                 1, MVT::v4f32, 3, 0, 1, 2, 
95937a6a
           7,  TARGET_OPCODE(PPCISD::NOP),
5f42f863
             OPC_CaptureFlagInput,
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::NOP), 0|OPFL_FlagInput|OPFL_FlagOutput,
                 0, 0, 
95937a6a
           13,  TARGET_OPCODE(PPCISD::LOAD_TOC),
5f42f863
             OPC_RecordNode,
             OPC_CaptureFlagInput,
             OPC_RecordChild1,
             OPC_CheckChild1Type, MVT::i64,
95937a6a
             OPC_EmitMergeInputChains1_0,
5f42f863
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::LDinto_toc), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput,
                 0, 1, 1, 
95937a6a
           9,  TARGET_OPCODE(PPCISD::TOC_RESTORE),
5f42f863
             OPC_RecordNode,
             OPC_CaptureFlagInput,
95937a6a
             OPC_EmitMergeInputChains1_0,
5f42f863
             OPC_MorphNodeTo, TARGET_OPCODE(PPC::LDtoc_restore), 0|OPFL_Chain|OPFL_FlagInput|OPFL_FlagOutput,
                 0, 0, 
           0, 
     0
95937a6a
   }; // Total Array size is 10997 bytes
5f42f863
 
   #undef TARGET_OPCODE
   return SelectCodeCommon(N, MatcherTable,sizeof(MatcherTable));
 }
 
 bool CheckPatternPredicate(unsigned PredNo) const {
   switch (PredNo) {
   default: assert(0 && "Invalid predicate in table?");
   case 0: return (!NoExcessFPPrecision);
   case 1: return (!PPCSubTarget.isPPC64());
   case 2: return (PPCSubTarget.isPPC64());
   }
 }
 
 bool CheckNodePredicate(SDNode *Node, unsigned PredNo) const {
   switch (PredNo) {
   default: assert(0 && "Invalid predicate in table?");
   case 0: { // Predicate_immSExt16
     ConstantSDNode*N = cast<ConstantSDNode>(Node);
f8058910
 
5f42f863
   // immSExt16 predicate - True if the immediate fits in a 16-bit sign extended
   // field.  Used by instructions like 'addi'.
   if (N->getValueType(0) == MVT::i32)
     return (int32_t)N->getZExtValue() == (short)N->getZExtValue();
   else
     return (int64_t)N->getZExtValue() == (short)N->getZExtValue();
f8058910
 
   }
5f42f863
   case 1: { // Predicate_imm16ShiftedSExt
     ConstantSDNode*N = cast<ConstantSDNode>(Node);
f8058910
 
5f42f863
   // imm16ShiftedSExt predicate - True if only bits in the top 16-bits of the
   // immediate are set.  Used by instructions like 'addis'.  Identical to 
   // imm16ShiftedZExt in 32-bit mode.
   if (N->getZExtValue() & 0xFFFF) return false;
   if (N->getValueType(0) == MVT::i32)
     return true;
   // For 64-bit, make sure it is sext right.
   return N->getZExtValue() == (uint64_t)(int)N->getZExtValue();
f8058910
 
   }
5f42f863
   case 2: { // Predicate_unindexedload
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<LoadSDNode>(N)->getAddressingMode() == ISD::UNINDEXED;
f8058910
 
   }
5f42f863
   case 3: { // Predicate_zextload
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<LoadSDNode>(N)->getExtensionType() == ISD::ZEXTLOAD;
f8058910
 
   }
5f42f863
   case 4: { // Predicate_zextloadi8
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i8;
f8058910
 
   }
5f42f863
   case 5: { // Predicate_sextload
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<LoadSDNode>(N)->getExtensionType() == ISD::SEXTLOAD;
f8058910
 
   }
5f42f863
   case 6: { // Predicate_sextloadi16
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i16;
f8058910
 
   }
5f42f863
   case 7: { // Predicate_zextloadi16
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i16;
f8058910
 
   }
5f42f863
   case 8: { // Predicate_load
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<LoadSDNode>(N)->getExtensionType() == ISD::NON_EXTLOAD;
f8058910
 
   }
5f42f863
   case 9: { // Predicate_zextloadi1
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i1;
f8058910
 
   }
5f42f863
   case 10: { // Predicate_extload
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<LoadSDNode>(N)->getExtensionType() == ISD::EXTLOAD;
f8058910
 
   }
5f42f863
   case 11: { // Predicate_extloadi1
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i1;
f8058910
 
   }
5f42f863
   case 12: { // Predicate_extloadi8
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i8;
f8058910
 
   }
5f42f863
   case 13: { // Predicate_extloadi16
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i16;
f8058910
 
   }
5f42f863
   case 14: { // Predicate_sextloadi32
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i32;
f8058910
 
   }
5f42f863
   case 15: { // Predicate_zextloadi32
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i32;
f8058910
 
   }
5f42f863
   case 16: { // Predicate_extloadi32
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<LoadSDNode>(N)->getMemoryVT() == MVT::i32;
f8058910
 
   }
5f42f863
   case 17: { // Predicate_extloadf32
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<LoadSDNode>(N)->getMemoryVT() == MVT::f32;
f8058910
 
   }
5f42f863
   case 18: { // Predicate_unindexedstore
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<StoreSDNode>(N)->getAddressingMode() == ISD::UNINDEXED;
f8058910
 
   }
5f42f863
   case 19: { // Predicate_truncstore
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<StoreSDNode>(N)->isTruncatingStore();
f8058910
 
   }
5f42f863
   case 20: { // Predicate_truncstorei8
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<StoreSDNode>(N)->getMemoryVT() == MVT::i8;
f8058910
 
   }
5f42f863
   case 21: { // Predicate_truncstorei16
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<StoreSDNode>(N)->getMemoryVT() == MVT::i16;
f8058910
 
   }
5f42f863
   case 22: { // Predicate_store
     SDNode *N = Node;
f8058910
 
5f42f863
   return !cast<StoreSDNode>(N)->isTruncatingStore();
f8058910
 
   }
5d2a1c48
   case 23: { // Predicate_itruncstore
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<StoreSDNode>(N)->isTruncatingStore();
f8058910
 
   }
5d2a1c48
   case 24: { // Predicate_pre_truncst
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   ISD::MemIndexedMode AM = cast<StoreSDNode>(N)->getAddressingMode();
   return AM == ISD::PRE_INC || AM == ISD::PRE_DEC;
f8058910
 
   }
5d2a1c48
   case 25: { // Predicate_pre_truncsti8
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<StoreSDNode>(N)->getMemoryVT() == MVT::i8;
f8058910
 
   }
5d2a1c48
   case 26: { // Predicate_pre_truncsti16
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<StoreSDNode>(N)->getMemoryVT() == MVT::i16;
f8058910
 
   }
5d2a1c48
   case 27: { // Predicate_istore
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return !cast<StoreSDNode>(N)->isTruncatingStore();
f8058910
 
   }
5d2a1c48
   case 28: { // Predicate_pre_store
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   ISD::MemIndexedMode AM = cast<StoreSDNode>(N)->getAddressingMode();
   return AM == ISD::PRE_INC || AM == ISD::PRE_DEC;
f8058910
 
   }
5d2a1c48
   case 29: { // Predicate_truncstorei32
     SDNode *N = Node;
 
   return cast<StoreSDNode>(N)->getMemoryVT() == MVT::i32;
 
   }
95937a6a
   case 30: { // Predicate_atomic_load_add_8
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
   
f8058910
   }
95937a6a
   case 31: { // Predicate_atomic_load_add_16
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
   
f8058910
   }
95937a6a
   case 32: { // Predicate_atomic_load_add_32
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
   
f8058910
   }
95937a6a
   case 33: { // Predicate_atomic_load_add_64
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
   
f8058910
   }
95937a6a
   case 34: { // Predicate_atomic_load_sub_8
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
   
f8058910
   }
95937a6a
   case 35: { // Predicate_atomic_load_sub_16
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
   
f8058910
   }
95937a6a
   case 36: { // Predicate_atomic_load_sub_32
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
   
f8058910
   }
95937a6a
   case 37: { // Predicate_atomic_load_sub_64
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
   
f8058910
   }
95937a6a
   case 38: { // Predicate_atomic_load_and_8
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
   
f8058910
   }
95937a6a
   case 39: { // Predicate_atomic_load_and_16
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
   
f8058910
   }
95937a6a
   case 40: { // Predicate_atomic_load_and_32
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
   
f8058910
   }
95937a6a
   case 41: { // Predicate_atomic_load_and_64
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
   
f8058910
   }
95937a6a
   case 42: { // Predicate_atomic_load_or_8
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
   
f8058910
   }
95937a6a
   case 43: { // Predicate_atomic_load_or_16
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
   
f8058910
   }
95937a6a
   case 44: { // Predicate_atomic_load_or_32
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
   
f8058910
   }
95937a6a
   case 45: { // Predicate_atomic_load_or_64
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
   
f8058910
   }
95937a6a
   case 46: { // Predicate_atomic_load_xor_8
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
   
f8058910
   }
95937a6a
   case 47: { // Predicate_atomic_load_xor_16
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
   
f8058910
   }
95937a6a
   case 48: { // Predicate_atomic_load_xor_32
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
   
f8058910
   }
95937a6a
   case 49: { // Predicate_atomic_load_xor_64
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
   
f8058910
   }
95937a6a
   case 50: { // Predicate_atomic_load_nand_8
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
   
f8058910
   }
95937a6a
   case 51: { // Predicate_atomic_load_nand_16
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
   
f8058910
   }
95937a6a
   case 52: { // Predicate_atomic_load_nand_32
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
   
f8058910
   }
95937a6a
   case 53: { // Predicate_atomic_load_nand_64
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
   
f8058910
   }
95937a6a
   case 54: { // Predicate_atomic_cmp_swap_8
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
f8058910
 
   }
95937a6a
   case 55: { // Predicate_atomic_cmp_swap_16
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
f8058910
 
   }
95937a6a
   case 56: { // Predicate_atomic_cmp_swap_32
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
f8058910
 
   }
95937a6a
   case 57: { // Predicate_atomic_cmp_swap_64
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
f8058910
 
   }
95937a6a
   case 58: { // Predicate_atomic_swap_8
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i8;
   
f8058910
   }
95937a6a
   case 59: { // Predicate_atomic_swap_16
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i16;
   
f8058910
   }
95937a6a
   case 60: { // Predicate_atomic_swap_32
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i32;
   
f8058910
   }
95937a6a
   case 61: { // Predicate_atomic_swap_64
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
     return cast<AtomicSDNode>(N)->getMemoryVT() == MVT::i64;
   
f8058910
   }
95937a6a
   case 62: { // Predicate_immZExt16
5f42f863
     ConstantSDNode*N = cast<ConstantSDNode>(Node);
f8058910
 
5f42f863
   // immZExt16 predicate - True if the immediate fits in a 16-bit zero extended
   // field.  Used by instructions like 'ori'.
   return (uint64_t)N->getZExtValue() == (unsigned short)N->getZExtValue();
f8058910
 
   }
95937a6a
   case 63: { // Predicate_imm16ShiftedZExt
5f42f863
     ConstantSDNode*N = cast<ConstantSDNode>(Node);
f8058910
 
5f42f863
   // imm16ShiftedZExt predicate - True if only bits in the top 16-bits of the
   // immediate are set.  Used by instructions like 'xoris'.
   return (N->getZExtValue() & ~uint64_t(0xFFFF0000)) == 0;
f8058910
 
   }
95937a6a
   case 64: { // Predicate_immAllOnesV
     SDNode *N = Node;
 
   return ISD::isBuildVectorAllOnes(N);
 
   }
   case 65: { // Predicate_maskimm32
5f42f863
     ConstantSDNode*N = cast<ConstantSDNode>(Node);
f8058910
 
5f42f863
   // maskImm predicate - True if immediate is a run of ones.
   unsigned mb, me;
   if (N->getValueType(0) == MVT::i32)
     return isRunOfOnes((unsigned)N->getZExtValue(), mb, me);
   else
     return false;
f8058910
 
   }
95937a6a
   case 66: { // Predicate_V_immneg0
     SDNode *N = Node;
 
   return PPC::isAllNegativeZeroVector(N);
 
   }
   case 67: { // Predicate_vspltb_shuffle
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return PPC::isSplatShuffleMask(cast<ShuffleVectorSDNode>(N), 1);
f8058910
 
   }
95937a6a
   case 68: { // Predicate_vsplth_shuffle
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return PPC::isSplatShuffleMask(cast<ShuffleVectorSDNode>(N), 2);
f8058910
 
   }
95937a6a
   case 69: { // Predicate_vspltw_shuffle
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return PPC::isSplatShuffleMask(cast<ShuffleVectorSDNode>(N), 4);
f8058910
 
   }
95937a6a
   case 70: { // Predicate_vsldoi_unary_shuffle
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return PPC::isVSLDOIShuffleMask(N, true) != -1;
f8058910
 
   }
95937a6a
   case 71: { // Predicate_vpkuwum_unary_shuffle
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return PPC::isVPKUWUMShuffleMask(cast<ShuffleVectorSDNode>(N), true);
f8058910
 
   }
95937a6a
   case 72: { // Predicate_vpkuhum_unary_shuffle
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return PPC::isVPKUHUMShuffleMask(cast<ShuffleVectorSDNode>(N), true);
f8058910
 
   }
95937a6a
   case 73: { // Predicate_vmrglb_unary_shuffle
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return PPC::isVMRGLShuffleMask(cast<ShuffleVectorSDNode>(N), 1, true);
f8058910
 
   }
95937a6a
   case 74: { // Predicate_vmrglh_unary_shuffle
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return PPC::isVMRGLShuffleMask(cast<ShuffleVectorSDNode>(N), 2, true);
f8058910
 
   }
95937a6a
   case 75: { // Predicate_vmrglw_unary_shuffle
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return PPC::isVMRGLShuffleMask(cast<ShuffleVectorSDNode>(N), 4, true);
f8058910
 
   }
95937a6a
   case 76: { // Predicate_vmrghb_unary_shuffle
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return PPC::isVMRGHShuffleMask(cast<ShuffleVectorSDNode>(N), 1, true);
f8058910
 
   }
95937a6a
   case 77: { // Predicate_vmrghh_unary_shuffle
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return PPC::isVMRGHShuffleMask(cast<ShuffleVectorSDNode>(N), 2, true);
f8058910
 
   }
95937a6a
   case 78: { // Predicate_vmrghw_unary_shuffle
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return PPC::isVMRGHShuffleMask(cast<ShuffleVectorSDNode>(N), 4, true);
f8058910
 
   }
95937a6a
   case 79: { // Predicate_vsldoi_shuffle
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return PPC::isVSLDOIShuffleMask(N, false) != -1;
f8058910
 
   }
95937a6a
   case 80: { // Predicate_vmrghb_shuffle
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return PPC::isVMRGHShuffleMask(cast<ShuffleVectorSDNode>(N), 1, false);
f8058910
 
   }
95937a6a
   case 81: { // Predicate_vmrghh_shuffle
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return PPC::isVMRGHShuffleMask(cast<ShuffleVectorSDNode>(N), 2, false);
f8058910
 
   }
95937a6a
   case 82: { // Predicate_vmrghw_shuffle
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return PPC::isVMRGHShuffleMask(cast<ShuffleVectorSDNode>(N), 4, false);
f8058910
 
   }
95937a6a
   case 83: { // Predicate_vmrglb_shuffle
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return PPC::isVMRGLShuffleMask(cast<ShuffleVectorSDNode>(N), 1, false);
f8058910
 
   }
95937a6a
   case 84: { // Predicate_vmrglh_shuffle
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return PPC::isVMRGLShuffleMask(cast<ShuffleVectorSDNode>(N), 2, false);
f8058910
 
   }
95937a6a
   case 85: { // Predicate_vmrglw_shuffle
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return PPC::isVMRGLShuffleMask(cast<ShuffleVectorSDNode>(N), 4, false);
f8058910
 
973f086a
   }
95937a6a
   case 86: { // Predicate_vpkuhum_shuffle
5f42f863
     SDNode *N = Node;
973f086a
 
5f42f863
   return PPC::isVPKUHUMShuffleMask(cast<ShuffleVectorSDNode>(N), false);
973f086a
 
   }
95937a6a
   case 87: { // Predicate_vpkuwum_shuffle
5f42f863
     SDNode *N = Node;
973f086a
 
5f42f863
   return PPC::isVPKUWUMShuffleMask(cast<ShuffleVectorSDNode>(N), false);
f8058910
 
   }
95937a6a
   case 88: { // Predicate_vecspltisb
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return PPC::get_VSPLTI_elt(N, 1, *CurDAG).getNode() != 0;
f8058910
 
   }
95937a6a
   case 89: { // Predicate_vecspltish
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return PPC::get_VSPLTI_elt(N, 2, *CurDAG).getNode() != 0;
f8058910
 
   }
95937a6a
   case 90: { // Predicate_vecspltisw
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return PPC::get_VSPLTI_elt(N, 4, *CurDAG).getNode() != 0;
f8058910
 
   }
95937a6a
   case 91: { // Predicate_immAllZerosV
5f42f863
     SDNode *N = Node;
f8058910
 
5f42f863
   return ISD::isBuildVectorAllZeros(N);
f8058910
 
   }
   }
 }
 
5f42f863
 bool CheckComplexPattern(SDNode *Root, SDValue N,
       unsigned PatternNo, SmallVectorImpl<SDValue> &Result) {
95937a6a
   unsigned NextRes = Result.size();
5f42f863
   switch (PatternNo) {
   default: assert(0 && "Invalid pattern # in table?");
   case 0:
95937a6a
     Result.resize(NextRes+2);
     return SelectAddrIdxOnly(Root, N, Result[NextRes+0], Result[NextRes+1]);
5f42f863
   case 1:
95937a6a
     Result.resize(NextRes+2);
     return SelectAddrImm(Root, N, Result[NextRes+0], Result[NextRes+1]);
5f42f863
   case 2:
95937a6a
     Result.resize(NextRes+2);
     return SelectAddrIdx(Root, N, Result[NextRes+0], Result[NextRes+1]);
5f42f863
   case 3:
95937a6a
     Result.resize(NextRes+2);
     return SelectAddrImmShift(Root, N, Result[NextRes+0], Result[NextRes+1]);
5f42f863
   case 4:
95937a6a
     Result.resize(NextRes+1);
     return SelectAddrImmOffs(Root, N, Result[NextRes+0]);
f8058910
   }
 }
 
5f42f863
 SDValue RunSDNodeXForm(SDValue V, unsigned XFormNo) {
   switch (XFormNo) {
   default: assert(0 && "Invalid xform # in table?");
   case 0: {  
     ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
f8058910
 
5f42f863
   // Transformation function: shift the immediate value down into the low bits.
   return getI32Imm((unsigned)N->getZExtValue() >> 16);
f8058910
 
   }
5f42f863
   case 1: {  
     ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
f8058910
 
5f42f863
   // Transformation function: get the low 16 bits.
   return getI32Imm((unsigned short)N->getZExtValue());
f8058910
 
   }
5f42f863
   case 2: {  
     ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
f8058910
 
5f42f863
   // Transformation function: shift the immediate value down into the low bits.
   signed int Val = N->getZExtValue();
   return getI32Imm((Val - (signed short)Val) >> 16);
f8058910
 
   }
5f42f863
   case 3: {  
     ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
f8058910
 
5f42f863
   // Transformation function: get the start bit of a mask
   unsigned mb = 0, me;
   (void)isRunOfOnes((unsigned)N->getZExtValue(), mb, me);
   return getI32Imm(mb);
f8058910
 
   }
5f42f863
   case 4: {  
     ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
f8058910
 
5f42f863
   // Transformation function: get the end bit of a mask
   unsigned mb, me = 0;
   (void)isRunOfOnes((unsigned)N->getZExtValue(), mb, me);
   return getI32Imm(me);
f8058910
 
   }
5f42f863
   case 5: {  
95937a6a
     ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
f8058910
 
95937a6a
   // Transformation function: 31 - imm
   return getI32Imm(31 - N->getZExtValue());
f8058910
 
   }
5f42f863
   case 6: {  
95937a6a
     ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
f8058910
 
95937a6a
   // Transformation function: 63 - imm
   return getI32Imm(63 - N->getZExtValue());
f8058910
 
   }
5f42f863
   case 7: {  
95937a6a
     ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
f8058910
 
95937a6a
   // Transformation function: 32 - imm
   return N->getZExtValue() ? getI32Imm(32 - N->getZExtValue()) : getI32Imm(0);
f8058910
 
   }
5f42f863
   case 8: {  
95937a6a
     ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
f8058910
 
95937a6a
   // Transformation function: 64 - imm
   return N->getZExtValue() ? getI32Imm(64 - N->getZExtValue()) : getI32Imm(0);
f8058910
 
   }
5f42f863
   case 9: {  
     SDNode *N = V.getNode();
f8058910
 
95937a6a
   return getI32Imm(PPC::getVSPLTImmediate(N, 1));
f8058910
 
   }
5f42f863
   case 10: {  
95937a6a
     SDNode *N = V.getNode();
f8058910
 
95937a6a
   return getI32Imm(PPC::getVSPLTImmediate(N, 2));
f8058910
 
   }
5f42f863
   case 11: {  
95937a6a
     SDNode *N = V.getNode();
f8058910
 
95937a6a
   return getI32Imm(PPC::getVSPLTImmediate(N, 4));
f8058910
 
   }
5f42f863
   case 12: {  
95937a6a
     SDNode *N = V.getNode();
f8058910
 
95937a6a
   return getI32Imm(PPC::isVSLDOIShuffleMask(N, true));
f8058910
 
   }
5f42f863
   case 13: {  
95937a6a
     SDNode *N = V.getNode();
f8058910
 
95937a6a
   return getI32Imm(PPC::isVSLDOIShuffleMask(N, false));
f8058910
 
   }
5f42f863
   case 14: {  
     SDNode *N = V.getNode();
f8058910
 
5f42f863
   return PPC::get_VSPLTI_elt(N, 1, *CurDAG);
f8058910
 
   }
5f42f863
   case 15: {  
     SDNode *N = V.getNode();
f8058910
 
5f42f863
   return PPC::get_VSPLTI_elt(N, 2, *CurDAG);
f8058910
 
   }
5f42f863
   case 16: {  
     SDNode *N = V.getNode();
f8058910
 
5f42f863
   return PPC::get_VSPLTI_elt(N, 4, *CurDAG);
f8058910
 
   }
   }
 }