> 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

Reply via email to