Integrated: 8305324: C2: Wrong execution of vectorizing Interger.reverseBytes

Daohan Qu duke at openjdk.org
Wed Apr 12 17:11:47 UTC 2023


On Mon, 10 Apr 2023 13:21:29 GMT, Daohan Qu <duke at openjdk.org> wrote:

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

This pull request has now been integrated.

Changeset: 19380d74
Author:    quadhier <quadhier at 163.com>
Committer: Vladimir Kozlov <kvn at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/19380d74e437c17c4d8292e2adfd0fb20f059bb0
Stats:     63 lines in 2 files changed: 57 ins; 0 del; 6 mod

8305324: C2: Wrong execution of vectorizing Interger.reverseBytes

Reviewed-by: kvn, pli

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

PR: https://git.openjdk.org/jdk/pull/13406


More information about the hotspot-compiler-dev mailing list