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
