Eliminate SelectNodeTo() and getTargetNode() variants which take more than
authorEvan Cheng <evan.cheng@apple.com>
Sun, 27 Aug 2006 08:08:54 +0000 (08:08 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Sun, 27 Aug 2006 08:08:54 +0000 (08:08 +0000)
3 SDOperand operands. They are replaced by versions which take an array
of SDOperand and the number of operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29905 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/SelectionDAG.h
include/llvm/CodeGen/SelectionDAGNodes.h
lib/CodeGen/SelectionDAG/SelectionDAG.cpp

index f4ea64d46db637376f5935fc5f76e6adb9f78c03..3b6d1a15ab679b8f2e75554e54a88dda2ef530f7 100644 (file)
@@ -311,34 +311,14 @@ public:
                        SDOperand Op1, SDOperand Op2);
   SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT::ValueType VT, 
                        SDOperand Op1, SDOperand Op2, SDOperand Op3);
-  SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT::ValueType VT, 
-                       SDOperand Op1, SDOperand Op2, SDOperand Op3, 
-                       SDOperand Op4);
-  SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT::ValueType VT, 
-                       SDOperand Op1, SDOperand Op2, SDOperand Op3,
-                       SDOperand Op4, SDOperand Op5);
-  SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT::ValueType VT, 
-                       SDOperand Op1, SDOperand Op2, SDOperand Op3, 
-                       SDOperand Op4, SDOperand Op5, SDOperand Op6);
-  SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT::ValueType VT, 
-                       SDOperand Op1, SDOperand Op2, SDOperand Op3,
-                       SDOperand Op4, SDOperand Op5, SDOperand Op6,
-                       SDOperand Op7);
-  SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT::ValueType VT, 
-                       SDOperand Op1, SDOperand Op2, SDOperand Op3,
-                       SDOperand Op4, SDOperand Op5, SDOperand Op6,
-                       SDOperand Op7, SDOperand Op8);
+  SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT::ValueType VT,
+                        const SDOperand *Ops, unsigned NumOps);
   SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT::ValueType VT1, 
                        MVT::ValueType VT2, SDOperand Op1, SDOperand Op2);
   SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT::ValueType VT1,
                        MVT::ValueType VT2, SDOperand Op1, SDOperand Op2,
                        SDOperand Op3);
-  SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT::ValueType VT1,
-                       MVT::ValueType VT2, SDOperand Op1, SDOperand Op2,
-                       SDOperand Op3, SDOperand Op4);
-  SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT::ValueType VT1,
-                       MVT::ValueType VT2, SDOperand Op1, SDOperand Op2,
-                       SDOperand Op3, SDOperand Op4, SDOperand Op5);
+
 
   /// getTargetNode - These are used for target selectors to create a new node
   /// with specified return type(s), target opcode, and operands.
@@ -353,23 +333,6 @@ public:
                         SDOperand Op1, SDOperand Op2);
   SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT,
                         SDOperand Op1, SDOperand Op2, SDOperand Op3);
-  SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT,
-                        SDOperand Op1, SDOperand Op2, SDOperand Op3,
-                        SDOperand Op4);
-  SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT,
-                        SDOperand Op1, SDOperand Op2, SDOperand Op3,
-                        SDOperand Op4, SDOperand Op5);
-  SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT,
-                        SDOperand Op1, SDOperand Op2, SDOperand Op3,
-                        SDOperand Op4, SDOperand Op5, SDOperand Op6);
-  SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT,
-                        SDOperand Op1, SDOperand Op2, SDOperand Op3,
-                        SDOperand Op4, SDOperand Op5, SDOperand Op6,
-                        SDOperand Op7);
-  SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT,
-                        SDOperand Op1, SDOperand Op2, SDOperand Op3,
-                        SDOperand Op4, SDOperand Op5, SDOperand Op6,
-                        SDOperand Op7, SDOperand Op8);
   SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT,
                         const SDOperand *Ops, unsigned NumOps);
   SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1,
@@ -379,39 +342,14 @@ public:
   SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1,
                         MVT::ValueType VT2, SDOperand Op1, SDOperand Op2,
                         SDOperand Op3);
-  SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1,
-                        MVT::ValueType VT2, SDOperand Op1, SDOperand Op2,
-                        SDOperand Op3, SDOperand Op4);
-  SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1,
-                        MVT::ValueType VT2, SDOperand Op1, SDOperand Op2,
-                        SDOperand Op3, SDOperand Op4, SDOperand Op5);
-  SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1,
-                        MVT::ValueType VT2, SDOperand Op1, SDOperand Op2,
-                        SDOperand Op3, SDOperand Op4, SDOperand Op5,
-                        SDOperand Op6);
-  SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1,
-                        MVT::ValueType VT2, SDOperand Op1, SDOperand Op2,
-                        SDOperand Op3, SDOperand Op4, SDOperand Op5,
-                        SDOperand Op6, SDOperand Op7);
+  SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1, 
+                        MVT::ValueType VT2,
+                        const SDOperand *Ops, unsigned NumOps);
   SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1,
                         MVT::ValueType VT2, MVT::ValueType VT3,
                         SDOperand Op1, SDOperand Op2);
-  SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1,
-                        MVT::ValueType VT2, MVT::ValueType VT3,
-                        SDOperand Op1, SDOperand Op2,
-                        SDOperand Op3, SDOperand Op4, SDOperand Op5);
-  SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1,
-                        MVT::ValueType VT2, MVT::ValueType VT3,
-                        SDOperand Op1, SDOperand Op2,
-                        SDOperand Op3, SDOperand Op4, SDOperand Op5,
-                        SDOperand Op6);
-  SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1,
-                        MVT::ValueType VT2, MVT::ValueType VT3,
-                        SDOperand Op1, SDOperand Op2,
-                        SDOperand Op3, SDOperand Op4, SDOperand Op5,
-                        SDOperand Op6, SDOperand Op7);
   SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1, 
-                        MVT::ValueType VT2,
+                        MVT::ValueType VT2, MVT::ValueType VT3,
                         const SDOperand *Ops, unsigned NumOps);
   
   /// ReplaceAllUsesWith - Modify anything using 'From' to use 'To' instead.
index ad4ae4a3f86a27efaa8d698aace8d4a509a4e0d8..f1cdb633e16ec0b2bbc845fee0b3710b60ddedb3 100644 (file)
@@ -945,80 +945,16 @@ protected:
     Op0.Val->Uses.push_back(this); Op1.Val->Uses.push_back(this);
     Op2.Val->Uses.push_back(this);
   }
-  void setOperands(SDOperand Op0, SDOperand Op1, SDOperand Op2, SDOperand Op3) {
+  void setOperands(const SDOperand *Ops, unsigned NumOps) {
     assert(NumOperands == 0 && "Should not have operands yet!");
-    OperandList = new SDOperand[4];
-    OperandList[0] = Op0;
-    OperandList[1] = Op1;
-    OperandList[2] = Op2;
-    OperandList[3] = Op3;
-    NumOperands = 4;
-    Op0.Val->Uses.push_back(this); Op1.Val->Uses.push_back(this);
-    Op2.Val->Uses.push_back(this); Op3.Val->Uses.push_back(this);
-  }
-  void setOperands(SDOperand Op0, SDOperand Op1, SDOperand Op2, SDOperand Op3,
-                   SDOperand Op4) {
-    assert(NumOperands == 0 && "Should not have operands yet!");
-    OperandList = new SDOperand[5];
-    OperandList[0] = Op0;
-    OperandList[1] = Op1;
-    OperandList[2] = Op2;
-    OperandList[3] = Op3;
-    OperandList[4] = Op4;
-    NumOperands = 5;
-    Op0.Val->Uses.push_back(this); Op1.Val->Uses.push_back(this);
-    Op2.Val->Uses.push_back(this); Op3.Val->Uses.push_back(this);
-    Op4.Val->Uses.push_back(this);
-  }
-  void setOperands(SDOperand Op0, SDOperand Op1, SDOperand Op2, SDOperand Op3,
-                   SDOperand Op4, SDOperand Op5) {
-    assert(NumOperands == 0 && "Should not have operands yet!");
-    OperandList = new SDOperand[6];
-    OperandList[0] = Op0;
-    OperandList[1] = Op1;
-    OperandList[2] = Op2;
-    OperandList[3] = Op3;
-    OperandList[4] = Op4;
-    OperandList[5] = Op5;
-    NumOperands = 6;
-    Op0.Val->Uses.push_back(this); Op1.Val->Uses.push_back(this);
-    Op2.Val->Uses.push_back(this); Op3.Val->Uses.push_back(this);
-    Op4.Val->Uses.push_back(this); Op5.Val->Uses.push_back(this);
-  }
-  void setOperands(SDOperand Op0, SDOperand Op1, SDOperand Op2, SDOperand Op3,
-                   SDOperand Op4, SDOperand Op5, SDOperand Op6) {
-    assert(NumOperands == 0 && "Should not have operands yet!");
-    OperandList = new SDOperand[7];
-    OperandList[0] = Op0;
-    OperandList[1] = Op1;
-    OperandList[2] = Op2;
-    OperandList[3] = Op3;
-    OperandList[4] = Op4;
-    OperandList[5] = Op5;
-    OperandList[6] = Op6;
-    NumOperands = 7;
-    Op0.Val->Uses.push_back(this); Op1.Val->Uses.push_back(this);
-    Op2.Val->Uses.push_back(this); Op3.Val->Uses.push_back(this);
-    Op4.Val->Uses.push_back(this); Op5.Val->Uses.push_back(this);
-    Op6.Val->Uses.push_back(this);
-  }
-  void setOperands(SDOperand Op0, SDOperand Op1, SDOperand Op2, SDOperand Op3,
-                   SDOperand Op4, SDOperand Op5, SDOperand Op6, SDOperand Op7) {
-    assert(NumOperands == 0 && "Should not have operands yet!");
-    OperandList = new SDOperand[8];
-    OperandList[0] = Op0;
-    OperandList[1] = Op1;
-    OperandList[2] = Op2;
-    OperandList[3] = Op3;
-    OperandList[4] = Op4;
-    OperandList[5] = Op5;
-    OperandList[6] = Op6;
-    OperandList[7] = Op7;
-    NumOperands = 8;
-    Op0.Val->Uses.push_back(this); Op1.Val->Uses.push_back(this);
-    Op2.Val->Uses.push_back(this); Op3.Val->Uses.push_back(this);
-    Op4.Val->Uses.push_back(this); Op5.Val->Uses.push_back(this);
-    Op6.Val->Uses.push_back(this); Op7.Val->Uses.push_back(this);
+    NumOperands = NumOps;
+    OperandList = new SDOperand[NumOperands];
+
+    for (unsigned i = 0, e = NumOps; i != e; ++i) {
+      OperandList[i] = Ops[i];
+      SDNode *N = OperandList[i].Val;
+      N->Uses.push_back(this);
+    }
   }
 
   void addUser(SDNode *User) {
index f4055b2de3e904be0855f2f3112d7e63e1afd8c4..cb9ad98550b25ed657ed21242c5e25f13546bb2b 100644 (file)
@@ -1908,121 +1908,13 @@ SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
 }
 
 SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
-                                   MVT::ValueType VT, SDOperand Op1,
-                                   SDOperand Op2, SDOperand Op3,
-                                   SDOperand Op4) {
-  // If an identical node already exists, use it.
-  SDVTList VTs = getVTList(VT);
-  SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs);
-  ID.AddOperand(Op1);
-  ID.AddOperand(Op2);
-  ID.AddOperand(Op3);
-  ID.AddOperand(Op4);
-  void *IP = 0;
-  if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
-    return ON;
-  
-  RemoveNodeFromCSEMaps(N);
-  N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
-  N->setValueTypes(VTs);
-  N->setOperands(Op1, Op2, Op3, Op4);
-
-  CSEMap.InsertNode(N, IP);   // Memoize the new node.
-  return N;
-}
-
-SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
-                                   MVT::ValueType VT, SDOperand Op1,
-                                   SDOperand Op2, SDOperand Op3,
-                                   SDOperand Op4, SDOperand Op5) {
-  SDVTList VTs = getVTList(VT);
-  SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs);
-  ID.AddOperand(Op1);
-  ID.AddOperand(Op2);
-  ID.AddOperand(Op3);
-  ID.AddOperand(Op4);
-  ID.AddOperand(Op5);
-  void *IP = 0;
-  if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
-    return ON;
-                                       
-  RemoveNodeFromCSEMaps(N);
-  N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
-  N->setValueTypes(VTs);
-  N->setOperands(Op1, Op2, Op3, Op4, Op5);
-  
-  CSEMap.InsertNode(N, IP);   // Memoize the new node.
-  return N;
-}
-
-SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
-                                   MVT::ValueType VT, SDOperand Op1,
-                                   SDOperand Op2, SDOperand Op3, SDOperand Op4,
-                                   SDOperand Op5, SDOperand Op6) {
-  SDVTList VTs = getVTList(VT);
-  SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs);
-  ID.AddOperand(Op1);
-  ID.AddOperand(Op2);
-  ID.AddOperand(Op3);
-  ID.AddOperand(Op4);
-  ID.AddOperand(Op5);
-  ID.AddOperand(Op6);
-  void *IP = 0;
-  if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
-    return ON;
-                                       
-  RemoveNodeFromCSEMaps(N);
-  N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
-  N->setValueTypes(VTs);
-  N->setOperands(Op1, Op2, Op3, Op4, Op5, Op6);
-  
-  CSEMap.InsertNode(N, IP);   // Memoize the new node.
-  return N;
-}
-
-SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
-                                   MVT::ValueType VT, SDOperand Op1,
-                                   SDOperand Op2, SDOperand Op3,SDOperand Op4,
-                                   SDOperand Op5, SDOperand Op6,
-                                   SDOperand Op7) {
-  SDVTList VTs = getVTList(VT);
-  // If an identical node already exists, use it.
-  SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs);
-  ID.AddOperand(Op1);
-  ID.AddOperand(Op2);
-  ID.AddOperand(Op3);
-  ID.AddOperand(Op4);
-  ID.AddOperand(Op5);
-  ID.AddOperand(Op6);
-  ID.AddOperand(Op7);
-  void *IP = 0;
-  if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
-    return ON;
-                                       
-  RemoveNodeFromCSEMaps(N);
-  N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
-  N->setValueTypes(VTs);
-  N->setOperands(Op1, Op2, Op3, Op4, Op5, Op6, Op7);
-  
-  CSEMap.InsertNode(N, IP);   // Memoize the new node.
-  return N;
-}
-SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
-                                   MVT::ValueType VT, SDOperand Op1,
-                                   SDOperand Op2, SDOperand Op3,SDOperand Op4,
-                                   SDOperand Op5, SDOperand Op6,
-                                   SDOperand Op7, SDOperand Op8) {
+                                   MVT::ValueType VT, const SDOperand *Ops,
+                                   unsigned NumOps) {
   // If an identical node already exists, use it.
   SDVTList VTs = getVTList(VT);
   SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs);
-  ID.AddOperand(Op1);
-  ID.AddOperand(Op2);
-  ID.AddOperand(Op3);
-  ID.AddOperand(Op4);
-  ID.AddOperand(Op5);
-  ID.AddOperand(Op6);
-  ID.AddOperand(Op7);
-  ID.AddOperand(Op8);
+  for (unsigned i = 0; i != NumOps; ++i)
+    ID.AddOperand(Ops[i]);
   void *IP = 0;
   if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
     return ON;
@@ -2030,7 +1922,7 @@ SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
   RemoveNodeFromCSEMaps(N);
   N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
   N->setValueTypes(VTs);
-  N->setOperands(Op1, Op2, Op3, Op4, Op5, Op6, Op7, Op8);
+  N->setOperands(Ops, NumOps);
   
   CSEMap.InsertNode(N, IP);   // Memoize the new node.
   return N;
@@ -2075,55 +1967,6 @@ SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
   return N;
 }
 
-SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
-                                   MVT::ValueType VT1, MVT::ValueType VT2,
-                                   SDOperand Op1, SDOperand Op2,
-                                   SDOperand Op3, SDOperand Op4) {
-  // If an identical node already exists, use it.
-  SDVTList VTs = getVTList(VT1, VT2);
-  SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs);
-  ID.AddOperand(Op1);
-  ID.AddOperand(Op2);
-  ID.AddOperand(Op3);
-  ID.AddOperand(Op4);
-  void *IP = 0;
-  if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
-    return ON;
-                                       
-  RemoveNodeFromCSEMaps(N);
-  N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
-  N->setValueTypes(VTs);
-  N->setOperands(Op1, Op2, Op3, Op4);
-
-  CSEMap.InsertNode(N, IP);   // Memoize the new node.
-  return N;
-}
-
-SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
-                                   MVT::ValueType VT1, MVT::ValueType VT2,
-                                   SDOperand Op1, SDOperand Op2,
-                                   SDOperand Op3, SDOperand Op4, 
-                                   SDOperand Op5) {
-  // If an identical node already exists, use it.
-  SDVTList VTs = getVTList(VT1, VT2);
-  SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs);
-  ID.AddOperand(Op1);
-  ID.AddOperand(Op2);
-  ID.AddOperand(Op3);
-  ID.AddOperand(Op4);
-  ID.AddOperand(Op5);
-  void *IP = 0;
-  if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
-    return ON;
-                                       
-  RemoveNodeFromCSEMaps(N);
-  N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
-  N->setValueTypes(VTs);
-  N->setOperands(Op1, Op2, Op3, Op4, Op5);
-  
-  CSEMap.InsertNode(N, IP);   // Memoize the new node.
-  return N;
-}
 
 /// getTargetNode - These are used for target selectors to create a new node
 /// with specified return type(s), target opcode, and operands.
@@ -2146,37 +1989,6 @@ SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT,
                                     SDOperand Op1, SDOperand Op2, SDOperand Op3) {
   return getNode(ISD::BUILTIN_OP_END+Opcode, VT, Op1, Op2, Op3).Val;
 }
-SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT,
-                                    SDOperand Op1, SDOperand Op2, SDOperand Op3,
-                                    SDOperand Op4) {
-  return getNode(ISD::BUILTIN_OP_END+Opcode, VT, Op1, Op2, Op3, Op4).Val;
-}
-SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT,
-                                    SDOperand Op1, SDOperand Op2, SDOperand Op3,
-                                    SDOperand Op4, SDOperand Op5) {
-  return getNode(ISD::BUILTIN_OP_END+Opcode, VT, Op1, Op2, Op3, Op4, Op5).Val;
-}
-SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT,
-                                    SDOperand Op1, SDOperand Op2, SDOperand Op3,
-                                    SDOperand Op4, SDOperand Op5,
-                                    SDOperand Op6) {
-  SDOperand Ops[] = { Op1, Op2, Op3, Op4, Op5, Op6 };
-  return getNode(ISD::BUILTIN_OP_END+Opcode, VT, Ops, 6).Val;
-}
-SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT,
-                                    SDOperand Op1, SDOperand Op2, SDOperand Op3,
-                                    SDOperand Op4, SDOperand Op5, SDOperand Op6,
-                                    SDOperand Op7) {
-  SDOperand Ops[] = { Op1, Op2, Op3, Op4, Op5, Op6, Op7 };
-  return getNode(ISD::BUILTIN_OP_END+Opcode, VT, Ops, 7).Val;
-}
-SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT,
-                                    SDOperand Op1, SDOperand Op2, SDOperand Op3,
-                                    SDOperand Op4, SDOperand Op5, SDOperand Op6,
-                                    SDOperand Op7, SDOperand Op8) {
-  SDOperand Ops[] = { Op1, Op2, Op3, Op4, Op5, Op6, Op7, Op8 };
-  return getNode(ISD::BUILTIN_OP_END+Opcode, VT, Ops, 8).Val;
-}
 SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT,
                                     const SDOperand *Ops, unsigned NumOps) {
   return getNode(ISD::BUILTIN_OP_END+Opcode, VT, Ops, NumOps).Val;
@@ -2200,38 +2012,11 @@ SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1,
   SDOperand Ops[] = { Op1, Op2, Op3 };
   return getNode(ISD::BUILTIN_OP_END+Opcode, VTs, 2, Ops, 3).Val;
 }
-SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1,
-                                    MVT::ValueType VT2, SDOperand Op1,
-                                    SDOperand Op2, SDOperand Op3, 
-                                    SDOperand Op4) {
-  const MVT::ValueType *VTs = getNodeValueTypes(VT1, VT2);
-  SDOperand Ops[] = { Op1, Op2, Op3, Op4 };
-  return getNode(ISD::BUILTIN_OP_END+Opcode, VTs, 2, Ops, 4).Val;
-}
-SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1,
-                                    MVT::ValueType VT2, SDOperand Op1,
-                                    SDOperand Op2, SDOperand Op3, SDOperand Op4,
-                                    SDOperand Op5) {
-  const MVT::ValueType *VTs = getNodeValueTypes(VT1, VT2);
-  SDOperand Ops[] = { Op1, Op2, Op3, Op4, Op5 };
-  return getNode(ISD::BUILTIN_OP_END+Opcode, VTs, 2, Ops, 5).Val;
-}
-SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1,
-                                    MVT::ValueType VT2, SDOperand Op1,
-                                    SDOperand Op2, SDOperand Op3, SDOperand Op4,
-                                    SDOperand Op5, SDOperand Op6) {
-  const MVT::ValueType *VTs = getNodeValueTypes(VT1, VT2);
-  SDOperand Ops[] = { Op1, Op2, Op3, Op4, Op5, Op6 };
-  return getNode(ISD::BUILTIN_OP_END+Opcode, VTs, 2, Ops, 6).Val;
-}
-SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1,
-                                    MVT::ValueType VT2, SDOperand Op1,
-                                    SDOperand Op2, SDOperand Op3, SDOperand Op4,
-                                    SDOperand Op5, SDOperand Op6,
-                                    SDOperand Op7) {
+SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1, 
+                                    MVT::ValueType VT2,
+                                    const SDOperand *Ops, unsigned NumOps) {
   const MVT::ValueType *VTs = getNodeValueTypes(VT1, VT2);
-  SDOperand Ops[] = { Op1, Op2, Op3, Op4, Op5, Op6, Op7 };
-  return getNode(ISD::BUILTIN_OP_END+Opcode, VTs, 2, Ops, 7).Val;
+  return getNode(ISD::BUILTIN_OP_END+Opcode, VTs, 2, Ops, NumOps).Val;
 }
 SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1,
                                     MVT::ValueType VT2, MVT::ValueType VT3,
@@ -2240,38 +2025,11 @@ SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1,
   SDOperand Ops[] = { Op1, Op2 };
   return getNode(ISD::BUILTIN_OP_END+Opcode, VTs, 3, Ops, 2).Val;
 }
-SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1,
-                                    MVT::ValueType VT2, MVT::ValueType VT3,
-                                    SDOperand Op1, SDOperand Op2,
-                                    SDOperand Op3, SDOperand Op4,
-                                    SDOperand Op5) {
-  const MVT::ValueType *VTs = getNodeValueTypes(VT1, VT2, VT3);
-  SDOperand Ops[] = { Op1, Op2, Op3, Op4, Op5 };
-  return getNode(ISD::BUILTIN_OP_END+Opcode, VTs, 3, Ops, 5).Val;
-}
-SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1,
-                                    MVT::ValueType VT2, MVT::ValueType VT3,
-                                    SDOperand Op1, SDOperand Op2,
-                                    SDOperand Op3, SDOperand Op4, SDOperand Op5,
-                                    SDOperand Op6) {
-  const MVT::ValueType *VTs = getNodeValueTypes(VT1, VT2, VT3);
-  SDOperand Ops[] = { Op1, Op2, Op3, Op4, Op5, Op6 };
-  return getNode(ISD::BUILTIN_OP_END+Opcode, VTs, 3, Ops, 6).Val;
-}
-SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1,
-                                    MVT::ValueType VT2, MVT::ValueType VT3,
-                                    SDOperand Op1, SDOperand Op2,
-                                    SDOperand Op3, SDOperand Op4, SDOperand Op5,
-                                    SDOperand Op6, SDOperand Op7) {
-  const MVT::ValueType *VTs = getNodeValueTypes(VT1, VT2, VT3);
-  SDOperand Ops[] = { Op1, Op2, Op3, Op4, Op5, Op6, Op7 };
-  return getNode(ISD::BUILTIN_OP_END+Opcode, VTs, 3, Ops, 7).Val;
-}
 SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1, 
-                                    MVT::ValueType VT2,
+                                    MVT::ValueType VT2, MVT::ValueType VT3,
                                     const SDOperand *Ops, unsigned NumOps) {
-  const MVT::ValueType *VTs = getNodeValueTypes(VT1, VT2);
-  return getNode(ISD::BUILTIN_OP_END+Opcode, VTs, 2, Ops, NumOps).Val;
+  const MVT::ValueType *VTs = getNodeValueTypes(VT1, VT2, VT3);
+  return getNode(ISD::BUILTIN_OP_END+Opcode, VTs, 3, Ops, NumOps).Val;
 }
 
 /// ReplaceAllUsesWith - Modify anything using 'From' to use 'To' instead.