target-insns.def (movstr): New pattern.
authorRichard Sandiford <richard.sandiford@arm.com>
Mon, 24 Aug 2015 11:13:16 +0000 (11:13 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Mon, 24 Aug 2015 11:13:16 +0000 (11:13 +0000)
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.

From-SVN: r227121

gcc/ChangeLog
gcc/builtins.c
gcc/target-insns.def

index 06dd8c8feb4ade45ace18ac7dd738d4cef7b2d37..4c2267fd9f8ec7d5139ac6906d17a336f7232f59 100644 (file)
@@ -1,3 +1,10 @@
+2015-08-24  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * 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.
+
 2015-08-24  Richard Sandiford  <richard.sandiford@arm.com>
 
        * config/microblaze/microblaze.c (microblaze_classify_unspec): Fix
index 635ba54413367d25c3900f7df6ee1c2a3c00be6a..76c16fa394095a2935040a1cc1b9f82322b1c8b4 100644 (file)
@@ -3438,11 +3438,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
@@ -3457,7 +3452,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);
@@ -3471,7 +3466,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)
index ef8e6b0327caac8b3c7ee29872e1986d3cec6b1b..d2041050ccf72eb4ad133cf7d6fc21922c64da9f 100644 (file)
@@ -53,6 +53,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))