200x-xx-xx Julian Brown <julian@codesourcery.com>

gcc/
200x-xx-xx  Julian Brown  <julian@codesourcery.com>

	* config/m68k/m68k.h (TUNE_68040_60): New macro.
	* config/m68k/m68k.c (standard_68881_constant_p): Use it.
	* config/m68k/m68k.md: Likewise.

From-SVN: r120707
This commit is contained in:
Julian Brown 2007-01-12 09:20:49 +00:00 committed by Richard Sandiford
parent fe95f2f799
commit 9cf106c865
4 changed files with 15 additions and 8 deletions

View File

@ -1,3 +1,9 @@
2007-01-12 Julian Brown <julian@codesourcery.com>
* config/m68k/m68k.h (TUNE_68040_60): New macro.
* config/m68k/m68k.c (standard_68881_constant_p): Use it.
* config/m68k/m68k.md: Likewise.
2007-01-12 Julian Brown <julian@codesourcery.com> 2007-01-12 Julian Brown <julian@codesourcery.com>
Richard Sandiford <richard@codesourcery.com> Richard Sandiford <richard@codesourcery.com>

View File

@ -2789,7 +2789,7 @@ standard_68881_constant_p (rtx x)
/* fmovecr must be emulated on the 68040 and 68060, so it shouldn't be /* fmovecr must be emulated on the 68040 and 68060, so it shouldn't be
used at all on those chips. */ used at all on those chips. */
if (TUNE_68040 || TUNE_68060) if (TUNE_68040_60)
return 0; return 0;
if (! inited_68881_table) if (! inited_68881_table)

View File

@ -130,6 +130,7 @@ Boston, MA 02110-1301, USA. */
#define TUNE_68030 TARGET_68030 #define TUNE_68030 TARGET_68030
#define TUNE_68040 TARGET_68040 #define TUNE_68040 TARGET_68040
#define TUNE_68060 TARGET_68060 #define TUNE_68060 TARGET_68060
#define TUNE_68040_60 (TUNE_68040 || TUNE_68060)
#define TUNE_CFV2 TARGET_5200 #define TUNE_CFV2 TARGET_5200
#define OVERRIDE_OPTIONS override_options() #define OVERRIDE_OPTIONS override_options()

View File

@ -618,10 +618,10 @@
if (ADDRESS_REG_P (operands[0])) if (ADDRESS_REG_P (operands[0]))
{ {
/* On the '040, 'subl an,an' takes 2 clocks while lea takes only 1 */ /* On the '040, 'subl an,an' takes 2 clocks while lea takes only 1 */
if (!TUNE_68040 && !TUNE_68060) if (TUNE_68040_60)
return "sub%.l %0,%0";
else
return MOTOROLA ? "lea 0.w,%0" : "lea 0:w,%0"; return MOTOROLA ? "lea 0.w,%0" : "lea 0:w,%0";
else
return "sub%.l %0,%0";
} }
/* moveq is faster on the 68000. */ /* moveq is faster on the 68000. */
if (DATA_REG_P (operands[0]) && TUNE_68000_10) if (DATA_REG_P (operands[0]) && TUNE_68000_10)
@ -846,10 +846,10 @@
if (ADDRESS_REG_P (operands[0])) if (ADDRESS_REG_P (operands[0]))
{ {
/* On the '040, 'subl an,an' takes 2 clocks while lea takes only 1 */ /* On the '040, 'subl an,an' takes 2 clocks while lea takes only 1 */
if (!TUNE_68040 && !TUNE_68060) if (TUNE_68040_60)
return "sub%.l %0,%0";
else
return MOTOROLA ? "lea 0.w,%0" : "lea 0:w,%0"; return MOTOROLA ? "lea 0.w,%0" : "lea 0:w,%0";
else
return "sub%.l %0,%0";
} }
/* moveq is faster on the 68000. */ /* moveq is faster on the 68000. */
if (DATA_REG_P (operands[0]) && TUNE_68000_10) if (DATA_REG_P (operands[0]) && TUNE_68000_10)
@ -2869,7 +2869,7 @@
"TARGET_68881" "TARGET_68881"
{ {
if (GET_CODE (operands[2]) == CONST_DOUBLE if (GET_CODE (operands[2]) == CONST_DOUBLE
&& floating_exact_log2 (operands[2]) && !TUNE_68040 && !TUNE_68060) && floating_exact_log2 (operands[2]) && !TUNE_68040_60)
{ {
int i = floating_exact_log2 (operands[2]); int i = floating_exact_log2 (operands[2]);
operands[2] = GEN_INT (i); operands[2] = GEN_INT (i);