@@ -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)
@@ -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))