RFR: 8367292: VectorAPI: Optimize VectorMask.fromLong/toLong() for SVE [v2]
    Xiaohong Gong 
    xgong at openjdk.org
       
    Thu Oct 23 09:55:04 UTC 2025
    
    
  
On Thu, 23 Oct 2025 09:20:50 GMT, Bhavana Kilambi <bkilambi at openjdk.org> wrote:
>>> if (Matcher::vector_mask_must_be_packed_vector(mopc, mask_vec->bottom_type()->is_vect())) {
>>>     mask_vec = gvn().transform(VectorStoreMaskNode::make(gvn(), mask_vec, elem_bt, num_elem));
>>>   }
>> 
>> Is the function name `vector_mask_must_be_packed` fine to you? This looks smarter to me.
>
> Hi @XiaohongGong I am a bit confused with this condition here - 
> 
> `mask_vec->bottom_type()->isa_vectmask() == nullptr`
> 
> So this means that `mask_vec` is not of type `TypeVectMask` right? Which means it is not a vector predicate/mask type? Then how can the `VectorStoreMaskNode` convert mask_vec predicate to a packed vector?
Yes, this means the mask is a type of `TypeVect`. This just happens on architectures that do not support the predicate feature like NEON. On these architectures, `VectorStoreMaskNode` will convert the unpacked vector to a packed one. Some vector mask operations' implementation works on the packed mask layout on these architectures.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/27481#discussion_r2454561463
    
    
More information about the hotspot-compiler-dev
mailing list