OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gdb-6.8/] [sim/] [testsuite/] [sim/] [h8300/] [mul.s] - Blame information for rev 24

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 24 jeremybenn
# 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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.