]> git.ipfire.org Git - thirdparty/gcc.git/commit
aarch64: Implement -moutline-atomics
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>
Wed, 1 Apr 2020 11:00:14 +0000 (12:00 +0100)
committerKyrylo Tkachov <kyrylo.tkachov@arm.com>
Wed, 1 Apr 2020 11:00:14 +0000 (12:00 +0100)
commit9cf2784a69e126283c33fdbcfbf5713106e87479
tree6120005061d2dbaf86ef53ff98f7f5004cfecf89
parentb36f6a808e5ce7484c1039458f2e3137934190b2
aarch64: Implement -moutline-atomics

2020-04-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

Backport from mainline
2019-09-19  Richard Henderson  <richard.henderson@linaro.org>

* 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.

* 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.
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