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

Amit Kumar amitkumar at openjdk.org
Thu Apr 10 10:17:44 UTC 2025


On Wed, 9 Apr 2025 08:57:40 GMT, Amit Kumar <amitkumar at openjdk.org> wrote:

>> Unsafe::setMemory intrinsic implementation for s390x. 
>> 
>> Stub Code: 
>> 
>> 
>> StubRoutines::unsafe_setmemory [0x000003ffb04b63c0, 0x000003ffb04b64d0] (272 bytes)
>> --------------------------------------------------------------------------------
>>   0x000003ffb04b63c0:   ogrk	%r1,%r2,%r3
>>   0x000003ffb04b63c4:   nill	%r1,7
>>   0x000003ffb04b63c8:   je	0x000003ffb04b6410
>>   0x000003ffb04b63cc:   nill	%r1,3
>>   0x000003ffb04b63d0:   je	0x000003ffb04b6460
>>   0x000003ffb04b63d4:   nill	%r1,1
>>   0x000003ffb04b63d8:   jlh	0x000003ffb04b64a0
>>   0x000003ffb04b63dc:   risbg	%r4,%r4,48,55,8
>>   0x000003ffb04b63e2:   risbgz	%r1,%r3,32,63,62
>>   0x000003ffb04b63e8:   je	0x000003ffb04b6402
>>   0x000003ffb04b63ec:   nopr
>>   0x000003ffb04b63ee:   nopr
>>   0x000003ffb04b63f0:   sth	%r4,0(%r2)
>>   0x000003ffb04b63f4:   sth	%r4,2(%r2)
>>   0x000003ffb04b63f8:   agfi	%r2,4
>>   0x000003ffb04b63fe:   brct	%r1,0x000003ffb04b63f0
>>   0x000003ffb04b6402:   nilf	%r3,2
>>   0x000003ffb04b6408:   ber	%r14
>>   0x000003ffb04b640a:   sth	%r4,0(%r2)
>>   0x000003ffb04b640e:   br	%r14
>>   0x000003ffb04b6410:   risbg	%r4,%r4,48,55,8
>>   0x000003ffb04b6416:   risbg	%r4,%r4,32,47,16
>>   0x000003ffb04b641c:   risbg	%r4,%r4,0,31,32
>>   0x000003ffb04b6422:   risbgz	%r1,%r3,32,63,60
>>   0x000003ffb04b6428:   je	0x000003ffb04b6446
>>   0x000003ffb04b642c:   nopr
>>   0x000003ffb04b642e:   nopr
>>   0x000003ffb04b6430:   stg	%r4,0(%r2)
>>   0x000003ffb04b6436:   stg	%r4,8(%r2)
>>   0x000003ffb04b643c:   agfi	%r2,16
>>   0x000003ffb04b6442:   brct	%r1,0x000003ffb04b6430
>>   0x000003ffb04b6446:   nilf	%r3,8
>>   0x000003ffb04b644c:   ber	%r14
>>   0x000003ffb04b644e:   stg	%r4,0(%r2)
>>   0x000003ffb04b6454:   br	%r14
>>   0x000003ffb04b6456:   nopr
>>   0x000003ffb04b6458:   nopr
>>   0x000003ffb04b645a:   nopr
>>   0x000003ffb04b645c:   nopr
>>   0x000003ffb04b645e:   nopr
>>   0x000003ffb04b6460:   risbg	%r4,%r4,48,55,8
>>   0x000003ffb04b6466:   risbg	%r4,%r4,32,47,16
>>   0x000003ffb04b646c:   risbgz	%r1,%r3,32,63,61
>>   0x000003ffb04b6472:   je	0x000003ffb04b6492
>>   0x000003ffb04b6476:   nopr
>>   0x000003ffb04b6478:   nopr
>>   0x000003ffb04b647a:   nopr
>>   0x000003ffb04b647c:   nopr
>>   0x000003ffb04b647e:   nopr
>>   0x000003ffb04b6480:   st	%r4,0(%r2)
>>   0x000003ffb04b6484:   st	%r4,4(%r2)
>>   0x000003ffb04b6488:   agfi	%r2,8
>>   0x000003ffb04b648e:   brct	%r1,0x000003ffb04b6480
>>   0x000003ffb04b6492:   nilf	%r3,4
>>   0x000003ffb04b6498:   ber	%r14
>>   0x000003ffb04b649a:   st	%r4,0(%r2)
>>   0x0000...
>
> Amit Kumar has updated the pull request incrementally with four additional commits since the last revision:
> 
>  - reviews for Martin
>  - Revert "minor improvement"
>    
>    This reverts commit a6af6da26d1e0590dc24486131d1bc752e047f98.
>  - minor improvement
>  - reviews from Lutz and Martin

Result looks almost similar: 

Benchmark                       (aligned)  (size)  Mode  Cnt   Score   Error  Units
MemorySegmentZeroUnsafe.panama       true       1  avgt   30   2.349 ± 0.012  ns/op
MemorySegmentZeroUnsafe.panama       true       2  avgt   30   2.647 ± 0.004  ns/op
MemorySegmentZeroUnsafe.panama       true       3  avgt   30   2.614 ± 0.005  ns/op
MemorySegmentZeroUnsafe.panama       true       4  avgt   30   2.779 ± 0.003  ns/op
MemorySegmentZeroUnsafe.panama       true       5  avgt   30   2.759 ± 0.016  ns/op
MemorySegmentZeroUnsafe.panama       true       6  avgt   30   2.887 ± 0.003  ns/op
MemorySegmentZeroUnsafe.panama       true       7  avgt   30   2.697 ± 0.004  ns/op
MemorySegmentZeroUnsafe.panama       true       8  avgt   30   2.771 ± 0.034  ns/op
MemorySegmentZeroUnsafe.panama       true      15  avgt   30   3.700 ± 0.006  ns/op
MemorySegmentZeroUnsafe.panama       true      16  avgt   30   3.165 ± 0.042  ns/op
MemorySegmentZeroUnsafe.panama       true      63  avgt   30  17.266 ± 0.830  ns/op
MemorySegmentZeroUnsafe.panama       true      64  avgt   30   4.479 ± 0.019  ns/op
MemorySegmentZeroUnsafe.panama       true     255  avgt   30  54.563 ± 1.222  ns/op
MemorySegmentZeroUnsafe.panama       true     256  avgt   30   9.141 ± 0.069  ns/op
MemorySegmentZeroUnsafe.panama      false       1  avgt   30   2.338 ± 0.013  ns/op
MemorySegmentZeroUnsafe.panama      false       2  avgt   30   2.647 ± 0.004  ns/op
MemorySegmentZeroUnsafe.panama      false       3  avgt   30   2.618 ± 0.009  ns/op
MemorySegmentZeroUnsafe.panama      false       4  avgt   30   2.780 ± 0.003  ns/op
MemorySegmentZeroUnsafe.panama      false       5  avgt   30   2.752 ± 0.003  ns/op
MemorySegmentZeroUnsafe.panama      false       6  avgt   30   2.889 ± 0.006  ns/op
MemorySegmentZeroUnsafe.panama      false       7  avgt   30   2.695 ± 0.002  ns/op
MemorySegmentZeroUnsafe.panama      false       8  avgt   30   2.763 ± 0.009  ns/op
MemorySegmentZeroUnsafe.panama      false      15  avgt   30   3.684 ± 0.013  ns/op
MemorySegmentZeroUnsafe.panama      false      16  avgt   30   3.115 ± 0.005  ns/op
MemorySegmentZeroUnsafe.panama      false      63  avgt   30  16.376 ± 0.018  ns/op
MemorySegmentZeroUnsafe.panama      false      64  avgt   30  15.394 ± 0.080  ns/op
MemorySegmentZeroUnsafe.panama      false     255  avgt   30  55.838 ± 1.325  ns/op
MemorySegmentZeroUnsafe.panama      false     256  avgt   30  52.927 ± 0.874  ns/op
MemorySegmentZeroUnsafe.unsafe       true       1  avgt   30   2.281 ± 0.206  ns/op
MemorySegmentZeroUnsafe.unsafe       true       2  avgt   30   2.076 ± 0.147  ns/op
MemorySegmentZeroUnsafe.unsafe       true       3  avgt   30   2.562 ± 0.004  ns/op
MemorySegmentZeroUnsafe.unsafe       true       4  avgt   30   2.020 ± 0.105  ns/op
MemorySegmentZeroUnsafe.unsafe       true       5  avgt   30   2.938 ± 0.052  ns/op
MemorySegmentZeroUnsafe.unsafe       true       6  avgt   30   2.412 ± 0.007  ns/op
MemorySegmentZeroUnsafe.unsafe       true       7  avgt   30   3.349 ± 0.011  ns/op
MemorySegmentZeroUnsafe.unsafe       true       8  avgt   30   2.304 ± 0.220  ns/op
MemorySegmentZeroUnsafe.unsafe       true      15  avgt   30   5.005 ± 0.005  ns/op
MemorySegmentZeroUnsafe.unsafe       true      16  avgt   30   2.113 ± 0.110  ns/op
MemorySegmentZeroUnsafe.unsafe       true      63  avgt   30  14.160 ± 0.401  ns/op
MemorySegmentZeroUnsafe.unsafe       true      64  avgt   30   3.200 ± 0.170  ns/op
MemorySegmentZeroUnsafe.unsafe       true     255  avgt   30  55.619 ± 0.672  ns/op
MemorySegmentZeroUnsafe.unsafe       true     256  avgt   30   7.613 ± 0.186  ns/op
MemorySegmentZeroUnsafe.unsafe      false       1  avgt   30   2.324 ± 0.224  ns/op
MemorySegmentZeroUnsafe.unsafe      false       2  avgt   30   2.483 ± 0.004  ns/op
MemorySegmentZeroUnsafe.unsafe      false       3  avgt   30   2.565 ± 0.005  ns/op
MemorySegmentZeroUnsafe.unsafe      false       4  avgt   30   2.669 ± 0.011  ns/op
MemorySegmentZeroUnsafe.unsafe      false       5  avgt   30   2.916 ± 0.031  ns/op
MemorySegmentZeroUnsafe.unsafe      false       6  avgt   30   3.042 ± 0.029  ns/op
MemorySegmentZeroUnsafe.unsafe      false       7  avgt   30   3.360 ± 0.037  ns/op
MemorySegmentZeroUnsafe.unsafe      false       8  avgt   30   3.401 ± 0.074  ns/op
MemorySegmentZeroUnsafe.unsafe      false      15  avgt   30   5.012 ± 0.014  ns/op
MemorySegmentZeroUnsafe.unsafe      false      16  avgt   30   4.592 ± 0.156  ns/op
MemorySegmentZeroUnsafe.unsafe      false      63  avgt   30  13.981 ± 0.392  ns/op
MemorySegmentZeroUnsafe.unsafe      false      64  avgt   30  14.876 ± 0.894  ns/op
MemorySegmentZeroUnsafe.unsafe      false     255  avgt   30  55.273 ± 0.546  ns/op
MemorySegmentZeroUnsafe.unsafe      false     256  avgt   30  53.228 ± 1.325  ns/op
Finished running test 'micro:java.lang.foreign.MemorySegmentZeroUnsafe'

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

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


More information about the hotspot-compiler-dev mailing list