gas: run the hwcaps-bump tests with 64-bit sparc objects only.
[deliverable/binutils-gdb.git] / sim / testsuite / sim / h8300 / xorb.s
CommitLineData
32ebdc4c
MS
1# Hitachi H8 testcase 'xor.b'
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 # xor.b #xx:8, rd ; d rd xxxxxxxx
15 # xor.b #xx:8, @erd ; 7 d rd ???? d ???? xxxxxxxx
16 # xor.b #xx:8, @erd+ ; 0 1 7 4 6 c rd 1??? d ???? xxxxxxxx
17 # xor.b #xx:8, @erd- ; 0 1 7 6 6 c rd 1??? d ???? xxxxxxxx
18 # xor.b #xx:8, @+erd ; 0 1 7 5 6 c rd 1??? d ???? xxxxxxxx
19 # xor.b #xx:8, @-erd ; 0 1 7 7 6 c rd 1??? d ???? xxxxxxxx
20 # xor.b rs, rd ; 1 5 rs rd
21 # xor.b reg8, @erd ; 7 d rd ???? 1 5 rs ????
22 # xor.b reg8, @erd+ ; 0 1 7 9 8 rd 5 rs
23 # xor.b reg8, @erd- ; 0 1 7 9 a rd 5 rs
24 # xor.b reg8, @+erd ; 0 1 7 9 9 rd 5 rs
25 # xor.b reg8, @-erd ; 0 1 7 9 b rd 5 rs
26 #
3df3a316
MS
27 # xorc #xx:8, ccr ;
28 # xorc #xx:8, exr ;
32ebdc4c
MS
29
30 # Coming soon:
31 # ...
32
33.data
34pre_byte: .byte 0
35byte_dest: .byte 0xa5
36post_byte: .byte 0
37
38 start
39
40xor_b_imm8_reg:
41 set_grs_a5a5 ; Fill all general regs with a fixed pattern
42 ;; fixme set ccr
43
44 ;; xor.b #xx:8,Rd
45 xor.b #0xff, r0l ; Immediate 8-bit operand
46
47 ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
48 test_h_gr16 0xa55a r0 ; xor result: a5 ^ ff
49.if (sim_cpu) ; non-zero means h8300h, s, or sx
50 test_h_gr32 0xa5a5a55a er0 ; xor result: a5 ^ ff
51.endif
52 test_gr_a5a5 1 ; Make sure other general regs not disturbed
53 test_gr_a5a5 2
54 test_gr_a5a5 3
55 test_gr_a5a5 4
56 test_gr_a5a5 5
57 test_gr_a5a5 6
58 test_gr_a5a5 7
59
60.if (sim_cpu == h8sx)
61xor_b_imm8_rdind:
62 set_grs_a5a5 ; Fill all general regs with a fixed pattern
63 set_ccr_zero
64
65 ;; xor.b #xx:8,@eRd
66 mov #byte_dest, er0
67 xor.b #0xff:8, @er0 ; Immediate 8-bit src, reg indirect dst
68;;; .word 0x7d00
69;;; .word 0xd0ff
70
71 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
72 test_ovf_clear
73 test_zero_clear
74 test_neg_clear
75
76 test_h_gr32 byte_dest, er0 ; er0 still contains address
77 test_gr_a5a5 1 ; Make sure other general regs not disturbed
78 test_gr_a5a5 2
79 test_gr_a5a5 3
80 test_gr_a5a5 4
81 test_gr_a5a5 5
82 test_gr_a5a5 6
83 test_gr_a5a5 7
84
85 ;; Now check the result of the xor to memory.
86 sub.b r0l, r0l
87 mov.b @byte_dest, r0l
88 cmp.b #0x5a, r0l
89 beq .L1
90 fail
91.L1:
92
93xor_b_imm8_postinc:
94 set_grs_a5a5 ; Fill all general regs with a fixed pattern
95 set_ccr_zero
96
97 ;; xor.b #xx:8,@eRd+
98 mov #byte_dest, er0
99 xor.b #0xff:8, @er0+ ; Immediate 8-bit src, reg indirect dst
100;;; .word 0x0174
101;;; .word 0x6c08
102;;; .word 0xd0ff
103
104 test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
105 test_ovf_clear
106 test_zero_clear
107 test_neg_set
108
109 test_h_gr32 post_byte, er0 ; er0 contains address plus one
110 test_gr_a5a5 1 ; Make sure other general regs not disturbed
111 test_gr_a5a5 2
112 test_gr_a5a5 3
113 test_gr_a5a5 4
114 test_gr_a5a5 5
115 test_gr_a5a5 6
116 test_gr_a5a5 7
117
118 ;; Now check the result of the xor to memory.
119 sub.b r0l, r0l
120 mov.b @byte_dest, r0l
121 cmp.b #0xa5, r0l
122 beq .L2
123 fail
124.L2:
125
126xor_b_imm8_rdpostdec:
127 set_grs_a5a5 ; Fill all general regs with a fixed pattern
128 set_ccr_zero
129
130 ;; xor.b #xx:8,@eRd-
131 mov #byte_dest, er0
132 xor.b #0xff:8, @er0- ; Immediate 8-bit src, reg indirect dst
133;;; .word 0x0176
134;;; .word 0x6c08
135;;; .word 0xd0ff
136
137 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
138 test_ovf_clear
139 test_zero_clear
140 test_neg_clear
141
142 test_h_gr32 pre_byte, er0 ; er0 contains address minus one
143 test_gr_a5a5 1 ; Make sure other general regs not disturbed
144 test_gr_a5a5 2
145 test_gr_a5a5 3
146 test_gr_a5a5 4
147 test_gr_a5a5 5
148 test_gr_a5a5 6
149 test_gr_a5a5 7
150
151 ;; Now check the result of the xor to memory.
152 sub.b r0l, r0l
153 mov.b @byte_dest, r0l
154 cmp.b #0x5a, r0l
155 beq .L3
156 fail
157.L3:
158
159
160.endif
161
162xor_b_reg8_reg8:
163 set_grs_a5a5 ; Fill all general regs with a fixed pattern
164 ;; fixme set ccr
165
166 ;; xor.b Rs,Rd
167 mov.b #0xff, r0h
168 xor.b r0h, r0l ; Register operand
169
170 ;; fixme test ccr ; H=0 N=1 Z=0 V=0 C=0
171 test_h_gr16 0xff5a r0 ; xor result: a5 ^ ff
172.if (sim_cpu) ; non-zero means h8300h, s, or sx
173 test_h_gr32 0xa5a5ff5a er0 ; xor result: a5 ^ ff
174.endif
175 test_gr_a5a5 1 ; Make sure other general regs not disturbed
176 test_gr_a5a5 2
177 test_gr_a5a5 3
178 test_gr_a5a5 4
179 test_gr_a5a5 5
180 test_gr_a5a5 6
181 test_gr_a5a5 7
182
183.if (sim_cpu == h8sx)
184xor_b_reg8_rdind:
185 set_grs_a5a5 ; Fill all general regs with a fixed pattern
186 set_ccr_zero
187
188 ;; xor.b rs8,@eRd ; xor reg8 to register indirect
189 mov #byte_dest, er0
190 mov #0xff, r1l
191 xor.b r1l, @er0 ; reg8 src, reg indirect dest
192;;; .word 0x7d00
193;;; .word 0x1590
194
195 test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
196 test_ovf_clear
197 test_zero_clear
198 test_neg_set
199
200 test_h_gr32 byte_dest er0 ; er0 still contains address
201 test_h_gr32 0xa5a5a5ff er1 ; er1 has the test load
202
203 test_gr_a5a5 2 ; Make sure other general regs not disturbed
204 test_gr_a5a5 3
205 test_gr_a5a5 4
206 test_gr_a5a5 5
207 test_gr_a5a5 6
208 test_gr_a5a5 7
209
210 ;; Now check the result of the or to memory.
211 sub.b r0l, r0l
212 mov.b @byte_dest, r0l
213 cmp.b #0xa5, r0l
214 beq .L4
215 fail
216.L4:
217
218xor_b_reg8_rdpostinc:
219 set_grs_a5a5 ; Fill all general regs with a fixed pattern
220 set_ccr_zero
221
222 ;; xor.b rs8,@eRd+ ; xor reg8 to register post-increment
223 mov #byte_dest, er0
224 mov #0xff, r1l
225 xor.b r1l, @er0+ ; reg8 src, reg post-increment dest
226;;; .word 0x0179
227;;; .word 0x8059
228
229 test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
230 test_ovf_clear
231 test_zero_clear
232 test_neg_clear
233
234 test_h_gr32 post_byte er0 ; er0 contains address plus one
235 test_h_gr32 0xa5a5a5ff er1 ; er1 has the test load
236
237 test_gr_a5a5 2 ; Make sure other general regs not disturbed
238 test_gr_a5a5 3
239 test_gr_a5a5 4
240 test_gr_a5a5 5
241 test_gr_a5a5 6
242 test_gr_a5a5 7
243
244 ;; Now check the result of the or to memory.
245 sub.b r0l, r0l
246 mov.b @byte_dest, r0l
247 cmp.b #0x5a, r0l
248 beq .L5
249 fail
250.L5:
251
252xor_b_reg8_rdpostdec:
253 set_grs_a5a5 ; Fill all general regs with a fixed pattern
254 set_ccr_zero
255
256 ;; xor.b rs8,@eRd- ; xor reg8 to register post-decrement
257 mov #byte_dest, er0
258 mov #0xff, r1l
259 xor.b r1l, @er0- ; reg8 src, reg indirect dest
260;;; .word 0x0179
261;;; .word 0xa059
262
263 test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
264 test_ovf_clear
265 test_zero_clear
266 test_neg_set
267
268 test_h_gr32 pre_byte er0 ; er0 contains address minus one
269 test_h_gr32 0xa5a5a5ff er1 ; er1 has the test load
270
271 test_gr_a5a5 2 ; Make sure other general regs not disturbed
272 test_gr_a5a5 3
273 test_gr_a5a5 4
274 test_gr_a5a5 5
275 test_gr_a5a5 6
276 test_gr_a5a5 7
277
278 ;; Now check the result of the or to memory.
279 sub.b r0l, r0l
280 mov.b @byte_dest, r0l
281 cmp.b #0xa5, r0l
282 beq .L6
283 fail
284.L6:
285
3df3a316
MS
286.endif ; h8sx
287
32ebdc4c
MS
288xorc_imm8_ccr:
289 set_grs_a5a5 ; Fill all general regs with a fixed pattern
290 set_ccr_zero
291
292 ;; xorc #xx:8,ccr
293
294 test_neg_clear
295 xorc #0x8, ccr ; Immediate 8-bit operand (neg flag)
296 test_neg_set
297 xorc #0x8, ccr
298 test_neg_clear
299
300 test_zero_clear
301 xorc #0x4, ccr ; Immediate 8-bit operand (zero flag)
302 test_zero_set
303 xorc #0x4, ccr
304 test_zero_clear
305
306 test_ovf_clear
307 xorc #0x2, ccr ; Immediate 8-bit operand (overflow flag)
308 test_ovf_set
309 xorc #0x2, ccr
310 test_ovf_clear
311
312 test_carry_clear
313 xorc #0x1, ccr ; Immediate 8-bit operand (carry flag)
314 test_carry_set
315 xorc #0x1, ccr
316 test_carry_clear
317
318 test_gr_a5a5 0 ; Make sure other general regs not disturbed
319 test_gr_a5a5 1
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
3df3a316
MS
327.if (sim_cpu == h8300s || sim_cpu == h8sx) ; Earlier versions, no exr
328xorc_imm8_exr:
329 set_grs_a5a5 ; Fill all general regs with a fixed pattern
330 ldc #0, exr
331 stc exr, r0l
332 test_h_gr8 0, r0l
32ebdc4c 333
3df3a316
MS
334 set_ccr_zero
335 ;; xorc #xx:8,exr
336
337 xorc #0x80, exr
338 test_cc_clear
339 stc exr, r0l
340 test_h_gr8 0x80, r0l
341 xorc #0x80, exr
342 stc exr, r0l
343 test_h_gr8 0, r0l
344
345 xorc #0x4, exr
346 stc exr, r0l
347 test_h_gr8 4, r0l
348 xorc #0x4, exr
349 stc exr, r0l
350 test_h_gr8 0, r0l
351
352 xorc #0x2, exr ; Immediate 8-bit operand (overflow flag)
353 stc exr, r0l
354 test_h_gr8 2, r0l
355 xorc #0x2, exr
356 stc exr, r0l
357 test_h_gr8 0, r0l
358
359 xorc #0x1, exr ; Immediate 8-bit operand (carry flag)
360 stc exr, r0l
361 test_h_gr8 1, r0l
362 xorc #0x1, exr
363 stc exr, r0l
364 test_h_gr8 0, r0l
365
366 test_h_gr32 0xa5a5a500 er0
367 test_gr_a5a5 1 ; Make sure other general regs not disturbed
368 test_gr_a5a5 2
369 test_gr_a5a5 3
370 test_gr_a5a5 4
371 test_gr_a5a5 5
372 test_gr_a5a5 6
373 test_gr_a5a5 7
374.endif ; not h8300 or h8300h
375
32ebdc4c
MS
376 pass
377
378 exit 0
This page took 0.725016 seconds and 4 git commands to generate.