On Wed, 22 Mar 2023 12:42:15 GMT, Quan Anh Mai <qa...@openjdk.org> wrote:

>> src/hotspot/share/opto/vectorIntrinsics.cpp line 2059:
>> 
>>> 2057:   if (need_load_shuffle) {
>>> 2058:     shuffle = gvn().transform(new VectorLoadShuffleNode(shuffle, vt));
>>> 2059:   }
>> 
>> How about generating `VectorLoadShuffleNode` for all platforms that support 
>> Vector API, and remove the helper method `vector_needs_load_shuffle()` ? For 
>> those platforms that do not need this shuffle preparation, we can emit 
>> nothing  in codegen.
>
> I think not emitting `VectorLoadShuffleNode` is more common so it is better 
> to emit them only when needed, as it will simplify the graph and may allow 
> better inspections of the indices in the future. Additionally, a do-nothing 
> node does not alias with its input and therefore kills the input, which leads 
> to an additional spill if they both need to live.

Yeah, I agree that saving a node have some benefits like what you said. My 
concern is there are more and more methods added into `Matcher::` and each 
platform has to do the different implementation. There is not too much meaning 
for those platforms that do not implement Vector API like` arm/ppc/...` for me. 
This makes code not so easy to maintain.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/13093#discussion_r1145598639

Reply via email to