diff options
author | Chris Lattner <sabre@nondot.org> | 2010-01-05 22:01:41 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-01-05 22:01:41 +0000 |
commit | c0f79af1438d3b11eedd5713ea08d4edbe52d8e3 (patch) | |
tree | c515e55e7e2a6e6b4d3f987858d8d2b0a14b2b81 /lib/Transforms/InstCombine/InstCombineCasts.cpp | |
parent | c04d3d37e438da359d3f595ea0a892c052e507f9 (diff) |
remove two trunc xforms that are subsumed by EvaluateInDifferentType.
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
Diffstat (limited to 'lib/Transforms/InstCombine/InstCombineCasts.cpp')
-rw-r--r-- | lib/Transforms/InstCombine/InstCombineCasts.cpp | 36 |
1 files changed, 0 insertions, 36 deletions
diff --git a/lib/Transforms/InstCombine/InstCombineCasts.cpp b/lib/Transforms/InstCombine/InstCombineCasts.cpp index 4d44cc9770..cea510967f 100644 --- a/lib/Transforms/InstCombine/InstCombineCasts.cpp +++ b/lib/Transforms/InstCombine/InstCombineCasts.cpp @@ -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; } |