Integrated: 8304293: RISC-V: JDK-8276799 missed atomic intrinsic support for C1

Feilong Jiang fjiang at openjdk.org
Mon Mar 20 00:57:27 UTC 2023


On Thu, 16 Mar 2023 03:37:10 GMT, Feilong Jiang <fjiang at openjdk.org> wrote:

> The following intrinsics in C1 are controlled by supports_atomic_xxx, but they are not set properly on RISC-V:
> - _getAndAddInt
> - _getAndAddLong
> - _getAndSetInt
> - _getAndSetLong
> - _getAndSetReference
> 
> RISC-V provides a set of atomic instructions [1], these intrinsics could be enabled by default.
> 
> Here is the HIR output of C1:
> 
> before:
> 
> 
> B18 (V) [189, 196] -> B20 pred: B8 B17 
> empty stack
> inlining depth 0
> __bci__use__tid____instr____________________________________
>   0    0    a251   <instance 0x00000040a802fb98 klass=jdk/internal/misc/Unsafe>
>   3    0    a252   null   
>   4    0    l254   274954985816L
>   7    0    l255   1L
> . 8    0    l256   a251.invokespecial(a252, l254, l255)
>                    jdk/internal/misc/Unsafe.getAndAddLong(Ljava/lang/Object;JJ)J
> . 193  0    l258   a42._24 := l256 (J) tid
> . 196  0     259   goto B20
> 
> 
> after:
> 
> 
> B18 (V) [189, 196] -> B20 pred: B8 B17 
> empty stack
> inlining depth 0
> __bci__use__tid____instr____________________________________
>   0    0    a251   <instance 0x00000040a802fb98 klass=jdk/internal/misc/Unsafe>
>   3    0    a252   null   
>   4    0    l254   274954985816L
>   7    0    l255   1L
> . 8    0    l256   UnsafeGetAndSet (add)(a252, l254, value l255)
> . 193  0    l258   a42._24 := l256 (J) tid
> . 196  0     259   goto B20
> 
> 
> 1. https://github.com/riscv/riscv-isa-manual/blob/8b9047d8d20ef548f7996efee1550760d7bc1279/src/a.tex#L416-L422
> 
> Testing:
> 
> - [x] `hotspot_tier1` & `jdk_tier1` on Unmatched board (release build)

This pull request has now been integrated.

Changeset: c09f83ec
Author:    Feilong Jiang <fjiang at openjdk.org>
Committer: Fei Yang <fyang at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/c09f83ec25749af349fb5609e3641b5bb6d34072
Stats:     6 lines in 1 file changed: 6 ins; 0 del; 0 mod

8304293: RISC-V: JDK-8276799 missed atomic intrinsic support for C1

Reviewed-by: fyang, yzhu

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

PR: https://git.openjdk.org/jdk/pull/13053


More information about the hotspot-dev mailing list