simplify-rtx: Simplify trunc of and of shiftrt
authorSegher Boessenkool <segher@kernel.crashing.org>
Wed, 11 Nov 2015 14:09:30 +0000 (15:09 +0100)
committerSegher Boessenkool <segher@gcc.gnu.org>
Wed, 11 Nov 2015 14:09:30 +0000 (15:09 +0100)
commit3b1da8bb77bb07285272f2ad9e516197f3fe0835
treec09f91af0c54de0985d5a415cf2c88fc2d1c1afd
parent7ad291c0e8e6a489d98741eb958736cc5f09d0b7
simplify-rtx: Simplify trunc of and of shiftrt

If we have

(truncate:M1 (and:M2 (lshiftrt:M2 (x:M2) C) C2))

we can write it instead as

(and:M1 (lshiftrt:M1 (truncate:M1 (x:M2)) C) C2)

(if that is valid, of course), which has smaller modes for the
binary ops, and the truncate can often simplify further (if "x"
is a register, for example).

* gcc/simplify-rtx.c (simplify_truncation): Simplify TRUNCATE
of AND of [LA]SHIFTRT.

From-SVN: r230164
gcc/ChangeLog
gcc/simplify-rtx.c