summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorMon P Wang <wangmp@apple.com>2008-12-17 08:49:47 +0000
committerMon P Wang <wangmp@apple.com>2008-12-17 08:49:47 +0000
commit015a7f57b25a372b9799bb8946f9463b0e65c4e8 (patch)
tree9101a115e097656d61d9abfaf584412fa6712b4e /llvm/lib/CodeGen
parent3d72297909f81186547d1f2a218ae121b7572f32 (diff)
downloadbcm5719-llvm-015a7f57b25a372b9799bb8946f9463b0e65c4e8.tar.gz
bcm5719-llvm-015a7f57b25a372b9799bb8946f9463b0e65c4e8.zip
Fix expansion of vsetcc to set the high bit for true instead of 1.
llvm-svn: 61129
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
index 3a99a256ccc..18ba9125d12 100644
--- a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
@@ -3144,10 +3144,12 @@ SDValue SelectionDAGLegalize::LegalizeOp(SDValue Op) {
SDValue In1 = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, TmpEltVT,
Tmp1, DAG.getIntPtrConstant(i));
Ops[i] = DAG.getNode(ISD::SETCC, TLI.getSetCCResultType(In1), In1,
- DAG.getNode(ISD::EXTRACT_VECTOR_ELT, TmpEltVT,
- Tmp2, DAG.getIntPtrConstant(i)),
- CC);
- Ops[i] = DAG.getNode(ISD::SIGN_EXTEND, EltVT, Ops[i]);
+ DAG.getNode(ISD::EXTRACT_VECTOR_ELT, TmpEltVT,
+ Tmp2, DAG.getIntPtrConstant(i)),
+ CC);
+ Ops[i] = DAG.getNode(ISD::SELECT, EltVT, Ops[i],
+ DAG.getConstant(EltVT.getIntegerVTBitMask(),EltVT),
+ DAG.getConstant(0, EltVT));
}
Result = DAG.getNode(ISD::BUILD_VECTOR, VT, &Ops[0], NumElems);
break;
OpenPOWER on IntegriCloud