RFR: 8281712: [REDO] AArch64: Implement string_compare intrinsic in SVE
Ningsheng Jian
njian at openjdk.java.net
Mon May 16 07:28:42 UTC 2022
This is the REDO of JDK-8269559 and JDK-8275448. Those two backouts finally turned to be some system zlib issue in AArch64 macOS, and is not related to the patch itself. See [1][2] for details.
This patch is generally the same as JDK-8275448, which uses SVE to optimize string_compare intrinsics for long string comparisons. I did a rebase with small tweaks to get better performance on recent Neoverse hardware. Test data on systems with different SVE vector sizes:
case delta size 128-bits 256-bits 512-bits
compareToLL 2 24 0.17% 0.58% 0.00%
compareToLL 2 36 0.00% 2.25% 0.04%
compareToLL 2 72 -4.40% 3.87% -12.82%
compareToLL 2 128 4.55% 58.31% 13.53%
compareToLL 2 256 19.39% 69.77% 82.03%
compareToLL 2 512 1.81% 68.38% 170.93%
compareToLU 2 24 25.57% 46.98% 54.61%
compareToLU 2 36 36.03% 70.26% 94.33%
compareToLU 2 72 35.86% 90.58% 146.04%
compareToLU 2 128 70.82% 119.19% 266.22%
compareToLU 2 256 80.77% 146.33% 420.01%
compareToLU 2 512 94.62% 171.72% 530.87%
compareToUL 2 24 20.82% 34.48% 62.14%
compareToUL 2 36 39.77% 60.79% 69.77%
compareToUL 2 72 35.46% 84.34% 121.90%
compareToUL 2 128 67.77% 110.97% 220.53%
compareToUL 2 256 77.05% 160.29% 331.30%
compareToUL 2 512 91.88% 184.57% 524.21%
compareToUU 2 24 -0.13% 0.40% 0.00%
compareToUU 2 36 -9.18% 12.84% -13.93%
compareToUU 2 72 1.67% 60.61% 6.69%
compareToUU 2 128 13.51% 60.33% 55.27%
compareToUU 2 256 2.55% 62.17% 153.26%
compareToUU 2 512 4.12% 68.62% 201.68%
JTreg tests passed on SVE hardware.
[1] https://bugs.openjdk.java.net/browse/JDK-8275448
[2] https://bugs.openjdk.java.net/browse/JDK-8282954
-------------
Commit messages:
- 8281712: [REDO] AArch64: Implement string_compare intrinsic in SVE
Changes: https://git.openjdk.java.net/jdk/pull/8723/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=8723&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8281712
Stats: 443 lines in 7 files changed: 433 ins; 0 del; 10 mod
Patch: https://git.openjdk.java.net/jdk/pull/8723.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/8723/head:pull/8723
PR: https://git.openjdk.java.net/jdk/pull/8723
More information about the hotspot-compiler-dev
mailing list