[PATCH][GCC][mid-end] Support combining of LSHIFTRT + LSHIFTRT operations

Jeff Law law@redhat.com
Tue May 2 15:08:00 GMT 2017


On 05/02/2017 08:34 AM, Tamar Christina wrote:
> Hi all,
> 
> r217118 added an optimization to combine ashiftrt and lshiftrt.
> This same optimization can at the very least also apply to lshiftrt + lshiftrt
> with the same constraints. i.e. that both operations are done for scalar modes,
> that second operation operates on a subreg of the first one and that the shift
> amount of the first operation is larger than the mode bitsize of the subreg.
> 
> This reduces
> 
> 	umull	x1, w0, w1
> 	lsr	x1, x1, 32
> 	lsr	w1, w1, 5
> 
> to
> 
> 	umull	x1, w0, w1
> 	lsr	x1, x1, 37
> 
> 
> Bootstrapped on aarch64-none-linux-gnu and x86_64-linux
> and reg-tested on aarch64-none-linux-gnu with no regressions.
> 
> OK for trunk?
> 
> Thanks,
> Tamar
> 
> 
> gcc/
> 2017-04-27  Tamar Christina  <tamar.christina@arm.com>
> 
> 	* simplify-rtx.c (simplify_binary_operation_1): Add LSHIFTRT case.
> 
> gcc/testsuite/
> 2017-04-27  Tamar Christina  <tamar.christina@arm.com>
> 
> 	* gcc.dg/lsr-div1.c: New testcase.
OK for the trunk.

Thanks,
Jeff



More information about the Gcc-patches mailing list