On Tue, 29 Sep 2026 05:07:00 GMT, Jatin Bhateja <[email protected]> wrote:
> 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... This pull request has now been integrated. Changeset: 2d03a6c7 Author: Jatin Bhateja <[email protected]> URL: https://git.openjdk.org/jdk/commit/2d03a6c701892cd51ac1c14f6eea466743df7e03 Stats: 599 lines in 10 files changed: 595 ins; 0 del; 4 mod 8393068: Optimize uniform vector byte shift operations using x86 GFNI instruction Reviewed-by: sviswanathan, vlivanov ------------- PR: https://git.openjdk.org/jdk/pull/33113
