Hi All,

Currently Float16Vector.compress/expand operations are not intrinsified and are 
executed through the fallback implementation.
These are 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 compress/expand 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_compress_expand 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 numbers of benchmarks included with the patch on 
an AVX512-FP16 target.


Baseline:-
Benchmark                                           (vectorDim)   Mode  Cnt    
Score   Error   Units
Float16VectorOperationsBenchmark.compressBenchmark         1024  thrpt    5  
107.904 ± 1.803  ops/ms
Float16VectorOperationsBenchmark.compressBenchmark         2057  thrpt    5   
46.988 ± 8.393  ops/ms
Float16VectorOperationsBenchmark.expandBenchmark           1024  thrpt    5  
109.750 ± 0.760  ops/ms
Float16VectorOperationsBenchmark.expandBenchmark           2057  thrpt    5   
36.400 ± 7.317  ops/ms
Withopt:-
Benchmark                                           (vectorDim)   Mode  Cnt     
 Score     Error   Units
Float16VectorOperationsBenchmark.compressBenchmark         1024  thrpt    5  
35222.954 ± 262.904  ops/ms
Float16VectorOperationsBenchmark.compressBenchmark         2057  thrpt    5   
3476.914 ±  27.990  ops/ms
Float16VectorOperationsBenchmark.expandBenchmark           1024  thrpt    5  
35857.758 ± 214.781  ops/ms
Float16VectorOperationsBenchmark.expandBenchmark           2057  thrpt    5   
4267.513 ±  33.399  ops/ms


Kindly 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:
 - 8393246: [VectorAPI] Intrinsify Float16Vector compress and expand APIs

Changes: https://git.openjdk.org/jdk/pull/33810/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=33810&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8393246
  Stats: 102 lines in 4 files changed: 95 ins; 5 del; 2 mod
  Patch: https://git.openjdk.org/jdk/pull/33810.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/33810/head:pull/33810

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

Reply via email to