1# Hitachi H8 testcase 'divs', 'divu', 'divxs', 'divxu'
2# mach(): all
3# as(h8300):	--defsym sim_cpu=0
4# as(h8300h):	--defsym sim_cpu=1
5# as(h8300s):	--defsym sim_cpu=2
6# as(h8sx):	--defsym sim_cpu=3
7# ld(h8300h):	-m h8300helf
8# ld(h8300s):	-m h8300self
9# ld(h8sx):	-m h8300sxelf
10
11	.include "testutils.inc"
12
13	start
14
15.if (sim_cpu == h8sx)
16divs_w_reg_reg:
17	set_grs_a5a5
18
19	;; divs.w rs, rd
20	mov.w	#32, r1
21	mov.w	#-2, r2
22	set_ccr_zero
23	divs.w	r2, r1
24
25	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
26	test_neg_set
27	test_carry_clear
28	test_zero_clear
29	test_ovf_clear
30
31	test_gr_a5a5	0
32	test_h_gr16	0xfff0	r1
33	test_h_gr32	0xa5a5fffe	er2
34	test_gr_a5a5	3
35	test_gr_a5a5	4
36	test_gr_a5a5	5
37	test_gr_a5a5	6
38	test_gr_a5a5	7
39
40divs_w_imm4_reg:
41	set_grs_a5a5
42
43	;; divs.w xx:4, rd
44	mov.w	#-32, r1
45	set_ccr_zero
46	divs.w	#2:4, r1
47
48	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
49	test_neg_set
50	test_carry_clear
51	test_zero_clear
52	test_ovf_clear
53
54	test_gr_a5a5	0
55	test_h_gr16	-16	r1
56	test_gr_a5a5	2
57	test_gr_a5a5	3
58	test_gr_a5a5	4
59	test_gr_a5a5	5
60	test_gr_a5a5	6
61	test_gr_a5a5	7
62
63divs_l_reg_reg:
64	set_grs_a5a5
65
66	;; divs.l ers, erd
67	mov.l	#320000, er1
68	mov.l	#-2, er2
69	set_ccr_zero
70	divs.l	er2, er1
71
72	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
73	test_neg_set
74	test_carry_clear
75	test_zero_clear
76	test_ovf_clear
77
78	test_gr_a5a5	0
79	test_h_gr32	-160000	er1
80	test_h_gr32	-2	er2
81	test_gr_a5a5	3
82	test_gr_a5a5	4
83	test_gr_a5a5	5
84	test_gr_a5a5	6
85	test_gr_a5a5	7
86
87divs_l_imm4_reg:
88	set_grs_a5a5
89
90	;; divs.l xx:4, rd
91	mov.l	#-320000, er1
92	set_ccr_zero
93	divs.l	#2:4, er1
94
95	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
96	test_neg_set
97	test_carry_clear
98	test_zero_clear
99	test_ovf_clear
100
101	test_gr_a5a5	0
102	test_h_gr32	-160000	er1
103	test_gr_a5a5	2
104	test_gr_a5a5	3
105	test_gr_a5a5	4
106	test_gr_a5a5	5
107	test_gr_a5a5	6
108	test_gr_a5a5	7
109
110divu_w_reg_reg:
111	set_grs_a5a5
112
113	;; divu.w rs, rd
114	mov.w	#32, r1
115	mov.w	#2, r2
116	set_ccr_zero
117	divu.w	r2, r1
118
119	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
120	test_cc_clear
121
122	test_gr_a5a5	0
123	test_h_gr16	16	r1
124	test_h_gr32	0xa5a50002	er2
125	test_gr_a5a5	3
126	test_gr_a5a5	4
127	test_gr_a5a5	5
128	test_gr_a5a5	6
129	test_gr_a5a5	7
130
131divu_w_imm4_reg:
132	set_grs_a5a5
133
134	;; divu.w xx:4, rd
135	mov.w	#32, r1
136	set_ccr_zero
137	divu.w	#2:4, r1
138
139	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
140	test_cc_clear
141
142	test_gr_a5a5	0
143	test_h_gr16	16	r1
144	test_gr_a5a5	2
145	test_gr_a5a5	3
146	test_gr_a5a5	4
147	test_gr_a5a5	5
148	test_gr_a5a5	6
149	test_gr_a5a5	7
150
151divu_l_reg_reg:
152	set_grs_a5a5
153
154	;; divu.l ers, erd
155	mov.l	#320000, er1
156	mov.l	#2, er2
157	set_ccr_zero
158	divu.l	er2, er1
159
160	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
161	test_cc_clear
162
163	test_gr_a5a5	0
164	test_h_gr32	160000	er1
165	test_h_gr32	2	er2
166	test_gr_a5a5	3
167	test_gr_a5a5	4
168	test_gr_a5a5	5
169	test_gr_a5a5	6
170	test_gr_a5a5	7
171
172divu_l_imm4_reg:
173	set_grs_a5a5
174
175	;; divu.l xx:4, rd
176	mov.l	#320000, er1
177	set_ccr_zero
178	divu.l	#2:4, er1
179
180	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
181	test_cc_clear
182
183	test_gr_a5a5	0
184	test_h_gr32	160000	er1
185	test_gr_a5a5	2
186	test_gr_a5a5	3
187	test_gr_a5a5	4
188	test_gr_a5a5	5
189	test_gr_a5a5	6
190	test_gr_a5a5	7
191
192.endif
193
194.if (sim_cpu)			; not equal to zero ie. not h8
195divxs_b_reg_reg:
196	set_grs_a5a5
197
198	;; divxs.b rs, rd
199	mov.w	#32, r1
200	mov.b	#-2, r2l
201	set_ccr_zero
202	divxs.b	r2l, r1
203
204	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
205	test_neg_set
206	test_carry_clear
207	test_zero_clear
208	test_ovf_clear
209
210	test_gr_a5a5	0
211	test_h_gr16	0x00f0	r1
212	test_h_gr32	0xa5a5a5fe	er2
213	test_gr_a5a5	3
214	test_gr_a5a5	4
215	test_gr_a5a5	5
216	test_gr_a5a5	6
217	test_gr_a5a5	7
218
219.if (sim_cpu == h8sx)
220divxs_b_imm4_reg:
221	set_grs_a5a5
222
223	;; divxs.b xx:4, rd
224	mov.w	#-32, r1
225	set_ccr_zero
226	divxs.b	#2:4, r1
227
228	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
229	test_neg_set
230	test_carry_clear
231	test_zero_clear
232	test_ovf_clear
233
234	test_gr_a5a5	0
235	test_h_gr16	0x00f0	r1
236	test_gr_a5a5	2
237	test_gr_a5a5	3
238	test_gr_a5a5	4
239	test_gr_a5a5	5
240	test_gr_a5a5	6
241	test_gr_a5a5	7
242.endif				; h8sx
243
244divxs_w_reg_reg:
245	set_grs_a5a5
246
247	;; divxs.w ers, erd
248	mov.l	#0x1000,  er1
249	mov.w	#-0x1000, r2
250	set_ccr_zero
251	divxs.w	r2, er1
252
253	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
254	test_neg_set
255	test_carry_clear
256	test_zero_clear
257	test_ovf_clear
258
259	test_gr_a5a5	0
260	test_h_gr32	0x0000ffff	er1
261	test_h_gr32	0xa5a5f000	er2
262	test_gr_a5a5	3
263	test_gr_a5a5	4
264	test_gr_a5a5	5
265	test_gr_a5a5	6
266	test_gr_a5a5	7
267
268.if (sim_cpu == h8sx)
269divxs_w_imm4_reg:
270	set_grs_a5a5
271
272	;; divxs.w xx:4, rd
273	mov.l	#-4, er1
274	set_ccr_zero
275	divxs.w	#2:4, er1
276
277	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
278	test_neg_set
279	test_carry_clear
280	test_zero_clear
281	test_ovf_clear
282
283	test_gr_a5a5	0
284	test_h_gr32	0x0000fffe	er1
285	test_gr_a5a5	2
286	test_gr_a5a5	3
287	test_gr_a5a5	4
288	test_gr_a5a5	5
289	test_gr_a5a5	6
290	test_gr_a5a5	7
291.endif				; h8sx
292.endif				; not h8
293
294divxu_b_reg_reg:
295	set_grs_a5a5
296
297	;; divxu.b rs, rd
298	mov.w	#32, r1
299	mov.b	#2, r2l
300	set_ccr_zero
301	divxu.b	r2l, r1
302
303	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
304	test_cc_clear
305
306	test_gr_a5a5	0
307	test_h_gr16	0x0010	r1
308	test_h_gr16	0xa502  r2
309.if (sim_cpu)
310	test_h_gr32	0xa5a5a502	er2
311.endif
312	test_gr_a5a5	3
313	test_gr_a5a5	4
314	test_gr_a5a5	5
315	test_gr_a5a5	6
316	test_gr_a5a5	7
317
318.if (sim_cpu)			; not h8
319.if (sim_cpu == h8sx)
320divxu_b_imm4_reg:
321	set_grs_a5a5
322
323	;; divxu.b xx:4, rd
324	mov.w	#32, r1
325	set_ccr_zero
326	divxu.b	#2:4, r1
327
328	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
329	test_cc_clear
330
331	test_gr_a5a5	0
332	test_h_gr16	0x0010	r1
333	test_gr_a5a5	2
334	test_gr_a5a5	3
335	test_gr_a5a5	4
336	test_gr_a5a5	5
337	test_gr_a5a5	6
338	test_gr_a5a5	7
339.endif				; h8sx
340
341divxu_w_reg_reg:
342	set_grs_a5a5
343
344	;; divxu.w ers, erd
345	mov.l	#0x1000, er1
346	mov.w	#0x1000, r2
347	set_ccr_zero
348	divxu.w	r2, er1
349
350	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
351	test_cc_clear
352
353	test_gr_a5a5	0
354	test_h_gr32	0x00000001	er1
355	test_h_gr32	0xa5a51000	er2
356	test_gr_a5a5	3
357	test_gr_a5a5	4
358	test_gr_a5a5	5
359	test_gr_a5a5	6
360	test_gr_a5a5	7
361
362.if (sim_cpu == h8sx)
363divxu_w_imm4_reg:
364	set_grs_a5a5
365
366	;; divxu.w xx:4, rd
367	mov.l	#0xffff, er1
368	set_ccr_zero
369	divxu.w	#2:4, er1
370
371	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
372	test_cc_clear
373
374	test_gr_a5a5	0
375	test_h_gr32	0x00017fff	er1
376	test_gr_a5a5	2
377	test_gr_a5a5	3
378	test_gr_a5a5	4
379	test_gr_a5a5	5
380	test_gr_a5a5	6
381	test_gr_a5a5	7
382.endif				; h8sx
383.endif				; not h8
384
385	pass
386
387	exit 0
388