Ping 2.
On 10/11/18 6:33 PM, Richard Henderson wrote:
> 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
>>