> Hi All,
> 
> x86 AVX-512 targets provides packed shifts for 16, 32, and 64-bit lanes, but 
> not for bytes. C2 lowers LShiftVB, RShiftVB, and URShiftVB by widening bytes 
> to words, shifting, masking, and packing. That sequence is the byte-shift 
> bottleneck.
> 
> GFNI **gf2p8affineqb** instruction applies one 8×8 bit matrix to every byte. 
> Logical left, logical right, and arithmetic right shifts by 0..7 are fixed 
> matrices derived from the identity 0x0102040810204080.
> 
> Patch uses this lowering for 128-, 256-, and 512-bit vectors when GFNI is 
> available and keeps the existing widen/shift/pack path when GFNI is absent.
> 
> Following are the performance numbers of benchmark included with the patch.
> 
> System: AMD EPYC 9755 128-Core Processor (Turin) Fixed frequency 2.5Ghz
> 
> Baseline:-
> ----------
> Benchmark                       (shift)   Mode  Cnt      Score   Error   Units
> ByteShiftBenchmark.ashr128            3  thrpt    2  24994.026          ops/us
> ByteShiftBenchmark.ashr256            3  thrpt    2  29289.608          ops/us
> ByteShiftBenchmark.ashr512            3  thrpt    2  39944.806          ops/us
> ByteShiftBenchmark.autoVecAshr        3  thrpt    2  32592.174          ops/us
> ByteShiftBenchmark.autoVecLshl        3  thrpt    2  30668.901          ops/us
> ByteShiftBenchmark.lshl128            3  thrpt    2  25247.149          ops/us
> ByteShiftBenchmark.lshl256            3  thrpt    2  27345.375          ops/us
> ByteShiftBenchmark.lshl512            3  thrpt    2  38500.755          ops/us
> ByteShiftBenchmark.lshr128            3  thrpt    2  25081.398          ops/us
> ByteShiftBenchmark.lshr256            3  thrpt    2  28272.477          ops/us
> ByteShiftBenchmark.lshr512            3  thrpt    2  42186.028          ops/us
> 
> Withopt:-
> ---------
> Benchmark                       (shift)   Mode  Cnt      Score   Error   Units
> ByteShiftBenchmark.ashr128            3  thrpt    2  31313.173          ops/us
> ByteShiftBenchmark.ashr256            3  thrpt    2  58663.746          ops/us
> ByteShiftBenchmark.ashr512            3  thrpt    2  50472.509          ops/us
> ByteShiftBenchmark.autoVecAshr        3  thrpt    2  44965.109          ops/us
> ByteShiftBenchmark.autoVecLshl        3  thrpt    2  46304.515          ops/us
> ByteShiftBenchmark.lshl128            3  thrpt    2  28849.321          ops/us
> ByteShiftBenchmark.lshl256            3  thrpt    2  40492.534          ops/us
> ByteShiftBenchmark.lshl512            3  thrpt    2  65465.815          ops/us
> ByteShiftBenchmark.lshr128            3...

Jatin Bhateja has updated the pull request incrementally with one additional 
commit since the last revision:

  Review comments resolution

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/33113/files
  - new: https://git.openjdk.org/jdk/pull/33113/files/4767a89d..345cb033

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=33113&range=06
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=33113&range=05-06

  Stats: 76 lines in 4 files changed: 48 ins; 1 del; 27 mod
  Patch: https://git.openjdk.org/jdk/pull/33113.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/33113/head:pull/33113

PR: https://git.openjdk.org/jdk/pull/33113

Reply via email to