RFR: 8262989: Vectorize VectorShuffle checkIndexes, wrapIndexes and laneIsValid methods

Paul Sandoz psandoz at openjdk.java.net
Thu Mar 4 16:50:39 UTC 2021


On Wed, 3 Mar 2021 22:32:48 GMT, Sandhya Viswanathan <sviswanathan at openjdk.org> wrote:

> The hot path of VectorShuffle checkIndexes, wrapIndexes and laneIsValid methods can be implemented using Vector API methods.
> 
> For the attached jmh TestSlice.java, performance improves as below.
> 
> Before: 
> Benchmark                                     (size)   Mode  Cnt     Score    Error   Units
> TestSlice.vectorSliceOrigin                     1024  thrpt    5  1224.698 ± 53.825  ops/ms
> TestSlice.vectorSliceUnsliceOrigin              1024  thrpt    5   657.895 ± 31.945  ops/ms
> 
> After: 
> Benchmark                                     (size)   Mode  Cnt      Score    Error   Units
> TestSlice.vectorSliceOrigin                     1024  thrpt    5  11221.532 ± 88.616  ops/ms
> TestSlice.vectorSliceUnsliceOrigin              1024  thrpt    5   6509.519 ± 18.102  ops/ms

Looks good, a nice incremental improvement.

I suppose `checkIndexes` and `wrapIndexes` could call `laneIsValid`, and then call `anyFalse` on the resulting mask. Dunno if that would affect the generated code.

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

Marked as reviewed by psandoz (Reviewer).

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


More information about the core-libs-dev mailing list