remove two trunc xforms that are subsumed by EvaluateInDifferentType.
authorChris Lattner <sabre@nondot.org>
Tue, 5 Jan 2010 22:01:41 +0000 (22:01 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 5 Jan 2010 22:01:41 +0000 (22:01 +0000)
The only difference is that EvaluateInDifferentType checks to ensure
they are profitable before doing them :)

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

lib/Transforms/InstCombine/InstCombineCasts.cpp
test/Transforms/InstCombine/bswap.ll

index 4d44cc977049877c813dd2546879536c9ac5c727..cea510967fe2dee38cae1cf7139acad7c2a1e168 100644 (file)
@@ -628,7 +628,6 @@ Instruction *InstCombiner::commonIntCastTransforms(CastInst &CI) {
   return 0;
 }
 
-
 Instruction *InstCombiner::visitTrunc(TruncInst &CI) {
   if (Instruction *Result = commonIntCastTransforms(CI))
     return Result;
@@ -646,41 +645,6 @@ Instruction *InstCombiner::visitTrunc(TruncInst &CI) {
     return new ICmpInst(ICmpInst::ICMP_NE, Src, Zero);
   }
 
-  // Optimize trunc(lshr(x, c)) to pull the shift through the truncate.
-  ConstantInt *ShAmtV = 0;
-  Value *ShiftOp = 0;
-  if (Src->hasOneUse() &&
-      match(Src, m_LShr(m_Value(ShiftOp), m_ConstantInt(ShAmtV)))) {
-    uint32_t ShAmt = ShAmtV->getLimitedValue(SrcBitWidth);
-    
-    // Get a mask for the bits shifting in.
-    APInt Mask(APInt::getLowBitsSet(SrcBitWidth, ShAmt).shl(DestBitWidth));
-    if (MaskedValueIsZero(ShiftOp, Mask)) {
-      if (ShAmt >= DestBitWidth)        // All zeros.
-        return ReplaceInstUsesWith(CI, Constant::getNullValue(DestTy));
-      
-      // Okay, we can shrink this.  Truncate the input, then return a new
-      // shift.
-      Value *V1 = Builder->CreateTrunc(ShiftOp, DestTy, ShiftOp->getName());
-      Value *V2 = ConstantExpr::getTrunc(ShAmtV, DestTy);
-      return BinaryOperator::CreateLShr(V1, V2);
-    }
-  }
-  
-  // Transform trunc(shl(X, C)) -> shl(trunc(X), C)
-  if (Src->hasOneUse() &&
-      match(Src, m_Shl(m_Value(ShiftOp), m_ConstantInt(ShAmtV)))) {
-    uint32_t ShAmt = ShAmtV->getLimitedValue(SrcBitWidth);
-    if (ShAmt >= DestBitWidth)        // All zeros.
-      return ReplaceInstUsesWith(CI, Constant::getNullValue(DestTy));
-      
-    // Okay, we can shrink this.  Truncate the input, then return a new
-    // shift.
-    Value *V1 = Builder->CreateTrunc(ShiftOp, DestTy, ShiftOp->getName());
-    Value *V2 = ConstantExpr::getTrunc(ShAmtV, DestTy);
-    return BinaryOperator::CreateShl(V1, V2);
-  }
-
   return 0;
 }
 
index c5aa8bede1784d342fdccf979e0e7ad8acaa80cc..168b3e83330d2991e3c91a6c4daac3bb3ce43dca 100644 (file)
@@ -1,3 +1,5 @@
+target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128-n8:16:32"
+
 ; RUN: opt < %s -instcombine -S | \
 ; RUN:    grep {call.*llvm.bswap} | count 6