[vectorIntrinsics+mask] RFR: 8271313: AArch64: SVE backend support for masking operations with predicate feature [v2]

Ningsheng Jian njian at openjdk.java.net
Mon Aug 9 06:15:53 UTC 2021


On Mon, 9 Aug 2021 02:16:33 GMT, Xiaohong Gong <xgong at openjdk.org> wrote:

>> This is the initial SVE backend implementations for all masking operations with the SVE predicate feature. It contains:
>>  - SVE codegen for vector operations under a mask controlling
>>  - SVE codegen for vector mask operations with predicate instructions
>> 
>> The size of libjvm.so increases about 1.86% after adding all the backend changes. And the performance gain is about 3.7% ~ 7.88x for some masking operations of IntMaxVector with SVE 512 bits:
>> 
>> Benchmark                         Gain
>> IntMaxVector.ABSMasked            1.198
>> IntMaxVector.ADDMasked            1.040
>> IntMaxVector.ADDMaskedLanes       1.068
>> IntMaxVector.ANDMasked            1.117
>> IntMaxVector.ANDMaskedLanes       1.101
>> IntMaxVector.AND_NOTMasked        1.037
>> IntMaxVector.ASHRMasked           1.286
>> IntMaxVector.ASHRMaskedShift      1.096
>> IntMaxVector.BITWISE_BLENDMasked  1.085
>> IntMaxVector.LSHRMasked           1.405
>> IntMaxVector.LSHRMaskedShift      1.092
>> IntMaxVector.MAXMaskedLanes       1.079
>> IntMaxVector.MINMaskedLanes       1.079
>> IntMaxVector.MULMasked            1.370
>> IntMaxVector.ORMasked             1.038
>> IntMaxVector.ORMaskedLanes        1.103
>> IntMaxVector.SUBMasked            1.043
>> IntMaxVector.XORMasked            1.151
>> IntMaxVector.XORMaskedLanes       1.103
>> IntMaxVector.allTrue              1.157
>> IntMaxVector.anyTrue              1.158
>> IntMaxVector.gatherMasked         7.880
>> IntMaxVector.scatterMasked        4.732
>
> Xiaohong Gong has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains three additional commits since the last revision:
> 
>  - Add the implementation for masked compare and mask reinterpretation when esize is different
>  - Merge panama-vector:vectorIntrinsics+mask into JDK-8271313
>  - 8271313: AArch64: SVE backend support for masking operations with predicate feature

src/hotspot/cpu/aarch64/aarch64_sve.ad line 173:

> 171:     // By default, we only support vector operations with no less than 8 bytes and 2 elements.
> 172:     // TODO: set min vector size to 8 and have a full test.
> 173:     return 16 <= length_in_bytes && length_in_bytes <= MaxVectorSize && vlen >= 2;

I think we should fix this TODO in this patch.

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

PR: https://git.openjdk.java.net/panama-vector/pull/105


More information about the panama-dev mailing list