[jdk17u-dev] RFR: 8265263: AArch64: Combine vneg with right shift count

Dmitry Chuyko dchuyko at openjdk.org
Thu Oct 20 08:23:10 UTC 2022


This is a performance improvement for AArch64. There are several differences from the original change.

https://bugs.openjdk.org/browse/JDK-8267356 (Vector API SVE codegen support) is not in 17u, so `UseSVE == 0` parts in predicates are missing/excluded.

https://bugs.openjdk.org/browse/JDK-8288445 (C2 compilation fails) is a subsequent bugfix already backported in 17u, so some `immI` arguments in rules became `immI_positive`.

https://bugs.openjdk.org/browse/JDK-8277239 (SIGSEGV in vrshift_reg_maskedNode::emit) is also related to Vector API and is not in 17u, so `!n->as_ShiftV()->is_var_shift()` is replaced by `VectorNode::is_vshift_cnt(n->in(2))`. This substitution may raise doubts.

Testing: jtreg test/hotspot/jtreg/compiler, tier1, tier2 on aarch64.

Performance improvements in the added benchmark VectorShiftRight on Graviton 2 for default size=1024 correspond to the original review:


rShiftByte      16%
rShiftInt       27%
rShiftLong      16%
rShiftShort     20%
urShiftByte     0%
urShiftChar     20%
urShiftInt      27%
urShiftLong     16%

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

Commit messages:
 - Backport 49245131e98c1c72c447536e5527acecb3311add

Changes: https://git.openjdk.org/jdk17u-dev/pull/811/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk17u-dev&pr=811&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8265263
  Stats: 855 lines in 4 files changed: 479 ins; 44 del; 332 mod
  Patch: https://git.openjdk.org/jdk17u-dev/pull/811.diff
  Fetch: git fetch https://git.openjdk.org/jdk17u-dev pull/811/head:pull/811

PR: https://git.openjdk.org/jdk17u-dev/pull/811


More information about the jdk-updates-dev mailing list