RFR: 8269559: AArch64: Implement string_compare intrinsic in SVE [v2]
github.com+78814694+tatwaichong at openjdk.java.net
Tue Sep 28 02:06:03 UTC 2021
On Mon, 23 Aug 2021 21:48:01 GMT, TatWai Chong <github.com+78814694+tatwaichong at openjdk.org> 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  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
>>  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:
> Restore the removal of vtmp3 (=V2) as it is still used by the non-SVE compare-long-strings stub.
> And remove the assertion in `string_compare` since it won't help as the registers
> used in the stub are fixed.
@theRealAph Hello, Andrew. I'm wondering are you interested in reviewing this patch? I believe your feedback and comment are useful to it.
More information about the core-libs-dev