Hi All,

Currently Float16Vector.rearrange operations are not intrinsified and are 
executed through the fallback implementation.
rearrange is a pure lane-permutation (data movement) operation; it never 
interprets the 16-bit lane bits as an IEEE binary16
number. Since a Float16 lane maps to T_SHORT, it reuses the existing 16-bit 
vector permute backend directly.

Patch adds Add intrinsification support encompassing the following tasks:
 - Inline expander extension: allow LT_FLOAT16 past the lane-type guard in 
inline_vector_rearrange all downstream logic already resolves to the T_SHORT 
permute path.
 - Add an IR verification test asserting VectorRearrange is generated for 
Float16Vector.rearrange with correctness versus the fallback.

Following are the performance number of benchmarks included with the patch on 
an AVX512-FP16 target.


Baseline:-
Benchmark                                            (vectorDim)   Mode  Cnt    
Score   Error   Units
Float16VectorOperationsBenchmark.rearrangeBenchmark         1024  thrpt    2  
217.410          ops/ms
Float16VectorOperationsBenchmark.rearrangeBenchmark         2057  thrpt    2   
93.602          ops/ms

Withopt:-
Benchmark                                            (vectorDim)   Mode  Cnt    
  Score   Error   Units
Float16VectorOperationsBenchmark.rearrangeBenchmark         1024  thrpt    2  
21842.915          ops/ms
Float16VectorOperationsBenchmark.rearrangeBenchmark         2057  thrpt    2   
4047.767          ops/ms


Please review and share your feedback.

Best Regards,
Jatin

---------
- [x] I confirm that I make this contribution in accordance with the [OpenJDK 
Interim AI Policy](https://openjdk.org/legal/ai).

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

Commit messages:
 - 8389741: [VectorAPI] Intrinsify Float16Vector.rearrange operations

Changes: https://git.openjdk.org/jdk/pull/33198/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=33198&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8389741
  Stats: 316 lines in 3 files changed: 312 ins; 4 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/33198.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/33198/head:pull/33198

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

Reply via email to