xref: /netbsd-src/external/gpl3/gdb/dist/sim/testsuite/h8300/mul.s (revision 4b169a6ba595ae283ca507b26b15fdff40495b1c)
1# Hitachi H8 testcase 'muls', 'muls/u', mulu', 'mulu/u', 'mulxs', 'mulxu'
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)
16muls_w_reg_reg:
17	set_grs_a5a5
18
19	;; muls.w rs, rd
20	mov.w	#32, r1
21	mov.w	#-2, r2
22	set_ccr_zero
23	muls.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	-64	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
40muls_w_imm4_reg:
41	set_grs_a5a5
42
43	;; muls.w xx:4, rd
44	mov.w	#-32, r1
45	set_ccr_zero
46	muls.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	-64	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
63muls_l_reg_reg:
64	set_grs_a5a5
65
66	;; muls.l ers, erd
67	mov.l	#320000, er1
68	mov.l	#-2, er2
69	set_ccr_zero
70	muls.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	-640000	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
87muls_l_imm4_reg:
88	set_grs_a5a5
89
90	;; muls.l xx:4, rd
91	mov.l	#-320000, er1
92	set_ccr_zero
93	muls.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	-640000	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
110muls_u_l_reg_reg:
111	set_grs_a5a5
112
113	;; muls/u.l ers, erd
114	mov.l	#0x10000000, er1
115	mov.l	#-16, er2
116	set_ccr_zero
117	muls/u.l	er2, er1
118
119	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
120	test_neg_set
121	test_carry_clear
122	test_zero_clear
123	test_ovf_clear
124
125	test_gr_a5a5	0
126	test_h_gr32	-1	er1
127	test_h_gr32	-16	er2
128	test_gr_a5a5	3
129	test_gr_a5a5	4
130	test_gr_a5a5	5
131	test_gr_a5a5	6
132	test_gr_a5a5	7
133
134muls_u_l_imm4_reg:
135	set_grs_a5a5
136
137	;; muls/u.l xx:4, rd
138	mov.l	#0xffffffff, er1
139	set_ccr_zero
140	muls/u.l	#2:4, er1
141
142	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
143	test_neg_set
144	test_carry_clear
145	test_zero_clear
146	test_ovf_clear
147
148	test_gr_a5a5	0
149	test_h_gr32	-1	er1
150	test_gr_a5a5	2
151	test_gr_a5a5	3
152	test_gr_a5a5	4
153	test_gr_a5a5	5
154	test_gr_a5a5	6
155	test_gr_a5a5	7
156
157mulu_w_reg_reg:
158	set_grs_a5a5
159
160	;; mulu.w rs, rd
161	mov.w	#32, r1
162	mov.w	#-2, r2
163	set_ccr_zero
164	mulu.w	r2, r1
165
166	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
167	test_cc_clear
168
169	test_gr_a5a5	0
170	test_h_gr16	-64	r1
171	test_h_gr32	0xa5a5fffe	er2
172	test_gr_a5a5	3
173	test_gr_a5a5	4
174	test_gr_a5a5	5
175	test_gr_a5a5	6
176	test_gr_a5a5	7
177
178mulu_w_imm4_reg:
179	set_grs_a5a5
180
181	;; mulu.w xx:4, rd
182	mov.w	#32, r1
183	set_ccr_zero
184	mulu.w	#-2:4, r1
185
186	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
187	test_cc_clear
188
189	test_gr_a5a5	0
190	test_h_gr16	0x1c0	r1
191	test_gr_a5a5	2
192	test_gr_a5a5	3
193	test_gr_a5a5	4
194	test_gr_a5a5	5
195	test_gr_a5a5	6
196	test_gr_a5a5	7
197
198mulu_l_reg_reg:
199	set_grs_a5a5
200
201	;; mulu.l ers, erd
202	mov.l	#320000, er1
203	mov.l	#-2, er2
204	set_ccr_zero
205	mulu.l	er2, er1
206
207	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
208	test_cc_clear
209
210	test_gr_a5a5	0
211	test_h_gr32	-640000	er1
212	test_h_gr32	-2	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
219mulu_l_imm4_reg:
220	set_grs_a5a5
221
222	;; mulu.l xx:4, rd
223	mov.l	#320000, er1
224	set_ccr_zero
225	mulu.l	#-2:4, er1
226
227	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
228	test_cc_clear
229
230	test_gr_a5a5	0
231	test_h_gr32	0x445c00	er1
232	test_gr_a5a5	2
233	test_gr_a5a5	3
234	test_gr_a5a5	4
235	test_gr_a5a5	5
236	test_gr_a5a5	6
237	test_gr_a5a5	7
238
239mulu_u_l_reg_reg:
240	set_grs_a5a5
241
242	;; mulu/u.l ers, erd
243	mov.l	#0x10000000, er1
244	mov.l	#16, er2
245	set_ccr_zero
246	mulu/u.l	er2, er1
247
248	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
249	test_cc_clear
250
251	test_gr_a5a5	0
252	test_h_gr32	1	er1
253	test_h_gr32	16	er2
254	test_gr_a5a5	3
255	test_gr_a5a5	4
256	test_gr_a5a5	5
257	test_gr_a5a5	6
258	test_gr_a5a5	7
259
260mulu_u_l_imm4_reg:
261	set_grs_a5a5
262
263	;; mulu/u.l xx:4, rd
264	mov.l	#0xffffffff, er1
265	set_ccr_zero
266	mulu/u.l	#2:4, er1
267
268	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
269	test_cc_clear
270
271	test_gr_a5a5	0
272	test_h_gr32	0x1	er1
273	test_gr_a5a5	2
274	test_gr_a5a5	3
275	test_gr_a5a5	4
276	test_gr_a5a5	5
277	test_gr_a5a5	6
278	test_gr_a5a5	7
279.endif
280
281.if (sim_cpu)			; not equal to zero ie. not h8
282mulxs_b_reg_reg:
283	set_grs_a5a5
284
285	;; mulxs.b rs, rd
286	mov.b	#32, r1l
287	mov.b	#-2, r2l
288	set_ccr_zero
289	mulxs.b	r2l, r1
290
291	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
292	test_neg_set
293	test_carry_clear
294	test_zero_clear
295	test_ovf_clear
296
297	test_gr_a5a5	0
298	test_h_gr16	-64	r1
299	test_h_gr32	0xa5a5a5fe	er2
300	test_gr_a5a5	3
301	test_gr_a5a5	4
302	test_gr_a5a5	5
303	test_gr_a5a5	6
304	test_gr_a5a5	7
305
306.if (sim_cpu == h8sx)
307mulxs_b_imm4_reg:
308	set_grs_a5a5
309
310	;; mulxs.b xx:4, rd
311	mov.w	#-32, r1
312	set_ccr_zero
313	mulxs.b	#2:4, r1
314
315	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
316	test_neg_set
317	test_carry_clear
318	test_zero_clear
319	test_ovf_clear
320
321	test_gr_a5a5	0
322	test_h_gr16	-64	r1
323	test_gr_a5a5	2
324	test_gr_a5a5	3
325	test_gr_a5a5	4
326	test_gr_a5a5	5
327	test_gr_a5a5	6
328	test_gr_a5a5	7
329.endif				; h8sx
330
331mulxs_w_reg_reg:
332	set_grs_a5a5
333
334	;; mulxs.w ers, erd
335	mov.w	#0x1000,  r1
336	mov.w	#-0x1000, r2
337	set_ccr_zero
338	mulxs.w	r2, er1
339
340	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
341	test_neg_set
342	test_carry_clear
343	test_zero_clear
344	test_ovf_clear
345
346	test_gr_a5a5	0
347	test_h_gr32	0xff000000	er1
348	test_h_gr32	0xa5a5f000	er2
349	test_gr_a5a5	3
350	test_gr_a5a5	4
351	test_gr_a5a5	5
352	test_gr_a5a5	6
353	test_gr_a5a5	7
354
355.if (sim_cpu == h8sx)
356mulxs_w_imm4_reg:
357	set_grs_a5a5
358
359	;; mulxs.w xx:4, rd
360	mov.w	#-1, r1
361	set_ccr_zero
362	mulxs.w	#2:4, er1
363
364	;; test ccr		; H=0 N=1 Z=0 V=0 C=0
365	test_neg_set
366	test_carry_clear
367	test_zero_clear
368	test_ovf_clear
369
370	test_gr_a5a5	0
371	test_h_gr32	-2	er1
372	test_gr_a5a5	2
373	test_gr_a5a5	3
374	test_gr_a5a5	4
375	test_gr_a5a5	5
376	test_gr_a5a5	6
377	test_gr_a5a5	7
378.endif				; h8sx
379.endif				; not h8
380
381mulxu_b_reg_reg:
382	set_grs_a5a5
383
384	;; mulxu.b rs, rd
385	mov.b	#32, r1l
386	mov.b	#-2, r2l
387	set_ccr_zero
388	mulxu.b	r2l, r1
389
390	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
391	test_cc_clear
392
393	test_gr_a5a5	0
394	test_h_gr16	0x1fc0	r1
395	test_h_gr16	0xa5fe  r2
396.if (sim_cpu)
397	test_h_gr32	0xa5a5a5fe	er2
398.endif
399	test_gr_a5a5	3
400	test_gr_a5a5	4
401	test_gr_a5a5	5
402	test_gr_a5a5	6
403	test_gr_a5a5	7
404
405.if (sim_cpu)			; not h8
406.if (sim_cpu == h8sx)
407mulxu_b_imm4_reg:
408	set_grs_a5a5
409
410	;; mulxu.b xx:4, rd
411	mov.b	#-32, r1l
412	set_ccr_zero
413	mulxu.b	#2:4, r1
414
415	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
416	test_cc_clear
417
418	test_gr_a5a5	0
419	test_h_gr16	0x1c0	r1
420	test_gr_a5a5	2
421	test_gr_a5a5	3
422	test_gr_a5a5	4
423	test_gr_a5a5	5
424	test_gr_a5a5	6
425	test_gr_a5a5	7
426.endif				; h8sx
427
428mulxu_w_reg_reg:
429	set_grs_a5a5
430
431	;; mulxu.w ers, erd
432	mov.w	#0x1000,  r1
433	mov.w	#-0x1000, r2
434	set_ccr_zero
435	mulxu.w	r2, er1
436
437	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
438	test_cc_clear
439
440	test_gr_a5a5	0
441	test_h_gr32	0x0f000000	er1
442	test_h_gr32	0xa5a5f000	er2
443	test_gr_a5a5	3
444	test_gr_a5a5	4
445	test_gr_a5a5	5
446	test_gr_a5a5	6
447	test_gr_a5a5	7
448
449.if (sim_cpu == h8sx)
450mulxu_w_imm4_reg:
451	set_grs_a5a5
452
453	;; mulxu.w xx:4, rd
454	mov.w	#-1, r1
455	set_ccr_zero
456	mulxu.w	#2:4, er1
457
458	;; test ccr		; H=0 N=0 Z=0 V=0 C=0
459	test_cc_clear
460
461	test_gr_a5a5	0
462	test_h_gr32	0x1fffe	er1
463	test_gr_a5a5	2
464	test_gr_a5a5	3
465	test_gr_a5a5	4
466	test_gr_a5a5	5
467	test_gr_a5a5	6
468	test_gr_a5a5	7
469.endif				; h8sx
470.endif				; not h8
471
472	pass
473
474	exit 0
475