[vectorIntrinsics+mask] RFR: 8266287: Basic mask IR implementation for the Vector API masking feature support [v3]
Jatin Bhateja
jbhateja at openjdk.java.net
Tue Jun 22 09:45:46 UTC 2021
On Tue, 22 Jun 2021 09:38:56 GMT, Jatin Bhateja <jbhateja at openjdk.org> wrote:
>> Hi @jatin-bhateja , too much Vector API jtreg tests crashes due to this change. Please see one of the jvm crash log here: http://cr.openjdk.java.net/~xgong/rfr/mask/crashes.
>>
>> BTW, I remember @iwanowww said that the vector type should match for `VectorUnbox ` and its `obj ` when I fixed the type mismatching issue for vector mask with floating point type before. Please see the comment here: https://github.com/openjdk/jdk/pull/3238#issuecomment-815036103
>
> Hi @XiaohongGong ,
>
> I made following changes in unbox and box creation routines and did not find any crashes as reported in any of VectorAPI jtreg over AVX-512 platform.
>
>
> diff --git a/src/hotspot/share/opto/vectorIntrinsics.cpp b/src/hotspot/share/opto/vectorIntrinsics.cpp
> index 21e238afb5b..76553c9f2c9 100644
> --- a/src/hotspot/share/opto/vectorIntrinsics.cpp
> +++ b/src/hotspot/share/opto/vectorIntrinsics.cpp
> @@ -81,7 +81,7 @@ Node* GraphKit::box_vector(Node* vector, const TypeInstPtr* vbox_type, BasicType
> Node* ret = gvn().transform(new ProjNode(alloc, TypeFunc::Parms));
>
> assert(check_vbox(vbox_type), "");
> - const TypeVect* vt = TypeVect::make(elem_bt, num_elem, is_vector_mask(vbox_type->klass()));
> + const TypeVect* vt = TypeVect::make(elem_bt, num_elem);
> VectorBoxNode* vbox = new VectorBoxNode(C, ret, vector, vbox_type, vt);
> return gvn().transform(vbox);
> }
> @@ -96,7 +96,7 @@ Node* GraphKit::unbox_vector(Node* v, const TypeInstPtr* vbox_type, BasicType el
> return NULL; // no nulls are allowed
> }
> assert(check_vbox(vbox_type), "");
> - const TypeVect* vt = TypeVect::make(elem_bt, num_elem, is_vector_mask(vbox_type->klass()));
> + const TypeVect* vt = TypeVect::make(elem_bt, num_elem);
> Node* unbox = gvn().transform(new VectorUnboxNode(C, vt, v, merged_memory(), shuffle_to_vector));
> return unbox;
> }
>
> Can you kindly share a exact re-producer.
Box/Unbox are macro nodes which encapsulates value, in this case the mask value is contained either in a a vector or a predicate register. This should ideally not be disturbing the box's vector type() I think.
-------------
PR: https://git.openjdk.java.net/panama-vector/pull/78
More information about the panama-dev
mailing list