RFR: 8351140: RISC-V: Intrinsify Unsafe::setMemory [v9]
Anjian-Wen
duke at openjdk.org
Fri May 16 08:11:16 UTC 2025
On Wed, 14 May 2025 02:50:53 GMT, Anjian-Wen <duke at openjdk.org> wrote:
>> From [JDK-8329331](https://bugs.openjdk.org/browse/JDK-8329331), add riscv unsafe::setMemory intrinsic’s generator generate_unsafe_setmemory. This intrinsic optimizes about quite a lot unsafe setmemory time
>>
>> on my musebook, the JMH test micro:java.lang.foreign.MemorySegmentZeroUnsafe shows below
>>
>> before the patch
>>
>> Benchmark (aligned) (size) Mode Cnt Score Error Units
>> MemorySegmentZeroUnsafe.panama true 1 avgt 30 24.198 ± 0.392 ns/op
>> MemorySegmentZeroUnsafe.panama true 2 avgt 30 20.688 ± 0.013 ns/op
>> MemorySegmentZeroUnsafe.panama true 3 avgt 30 20.703 ± 0.045 ns/op
>> MemorySegmentZeroUnsafe.panama true 4 avgt 30 20.053 ± 0.016 ns/op
>> MemorySegmentZeroUnsafe.panama true 5 avgt 30 20.682 ± 0.016 ns/op
>> MemorySegmentZeroUnsafe.panama true 6 avgt 30 20.732 ± 0.061 ns/op
>> MemorySegmentZeroUnsafe.panama true 7 avgt 30 21.403 ± 0.096 ns/op
>> MemorySegmentZeroUnsafe.panama true 8 avgt 30 25.268 ± 0.197 ns/op
>> MemorySegmentZeroUnsafe.panama true 15 avgt 30 27.481 ± 0.195 ns/op
>> MemorySegmentZeroUnsafe.panama true 16 avgt 30 27.577 ± 0.019 ns/op
>> MemorySegmentZeroUnsafe.panama true 63 avgt 30 208.893 ± 2.795 ns/op
>> MemorySegmentZeroUnsafe.panama true 64 avgt 30 199.167 ± 0.936 ns/op
>> MemorySegmentZeroUnsafe.panama true 255 avgt 30 220.672 ± 0.879 ns/op
>> MemorySegmentZeroUnsafe.panama true 256 avgt 30 246.256 ± 0.756 ns/op
>> MemorySegmentZeroUnsafe.panama false 1 avgt 30 23.849 ± 0.088 ns/op
>> MemorySegmentZeroUnsafe.panama false 2 avgt 30 20.671 ± 0.006 ns/op
>> MemorySegmentZeroUnsafe.panama false 3 avgt 30 20.694 ± 0.037 ns/op
>> MemorySegmentZeroUnsafe.panama false 4 avgt 30 20.048 ± 0.010 ns/op
>> MemorySegmentZeroUnsafe.panama false 5 avgt 30 20.684 ± 0.020 ns/op
>> MemorySegmentZeroUnsafe.panama false 6 avgt 30 20.685 ± 0.016 ns/op
>> MemorySegmentZeroUnsafe.panama false 7 avgt 30 21.383 ± 0.086 ns/op
>> MemorySegmentZeroUnsafe.panama false 8 avgt 30 25.684 ± 0.006 ns/op
>> MemorySegmentZeroUnsafe.panama false 15 avgt 30 27.593 ± 0.043 ns/op
>> MemorySegmentZeroUnsafe.panama false 16 avgt 30 28.437 ± 0.228 ns/o...
>
> Anjian-Wen has updated the pull request incrementally with one additional commit since the last revision:
>
> fix bug and delete some useless code
With the latest update, the JMH test micro:java.lang.foreign.MemorySegmentZeroUnsafe shows below
Benchmark (aligned) (size) Mode Cnt Score Error Units
MemorySegmentZeroUnsafe.panama true 1 avgt 30 24.387 ± 0.564 ns/op
MemorySegmentZeroUnsafe.panama true 2 avgt 30 20.690 ± 0.015 ns/op
MemorySegmentZeroUnsafe.panama true 3 avgt 30 20.680 ± 0.008 ns/op
MemorySegmentZeroUnsafe.panama true 4 avgt 30 20.051 ± 0.008 ns/op
MemorySegmentZeroUnsafe.panama true 5 avgt 30 20.751 ± 0.098 ns/op
MemorySegmentZeroUnsafe.panama true 6 avgt 30 20.805 ± 0.091 ns/op
MemorySegmentZeroUnsafe.panama true 7 avgt 30 21.328 ± 0.041 ns/op
MemorySegmentZeroUnsafe.panama true 8 avgt 30 25.688 ± 0.007 ns/op
MemorySegmentZeroUnsafe.panama true 15 avgt 30 27.602 ± 0.040 ns/op
MemorySegmentZeroUnsafe.panama true 16 avgt 30 27.590 ± 0.020 ns/op
MemorySegmentZeroUnsafe.panama true 63 avgt 30 45.911 ± 0.765 ns/op
MemorySegmentZeroUnsafe.panama true 64 avgt 30 47.624 ± 0.134 ns/op
MemorySegmentZeroUnsafe.panama true 255 avgt 30 60.191 ± 0.077 ns/op
MemorySegmentZeroUnsafe.panama true 256 avgt 30 60.438 ± 0.394 ns/op
MemorySegmentZeroUnsafe.panama false 1 avgt 30 23.857 ± 0.055 ns/op
MemorySegmentZeroUnsafe.panama false 2 avgt 30 20.600 ± 0.105 ns/op
MemorySegmentZeroUnsafe.panama false 3 avgt 30 20.678 ± 0.010 ns/op
MemorySegmentZeroUnsafe.panama false 4 avgt 30 20.189 ± 0.145 ns/op
MemorySegmentZeroUnsafe.panama false 5 avgt 30 20.873 ± 0.243 ns/op
MemorySegmentZeroUnsafe.panama false 6 avgt 30 20.764 ± 0.091 ns/op
MemorySegmentZeroUnsafe.panama false 7 avgt 30 21.374 ± 0.087 ns/op
MemorySegmentZeroUnsafe.panama false 8 avgt 30 25.705 ± 0.025 ns/op
MemorySegmentZeroUnsafe.panama false 15 avgt 30 27.821 ± 0.148 ns/op
MemorySegmentZeroUnsafe.panama false 16 avgt 30 28.608 ± 0.202 ns/op
MemorySegmentZeroUnsafe.panama false 63 avgt 30 47.337 ± 0.250 ns/op
MemorySegmentZeroUnsafe.panama false 64 avgt 30 48.475 ± 0.272 ns/op
MemorySegmentZeroUnsafe.panama false 255 avgt 30 61.789 ± 0.344 ns/op
MemorySegmentZeroUnsafe.panama false 256 avgt 30 63.718 ± 0.549 ns/op
MemorySegmentZeroUnsafe.unsafe true 1 avgt 30 19.476 ± 0.059 ns/op
MemorySegmentZeroUnsafe.unsafe true 2 avgt 30 21.928 ± 0.009 ns/op
MemorySegmentZeroUnsafe.unsafe true 3 avgt 30 24.410 ± 0.513 ns/op
MemorySegmentZeroUnsafe.unsafe true 4 avgt 30 26.510 ± 0.577 ns/op
MemorySegmentZeroUnsafe.unsafe true 5 avgt 30 26.578 ± 0.211 ns/op
MemorySegmentZeroUnsafe.unsafe true 6 avgt 30 27.618 ± 0.066 ns/op
MemorySegmentZeroUnsafe.unsafe true 7 avgt 30 28.820 ± 0.009 ns/op
MemorySegmentZeroUnsafe.unsafe true 8 avgt 30 33.219 ± 0.021 ns/op
MemorySegmentZeroUnsafe.unsafe true 15 avgt 30 33.873 ± 0.077 ns/op
MemorySegmentZeroUnsafe.unsafe true 16 avgt 30 33.325 ± 0.119 ns/op
MemorySegmentZeroUnsafe.unsafe true 63 avgt 30 37.172 ± 0.721 ns/op
MemorySegmentZeroUnsafe.unsafe true 64 avgt 30 38.247 ± 0.044 ns/op
MemorySegmentZeroUnsafe.unsafe true 255 avgt 30 50.822 ± 0.174 ns/op
MemorySegmentZeroUnsafe.unsafe true 256 avgt 30 50.696 ± 0.139 ns/op
MemorySegmentZeroUnsafe.unsafe false 1 avgt 30 19.423 ± 0.008 ns/op
MemorySegmentZeroUnsafe.unsafe false 2 avgt 30 22.138 ± 0.199 ns/op
MemorySegmentZeroUnsafe.unsafe false 3 avgt 30 23.928 ± 0.140 ns/op
MemorySegmentZeroUnsafe.unsafe false 4 avgt 30 26.939 ± 0.331 ns/op
MemorySegmentZeroUnsafe.unsafe false 5 avgt 30 26.362 ± 0.066 ns/op
MemorySegmentZeroUnsafe.unsafe false 6 avgt 30 27.635 ± 0.084 ns/op
MemorySegmentZeroUnsafe.unsafe false 7 avgt 30 29.030 ± 0.202 ns/op
MemorySegmentZeroUnsafe.unsafe false 8 avgt 30 31.390 ± 0.053 ns/op
MemorySegmentZeroUnsafe.unsafe false 15 avgt 30 35.823 ± 0.133 ns/op
MemorySegmentZeroUnsafe.unsafe false 16 avgt 30 37.005 ± 0.079 ns/op
MemorySegmentZeroUnsafe.unsafe false 63 avgt 30 38.177 ± 0.334 ns/op
MemorySegmentZeroUnsafe.unsafe false 64 avgt 30 39.484 ± 0.019 ns/op
MemorySegmentZeroUnsafe.unsafe false 255 avgt 30 52.219 ± 0.176 ns/op
MemorySegmentZeroUnsafe.unsafe false 256 avgt 30 53.325 ± 0.066 ns/op
-------------
PR Comment: https://git.openjdk.org/jdk/pull/23890#issuecomment-2885970449
More information about the hotspot-compiler-dev
mailing list