> 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.
Galder Zamarreño has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 22 additional commits since the last revision: - Merge branch 'master' into topic.fp-bits-vector - Add more IR node positive assertions - Fix source of data for benchmarks - Refactor benchmarks to TypeVectorOperations - Check at the very least that auto vectorization is supported - Avoid VectorReinterpret::implemented - Refactor and add copyright header - Rephrase comment - Removed unnecessary assert methods - Adjust IR test after adding Move* vector support - ... and 12 more: https://git.openjdk.org/jdk/compare/88efdd03...e7e4d801 ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26457/files - new: https://git.openjdk.org/jdk/pull/26457/files/01fd5ba0..e7e4d801 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26457&range=04 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26457&range=03-04 Stats: 58306 lines in 1513 files changed: 32401 ins; 19557 del; 6348 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