diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1997-05-18 07:47:43 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1997-05-18 07:47:43 -0400 |
commit | 9b55bf04b6da47b898ca202d3dc80d913b6a1c5f (patch) | |
tree | 9dc1b8c74803ebc7b35fb9fcbb3e7d674e06fea8 /gcc/config | |
parent | a25cea96d7a298b968786665239b4bcf11ffaf6e (diff) | |
download | gcc-9b55bf04b6da47b898ca202d3dc80d913b6a1c5f.tar.gz |
(output_move_strict{hi,qi}): New functions.
From-SVN: r14078
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/m68k/m68k.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c index 2f4ba22f0b0..8f26871404a 100644 --- a/gcc/config/m68k/m68k.c +++ b/gcc/config/m68k/m68k.c @@ -1556,6 +1556,32 @@ output_move_qimode (operands) return "move%.b %1,%0"; } +char * +output_move_stricthi (operands) + rtx *operands; +{ + if (operands[1] == const0_rtx + /* clr insns on 68000 read before writing. + This isn't so on the 68010, but we have no TARGET_68010. */ + && ((TARGET_68020 || TARGET_5200) + || !(GET_CODE (operands[0]) == MEM && MEM_VOLATILE_P (operands[0])))) + return "clr%.w %0"; + return "move%.w %1,%0"; +} + +char * +output_move_strictqi (operands) + rtx *operands; +{ + if (operands[1] == const0_rtx + /* clr insns on 68000 read before writing. + This isn't so on the 68010, but we have no TARGET_68010. */ + && ((TARGET_68020 || TARGET_5200) + || !(GET_CODE (operands[0]) == MEM && MEM_VOLATILE_P (operands[0])))) + return "clr%.b %0"; + return "move%.b %1,%0"; +} + /* Return the best assembler insn template for moving operands[1] into operands[0] as a fullword. */ |