[jdk16] RFR: 8259601: AArch64: Fix reinterpretX2D match rule issue

Xiaohong Gong xgong at openjdk.java.net
Tue Jan 12 04:08:07 UTC 2021


Currently the `"reinterpretX2D"` match rule does not generate any register move instruction if the` 'dst'` and` 'src'` are the same register. This rule implements the vector reinterpretation from 16 bytes to 8 bytes. It is a kind of data truncation, which should make sure the higher 8 bytes of the `'dst' `register cleared to zero. So the `"mov" `is always needed even if the` "dst"` and `"src"` are the same register in case of the issue mentioned in [1].

We have tested the case [3] with Arm NEON. And the issue still exists even if [1] is fixed with [2]. Removing the check (i.e. whether `'src'` and `'dst`' are the same register) in the rule would fix it finally.

[1] https://bugs.openjdk.java.net/browse/JDK-8259353
[2] https://github.com/openjdk/jdk16/pull/100
[3] https://bugs.openjdk.java.net/secure/attachment/92713/Test.java

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

Commit messages:
 - 8259601: AArch64: Fix reinterpretX2D match rule issue

Changes: https://git.openjdk.java.net/jdk16/pull/108/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk16&pr=108&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8259601
  Stats: 41 lines in 2 files changed: 17 ins; 1 del; 23 mod
  Patch: https://git.openjdk.java.net/jdk16/pull/108.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk16 pull/108/head:pull/108

PR: https://git.openjdk.java.net/jdk16/pull/108


More information about the hotspot-compiler-dev mailing list