PowerPC64 .branch_lt address
[binutils-gdb.git] / sim / testsuite / h8300 / mul.s
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)
16 muls_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
40 muls_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
63 muls_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
87 muls_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
110 muls_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
134 muls_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
157 mulu_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
178 mulu_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
198 mulu_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
219 mulu_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
239 mulu_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
260 mulu_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
282 mulxs_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)
307 mulxs_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
331 mulxs_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)
356 mulxs_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
381 mulxu_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)
407 mulxu_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
428 mulxu_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)
450 mulxu_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