[vectorIntrinsics+compress] RFR: 8274971: Add PrefixMask API

Joshua Zhu jzhu at openjdk.java.net
Fri Oct 8 12:01:31 UTC 2021


I separate my implementation of "compress" API into several patches for easy review.
This change is to import PrefixMask API for VectorMask.
It cooperates with compress/expand API. (See the usage in ALIBABA selectiveStore use case.)
It returns a prefix mask, based on the true count of the mask.
Assume "N" is the true count of the mask, the mask bit is set from the beginning lane till the lane numbered "N-1", otherwise it is unset.
Temporarily mask.prefixMask() is implemented by

    vectorSpecies.iota().compare(VectorOperators.LT, trueCount());

The alternative implementation is:

    vectorSpecies().indexInRange(0, m.trueCount())

I choose the former implementation since the latter depends on the Intrinsic support of indexVector.

I'm looking for instructions that could be used to accelerate indexVector/iota, so that vector-to-vector operations together with a store/load and prefix mask could be optimized further into single memory version instruction. 
Intel experts, do you have any suggestions on SIMD instructions for iota vector generation?

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

Commit messages:
 - 8274971: Add PrefixMask API

Changes: https://git.openjdk.java.net/panama-vector/pull/148/files
 Webrev: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=148&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8274971
  Stats: 16 lines in 1 file changed: 16 ins; 0 del; 0 mod
  Patch: https://git.openjdk.java.net/panama-vector/pull/148.diff
  Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/148/head:pull/148

PR: https://git.openjdk.java.net/panama-vector/pull/148


More information about the panama-dev mailing list