On 1/28/2026 12:56 AM, Jiawei wrote:
This patch support RISC-V Zalasr[1](load-acquire/store-release) extension. 
Based on Edwin Lu's old patch:
https://patchwork.sourceware.org/project/gcc/patch/[email protected]/

[1] 
https://docs.riscv.org/reference/isa/extensions/zalasr/_attachments/riscv-zalasr.pdf

Co-Authored-by: Edwin Lu <[email protected]>

gcc/ChangeLog:

        * config/riscv/riscv-ext.def: New extension.
        * config/riscv/riscv-ext.opt: Ditto.
        * config/riscv/sync-rvwmo.md: Add check for zalasr.
        * config/riscv/sync-ztso.md: Ditto.
        * doc/riscv-ext.texi: New extension.

gcc/testsuite/ChangeLog:

        * gcc.target/riscv/amo/a-rvwmo-fence.c: Disable zalasr from -march.
        * gcc.target/riscv/amo/a-rvwmo-load-acquire.c: Ditto.
        * gcc.target/riscv/amo/a-rvwmo-load-relaxed.c: Ditto.
        * gcc.target/riscv/amo/a-rvwmo-load-seq-cst.c: Ditto.
        * gcc.target/riscv/amo/a-rvwmo-store-compat-seq-cst.c: Ditto.
        * gcc.target/riscv/amo/a-rvwmo-store-relaxed.c: Ditto.
        * gcc.target/riscv/amo/a-rvwmo-store-release.c: Ditto.
        * gcc.target/riscv/amo/a-ztso-fence.c: Ditto.
        * gcc.target/riscv/amo/a-ztso-load-acquire.c: Ditto.
        * gcc.target/riscv/amo/a-ztso-load-relaxed.c: Ditto.
        * gcc.target/riscv/amo/a-ztso-load-seq-cst.c: Ditto.
        * gcc.target/riscv/amo/a-ztso-store-compat-seq-cst.c: Ditto.
        * gcc.target/riscv/amo/a-ztso-store-relaxed.c: Ditto.
        * gcc.target/riscv/amo/a-ztso-store-release.c: Ditto.
        * gcc.target/riscv/amo/zaamo-preferred-over-zalrsc.c: Ditto.
        * gcc.target/riscv/amo/zaamo-rvwmo-amo-add-int.c: Ditto.
        * gcc.target/riscv/amo/zaamo-ztso-amo-add-int.c: Ditto.
        * gcc.target/riscv/amo/zabha-rvwmo-all-amo-ops-char.c: Ditto.
        * gcc.target/riscv/amo/zabha-rvwmo-all-amo-ops-short.c: Ditto.
        * gcc.target/riscv/amo/zabha-rvwmo-amo-add-char.c: Ditto.
        * gcc.target/riscv/amo/zabha-rvwmo-amo-add-short.c: Ditto.
        * gcc.target/riscv/amo/zabha-zacas-atomic-cas.c: Ditto.
        * gcc.target/riscv/amo/zabha-zacas-preferred-over-zalrsc.c: Ditto.
        * gcc.target/riscv/amo/zabha-ztso-amo-add-char.c: Ditto.
        * gcc.target/riscv/amo/zabha-ztso-amo-add-short.c: Ditto.
        * gcc.target/riscv/amo/zacas-char-requires-zabha.c: Ditto.
        * gcc.target/riscv/amo/zacas-char-requires-zacas.c: Ditto.
        * gcc.target/riscv/amo/zacas-preferred-over-zalrsc.c: Ditto.
        * gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-char-acq-rel.c: 
Ditto.
        * gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-char-acquire.c: 
Ditto.
        * gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-char-relaxed.c: 
Ditto.
        * gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-char-release.c: 
Ditto.
        * gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-char-seq-cst.c: 
Ditto.
        * 
gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-compatability-mapping-no-fence.c:
 Ditto.
        * 
gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-compatability-mapping.cc: 
Ditto.
        * gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-int-acq-rel.c: 
Ditto.
        * gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-int-acquire.c: 
Ditto.
        * gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-int-relaxed.c: 
Ditto.
        * gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-int-release.c: 
Ditto.
        * gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-int-seq-cst.c: 
Ditto.
        * gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-short-acq-rel.c: 
Ditto.
        * gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-short-acquire.c: 
Ditto.
        * gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-short-relaxed.c: 
Ditto.
        * gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-short-release.c: 
Ditto.
        * gcc.target/riscv/amo/zacas-rvwmo-compare-exchange-short-seq-cst.c: 
Ditto.
        * gcc.target/riscv/amo/zacas-ztso-compare-exchange-char.c: Ditto.
        * 
gcc.target/riscv/amo/zacas-ztso-compare-exchange-compatability-mapping-no-fence.c:
 Ditto.
        * 
gcc.target/riscv/amo/zacas-ztso-compare-exchange-compatability-mapping.cc: 
Ditto.
        * gcc.target/riscv/amo/zacas-ztso-compare-exchange-int-seq-cst.c: Ditto.
        * gcc.target/riscv/amo/zacas-ztso-compare-exchange-int.c: Ditto.
        * gcc.target/riscv/amo/zacas-ztso-compare-exchange-short-seq-cst.c: 
Ditto.
        * gcc.target/riscv/amo/zacas-ztso-compare-exchange-short.c: Ditto.
        * gcc.target/riscv/amo/zalrsc-rvwmo-amo-add-int.c: Ditto.
        * 
gcc.target/riscv/amo/zalrsc-rvwmo-compare-exchange-int-acquire-release.c: Ditto.
        * gcc.target/riscv/amo/zalrsc-rvwmo-compare-exchange-int-acquire.c: 
Ditto.
        * gcc.target/riscv/amo/zalrsc-rvwmo-compare-exchange-int-consume.c: 
Ditto.
        * gcc.target/riscv/amo/zalrsc-rvwmo-compare-exchange-int-relaxed.c: 
Ditto.
        * gcc.target/riscv/amo/zalrsc-rvwmo-compare-exchange-int-release.c: 
Ditto.
        * 
gcc.target/riscv/amo/zalrsc-rvwmo-compare-exchange-int-seq-cst-relaxed.c: Ditto.
        * gcc.target/riscv/amo/zalrsc-rvwmo-compare-exchange-int-seq-cst.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-amo-add-int.c: Ditto.
        * 
gcc.target/riscv/amo/zalrsc-ztso-compare-exchange-int-acquire-release.c: Ditto.
        * gcc.target/riscv/amo/zalrsc-ztso-compare-exchange-int-acquire.c: 
Ditto.
        * gcc.target/riscv/amo/zalrsc-ztso-compare-exchange-int-consume.c: 
Ditto.
        * gcc.target/riscv/amo/zalrsc-ztso-compare-exchange-int-relaxed.c: 
Ditto.
        * gcc.target/riscv/amo/zalrsc-ztso-compare-exchange-int-release.c: 
Ditto.
        * 
gcc.target/riscv/amo/zalrsc-ztso-compare-exchange-int-seq-cst-relaxed.c: Ditto.
        * gcc.target/riscv/amo/zalrsc-ztso-compare-exchange-int-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.
        * lib/target-supports.exp: Add zalasr checks.
        * gcc.target/riscv/amo/zalasr-rvwmo-load-acquire.c: New test.
        * gcc.target/riscv/amo/zalasr-rvwmo-load-relaxed.c: New test.
        * gcc.target/riscv/amo/zalasr-rvwmo-load-seq-cst.c: New test.
        * gcc.target/riscv/amo/zalasr-rvwmo-store-compat-seq-cst.c: New test.
        * gcc.target/riscv/amo/zalasr-rvwmo-store-relaxed.c: New test.
        * gcc.target/riscv/amo/zalasr-rvwmo-store-release.c: New test.
        * gcc.target/riscv/amo/zalasr-ztso-load-acquire.c: New test.
        * gcc.target/riscv/amo/zalasr-ztso-load-relaxed.c: New test.
        * gcc.target/riscv/amo/zalasr-ztso-load-seq-cst.c: New test.
        * gcc.target/riscv/amo/zalasr-ztso-store-compat-seq-cst.c: New test.
        * gcc.target/riscv/amo/zalasr-ztso-store-relaxed.c: New test.
        * gcc.target/riscv/amo/zalasr-ztso-store-release.c: New test.
This needs to defer until the next development cycle which should start in the spring.

jeff

Reply via email to