bset.s revision 1.1 1 1.1 christos # Hitachi H8 testcase 'bset', 'bclr'
2 1.1 christos # mach(): all
3 1.1 christos # as(h8300): --defsym sim_cpu=0
4 1.1 christos # as(h8300h): --defsym sim_cpu=1
5 1.1 christos # as(h8300s): --defsym sim_cpu=2
6 1.1 christos # as(h8sx): --defsym sim_cpu=3
7 1.1 christos # ld(h8300h): -m h8300helf
8 1.1 christos # ld(h8300s): -m h8300self
9 1.1 christos # ld(h8sx): -m h8300sxelf
10 1.1 christos
11 1.1 christos .include "testutils.inc"
12 1.1 christos
13 1.1 christos # Instructions tested:
14 1.1 christos #
15 1.1 christos # bset xx:3, rd8 ; 7 0 ?xxx rd8
16 1.1 christos # bclr xx:3, rd8 ; 7 2 ?xxx rd8
17 1.1 christos # bset xx:3, @erd ; 7 d 0rd ???? 7 0 ?xxx ????
18 1.1 christos # bclr xx:3, @erd ; 7 d 0rd ???? 7 2 ?xxx ????
19 1.1 christos # bset xx:3, @abs16 ; 6 a 1 1??? aa:16 7 0 ?xxx ????
20 1.1 christos # bclr xx:3, @abs16 ; 6 a 1 1??? aa:16 7 2 ?xxx ????
21 1.1 christos # bset reg8, rd8 ; 6 0 rs8 rd8
22 1.1 christos # bclr reg8, rd8 ; 6 2 rs8 rd8
23 1.1 christos # bset reg8, @erd ; 7 d 0rd ???? 6 0 rs8 ????
24 1.1 christos # bclr reg8, @erd ; 7 d 0rd ???? 6 2 rs8 ????
25 1.1 christos # bset reg8, @abs32 ; 6 a 3 1??? aa:32 6 0 rs8 ????
26 1.1 christos # bclr reg8, @abs32 ; 6 a 3 1??? aa:32 6 2 rs8 ????
27 1.1 christos #
28 1.1 christos # bset/eq xx:3, rd8
29 1.1 christos # bclr/eq xx:3, rd8
30 1.1 christos # bset/ne xx:3, rd8
31 1.1 christos # bclr/ne xx:3, rd8
32 1.1 christos
33 1.1 christos .data
34 1.1 christos byte_dst: .byte 0
35 1.1 christos
36 1.1 christos start
37 1.1 christos
38 1.1 christos bset_imm3_reg8:
39 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
40 1.1 christos
41 1.1 christos ;; bset xx:3, rd8
42 1.1 christos mov #0, r1l
43 1.1 christos set_ccr_zero
44 1.1 christos bset #0, r1l
45 1.1 christos test_cc_clear
46 1.1 christos test_h_gr8 1 r1l
47 1.1 christos
48 1.1 christos set_ccr_zero
49 1.1 christos bset #1, r1l
50 1.1 christos test_cc_clear
51 1.1 christos test_h_gr8 3 r1l
52 1.1 christos
53 1.1 christos set_ccr_zero
54 1.1 christos bset #2, r1l
55 1.1 christos test_cc_clear
56 1.1 christos test_h_gr8 7 r1l
57 1.1 christos
58 1.1 christos set_ccr_zero
59 1.1 christos bset #3, r1l
60 1.1 christos test_cc_clear
61 1.1 christos test_h_gr8 15 r1l
62 1.1 christos
63 1.1 christos set_ccr_zero
64 1.1 christos bset #4, r1l
65 1.1 christos test_cc_clear
66 1.1 christos test_h_gr8 31 r1l
67 1.1 christos
68 1.1 christos set_ccr_zero
69 1.1 christos bset #5, r1l
70 1.1 christos test_cc_clear
71 1.1 christos test_h_gr8 63 r1l
72 1.1 christos
73 1.1 christos set_ccr_zero
74 1.1 christos bset #6, r1l
75 1.1 christos test_cc_clear
76 1.1 christos test_h_gr8 127 r1l
77 1.1 christos
78 1.1 christos set_ccr_zero
79 1.1 christos bset #7, r1l
80 1.1 christos test_cc_clear
81 1.1 christos test_h_gr8 255 r1l
82 1.1 christos
83 1.1 christos .if (sim_cpu == h8300)
84 1.1 christos test_h_gr16 0xa5ff, r1
85 1.1 christos .else
86 1.1 christos test_h_gr32 0xa5a5a5ff er1
87 1.1 christos .endif
88 1.1 christos
89 1.1 christos bclr_imm3_reg8:
90 1.1 christos set_ccr_zero
91 1.1 christos bclr #7, r1l
92 1.1 christos test_cc_clear
93 1.1 christos test_h_gr8 127 r1l
94 1.1 christos
95 1.1 christos set_ccr_zero
96 1.1 christos bclr #6, r1l
97 1.1 christos test_cc_clear
98 1.1 christos test_h_gr8 63 r1l
99 1.1 christos
100 1.1 christos set_ccr_zero
101 1.1 christos bclr #5, r1l
102 1.1 christos test_cc_clear
103 1.1 christos test_h_gr8 31 r1l
104 1.1 christos
105 1.1 christos set_ccr_zero
106 1.1 christos bclr #4, r1l
107 1.1 christos test_cc_clear
108 1.1 christos test_h_gr8 15 r1l
109 1.1 christos
110 1.1 christos set_ccr_zero
111 1.1 christos bclr #3, r1l
112 1.1 christos test_cc_clear
113 1.1 christos test_h_gr8 7 r1l
114 1.1 christos
115 1.1 christos set_ccr_zero
116 1.1 christos bclr #2, r1l
117 1.1 christos test_cc_clear
118 1.1 christos test_h_gr8 3 r1l
119 1.1 christos
120 1.1 christos set_ccr_zero
121 1.1 christos bclr #1, r1l
122 1.1 christos test_cc_clear
123 1.1 christos test_h_gr8 1 r1l
124 1.1 christos
125 1.1 christos set_ccr_zero
126 1.1 christos bclr #0, r1l
127 1.1 christos test_cc_clear
128 1.1 christos test_h_gr8 0 r1l
129 1.1 christos
130 1.1 christos test_gr_a5a5 0 ; Make sure other general regs not disturbed
131 1.1 christos .if (sim_cpu == h8300)
132 1.1 christos test_h_gr16 0xa500 r1
133 1.1 christos .else
134 1.1 christos test_h_gr32 0xa5a5a500 er1
135 1.1 christos .endif
136 1.1 christos test_gr_a5a5 2
137 1.1 christos test_gr_a5a5 3
138 1.1 christos test_gr_a5a5 4
139 1.1 christos test_gr_a5a5 5
140 1.1 christos test_gr_a5a5 6
141 1.1 christos test_gr_a5a5 7
142 1.1 christos
143 1.1 christos .if (sim_cpu)
144 1.1 christos bset_imm3_ind:
145 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
146 1.1 christos
147 1.1 christos ;; bset xx:3, @erd
148 1.1 christos mov #byte_dst, er1
149 1.1 christos set_ccr_zero
150 1.1 christos bset #0, @er1
151 1.1 christos test_cc_clear
152 1.1 christos mov @er1, r2l
153 1.1 christos test_h_gr8 1 r2l
154 1.1 christos
155 1.1 christos set_ccr_zero
156 1.1 christos bset #1, @er1
157 1.1 christos test_cc_clear
158 1.1 christos mov @er1, r2l
159 1.1 christos test_h_gr8 3 r2l
160 1.1 christos
161 1.1 christos set_ccr_zero
162 1.1 christos bset #2, @er1
163 1.1 christos test_cc_clear
164 1.1 christos mov @er1, r2l
165 1.1 christos test_h_gr8 7 r2l
166 1.1 christos
167 1.1 christos set_ccr_zero
168 1.1 christos bset #3, @er1
169 1.1 christos test_cc_clear
170 1.1 christos mov @er1, r2l
171 1.1 christos test_h_gr8 15 r2l
172 1.1 christos
173 1.1 christos set_ccr_zero
174 1.1 christos bset #4, @er1
175 1.1 christos test_cc_clear
176 1.1 christos mov @er1, r2l
177 1.1 christos test_h_gr8 31 r2l
178 1.1 christos
179 1.1 christos set_ccr_zero
180 1.1 christos bset #5, @er1
181 1.1 christos test_cc_clear
182 1.1 christos mov @er1, r2l
183 1.1 christos test_h_gr8 63 r2l
184 1.1 christos
185 1.1 christos set_ccr_zero
186 1.1 christos bset #6, @er1
187 1.1 christos test_cc_clear
188 1.1 christos mov @er1, r2l
189 1.1 christos test_h_gr8 127 r2l
190 1.1 christos
191 1.1 christos set_ccr_zero
192 1.1 christos bset #7, @er1
193 1.1 christos test_cc_clear
194 1.1 christos mov @er1, r2l
195 1.1 christos test_h_gr8 255 r2l
196 1.1 christos
197 1.1 christos .if (sim_cpu == h8300)
198 1.1 christos test_h_gr16 0xa5ff r2
199 1.1 christos .else
200 1.1 christos test_h_gr32 0xa5a5a5ff er2
201 1.1 christos .endif
202 1.1 christos
203 1.1 christos bclr_imm3_ind:
204 1.1 christos set_ccr_zero
205 1.1 christos bclr #7, @er1
206 1.1 christos test_cc_clear
207 1.1 christos mov @er1, r2l
208 1.1 christos test_h_gr8 127 r2l
209 1.1 christos
210 1.1 christos set_ccr_zero
211 1.1 christos bclr #6, @er1
212 1.1 christos test_cc_clear
213 1.1 christos mov @er1, r2l
214 1.1 christos test_h_gr8 63 r2l
215 1.1 christos
216 1.1 christos set_ccr_zero
217 1.1 christos bclr #5, @er1
218 1.1 christos test_cc_clear
219 1.1 christos mov @er1, r2l
220 1.1 christos test_h_gr8 31 r2l
221 1.1 christos
222 1.1 christos set_ccr_zero
223 1.1 christos bclr #4, @er1
224 1.1 christos test_cc_clear
225 1.1 christos mov @er1, r2l
226 1.1 christos test_h_gr8 15 r2l
227 1.1 christos
228 1.1 christos set_ccr_zero
229 1.1 christos bclr #3, @er1
230 1.1 christos test_cc_clear
231 1.1 christos mov @er1, r2l
232 1.1 christos test_h_gr8 7 r2l
233 1.1 christos
234 1.1 christos set_ccr_zero
235 1.1 christos bclr #2, @er1
236 1.1 christos test_cc_clear
237 1.1 christos mov @er1, r2l
238 1.1 christos test_h_gr8 3 r2l
239 1.1 christos
240 1.1 christos set_ccr_zero
241 1.1 christos bclr #1, @er1
242 1.1 christos test_cc_clear
243 1.1 christos mov @er1, r2l
244 1.1 christos test_h_gr8 1 r2l
245 1.1 christos
246 1.1 christos set_ccr_zero
247 1.1 christos bclr #0, @er1
248 1.1 christos test_cc_clear
249 1.1 christos mov @er1, r2l
250 1.1 christos test_h_gr8 0 r2l
251 1.1 christos
252 1.1 christos test_gr_a5a5 0 ; Make sure other general regs not disturbed
253 1.1 christos .if (sim_cpu == h8300)
254 1.1 christos test_h_gr16 byte_dst r1
255 1.1 christos test_h_gr16 0xa500 r2
256 1.1 christos .else
257 1.1 christos test_h_gr32 byte_dst er1
258 1.1 christos test_h_gr32 0xa5a5a500 er2
259 1.1 christos .endif
260 1.1 christos test_gr_a5a5 3
261 1.1 christos test_gr_a5a5 4
262 1.1 christos test_gr_a5a5 5
263 1.1 christos test_gr_a5a5 6
264 1.1 christos test_gr_a5a5 7
265 1.1 christos
266 1.1 christos .if (sim_cpu > h8300h)
267 1.1 christos bset_imm3_abs16:
268 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
269 1.1 christos
270 1.1 christos ;; bset xx:3, @aa:16
271 1.1 christos set_ccr_zero
272 1.1 christos bset #0, @byte_dst:16
273 1.1 christos test_cc_clear
274 1.1 christos mov @byte_dst, r2l
275 1.1 christos test_h_gr8 1 r2l
276 1.1 christos
277 1.1 christos set_ccr_zero
278 1.1 christos bset #1, @byte_dst:16
279 1.1 christos test_cc_clear
280 1.1 christos mov @byte_dst, r2l
281 1.1 christos test_h_gr8 3 r2l
282 1.1 christos
283 1.1 christos set_ccr_zero
284 1.1 christos bset #2, @byte_dst:16
285 1.1 christos test_cc_clear
286 1.1 christos mov @byte_dst, r2l
287 1.1 christos test_h_gr8 7 r2l
288 1.1 christos
289 1.1 christos set_ccr_zero
290 1.1 christos bset #3, @byte_dst:16
291 1.1 christos test_cc_clear
292 1.1 christos mov @byte_dst, r2l
293 1.1 christos test_h_gr8 15 r2l
294 1.1 christos
295 1.1 christos set_ccr_zero
296 1.1 christos bset #4, @byte_dst:16
297 1.1 christos test_cc_clear
298 1.1 christos mov @byte_dst, r2l
299 1.1 christos test_h_gr8 31 r2l
300 1.1 christos
301 1.1 christos set_ccr_zero
302 1.1 christos bset #5, @byte_dst:16
303 1.1 christos test_cc_clear
304 1.1 christos mov @byte_dst, r2l
305 1.1 christos test_h_gr8 63 r2l
306 1.1 christos
307 1.1 christos set_ccr_zero
308 1.1 christos bset #6, @byte_dst:16
309 1.1 christos test_cc_clear
310 1.1 christos mov @byte_dst, r2l
311 1.1 christos test_h_gr8 127 r2l
312 1.1 christos
313 1.1 christos set_ccr_zero
314 1.1 christos bset #7, @byte_dst:16
315 1.1 christos test_cc_clear
316 1.1 christos mov @byte_dst, r2l
317 1.1 christos test_h_gr8 255 r2l
318 1.1 christos
319 1.1 christos .if (sim_cpu == h8300)
320 1.1 christos test_h_gr16 0xa5ff r2
321 1.1 christos .else
322 1.1 christos test_h_gr32 0xa5a5a5ff er2
323 1.1 christos .endif
324 1.1 christos
325 1.1 christos bclr_imm3_abs16:
326 1.1 christos set_ccr_zero
327 1.1 christos bclr #7, @byte_dst:16
328 1.1 christos test_cc_clear
329 1.1 christos mov @byte_dst, r2l
330 1.1 christos test_h_gr8 127 r2l
331 1.1 christos
332 1.1 christos set_ccr_zero
333 1.1 christos bclr #6, @byte_dst:16
334 1.1 christos test_cc_clear
335 1.1 christos mov @byte_dst, r2l
336 1.1 christos test_h_gr8 63 r2l
337 1.1 christos
338 1.1 christos set_ccr_zero
339 1.1 christos bclr #5, @byte_dst:16
340 1.1 christos test_cc_clear
341 1.1 christos mov @byte_dst, r2l
342 1.1 christos test_h_gr8 31 r2l
343 1.1 christos
344 1.1 christos set_ccr_zero
345 1.1 christos bclr #4, @byte_dst:16
346 1.1 christos test_cc_clear
347 1.1 christos mov @byte_dst, r2l
348 1.1 christos test_h_gr8 15 r2l
349 1.1 christos
350 1.1 christos set_ccr_zero
351 1.1 christos bclr #3, @byte_dst:16
352 1.1 christos test_cc_clear
353 1.1 christos mov @byte_dst, r2l
354 1.1 christos test_h_gr8 7 r2l
355 1.1 christos
356 1.1 christos set_ccr_zero
357 1.1 christos bclr #2, @byte_dst:16
358 1.1 christos test_cc_clear
359 1.1 christos mov @byte_dst, r2l
360 1.1 christos test_h_gr8 3 r2l
361 1.1 christos
362 1.1 christos set_ccr_zero
363 1.1 christos bclr #1, @byte_dst:16
364 1.1 christos test_cc_clear
365 1.1 christos mov @byte_dst, r2l
366 1.1 christos test_h_gr8 1 r2l
367 1.1 christos
368 1.1 christos set_ccr_zero
369 1.1 christos bclr #0, @byte_dst:16
370 1.1 christos test_cc_clear
371 1.1 christos mov @byte_dst, r2l
372 1.1 christos test_h_gr8 0 r2l
373 1.1 christos
374 1.1 christos test_gr_a5a5 0 ; Make sure other general regs not disturbed
375 1.1 christos test_gr_a5a5 1
376 1.1 christos .if (sim_cpu == h8300)
377 1.1 christos test_h_gr16 0xa500 r2
378 1.1 christos .else
379 1.1 christos test_h_gr32 0xa5a5a500 er2
380 1.1 christos .endif
381 1.1 christos test_gr_a5a5 3
382 1.1 christos test_gr_a5a5 4
383 1.1 christos test_gr_a5a5 5
384 1.1 christos test_gr_a5a5 6
385 1.1 christos test_gr_a5a5 7
386 1.1 christos .endif
387 1.1 christos .endif
388 1.1 christos
389 1.1 christos bset_rs8_rd8:
390 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
391 1.1 christos
392 1.1 christos ;; bset rs8, rd8
393 1.1 christos mov #0, r1h
394 1.1 christos mov #0, r1l
395 1.1 christos set_ccr_zero
396 1.1 christos bset r1h, r1l
397 1.1 christos test_cc_clear
398 1.1 christos test_h_gr8 1 r1l
399 1.1 christos
400 1.1 christos mov #1, r1h
401 1.1 christos set_ccr_zero
402 1.1 christos bset r1h, r1l
403 1.1 christos test_cc_clear
404 1.1 christos test_h_gr8 3 r1l
405 1.1 christos
406 1.1 christos mov #2, r1h
407 1.1 christos set_ccr_zero
408 1.1 christos bset r1h, r1l
409 1.1 christos test_cc_clear
410 1.1 christos test_h_gr8 7 r1l
411 1.1 christos
412 1.1 christos mov #3, r1h
413 1.1 christos set_ccr_zero
414 1.1 christos bset r1h, r1l
415 1.1 christos test_cc_clear
416 1.1 christos test_h_gr8 15 r1l
417 1.1 christos
418 1.1 christos mov #4, r1h
419 1.1 christos set_ccr_zero
420 1.1 christos bset r1h, r1l
421 1.1 christos test_cc_clear
422 1.1 christos test_h_gr8 31 r1l
423 1.1 christos
424 1.1 christos mov #5, r1h
425 1.1 christos set_ccr_zero
426 1.1 christos bset r1h, r1l
427 1.1 christos test_cc_clear
428 1.1 christos test_h_gr8 63 r1l
429 1.1 christos
430 1.1 christos mov #6, r1h
431 1.1 christos set_ccr_zero
432 1.1 christos bset r1h, r1l
433 1.1 christos test_cc_clear
434 1.1 christos test_h_gr8 127 r1l
435 1.1 christos
436 1.1 christos mov #7, r1h
437 1.1 christos set_ccr_zero
438 1.1 christos bset r1h, r1l
439 1.1 christos test_cc_clear
440 1.1 christos test_h_gr8 255 r1l
441 1.1 christos
442 1.1 christos .if (sim_cpu == h8300)
443 1.1 christos test_h_gr16 0x07ff, r1
444 1.1 christos .else
445 1.1 christos test_h_gr32 0xa5a507ff er1
446 1.1 christos .endif
447 1.1 christos
448 1.1 christos bclr_rs8_rd8:
449 1.1 christos mov #7, r1h
450 1.1 christos set_ccr_zero
451 1.1 christos bclr r1h, r1l
452 1.1 christos test_cc_clear
453 1.1 christos test_h_gr8 127 r1l
454 1.1 christos
455 1.1 christos mov #6, r1h
456 1.1 christos set_ccr_zero
457 1.1 christos bclr r1h, r1l
458 1.1 christos test_cc_clear
459 1.1 christos test_h_gr8 63 r1l
460 1.1 christos
461 1.1 christos mov #5, r1h
462 1.1 christos set_ccr_zero
463 1.1 christos bclr r1h, r1l
464 1.1 christos test_cc_clear
465 1.1 christos test_h_gr8 31 r1l
466 1.1 christos
467 1.1 christos mov #4, r1h
468 1.1 christos set_ccr_zero
469 1.1 christos bclr r1h, r1l
470 1.1 christos test_cc_clear
471 1.1 christos test_h_gr8 15 r1l
472 1.1 christos
473 1.1 christos mov #3, r1h
474 1.1 christos set_ccr_zero
475 1.1 christos bclr r1h, r1l
476 1.1 christos test_cc_clear
477 1.1 christos test_h_gr8 7 r1l
478 1.1 christos
479 1.1 christos mov #2, r1h
480 1.1 christos set_ccr_zero
481 1.1 christos bclr r1h, r1l
482 1.1 christos test_cc_clear
483 1.1 christos test_h_gr8 3 r1l
484 1.1 christos
485 1.1 christos mov #1, r1h
486 1.1 christos set_ccr_zero
487 1.1 christos bclr r1h, r1l
488 1.1 christos test_cc_clear
489 1.1 christos test_h_gr8 1 r1l
490 1.1 christos
491 1.1 christos mov #0, r1h
492 1.1 christos set_ccr_zero
493 1.1 christos bclr r1h, r1l
494 1.1 christos test_cc_clear
495 1.1 christos test_h_gr8 0 r1l
496 1.1 christos
497 1.1 christos test_gr_a5a5 0 ; Make sure other general regs not disturbed
498 1.1 christos .if (sim_cpu == h8300)
499 1.1 christos test_h_gr16 0x0000 r1
500 1.1 christos .else
501 1.1 christos test_h_gr32 0xa5a50000 er1
502 1.1 christos .endif
503 1.1 christos test_gr_a5a5 2
504 1.1 christos test_gr_a5a5 3
505 1.1 christos test_gr_a5a5 4
506 1.1 christos test_gr_a5a5 5
507 1.1 christos test_gr_a5a5 6
508 1.1 christos test_gr_a5a5 7
509 1.1 christos
510 1.1 christos .if (sim_cpu)
511 1.1 christos bset_rs8_ind:
512 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
513 1.1 christos
514 1.1 christos ;; bset rs8, @erd
515 1.1 christos mov #byte_dst, er1
516 1.1 christos mov #0, r2h
517 1.1 christos set_ccr_zero
518 1.1 christos bset r2h, @er1
519 1.1 christos test_cc_clear
520 1.1 christos mov @er1, r2l
521 1.1 christos test_h_gr8 1 r2l
522 1.1 christos
523 1.1 christos mov #1, r2h
524 1.1 christos set_ccr_zero
525 1.1 christos bset r2h, @er1
526 1.1 christos test_cc_clear
527 1.1 christos mov @er1, r2l
528 1.1 christos test_h_gr8 3 r2l
529 1.1 christos
530 1.1 christos mov #2, r2h
531 1.1 christos set_ccr_zero
532 1.1 christos bset r2h, @er1
533 1.1 christos test_cc_clear
534 1.1 christos mov @er1, r2l
535 1.1 christos test_h_gr8 7 r2l
536 1.1 christos
537 1.1 christos mov #3, r2h
538 1.1 christos set_ccr_zero
539 1.1 christos bset r2h, @er1
540 1.1 christos test_cc_clear
541 1.1 christos mov @er1, r2l
542 1.1 christos test_h_gr8 15 r2l
543 1.1 christos
544 1.1 christos mov #4, r2h
545 1.1 christos set_ccr_zero
546 1.1 christos bset r2h, @er1
547 1.1 christos test_cc_clear
548 1.1 christos mov @er1, r2l
549 1.1 christos test_h_gr8 31 r2l
550 1.1 christos
551 1.1 christos mov #5, r2h
552 1.1 christos set_ccr_zero
553 1.1 christos bset r2h, @er1
554 1.1 christos test_cc_clear
555 1.1 christos mov @er1, r2l
556 1.1 christos test_h_gr8 63 r2l
557 1.1 christos
558 1.1 christos mov #6, r2h
559 1.1 christos set_ccr_zero
560 1.1 christos bset r2h, @er1
561 1.1 christos test_cc_clear
562 1.1 christos mov @er1, r2l
563 1.1 christos test_h_gr8 127 r2l
564 1.1 christos
565 1.1 christos mov #7, r2h
566 1.1 christos set_ccr_zero
567 1.1 christos bset r2h, @er1
568 1.1 christos test_cc_clear
569 1.1 christos mov @er1, r2l
570 1.1 christos test_h_gr8 255 r2l
571 1.1 christos
572 1.1 christos .if (sim_cpu == h8300)
573 1.1 christos test_h_gr16 0x07ff r2
574 1.1 christos .else
575 1.1 christos test_h_gr32 0xa5a507ff er2
576 1.1 christos .endif
577 1.1 christos
578 1.1 christos bclr_rs8_ind:
579 1.1 christos mov #7, r2h
580 1.1 christos set_ccr_zero
581 1.1 christos bclr r2h, @er1
582 1.1 christos test_cc_clear
583 1.1 christos mov @er1, r2l
584 1.1 christos test_h_gr8 127 r2l
585 1.1 christos
586 1.1 christos mov #6, r2h
587 1.1 christos set_ccr_zero
588 1.1 christos bclr r2h, @er1
589 1.1 christos test_cc_clear
590 1.1 christos mov @er1, r2l
591 1.1 christos test_h_gr8 63 r2l
592 1.1 christos
593 1.1 christos mov #5, r2h
594 1.1 christos set_ccr_zero
595 1.1 christos bclr r2h, @er1
596 1.1 christos test_cc_clear
597 1.1 christos mov @er1, r2l
598 1.1 christos test_h_gr8 31 r2l
599 1.1 christos
600 1.1 christos mov #4, r2h
601 1.1 christos set_ccr_zero
602 1.1 christos bclr r2h, @er1
603 1.1 christos test_cc_clear
604 1.1 christos mov @er1, r2l
605 1.1 christos test_h_gr8 15 r2l
606 1.1 christos
607 1.1 christos mov #3, r2h
608 1.1 christos set_ccr_zero
609 1.1 christos bclr r2h, @er1
610 1.1 christos test_cc_clear
611 1.1 christos mov @er1, r2l
612 1.1 christos test_h_gr8 7 r2l
613 1.1 christos
614 1.1 christos mov #2, r2h
615 1.1 christos set_ccr_zero
616 1.1 christos bclr r2h, @er1
617 1.1 christos test_cc_clear
618 1.1 christos mov @er1, r2l
619 1.1 christos test_h_gr8 3 r2l
620 1.1 christos
621 1.1 christos mov #1, r2h
622 1.1 christos set_ccr_zero
623 1.1 christos bclr r2h, @er1
624 1.1 christos test_cc_clear
625 1.1 christos mov @er1, r2l
626 1.1 christos test_h_gr8 1 r2l
627 1.1 christos
628 1.1 christos mov #0, r2h
629 1.1 christos set_ccr_zero
630 1.1 christos bclr r2h, @er1
631 1.1 christos test_cc_clear
632 1.1 christos mov @er1, r2l
633 1.1 christos test_h_gr8 0 r2l
634 1.1 christos
635 1.1 christos test_gr_a5a5 0 ; Make sure other general regs not disturbed
636 1.1 christos .if (sim_cpu == h8300)
637 1.1 christos test_h_gr16 byte_dst r1
638 1.1 christos test_h_gr16 0x0000 r2
639 1.1 christos .else
640 1.1 christos test_h_gr32 byte_dst er1
641 1.1 christos test_h_gr32 0xa5a50000 er2
642 1.1 christos .endif
643 1.1 christos test_gr_a5a5 3
644 1.1 christos test_gr_a5a5 4
645 1.1 christos test_gr_a5a5 5
646 1.1 christos test_gr_a5a5 6
647 1.1 christos test_gr_a5a5 7
648 1.1 christos
649 1.1 christos .if (sim_cpu > h8300h)
650 1.1 christos bset_rs8_abs32:
651 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
652 1.1 christos
653 1.1 christos ;; bset rs8, @aa:32
654 1.1 christos mov #0, r2h
655 1.1 christos set_ccr_zero
656 1.1 christos bset r2h, @byte_dst:32
657 1.1 christos test_cc_clear
658 1.1 christos mov @byte_dst, r2l
659 1.1 christos test_h_gr8 1 r2l
660 1.1 christos
661 1.1 christos mov #1, r2h
662 1.1 christos set_ccr_zero
663 1.1 christos bset r2h, @byte_dst:32
664 1.1 christos test_cc_clear
665 1.1 christos mov @byte_dst, r2l
666 1.1 christos test_h_gr8 3 r2l
667 1.1 christos
668 1.1 christos mov #2, r2h
669 1.1 christos set_ccr_zero
670 1.1 christos bset r2h, @byte_dst:32
671 1.1 christos test_cc_clear
672 1.1 christos mov @byte_dst, r2l
673 1.1 christos test_h_gr8 7 r2l
674 1.1 christos
675 1.1 christos mov #3, r2h
676 1.1 christos set_ccr_zero
677 1.1 christos bset r2h, @byte_dst:32
678 1.1 christos test_cc_clear
679 1.1 christos mov @byte_dst, r2l
680 1.1 christos test_h_gr8 15 r2l
681 1.1 christos
682 1.1 christos mov #4, r2h
683 1.1 christos set_ccr_zero
684 1.1 christos bset r2h, @byte_dst:32
685 1.1 christos test_cc_clear
686 1.1 christos mov @byte_dst, r2l
687 1.1 christos test_h_gr8 31 r2l
688 1.1 christos
689 1.1 christos mov #5, r2h
690 1.1 christos set_ccr_zero
691 1.1 christos bset r2h, @byte_dst:32
692 1.1 christos test_cc_clear
693 1.1 christos mov @byte_dst, r2l
694 1.1 christos test_h_gr8 63 r2l
695 1.1 christos
696 1.1 christos mov #6, r2h
697 1.1 christos set_ccr_zero
698 1.1 christos bset r2h, @byte_dst:32
699 1.1 christos test_cc_clear
700 1.1 christos mov @byte_dst, r2l
701 1.1 christos test_h_gr8 127 r2l
702 1.1 christos
703 1.1 christos mov #7, r2h
704 1.1 christos set_ccr_zero
705 1.1 christos bset r2h, @byte_dst:32
706 1.1 christos test_cc_clear
707 1.1 christos mov @byte_dst, r2l
708 1.1 christos test_h_gr8 255 r2l
709 1.1 christos
710 1.1 christos .if (sim_cpu == h8300)
711 1.1 christos test_h_gr16 0x07ff r2
712 1.1 christos .else
713 1.1 christos test_h_gr32 0xa5a507ff er2
714 1.1 christos .endif
715 1.1 christos
716 1.1 christos bclr_rs8_abs32:
717 1.1 christos mov #7, r2h
718 1.1 christos set_ccr_zero
719 1.1 christos bclr r2h, @byte_dst:32
720 1.1 christos test_cc_clear
721 1.1 christos mov @byte_dst, r2l
722 1.1 christos test_h_gr8 127 r2l
723 1.1 christos
724 1.1 christos mov #6, r2h
725 1.1 christos set_ccr_zero
726 1.1 christos bclr r2h, @byte_dst:32
727 1.1 christos test_cc_clear
728 1.1 christos mov @byte_dst, r2l
729 1.1 christos test_h_gr8 63 r2l
730 1.1 christos
731 1.1 christos mov #5, r2h
732 1.1 christos set_ccr_zero
733 1.1 christos bclr r2h, @byte_dst:32
734 1.1 christos test_cc_clear
735 1.1 christos mov @byte_dst, r2l
736 1.1 christos test_h_gr8 31 r2l
737 1.1 christos
738 1.1 christos mov #4, r2h
739 1.1 christos set_ccr_zero
740 1.1 christos bclr r2h, @byte_dst:32
741 1.1 christos test_cc_clear
742 1.1 christos mov @byte_dst, r2l
743 1.1 christos test_h_gr8 15 r2l
744 1.1 christos
745 1.1 christos mov #3, r2h
746 1.1 christos set_ccr_zero
747 1.1 christos bclr r2h, @byte_dst:32
748 1.1 christos test_cc_clear
749 1.1 christos mov @byte_dst, r2l
750 1.1 christos test_h_gr8 7 r2l
751 1.1 christos
752 1.1 christos mov #2, r2h
753 1.1 christos set_ccr_zero
754 1.1 christos bclr r2h, @byte_dst:32
755 1.1 christos test_cc_clear
756 1.1 christos mov @byte_dst, r2l
757 1.1 christos test_h_gr8 3 r2l
758 1.1 christos
759 1.1 christos mov #1, r2h
760 1.1 christos set_ccr_zero
761 1.1 christos bclr r2h, @byte_dst:32
762 1.1 christos test_cc_clear
763 1.1 christos mov @byte_dst, r2l
764 1.1 christos test_h_gr8 1 r2l
765 1.1 christos
766 1.1 christos mov #0, r2h
767 1.1 christos set_ccr_zero
768 1.1 christos bclr r2h, @byte_dst:32
769 1.1 christos test_cc_clear
770 1.1 christos mov @byte_dst, r2l
771 1.1 christos test_h_gr8 0 r2l
772 1.1 christos
773 1.1 christos test_gr_a5a5 0 ; Make sure other general regs not disturbed
774 1.1 christos test_gr_a5a5 1
775 1.1 christos .if (sim_cpu == h8300)
776 1.1 christos test_h_gr16 0x0000 r2
777 1.1 christos .else
778 1.1 christos test_h_gr32 0xa5a50000 er2
779 1.1 christos .endif
780 1.1 christos test_gr_a5a5 3
781 1.1 christos test_gr_a5a5 4
782 1.1 christos test_gr_a5a5 5
783 1.1 christos test_gr_a5a5 6
784 1.1 christos test_gr_a5a5 7
785 1.1 christos .endif
786 1.1 christos .endif
787 1.1 christos
788 1.1 christos .if (sim_cpu == h8sx)
789 1.1 christos bset_eq_imm3_abs16:
790 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
791 1.1 christos
792 1.1 christos ;; bset/eq xx:3, rd8
793 1.1 christos mov #0, @byte_dst
794 1.1 christos set_ccr_zero
795 1.1 christos bset/eq #0, @byte_dst:16 ; Zero is clear, should have no effect.
796 1.1 christos test_cc_clear
797 1.1 christos mov @byte_dst, r1l
798 1.1 christos test_h_gr8 0 r1l
799 1.1 christos
800 1.1 christos set_ccr_zero
801 1.1 christos orc #4, ccr ; Set zero flag
802 1.1 christos bset/eq #0, @byte_dst:16 ; Zero is set: operation should succeed.
803 1.1 christos
804 1.1 christos test_neg_clear
805 1.1 christos test_zero_set
806 1.1 christos test_ovf_clear
807 1.1 christos test_carry_clear
808 1.1 christos
809 1.1 christos mov @byte_dst, r1l
810 1.1 christos test_h_gr8 1 r1l
811 1.1 christos
812 1.1 christos bclr_eq_imm3_abs32:
813 1.1 christos mov #1, @byte_dst
814 1.1 christos set_ccr_zero
815 1.1 christos bclr/eq #0, @byte_dst:32 ; Zero is clear, should have no effect.
816 1.1 christos test_cc_clear
817 1.1 christos mov @byte_dst, r1l
818 1.1 christos test_h_gr8 1 r1l
819 1.1 christos
820 1.1 christos set_ccr_zero
821 1.1 christos orc #4, ccr ; Set zero flag
822 1.1 christos bclr/eq #0, @byte_dst:32 ; Zero is set: operation should succeed.
823 1.1 christos test_neg_clear
824 1.1 christos test_zero_set
825 1.1 christos test_ovf_clear
826 1.1 christos test_carry_clear
827 1.1 christos mov @byte_dst, r1l
828 1.1 christos test_h_gr8 0 r1l
829 1.1 christos
830 1.1 christos test_gr_a5a5 0 ; Make sure other general regs not disturbed
831 1.1 christos test_h_gr32 0xa5a5a500 er1
832 1.1 christos test_gr_a5a5 2
833 1.1 christos test_gr_a5a5 3
834 1.1 christos test_gr_a5a5 4
835 1.1 christos test_gr_a5a5 5
836 1.1 christos test_gr_a5a5 6
837 1.1 christos test_gr_a5a5 7
838 1.1 christos
839 1.1 christos bset_ne_imm3_abs16:
840 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
841 1.1 christos
842 1.1 christos ;; bset/ne xx:3, aa:16
843 1.1 christos mov #0, @byte_dst
844 1.1 christos set_ccr_zero
845 1.1 christos orc #4, ccr ; Set zero flag
846 1.1 christos bset/ne #0, @byte_dst:16 ; Zero is set; should have no effect.
847 1.1 christos test_zero_set
848 1.1 christos test_neg_clear
849 1.1 christos test_ovf_clear
850 1.1 christos test_carry_clear
851 1.1 christos mov @byte_dst, r1l
852 1.1 christos test_h_gr8 0 r1l
853 1.1 christos
854 1.1 christos set_ccr_zero
855 1.1 christos bset/ne #0, @byte_dst:16 ; Zero is clear: operation should succeed.
856 1.1 christos test_cc_clear
857 1.1 christos mov @byte_dst, r1l
858 1.1 christos test_h_gr8 1 r1l
859 1.1 christos
860 1.1 christos bclr_ne_imm3_abs32:
861 1.1 christos mov #1, @byte_dst
862 1.1 christos set_ccr_zero
863 1.1 christos orc #4, ccr ; Set zero flag
864 1.1 christos ;; bclr/ne xx:3, aa:16
865 1.1 christos bclr/ne #0, @byte_dst:32 ; Zero is set, should have no effect.
866 1.1 christos test_neg_clear
867 1.1 christos test_zero_set
868 1.1 christos test_ovf_clear
869 1.1 christos test_carry_clear
870 1.1 christos mov @byte_dst, r1l
871 1.1 christos test_h_gr8 1 r1l
872 1.1 christos
873 1.1 christos set_ccr_zero
874 1.1 christos bclr/ne #0, @byte_dst:32 ; Zero is clear: operation should succeed.
875 1.1 christos test_cc_clear
876 1.1 christos mov @byte_dst, r1l
877 1.1 christos test_h_gr8 0 r1l
878 1.1 christos
879 1.1 christos test_gr_a5a5 0 ; Make sure other general regs not disturbed
880 1.1 christos test_h_gr32 0xa5a5a500 er1
881 1.1 christos test_gr_a5a5 2
882 1.1 christos test_gr_a5a5 3
883 1.1 christos test_gr_a5a5 4
884 1.1 christos test_gr_a5a5 5
885 1.1 christos test_gr_a5a5 6
886 1.1 christos test_gr_a5a5 7
887 1.1 christos .endif
888 1.1 christos
889 1.1 christos pass
890 1.1 christos exit 0
891