RFR: 8305324: C2: Wrong execution of vectorizing Interger.reverseBytes [v3]
Daohan Qu
duke at openjdk.org
Tue Apr 11 11:26:39 UTC 2023
> This patch should fix [JDK-8305324](https://bugs.openjdk.org/browse/JDK-8305324).
>
> `SuperWord::compute_vector_element_type()` implemented in `jdk/src/hotspot/share/opto/superword.cpp` propagates backward a narrower integer type when the upper bits of the value are not needed. However, `Integer.reverseBytes()` depends on higher-order bits of an integer and should be prevented from being narrowed and vectorized. Instead, it needs to be treated like `Math.abs()` (which is represented by `Op_AbsI` in the following code).
>
> https://github.com/openjdk/jdk/blob/0243da2e4adc1b7ab6fcd5b10778532101158dce/src/hotspot/share/opto/superword.cpp#L3935-L3945
>
> I have tested this patch for tier 1-3 on x86-64.
Daohan Qu has updated the pull request incrementally with one additional commit since the last revision:
Use a function in branch condition as suggested
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/13406/files
- new: https://git.openjdk.org/jdk/pull/13406/files/cafec83b..7d90bfaa
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=13406&range=02
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=13406&range=01-02
Stats: 24 lines in 3 files changed: 17 ins; 0 del; 7 mod
Patch: https://git.openjdk.org/jdk/pull/13406.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/13406/head:pull/13406
PR: https://git.openjdk.org/jdk/pull/13406
More information about the hotspot-compiler-dev
mailing list