[AArch64] Emit tighter strong atomic compare-exchange loop when comparing against...
commitc5dcf8e544c5e98f1160ec390111b28d11d73b68
authorktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 2 Jun 2017 14:41:52 +0000 (2 14:41 +0000)
committerktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 2 Jun 2017 14:41:52 +0000 (2 14:41 +0000)
tree2df2a714bac3eab1853d01ddacfcd431129dd2a3
parentd63d6d5147b098434a6758f3a18d0dae7dcd841a
[AArch64] Emit tighter strong atomic compare-exchange loop when comparing against zero

* config/aarch64/aarch64.c (aarch64_split_compare_and_swap):
Emit CBNZ inside loop when doing a strong exchange and comparing
against zero.  Generate the CC flags after the loop.

* gcc.target/aarch64/atomic_cmp_exchange_zero_strong_1.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@248832 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/aarch64/aarch64.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/atomic_cmp_exchange_zero_strong_1.c [new file with mode: 0644]