From 240922421def12476ef77ed7d2b4feecd56b0a6f Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Thu, 6 Jun 1996 17:40:30 -0400 Subject: [PATCH] (const_method): Do not synthesize long constants with byte or word operations with TARGET_5200. From-SVN: r12181 --- gcc/config/m68k/m68k.c | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c index 9dc952aa376..2e524798ad9 100644 --- a/gcc/config/m68k/m68k.c +++ b/gcc/config/m68k/m68k.c @@ -1066,20 +1066,26 @@ const_method (constant) i = INTVAL (constant); if (USE_MOVQ (i)) return MOVQ; - /* if -256 < N < 256 but N is not in range for a moveq - N^ff will be, so use moveq #N^ff, dreg; not.b dreg. */ - if (USE_MOVQ (i ^ 0xff)) - return NOTB; - /* Likewise, try with not.w */ - if (USE_MOVQ (i ^ 0xffff)) - return NOTW; - /* This is the only value where neg.w is useful */ - if (i == -65408) - return NEGW; - /* Try also with swap */ - u = i; - if (USE_MOVQ ((u >> 16) | (u << 16))) - return SWAP; + + /* The Coldfire doesn't have byte or word operations. */ + /* FIXME: This may not be useful for the m68060 either */ + if (!TARGET_5200) + { + /* if -256 < N < 256 but N is not in range for a moveq + N^ff will be, so use moveq #N^ff, dreg; not.b dreg. */ + if (USE_MOVQ (i ^ 0xff)) + return NOTB; + /* Likewise, try with not.w */ + if (USE_MOVQ (i ^ 0xffff)) + return NOTW; + /* This is the only value where neg.w is useful */ + if (i == -65408) + return NEGW; + /* Try also with swap */ + u = i; + if (USE_MOVQ ((u >> 16) | (u << 16))) + return SWAP; + } /* Otherwise, use move.l */ return MOVL; } -- 2.30.2