SelectionDAG: Allow promotion of SELECT nodes from float to int types
authorTom Stellard <thomas.stellard@amd.com>
Mon, 24 Mar 2014 16:07:28 +0000 (16:07 +0000)
committerTom Stellard <thomas.stellard@amd.com>
Mon, 24 Mar 2014 16:07:28 +0000 (16:07 +0000)
And vice-versa, as long as the types are the same width.

There are a few R600 tests that will cover this.

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

lib/CodeGen/SelectionDAG/LegalizeDAG.cpp

index 6297774484f4739e41b222747453f3b813b60738..74c01cae4371e343ad858caa88e9cc2ae30e8149 100644 (file)
@@ -3990,7 +3990,8 @@ void SelectionDAGLegalize::PromoteNode(SDNode *Node) {
   }
   case ISD::SELECT: {
     unsigned ExtOp, TruncOp;
-    if (Node->getValueType(0).isVector()) {
+    if (Node->getValueType(0).isVector() ||
+        Node->getValueType(0).getSizeInBits() == NVT.getSizeInBits()) {
       ExtOp   = ISD::BITCAST;
       TruncOp = ISD::BITCAST;
     } else if (Node->getValueType(0).isInteger()) {