RFR: 8331558: AArch64: optimize integer remainder [v3]
Jin Guojie
duke at openjdk.org
Wed May 8 01:04:37 UTC 2024
> 8331558: AArch64: optimize integer remainder
> On some Arm processors, a separate multiply/subtract is actually faster than the combined instruction.
>
> 8331556: AArch64: CPU_Model support for Neoverse N1/N2/V1/V2
> Add full platform coverage for Neoverse variants in vm_version.?pp
>
> The following test has passed, which shows definite performance improvement.
>
> make test TEST="micro:java.lang.IntegerDivMod"
> make test TEST="micro:java.lang.LongDivMod"
>
> * IntegerDivMod.testDivideRemainderUnsigned
> baseline(ns/ops) 2223
> with this pacth(ns/ops) 1885
> improvement(%) 17.93%
>
> * IntegerDivMod.testRemainderUnsigned
> baseline(ns/ops) 2225
> with this pacth(ns/ops) 1885
> improvement(%) 18.03%
>
> * LongDivMod.testDivideRemainderUnsigned
> baseline(ns/ops) 2231
> with this pacth(ns/ops) 1894
> improvement(%) 17.79%
>
> * LongDivMod.testRemainderUnsigned
> baseline(ns/ops) 2232
> with this pacth(ns/ops) 1891
> improvement(%) 18.03%
Jin Guojie has updated the pull request incrementally with one additional commit since the last revision:
Applicable platforms expanded to the entire neoverse family
Even on the V series (V1 and V2), both sdiv/udiv and msub instructions are executed in M0 unit (Integer multi cycle). It should benefit the V series as well.
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/19093/files
- new: https://git.openjdk.org/jdk/pull/19093/files/786d5016..d8b8dbfe
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=19093&range=02
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=19093&range=01-02
Stats: 6 lines in 1 file changed: 0 ins; 0 del; 6 mod
Patch: https://git.openjdk.org/jdk/pull/19093.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/19093/head:pull/19093
PR: https://git.openjdk.org/jdk/pull/19093
More information about the hotspot-dev
mailing list