OSDN Git Service

Do not fold (add (shl x, c1), (shl c2, c1)) -> (shl (add x, c2), c1),
authorChris Lattner <sabre@nondot.org>
Sun, 5 Mar 2006 19:52:57 +0000 (19:52 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 5 Mar 2006 19:52:57 +0000 (19:52 +0000)
we want to canonicalize the other way.

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

lib/CodeGen/SelectionDAG/TargetLowering.cpp

index 27e9b04..7a4d269 100644 (file)
@@ -580,24 +580,6 @@ bool TargetLowering::SimplifyDemandedBits(SDOperand Op, uint64_t DemandedMask,
                                        CountTrailingZeros_64(~KnownZero2));
       KnownZero = (1ULL << KnownZeroOut) - 1;
       KnownOne = 0;
-      
-      SDOperand SH = Op.getOperand(0);
-      // fold (add (shl x, c1), (shl c2, c1)) -> (shl (add x, c2), c1)
-      if (KnownZero && SH.getOpcode() == ISD::SHL && SH.Val->hasOneUse() &&
-          Op.Val->hasOneUse()) {
-        if (ConstantSDNode *SA = dyn_cast<ConstantSDNode>(SH.getOperand(1))) {
-          MVT::ValueType VT = Op.getValueType();
-          unsigned ShiftAmt = SA->getValue();
-          uint64_t AddAmt = AA->getValue();
-          uint64_t AddShr = AddAmt >> ShiftAmt;
-          if (AddAmt == (AddShr << ShiftAmt)) {
-            SDOperand ADD = TLO.DAG.getNode(ISD::ADD, VT, SH.getOperand(0),
-                                            TLO.DAG.getConstant(AddShr, VT));
-            SDOperand SHL = TLO.DAG.getNode(ISD::SHL, VT, ADD,SH.getOperand(1));
-            return TLO.CombineTo(Op, SHL);
-          }
-        }
-      }
     }
     break;
   case ISD::SUB: