RFR: 8269559: AArch64: Implement string_compare intrinsic in SVE [v4]

David Holmes david.holmes at oracle.com
Thu Oct 14 06:38:26 UTC 2021


On 14/10/2021 4:28 pm, Nick Gasson wrote:
> On Thu, 14 Oct 2021 01:17:17 GMT, TatWai Chong <duke at 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
> 


More information about the core-libs-dev mailing list