RFR: 8281375: Accelerate bitCount operation for AVX2 and AVX512 target. [v5]

Jatin Bhateja jbhateja at openjdk.java.net
Fri Feb 25 01:07:51 UTC 2022


> Summary of changes:
> 
> - Patch extends existing vectorized bitCount optimization added with [JDK-8278868](https://bugs.openjdk.java.net/browse/JDK-8278868) and emits optimized JIT sequence for AVX2 and other AVX512 targets which do not support avx512_vpopcntdq feature.
> - Since PopCountVI/PopCountVL node emit different instruction sequence based on the target features hence a rudimentary cost mode has been added which influences the SLP unrolling factor to prevent generating bloated main loops.
> - Following are the performance results of an existing [JMH micro](https://github.com/jatin-bhateja/jdk/blob/master/test/micro/org/openjdk/bench/vm/compiler/VectorBitCount.java) over various X86 targets.
> 
> 
> Benchmark | SIZE | Baseline AVX2 (ns/op) | Withopt AVX2 (ns/op) | Gain % | Baseline AVX3 (ns/op) | Withopt AVX3 (ns/op) | Gain % | Baseline AVX3 (VPOPCOUNTDQ) | Withopt AVX3 (VPOCOUNTDQ) | Gain %
> -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | --
> VectorBitCount.WithSuperword.intBitCount | 1024 | 1089.799 | 420.156 | 159.3796114 | 1083.92 | 203.958 | 431.442748 | 88.958 | 60.096 | 48.02649095
> VectorBitCount.WithSuperword.longBitCount | 1024 | 417.458 | 413.859 | 0.869619846 | 417.203 | 214.949 | 94.09394787 | 105.954 | 117.019 | -9.455729411
> 
> Please review and share your feedback.
> 
> Best Regards,
> Jatin

Jatin Bhateja has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains six additional commits since the last revision:

 - Merge branch 'master' of http://github.com/openjdk/jdk into JDK-8281375
 - 8281375: Adding descriptive comments.
 - 8281375: Review comments resolved.
 - 8281375: Review comments resoultion.
 - 8281375: Review comments resolved.
 - 8281375: Accelerate bitCount operation for AVX2 and AVX512 target.

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

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/7373/files
  - new: https://git.openjdk.java.net/jdk/pull/7373/files/b4257341..3d92bd6c

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=7373&range=04
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=7373&range=03-04

  Stats: 28809 lines in 696 files changed: 20526 ins; 4158 del; 4125 mod
  Patch: https://git.openjdk.java.net/jdk/pull/7373.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/7373/head:pull/7373

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


More information about the hotspot-compiler-dev mailing list