summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-05-11 18:35:21 +0000
committerChris Lattner <sabre@nondot.org>2005-05-11 18:35:21 +0000
commit56add056719d4c305371ca6954622f3357471be1 (patch)
tree5c0d46546c01b37bd0eb7d78dd6351357d3be84e /llvm/lib/CodeGen/SelectionDAG
parent0409e1e6d5d1074c18372beaa429250d46fff3c7 (diff)
downloadbcm5719-llvm-56add056719d4c305371ca6954622f3357471be1.tar.gz
bcm5719-llvm-56add056719d4c305371ca6954622f3357471be1.zip
Make sure to legalize generated ctpop nodes, convert tabs to spaces
llvm-svn: 21868
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG')
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp36
1 files changed, 18 insertions, 18 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
index 19285845de8..a19e6119a7c 100644
--- a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
@@ -1134,15 +1134,15 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) {
}
case ISD::CTLZ: {
/* for now, we do this:
- x = x | (x >> 1);
- x = x | (x >> 2);
- ...
- x = x | (x >>16);
- x = x | (x >>32); // for 64-bit input
- return popcount(~x);
+ x = x | (x >> 1);
+ x = x | (x >> 2);
+ ...
+ x = x | (x >>16);
+ x = x | (x >>32); // for 64-bit input
+ return popcount(~x);
- but see also: http://www.hackersdelight.org/HDcode/nlz.cc */
- MVT::ValueType VT = Tmp1.getValueType();
+ but see also: http://www.hackersdelight.org/HDcode/nlz.cc */
+ MVT::ValueType VT = Tmp1.getValueType();
MVT::ValueType ShVT = TLI.getShiftAmountTy();
unsigned len = getSizeInBits(VT);
for (unsigned i = 0; (1U << i) <= (len / 2); ++i) {
@@ -1151,19 +1151,19 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) {
DAG.getNode(ISD::SRL, VT, Tmp1, Tmp3));
}
Tmp3 = DAG.getNode(ISD::XOR, VT, Tmp1, DAG.getConstant(~0ULL, VT));
- Result = DAG.getNode(ISD::CTPOP, VT, Tmp3);
+ Result = LegalizeOp(DAG.getNode(ISD::CTPOP, VT, Tmp3));
break;
}
case ISD::CTTZ: {
- // for now, we use: { return popcount(~x & (x - 1)); }
- // but see also http://www.hackersdelight.org/HDcode/ntz.cc )
- MVT::ValueType VT = Tmp1.getValueType();
- Tmp2 = DAG.getConstant(~0ULL, VT);
- Tmp3 = DAG.getNode(ISD::AND, VT,
- DAG.getNode(ISD::XOR, VT, Tmp1, Tmp2),
- DAG.getNode(ISD::SUB, VT, Tmp1,
- DAG.getConstant(1, VT)));
- Result = DAG.getNode(ISD::CTPOP, VT, Tmp3);
+ // for now, we use: { return popcount(~x & (x - 1)); }
+ // but see also http://www.hackersdelight.org/HDcode/ntz.cc
+ MVT::ValueType VT = Tmp1.getValueType();
+ Tmp2 = DAG.getConstant(~0ULL, VT);
+ Tmp3 = DAG.getNode(ISD::AND, VT,
+ DAG.getNode(ISD::XOR, VT, Tmp1, Tmp2),
+ DAG.getNode(ISD::SUB, VT, Tmp1,
+ DAG.getConstant(1, VT)));
+ Result = LegalizeOp(DAG.getNode(ISD::CTPOP, VT, Tmp3));
break;
}
default:
OpenPOWER on IntegriCloud