RFR: 8268151: Vector API toShuffle optimization

Xiaohong Gong xgong at openjdk.java.net
Thu Jun 3 02:30:36 UTC 2021


On Thu, 3 Jun 2021 00:29:00 GMT, Sandhya Viswanathan <sviswanathan at openjdk.org> wrote:

> The Vector API toShuffle method can be optimized  using existing vector conversion intrinsic.
> 
> The following changes are made:
> 1) vector.toShuffle java implementation is changed to call VectorSupport.convert.
> 2) The conversion intrinsic (inline_vector_convert()) in vectorIntrinsics.cpp is changed to allow shuffle as a destination type.
> 3) The shuffle.toVector intrinsic (inline_vector_shuffle_to_vector()) in vectorIntrinsics.cpp now explicitly generates conversion node instead of performing conversion during unbox. This is to remove unnecessary boxing during back to back vector.toShuffle and shuffle.toVector calls. 
> 
> Best Regards,
> Sandhya

src/hotspot/share/opto/vectornode.cpp line 1246:

> 1244:           return new VectorLoadMaskNode(value, out_vt);
> 1245:         } else if (is_vector_shuffle) {
> 1246:           if (!is_shuffle_to_vector()) {

Hi @sviswa7 , thanks for this change! I'm just curious whether `is_shuffle_to_vector()` is still needed for `VectorUnboxNode` with this change? It seems this flag can be removed, doesn't it?

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

PR: https://git.openjdk.java.net/jdk/pull/4326


More information about the hotspot-compiler-dev mailing list