diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2015-08-24 11:13:16 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2015-08-24 11:13:16 +0000 |
commit | 7cff0471e445e50f8fcbcc4634deb2df313656e2 (patch) | |
tree | 43f876021016911b4c60aa39ad81c8db8aade75a /gcc | |
parent | d26ed7fa6780bca5c44f3da75cab196ea5c09100 (diff) | |
download | gcc-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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/builtins.c | 9 | ||||
-rw-r--r-- | gcc/target-insns.def | 1 |
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)) |