On 14/10/2021 4:28 pm, Nick Gasson wrote:
On Thu, 14 Oct 2021 01:17:17 GMT, TatWai Chong <d...@openjdk.java.net> wrote:
This patch implements string_compare intrinsic in SVE.
It supports all LL, LU, UL and UU comparisons.
As we haven't found an existing benchmark to measure performance impact,
we created a benchmark derived from the test [1] for this evaluation.
This benchmark is attached to this patch.
Besides, remove the unused temporary register `vtmp3` from the existing
match rules for StrCmp.
The result below shows all varients can be benefited largely.
Command: make exploded-test TEST="micro:StringCompareToDifferentLength"
Benchmark (size) Mode Cnt Score Speedup Units
compareToLL 24 avgt 10 1.0x ms/op
compareToLL 36 avgt 10 1.0x ms/op
compareToLL 72 avgt 10 1.0x ms/op
compareToLL 128 avgt 10 1.4x ms/op
compareToLL 256 avgt 10 1.8x ms/op
compareToLL 512 avgt 10 2.7x ms/op
compareToLU 24 avgt 10 1.6x ms/op
compareToLU 36 avgt 10 1.8x ms/op
compareToLU 72 avgt 10 2.3x ms/op
compareToLU 128 avgt 10 3.8x ms/op
compareToLU 256 avgt 10 4.7x ms/op
compareToLU 512 avgt 10 6.3x ms/op
compareToUL 24 avgt 10 1.6x ms/op
compareToUL 36 avgt 10 1.7x ms/op
compareToUL 72 avgt 10 2.2x ms/op
compareToUL 128 avgt 10 3.3x ms/op
compareToUL 256 avgt 10 4.4x ms/op
compareToUL 512 avgt 10 6.1x ms/op
compareToUU 24 avgt 10 1.0x ms/op
compareToUU 36 avgt 10 1.0x ms/op
compareToUU 72 avgt 10 1.4x ms/op
compareToUU 128 avgt 10 2.2x ms/op
compareToUU 256 avgt 10 2.6x ms/op
compareToUU 512 avgt 10 3.7x ms/op
[1]
https://github.com/openjdk/jdk/blob/master/test/hotspot/jtreg/compiler/intrinsics/string/TestStringCompareToDifferentLength.java
TatWai Chong has updated the pull request incrementally with one additional
commit since the last revision:
Replace `sve_cmpne` with up-to-date `sve_cmp`.
Hm, I didn't see anything like that when we tested this patch internally. I'll
create another PR to revert it for now.
Filed: https://bugs.openjdk.java.net/browse/JDK-8275263
If a backout is needed then it should be converted to a "backout" issue per:
https://openjdk.java.net/guide/index.html#backing-out-a-change
Thanks,
David
-------------
PR: https://git.openjdk.java.net/jdk/pull/5129