https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104338

--- Comment #15 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Patrick O'Neill <pone...@gcc.gnu.org>:

https://gcc.gnu.org/g:f797260adaf52bee0ec0e16190bbefbe1bfc3692

commit r14-269-gf797260adaf52bee0ec0e16190bbefbe1bfc3692
Author: Patrick O'Neill <patr...@rivosinc.com>
Date:   Tue Apr 18 14:33:13 2023 -0700

    RISCV: Inline subword atomic ops

    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-04-18 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 flag.
            * 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 command-line flag.

    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>

Reply via email to