diff options
author | Marek Michalkiewicz <marekm@linux.org.pl> | 2000-10-13 19:30:15 +0200 |
---|---|---|
committer | Denis Chertykov <denisc@gcc.gnu.org> | 2000-10-13 21:30:15 +0400 |
commit | 08f812767679a5d57e95d68fc27e29cb0aa621fc (patch) | |
tree | 1e6d64b8cf487cf45ade6e4effd627a8a8f8ce2b /gcc | |
parent | 4b9454025b3a5dc0f7bed051d5026a09b5db6376 (diff) | |
download | gcc-08f812767679a5d57e95d68fc27e29cb0aa621fc.zip gcc-08f812767679a5d57e95d68fc27e29cb0aa621fc.tar.gz gcc-08f812767679a5d57e95d68fc27e29cb0aa621fc.tar.bz2 |
avr.c (output_movhi, [...]): Fix loading constants 1 and 2 to NO_LD_REGS.
* config/avr/avr.c (output_movhi, output_movsisf): Fix loading
constants 1 and 2 to NO_LD_REGS.
From-SVN: r36862
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/avr/avr.c | 30 |
2 files changed, 25 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f826ec3..89900833 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2000-10-12 Marek Michalkiewicz <marekm@linux.org.pl> + + * config/avr/avr.c (output_movhi, output_movsisf): Fix loading + constants 1 and 2 to NO_LD_REGS. + 2000-10-13 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> * Makefile.in (c-parse.c, tradcif.c): Create atomically. diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index 642fccb..e8926b3 100644 --- a/gcc/config/avr/avr.c +++ b/gcc/config/avr/avr.c @@ -1616,9 +1616,10 @@ output_movhi (insn, operands, l) return AS1 (inc,%0 ; reg_was_0); } - *l = 2; - return (AS1 (clr,%0) CR_TAB - AS1 (inc,%0)); + *l = 3; + return (AS1 (clr,%A0) CR_TAB + AS1 (clr,%B0) CR_TAB + AS1 (inc,%A0)); } else if (src == const2_rtx) { @@ -1629,10 +1630,11 @@ output_movhi (insn, operands, l) AS1 (inc,%0)); } - *l = 3; - return (AS1 (clr,%0) CR_TAB - AS1 (inc,%0) CR_TAB - AS1 (inc,%0)); + *l = 4; + return (AS1 (clr,%A0) CR_TAB + AS1 (clr,%B0) CR_TAB + AS1 (inc,%A0) CR_TAB + AS1 (inc,%A0)); } else if (src == constm1_rtx) { @@ -2280,11 +2282,19 @@ output_movsisf(insn, operands, l) *l = 1; return AS1 (inc,%A0 ; reg_was_0); } - - *l = 4; - return (AS1 (clr,%D0) CR_TAB + if (AVR_ENHANCED) + { + *l = 4; + return (AS1 (clr,%A0) CR_TAB + AS1 (clr,%B0) CR_TAB + AS2 (movw,%C0,%A0) CR_TAB + AS1 (inc,%A0)); + } + *l = 5; + return (AS1 (clr,%A0) CR_TAB AS1 (clr,%B0) CR_TAB AS1 (clr,%C0) CR_TAB + AS1 (clr,%D0) CR_TAB AS1 (inc,%A0)); } else if (src == const2_rtx) |