[vectorIntrinsics+mask] RFR: 8272479: Java API and IR changes for masked rearrange operation

Xiaohong Gong xgong at openjdk.java.net
Mon Aug 16 03:19:46 UTC 2021


On Sat, 14 Aug 2021 21:58:52 GMT, Jatin Bhateja <jbhateja at openjdk.org> wrote:

> - Re-organized the Java API implementation to use one common entry point of masked/non-masked vector compare operation.
>  - Intrinsic side changes to absorb newly passed mask if target support predicated instructions else handled appropriately by blending full vector rearrange vector with broadcasted ZERO vector.

src/hotspot/share/opto/vectorIntrinsics.cpp line 1758:

> 1756:   const TypeInt*     vlen          = gvn().type(argument(4))->isa_int();
> 1757: 
> 1758:   if (vector_klass == NULL || shuffle_klass == NULL || elem_klass == NULL || mask_klass == NULL || vlen == NULL) {

It allows the `mask_klass` to be `NULL` for non-masked rearrange, right? If so I think it's better to only check the `mask_klass` for `is_masked_op`.

src/hotspot/share/opto/vectorIntrinsics.cpp line 1778:

> 1776:   if (!is_klass_initialized(vector_klass)  ||
> 1777:       !is_klass_initialized(shuffle_klass) ||
> 1778:       !is_klass_initialized(mask_klass)) {

ditto

src/hotspot/share/opto/vectorIntrinsics.cpp line 1842:

> 1840:   }
> 1841: 
> 1842:   if (v1 == NULL || shuffle == NULL || mask == NULL) {

`mask` is `NULL` for non-masked rearrange, right? I guess this might make the non-masked rearrange intrinsify failed?

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

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


More information about the panama-dev mailing list