From 51a641fdb2ae830bce646ad72ab9919a269fb9d3 Mon Sep 17 00:00:00 2001 From: Jie Zhang <jie.zhang@analog.com> Date: Fri, 11 Nov 2005 17:58:31 +0000 Subject: [PATCH] bfin.c (bfin_expand_strmov): Correctly move the trailing bytes when align is 2. * config/bfin/bfin.c (bfin_expand_strmov): Correctly move the trailing bytes when align is 2. * config/bfin/bfin.md (rep_movsi, rep_movhi): Make LSETUP be followed by the first instruction of the loop. From-SVN: r106790 --- gcc/ChangeLog | 7 +++++++ gcc/config/bfin/bfin.c | 10 +++++----- gcc/config/bfin/bfin.md | 4 ++-- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7a871c4a26bb..425bc1ae521b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2005-11-11 Jie Zhang <jie.zhang@analog.com> + + * config/bfin/bfin.c (bfin_expand_strmov): Correctly move the trailing + bytes when align is 2. + * config/bfin/bfin.md (rep_movsi, rep_movhi): Make LSETUP be followed + by the first instruction of the loop. + 2005-11-11 Jason Merrill <jason@redhat.com> PR c++/24686 diff --git a/gcc/config/bfin/bfin.c b/gcc/config/bfin/bfin.c index be028f745282..f1a82683aa18 100644 --- a/gcc/config/bfin/bfin.c +++ b/gcc/config/bfin/bfin.c @@ -2475,6 +2475,11 @@ bfin_expand_strmov (rtx dst, rtx src, rtx count_exp, rtx align_exp) emit_insn (gen_rep_movsi (destreg, srcreg, countreg, destreg, srcreg)); } + if (count & 2) + { + single_move_for_strmov (dst, src, HImode, offset); + offset += 2; + } } else { @@ -2491,11 +2496,6 @@ bfin_expand_strmov (rtx dst, rtx src, rtx count_exp, rtx align_exp) emit_insn (gen_rep_movhi (destreg, srcreg, countreg, destreg, srcreg)); } } - if (count & 2) - { - single_move_for_strmov (dst, src, HImode, offset); - offset += 2; - } if (count & 1) { single_move_for_strmov (dst, src, QImode, offset); diff --git a/gcc/config/bfin/bfin.md b/gcc/config/bfin/bfin.md index 1bbbacde7645..363a1e9fb7f3 100644 --- a/gcc/config/bfin/bfin.md +++ b/gcc/config/bfin/bfin.md @@ -1458,7 +1458,7 @@ (use (match_dup 2)) (clobber (match_scratch:HI 5 "=&d"))] "" - "lsetup (1f, 1f) LC1 = %2; %5 = [%4++]; 1: MNOP || [%3++] = %5 || %5 = [%4++]; [%3++] = %5;" + "%5 = [%4++]; lsetup (1f, 1f) LC1 = %2; 1: MNOP || [%3++] = %5 || %5 = [%4++]; [%3++] = %5;" [(set_attr "type" "misc") (set_attr "length" "16")]) @@ -1477,7 +1477,7 @@ (use (match_dup 2)) (clobber (match_scratch:HI 5 "=&d"))] "" - "lsetup (1f, 1f) LC1 = %2; %h5 = W[%4++]; 1: MNOP || W [%3++] = %5 || %h5 = W [%4++]; W [%3++] = %5;" + "%h5 = W[%4++]; lsetup (1f, 1f) LC1 = %2; 1: MNOP || W [%3++] = %5 || %h5 = W [%4++]; W [%3++] = %5;" [(set_attr "type" "misc") (set_attr "length" "16")])