This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH, AArch64 v2 00/11] LSE atomics out-of-line
- From: Richard Henderson <rth at twiddle dot net>
- To: Richard Henderson <richard dot henderson at linaro dot org>, 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: Thu, 11 Oct 2018 10:33:08 -0700
- Subject: Re: [PATCH, AArch64 v2 00/11] LSE atomics out-of-line
- References: <20181002161915.18843-1-richard.henderson@linaro.org>
Ping.
On 10/2/18 9:19 AM, Richard Henderson wrote:
> 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
>