RFR: 8318225: RISC-V: C2 UModI
Hamlin Li
mli at openjdk.org
Sat Oct 28 09:15:39 UTC 2023
On Sat, 28 Oct 2023 07:55:36 GMT, Fei Yang <fyang at openjdk.org> wrote:
>> Hi,
>> Can you review the change to add intrinsic for UModI and UModL?
>> ( This is a quite similar patch to https://github.com/openjdk/jdk/pull/16346, which addresses UDivI and UDivL, so for the performance consideration please also check the discussion in that pr. )
>> Thanks!
>>
>>
>> ## Tests
>>
>> ### Functionality
>> Run tests successfully found via `grep -nr test/jdk/ -we remainderUnsigned` and `grep -nr test/hotspot/ -we remainderUnsigned`
>>
>> ### Performance
>>
>> #### Long
>> **NOTE: for positive divisor, it's the common case; for negative divisor, it's a rare case**
>>
>> **Before**
>>
>> LongDivMod.testRemainderUnsigned 1024 mixed avgt 10 21222.911 ± 57.735 ns/op
>> LongDivMod.testRemainderUnsigned 1024 positive avgt 10 28841.429 ± 6.294 ns/op
>> LongDivMod.testRemainderUnsigned 1024 negative avgt 10 7733.038 ± 3.856 ns/op
>>
>>
>> **After**
>>
>> LongDivMod.testRemainderUnsigned 1024 mixed avgt 10 22666.448 ± 34.986 ns/op
>> LongDivMod.testRemainderUnsigned 1024 positive avgt 10 15967.846 ± 24.805 ns/op
>> LongDivMod.testRemainderUnsigned 1024 negative avgt 10 29507.865 ± 20.593 ns/op
>>
>>
>> #### Integer
>> **Before**
>>
>> IntegerDivMod.testRemainderUnsigned 1024 mixed avgt 10 23396.475 ± 24.065 ns/op
>> IntegerDivMod.testRemainderUnsigned 1024 positive avgt 10 16796.796 ± 3.389 ns/op
>> IntegerDivMod.testRemainderUnsigned 1024 negative avgt 10 30159.407 ± 6.716 ns/op
>>
>>
>> **After**
>>
>> IntegerDivMod.testRemainderUnsigned 1024 mixed avgt 10 23216.710 ± 14.351 ns/op
>> IntegerDivMod.testRemainderUnsigned 1024 positive avgt 10 16621.374 ± 3.203 ns/op
>> IntegerDivMod.testRemainderUnsigned 1024 negative avgt 10 30002.088 ± 41.212 ns/op
>
> And JMH result on hifive unmatched board for reference:
> Before:
>
> LongDivMod.testRemainderUnsigned 1024 mixed avgt 15 26377.726 ? 535.884 ns/op
> LongDivMod.testRemainderUnsigned 1024 positive avgt 15 36251.980 ? 23.214 ns/op
> LongDivMod.testRemainderUnsigned 1024 negative avgt 15 8441.098 ? 9.375 ns/op
> IntegerDivMod.testRemainderUnsigned 1024 mixed avgt 15 28501.570 ? 14.628 ns/op
> IntegerDivMod.testRemainderUnsigned 1024 positive avgt 15 20226.145 ? 19.112 ns/op
> IntegerDivMod.testRemainderUnsigned 1024 negative avgt 15 37002.906 ? 34.361 ns/op
>
> After:
>
> LongDivMod.testRemainderUnsigned 1024 mixed avgt 15 27140.089 ? 17.391 ns/op
> LongDivMod.testRemainderUnsigned 1024 positive avgt 15 18772.742 ? 18.943 ns/op
> LongDivMod.testRemainderUnsigned 1024 negative avgt 15 35780.310 ? 28.929 ns/op
> IntegerDivMod.testRemainderUnsigned 1024 mixed avgt 15 27864.893 ? 15.551 ns/op
> IntegerDivMod.testRemainderUnsigned 1024 positive avgt 15 19585.612 ? 17.651 ns/op
> IntegerDivMod.testRemainderUnsigned 1024 negative avgt 15 36366.167 ? 18.933 ns/op
@RealFYang Thanks for testing!
-------------
PR Comment: https://git.openjdk.org/jdk/pull/16394#issuecomment-1783755834
More information about the hotspot-dev
mailing list