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