[PATCH] D47980: [InstCombine] Fold (x << y) >> y -> x & (-1 >> y)

Roman Lebedev via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Jun 10 10:09:16 PDT 2018


lebedev.ri added a comment.

In https://reviews.llvm.org/D47980#1127542, @spatel wrote:

> LGTM.


Thank you for the review!



================
Comment at: lib/Transforms/InstCombine/InstCombineShifts.cpp:732-735
         // (X << C1) >>u C2  --> (X >>u (C2 - C1)) & (-1 >> C2)
         Value *NewLShr = Builder.CreateLShr(X, ShiftDiff, "", I.isExact());
         APInt Mask(APInt::getLowBitsSet(BitWidth, BitWidth - ShAmt));
         return BinaryOperator::CreateAnd(NewLShr, ConstantInt::get(Ty, Mask));
----------------
spatel wrote:
> As with D47981, we could consolidate this, but the constant version doesn't need the one-use check. 
> 
> I think it's fine either way, but let's keep both patches consistent in their structure.
> As with D47981, we could consolidate this, but the constant version doesn't need the one-use check.
I haven't really though about that..
Sounds like i should add multi-use tests with constants to the tests.


Repository:
  rL LLVM

https://reviews.llvm.org/D47980





More information about the llvm-commits mailing list