[lworld+vector] RFR: 8304310: Initial compilers and runtime handling for multifield backed vectors. [v3]

Jatin Bhateja jbhateja at openjdk.org
Fri Apr 7 00:53:11 UTC 2023


On Thu, 30 Mar 2023 04:03:07 GMT, Xiaohong Gong <xgong at openjdk.org> wrote:

>> Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Extend ci model to capture synthetic multi-fields, these are used for scalarization if target does not support load/store bundle size.
>
> src/hotspot/share/opto/inlinetypenode.cpp line 497:
> 
>> 495:       assert(is_java_primitive(bt) || adr->bottom_type()->is_ptr_to_narrowoop() == UseCompressedOops, "inconsistent");
>> 496:       if (value->bottom_type()->isa_vect()) {
>> 497:         Node* store = kit->gvn().transform(StoreVectorNode::make(0, kit->control(), kit->memory(adr), adr, adr_type, value, vec_len));
> 
> Does it need to check the Op_StoreVector supported or not here?

Checks are done at the time of inline type IR creation. 

> Thanks for the updating! So the correspond `expand_vunbox_node` can also be implemented by calling `InlineTypeNode::make_from_oop` ?

You are correct, every time C2 see a value/primitive instance it does create an InlineTypeNode IR by loading each fields from oop using make_from_oop, thus vector inline expanders should always receive a InlineType node.

![image](https://user-images.githubusercontent.com/59989778/230518631-279a76a4-0cc3-41ca-ba03-f9e8d04c975b.png)

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

PR Review Comment: https://git.openjdk.org/valhalla/pull/833#discussion_r1160358295



More information about the valhalla-dev mailing list