* config/cris/sync.md ("atomic_fetch_<atomic_op_name><mode>")

("atomic_compare_and_swap<mode>"): Gate expand_mem_thread_fence
	calls on result of call to need_atomic_barrier_p.

From-SVN: r189500
This commit is contained in:
Hans-Peter Nilsson 2012-07-16 02:59:42 +00:00 committed by Hans-Peter Nilsson
parent 031831d69b
commit fdb6272c11
2 changed files with 18 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2012-07-16 Hans-Peter Nilsson <hp@axis.com>
* config/cris/sync.md ("atomic_fetch_<atomic_op_name><mode>")
("atomic_compare_and_swap<mode>"): Gate expand_mem_thread_fence
calls on result of call to need_atomic_barrier_p.
2012-07-15 Richard Sandiford <rdsandiford@googlemail.com>
* config/mips/mips.md (move_type): Replace mfhilo and mthilo

View File

@ -93,11 +93,15 @@
if (<MODE>mode != QImode && TARGET_TRAP_UNALIGNED_ATOMIC)
cris_emit_trap_for_misalignment (operands[1]);
expand_mem_thread_fence (mmodel);
if (need_atomic_barrier_p (mmodel, true))
expand_mem_thread_fence (mmodel);
emit_insn (gen_cris_atomic_fetch_<atomic_op_name><mode>_1 (operands[0],
operands[1],
operands[2]));
expand_mem_thread_fence (mmodel);
if (need_atomic_barrier_p (mmodel, false))
expand_mem_thread_fence (mmodel);
DONE;
})
@ -196,13 +200,17 @@
if (<MODE>mode != QImode && TARGET_TRAP_UNALIGNED_ATOMIC)
cris_emit_trap_for_misalignment (operands[2]);
expand_mem_thread_fence (mmodel);
if (need_atomic_barrier_p (mmodel, true))
expand_mem_thread_fence (mmodel);
emit_insn (gen_cris_atomic_compare_and_swap<mode>_1 (operands[0],
operands[1],
operands[2],
operands[3],
operands[4]));
expand_mem_thread_fence (mmodel);
if (need_atomic_barrier_p (mmodel, false))
expand_mem_thread_fence (mmodel);
DONE;
})