xref: /netbsd-src/external/gpl3/gdb/dist/sim/testsuite/v850/divhu.cgs (revision 4b169a6ba595ae283ca507b26b15fdff40495b1c)
1# v850 divu
2# mach: v850e
3# as(v850e): -mv850e
4
5	.include "testutils.inc"
6
7	seti	6, r1
8	seti	45, r2
9	divu	r1, r2, r3
10
11	flags	0
12	reg	r1, 6
13	reg	r2, 7
14	reg	r3, 3
15
16	seti	4, r1
17	seti	0x40000000, r2
18	divu	r1, r2, r3
19
20	flags	0
21	reg	r1, 4
22	reg	r2, 0x10000000
23	reg	r3, 0
24
25# Only the lower half of the dividend is used
26
27	seti	0x00010006, r1
28	seti	45, r2
29	divhu	r1, r2, r3
30
31	flags	0
32	reg	r1, 0x00010006
33	reg	r2, 7
34	reg	r3, 3
35
36# If the data is divided by zero, OV=1 and the quotient is undefined.
37# According to NEC, the S and Z flags, and the output registers, are
38# unchanged.
39
40	noflags
41	seti	0, r1
42	seti	45, r2
43	seti	67, r3
44	divu	r1, r2, r3
45
46	flags	v
47	reg	r2, 45
48	reg	r3, 67
49
50	allflags
51	seti	0, r1
52	seti	45, r2
53	seti	67, r3
54	divu	r1, r2, r3
55
56	flags	sat + c + v + s + z
57	reg	r2, 45
58	reg	r3, 67
59
60# Zero / (N!=0) => normal
61
62	noflags
63	seti	45, r1
64	seti	0, r2
65	seti	67, r3
66	divu	r1, r2, r3
67
68	flags	z
69	reg	r1, 45
70	reg	r2, 0
71	reg	r3, 0
72
73# The Z flag is based on the quotient, not the remainder
74
75	noflags
76	seti	45, r1
77	seti	16, r2
78	divu	r1, r2, r3
79
80	flags	z
81	reg	r2, 0
82	reg	r3, 16
83
84# If the quot and rem registers are the same, the remainder is stored.
85
86	seti	6, r1
87	seti	45, r2
88	divu	r1, r2, r2
89
90	flags	0
91	reg	r1, 6
92	reg	r2, 3
93
94	pass
95