[llvm-commits] [llvm] r120028 - in /llvm/trunk: lib/Target/README.txt lib/Transforms/InstCombine/InstCombineShifts.cpp test/Transforms/InstCombine/shift.ll

Chris Lattner clattner at apple.com
Tue Nov 23 12:42:51 PST 2010


On Nov 23, 2010, at 12:29 PM, Benjamin Kramer wrote:

>>>> InstCombine: Reduce "X shift (A srem B)" to "X shift (A urem B)" iff B is positive.
>>>> 
>>>> This allows to transform the rem in "1 << ((int)x % 8);" to an and.
>>> 
>>> Nifty.  Could this be generalized into SimplifyDemandedBits?  It seems that the srem simplifies because the shift doesn't need all the result bits of it.
>> 
>> I'm not sure that's safe, this optimization relies on the fact that any shift by an amount <= 0 is undefined.
> 
> Urgh, shifts by 0 _are_ well defined, so this transform is unsafe for everything that's not a power of two. Will fix :(

Ok, does that mean it can be moved to simplify demanded bits too? :)

-Chris



More information about the llvm-commits mailing list