]> git.ipfire.org Git - thirdparty/gcc.git/commit
RISC-V: Add support for Zabha extension
authorGianluca Guida <gianluca@rivosinc.com>
Wed, 3 Jul 2024 01:05:14 +0000 (18:05 -0700)
committerPatrick O'Neill <patrick@rivosinc.com>
Wed, 3 Jul 2024 16:24:51 +0000 (09:24 -0700)
commit7b2b2e3d660edc8ef3a8cfbdfc2b0fd499459601
treef5b13e3af93ab4f0f4c14caafa107cd8fcc3a1b5
parentc41eb4c702ed04993a475d5910c190af1ff66720
RISC-V: Add support for Zabha extension

The Zabha extension adds support for subword Zaamo ops.

Extension: https://github.com/riscv/riscv-zabha.git
Ratification: https://jira.riscv.org/browse/RVS-1685

gcc/ChangeLog:

* common/config/riscv/riscv-common.cc
(riscv_subset_list::to_string): Skip zabha when not supported by
the assembler.
* config.in: Regenerate.
* config/riscv/arch-canonicalize: Make zabha imply zaamo.
* config/riscv/iterators.md (amobh): Add iterator for amo
byte/halfword.
* config/riscv/riscv.opt: Add zabha.
* config/riscv/sync.md (atomic_<atomic_optab><mode>): Add
subword atomic op pattern.
(zabha_atomic_fetch_<atomic_optab><mode>): Add subword
atomic_fetch op pattern.
(lrsc_atomic_fetch_<atomic_optab><mode>): Prefer zabha over lrsc
for subword atomic ops.
(zabha_atomic_exchange<mode>): Add subword atomic exchange
pattern.
(lrsc_atomic_exchange<mode>): Prefer zabha over lrsc for subword
atomic exchange ops.
* configure: Regenerate.
* configure.ac: Add zabha assembler check.
* doc/sourcebuild.texi: Add zabha documentation.

gcc/testsuite/ChangeLog:

* lib/target-supports.exp: Add zabha testsuite infra support.
* gcc.target/riscv/amo/inline-atomics-1.c: Remove zabha to continue to
test the lr/sc subword patterns.
* gcc.target/riscv/amo/inline-atomics-2.c: Ditto.
* gcc.target/riscv/amo/zalrsc-rvwmo-subword-amo-add-char-acq-rel.c: Ditto.
* gcc.target/riscv/amo/zalrsc-rvwmo-subword-amo-add-char-acquire.c: Ditto.
* gcc.target/riscv/amo/zalrsc-rvwmo-subword-amo-add-char-relaxed.c: Ditto.
* gcc.target/riscv/amo/zalrsc-rvwmo-subword-amo-add-char-release.c: Ditto.
* gcc.target/riscv/amo/zalrsc-rvwmo-subword-amo-add-char-seq-cst.c: Ditto.
* gcc.target/riscv/amo/zalrsc-ztso-subword-amo-add-char-acq-rel.c: Ditto.
* gcc.target/riscv/amo/zalrsc-ztso-subword-amo-add-char-acquire.c: Ditto.
* gcc.target/riscv/amo/zalrsc-ztso-subword-amo-add-char-relaxed.c: Ditto.
* gcc.target/riscv/amo/zalrsc-ztso-subword-amo-add-char-release.c: Ditto.
* gcc.target/riscv/amo/zalrsc-ztso-subword-amo-add-char-seq-cst.c: Ditto.
* gcc.target/riscv/amo/zabha-all-amo-ops-char-run.c: New test.
* gcc.target/riscv/amo/zabha-all-amo-ops-short-run.c: New test.
* gcc.target/riscv/amo/zabha-rvwmo-all-amo-ops-char.c: New test.
* gcc.target/riscv/amo/zabha-rvwmo-all-amo-ops-short.c: New test.
* gcc.target/riscv/amo/zabha-rvwmo-amo-add-char.c: New test.
* gcc.target/riscv/amo/zabha-rvwmo-amo-add-short.c: New test.
* gcc.target/riscv/amo/zabha-ztso-amo-add-char.c: New test.
* gcc.target/riscv/amo/zabha-ztso-amo-add-short.c: New test.

Co-Authored-By: Patrick O'Neill <patrick@rivosinc.com>
Signed-Off-By: Gianluca Guida <gianluca@rivosinc.com>
Tested-by: Andrea Parri <andrea@rivosinc.com>
30 files changed:
gcc/common/config/riscv/riscv-common.cc
gcc/config.in
gcc/config/riscv/arch-canonicalize
gcc/config/riscv/iterators.md
gcc/config/riscv/riscv.opt
gcc/config/riscv/sync.md
gcc/configure
gcc/configure.ac
gcc/doc/sourcebuild.texi
gcc/testsuite/gcc.target/riscv/amo/inline-atomics-1.c
gcc/testsuite/gcc.target/riscv/amo/inline-atomics-2.c
gcc/testsuite/gcc.target/riscv/amo/zabha-all-amo-ops-char-run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/amo/zabha-all-amo-ops-short-run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/amo/zabha-rvwmo-all-amo-ops-char.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/amo/zabha-rvwmo-all-amo-ops-short.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/amo/zabha-rvwmo-amo-add-char.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/amo/zabha-rvwmo-amo-add-short.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/amo/zabha-ztso-amo-add-char.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/amo/zabha-ztso-amo-add-short.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/amo/zalrsc-rvwmo-subword-amo-add-char-acq-rel.c
gcc/testsuite/gcc.target/riscv/amo/zalrsc-rvwmo-subword-amo-add-char-acquire.c
gcc/testsuite/gcc.target/riscv/amo/zalrsc-rvwmo-subword-amo-add-char-relaxed.c
gcc/testsuite/gcc.target/riscv/amo/zalrsc-rvwmo-subword-amo-add-char-release.c
gcc/testsuite/gcc.target/riscv/amo/zalrsc-rvwmo-subword-amo-add-char-seq-cst.c
gcc/testsuite/gcc.target/riscv/amo/zalrsc-ztso-subword-amo-add-char-acq-rel.c
gcc/testsuite/gcc.target/riscv/amo/zalrsc-ztso-subword-amo-add-char-acquire.c
gcc/testsuite/gcc.target/riscv/amo/zalrsc-ztso-subword-amo-add-char-relaxed.c
gcc/testsuite/gcc.target/riscv/amo/zalrsc-ztso-subword-amo-add-char-release.c
gcc/testsuite/gcc.target/riscv/amo/zalrsc-ztso-subword-amo-add-char-seq-cst.c
gcc/testsuite/lib/target-supports.exp