> Vector API test operations (IS_DEFAULT, IS_FINITE, IS_INFINITE, IS_NAN and > IS_NEGATIVE) are computed in three steps: > 1) reinterpreting the floating point vectors as integral vectors (int/long) > 2) perform the test in integer domain to get a int/long mask > 3) reinterpret the int/long mask as float/double mask > Step 3) currently is very slow. It can be optimized by modifying the Java > code to utilize the existing reinterpret intrinsic. > > For the VectorTestPerf attached to the JBS for JDK-8267190, the performance > improves as follows: > > Base: > Benchmark (size) Mode Cnt Score Error Units > VectorTestPerf.IS_DEFAULT 1024 thrpt 5 223.156 ± 90.452 ops/ms > VectorTestPerf.IS_FINITE 1024 thrpt 5 223.841 ± 91.685 ops/ms > VectorTestPerf.IS_INFINITE 1024 thrpt 5 224.561 ± 83.890 ops/ms > VectorTestPerf.IS_NAN 1024 thrpt 5 223.777 ± 70.629 ops/ms > VectorTestPerf.IS_NEGATIVE 1024 thrpt 5 218.392 ± 79.806 ops/ms > > With patch: > Benchmark (size) Mode Cnt Score Error Units > VectorTestPerf.IS_DEFAULT 1024 thrpt 5 8812.357 ± 40.477 ops/ms > VectorTestPerf.IS_FINITE 1024 thrpt 5 7425.739 ± 296.622 ops/ms > VectorTestPerf.IS_INFINITE 1024 thrpt 5 8932.730 ± 269.988 ops/ms > VectorTestPerf.IS_NAN 1024 thrpt 5 8574.872 ± 498.649 ops/ms > VectorTestPerf.IS_NEGATIVE 1024 thrpt 5 8838.400 ± 11.849 ops/ms > > Best Regards, > Sandhya
Sandhya Viswanathan has updated the pull request incrementally with one additional commit since the last revision: Implement review comments ------------- Changes: - all: https://git.openjdk.java.net/jdk/pull/4039/files - new: https://git.openjdk.java.net/jdk/pull/4039/files/b506fc45..f318c0ee Webrevs: - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=4039&range=02 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=4039&range=01-02 Stats: 372 lines in 31 files changed: 31 ins; 62 del; 279 mod Patch: https://git.openjdk.java.net/jdk/pull/4039.diff Fetch: git fetch https://git.openjdk.java.net/jdk pull/4039/head:pull/4039 PR: https://git.openjdk.java.net/jdk/pull/4039