aarch64: Implement TImode compare-and-swap

Programming / Compilers / GCC - rth [138bc75d-0d04-0410-961f-82ee72b054a4] - 19 September 2019 14:36 EDT

This pattern will only be used with the __sync functions, because we do not yet have a bare TImode atomic load.

- config/aarch64/aarch64.c (aarch64_gen_compare_reg): Add support for NE comparison of TImode values. (aarch64_emit_load_exclusive): Add support for TImode. (aarch64_emit_store_exclusive): Likewise. (aarch64_split_compare_and_swap): Disable strong_zero_p for TImode.
- config/aarch64/atomics.md (@atomic_compare_and_swap): Change iterator from ALLI to ALLI_TI. (@atomic_compare_and_swap): New. (@atomic_compare_and_swap_lse): New. (aarch64_load_exclusive_pair): New. (aarch64_store_exclusive_pair): New.
- config/aarch64/iterators.md (JUST_TI): New.

3f313701cf2 aarch64: Implement TImode compare-and-swap
gcc/ChangeLog | 13 ++++++
gcc/config/aarch64/aarch64.c | 48 +++++++++++++++++----
gcc/config/aarch64/atomics.md | 93 ++++++++++++++++++++++++++++++++++++++---
gcc/config/aarch64/iterators.md | 3 ++
4 files changed, 144 insertions(+), 13 deletions(-)

Upstream: gcc.gnu.org


  • Share