From: Richard Kenner Date: Thu, 6 Jun 1996 21:40:30 +0000 (-0400) Subject: (const_method): Do not synthesize long constants with byte or word X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=240922421def12476ef77ed7d2b4feecd56b0a6f;p=gcc.git (const_method): Do not synthesize long constants with byte or word operations with TARGET_5200. From-SVN: r12181 --- 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; }