Integrated: 8274179: AArch64: Support SVE operations with encodable immediates
Fei Gao
duke at openjdk.java.net
Thu Nov 18 02:44:45 UTC 2021
On Tue, 26 Oct 2021 01:58:40 GMT, Fei Gao <duke at openjdk.java.net> wrote:
> for(int i = 0; i < LENGTH; i++) {
> c[i] = a[i] + 2;
> }
>
> For the case showed above, after superword optimization with SVE,
> without the patch, the vector add operation always has 2 z-reg inputs,
> like:
> mov z16.s, #2
> add z17.s, z17.s, z16.s
>
> Considering sve has supported basic binary operations with immediate,
> this pattern could be further optimized to:
> add z16.s, z16.s, #2
>
> To implement it, we added some new match rules and assembler rules in
> the aarch64 backend. We also made some extensions on immediate types
> and functions to keep backward compatible.
>
> With the patch, only these binary integer vector operations, +(add),
> -(sub), &(and), |(orr), and ^(eor) with immediate are supported for
> the optimization. Other vector operations are not supported currently.
>
> Tested tier1 and test/hotspot/jtreg/compiler on SVE featured AArch64
> CPU, no new failure.
>
> There is no obvious performance uplift but it can help remove one
> redundant mov instruction.
This pull request has now been integrated.
Changeset: 81938001
Author: Fei Gao <Fei.Gao at arm.com>
Committer: Ningsheng Jian <njian at openjdk.org>
URL: https://git.openjdk.java.net/jdk/commit/81938001f9bae56c59f4e18b7756089f2cf0bf74
Stats: 1476 lines in 12 files changed: 1329 ins; 43 del; 104 mod
8274179: AArch64: Support SVE operations with encodable immediates
Reviewed-by: aph, ngasson
-------------
PR: https://git.openjdk.java.net/jdk/pull/6115
More information about the hotspot-dev
mailing list