Fix sign extension on 32 bit add/sub instructions.

This commit is contained in:
Andrew Cagney
1998-05-21 09:32:07 +00:00
parent 8404825993
commit 26feb3a83d
8 changed files with 470 additions and 74 deletions

View File

@ -1,3 +1,8 @@
Thu May 21 18:57:19 1998 Andrew Cagney <cagney@b1.cygnus.com>
* sim-main.h (ALU32_END): Sign extend 32 bit results.
* mips.igen (ADD, SUB, ADDI, DADD, DSUB): Trace.
start-sanitize-r5900
Thu May 21 17:15:39 1998 Andrew Cagney <cagney@b1.cygnus.com>

View File

@ -272,9 +272,13 @@
*tx19:
// end-sanitize-tx19
{
ALU32_BEGIN (GPR[RS]);
ALU32_ADD (GPR[RT]);
ALU32_END (GPR[RD]);
TRACE_ALU_INPUT2 (GPR[RS], GPR[RT]);
{
ALU32_BEGIN (GPR[RS]);
ALU32_ADD (GPR[RT]);
ALU32_END (GPR[RD]);
}
TRACE_ALU_RESULT (GPR[RD]);
}
@ -297,9 +301,13 @@
*tx19:
// end-sanitize-tx19
{
ALU32_BEGIN (GPR[RS]);
ALU32_ADD (EXTEND16 (IMMEDIATE));
ALU32_END (GPR[RT]);
TRACE_ALU_INPUT2 (GPR[RS], EXTEND16 (IMMEDIATE));
{
ALU32_BEGIN (GPR[RS]);
ALU32_ADD (EXTEND16 (IMMEDIATE));
ALU32_END (GPR[RT]);
}
TRACE_ALU_RESULT (GPR[RT]);
}
@ -923,9 +931,13 @@
// end-sanitize-tx19
{
/* this check's for overflow */
ALU64_BEGIN (GPR[RS]);
ALU64_ADD (GPR[RT]);
ALU64_END (GPR[RD]);
TRACE_ALU_INPUT2 (GPR[RS], GPR[RT]);
{
ALU64_BEGIN (GPR[RS]);
ALU64_ADD (GPR[RT]);
ALU64_END (GPR[RD]);
}
TRACE_ALU_RESULT (GPR[RD]);
}
@ -948,9 +960,13 @@
*tx19:
// end-sanitize-tx19
{
ALU64_BEGIN (GPR[RS]);
ALU64_ADD (EXTEND16 (IMMEDIATE));
ALU64_END (GPR[RT]);
TRACE_ALU_INPUT2 (GPR[RS], EXTEND16 (IMMEDIATE));
{
ALU64_BEGIN (GPR[RS]);
ALU64_ADD (EXTEND16 (IMMEDIATE));
ALU64_END (GPR[RT]);
}
TRACE_ALU_RESULT (GPR[RT]);
}
@ -1554,9 +1570,13 @@
*tx19:
// end-sanitize-tx19
{
ALU64_BEGIN (GPR[RS]);
ALU64_SUB (GPR[RT]);
ALU64_END (GPR[RD]);
TRACE_ALU_INPUT2 (GPR[RS], GPR[RT]);
{
ALU64_BEGIN (GPR[RS]);
ALU64_SUB (GPR[RT]);
ALU64_END (GPR[RD]);
}
TRACE_ALU_RESULT (GPR[RD]);
}
@ -3105,9 +3125,13 @@
*tx19:
// end-sanitize-tx19
{
ALU32_BEGIN (GPR[RS]);
ALU32_SUB (GPR[RT]);
ALU32_END (GPR[RD]);
TRACE_ALU_INPUT2 (GPR[RS], GPR[RT]);
{
ALU32_BEGIN (GPR[RS]);
ALU32_SUB (GPR[RT]);
ALU32_END (GPR[RD]);
}
TRACE_ALU_RESULT (GPR[RD]);
}