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

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gdb/] [gdb-6.8/] [sim/] [testsuite/] [sim/] [h8300/] [not.s] - Blame information for rev 26

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 26 jlechner
# Hitachi H8 testcase 'not.b, not.w, not.l'
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
        # Instructions tested:
14
        # not.b rd      ;                     1 7 0  rd
15
        # not.b @erd    ;         7 d rd ???? 1 7 0  ignore
16
        # not.b @erd+   ; 0 1 7 4 6 c rd 1??? 1 7 0  ignore
17
        # not.b @erd-   ; 0 1 7 6 6 c rd 1??? 1 7 0  ignore
18
        # not.b @+erd   ; 0 1 7 5 6 c rd 1??? 1 7 0  ignore
19
        # not.b @-erd   ; 0 1 7 7 6 c rd 1??? 1 7 0  ignore
20
        # not.b @(d:2,  erd)    ; 0 1 7 01dd  6 8 rd 8 1 7 0  ignore
21
        # not.b @(d:16, erd)    ; 0 1 7  4 6 e rd 1??? dd:16 1 7 0  ignore
22
        # not.b @(d:32, erd)    ; 7 8 rd 4 6 a  2 1??? dd:32 1 7 0  ignore
23
        # not.b @aa:16          ; 6 a 1 1??? aa:16 1 7 0  ignore
24
        # not.b @aa:32          ; 6 a 3 1??? aa:32 1 7 0  ignore
25
        # word operations
26
        # long operations
27
        #
28
        # Coming soon:
29
        # not.b @aa:8           ; 7 f aaaaaaaa 1 7 0  ignore
30
        #
31
 
32
.data
33
byte_dest:      .byte 0xa5
34
        .align 2
35
word_dest:      .word 0xa5a5
36
        .align 4
37
long_dest:      .long 0xa5a5a5a5
38
        start
39
 
40
        #
41
        # 8-bit byte operations
42
        #
43
 
44
not_b_reg8:
45
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
46
        ;;  fixme set ccr
47
 
48
        ;;  not.b Rd
49
        not     r0l             ; 8-bit register
50
;;;     .word   0x1708
51
 
52
        cmp.b   #0x5a, r0l      ; result of "not 0xa5"
53
        beq     .Lbrd
54
        fail
55
.Lbrd:
56
        ;; fixme test ccr       ; H=0 N=1 Z=0 V=0 C=0
57
        test_h_gr16 0xa55a r0   ; r0 changed by 'not'
58
.if (sim_cpu)                   ; non-zero means h8300h, s, or sx
59
        test_h_gr32 0xa5a5a55a er0      ; er0 changed by 'not' 
60
.endif
61
        test_gr_a5a5 1          ; Make sure other general regs not disturbed
62
        test_gr_a5a5 2
63
        test_gr_a5a5 3
64
        test_gr_a5a5 4
65
        test_gr_a5a5 5
66
        test_gr_a5a5 6
67
        test_gr_a5a5 7
68
 
69
.if (sim_cpu == h8sx)
70
not_b_rdind:
71
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
72
        set_ccr_zero
73
 
74
        ;;  not.b @eRd
75
        mov     #byte_dest, er0
76
        not.b   @er0            ; register indirect operand
77
;;;     .word   0x7d00
78
;;;     .word   0x1700
79
 
80
        test_carry_clear        ; H=0 N=0 Z=0 V=0 C=0
81
        test_ovf_clear
82
        test_zero_clear
83
        test_neg_clear
84
 
85
        test_h_gr32 byte_dest er0       ; er0 still contains address
86
        cmp.b   #0x5a:8, @er0   ; memory contents changed
87
        beq     .Lbind
88
        fail
89
.Lbind:
90
        test_gr_a5a5 1          ; Make sure other general regs not disturbed
91
        test_gr_a5a5 2
92
        test_gr_a5a5 3
93
        test_gr_a5a5 4
94
        test_gr_a5a5 5
95
        test_gr_a5a5 6
96
        test_gr_a5a5 7
97
 
98
not_b_rdpostinc:
99
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
100
        set_ccr_zero
101
 
102
        ;;  not.b @eRd+
103
        mov     #byte_dest, er0 ; register post-increment operand
104
        not.b   @er0+
105
;;;     .word   0x0174
106
;;;     .word   0x6c08
107
;;;     .word   0x1700
108
 
109
        test_carry_clear        ; H=0 N=1 Z=0 V=0 C=0
110
        test_ovf_clear
111
        test_zero_clear
112
        test_neg_set
113
 
114
        test_h_gr32 byte_dest+1 er0     ; er0 contains address plus one
115
        cmp.b   #0xa5:8, @-er0
116
        beq     .Lbpostinc
117
        fail
118
.Lbpostinc:
119
        test_gr_a5a5 1          ; Make sure other general regs not disturbed
120
        test_gr_a5a5 2
121
        test_gr_a5a5 3
122
        test_gr_a5a5 4
123
        test_gr_a5a5 5
124
        test_gr_a5a5 6
125
        test_gr_a5a5 7
126
 
127
not_b_rdpostdec:
128
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
129
        set_ccr_zero
130
 
131
        ;;  not.b @eRd-
132
        mov     #byte_dest, er0 ; register post-decrement operand
133
        not.b   @er0-
134
;;;     .word   0x0176
135
;;;     .word   0x6c08
136
;;;     .word   0x1700
137
 
138
        test_carry_clear        ; H=0 N=0 Z=0 V=0 C=0
139
        test_ovf_clear
140
        test_zero_clear
141
        test_neg_clear
142
 
143
        test_h_gr32 byte_dest-1 er0     ; er0 contains address minus one
144
        cmp.b   #0x5a:8, @+er0
145
;;;     .word   0x0175
146
;;;     .word   0x6c08
147
;;;     .word   0xa05a
148
        beq     .Lbpostdec
149
        fail
150
.Lbpostdec:
151
        test_gr_a5a5 1          ; Make sure other general regs not disturbed
152
        test_gr_a5a5 2
153
        test_gr_a5a5 3
154
        test_gr_a5a5 4
155
        test_gr_a5a5 5
156
        test_gr_a5a5 6
157
        test_gr_a5a5 7
158
 
159
not_b_rdpreinc:
160
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
161
        set_ccr_zero
162
 
163
        ;;  not.b @+eRd
164
        mov     #byte_dest-1, er0
165
        not.b   @+er0                   ; reg pre-increment operand
166
;;;     .word   0x0175
167
;;;     .word   0x6c08
168
;;;     .word   0x1700
169
 
170
        test_carry_clear        ; H=0 N=1 Z=0 V=0 C=0
171
        test_ovf_clear
172
        test_zero_clear
173
        test_neg_set
174
 
175
        cmp.b   #0xa5:8, @er0
176
        beq     .Lbpreinc
177
        fail
178
.Lbpreinc:
179
        test_h_gr32 byte_dest er0       ; er0 contains destination address 
180
        test_gr_a5a5 1          ; Make sure other general regs not disturbed
181
        test_gr_a5a5 2
182
        test_gr_a5a5 3
183
        test_gr_a5a5 4
184
        test_gr_a5a5 5
185
        test_gr_a5a5 6
186
        test_gr_a5a5 7
187
 
188
not_b_rdpredec:
189
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
190
        set_ccr_zero
191
 
192
        ;;  not.b @-eRd
193
        mov     #byte_dest+1, er0
194
        not.b   @-er0           ; reg pre-decr operand
195
;;;     .word   0x0177
196
;;;     .word   0x6c08
197
;;;     .word   0x1700
198
 
199
        test_carry_clear        ; H=0 N=0 Z=0 V=0 C=0
200
        test_ovf_clear
201
        test_zero_clear
202
        test_neg_clear
203
 
204
        cmp.b   #0x5a:8, @er0
205
        beq     .Lbpredec
206
        fail
207
.Lbpredec:
208
        test_h_gr32 byte_dest er0       ; er0 contains destination address 
209
        test_gr_a5a5 1          ; Make sure other general regs not disturbed
210
        test_gr_a5a5 2
211
        test_gr_a5a5 3
212
        test_gr_a5a5 4
213
        test_gr_a5a5 5
214
        test_gr_a5a5 6
215
        test_gr_a5a5 7
216
 
217
not_b_disp2dst:
218
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
219
        set_ccr_zero
220
 
221
        ;;  not.b @(dd:2, erd)
222
        mov     #byte_dest-1, er0
223
        not.b   @(1:2, er0)     ; reg plus 2-bit displacement
224
;;;     .word   0x0175
225
;;;     .word   0x6808
226
;;;     .word   0x1700
227
 
228
        test_carry_clear        ; H=0 N=1 Z=0 V=0 C=0
229
        test_ovf_clear
230
        test_zero_clear
231
        test_neg_set
232
 
233
        cmp.b   #0xa5:8, @+er0
234
        beq     .Lbdisp2
235
        fail
236
.Lbdisp2:
237
        test_h_gr32 byte_dest er0       ; er0 contains destination address 
238
        test_gr_a5a5 1          ; Make sure other general regs not disturbed
239
        test_gr_a5a5 2
240
        test_gr_a5a5 3
241
        test_gr_a5a5 4
242
        test_gr_a5a5 5
243
        test_gr_a5a5 6
244
        test_gr_a5a5 7
245
 
246
not_b_disp16dst:
247
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
248
        set_ccr_zero
249
 
250
        ;;  not.b @(dd:16, erd)
251
        mov     #byte_dest+100, er0
252
        not.b   @(-100:16, er0) ; reg plus 16-bit displacement
253
;;;     .word   0x0174
254
;;;     .word   0x6e08
255
;;;     .word   -100
256
;;;     .word   0x1700
257
 
258
        test_carry_clear        ; H=0 N=0 Z=0 V=0 C=0
259
        test_ovf_clear
260
        test_zero_clear
261
        test_neg_clear
262
 
263
        cmp.b   #0x5a:8, @byte_dest
264
        beq     .Lbdisp16
265
        fail
266
.Lbdisp16:
267
        test_h_gr32 byte_dest+100 er0   ; er0 contains destination address 
268
        test_gr_a5a5 1          ; Make sure other general regs not disturbed
269
        test_gr_a5a5 2
270
        test_gr_a5a5 3
271
        test_gr_a5a5 4
272
        test_gr_a5a5 5
273
        test_gr_a5a5 6
274
        test_gr_a5a5 7
275
 
276
not_b_disp32dst:
277
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
278
        set_ccr_zero
279
 
280
        ;;  not.b @(dd:32, erd)
281
        mov     #byte_dest-0xfffff, er0
282
        not.b   @(0xfffff:32, er0)      ; reg plus 32-bit displacement
283
;;;     .word   0x7804
284
;;;     .word   0x6a28
285
;;;     .long   0xfffff
286
;;;     .word   0x1700
287
 
288
        test_carry_clear        ; H=0 N=1 Z=0 V=0 C=0
289
        test_ovf_clear
290
        test_zero_clear
291
        test_neg_set
292
 
293
        cmp.b   #0xa5:8, @byte_dest
294
        beq     .Lbdisp32
295
        fail
296
.Lbdisp32:
297
        test_h_gr32 byte_dest-0xfffff er0 ; er0 contains destination address
298
        test_gr_a5a5 1          ; Make sure other general regs not disturbed
299
        test_gr_a5a5 2
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
not_b_abs16dst:
307
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
308
        set_ccr_zero
309
 
310
        ;;  not.b @aa:16
311
        not.b   @byte_dest:16   ; 16-bit absolute address
312
;;;     .word   0x6a18
313
;;;     .word   byte_dest
314
;;;     .word   0x1700
315
 
316
        test_carry_clear        ; H=0 N=0 Z=0 V=0 C=0
317
        test_ovf_clear
318
        test_zero_clear
319
        test_neg_clear
320
 
321
        cmp.b   #0x5a:8, @byte_dest
322
        beq     .Lbabs16
323
        fail
324
.Lbabs16:
325
        test_gr_a5a5 0           ; Make sure ALL general regs not disturbed
326
        test_gr_a5a5 1
327
        test_gr_a5a5 2
328
        test_gr_a5a5 3
329
        test_gr_a5a5 4
330
        test_gr_a5a5 5
331
        test_gr_a5a5 6
332
        test_gr_a5a5 7
333
 
334
not_b_abs32dst:
335
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
336
        set_ccr_zero
337
 
338
        ;;  not.b @aa:32
339
        not.b   @byte_dest:32   ; 32-bit absolute address
340
;;;     .word   0x6a38
341
;;;     .long   byte_dest
342
;;;     .word   0x1700
343
 
344
        test_carry_clear        ; H=0 N=1 Z=0 V=0 C=0
345
        test_ovf_clear
346
        test_zero_clear
347
        test_neg_set
348
 
349
        cmp.b   #0xa5:8, @byte_dest
350
        beq     .Lbabs32
351
        fail
352
.Lbabs32:
353
        test_gr_a5a5 0           ; Make sure ALL general regs not disturbed
354
        test_gr_a5a5 1
355
        test_gr_a5a5 2
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
.endif
362
 
363
        #
364
        # 16-bit word operations
365
        #
366
 
367
.if (sim_cpu)                   ; any except plain-vanilla h8/300
368
not_w_reg16:
369
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
370
        ;;  fixme set ccr
371
 
372
        ;;  not.w Rd
373
        not     r1              ; 16-bit register operand
374
;;;     .word   0x1711
375
 
376
        cmp.w   #0x5a5a, r1     ; result of "not 0xa5a5"
377
        beq     .Lwrd
378
        fail
379
.Lwrd:
380
        ;; fixme test ccr       ; H=0 N=1 Z=0 V=0 C=0
381
        test_h_gr32 0xa5a55a5a er1      ; er1 changed by 'not' 
382
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
383
        test_gr_a5a5 2
384
        test_gr_a5a5 3
385
        test_gr_a5a5 4
386
        test_gr_a5a5 5
387
        test_gr_a5a5 6
388
        test_gr_a5a5 7
389
 
390
.if (sim_cpu == h8sx)
391
not_w_rdind:
392
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
393
        set_ccr_zero
394
 
395
        ;;  not.w @eRd
396
        mov     #word_dest, er1
397
        not.w   @er1            ; register indirect operand
398
;;;     .word   0x0154
399
;;;     .word   0x6d18
400
;;;     .word   0x1710
401
 
402
        test_carry_clear        ; H=0 N=0 Z=0 V=0 C=0
403
        test_ovf_clear
404
        test_zero_clear
405
        test_neg_clear
406
 
407
        cmp.w   #0x5a5a, @word_dest     ; memory contents changed
408
        beq     .Lwind
409
        fail
410
.Lwind:
411
        test_h_gr32 word_dest er1       ; er1 still contains address
412
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
413
        test_gr_a5a5 2
414
        test_gr_a5a5 3
415
        test_gr_a5a5 4
416
        test_gr_a5a5 5
417
        test_gr_a5a5 6
418
        test_gr_a5a5 7
419
 
420
not_w_rdpostinc:
421
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
422
        set_ccr_zero
423
 
424
        ;;  not.w @eRd+
425
        mov     #word_dest, er1 ; register post-increment operand
426
        not.w   @er1+
427
;;;     .word   0x0154
428
;;;     .word   0x6d18
429
;;;     .word   0x1710
430
 
431
        test_carry_clear        ; H=0 N=1 Z=0 V=0 C=0
432
        test_ovf_clear
433
        test_zero_clear
434
        test_neg_set
435
 
436
        cmp.w   #0xa5a5, @word_dest
437
        beq     .Lwpostinc
438
        fail
439
.Lwpostinc:
440
        test_h_gr32 word_dest+2 er1     ; er1 contains address plus two
441
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
442
        test_gr_a5a5 2
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
not_w_rdpostdec:
450
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
451
        set_ccr_zero
452
 
453
        ;;  not.w @eRd-
454
        mov     #word_dest, er1
455
        not.w   @er1-
456
;;;     .word   0x0156
457
;;;     .word   0x6d18
458
;;;     .word   0x1710
459
 
460
        test_carry_clear        ; H=0 N=0 Z=0 V=0 C=0
461
        test_ovf_clear
462
        test_zero_clear
463
        test_neg_clear
464
 
465
        cmp.w   #0x5a5a, @word_dest
466
        beq     .Lwpostdec
467
        fail
468
.Lwpostdec:
469
        test_h_gr32 word_dest-2 er1     ; er1 contains address minus two
470
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
471
        test_gr_a5a5 2
472
        test_gr_a5a5 3
473
        test_gr_a5a5 4
474
        test_gr_a5a5 5
475
        test_gr_a5a5 6
476
        test_gr_a5a5 7
477
 
478
not_w_rdpreinc:
479
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
480
        set_ccr_zero
481
 
482
        ;;  not.w @+eRd
483
        mov     #word_dest-2, er1
484
        not.w   @+er1           ; reg pre-increment operand
485
;;;     .word   0x0155
486
;;;     .word   0x6d18
487
;;;     .word   0x1710
488
 
489
        test_carry_clear        ; H=0 N=1 Z=0 V=0 C=0
490
        test_ovf_clear
491
        test_zero_clear
492
        test_neg_set
493
 
494
        cmp.w   #0xa5a5, @word_dest
495
        beq     .Lwpreinc
496
        fail
497
.Lwpreinc:
498
        test_h_gr32 word_dest er1       ; er1 contains destination address 
499
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
500
        test_gr_a5a5 2
501
        test_gr_a5a5 3
502
        test_gr_a5a5 4
503
        test_gr_a5a5 5
504
        test_gr_a5a5 6
505
        test_gr_a5a5 7
506
 
507
not_w_rdpredec:
508
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
509
        set_ccr_zero
510
 
511
        ;;  not.w @-eRd
512
        mov     #word_dest+2, er1
513
        not.w   @-er1           ; reg pre-decr operand
514
;;;     .word   0x0157
515
;;;     .word   0x6d18
516
;;;     .word   0x1710
517
 
518
        test_carry_clear        ; H=0 N=0 Z=0 V=0 C=0
519
        test_ovf_clear
520
        test_zero_clear
521
        test_neg_clear
522
 
523
        cmp.w   #0x5a5a, @word_dest
524
        beq     .Lwpredec
525
        fail
526
.Lwpredec:
527
        test_h_gr32 word_dest er1       ; er1 contains destination address 
528
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
529
        test_gr_a5a5 2
530
        test_gr_a5a5 3
531
        test_gr_a5a5 4
532
        test_gr_a5a5 5
533
        test_gr_a5a5 6
534
        test_gr_a5a5 7
535
 
536
not_w_disp2dst:
537
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
538
        set_ccr_zero
539
 
540
        ;;  not.w @(dd:2, erd)
541
        mov     #word_dest-2, er1
542
        not.w   @(2:2, er1)     ; reg plus 2-bit displacement
543
;;;     .word   0x0155
544
;;;     .word   0x6918
545
;;;     .word   0x1710
546
 
547
        test_carry_clear        ; H=0 N=1 Z=0 V=0 C=0
548
        test_ovf_clear
549
        test_zero_clear
550
        test_neg_set
551
 
552
        cmp.w   #0xa5a5, @word_dest
553
        beq     .Lwdisp2
554
        fail
555
.Lwdisp2:
556
        test_h_gr32 word_dest-2 er1     ; er1 contains address minus one
557
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
558
        test_gr_a5a5 2
559
        test_gr_a5a5 3
560
        test_gr_a5a5 4
561
        test_gr_a5a5 5
562
        test_gr_a5a5 6
563
        test_gr_a5a5 7
564
 
565
not_w_disp16dst:
566
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
567
        set_ccr_zero
568
 
569
        ;;  not.w @(dd:16, erd)
570
        mov     #word_dest+100, er1
571
        not.w   @(-100:16, er1) ; reg plus 16-bit displacement
572
;;;     .word   0x0154
573
;;;     .word   0x6f18
574
;;;     .word   -100
575
;;;     .word   0x1710
576
 
577
        test_carry_clear        ; H=0 N=0 Z=0 V=0 C=0
578
        test_ovf_clear
579
        test_zero_clear
580
        test_neg_clear
581
 
582
        cmp.w   #0x5a5a, @word_dest
583
        beq     .Lwdisp16
584
        fail
585
.Lwdisp16:
586
        test_h_gr32 word_dest+100 er1   ; er1 contains destination address 
587
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
588
        test_gr_a5a5 2
589
        test_gr_a5a5 3
590
        test_gr_a5a5 4
591
        test_gr_a5a5 5
592
        test_gr_a5a5 6
593
        test_gr_a5a5 7
594
 
595
not_w_disp32dst:
596
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
597
        set_ccr_zero
598
 
599
        ;;  not.w @(dd:32, erd)
600
        mov     #word_dest-0xfffff, er1
601
        not.w   @(0xfffff:32, er1)      ; reg plus 32-bit displacement
602
;;;     .word   0x7814
603
;;;     .word   0x6b28
604
;;;     .long   0xfffff
605
;;;     .word   0x1710
606
 
607
        test_carry_clear        ; H=0 N=1 Z=0 V=0 C=0
608
        test_ovf_clear
609
        test_zero_clear
610
        test_neg_set
611
 
612
        cmp.w   #0xa5a5, @word_dest
613
        beq     .Lwdisp32
614
        fail
615
.Lwdisp32:
616
        test_h_gr32 word_dest-0xfffff er1 ; er1 contains destination address
617
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
618
        test_gr_a5a5 2
619
        test_gr_a5a5 3
620
        test_gr_a5a5 4
621
        test_gr_a5a5 5
622
        test_gr_a5a5 6
623
        test_gr_a5a5 7
624
 
625
not_w_abs16dst:
626
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
627
        set_ccr_zero
628
 
629
        ;;  not.w @aa:16
630
        not.w   @word_dest:16   ; 16-bit absolute address
631
;;;     .word   0x6b18
632
;;;     .word   word_dest
633
;;;     .word   0x1710
634
 
635
        test_carry_clear        ; H=0 N=0 Z=0 V=0 C=0
636
        test_ovf_clear
637
        test_zero_clear
638
        test_neg_clear
639
 
640
        cmp.w   #0x5a5a, @word_dest
641
        beq     .Lwabs16
642
        fail
643
.Lwabs16:
644
        test_gr_a5a5 0           ; Make sure ALL general regs not disturbed
645
        test_gr_a5a5 1
646
        test_gr_a5a5 2
647
        test_gr_a5a5 3
648
        test_gr_a5a5 4
649
        test_gr_a5a5 5
650
        test_gr_a5a5 6
651
        test_gr_a5a5 7
652
 
653
not_w_abs32dst:
654
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
655
        set_ccr_zero
656
 
657
        ;;  not.w @aa:32
658
        not.w   @word_dest:32   ; 32-bit absolute address
659
;;;     .word   0x6b38
660
;;;     .long   word_dest
661
;;;     .word   0x1710
662
 
663
        test_carry_clear        ; H=0 N=1 Z=0 V=0 C=0
664
        test_ovf_clear
665
        test_zero_clear
666
        test_neg_set
667
 
668
        cmp.w   #0xa5a5, @word_dest
669
        beq     .Lwabs32
670
        fail
671
.Lwabs32:
672
        test_gr_a5a5 0           ; Make sure ALL general regs not disturbed
673
        test_gr_a5a5 1
674
        test_gr_a5a5 2
675
        test_gr_a5a5 3
676
        test_gr_a5a5 4
677
        test_gr_a5a5 5
678
        test_gr_a5a5 6
679
        test_gr_a5a5 7
680
 
681
.endif                          ; h8sx
682
.endif                          ; h8/300
683
 
684
        #
685
        # 32-bit word operations
686
        #
687
 
688
.if (sim_cpu)                   ; any except plain-vanilla h8/300
689
not_l_reg16:
690
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
691
        ;;  fixme set ccr
692
 
693
        ;;  not.l eRd
694
        not     er1             ; 32-bit register operand
695
;;;     .word   0x1731
696
 
697
        cmp.l   #0x5a5a5a5a, er1        ; result of "not 0xa5a5a5a5"
698
        beq     .Llrd
699
        fail
700
.Llrd:
701
        ;; fixme test ccr       ; H=0 N=1 Z=0 V=0 C=0
702
        test_h_gr32 0x5a5a5a5a er1      ; er1 changed by 'not' 
703
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
704
        test_gr_a5a5 2
705
        test_gr_a5a5 3
706
        test_gr_a5a5 4
707
        test_gr_a5a5 5
708
        test_gr_a5a5 6
709
        test_gr_a5a5 7
710
 
711
.if (sim_cpu == h8sx)
712
not_l_rdind:
713
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
714
        set_ccr_zero
715
 
716
        ;;  not.l @eRd
717
        mov     #long_dest, er1
718
        not.l   @er1            ; register indirect operand
719
;;;     .word   0x0104
720
;;;     .word   0x6d18
721
;;;     .word   0x1730
722
 
723
        test_carry_clear        ; H=0 N=0 Z=0 V=0 C=0
724
        test_ovf_clear
725
        test_zero_clear
726
        test_neg_clear
727
 
728
        cmp.l   #0x5a5a5a5a, @long_dest ; memory contents changed
729
        beq     .Llind
730
        fail
731
.Llind:
732
        test_h_gr32 long_dest er1       ; er1 still contains address
733
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
734
        test_gr_a5a5 2
735
        test_gr_a5a5 3
736
        test_gr_a5a5 4
737
        test_gr_a5a5 5
738
        test_gr_a5a5 6
739
        test_gr_a5a5 7
740
 
741
not_l_rdpostinc:
742
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
743
        set_ccr_zero
744
 
745
        ;;  not.l @eRd+
746
        mov     #long_dest, er1 ; register post-increment operand
747
        not.l   @er1+
748
;;;     .word   0x0104
749
;;;     .word   0x6d18
750
;;;     .word   0x1730
751
 
752
        test_carry_clear        ; H=0 N=1 Z=0 V=0 C=0
753
        test_ovf_clear
754
        test_zero_clear
755
        test_neg_set
756
 
757
        cmp.l   #0xa5a5a5a5, @long_dest
758
        beq     .Llpostinc
759
        fail
760
.Llpostinc:
761
        test_h_gr32 long_dest+4 er1     ; er1 contains address plus two
762
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
763
        test_gr_a5a5 2
764
        test_gr_a5a5 3
765
        test_gr_a5a5 4
766
        test_gr_a5a5 5
767
        test_gr_a5a5 6
768
        test_gr_a5a5 7
769
 
770
not_l_rdpostdec:
771
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
772
        set_ccr_zero
773
 
774
        ;;  not.l @eRd-
775
        mov     #long_dest, er1
776
        not.l   @er1-
777
;;;     .word   0x0106
778
;;;     .word   0x6d18
779
;;;     .word   0x1730
780
 
781
        test_carry_clear        ; H=0 N=0 Z=0 V=0 C=0
782
        test_ovf_clear
783
        test_zero_clear
784
        test_neg_clear
785
 
786
        cmp.l   #0x5a5a5a5a, @long_dest
787
        beq     .Llpostdec
788
        fail
789
.Llpostdec:
790
        test_h_gr32 long_dest-4 er1     ; er1 contains address minus two
791
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
792
        test_gr_a5a5 2
793
        test_gr_a5a5 3
794
        test_gr_a5a5 4
795
        test_gr_a5a5 5
796
        test_gr_a5a5 6
797
        test_gr_a5a5 7
798
 
799
not_l_rdpreinc:
800
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
801
        set_ccr_zero
802
 
803
        ;;  not.l @+eRd
804
        mov     #long_dest-4, er1
805
        not.l   @+er1           ; reg pre-increment operand
806
;;;     .word   0x0105
807
;;;     .word   0x6d18
808
;;;     .word   0x1730
809
 
810
        test_carry_clear        ; H=0 N=1 Z=0 V=0 C=0
811
        test_ovf_clear
812
        test_zero_clear
813
        test_neg_set
814
 
815
        cmp.l   #0xa5a5a5a5, @long_dest
816
        beq     .Llpreinc
817
        fail
818
.Llpreinc:
819
        test_h_gr32 long_dest er1       ; er1 contains destination address 
820
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
821
        test_gr_a5a5 2
822
        test_gr_a5a5 3
823
        test_gr_a5a5 4
824
        test_gr_a5a5 5
825
        test_gr_a5a5 6
826
        test_gr_a5a5 7
827
 
828
not_l_rdpredec:
829
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
830
        set_ccr_zero
831
 
832
        ;;  not.l @-eRd
833
        mov     #long_dest+4, er1
834
        not.l   @-er1           ; reg pre-decr operand
835
;;;     .word   0x0107
836
;;;     .word   0x6d18
837
;;;     .word   0x1730
838
 
839
        test_carry_clear        ; H=0 N=0 Z=0 V=0 C=0
840
        test_ovf_clear
841
        test_zero_clear
842
        test_neg_clear
843
 
844
        cmp.l   #0x5a5a5a5a, @long_dest
845
        beq     .Llpredec
846
        fail
847
.Llpredec:
848
        test_h_gr32 long_dest er1       ; er1 contains destination address 
849
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
850
        test_gr_a5a5 2
851
        test_gr_a5a5 3
852
        test_gr_a5a5 4
853
        test_gr_a5a5 5
854
        test_gr_a5a5 6
855
        test_gr_a5a5 7
856
 
857
not_l_disp2dst:
858
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
859
        set_ccr_zero
860
 
861
        ;;  not.l @(dd:2, erd)
862
        mov     #long_dest-4, er1
863
        not.l   @(4:2, er1)     ; reg plus 2-bit displacement
864
;;;     .word   0x0105
865
;;;     .word   0x6918
866
;;;     .word   0x1730
867
 
868
        test_carry_clear        ; H=0 N=1 Z=0 V=0 C=0
869
        test_ovf_clear
870
        test_zero_clear
871
        test_neg_set
872
 
873
        cmp.l   #0xa5a5a5a5, @long_dest
874
        beq     .Lldisp2
875
        fail
876
.Lldisp2:
877
        test_h_gr32 long_dest-4 er1     ; er1 contains address minus one
878
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
879
        test_gr_a5a5 2
880
        test_gr_a5a5 3
881
        test_gr_a5a5 4
882
        test_gr_a5a5 5
883
        test_gr_a5a5 6
884
        test_gr_a5a5 7
885
 
886
not_l_disp16dst:
887
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
888
        set_ccr_zero
889
 
890
        ;;  not.l @(dd:16, erd)
891
        mov     #long_dest+100, er1
892
        not.l   @(-100:16, er1) ; reg plus 16-bit displacement
893
;;;     .word   0x0104
894
;;;     .word   0x6f18
895
;;;     .word   -100
896
;;;     .word   0x1730
897
 
898
        test_carry_clear        ; H=0 N=0 Z=0 V=0 C=0
899
        test_ovf_clear
900
        test_zero_clear
901
        test_neg_clear
902
 
903
        cmp.l   #0x5a5a5a5a, @long_dest
904
        beq     .Lldisp16
905
        fail
906
.Lldisp16:
907
        test_h_gr32 long_dest+100 er1   ; er1 contains destination address 
908
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
909
        test_gr_a5a5 2
910
        test_gr_a5a5 3
911
        test_gr_a5a5 4
912
        test_gr_a5a5 5
913
        test_gr_a5a5 6
914
        test_gr_a5a5 7
915
 
916
not_l_disp32dst:
917
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
918
        set_ccr_zero
919
 
920
        ;;  not.l @(dd:32, erd)
921
        mov     #long_dest-0xfffff, er1
922
        not.l   @(0xfffff:32, er1)      ; reg plus 32-bit displacement
923
;;;     .word   0x7894
924
;;;     .word   0x6b28
925
;;;     .long   0xfffff
926
;;;     .word   0x1730
927
 
928
        test_carry_clear        ; H=0 N=1 Z=0 V=0 C=0
929
        test_ovf_clear
930
        test_zero_clear
931
        test_neg_set
932
 
933
        cmp.l   #0xa5a5a5a5, @long_dest
934
        beq     .Lldisp32
935
        fail
936
.Lldisp32:
937
        test_h_gr32 long_dest-0xfffff er1 ; er1 contains destination address
938
        test_gr_a5a5 0           ; Make sure other general regs not disturbed
939
        test_gr_a5a5 2
940
        test_gr_a5a5 3
941
        test_gr_a5a5 4
942
        test_gr_a5a5 5
943
        test_gr_a5a5 6
944
        test_gr_a5a5 7
945
 
946
not_l_abs16dst:
947
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
948
        set_ccr_zero
949
 
950
        ;;  not.l @aa:16
951
        not.l   @long_dest:16   ; 16-bit absolute address
952
;;;     .word   0x0104
953
;;;     .word   0x6b08
954
;;;     .word   long_dest
955
;;;     .word   0x1730
956
 
957
        test_carry_clear        ; H=0 N=0 Z=0 V=0 C=0
958
        test_ovf_clear
959
        test_zero_clear
960
        test_neg_clear
961
 
962
        cmp.l   #0x5a5a5a5a, @long_dest
963
        beq     .Llabs16
964
        fail
965
.Llabs16:
966
        test_gr_a5a5 0           ; Make sure ALL general regs not disturbed
967
        test_gr_a5a5 1
968
        test_gr_a5a5 2
969
        test_gr_a5a5 3
970
        test_gr_a5a5 4
971
        test_gr_a5a5 5
972
        test_gr_a5a5 6
973
        test_gr_a5a5 7
974
 
975
not_l_abs32dst:
976
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
977
        set_ccr_zero
978
 
979
        ;;  not.l @aa:32
980
        not.l   @long_dest:32   ; 32-bit absolute address
981
;;;     .word   0x0104
982
;;;     .word   0x6b28
983
;;;     .long   long_dest
984
;;;     .word   0x1730
985
 
986
        test_carry_clear        ; H=0 N=1 Z=0 V=0 C=0
987
        test_ovf_clear
988
        test_zero_clear
989
        test_neg_set
990
 
991
        cmp.l   #0xa5a5a5a5, @long_dest
992
        beq     .Llabs32
993
        fail
994
.Llabs32:
995
        test_gr_a5a5 0           ; Make sure ALL general regs not disturbed
996
        test_gr_a5a5 1
997
        test_gr_a5a5 2
998
        test_gr_a5a5 3
999
        test_gr_a5a5 4
1000
        test_gr_a5a5 5
1001
        test_gr_a5a5 6
1002
        test_gr_a5a5 7
1003
 
1004
.endif                          ; h8sx
1005
.endif                          ; h8/300
1006
 
1007
        pass
1008
 
1009
        exit 0

powered by: WebSVN 2.1.0

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