[AArch64] Allow const0_rtx operand for atomic compare-exchange patterns
commit3d699f1c2beb2272980ee715857d238ad90ccefe
authorktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 6 Jun 2017 13:26:46 +0000 (6 13:26 +0000)
committerktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 6 Jun 2017 13:26:46 +0000 (6 13:26 +0000)
treec27196f3a87512de1b23e07932cf97bc567d0b4e
parent95f6738da4c4ec055b6109d7ff4a94223f26ce05
[AArch64] Allow const0_rtx operand for atomic compare-exchange patterns

* config/aarch64/atomics.md (atomic_compare_and_swap<mode> expander):
Use aarch64_reg_or_zero predicate for operand 4.
(aarch64_compare_and_swap<mode> define_insn_and_split):
Use aarch64_reg_or_zero predicate for operand 3.  Add 'Z' constraint.
(aarch64_store_exclusive<mode>): Likewise for operand 2.

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

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