1 # Hitachi H8 testcase 'ldc'
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
11 .include "testutils.inc"
26 ldc #0xff, ccr ; set all ccr flags high, immediate operand
27 bcs .L1 ; carry flag set?
29 .L1: bvs .L2 ; overflow flag set?
31 .L2: beq .L3 ; zero flag set?
33 .L3: bmi .L4 ; neg flag set?
36 ldc #0, ccr ; set all ccr flags low, immediate operand
37 bcc .L5 ; carry flag clear?
39 .L5: bvc .L6 ; overflow flag clear?
41 .L6: bne .L7 ; zero flag clear?
43 .L7: bpl .L8 ; neg flag clear?
54 ldc r0h, ccr ; set all ccr flags high, reg operand
55 bcs .L11 ; carry flag set?
57 .L11: bvs .L12 ; overflow flag set?
59 .L12: beq .L13 ; zero flag set?
61 .L13: bmi .L14 ; neg flag set?
65 ldc r0h, ccr ; set all ccr flags low, reg operand
66 bcc .L15 ; carry flag clear?
68 .L15: bvc .L16 ; overflow flag clear?
70 .L16: bne .L17 ; zero flag clear?
72 .L17: bpl .L18 ; neg flag clear?
76 test_h_gr16 0x00a5 r0 ; Register 0 modified by test procedure.
77 test_gr_a5a5 1 ; Make sure other general regs not disturbed
85 .if (sim_cpu == h8300s || sim_cpu == h8sx) ; Earlier versions, no exr
91 ldc #0x87, exr ; set exr to 0x87
93 stc exr, r0l ; retrieve and check exr value
98 test_h_gr16 0xa587 r0 ; Register 0 modified by test procedure.
99 test_gr_a5a5 1 ; Make sure other general regs not disturbed
113 ldc r0h, exr ; set exr to 0x87
115 stc exr, r0l ; retrieve and check exr value
120 test_h_gr16 0x8787 r0 ; Register 0 modified by test procedure.
121 test_gr_a5a5 1 ; Make sure other general regs not disturbed
133 ldc @byte_src:16, ccr ; abs16 src
134 stc ccr, r0l ; copy into general reg
136 test_h_gr32 0xa5a5a5ff er0 ; ff in r0l, a5 elsewhere.
137 test_gr_a5a5 1 ; Make sure other general regs not disturbed
150 ldc @byte_src:16, exr ; abs16 src
151 stc exr, r0l ; copy into general reg
153 test_h_gr32 0xa5a5a587 er0 ; 87 in r0l, a5 elsewhere.
154 test_gr_a5a5 1 ; Make sure other general regs not disturbed
166 ldc @byte_src:32, ccr ; abs32 src
167 stc ccr, r0l ; copy into general reg
169 test_h_gr32 0xa5a5a5ff er0 ; ff in r0l, a5 elsewhere.
170 test_gr_a5a5 1 ; Make sure other general regs not disturbed
183 ldc @byte_src:32, exr ; abs32 src
184 stc exr, r0l ; copy into general reg
186 test_h_gr32 0xa5a5a587 er0 ; 87 in r0l, a5 elsewhere.
187 test_gr_a5a5 1 ; Make sure other general regs not disturbed
200 ldc @(1:16, er1), ccr ; disp16 src
201 stc ccr, r0l ; copy into general reg
203 test_h_gr32 0xa5a5a5ff er0 ; ff in r0l, a5 elsewhere.
204 test_h_gr32 byte_pre, er1 ; er1 still contains address
205 test_gr_a5a5 2 ; Make sure other general regs not disturbed
218 ldc @(-1:16, er1), exr ; disp16 src
219 stc exr, r0l ; copy into general reg
221 test_h_gr32 0xa5a5a587 er0 ; 87 in r0l, a5 elsewhere.
222 test_h_gr32 byte_post, er1 ; er1 still contains address
223 test_gr_a5a5 2 ; Make sure other general regs not disturbed
235 ldc @(1:32, er1), ccr ; disp32 src
236 stc ccr, r0l ; copy into general reg
238 test_h_gr32 0xa5a5a5ff er0 ; ff in r0l, a5 elsewhere.
239 test_h_gr32 byte_pre, er1 ; er1 still contains address
240 test_gr_a5a5 2 ; Make sure other general regs not disturbed
253 ldc @(-1:32, er1), exr ; disp16 src
254 stc exr, r0l ; copy into general reg
256 test_h_gr32 0xa5a5a587 er0 ; 87 in r0l, a5 elsewhere.
257 test_h_gr32 byte_post, er1 ; er1 still contains address
258 test_gr_a5a5 2 ; Make sure other general regs not disturbed
270 ldc @er1+, ccr ; postinc src
271 stc ccr, r0l ; copy into general reg
273 test_h_gr32 0xa5a5a5ff er0 ; ff in r0l, a5 elsewhere.
274 test_h_gr32 byte_src+2, er1 ; er1 still contains address
275 test_gr_a5a5 2 ; Make sure other general regs not disturbed
288 ldc @er1+, exr ; postinc src
289 stc exr, r0l ; copy into general reg
291 test_h_gr32 0xa5a5a587 er0 ; 87 in r0l, a5 elsewhere.
292 test_h_gr32 byte_src+2, er1 ; er1 still contains address
293 test_gr_a5a5 2 ; Make sure other general regs not disturbed
305 ldc @er1, ccr ; postinc src
306 stc ccr, r0l ; copy into general reg
308 test_h_gr32 0xa5a5a5ff er0 ; ff in r0l, a5 elsewhere.
309 test_h_gr32 byte_src, er1 ; er1 still contains address
310 test_gr_a5a5 2 ; Make sure other general regs not disturbed
323 ldc @er1, exr ; postinc src
324 stc exr, r0l ; copy into general reg
326 test_h_gr32 0xa5a5a587 er0 ; 87 in r0l, a5 elsewhere.
327 test_h_gr32 byte_src, er1 ; er1 still contains address
328 test_gr_a5a5 2 ; Make sure other general regs not disturbed
337 .if (sim_cpu == h8sx) ; New vbr and sbr registers for h8sx
343 ldc er0, sbr ; set sbr to 0xaaaaaaaa
344 stc sbr, er1 ; retreive and check sbr value
346 test_h_gr32 0xaaaaaaaa er1
347 test_h_gr32 0xaaaaaaaa er0 ; Register 0 modified by test procedure.
348 test_gr_a5a5 2 ; Make sure other general regs not disturbed
360 ldc er0, vbr ; set sbr to 0xaaaaaaaa
361 stc vbr, er1 ; retreive and check sbr value
363 test_h_gr32 0xaaaaaaaa er1
364 test_h_gr32 0xaaaaaaaa er0 ; Register 0 modified by test procedure.
365 test_gr_a5a5 2 ; Make sure other general regs not disturbed