diff mbox

[committed] Use target-insns.def for movstr

Message ID 874mjp7xca.fsf@e105548-lin.cambridge.arm.com
State New
Headers show

Commit Message

Richard Sandiford Aug. 24, 2015, 11:13 a.m. UTC
A simple conversion.

Tested on x86_64-linux-gnu.  Also tested by building one target per cpu
directory and checking that there were no changes in the assembly output
for gcc.dg, g++.dg and gcc.c-torture.  Committed as preapproved.

Thanks,
Richard

gcc/
	* target-insns.def (movstr): New pattern.
	* builtins.c (HAVE_movstr, CODE_FOR_movstr): Delete.
	(expand_movstr): Use targetm rather than HAVE_movstr/
	CODE_FOR_movstr.
diff mbox

Patch

diff --git a/gcc/builtins.c b/gcc/builtins.c
index bac28ef..d79372c 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -3434,11 +3434,6 @@  expand_builtin_mempcpy_args (tree dest, tree src, tree len,
     }
 }
 
-#ifndef HAVE_movstr
-# define HAVE_movstr 0
-# define CODE_FOR_movstr CODE_FOR_nothing
-#endif
-
 /* Expand into a movstr instruction, if one is available.  Return NULL_RTX if
    we failed, the caller should emit a normal call, otherwise try to
    get the result in TARGET, if convenient.  If ENDP is 0 return the
@@ -3453,7 +3448,7 @@  expand_movstr (tree dest, tree src, rtx target, int endp)
   rtx dest_mem;
   rtx src_mem;
 
-  if (!HAVE_movstr)
+  if (!targetm.have_movstr ())
     return NULL_RTX;
 
   dest_mem = get_memory_rtx (dest, NULL);
@@ -3467,7 +3462,7 @@  expand_movstr (tree dest, tree src, rtx target, int endp)
   create_output_operand (&ops[0], endp ? target : NULL_RTX, Pmode);
   create_fixed_operand (&ops[1], dest_mem);
   create_fixed_operand (&ops[2], src_mem);
-  if (!maybe_expand_insn (CODE_FOR_movstr, 3, ops))
+  if (!maybe_expand_insn (targetm.code_for_movstr, 3, ops))
     return NULL_RTX;
 
   if (endp && target != const0_rtx)
diff --git a/gcc/target-insns.def b/gcc/target-insns.def
index e94b1de..00e0027 100644
--- a/gcc/target-insns.def
+++ b/gcc/target-insns.def
@@ -61,6 +61,7 @@  DEF_TARGET_INSN (load_multiple, (rtx x0, rtx x1, rtx x2))
 DEF_TARGET_INSN (mem_signal_fence, (rtx x0))
 DEF_TARGET_INSN (mem_thread_fence, (rtx x0))
 DEF_TARGET_INSN (memory_barrier, (void))
+DEF_TARGET_INSN (movstr, (rtx x0, rtx x1, rtx x2))
 DEF_TARGET_INSN (nonlocal_goto, (rtx x0, rtx x1, rtx x2, rtx x3))
 DEF_TARGET_INSN (nonlocal_goto_receiver, (void))
 DEF_TARGET_INSN (prefetch, (rtx x0, rtx x1, rtx x2))