[Bug target/36503] x86 can use x >> -y for x >> 32-y

egallager at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Mar 2 12:05:00 GMT 2018


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36503

Eric Gallager <egallager at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |egallager at gcc dot gnu.org

--- Comment #10 from Eric Gallager <egallager at gcc dot gnu.org> ---
(In reply to Uroš Bizjak from comment #7)
> Created attachment 21972 [details]
> Patch that implements suggested optimization
> 
> Attached patch compiles the test from comment #0 to the proposed code:
> 
> int test (int a, int b)
> {
>   return a >> (32 - b);
> }
> 
> -O2 -m32:
> 
> 	movl	8(%esp), %ecx
> 	movl	4(%esp), %eax
> 	negl	%ecx
> 	sarl	%cl, %eax
> 	ret
> 
> -O2 -m64:
> 
> 	negl	%esi
> 	movl	%edi, %eax
> 	movl	%esi, %ecx
> 	sarl	%cl, %eax
> 	ret

Please send the patch to the gcc-patches mailing list if it still applies and
works. And change the status to ASSIGNED if you're still working on it.


More information about the Gcc-bugs mailing list