aarch64: Implement -moutline-atomics
authorRichard Henderson <richard.henderson@linaro.org>
Thu, 19 Sep 2019 14:36:43 +0000 (14:36 +0000)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 19 Sep 2019 14:36:43 +0000 (07:36 -0700)
commit3950b229a5ed6710f30241c2ddc3c74909bf4740
tree349942f7ab7fe93138f405bd62a0fe79f1886731
parent33befddcb849235353dc263db1c7d07dc15c9faa
aarch64: Implement -moutline-atomics

* config/aarch64/aarch64.opt (-moutline-atomics): New.
* config/aarch64/aarch64.c (aarch64_atomic_ool_func): New.
(aarch64_ool_cas_names, aarch64_ool_swp_names): New.
(aarch64_ool_ldadd_names, aarch64_ool_ldset_names): New.
(aarch64_ool_ldclr_names, aarch64_ool_ldeor_names): New.
(aarch64_expand_compare_and_swap): Honor TARGET_OUTLINE_ATOMICS.
* config/aarch64/atomics.md (atomic_exchange<ALLI>): Likewise.
(atomic_<atomic_op><ALLI>): Likewise.
(atomic_fetch_<atomic_op><ALLI>): Likewise.
(atomic_<atomic_op>_fetch<ALLI>): Likewise.
* doc/invoke.texi: Document -moutline-atomics.
testsuite/
* gcc.target/aarch64/atomic-op-acq_rel.c: Use -mno-outline-atomics.
* gcc.target/aarch64/atomic-comp-swap-release-acquire.c: Likewise.
* gcc.target/aarch64/atomic-op-acquire.c: Likewise.
* gcc.target/aarch64/atomic-op-char.c: Likewise.
* gcc.target/aarch64/atomic-op-consume.c: Likewise.
* gcc.target/aarch64/atomic-op-imm.c: Likewise.
* gcc.target/aarch64/atomic-op-int.c: Likewise.
* gcc.target/aarch64/atomic-op-long.c: Likewise.
* gcc.target/aarch64/atomic-op-relaxed.c: Likewise.
* gcc.target/aarch64/atomic-op-release.c: Likewise.
* gcc.target/aarch64/atomic-op-seq_cst.c: Likewise.
* gcc.target/aarch64/atomic-op-short.c: Likewise.
* gcc.target/aarch64/atomic_cmp_exchange_zero_reg_1.c: Likewise.
* gcc.target/aarch64/atomic_cmp_exchange_zero_strong_1.c: Likewise.
* gcc.target/aarch64/sync-comp-swap.c: Likewise.
* gcc.target/aarch64/sync-op-acquire.c: Likewise.
* gcc.target/aarch64/sync-op-full.c: Likewise.

From-SVN: r275968
24 files changed:
gcc/ChangeLog
gcc/config/aarch64/aarch64-protos.h
gcc/config/aarch64/aarch64.c
gcc/config/aarch64/aarch64.opt
gcc/config/aarch64/atomics.md
gcc/doc/invoke.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/atomic-comp-swap-release-acquire.c
gcc/testsuite/gcc.target/aarch64/atomic-op-acq_rel.c
gcc/testsuite/gcc.target/aarch64/atomic-op-acquire.c
gcc/testsuite/gcc.target/aarch64/atomic-op-char.c
gcc/testsuite/gcc.target/aarch64/atomic-op-consume.c
gcc/testsuite/gcc.target/aarch64/atomic-op-imm.c
gcc/testsuite/gcc.target/aarch64/atomic-op-int.c
gcc/testsuite/gcc.target/aarch64/atomic-op-long.c
gcc/testsuite/gcc.target/aarch64/atomic-op-relaxed.c
gcc/testsuite/gcc.target/aarch64/atomic-op-release.c
gcc/testsuite/gcc.target/aarch64/atomic-op-seq_cst.c
gcc/testsuite/gcc.target/aarch64/atomic-op-short.c
gcc/testsuite/gcc.target/aarch64/atomic_cmp_exchange_zero_reg_1.c
gcc/testsuite/gcc.target/aarch64/atomic_cmp_exchange_zero_strong_1.c
gcc/testsuite/gcc.target/aarch64/sync-comp-swap.c
gcc/testsuite/gcc.target/aarch64/sync-op-acquire.c
gcc/testsuite/gcc.target/aarch64/sync-op-full.c