mips.md (UNSPEC_COMPARE_AND_SWAP_12): New unspec_volitile.
authorRichard Sandiford <rsandifo@gcc.gnu.org>
Sat, 26 Apr 2008 07:40:04 +0000 (07:40 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Sat, 26 Apr 2008 07:40:04 +0000 (07:40 +0000)
commit49bce30a21d7cec8632fba32fd83abe7db1acad5
treecbe5674c673c745bd8140de43c196f316cde02a6
parenta93a597ae7f0feecd9dcf9d19c538e70d48e848d
mips.md (UNSPEC_COMPARE_AND_SWAP_12): New unspec_volitile.

gcc/
2008-04-23  David Daney  <ddaney@avtrex.com>

* config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
unspec_volitile.
(UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
UNSPEC_UPDATE_GOT_VERSION): Renumber.
(sync_compare_and_swap<mode>): New expand for QI and HI modes.
(compare_and_swap_12): New insn.
* config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
* config/mips/mips.c (mips_force_binary): New function.
(mips_emit_int_order_test, mips_expand_synci_loop): Use it.
(mips_expand_compare_and_swap_12): New function.
* config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.

gcc/testsuite/
* gcc.target/mips/gcc-have-sync-compare-and-swap-1.c: Expect
__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 and
__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 to be defined.
* gcc.target/mips/gcc-have-sync-compare-and-swap-2.c: Likewise.

From-SVN: r134695
gcc/ChangeLog
gcc/config/mips/mips-protos.h
gcc/config/mips/mips.c
gcc/config/mips/mips.h
gcc/config/mips/mips.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/mips/gcc-have-sync-compare-and-swap-1.c
gcc/testsuite/gcc.target/mips/gcc-have-sync-compare-and-swap-2.c