RFR: 8277843: [Vector API] scalar2vector generates incorrect type info for mask operations if Op_MaskAll is unavailable [v2]

Tobias Hartmann thartmann at openjdk.java.net
Mon Nov 29 10:25:08 UTC 2021


On Fri, 26 Nov 2021 07:44:26 GMT, Jie Fu <jiefu at openjdk.org> wrote:

>> Hi all,
>> 
>> This bug was first observed on x86_32/AVX512.
>> It caused 62 vector api test failures.
>> 
>> ==============================
>> Test summary
>> ==============================
>>    TEST                                              TOTAL  PASS  FAIL ERROR
>>>> jtreg:test/jdk/jdk/incubator/vector                  74    12    62     0 <<
>> ==============================
>> 
>> 
>> You can easily reproduce this bug on an AVX512 machine with x86_32.
>> Or you can also reproduce it on an AVX512 machine with x86_64 if you disable `Op_MaskAll` like this.
>> 
>> diff --git a/src/hotspot/cpu/x86/x86.ad b/src/hotspot/cpu/x86/x86.ad
>> index 3f6d5a44b0d..d5a751b310d 100644
>> --- a/src/hotspot/cpu/x86/x86.ad
>> +++ b/src/hotspot/cpu/x86/x86.ad
>> @@ -1819,6 +1819,7 @@ const bool Matcher::match_rule_supported_vector(int opcode, int vlen, BasicType
>>        }
>>        break;
>>      case Op_MaskAll:
>> +      return false;
>>        if (!is_LP64 || !VM_Version::supports_evex()) {
>>          return false;
>>        }
>> 
>> 
>> The failure reason is that `VectorNode::scalar2vector` generate incorrect IR for mask operations if `Op_MaskAll` is unavailable.
>> So it shouldn't be used for mask operations if `Op_MaskAll` is unavailable.
>> 
>> Testing (with two more bug fixes https://github.com/openjdk/jdk/pull/6535 and https://github.com/openjdk/jdk/pull/6533):
>>  - vector api tests on {x86_64, x86_32}/{AVX512, AVX256}, all passed
>>  - vector api tests on aarch64, all passed
>> 
>> Thanks.
>> Best regards,
>> Jie
>
> Jie Fu has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Address review comments

Looks reasonable to me.

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

Marked as reviewed by thartmann (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/6562


More information about the hotspot-compiler-dev mailing list