RFR: 8256438: AArch64: Implement match rules with ROR shift register value

Eric Liu github.com+10482586+therealeliu at openjdk.java.net
Mon Jan 4 02:00:56 UTC 2021


On Mon, 21 Dec 2020 10:10:10 GMT, Eric Liu <github.com+10482586+theRealELiu at openjdk.org> wrote:

> This patch transforms '(x >>> rshift) + (x << lshift)' into
> 'RotateRight(x, rshift)' during GVN phase when both the shift exponents
> are constants and their sum equals to the number of bits for the type
> of shift base.
> 
> This patch implements some new match rules for AArch64 instructions
> which can take ROR as the optional shift. Such instructions are 'and',
> 'or', 'eor', 'eon', 'bic' and 'orn'.
> 
>   ror     w11, w2, #5
>   eor     w0, w1, w11
> 
> With this patch, above code could be optimized to below:
> 
>   eor     w0, w1, w2, ror #5
> 
> Finally, the patch refactors TestRotate.java[1][2].
> 
> Tested jtreg TestRotate.java, hotspot::hotspot_all_no_apps,
> jdk::jdk_core, langtools::tier1.
> 
> [1] https://bugs.openjdk.java.net/browse/JDK-8252776
> [2] https://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2020-September/039911.html

Could anyone help to take a look at this PR?

-------------

PR: https://git.openjdk.java.net/jdk/pull/1858


More information about the hotspot-compiler-dev mailing list