I've added support to vectorize `MoveD2L`, `MoveL2D`, `MoveF2I` and `MoveI2F` nodes. The implementation follows a similar pattern to what is done with conversion (`Conv*`) nodes. The tests in `TestCompatibleUseDefTypeSize` have been updated with the new expectations.
Also added a JMH benchmark which measures throughput (the higher the number the better) for methods that exercise these nodes. On darwin/aarch64 it shows: Benchmark (seed) (size) Mode Cnt Base Patch Units Diff VectorBitConversion.doubleToLongBits 0 2048 thrpt 8 1168.782 1157.717 ops/ms -1% VectorBitConversion.doubleToRawLongBits 0 2048 thrpt 8 3999.387 7353.936 ops/ms +83% VectorBitConversion.floatToIntBits 0 2048 thrpt 8 1200.338 1188.206 ops/ms -1% VectorBitConversion.floatToRawIntBits 0 2048 thrpt 8 4058.248 14792.474 ops/ms +264% VectorBitConversion.intBitsToFloat 0 2048 thrpt 8 3050.313 14984.246 ops/ms +391% VectorBitConversion.longBitsToDouble 0 2048 thrpt 8 3022.691 7379.360 ops/ms +144% The improvements observed are a result of vectorization. The lack of vectorization in `doubleToLongBits` and `floatToIntBits` demonstrates that these changes do not affect their performance. These methods do not vectorize because of flow control. I've run the tier1-3 tests on linux/aarch64 and didn't observe any regressions. ------------- Commit messages: - Removed unnecessary assert methods - Adjust IR test after adding Move* vector support - Delete IR test because it's already covered by other test - Merge branch 'master' into topic.fp-bits-vector - Add longBitsToDouble and intBitsToFloat - Fix test for vectorized and add floatToRawIntBits - Add basic IR test - Add JMH benchmark for doubleTo*LongBits - Support doubleToRawLongBits - add floatToIntBits benchmark - ... and 4 more: https://git.openjdk.org/jdk/compare/c68697e1...b6ec784e Changes: https://git.openjdk.org/jdk/pull/26457/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26457&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8329077 Stats: 164 lines in 7 files changed: 153 ins; 4 del; 7 mod Patch: https://git.openjdk.org/jdk/pull/26457.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26457/head:pull/26457 PR: https://git.openjdk.org/jdk/pull/26457