]> git.ipfire.org Git - thirdparty/gcc.git/commit
aarch64: Improve atomic-op lse generation
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 31 Oct 2018 09:58:48 +0000 (09:58 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 31 Oct 2018 09:58:48 +0000 (09:58 +0000)
commite495a6a5bca3662e90f5c09a555d86a633ed260f
treedcf5f28df3603081cc04cbce0864e469f2e8d39c
parentbcd45c97c29bf35ee7239a3af6a84e26fa43bb5d
aarch64: Improve atomic-op lse generation

Fix constraints; avoid unnecessary split.  Drop the use of the atomic_op
iterator in favor of the ATOMIC_LDOP iterator; this is simplier and more
logical for ldclr aka bic.

* config/aarch64/aarch64.c (aarch64_emit_bic): Remove.
(aarch64_atomic_ldop_supported_p): Remove.
(aarch64_gen_atomic_ldop): Remove.
* config/aarch64/atomic.md (atomic_<atomic_optab><ALLI>):
Fully expand LSE operations here.
(atomic_fetch_<atomic_optab><ALLI>): Likewise.
(atomic_<atomic_optab>_fetch<ALLI>): Likewise.
(aarch64_atomic_<ATOMIC_LDOP><ALLI>_lse): Drop atomic_op iterator
and use ATOMIC_LDOP instead; use register_operand for the input;
drop the split and emit insns directly.
(aarch64_atomic_fetch_<ATOMIC_LDOP><ALLI>_lse): Likewise.
(aarch64_atomic_<atomic_op>_fetch<ALLI>_lse): Remove.
(@aarch64_atomic_load<ATOMIC_LDOP><ALLI>): Remove.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265660 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/aarch64/aarch64-protos.h
gcc/config/aarch64/aarch64.c
gcc/config/aarch64/atomics.md
gcc/config/aarch64/iterators.md