RFR: 8287925: AArch64: intrinsics for compareUnsigned method in Integer and Long [v3]

Hao Sun haosun at openjdk.org
Mon Jan 9 09:53:59 UTC 2023


On Mon, 28 Nov 2022 10:40:56 GMT, Andrew Haley <aph at openjdk.org> wrote:

>> Hao Sun has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains four additional commits since the last revision:
>> 
>>  - Update the copyright year to 2023
>>  - Merge branch 'master' into jdk-8287925
>>  - immIAddSub is always positive
>>    
>>    As commented by aph, "immIAddSub" is always positive and we needn't
>>    check the signedness.
>>    
>>    Besides, more "comparing reg with imm" test cases are added.
>>  - 8287925: AArch64: intrinsics for compareUnsigned method in Integer and Long
>>    
>>    x86 implemented the intrinsics for compareUnsigned() method in Integer
>>    and Long. See JDK-8283726. We add the corresponding AArch64 backend
>>    support in this patch.
>>    
>>    Note-1: minor style issues are fixed for CmpL3 related rules.
>>    
>>    Note-2: Jtreg case TestCompareUnsigned.java is updated to cover the
>>    matching rules for "comparing reg with imm" case.
>>    
>>    Testing: tier1~3 passed on Linux/AArch64 platform with no new failures.
>>    
>>    Following is the performance data for the JMH case:
>>    
>>    ```
>>                                                           Before          After
>>    Benchmark                         (size) Mode  Cnt   Score   Error  Score   Error  Units
>>    Integers.compareUnsignedDirect      500  avgt    5   0.994 ± 0.001  0.872 ± 0.015  us/op
>>    Integers.compareUnsignedIndirect    500  avgt    5   0.991 ± 0.001  0.833 ± 0.055  us/op
>>    Longs.compareUnsignedDirect         500  avgt    5   1.052 ± 0.001  0.974 ± 0.057  us/op
>>    Longs.compareUnsignedIndirect       500  avgt    5   1.053 ± 0.001  0.916 ± 0.038  us/op
>>    ```
>
> src/hotspot/cpu/aarch64/aarch64.ad line 9734:
> 
>> 9732:     } else {
>> 9733:       __ subs(zr, $src1$$Register, con);
>> 9734:     }
> 
> Suggestion:
> 
>     __ subs(zr, $src1$$Register, (int32_t)$src2$$constant);
> 
> should work here.

Updated.

-------------

PR: https://git.openjdk.org/jdk/pull/11383


More information about the hotspot-compiler-dev mailing list