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:
parent
fe95f2f799
commit
9cf106c865
|
@ -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>
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue