RFR: 8351140: RISC-V: Intrinsify Unsafe::setMemory [v14]
Anjian-Wen
duke at openjdk.org
Thu May 22 03:05:51 UTC 2025
On Wed, 21 May 2025 12:43:46 GMT, Hamlin Li <mli at openjdk.org> wrote:
> > The last change on the code after L_fill_elements make the byte store 1 by 1, it seems that 'true' or 'false' may not affect it when the count is less or equal 7?
>
> Ah, I see.
>
> > I think the above align section is like a fast path which can reduce instruction for the count is large than 7, so we may should check the result when count > 7 ? besides, I'm testing on that right now(delete the align tail part), we can find it out later
>
> Thanks, let's see the test result.
This is the result without 'fast' path,it shows that when count is 255 and 63, the result change 52 -> 54 or 50 -> 53.
This change will lead to a deterioration of the results, but the degree of deterioration is relatively small
Benchmark (aligned) (size) Mode Cnt Score Error Units
MemorySegmentFillUnsafe.panama true 1 avgt 30 23.865 ± 0.325 ns/op
MemorySegmentFillUnsafe.panama true 2 avgt 30 20.676 ± 0.006 ns/op
MemorySegmentFillUnsafe.panama true 3 avgt 30 20.850 ± 0.108 ns/op
MemorySegmentFillUnsafe.panama true 4 avgt 30 19.655 ± 0.227 ns/op
MemorySegmentFillUnsafe.panama true 5 avgt 30 21.168 ± 0.571 ns/op
MemorySegmentFillUnsafe.panama true 6 avgt 30 20.840 ± 0.092 ns/op
MemorySegmentFillUnsafe.panama true 7 avgt 30 21.399 ± 0.093 ns/op
MemorySegmentFillUnsafe.panama true 8 avgt 30 25.165 ± 0.082 ns/op
MemorySegmentFillUnsafe.panama true 15 avgt 30 30.974 ± 0.159 ns/op
MemorySegmentFillUnsafe.panama true 16 avgt 30 26.323 ± 0.014 ns/op
MemorySegmentFillUnsafe.panama true 63 avgt 30 48.771 ± 0.267 ns/op
MemorySegmentFillUnsafe.panama true 64 avgt 30 49.583 ± 0.459 ns/op
MemorySegmentFillUnsafe.panama true 255 avgt 30 63.744 ± 0.158 ns/op
MemorySegmentFillUnsafe.panama true 256 avgt 30 62.142 ± 0.202 ns/op
MemorySegmentFillUnsafe.panama false 1 avgt 30 23.184 ± 0.006 ns/op
MemorySegmentFillUnsafe.panama false 2 avgt 30 20.673 ± 0.005 ns/op
MemorySegmentFillUnsafe.panama false 3 avgt 30 20.708 ± 0.044 ns/op
MemorySegmentFillUnsafe.panama false 4 avgt 30 19.438 ± 0.037 ns/op
MemorySegmentFillUnsafe.panama false 5 avgt 30 20.857 ± 0.135 ns/op
MemorySegmentFillUnsafe.panama false 6 avgt 30 20.966 ± 0.260 ns/op
MemorySegmentFillUnsafe.panama false 7 avgt 30 21.327 ± 0.031 ns/op
MemorySegmentFillUnsafe.panama false 8 avgt 30 25.064 ± 0.007 ns/op
MemorySegmentFillUnsafe.panama false 15 avgt 30 30.884 ± 0.134 ns/op
MemorySegmentFillUnsafe.panama false 16 avgt 30 26.942 ± 0.008 ns/op
MemorySegmentFillUnsafe.panama false 63 avgt 30 48.329 ± 0.157 ns/op
MemorySegmentFillUnsafe.panama false 64 avgt 30 48.248 ± 0.232 ns/op
MemorySegmentFillUnsafe.panama false 255 avgt 30 62.617 ± 0.162 ns/op
MemorySegmentFillUnsafe.panama false 256 avgt 30 62.126 ± 0.375 ns/op
MemorySegmentFillUnsafe.unsafe true 1 avgt 30 21.298 ± 0.005 ns/op
MemorySegmentFillUnsafe.unsafe true 2 avgt 30 23.749 ± 0.303 ns/op
MemorySegmentFillUnsafe.unsafe true 3 avgt 30 22.139 ± 0.194 ns/op
MemorySegmentFillUnsafe.unsafe true 4 avgt 30 23.803 ± 0.015 ns/op
MemorySegmentFillUnsafe.unsafe true 5 avgt 30 23.810 ± 0.009 ns/op
MemorySegmentFillUnsafe.unsafe true 6 avgt 30 24.698 ± 0.225 ns/op
MemorySegmentFillUnsafe.unsafe true 7 avgt 30 24.652 ± 0.199 ns/op
MemorySegmentFillUnsafe.unsafe true 8 avgt 30 34.475 ± 0.027 ns/op
MemorySegmentFillUnsafe.unsafe true 15 avgt 30 36.370 ± 0.053 ns/op
MemorySegmentFillUnsafe.unsafe true 16 avgt 30 34.472 ± 0.035 ns/op
MemorySegmentFillUnsafe.unsafe true 63 avgt 30 38.239 ± 0.055 ns/op
MemorySegmentFillUnsafe.unsafe true 64 avgt 30 39.208 ± 0.041 ns/op
MemorySegmentFillUnsafe.unsafe true 255 avgt 30 53.486 ± 0.239 ns/op
MemorySegmentFillUnsafe.unsafe true 256 avgt 30 51.814 ± 0.091 ns/op
MemorySegmentFillUnsafe.unsafe false 1 avgt 30 21.512 ± 0.200 ns/op
MemorySegmentFillUnsafe.unsafe false 2 avgt 30 23.700 ± 0.264 ns/op
MemorySegmentFillUnsafe.unsafe false 3 avgt 30 22.036 ± 0.146 ns/op
MemorySegmentFillUnsafe.unsafe false 4 avgt 30 23.809 ± 0.019 ns/op
MemorySegmentFillUnsafe.unsafe false 5 avgt 30 23.596 ± 0.203 ns/op
MemorySegmentFillUnsafe.unsafe false 6 avgt 30 24.735 ± 0.249 ns/op
MemorySegmentFillUnsafe.unsafe false 7 avgt 30 24.438 ± 0.008 ns/op
MemorySegmentFillUnsafe.unsafe false 8 avgt 30 31.339 ± 0.012 ns/op
MemorySegmentFillUnsafe.unsafe false 15 avgt 30 37.700 ± 0.352 ns/op
MemorySegmentFillUnsafe.unsafe false 16 avgt 30 36.885 ± 0.053 ns/op
MemorySegmentFillUnsafe.unsafe false 63 avgt 30 39.048 ± 0.078 ns/op
MemorySegmentFillUnsafe.unsafe false 64 avgt 30 39.057 ± 0.367 ns/op
MemorySegmentFillUnsafe.unsafe false 255 avgt 30 54.066 ± 0.434 ns/op
MemorySegmentFillUnsafe.unsafe false 256 avgt 30 53.200 ± 0.065 ns/op
-------------
PR Comment: https://git.openjdk.org/jdk/pull/23890#issuecomment-2899763003
More information about the hotspot-compiler-dev
mailing list