Make sure to return the result in the right type.
authorChris Lattner <sabre@nondot.org>
Thu, 6 Apr 2006 23:12:19 +0000 (23:12 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 6 Apr 2006 23:12:19 +0000 (23:12 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27469 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/PPCISelLowering.cpp

index 686f2fa06965a37c661a0d4e5f54c323d2af3515..7a92b961ee0bea059f0b66f5c72232bb3b4932a9 100644 (file)
@@ -962,10 +962,12 @@ SDOperand PPCTargetLowering::LowerOperation(SDOperand Op, SelectionDAG &DAG) {
     assert(CompareOpc>0 && "We only lower altivec predicate compares so far!");
 
     // If this is a non-dot comparison, make the VCMP node.
-    if (!isDot)
-      return DAG.getNode(PPCISD::VCMP, Op.getOperand(2).getValueType(),
-                         Op.getOperand(1), Op.getOperand(2),
-                         DAG.getConstant(CompareOpc, MVT::i32));
+    if (!isDot) {
+      SDOperand Tmp = DAG.getNode(PPCISD::VCMP, Op.getOperand(2).getValueType(),
+                                  Op.getOperand(1), Op.getOperand(2),
+                                  DAG.getConstant(CompareOpc, MVT::i32));
+      return DAG.getNode(ISD::BIT_CONVERT, Op.getValueType(), Tmp);
+    }
     
     // Create the PPCISD altivec 'dot' comparison node.
     std::vector<SDOperand> Ops;