From: Richard Sandiford Date: Mon, 24 Aug 2015 11:13:16 +0000 (+0000) Subject: target-insns.def (movstr): New pattern. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7cff0471e445e50f8fcbcc4634deb2df313656e2;p=gcc.git target-insns.def (movstr): New pattern. 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 06dd8c8feb4..4c2267fd9f8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2015-08-24 Richard Sandiford + + * 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 * config/microblaze/microblaze.c (microblaze_classify_unspec): Fix diff --git a/gcc/builtins.c b/gcc/builtins.c index 635ba544133..76c16fa3940 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -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) diff --git a/gcc/target-insns.def b/gcc/target-insns.def index ef8e6b0327c..d2041050ccf 100644 --- a/gcc/target-insns.def +++ b/gcc/target-insns.def @@ -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))