This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH, AArch64 v2 00/11] LSE atomics out-of-line
- From: Richard Henderson <richard dot henderson at linaro dot org>
- To: gcc-patches at gcc dot gnu dot org
- Cc: ramana dot radhakrishnan at arm dot com, agraf at suse dot de, marcus dot shawcroft at arm dot com, james dot greenhalgh at arm dot com, richard dot earnshaw at arm dot com
- Date: Tue, 2 Oct 2018 11:19:04 -0500
- Subject: [PATCH, AArch64 v2 00/11] LSE atomics out-of-line
Changes since v1:
* Use config/t-slibgcc-libgcc instead of gcc.c changes.
* Some style fixes.
* Ifdefs to work with old glibc.
* Force TImode registers into even regnos.
Required by CASP, allowed by the ABI, and is seen as the
simplier solution than adding two new register classes.
* Use match_dup instead of matching constraints for CAS{P}.
Matching constraints result in lots of extraneous moves
for TImode, and keeping the expander interface the same
for non-TImode simplifies the code.
r~
Richard Henderson (11):
aarch64: Simplify LSE cas generation
aarch64: Improve cas generation
aarch64: Improve swp generation
aarch64: Improve atomic-op lse generation
aarch64: Emit LSE st<op> instructions
Add visibility to libfunc constructors
aarch64: Add out-of-line functions for LSE atomics
aarch64: Implement -matomic-ool
aarch64: Force TImode values into even registers
aarch64: Implement TImode compare-and-swap
Enable -matomic-ool by default
gcc/config/aarch64/aarch64-protos.h | 20 +-
gcc/optabs-libfuncs.h | 2 +
gcc/common/config/aarch64/aarch64-common.c | 6 +-
gcc/config/aarch64/aarch64.c | 494 +++++++-------
gcc/optabs-libfuncs.c | 26 +-
.../atomic-comp-swap-release-acquire.c | 2 +-
.../gcc.target/aarch64/atomic-inst-ldadd.c | 18 +-
.../gcc.target/aarch64/atomic-inst-ldlogic.c | 54 +-
.../gcc.target/aarch64/atomic-op-acq_rel.c | 2 +-
.../gcc.target/aarch64/atomic-op-acquire.c | 2 +-
.../gcc.target/aarch64/atomic-op-char.c | 2 +-
.../gcc.target/aarch64/atomic-op-consume.c | 2 +-
.../gcc.target/aarch64/atomic-op-imm.c | 2 +-
.../gcc.target/aarch64/atomic-op-int.c | 2 +-
.../gcc.target/aarch64/atomic-op-long.c | 2 +-
.../gcc.target/aarch64/atomic-op-relaxed.c | 2 +-
.../gcc.target/aarch64/atomic-op-release.c | 2 +-
.../gcc.target/aarch64/atomic-op-seq_cst.c | 2 +-
.../gcc.target/aarch64/atomic-op-short.c | 2 +-
.../aarch64/atomic_cmp_exchange_zero_reg_1.c | 2 +-
.../atomic_cmp_exchange_zero_strong_1.c | 2 +-
.../gcc.target/aarch64/sync-comp-swap.c | 2 +-
.../gcc.target/aarch64/sync-op-acquire.c | 2 +-
.../gcc.target/aarch64/sync-op-full.c | 2 +-
libgcc/config/aarch64/lse.c | 282 ++++++++
gcc/config/aarch64/aarch64.opt | 4 +
gcc/config/aarch64/atomics.md | 608 ++++++++++--------
gcc/config/aarch64/iterators.md | 8 +-
gcc/config/aarch64/predicates.md | 12 +
gcc/doc/invoke.texi | 14 +-
libgcc/config.host | 4 +
libgcc/config/aarch64/t-lse | 48 ++
32 files changed, 1058 insertions(+), 576 deletions(-)
create mode 100644 libgcc/config/aarch64/lse.c
create mode 100644 libgcc/config/aarch64/t-lse
--
2.17.1
- Follow-Ups:
- [PATCH, AArch64 v2 01/11] aarch64: Simplify LSE cas generation
- [PATCH, AArch64 v2 02/11] aarch64: Improve cas generation
- [PATCH, AArch64 v2 03/11] aarch64: Improve swp generation
- [PATCH, AArch64 v2 04/11] aarch64: Improve atomic-op lse generation
- [PATCH, AArch64 v2 05/11] aarch64: Emit LSE st<op> instructions
- [PATCH, AArch64 v2 06/11] Add visibility to libfunc constructors
- [PATCH, AArch64 v2 07/11] aarch64: Add out-of-line functions for LSE atomics
- [PATCH, AArch64 v2 09/11] aarch64: Force TImode values into even registers
- [PATCH, AArch64 v2 08/11] aarch64: Implement -matomic-ool
- [PATCH, AArch64 v2 11/11] Enable -matomic-ool by default
- [PATCH, AArch64 v2 10/11] aarch64: Implement TImode compare-and-swap
- Re: [PATCH, AArch64 v2 00/11] LSE atomics out-of-line