aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2015-08-24 11:13:16 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2015-08-24 11:13:16 +0000
commit7cff0471e445e50f8fcbcc4634deb2df313656e2 (patch)
tree43f876021016911b4c60aa39ad81c8db8aade75a
parentd26ed7fa6780bca5c44f3da75cab196ea5c09100 (diff)
downloadgcc-7cff0471e445e50f8fcbcc4634deb2df313656e2.zip
gcc-7cff0471e445e50f8fcbcc4634deb2df313656e2.tar.gz
gcc-7cff0471e445e50f8fcbcc4634deb2df313656e2.tar.bz2
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
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/builtins.c9
-rw-r--r--gcc/target-insns.def1
3 files changed, 10 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 06dd8c8..4c2267f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,12 @@
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
cast syntax.
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 635ba54..76c16fa 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 ef8e6b0..d204105 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))