Ping.

On 5/3/23 10:19, Patrick O'Neill wrote:

RISC-V has no support for subword atomic operations; code currently
generates libatomic library calls.

This patch changes the default behavior to inline subword atomic calls
(using the same logic as the existing library call).
Behavior can be specified using the -minline-atomics and
-mno-inline-atomics command line flags.

gcc/libgcc/config/riscv/atomic.c has the same logic implemented in asm.
This will need to stay for backwards compatibility and the
-mno-inline-atomics flag.

2023-05-03 Patrick O'Neill <patr...@rivosinc.com>

gcc/ChangeLog:
        PR target/104338
        * config/riscv/riscv-protos.h: Add helper function stubs.
        * config/riscv/riscv.cc: Add helper functions for subword masking.
        * config/riscv/riscv.opt: Add command-line flags
        -minline-atomics and -mno-inline-atomics.
        * config/riscv/sync.md: Add masking logic and inline asm for
        fetch_and_op, fetch_and_nand, CAS, and exchange ops.
        * doc/invoke.texi: Add blurb regarding new command-line flags
        -minline-atomics and -mno-inline-atomics.

libgcc/ChangeLog:
        PR target/104338
        * config/riscv/atomic.c: Add reference to duplicate logic.

gcc/testsuite/ChangeLog:
        PR target/104338
        * gcc.target/riscv/inline-atomics-1.c: New test.
        * gcc.target/riscv/inline-atomics-2.c: New test.
        * gcc.target/riscv/inline-atomics-3.c: New test.
        * gcc.target/riscv/inline-atomics-4.c: New test.
        * gcc.target/riscv/inline-atomics-5.c: New test.
        * gcc.target/riscv/inline-atomics-6.c: New test.
        * gcc.target/riscv/inline-atomics-7.c: New test.
        * gcc.target/riscv/inline-atomics-8.c: New test.

Signed-off-by: Patrick O'Neill <patr...@rivosinc.com>
Signed-off-by: Palmer Dabbelt <pal...@rivosinc.com>
---
This backport includes all the subsequent fixes.
Squashed GCC-14 commits:
   
https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=f797260adaf52bee0ec0e16190bbefbe1bfc3692
   
https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=2a26872984c109a98d0ad733b0c68c3e1648ec86

Fixed ChangeLog:
   
https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=9cfdd5af3efd4a7e52ae7f97f55effc436c0cf45
---
The GCC-14 build error[1] was caused by the subsequent A.6 mappings
change[2], not the inline atomics change (this backport).
[1] 
https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=4bd434fbfc7865961a8e10d7e9601b28765ce7be
[2] 
https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=bff7c77386447936dd614ebc7086b826c99c6642
---
There is a related follow-on GCC-14 patch to config/riscv/linux:
   
https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=203f3060dd363361b172f7295f42bb6bf5ac0b3b

The changes from that patch are not included in this backport.
---

Reply via email to