Files
DJ Delorie c5fbc25baf Index: ChangeLog
* configure.ac (v850): V850 now has a testsuite.
	* configure (v850): Likewise.

Index: testsuite/ChangeLog

	* sim/v850/: New directory.
	* sim/v850/allinsns.exp: New.
	* sim/v850/bsh.cgs: New.
	* sim/v850/div.cgs: New.
	* sim/v850/divh.cgs: New.
	* sim/v850/divh_3.cgs: New.
	* sim/v850/divhu.cgs: New.
	* sim/v850/divu.cgs: New.
	* sim/v850/sar.cgs: New.
	* sim/v850/satadd.cgs: New.
	* sim/v850/satsub.cgs: New.
	* sim/v850/satsubi.cgs: New.
	* sim/v850/satsubr.cgs: New.
	* sim/v850/shl.cgs: New.
	* sim/v850/shr.cgs: New.
	* sim/v850/testutils.cgs: New.
	* sim/v850/testutils.inc: New.

Index: v850/ChangeLog

	* simops.c (OP_C0): Correct saturation logic.
	(OP_220): Likewise.
	(OP_A0): Likewise.
	(OP_660): Likewise.
	(OP_80): Likewise.

	* simops.c (OP_2A0): If the shift count is zero, clear the
	carry.
	(OP_A007E0): Likewise.
	(OP_2C0): Likewise.
	(OP_C007E0): Likewise.
	(OP_280): Likewise.
	(OP_8007E0): Likewise.

	* simops.c (OP_2C207E0): Correct PSW flags for special divu
	conditions.
	(OP_2C007E0): Likewise, for div.
	(OP_28207E0): Likewise, for divhu.
	(OP_28007E0): Likewise, for divh.  Also, sign-extend the correct
	operand.
	* v850.igen (divh): Likewise, for 2-op divh.

	* v850.igen (bsh): Fix carry logic.
2008-02-06 00:40:05 +00:00

95 lines
1.2 KiB
Plaintext

# v850 divu
# mach: v850e
# as(v850e): -mv850e
.include "testutils.inc"
seti 6, r1
seti 45, r2
divu r1, r2, r3
flags 0
reg r1, 6
reg r2, 7
reg r3, 3
seti 4, r1
seti 0x40000000, r2
divu r1, r2, r3
flags 0
reg r1, 4
reg r2, 0x10000000
reg r3, 0
# Only the lower half of the dividend is used
seti 0x00010006, r1
seti 45, r2
divhu r1, r2, r3
flags 0
reg r1, 0x00010006
reg r2, 7
reg r3, 3
# If the data is divided by zero, OV=1 and the quotient is undefined.
# According to NEC, the S and Z flags, and the output registers, are
# unchanged.
noflags
seti 0, r1
seti 45, r2
seti 67, r3
divu r1, r2, r3
flags v
reg r2, 45
reg r3, 67
allflags
seti 0, r1
seti 45, r2
seti 67, r3
divu r1, r2, r3
flags sat + c + v + s + z
reg r2, 45
reg r3, 67
# Zero / (N!=0) => normal
noflags
seti 45, r1
seti 0, r2
seti 67, r3
divu r1, r2, r3
flags z
reg r1, 45
reg r2, 0
reg r3, 0
# The Z flag is based on the quotient, not the remainder
noflags
seti 45, r1
seti 16, r2
divu r1, r2, r3
flags z
reg r2, 0
reg r3, 16
# If the quot and rem registers are the same, the remainder is stored.
seti 6, r1
seti 45, r2
divu r1, r2, r2
flags 0
reg r1, 6
reg r2, 3
pass