aarch64: Implement TImode compare-and-swap
authorRichard Henderson <richard.henderson@linaro.org>
Thu, 19 Sep 2019 14:36:29 +0000 (14:36 +0000)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 19 Sep 2019 14:36:29 +0000 (07:36 -0700)
commit4a2095ebace8534038ce2adf4ae94bfc854066c4
tree982fd22424e7f0412c5d5081af3ef4498c98fc9c
parente3f15286d1129de2cceee6acd5d5584cb5422db6
aarch64: Implement TImode compare-and-swap

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<ALLI_TI>):
Change iterator from ALLI to ALLI_TI.
(@atomic_compare_and_swap<JUST_TI>): New.
(@atomic_compare_and_swap<JUST_TI>_lse): New.
(aarch64_load_exclusive_pair): New.
(aarch64_store_exclusive_pair): New.
* config/aarch64/iterators.md (JUST_TI): New.

From-SVN: r275965
gcc/ChangeLog
gcc/config/aarch64/aarch64.c
gcc/config/aarch64/atomics.md
gcc/config/aarch64/iterators.md