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
