Fix for MUL instruction on the v850

* sim/v850/simops.c (Multiply64): Properly test if we need to
	negate either of the operands.

	* sim/testsuite/v850/mul.cgs: New test.
This commit is contained in:
Jeff Law
2022-03-29 20:05:51 -04:00
parent c09115ad6e
commit 5321c31bc7
2 changed files with 17 additions and 2 deletions

View File

@ -0,0 +1,15 @@
# v850e mul
# mach: v850e
# as(v850e): -mv850e
.include "testutils.inc"
# Trivial regression test for incorrect sign bit handling in mul
seti -10, r1
seti 2, r2
mul r1, r2, r3
reg r2, -20
reg r3, -1
pass

View File

@ -339,10 +339,10 @@ Multiply64 (int sign, unsigned long op0)
sign = (op0 ^ op1) & 0x80000000;
if (((signed long) op0) < 0)
if (op0 & 0x80000000)
op0 = - op0;
if (((signed long) op1) < 0)
if (op1 & 0x80000000)
op1 = - op1;
}