[jdk21u-dev] RFR: 8328938: C2 SuperWord: disable vectorization for large stride and scale [v2]

Emanuel Peter epeter at openjdk.org
Wed Apr 17 09:42:33 UTC 2024


On Wed, 17 Apr 2024 09:39:21 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

>> Unclean backport to prevent accidents in C2 loop optimizations. The patch is unclean, because JDK 21u misses major SuperWord refactorings. I applied the hunk by hand in the similar place, and also used `slp->iv_stride()` in one place to get this thing to work.
>> 
>> @eme64, if you want to take a look at this?
>> 
>> Additional testing:
>>  - [x] New regression test fails without the patch, passes with it
>>  - [x] Linux x86_64 server fastdebug, `all`
>>  - [x] Linux x86_64 server fastdebug, 100K Fuzzer tests
>>  - [ ] Linux x86_64 server fastdebug, Maven CTW
>
> Aleksey Shipilev has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Check if stride is actually con before touching iv_stride

src/hotspot/share/opto/superword.cpp line 4213:

> 4211:   // do not have to deal with overflows.
> 4212:   jlong long_scale  = _scale;
> 4213:   jlong long_stride = slp->lp()->stride_is_con() ? slp->iv_stride() : 0;

Hmm. But what happens if the stride is now zero? Does that at least get caught later?
Or should we just return here, and make sure the SWPointer is not valid, so nothing bad can happen down the road?

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

PR Review Comment: https://git.openjdk.org/jdk21u-dev/pull/495#discussion_r1568542718


More information about the jdk-updates-dev mailing list