This is the mail archive of the
gcc-cvs@gcc.gnu.org
mailing list for the GCC project.
r190209 - in /trunk/gcc: ChangeLog config/s390/...
- From: rth at gcc dot gnu dot org
- To: gcc-cvs at gcc dot gnu dot org
- Date: Tue, 07 Aug 2012 17:32:21 -0000
- Subject: r190209 - in /trunk/gcc: ChangeLog config/s390/...
Author: rth
Date: Tue Aug 7 17:32:19 2012
New Revision: 190209
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=190209
Log:
s390: Convert from sync to atomic optabs
* config/s390/s390.c (s390_emit_compare_and_swap): Update for
atomic_compare_and_swapsi_internal name change.
(s390_expand_insv): Try RISBG last, not requiring operands in
registers but forcing them there. Try a limited form of ICM.
(s390_two_part_insv): New.
(s390_expand_cs_hqi): Use it. Update for atomic optabs.
* config/s390/s390.md (UNSPEC_MOVA): New.
(TDSI): Remove mode iterator.
(DGPR, DINT, TDI): New mode iterators.
(td): New mode attribute.
(mem_signal_fence): New.
(mem_thread_fence): Rename from memory_barrier; update for model arg.
(mem_thread_fence_1): Rename from *memory_barrier.
(atomic_load<DINT>, atomic_store<DINT>): New expanders.
(atomic_loaddi_1, atomic_loadti_1): New.
(atomic_storedi_1, atomic_storeti_1): New.
(sync_compare_and_swap<TDSI>, sync_compare_and_swap<HQI>): Remove.
(atomic_compare_and_swap<DGPR>, atomic_compare_and_swap<HQI>): New.
(atomic_compare_and_swap<DGPR>_internal): New.
(*sync_compare_and_swap<DW>, *sync_compare_and_swap<GPR>): Remove.
(*atomic_compare_and_swap<TDI>_1): New.
(*atomic_compare_and_swapdi_2, *atomic_compare_and_swapsi_3): New.
(sync_<ATOMIC_Z196><GPR>, sync_old_<ATOMIC_Z196><GPR>): Remove.
(atomic_fetch_<ATOMIC_Z196><GPR>): New.
(atomic_fetch_<ATOMC_Z196><GPR>_iaf): New.
(sync_<ATOMIC><HQI>, sync_old_<ATOMIC><HQI>): Remove.
(sync_new_<ATOMIC><HQI>): Remove.
(atomic_<ATOMIC><HQI>, atomic_fetch_<ATOMIC><HQI>): New.
(atomic_<ATOMIC>_fetch<HQI>): New.
(sync_lock_test_and_set<HQI>): Remove.
(atomic_exchange<HQI>): New.
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/s390/s390-protos.h
trunk/gcc/config/s390/s390.c
trunk/gcc/config/s390/s390.md