summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
diff options
context:
space:
mode:
authorAndrew Lenharth <andrewl@lenharth.org>2006-01-23 20:59:12 +0000
committerAndrew Lenharth <andrewl@lenharth.org>2006-01-23 20:59:12 +0000
commitc28563874ce2eb347d19beedcaf4a2d58bbc3442 (patch)
tree81e7f1c342ffaf1bf8c9c0fd16f755690a96ed1a /llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
parentb8566fa10a4b6b9cf8ad7dbf7bf03734412bee3b (diff)
downloadbcm5719-llvm-c28563874ce2eb347d19beedcaf4a2d58bbc3442.tar.gz
bcm5719-llvm-c28563874ce2eb347d19beedcaf4a2d58bbc3442.zip
another selectto
llvm-svn: 25548
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp')
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
index 48d1d5c806d..3165fc1d651 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
@@ -1649,6 +1649,29 @@ SDOperand SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
return SDOperand(N, 0);
}
+SDOperand SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
+ MVT::ValueType VT, SDOperand Op1,
+ SDOperand Op2, SDOperand Op3,SDOperand Op4,
+ SDOperand Op5, SDOperand Op6,
+ SDOperand Op7) {
+ // If an identical node already exists, use it.
+ std::vector<SDOperand> OpList;
+ OpList.push_back(Op1); OpList.push_back(Op2); OpList.push_back(Op3);
+ OpList.push_back(Op4); OpList.push_back(Op5); OpList.push_back(Op6);
+ OpList.push_back(Op7);
+ SDNode *&ON = OneResultNodes[std::make_pair(ISD::BUILTIN_OP_END+TargetOpc,
+ std::make_pair(VT, OpList))];
+ if (ON) return SDOperand(ON, 0);
+
+ RemoveNodeFromCSEMaps(N);
+ N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
+ N->setValueTypes(VT);
+ N->setOperands(Op1, Op2, Op3, Op4, Op5, Op6, Op7);
+
+ ON = N; // Memoize the new node.
+ return SDOperand(N, 0);
+}
+
SDOperand SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
MVT::ValueType VT1, MVT::ValueType VT2,
SDOperand Op1, SDOperand Op2) {
OpenPOWER on IntegriCloud