]> git.ipfire.org Git - thirdparty/gcc.git/commit
RISC-V: Add Zalrsc amo-op patterns
authorPatrick O'Neill <patrick@rivosinc.com>
Thu, 8 Feb 2024 00:30:30 +0000 (16:30 -0800)
committerPatrick O'Neill <patrick@rivosinc.com>
Tue, 11 Jun 2024 17:05:17 +0000 (10:05 -0700)
commit1588983be6112561c805a50eb7a3c585865beffa
tree10c4f1976d380095184c00f3573d771f0a76afbc
parent0fea902b1b5311c8b34ae8e789f1733bd8429904
RISC-V: Add Zalrsc amo-op patterns

All amo<op> patterns can be represented with lrsc sequences.
Add these patterns as a fallback when Zaamo is not enabled.

gcc/ChangeLog:

* config/riscv/sync.md (atomic_<atomic_optab><mode>): New expand pattern.
(amo_atomic_<atomic_optab><mode>): Rename amo pattern.
(atomic_fetch_<atomic_optab><mode>): New lrsc sequence pattern.
(lrsc_atomic_<atomic_optab><mode>): New expand pattern.
(amo_atomic_fetch_<atomic_optab><mode>): Rename amo pattern.
(lrsc_atomic_fetch_<atomic_optab><mode>): New lrsc sequence pattern.
(atomic_exchange<mode>): New expand pattern.
(amo_atomic_exchange<mode>): Rename amo pattern.
(lrsc_atomic_exchange<mode>): New lrsc sequence pattern.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/amo-zaamo-preferred-over-zalrsc.c: New test.
* gcc.target/riscv/amo-zalrsc-amo-add-1.c: New test.
* gcc.target/riscv/amo-zalrsc-amo-add-2.c: New test.
* gcc.target/riscv/amo-zalrsc-amo-add-3.c: New test.
* gcc.target/riscv/amo-zalrsc-amo-add-4.c: New test.
* gcc.target/riscv/amo-zalrsc-amo-add-5.c: New test.

Signed-off-by: Patrick O'Neill <patrick@rivosinc.com>
gcc/config/riscv/sync.md
gcc/testsuite/gcc.target/riscv/amo-zaamo-preferred-over-zalrsc.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/amo-zalrsc-amo-add-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/amo-zalrsc-amo-add-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/amo-zalrsc-amo-add-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/amo-zalrsc-amo-add-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/amo-zalrsc-amo-add-5.c [new file with mode: 0644]