Avoid generating ISD::SELECT for vector operands to SIGN_EXTEND
authorRichard Relph <Richard.Relph@amd.com>
Tue, 12 Mar 2013 18:17:18 +0000 (18:17 +0000)
committerRichard Relph <Richard.Relph@amd.com>
Tue, 12 Mar 2013 18:17:18 +0000 (18:17 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176881 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/DAGCombiner.cpp

index 716fb93b29ba3412f838a681b0ebd8cdb6dfe687..61603e18f567f98bacd0fa35ef296ac776fb04db 100644 (file)
@@ -4496,8 +4496,8 @@ SDValue DAGCombiner::visitSIGN_EXTEND(SDNode *N) {
                        NegOne, DAG.getConstant(0, VT),
                        cast<CondCodeSDNode>(N0.getOperand(2))->get(), true);
     if (SCC.getNode()) return SCC;
-    if (!LegalOperations ||
-        TLI.isOperationLegal(ISD::SETCC, TLI.getSetCCResultType(VT)))
+    if (!VT.isVector() && (!LegalOperations ||
+        TLI.isOperationLegal(ISD::SETCC, TLI.getSetCCResultType(VT))))
       return DAG.getNode(ISD::SELECT, N->getDebugLoc(), VT,
                          DAG.getSetCC(N->getDebugLoc(),
                                       TLI.getSetCCResultType(VT),