RFR: 8274179: AArch64: Support SVE operations with encodable immediates [v4]

Fei Gao duke at openjdk.java.net
Fri Oct 29 09:24:47 UTC 2021


> 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.

Fei Gao has updated the pull request incrementally with one additional commit since the last revision:

  Add some assertion lines for help functions
  
  Change-Id: Ic9120902bd8f8a8ead2e3740435a40f35d21757c

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

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/6115/files
  - new: https://git.openjdk.java.net/jdk/pull/6115/files/a7a915af..05c712d4

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=6115&range=03
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=6115&range=02-03

  Stats: 2 lines in 1 file changed: 2 ins; 0 del; 0 mod
  Patch: https://git.openjdk.java.net/jdk/pull/6115.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/6115/head:pull/6115

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


More information about the hotspot-dev mailing list