Revert r155853
authorManman Ren <mren@apple.com>
Wed, 2 May 2012 15:24:32 +0000 (15:24 +0000)
committerManman Ren <mren@apple.com>
Wed, 2 May 2012 15:24:32 +0000 (15:24 +0000)
The commit is intended to fix rdar://10961709.
But it is the root cause of PR12720.
Revert it for now.

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

lib/Target/X86/X86ISelLowering.cpp
test/CodeGen/X86/select.ll

index 7ab4b26986c307f710c83b927177b74f7e341911..bbe280851c2f7c080f9dd8416bdacbcd7eb0467b 100644 (file)
@@ -8651,22 +8651,6 @@ SDValue X86TargetLowering::LowerSELECT(SDValue Op, SelectionDAG &DAG) const {
       SDValue Y = isAllOnes(Op2) ? Op1 : Op2;
 
       SDValue CmpOp0 = Cmp.getOperand(0);
-      // further optimization for special cases
-      // (select (x != 0), -1, 0) -> neg & sbb
-      // (select (x == 0), 0, -1) -> neg & sbb
-      if (ConstantSDNode *YC = dyn_cast<ConstantSDNode>(Y))
-        if (YC->isNullValue() && 
-            (isAllOnes(Op1) == (CondCode == X86::COND_NE))) {
-          SDVTList VTs = DAG.getVTList(CmpOp0.getValueType(), MVT::i32);
-          SDValue Neg = DAG.getNode(ISD::SUB, DL, VTs, 
-                                    DAG.getConstant(0, CmpOp0.getValueType()), 
-                                    CmpOp0);
-          SDValue Res = DAG.getNode(X86ISD::SETCC_CARRY, DL, Op.getValueType(),
-                                    DAG.getConstant(X86::COND_B, MVT::i8),
-                                    SDValue(Neg.getNode(), 1));
-          return Res;
-        }
-
       Cmp = DAG.getNode(X86ISD::CMP, DL, MVT::i32,
                         CmpOp0, DAG.getConstant(1, CmpOp0.getValueType()));
       Cmp = ConvertCmpIfNecessary(Cmp, DAG);
index 5730f618e4ec2f5eebb602e0b48411dad7da3a81..9adf4f9c050dd566fb193934479155ec709e85e0 100644 (file)
@@ -218,24 +218,3 @@ define i32 @test14(i32 %a, i32 %b) nounwind {
 ; CHECK-NEXT: ret
 }
 
-; rdar://10961709
-define i32 @test15(i32 %x) nounwind {
-entry:
-  %cmp = icmp ne i32 %x, 0
-  %sub = sext i1 %cmp to i32
-  ret i32 %sub
-; CHECK: test15:
-; CHECK: negl
-; CHECK: sbbl
-}
-
-define i32 @test16(i32 %x) nounwind {
-entry:
-  %c = icmp eq i32 %x, 0
-  %d = select i1 %c, i32 0, i32 -1
-  ret i32 %d
-; CHECK: test16:
-; CHECK: negl
-; CHECK: sbbl
-}
-