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