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/] [extw.s] - Blame information for rev 280

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

Line No. Rev Author Line
1 24 jeremybenn
# Hitachi H8 testcase 'exts.w, extu.w'
2
# mach(): h8300h h8300s h8sx
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
        .data
16
        .align 2
17
pos:    .word   0xff01
18
neg:    .word   0x0080
19
 
20
        .text
21
 
22
exts_w_reg16_p:
23
        set_grs_a5a5
24
        set_ccr_zero
25
        ;; exts.w rn16
26
        mov.b   #1, r0l
27
        exts.w  r0
28
 
29
        ;; Test ccr             H=0 N=0 Z=0 V=0 C=0
30
        test_cc_clear
31
 
32
        test_h_gr32  0xa5a50001 er0     ; result of sign extend
33
        test_gr_a5a5 1          ; Make sure other general regs not disturbed
34
        test_gr_a5a5 2
35
        test_gr_a5a5 3
36
        test_gr_a5a5 4
37
        test_gr_a5a5 5
38
        test_gr_a5a5 6
39
        test_gr_a5a5 7
40
 
41
exts_w_reg16_n:
42
        set_grs_a5a5
43
        set_ccr_zero
44
        ;; exts.w rn16
45
        mov.b   #0xff, r0l
46
        exts.w  r0
47
 
48
        ;; Test ccr             H=0 N=1 Z=0 V=0 C=0
49
        test_neg_set
50
        test_zero_clear
51
        test_ovf_clear
52
        test_carry_clear
53
 
54
        test_h_gr32  0xa5a5ffff er0     ; result of sign extend
55
        test_gr_a5a5 1          ; Make sure other general regs not disturbed
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
extu_w_reg16_n:
64
        set_grs_a5a5
65
        set_ccr_zero
66
        ;; extu.w rn16
67
        mov.b   #0xff, r0l
68
        extu.w  r0
69
 
70
        ;; Test ccr             H=0 N=0 Z=0 V=0 C=0
71
        test_cc_clear
72
 
73
        test_h_gr32  0xa5a500ff er0     ; result of zero extend
74
        test_gr_a5a5 1          ; Make sure other general regs not disturbed
75
        test_gr_a5a5 2
76
        test_gr_a5a5 3
77
        test_gr_a5a5 4
78
        test_gr_a5a5 5
79
        test_gr_a5a5 6
80
        test_gr_a5a5 7
81
 
82
.if (sim_cpu == h8sx)
83
exts_w_ind_p:
84
        set_grs_a5a5
85
        set_ccr_zero
86
        ;; exts.w @ern
87
        mov.l   #pos, er1
88
        exts.w  @er1
89
 
90
        ;; Test ccr             H=0 N=0 Z=0 V=0 C=0
91
        test_cc_clear
92
 
93
        test_h_gr32  pos er1    ; er1 still contains target address
94
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
95
        test_gr_a5a5 2
96
        test_gr_a5a5 3
97
        test_gr_a5a5 4
98
        test_gr_a5a5 5
99
        test_gr_a5a5 6
100
        test_gr_a5a5 7
101
        cmp.w   #0x0001, @pos
102
        beq     .Lswindp
103
        fail
104
.Lswindp:
105
        mov.w   #0xff01, @pos   ; Restore initial value
106
 
107
exts_w_ind_n:
108
        set_grs_a5a5
109
        set_ccr_zero
110
        ;; exts.w @ern
111
        mov.l   #neg, er1
112
        exts.w  @er1
113
 
114
        ;; Test ccr             H=0 N=1 Z=0 V=0 C=0
115
        test_neg_set
116
        test_zero_clear
117
        test_ovf_clear
118
        test_carry_clear
119
 
120
        test_h_gr32  neg er1    ; er1 still contains target address
121
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
122
        test_gr_a5a5 2
123
        test_gr_a5a5 3
124
        test_gr_a5a5 4
125
        test_gr_a5a5 5
126
        test_gr_a5a5 6
127
        test_gr_a5a5 7
128
        cmp.w   #0xff80, @neg
129
        beq     .Lswindn
130
        fail
131
.Lswindn:
132
        ;; Note: leave the value as 0xff80, so that extu has work to do.
133
 
134
extu_w_ind_n:
135
        set_grs_a5a5
136
        set_ccr_zero
137
        ;; extu.w @ern
138
        mov.l   #neg, er1
139
        extu.w  @er1
140
 
141
        ;; Test ccr             H=0 N=0 Z=0 V=0 C=0
142
        test_cc_clear
143
 
144
        test_h_gr32  neg er1    ; er1 still contains target address
145
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
146
        test_gr_a5a5 2
147
        test_gr_a5a5 3
148
        test_gr_a5a5 4
149
        test_gr_a5a5 5
150
        test_gr_a5a5 6
151
        test_gr_a5a5 7
152
        cmp.w   #0x0080, @neg
153
        beq     .Luwindn
154
        fail
155
.Luwindn:
156
        ;; Note: leave the value as 0x0080, like it started out.
157
 
158
exts_w_postinc_p:
159
        set_grs_a5a5
160
        set_ccr_zero
161
        ;; exts.w @ern+
162
        mov.l   #pos, er1
163
        exts.w  @er1+
164
 
165
        ;; Test ccr             H=0 N=0 Z=0 V=0 C=0
166
        test_cc_clear
167
 
168
        test_h_gr32  pos+2 er1  ; er1 still contains target address plus 2
169
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
170
        test_gr_a5a5 2
171
        test_gr_a5a5 3
172
        test_gr_a5a5 4
173
        test_gr_a5a5 5
174
        test_gr_a5a5 6
175
        test_gr_a5a5 7
176
        cmp.w   #0x0001, @pos
177
        beq     .Lswpostincp
178
        fail
179
.Lswpostincp:
180
        mov.w   #0xff01, @pos   ; Restore initial value
181
 
182
exts_w_postinc_n:
183
        set_grs_a5a5
184
        set_ccr_zero
185
        ;; exts.w @ern+
186
        mov.l   #neg, er1
187
        exts.w  @er1+
188
 
189
        ;; Test ccr             H=0 N=1 Z=0 V=0 C=0
190
        test_neg_set
191
        test_zero_clear
192
        test_ovf_clear
193
        test_carry_clear
194
 
195
        test_h_gr32  neg+2 er1  ; er1 still contains target address
196
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
197
        test_gr_a5a5 2
198
        test_gr_a5a5 3
199
        test_gr_a5a5 4
200
        test_gr_a5a5 5
201
        test_gr_a5a5 6
202
        test_gr_a5a5 7
203
        cmp.w   #0xff80, @neg
204
        beq     .Lswpostincn
205
        fail
206
.Lswpostincn:
207
        ;; Note: leave the value as 0xff80, so that extu has work to do.
208
 
209
extu_w_postinc_n:
210
        set_grs_a5a5
211
        set_ccr_zero
212
        ;; extu.w @ern+
213
        mov.l   #neg, er1
214
        extu.w  @er1+
215
 
216
        ;; Test ccr             H=0 N=0 Z=0 V=0 C=0
217
        test_cc_clear
218
 
219
        test_h_gr32  neg+2 er1  ; er1 still contains target address
220
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
221
        test_gr_a5a5 2
222
        test_gr_a5a5 3
223
        test_gr_a5a5 4
224
        test_gr_a5a5 5
225
        test_gr_a5a5 6
226
        test_gr_a5a5 7
227
        cmp.w   #0x0080, @neg
228
        beq     .Luwpostincn
229
        fail
230
.Luwpostincn:
231
        ;; Note: leave the value as 0x0080, like it started out.
232
 
233
exts_w_postdec_p:
234
        set_grs_a5a5
235
        set_ccr_zero
236
        ;; exts.w @ern-
237
        mov.l   #pos, er1
238
        exts.w  @er1-
239
 
240
        ;; Test ccr             H=0 N=0 Z=0 V=0 C=0
241
        test_cc_clear
242
 
243
        test_h_gr32  pos-2 er1  ; er1 still contains target address plus 2
244
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
245
        test_gr_a5a5 2
246
        test_gr_a5a5 3
247
        test_gr_a5a5 4
248
        test_gr_a5a5 5
249
        test_gr_a5a5 6
250
        test_gr_a5a5 7
251
        cmp.w   #0x0001, @pos
252
        beq     .Lswpostdecp
253
        fail
254
.Lswpostdecp:
255
        mov.w   #0xff01, @pos   ; Restore initial value
256
 
257
exts_w_postdec_n:
258
        set_grs_a5a5
259
        set_ccr_zero
260
        ;; exts.w @ern-
261
        mov.l   #neg, er1
262
        exts.w  @er1-
263
 
264
        ;; Test ccr             H=0 N=1 Z=0 V=0 C=0
265
        test_neg_set
266
        test_zero_clear
267
        test_ovf_clear
268
        test_carry_clear
269
 
270
        test_h_gr32  neg-2 er1  ; er1 still contains target address
271
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
272
        test_gr_a5a5 2
273
        test_gr_a5a5 3
274
        test_gr_a5a5 4
275
        test_gr_a5a5 5
276
        test_gr_a5a5 6
277
        test_gr_a5a5 7
278
        cmp.w   #0xff80, @neg
279
        beq     .Lswpostdecn
280
        fail
281
.Lswpostdecn:
282
        ;; Note: leave the value as 0xff80, so that extu has work to do.
283
 
284
extu_w_postdec_n:
285
        set_grs_a5a5
286
        set_ccr_zero
287
        ;; extu.w @ern-
288
        mov.l   #neg, er1
289
        extu.w  @er1-
290
 
291
        ;; Test ccr             H=0 N=0 Z=0 V=0 C=0
292
        test_cc_clear
293
 
294
        test_h_gr32  neg-2 er1  ; er1 still contains target address
295
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
296
        test_gr_a5a5 2
297
        test_gr_a5a5 3
298
        test_gr_a5a5 4
299
        test_gr_a5a5 5
300
        test_gr_a5a5 6
301
        test_gr_a5a5 7
302
        cmp.w   #0x0080, @neg
303
        beq     .Luwpostdecn
304
        fail
305
.Luwpostdecn:
306
        ;; Note: leave the value as 0x0080, like it started out.
307
 
308
exts_w_preinc_p:
309
        set_grs_a5a5
310
        set_ccr_zero
311
        ;; exts.w @+ern
312
        mov.l   #pos-2, er1
313
        exts.w  @+er1
314
 
315
        ;; Test ccr             H=0 N=0 Z=0 V=0 C=0
316
        test_cc_clear
317
 
318
        test_h_gr32  pos er1    ; er1 still contains target address plus 2
319
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
320
        test_gr_a5a5 2
321
        test_gr_a5a5 3
322
        test_gr_a5a5 4
323
        test_gr_a5a5 5
324
        test_gr_a5a5 6
325
        test_gr_a5a5 7
326
        cmp.w   #0x0001, @pos
327
        beq     .Lswpreincp
328
        fail
329
.Lswpreincp:
330
        mov.w   #0xff01, @pos   ; Restore initial value
331
 
332
exts_w_preinc_n:
333
        set_grs_a5a5
334
        set_ccr_zero
335
        ;; exts.w @+ern
336
        mov.l   #neg-2, er1
337
        exts.w  @+er1
338
 
339
        ;; Test ccr             H=0 N=1 Z=0 V=0 C=0
340
        test_neg_set
341
        test_zero_clear
342
        test_ovf_clear
343
        test_carry_clear
344
 
345
        test_h_gr32  neg er1    ; er1 still contains target address
346
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
347
        test_gr_a5a5 2
348
        test_gr_a5a5 3
349
        test_gr_a5a5 4
350
        test_gr_a5a5 5
351
        test_gr_a5a5 6
352
        test_gr_a5a5 7
353
        cmp.w   #0xff80, @neg
354
        beq     .Lswpreincn
355
        fail
356
.Lswpreincn:
357
        ;; Note: leave the value as 0xff80, so that extu has work to do.
358
 
359
extu_w_preinc_n:
360
        set_grs_a5a5
361
        set_ccr_zero
362
        ;; extu.w @+ern
363
        mov.l   #neg-2, er1
364
        extu.w  @+er1
365
 
366
        ;; Test ccr             H=0 N=0 Z=0 V=0 C=0
367
        test_cc_clear
368
 
369
        test_h_gr32  neg er1    ; er1 still contains target address
370
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
371
        test_gr_a5a5 2
372
        test_gr_a5a5 3
373
        test_gr_a5a5 4
374
        test_gr_a5a5 5
375
        test_gr_a5a5 6
376
        test_gr_a5a5 7
377
        cmp.w   #0x0080, @neg
378
        beq     .Luwpreincn
379
        fail
380
.Luwpreincn:
381
        ;; Note: leave the value as 0x0080, like it started out.
382
 
383
exts_w_predec_p:
384
        set_grs_a5a5
385
        set_ccr_zero
386
        ;; exts.w @-ern
387
        mov.l   #pos+2, er1
388
        exts.w  @-er1
389
 
390
        ;; Test ccr             H=0 N=0 Z=0 V=0 C=0
391
        test_cc_clear
392
 
393
        test_h_gr32  pos er1    ; er1 still contains target address plus 2
394
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
395
        test_gr_a5a5 2
396
        test_gr_a5a5 3
397
        test_gr_a5a5 4
398
        test_gr_a5a5 5
399
        test_gr_a5a5 6
400
        test_gr_a5a5 7
401
        cmp.w   #0x0001, @pos
402
        beq     .Lswpredecp
403
        fail
404
.Lswpredecp:
405
        mov.w   #0xff01, @pos   ; Restore initial value
406
 
407
exts_w_predec_n:
408
        set_grs_a5a5
409
        set_ccr_zero
410
        ;; exts.w @-ern
411
        mov.l   #neg+2, er1
412
        exts.w  @-er1
413
 
414
        ;; Test ccr             H=0 N=1 Z=0 V=0 C=0
415
        test_neg_set
416
        test_zero_clear
417
        test_ovf_clear
418
        test_carry_clear
419
 
420
        test_h_gr32  neg er1    ; er1 still contains target address
421
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
422
        test_gr_a5a5 2
423
        test_gr_a5a5 3
424
        test_gr_a5a5 4
425
        test_gr_a5a5 5
426
        test_gr_a5a5 6
427
        test_gr_a5a5 7
428
        cmp.w   #0xff80, @neg
429
        beq     .Lswpredecn
430
        fail
431
.Lswpredecn:
432
        ;; Note: leave the value as 0xff80, so that extu has work to do.
433
 
434
extu_w_predec_n:
435
        set_grs_a5a5
436
        set_ccr_zero
437
        ;; extu.w @-ern
438
        mov.l   #neg+2, er1
439
        extu.w  @-er1
440
 
441
        ;; Test ccr             H=0 N=0 Z=0 V=0 C=0
442
        test_cc_clear
443
 
444
        test_h_gr32  neg er1    ; er1 still contains target address
445
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
446
        test_gr_a5a5 2
447
        test_gr_a5a5 3
448
        test_gr_a5a5 4
449
        test_gr_a5a5 5
450
        test_gr_a5a5 6
451
        test_gr_a5a5 7
452
        cmp.w   #0x0080, @neg
453
        beq     .Luwpredecn
454
        fail
455
.Luwpredecn:
456
        ;; Note: leave the value as 0x0080, like it started out.
457
 
458
extu_w_disp2_n:
459
        set_grs_a5a5
460
        set_ccr_zero
461
        ;; extu.w @(dd:2, ern)
462
        mov.l   #neg-2, er1
463
        extu.w  @(2:2, er1)
464
 
465
        ;; Test ccr             H=0 N=0 Z=0 V=0 C=0
466
        test_cc_clear
467
 
468
        test_h_gr32  neg-2 er1  ; er1 still contains target address
469
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
470
        test_gr_a5a5 2
471
        test_gr_a5a5 3
472
        test_gr_a5a5 4
473
        test_gr_a5a5 5
474
        test_gr_a5a5 6
475
        test_gr_a5a5 7
476
        cmp.w   #0x0080, @neg
477
        beq     .Luwdisp2n
478
        fail
479
.Luwdisp2n:
480
        ;; Note: leave the value as 0x0080, like it started out.
481
 
482
extu_w_disp16_n:
483
        set_grs_a5a5
484
        set_ccr_zero
485
        ;; extu.w @(dd:16, ern)
486
        mov.l   #neg-44, er1
487
        extu.w  @(44:16, er1)
488
 
489
        ;; Test ccr             H=0 N=0 Z=0 V=0 C=0
490
        test_cc_clear
491
 
492
        test_h_gr32  neg-44 er1 ; er1 still contains target address
493
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
494
        test_gr_a5a5 2
495
        test_gr_a5a5 3
496
        test_gr_a5a5 4
497
        test_gr_a5a5 5
498
        test_gr_a5a5 6
499
        test_gr_a5a5 7
500
        cmp.w   #0x0080, @neg
501
        beq     .Luwdisp16n
502
        fail
503
.Luwdisp16n:
504
        ;; Note: leave the value as 0x0080, like it started out.
505
 
506
extu_w_disp32_n:
507
        set_grs_a5a5
508
        set_ccr_zero
509
        ;; extu.w @(dd:32, ern)
510
        mov.l   #neg+444, er1
511
        extu.w  @(-444:32, er1)
512
 
513
        ;; Test ccr             H=0 N=0 Z=0 V=0 C=0
514
        test_cc_clear
515
 
516
        test_h_gr32  neg+444 er1        ; er1 still contains target address
517
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
518
        test_gr_a5a5 2
519
        test_gr_a5a5 3
520
        test_gr_a5a5 4
521
        test_gr_a5a5 5
522
        test_gr_a5a5 6
523
        test_gr_a5a5 7
524
        cmp.w   #0x0080, @neg
525
        beq     .Luwdisp32n
526
        fail
527
.Luwdisp32n:
528
        ;; Note: leave the value as 0x0080, like it started out.
529
 
530
extu_w_abs16_n:
531
        set_grs_a5a5
532
        set_ccr_zero
533
        ;; extu.w @aa:16
534
        extu.w  @neg:16
535
 
536
        ;; Test ccr             H=0 N=0 Z=0 V=0 C=0
537
        test_cc_clear
538
 
539
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
540
        test_gr_a5a5 1
541
        test_gr_a5a5 2
542
        test_gr_a5a5 3
543
        test_gr_a5a5 4
544
        test_gr_a5a5 5
545
        test_gr_a5a5 6
546
        test_gr_a5a5 7
547
        cmp.w   #0x0080, @neg
548
        beq     .Luwabs16n
549
        fail
550
.Luwabs16n:
551
        ;; Note: leave the value as 0x0080, like it started out.
552
 
553
extu_w_abs32_n:
554
        set_grs_a5a5
555
        set_ccr_zero
556
        ;; extu.w @aa:32
557
        extu.w  @neg:32
558
 
559
        ;; Test ccr             H=0 N=0 Z=0 V=0 C=0
560
        test_cc_clear
561
 
562
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
563
        test_gr_a5a5 1
564
        test_gr_a5a5 2
565
        test_gr_a5a5 3
566
        test_gr_a5a5 4
567
        test_gr_a5a5 5
568
        test_gr_a5a5 6
569
        test_gr_a5a5 7
570
        cmp.w   #0x0080, @neg
571
        beq     .Luwabs32n
572
        fail
573
.Luwabs32n:
574
        ;; Note: leave the value as 0x0080, like it started out.
575
 
576
.endif
577
 
578
        pass
579
 
580
        exit 0

powered by: WebSVN 2.1.0

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