RFR: 8282722: Regard mapping array in enum switches as stable for constant folding

Joshua Zhu jzhu at openjdk.java.net
Mon Mar 7 07:19:14 UTC 2022


I came across a performance issue when using scatter store VectorAPI for Integer and Long simultaneously in the same application. The poor performance was caused by vector intrinsic inlining failure because of non-determined IntSpecies for a constant VectorShape of IndexMap in this scenario.

For ScatterStore operation of LongVector.SPECIES_512/IntVector.SPECIES_512, VectorShape.S_256_BIT/S_512_BIT is the actual length of indexMap vector respectively.

IntSpecies species(VectorShape s)

returns the corresponding IntSpecies by Switch on Enum type "VectorShape". [1] 

With this change introduced, elements in the SwitchMap array (initialized in clinit) can be constant-folded so that determined IntSpecies can be acquired for a constant VectorShape.

jtreg test passed without new failure.
Please help review this change and let me know if any comments.

[1] https://github.com/openjdk/jdk/blob/894ffb098c80bfeb4209038c017d01dbf53fac0f/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/IntVector.java#L4043

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

Commit messages:
 - 8282722: Regard mapping array in enum switches as stable for constant folding

Changes: https://git.openjdk.java.net/jdk/pull/7721/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=7721&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8282722
  Stats: 15 lines in 2 files changed: 15 ins; 0 del; 0 mod
  Patch: https://git.openjdk.java.net/jdk/pull/7721.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/7721/head:pull/7721

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


More information about the hotspot-dev mailing list