mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-29 16:38:05 +08:00
* gencode.c (build_instruction) [MUL]: Cast operands to word64, to
force a 64 bit multiplication. (build_instruction) [OR]: In mips16 mode, don't do anything if the destination register is 0, since that is the default mips16 nop instruction.
This commit is contained in:
@ -1,3 +1,11 @@
|
|||||||
|
Thu Dec 19 14:07:27 1996 Ian Lance Taylor <ian@cygnus.com>
|
||||||
|
|
||||||
|
* gencode.c (build_instruction) [MUL]: Cast operands to word64, to
|
||||||
|
force a 64 bit multiplication.
|
||||||
|
(build_instruction) [OR]: In mips16 mode, don't do anything if the
|
||||||
|
destination register is 0, since that is the default mips16 nop
|
||||||
|
instruction.
|
||||||
|
|
||||||
Mon Dec 16 14:59:38 1996 Ian Lance Taylor <ian@cygnus.com>
|
Mon Dec 16 14:59:38 1996 Ian Lance Taylor <ian@cygnus.com>
|
||||||
|
|
||||||
* gencode.c (MIPS16_DECODE): SWRASP is I8, not RI.
|
* gencode.c (MIPS16_DECODE): SWRASP is I8, not RI.
|
||||||
|
@ -1622,7 +1622,7 @@ build_instruction (doisa, features, mips16, insn)
|
|||||||
if (insn->flags & UNSIGNED)
|
if (insn->flags & UNSIGNED)
|
||||||
printf(" uword64 temp = ((uword64)(op1 & 0xffffffff) * (uword64)(op2 & 0xffffffff));\n");
|
printf(" uword64 temp = ((uword64)(op1 & 0xffffffff) * (uword64)(op2 & 0xffffffff));\n");
|
||||||
else
|
else
|
||||||
printf(" uword64 temp = (op1 * op2);\n");
|
printf(" uword64 temp = ((word64) op1 * (word64) op2);\n");
|
||||||
printf(" LO = SIGNEXTEND((%s)WORD64LO(temp),32);\n",regtype);
|
printf(" LO = SIGNEXTEND((%s)WORD64LO(temp),32);\n",regtype);
|
||||||
printf(" HI = SIGNEXTEND((%s)WORD64HI(temp),32);\n",regtype);
|
printf(" HI = SIGNEXTEND((%s)WORD64HI(temp),32);\n",regtype);
|
||||||
}
|
}
|
||||||
@ -1795,6 +1795,11 @@ build_instruction (doisa, features, mips16, insn)
|
|||||||
break ;
|
break ;
|
||||||
|
|
||||||
case OR:
|
case OR:
|
||||||
|
/* The default mips16 nop instruction does an or to register
|
||||||
|
zero; catch that case, so that we don't get useless warnings
|
||||||
|
from the simulator. */
|
||||||
|
if (mips16)
|
||||||
|
printf (" if (destreg != 0)\n");
|
||||||
printf(" GPR[destreg] = %s(op1 | op2);\n",((insn->flags & NOT) ? "~" : ""));
|
printf(" GPR[destreg] = %s(op1 | op2);\n",((insn->flags & NOT) ? "~" : ""));
|
||||||
break ;
|
break ;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user