RFR: 8353500: [s390x] Intrinsify Unsafe::setMemory

Amit Kumar amitkumar at openjdk.org
Mon Apr 7 11:55:48 UTC 2025


On Mon, 7 Apr 2025 08:44:07 GMT, Amit Kumar <amitkumar at openjdk.org> wrote:

> Unsafe::setMemory intrinsic implementation for s390x. 
> 
> Will update benchmark:

with patch: 

with the patch: 

Benchmark                       (aligned)  (size)  Mode  Cnt   Score   Error  Units
MemorySegmentZeroUnsafe.panama       true       1  avgt   30   2.351 ± 0.015  ns/op
MemorySegmentZeroUnsafe.panama       true       2  avgt   30   2.655 ± 0.020  ns/op
MemorySegmentZeroUnsafe.panama       true       3  avgt   30   2.614 ± 0.004  ns/op
MemorySegmentZeroUnsafe.panama       true       4  avgt   30   2.783 ± 0.007  ns/op
MemorySegmentZeroUnsafe.panama       true       5  avgt   30   2.760 ± 0.014  ns/op
MemorySegmentZeroUnsafe.panama       true       6  avgt   30   2.891 ± 0.006  ns/op
MemorySegmentZeroUnsafe.panama       true       7  avgt   30   2.697 ± 0.003  ns/op
MemorySegmentZeroUnsafe.panama       true       8  avgt   30   2.769 ± 0.007  ns/op
MemorySegmentZeroUnsafe.panama       true      15  avgt   30   3.689 ± 0.016  ns/op
MemorySegmentZeroUnsafe.panama       true      16  avgt   30   3.127 ± 0.009  ns/op
MemorySegmentZeroUnsafe.panama       true      63  avgt   30  15.900 ± 0.046  ns/op
MemorySegmentZeroUnsafe.panama       true      64  avgt   30   4.140 ± 0.057  ns/op
MemorySegmentZeroUnsafe.panama       true     255  avgt   30  53.748 ± 0.872  ns/op
MemorySegmentZeroUnsafe.panama       true     256  avgt   30   9.245 ± 0.013  ns/op
MemorySegmentZeroUnsafe.panama      false       1  avgt   30   2.346 ± 0.020  ns/op
MemorySegmentZeroUnsafe.panama      false       2  avgt   30   2.647 ± 0.005  ns/op
MemorySegmentZeroUnsafe.panama      false       3  avgt   30   2.617 ± 0.006  ns/op
MemorySegmentZeroUnsafe.panama      false       4  avgt   30   2.786 ± 0.008  ns/op
MemorySegmentZeroUnsafe.panama      false       5  avgt   30   2.755 ± 0.004  ns/op
MemorySegmentZeroUnsafe.panama      false       6  avgt   30   2.892 ± 0.005  ns/op
MemorySegmentZeroUnsafe.panama      false       7  avgt   30   2.699 ± 0.006  ns/op
MemorySegmentZeroUnsafe.panama      false       8  avgt   30   2.765 ± 0.004  ns/op
MemorySegmentZeroUnsafe.panama      false      15  avgt   30   3.691 ± 0.015  ns/op
MemorySegmentZeroUnsafe.panama      false      16  avgt   30   3.175 ± 0.053  ns/op
MemorySegmentZeroUnsafe.panama      false      63  avgt   30  15.892 ± 0.028  ns/op
MemorySegmentZeroUnsafe.panama      false      64  avgt   30  15.122 ± 0.347  ns/op
MemorySegmentZeroUnsafe.panama      false     255  avgt   30  53.588 ± 0.315  ns/op
MemorySegmentZeroUnsafe.panama      false     256  avgt   30  52.775 ± 0.169  ns/op
MemorySegmentZeroUnsafe.unsafe       true       1  avgt   30   2.333 ± 0.216  ns/op
MemorySegmentZeroUnsafe.unsafe       true       2  avgt   30   1.878 ± 0.092  ns/op
MemorySegmentZeroUnsafe.unsafe       true       3  avgt   30   2.301 ± 0.011  ns/op
MemorySegmentZeroUnsafe.unsafe       true       4  avgt   30   2.400 ± 0.201  ns/op
MemorySegmentZeroUnsafe.unsafe       true       5  avgt   30   2.666 ± 0.052  ns/op
MemorySegmentZeroUnsafe.unsafe       true       6  avgt   30   2.209 ± 0.084  ns/op
MemorySegmentZeroUnsafe.unsafe       true       7  avgt   30   3.086 ± 0.009  ns/op
MemorySegmentZeroUnsafe.unsafe       true       8  avgt   30   2.294 ± 0.217  ns/op
MemorySegmentZeroUnsafe.unsafe       true      15  avgt   30   4.631 ± 0.013  ns/op
MemorySegmentZeroUnsafe.unsafe       true      16  avgt   30   2.164 ± 0.124  ns/op
MemorySegmentZeroUnsafe.unsafe       true      63  avgt   30  13.959 ± 0.042  ns/op
MemorySegmentZeroUnsafe.unsafe       true      64  avgt   30   3.078 ± 0.211  ns/op
MemorySegmentZeroUnsafe.unsafe       true     255  avgt   30  51.435 ± 0.712  ns/op
MemorySegmentZeroUnsafe.unsafe       true     256  avgt   30   7.879 ± 0.140  ns/op
MemorySegmentZeroUnsafe.unsafe      false       1  avgt   30   2.486 ± 0.169  ns/op
MemorySegmentZeroUnsafe.unsafe      false       2  avgt   30   2.163 ± 0.065  ns/op
MemorySegmentZeroUnsafe.unsafe      false       3  avgt   30   2.307 ± 0.011  ns/op
MemorySegmentZeroUnsafe.unsafe      false       4  avgt   30   2.489 ± 0.121  ns/op
MemorySegmentZeroUnsafe.unsafe      false       5  avgt   30   2.653 ± 0.025  ns/op
MemorySegmentZeroUnsafe.unsafe      false       6  avgt   30   2.830 ± 0.161  ns/op
MemorySegmentZeroUnsafe.unsafe      false       7  avgt   30   3.086 ± 0.008  ns/op
MemorySegmentZeroUnsafe.unsafe      false       8  avgt   30   3.124 ± 0.189  ns/op
MemorySegmentZeroUnsafe.unsafe      false      15  avgt   30   4.634 ± 0.015  ns/op
MemorySegmentZeroUnsafe.unsafe      false      16  avgt   30   4.552 ± 0.194  ns/op
MemorySegmentZeroUnsafe.unsafe      false      63  avgt   30  13.977 ± 0.031  ns/op
MemorySegmentZeroUnsafe.unsafe      false      64  avgt   30  14.310 ± 0.177  ns/op
MemorySegmentZeroUnsafe.unsafe      false     255  avgt   30  52.244 ± 1.414  ns/op
MemorySegmentZeroUnsafe.unsafe      false     256  avgt   30  53.824 ± 0.580  ns/op
Finished running test 'micro:java.lang.foreign.MemorySegmentZeroUnsafe'



without patch: 


Benchmark                       (aligned)  (size)  Mode  Cnt   Score   Error  Units
MemorySegmentZeroUnsafe.panama       true       1  avgt   30   2.368 ± 0.029  ns/op
MemorySegmentZeroUnsafe.panama       true       2  avgt   30   2.647 ± 0.003  ns/op
MemorySegmentZeroUnsafe.panama       true       3  avgt   30   2.615 ± 0.007  ns/op
MemorySegmentZeroUnsafe.panama       true       4  avgt   30   2.782 ± 0.006  ns/op
MemorySegmentZeroUnsafe.panama       true       5  avgt   30   2.760 ± 0.014  ns/op
MemorySegmentZeroUnsafe.panama       true       6  avgt   30   2.889 ± 0.003  ns/op
MemorySegmentZeroUnsafe.panama       true       7  avgt   30   2.702 ± 0.017  ns/op
MemorySegmentZeroUnsafe.panama       true       8  avgt   30   2.766 ± 0.006  ns/op
MemorySegmentZeroUnsafe.panama       true      15  avgt   30   3.748 ± 0.045  ns/op
MemorySegmentZeroUnsafe.panama       true      16  avgt   30   3.122 ± 0.007  ns/op
MemorySegmentZeroUnsafe.panama       true      63  avgt   30  24.901 ± 0.106  ns/op
MemorySegmentZeroUnsafe.panama       true      64  avgt   30  20.841 ± 0.154  ns/op
MemorySegmentZeroUnsafe.panama       true     255  avgt   30  24.498 ± 0.233  ns/op
MemorySegmentZeroUnsafe.panama       true     256  avgt   30  24.290 ± 0.050  ns/op
MemorySegmentZeroUnsafe.panama      false       1  avgt   30   2.345 ± 0.012  ns/op
MemorySegmentZeroUnsafe.panama      false       2  avgt   30   2.648 ± 0.004  ns/op
MemorySegmentZeroUnsafe.panama      false       3  avgt   30   2.619 ± 0.008  ns/op
MemorySegmentZeroUnsafe.panama      false       4  avgt   30   2.784 ± 0.006  ns/op
MemorySegmentZeroUnsafe.panama      false       5  avgt   30   2.756 ± 0.004  ns/op
MemorySegmentZeroUnsafe.panama      false       6  avgt   30   2.892 ± 0.006  ns/op
MemorySegmentZeroUnsafe.panama      false       7  avgt   30   2.702 ± 0.011  ns/op
MemorySegmentZeroUnsafe.panama      false       8  avgt   30   2.765 ± 0.004  ns/op
MemorySegmentZeroUnsafe.panama      false      15  avgt   30   3.702 ± 0.006  ns/op
MemorySegmentZeroUnsafe.panama      false      16  avgt   30   3.121 ± 0.010  ns/op
MemorySegmentZeroUnsafe.panama      false      63  avgt   30  25.130 ± 0.058  ns/op
MemorySegmentZeroUnsafe.panama      false      64  avgt   30  24.891 ± 0.128  ns/op
MemorySegmentZeroUnsafe.panama      false     255  avgt   30  24.385 ± 0.061  ns/op
MemorySegmentZeroUnsafe.panama      false     256  avgt   30  24.444 ± 0.076  ns/op
MemorySegmentZeroUnsafe.unsafe       true       1  avgt   30  19.611 ± 0.495  ns/op
MemorySegmentZeroUnsafe.unsafe       true       2  avgt   30  18.797 ± 0.126  ns/op
MemorySegmentZeroUnsafe.unsafe       true       3  avgt   30  22.808 ± 0.075  ns/op
MemorySegmentZeroUnsafe.unsafe       true       4  avgt   30  18.797 ± 0.047  ns/op
MemorySegmentZeroUnsafe.unsafe       true       5  avgt   30  22.934 ± 0.114  ns/op
MemorySegmentZeroUnsafe.unsafe       true       6  avgt   30  19.580 ± 0.061  ns/op
MemorySegmentZeroUnsafe.unsafe       true       7  avgt   30  22.798 ± 0.063  ns/op
MemorySegmentZeroUnsafe.unsafe       true       8  avgt   30  18.029 ± 0.689  ns/op
MemorySegmentZeroUnsafe.unsafe       true      15  avgt   30  22.736 ± 0.034  ns/op
MemorySegmentZeroUnsafe.unsafe       true      16  avgt   30  17.799 ± 0.276  ns/op
MemorySegmentZeroUnsafe.unsafe       true      63  avgt   30  22.777 ± 0.033  ns/op
MemorySegmentZeroUnsafe.unsafe       true      64  avgt   30  19.271 ± 0.017  ns/op
MemorySegmentZeroUnsafe.unsafe       true     255  avgt   30  22.758 ± 0.068  ns/op
MemorySegmentZeroUnsafe.unsafe       true     256  avgt   30  22.752 ± 0.057  ns/op
MemorySegmentZeroUnsafe.unsafe      false       1  avgt   30  19.115 ± 0.069  ns/op
MemorySegmentZeroUnsafe.unsafe      false       2  avgt   30  22.795 ± 0.067  ns/op
MemorySegmentZeroUnsafe.unsafe      false       3  avgt   30  22.754 ± 0.057  ns/op
MemorySegmentZeroUnsafe.unsafe      false       4  avgt   30  22.797 ± 0.064  ns/op
MemorySegmentZeroUnsafe.unsafe      false       5  avgt   30  22.803 ± 0.078  ns/op
MemorySegmentZeroUnsafe.unsafe      false       6  avgt   30  22.738 ± 0.044  ns/op
MemorySegmentZeroUnsafe.unsafe      false       7  avgt   30  22.815 ± 0.074  ns/op
MemorySegmentZeroUnsafe.unsafe      false       8  avgt   30  22.732 ± 0.026  ns/op
MemorySegmentZeroUnsafe.unsafe      false      15  avgt   30  22.754 ± 0.063  ns/op
MemorySegmentZeroUnsafe.unsafe      false      16  avgt   30  22.743 ± 0.042  ns/op
MemorySegmentZeroUnsafe.unsafe      false      63  avgt   30  23.250 ± 1.193  ns/op
MemorySegmentZeroUnsafe.unsafe      false      64  avgt   30  22.838 ± 0.182  ns/op
MemorySegmentZeroUnsafe.unsafe      false     255  avgt   30  22.748 ± 0.033  ns/op
MemorySegmentZeroUnsafe.unsafe      false     256  avgt   30  22.740 ± 0.039  ns/op
Finished running test 'micro:java.lang.foreign.MemorySegmentZeroUnsafe'

-------------

PR Comment: https://git.openjdk.org/jdk/pull/24480#issuecomment-2783067395


More information about the hotspot-compiler-dev mailing list