From: Andreas Schwab Date: Sun, 24 Jul 2005 19:15:21 +0000 (+0000) Subject: m68k.md ("extendqidi2"): When source is an address register use a word move. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1b8452d093bd8c1642cda1c3369b9f3d7009fe6f;p=gcc.git m68k.md ("extendqidi2"): When source is an address register use a word move. * config/m68k/m68k.md ("extendqidi2"): When source is an address register use a word move. Correct operand of ext.w in 68000 code. From-SVN: r102337 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 77d07239c69..d86dc826394 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2005-07-24 Andreas Schwab + + * config/m68k/m68k.md ("extendqidi2"): When source is an address + register use a word move. Correct operand of ext.w in 68000 code. + 2005-07-23 Mark Mitchell * dwarf2out.c (gen_variable_die): Treat un-emitted COMDAT diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md index 5c65b1c80d3..1a4df3bdf7d 100644 --- a/gcc/config/m68k/m68k.md +++ b/gcc/config/m68k/m68k.md @@ -1299,9 +1299,19 @@ if (TARGET_CFV4) return "mvs%.b %1,%2\;smi %0\;extb%.l %0"; if (TARGET_68020 || TARGET_COLDFIRE) - return "move%.b %1,%2\;extb%.l %2\;smi %0\;extb%.l %0"; + { + if (ADDRESS_REG_P (operands[1])) + return "move%.w %1,%2\;extb%.l %2\;smi %0\;extb%.l %0"; + else + return "move%.b %1,%2\;extb%.l %2\;smi %0\;extb%.l %0"; + } else - return "move%.b %1,%2\;ext%.w %0\;ext%.l %2\;move%.l %2,%0\;smi %0"; + { + if (ADDRESS_REG_P (operands[1])) + return "move%.w %1,%2\;ext%.w %2\;ext%.l %2\;move%.l %2,%0\;smi %0"; + else + return "move%.b %1,%2\;ext%.w %2\;ext%.l %2\;move%.l %2,%0\;smi %0"; + } }) (define_insn "extendhidi2"