2 # Some h8300sx tests -- t12_bit
5 proc do_t12_bit_test {} {
6 set testname "t12_bit.s -- h8sx bit tests"
8 gas_start "t12_bit.s" "-al"
10 # Check each instruction bit pattern to verify it got assembled correctly.
14 -re ".* 7 0000 7071" { set x [expr $x+1]; exp_continue; }
15 -re ".* 8 0002 7D107070" { set x [expr $x+1]; exp_continue; }
16 -re ".* 9 0006 7F127070" { set x [expr $x+1]; exp_continue; }
17 -re ".* 10 000a 6A181234" { set x [expr $x+1]; exp_continue; }
18 -re ".* 10 7070" { set x [expr $x+1]; exp_continue; }
19 -re ".* 11 0010 6A381234" { set x [expr $x+1]; exp_continue; }
20 -re ".* 11 56787070" { set x [expr $x+1]; exp_continue; }
22 if [expr $x == 7] then {
23 pass "$testname: bset #0x7, ..."
25 fail "$testname: bset #0x7, ... ($x)"
28 default { fail "$testname: bset #0x7, ... ($x)" }
33 -re ".* 13 0018 6031" { set x [expr $x+1]; exp_continue; }
34 -re ".* 14 001a 7D106030" { set x [expr $x+1]; exp_continue; }
35 -re ".* 15 001e 7F126030" { set x [expr $x+1]; exp_continue; }
36 -re ".* 16 0022 6A181234" { set x [expr $x+1]; exp_continue; }
37 -re ".* 16 6030" { set x [expr $x+1]; exp_continue; }
38 -re ".* 17 0028 6A381234" { set x [expr $x+1]; exp_continue; }
39 -re ".* 17 56786030" { set x [expr $x+1]; exp_continue; }
41 if [expr $x == 7] then {
42 pass "$testname: bset r3h, ..."
44 fail "$testname: bset r3h, ... ($x)"
47 default { fail "$testname: bset r3h, ... ($x)" }
52 -re ".* 19 0030 7D107077" { set x [expr $x+1]; exp_continue; }
53 -re ".* 20 0034 7F127077" { set x [expr $x+1]; exp_continue; }
54 -re ".* 21 0038 6A181234" { set x [expr $x+1]; exp_continue; }
55 -re ".* 21 7077" { set x [expr $x+1]; exp_continue; }
56 -re ".* 22 003e 6A381234" { set x [expr $x+1]; exp_continue; }
57 -re ".* 22 56787077" { set x [expr $x+1]; exp_continue; }
59 if [expr $x == 6] then {
60 pass "$testname: bset/eq #0x7, ..."
62 fail "$testname: bset/eq #0x7, ... ($x)"
65 default { fail "$testname: bset/eq #0x7, ... ($x)" }
70 -re ".* 24 0046 7D106037" { set x [expr $x+1]; exp_continue; }
71 -re ".* 25 004a 7F126037" { set x [expr $x+1]; exp_continue; }
72 -re ".* 26 004e 6A181234" { set x [expr $x+1]; exp_continue; }
73 -re ".* 26 6037" { set x [expr $x+1]; exp_continue; }
74 -re ".* 27 0054 6A381234" { set x [expr $x+1]; exp_continue; }
75 -re ".* 27 56786037" { set x [expr $x+1]; exp_continue; }
77 if [expr $x == 6] then {
78 pass "$testname: bset/eq r3h, ..."
80 fail "$testname: bset/eq r3h, ... ($x)"
83 default { fail "$testname: bset/eq r3h, ... ($x)" }
88 -re ".* 29 005c 7D107076" { set x [expr $x+1]; exp_continue; }
89 -re ".* 30 0060 7F127076" { set x [expr $x+1]; exp_continue; }
90 -re ".* 31 0064 6A181234" { set x [expr $x+1]; exp_continue; }
91 -re ".* 31 7076" { set x [expr $x+1]; exp_continue; }
92 -re ".* 32 006a 6A381234" { set x [expr $x+1]; exp_continue; }
93 -re ".* 32 56787076" { set x [expr $x+1]; exp_continue; }
95 if [expr $x == 6] then {
96 pass "$testname: bset/ne #0x7, ..."
98 fail "$testname: bset/ne #0x7, ... ($x)"
101 default { fail "$testname: bset/ne #0x7, ... ($x)" }
106 -re ".* 34 0072 7D106036" { set x [expr $x+1]; exp_continue; }
107 -re ".* 35 0076 7F126036" { set x [expr $x+1]; exp_continue; }
108 -re ".* 36 007a 6A181234" { set x [expr $x+1]; exp_continue; }
109 -re ".* 36 6036" { set x [expr $x+1]; exp_continue; }
110 -re ".* 37 0080 6A381234" { set x [expr $x+1]; exp_continue; }
111 -re ".* 37 56786036" { set x [expr $x+1]; exp_continue; }
113 if [expr $x == 6] then {
114 pass "$testname: bset/ne r3h, ..."
116 fail "$testname: bset/ne r3h, ... ($x)"
119 default { fail "$testname: bset/ne r3h, ... ($x)" }
124 -re ".* 39 0088 7171" { set x [expr $x+1]; exp_continue; }
125 -re ".* 40 008a 7D107170" { set x [expr $x+1]; exp_continue; }
126 -re ".* 41 008e 7F127170" { set x [expr $x+1]; exp_continue; }
127 -re ".* 42 0092 6A181234" { set x [expr $x+1]; exp_continue; }
128 -re ".* 42 7170" { set x [expr $x+1]; exp_continue; }
129 -re ".* 43 0098 6A381234" { set x [expr $x+1]; exp_continue; }
130 -re ".* 43 56787170" { set x [expr $x+1]; exp_continue; }
132 if [expr $x == 7] then {
133 pass "$testname: bnot #0x7, ..."
135 fail "$testname: bnot #0x7, ... ($x)"
138 default { fail "$testname: bnot #0x7, ... ($x)" }
143 -re ".* 45 00a0 6131" { set x [expr $x+1]; exp_continue; }
144 -re ".* 46 00a2 7D106130" { set x [expr $x+1]; exp_continue; }
145 -re ".* 47 00a6 7F126130" { set x [expr $x+1]; exp_continue; }
146 -re ".* 48 00aa 6A181234" { set x [expr $x+1]; exp_continue; }
147 -re ".* 48 6130" { set x [expr $x+1]; exp_continue; }
148 -re ".* 49 00b0 6A381234" { set x [expr $x+1]; exp_continue; }
149 -re ".* 49 56786130" { set x [expr $x+1]; exp_continue; }
151 if [expr $x == 7] then {
152 pass "$testname: bnot r3h, ..."
154 fail "$testname: bnot r3h, ... ($x)"
157 default { fail "$testname: bnot r3h, ... ($x)" }
162 -re ".* 51 00b8 7271" { set x [expr $x+1]; exp_continue; }
163 -re ".* 52 00ba 7D107270" { set x [expr $x+1]; exp_continue; }
164 -re ".* 53 00be 7F127270" { set x [expr $x+1]; exp_continue; }
165 -re ".* 54 00c2 6A181234" { set x [expr $x+1]; exp_continue; }
166 -re ".* 54 7270" { set x [expr $x+1]; exp_continue; }
167 -re ".* 55 00c8 6A381234" { set x [expr $x+1]; exp_continue; }
168 -re ".* 55 56787270" { set x [expr $x+1]; exp_continue; }
170 if [expr $x == 7] then {
171 pass "$testname: bclr #0x7, ..."
173 fail "$testname: bclr #0x7, ... ($x)"
176 default { fail "$testname: bclr #0x7, ... ($x)" }
181 -re ".* 57 00d0 6231" { set x [expr $x+1]; exp_continue; }
182 -re ".* 58 00d2 7D106230" { set x [expr $x+1]; exp_continue; }
183 -re ".* 59 00d6 7F126230" { set x [expr $x+1]; exp_continue; }
184 -re ".* 60 00da 6A181234" { set x [expr $x+1]; exp_continue; }
185 -re ".* 60 6230" { set x [expr $x+1]; exp_continue; }
186 -re ".* 61 00e0 6A381234" { set x [expr $x+1]; exp_continue; }
187 -re ".* 61 56786230" { set x [expr $x+1]; exp_continue; }
189 if [expr $x == 7] then {
190 pass "$testname: bclr r3h, ..."
192 fail "$testname: bclr r3h, ... ($x)"
195 default { fail "$testname: bclr r3h, ... ($x)" }
200 -re ".* 63 00e8 7D107277" { set x [expr $x+1]; exp_continue; }
201 -re ".* 64 00ec 7F127277" { set x [expr $x+1]; exp_continue; }
202 -re ".* 65 00f0 6A181234" { set x [expr $x+1]; exp_continue; }
203 -re ".* 65 7277" { set x [expr $x+1]; exp_continue; }
204 -re ".* 66 00f6 6A381234" { set x [expr $x+1]; exp_continue; }
205 -re ".* 66 56787277" { set x [expr $x+1]; exp_continue; }
207 if [expr $x == 6] then {
208 pass "$testname: bclr/eq #0x7, ..."
210 fail "$testname: bclr/eq #0x7, ... ($x)"
213 default { fail "$testname: bclr/eq #0x7, ... ($x)" }
218 -re ".* 68 00fe 7D106237" { set x [expr $x+1]; exp_continue; }
219 -re ".* 69 0102 7F126237" { set x [expr $x+1]; exp_continue; }
220 -re ".* 70 0106 6A181234" { set x [expr $x+1]; exp_continue; }
221 -re ".* 70 6237" { set x [expr $x+1]; exp_continue; }
222 -re ".* 71 010c 6A381234" { set x [expr $x+1]; exp_continue; }
223 -re ".* 71 56786237" { set x [expr $x+1]; exp_continue; }
225 if [expr $x == 6] then {
226 pass "$testname: bclr/eq r3h, ..."
228 fail "$testname: bclr/eq r3h, ... ($x)"
231 default { fail "$testname: bclr/eq r3h, ... ($x)" }
236 -re ".* 73 0114 7D107276" { set x [expr $x+1]; exp_continue; }
237 -re ".* 74 0118 7F127276" { set x [expr $x+1]; exp_continue; }
238 -re ".* 75 011c 6A181234" { set x [expr $x+1]; exp_continue; }
239 -re ".* 75 7276" { set x [expr $x+1]; exp_continue; }
240 -re ".* 76 0122 6A381234" { set x [expr $x+1]; exp_continue; }
241 -re ".* 76 56787276" { set x [expr $x+1]; exp_continue; }
243 if [expr $x == 6] then {
244 pass "$testname: bclr/ne #0x7, ..."
246 fail "$testname: bclr/ne #0x7, ... ($x)"
249 default { fail "$testname: bclr/ne #0x7, ... ($x)" }
254 -re ".* 78 012a 7D106236" { set x [expr $x+1]; exp_continue; }
255 -re ".* 79 012e 7F126236" { set x [expr $x+1]; exp_continue; }
256 -re ".* 80 0132 6A181234" { set x [expr $x+1]; exp_continue; }
257 -re ".* 80 6236" { set x [expr $x+1]; exp_continue; }
258 -re ".* 81 0138 6A381234" { set x [expr $x+1]; exp_continue; }
259 -re ".* 81 56786236" { set x [expr $x+1]; exp_continue; }
261 if [expr $x == 6] then {
262 pass "$testname: bclr/ne r3h, ..."
264 fail "$testname: bclr/ne r3h, ... ($x)"
267 default { fail "$testname: bclr/ne r3h, ... ($x)" }
272 -re ".* 83 0140 7371" { set x [expr $x+1]; exp_continue; }
273 -re ".* 84 0142 7C107370" { set x [expr $x+1]; exp_continue; }
274 -re ".* 85 0146 7E127370" { set x [expr $x+1]; exp_continue; }
275 -re ".* 86 014a 6A101234" { set x [expr $x+1]; exp_continue; }
276 -re ".* 86 7370" { set x [expr $x+1]; exp_continue; }
277 -re ".* 87 0150 6A301234" { set x [expr $x+1]; exp_continue; }
278 -re ".* 87 56787370" { set x [expr $x+1]; exp_continue; }
280 if [expr $x == 7] then {
281 pass "$testname: btst #0x7, ..."
283 fail "$testname: btst #0x7, ... ($x)"
286 default { fail "$testname: btst #0x7, ... ($x)" }
291 -re ".* 89 0158 6331" { set x [expr $x+1]; exp_continue; }
292 -re ".* 90 015a 7C106330" { set x [expr $x+1]; exp_continue; }
293 -re ".* 91 015e 7E126330" { set x [expr $x+1]; exp_continue; }
294 -re ".* 92 0162 6A101234" { set x [expr $x+1]; exp_continue; }
295 -re ".* 92 6330" { set x [expr $x+1]; exp_continue; }
296 -re ".* 93 0168 6A301234" { set x [expr $x+1]; exp_continue; }
297 -re ".* 93 56786330" { set x [expr $x+1]; exp_continue; }
299 if [expr $x == 7] then {
300 pass "$testname: btst r3h, ..."
302 fail "$testname: btst r3h, ... ($x)"
305 default { fail "$testname: btst r3h, ... ($x)" }
310 -re ".* 95 0170 7471" { set x [expr $x+1]; exp_continue; }
311 -re ".* 96 0172 7C107470" { set x [expr $x+1]; exp_continue; }
312 -re ".* 97 0176 7E127470" { set x [expr $x+1]; exp_continue; }
313 -re ".* 98 017a 6A101234" { set x [expr $x+1]; exp_continue; }
314 -re ".* 98 7470" { set x [expr $x+1]; exp_continue; }
315 -re ".* 99 0180 6A301234" { set x [expr $x+1]; exp_continue; }
316 -re ".* 99 56787470" { set x [expr $x+1]; exp_continue; }
318 if [expr $x == 7] then {
319 pass "$testname: bor #0x7, ..."
321 fail "$testname: bor #0x7, ... ($x)"
324 default { fail "$testname: bor #0x7, ... ($x)" }
329 -re ".* 101 0188 74F1" { set x [expr $x+1]; exp_continue; }
330 -re ".* 102 018a 7C1074F0" { set x [expr $x+1]; exp_continue; }
331 -re ".* 103 018e 7E1274F0" { set x [expr $x+1]; exp_continue; }
332 -re ".* 104 0192 6A101234" { set x [expr $x+1]; exp_continue; }
333 -re ".* 104 74F0" { set x [expr $x+1]; exp_continue; }
334 -re ".* 105 0198 6A301234" { set x [expr $x+1]; exp_continue; }
335 -re ".* 105 567874F0" { set x [expr $x+1]; exp_continue; }
337 if [expr $x == 7] then {
338 pass "$testname: bior #0x7, ..."
340 fail "$testname: bior #0x7, ... ($x)"
343 default { fail "$testname: bior #0x7, ... ($x)" }
348 -re ".* 107 01a0 7571" { set x [expr $x+1]; exp_continue; }
349 -re ".* 108 01a2 7C107570" { set x [expr $x+1]; exp_continue; }
350 -re ".* 109 01a6 7E127570" { set x [expr $x+1]; exp_continue; }
351 -re ".* 110 01aa 6A101234" { set x [expr $x+1]; exp_continue; }
352 -re ".* 110 7570" { set x [expr $x+1]; exp_continue; }
353 -re ".* 111 01b0 6A301234" { set x [expr $x+1]; exp_continue; }
354 -re ".* 111 56787570" { set x [expr $x+1]; exp_continue; }
356 if [expr $x == 7] then {
357 pass "$testname: bxor #0x7, ..."
359 fail "$testname: bxor #0x7, ... ($x)"
362 default { fail "$testname: bxor #0x7, ... ($x)" }
367 -re ".* 113 01b8 75F1" { set x [expr $x+1]; exp_continue; }
368 -re ".* 114 01ba 7C1075F0" { set x [expr $x+1]; exp_continue; }
369 -re ".* 115 01be 7E1275F0" { set x [expr $x+1]; exp_continue; }
370 -re ".* 116 01c2 6A101234" { set x [expr $x+1]; exp_continue; }
371 -re ".* 116 75F0" { set x [expr $x+1]; exp_continue; }
372 -re ".* 117 01c8 6A301234" { set x [expr $x+1]; exp_continue; }
373 -re ".* 117 567875F0" { set x [expr $x+1]; exp_continue; }
375 if [expr $x == 7] then {
376 pass "$testname: bixor #0x7, ..."
378 fail "$testname: bixor #0x7, ... ($x)"
381 default { fail "$testname: bixor #0x7, ... ($x)" }
386 -re ".* 119 01d0 7671" { set x [expr $x+1]; exp_continue; }
387 -re ".* 120 01d2 7C107670" { set x [expr $x+1]; exp_continue; }
388 -re ".* 121 01d6 7E127670" { set x [expr $x+1]; exp_continue; }
389 -re ".* 122 01da 6A101234" { set x [expr $x+1]; exp_continue; }
390 -re ".* 122 7670" { set x [expr $x+1]; exp_continue; }
391 -re ".* 123 01e0 6A301234" { set x [expr $x+1]; exp_continue; }
392 -re ".* 123 56787670" { set x [expr $x+1]; exp_continue; }
394 if [expr $x == 7] then {
395 pass "$testname: band #0x7, ..."
397 fail "$testname: band #0x7, ... ($x)"
400 default { fail "$testname: band #0x7, ... ($x)" }
405 -re ".* 125 01e8 76F1" { set x [expr $x+1]; exp_continue; }
406 -re ".* 126 01ea 7C1076F0" { set x [expr $x+1]; exp_continue; }
407 -re ".* 127 01ee 7E1276F0" { set x [expr $x+1]; exp_continue; }
408 -re ".* 128 01f2 6A101234" { set x [expr $x+1]; exp_continue; }
409 -re ".* 128 76F0" { set x [expr $x+1]; exp_continue; }
410 -re ".* 129 01f8 6A301234" { set x [expr $x+1]; exp_continue; }
411 -re ".* 129 567876F0" { set x [expr $x+1]; exp_continue; }
413 if [expr $x == 7] then {
414 pass "$testname: biand #0x7, ..."
416 fail "$testname: biand #0x7, ... ($x)"
419 default { fail "$testname: biand #0x7, ... ($x)" }
424 -re ".* 131 0200 7771" { set x [expr $x+1]; exp_continue; }
425 -re ".* 132 0202 7C107770" { set x [expr $x+1]; exp_continue; }
426 -re ".* 133 0206 7E127770" { set x [expr $x+1]; exp_continue; }
427 -re ".* 134 020a 6A101234" { set x [expr $x+1]; exp_continue; }
428 -re ".* 134 7770" { set x [expr $x+1]; exp_continue; }
429 -re ".* 135 0210 6A301234" { set x [expr $x+1]; exp_continue; }
430 -re ".* 135 56787770" { set x [expr $x+1]; exp_continue; }
432 if [expr $x == 7] then {
433 pass "$testname: bld #0x7, ..."
435 fail "$testname: bld #0x7, ... ($x)"
438 default { fail "$testname: bld #0x7, ... ($x)" }
443 -re ".* 137 0218 77F1" { set x [expr $x+1]; exp_continue; }
444 -re ".* 138 021a 7C1077F0" { set x [expr $x+1]; exp_continue; }
445 -re ".* 139 021e 7E1277F0" { set x [expr $x+1]; exp_continue; }
446 -re ".* 140 0222 6A101234" { set x [expr $x+1]; exp_continue; }
447 -re ".* 140 77F0" { set x [expr $x+1]; exp_continue; }
448 -re ".* 141 0228 6A301234" { set x [expr $x+1]; exp_continue; }
449 -re ".* 141 567877F0" { set x [expr $x+1]; exp_continue; }
451 if [expr $x == 7] then {
452 pass "$testname: bild #0x7, ..."
454 fail "$testname: bild #0x7, ... ($x)"
457 default { fail "$testname: bild #0x7, ... ($x)" }
462 -re ".* 143 0230 6771" { set x [expr $x+1]; exp_continue; }
463 -re ".* 144 0232 7D106770" { set x [expr $x+1]; exp_continue; }
464 -re ".* 145 0236 7F126770" { set x [expr $x+1]; exp_continue; }
465 -re ".* 146 023a 6A181234" { set x [expr $x+1]; exp_continue; }
466 -re ".* 146 6770" { set x [expr $x+1]; exp_continue; }
467 -re ".* 147 0240 6A381234" { set x [expr $x+1]; exp_continue; }
468 -re ".* 147 56786770" { set x [expr $x+1]; exp_continue; }
470 if [expr $x == 7] then {
471 pass "$testname: bst #0x7, ..."
473 fail "$testname: bst #0x7, ... ($x)"
476 default { fail "$testname: bst #0x7, ... ($x)" }
481 -re ".* 149 0248 7D106777" { set x [expr $x+1]; exp_continue; }
482 -re ".* 150 024c 7F126777" { set x [expr $x+1]; exp_continue; }
483 -re ".* 151 0250 6A181234" { set x [expr $x+1]; exp_continue; }
484 -re ".* 151 6777" { set x [expr $x+1]; exp_continue; }
485 -re ".* 152 0256 6A381234" { set x [expr $x+1]; exp_continue; }
486 -re ".* 152 56786777" { set x [expr $x+1]; exp_continue; }
488 if [expr $x == 6] then {
489 pass "$testname: bstz #0x7, ..."
491 fail "$testname: bstz #0x7, ... ($x)"
494 default { fail "$testname: bstz #0x7, ... ($x)" }
499 -re ".* 154 025e 67F1" { set x [expr $x+1]; exp_continue; }
500 -re ".* 155 0260 7D1067F0" { set x [expr $x+1]; exp_continue; }
501 -re ".* 156 0264 7F1267F0" { set x [expr $x+1]; exp_continue; }
502 -re ".* 157 0268 6A181234" { set x [expr $x+1]; exp_continue; }
503 -re ".* 157 67F0" { set x [expr $x+1]; exp_continue; }
504 -re ".* 158 026e 6A381234" { set x [expr $x+1]; exp_continue; }
505 -re ".* 158 567867F0" { set x [expr $x+1]; exp_continue; }
507 if [expr $x == 7] then {
508 pass "$testname: bist #0x7, ..."
510 fail "$testname: bist #0x7, ... ($x)"
513 default { fail "$testname: bist #0x7, ... ($x)" }
518 -re ".* 160 0276 7D1067F7" { set x [expr $x+1]; exp_continue; }
519 -re ".* 161 027a 7F1267F7" { set x [expr $x+1]; exp_continue; }
520 -re ".* 162 027e 6A181234" { set x [expr $x+1]; exp_continue; }
521 -re ".* 162 67F7" { set x [expr $x+1]; exp_continue; }
522 -re ".* 163 0284 6A381234" { set x [expr $x+1]; exp_continue; }
523 -re ".* 163 567867F7" { set x [expr $x+1]; exp_continue; }
525 if [expr $x == 6] then {
526 pass "$testname: bistz #0x7, ..."
528 fail "$testname: bistz #0x7, ... ($x)"
531 default { fail "$testname: bistz #0x7, ... ($x)" }
536 -re ".* 165 028c 7C10F334" { set x [expr $x+1]; exp_continue; }
537 -re ".* 166 0290 7E12F334" { set x [expr $x+1]; exp_continue; }
538 -re ".* 167 0294 6A101234" { set x [expr $x+1]; exp_continue; }
539 -re ".* 167 F334" { set x [expr $x+1]; exp_continue; }
540 -re ".* 168 029a 6A301234" { set x [expr $x+1]; exp_continue; }
541 -re ".* 168 5678F334" { set x [expr $x+1]; exp_continue; }
543 if [expr $x == 6] then {
544 pass "$testname: bfld #0x34:8, ..., r3h"
546 fail "$testname: bfld #0x34:8, ..., r3h ($x)"
549 default { fail "$testname: bfld #0x34:8, ..., r3h ($x)" }
554 -re ".* 170 02a2 7D10F334" { set x [expr $x+1]; exp_continue; }
555 -re ".* 171 02a6 7F12F334" { set x [expr $x+1]; exp_continue; }
556 -re ".* 172 02aa 6A181234" { set x [expr $x+1]; exp_continue; }
557 -re ".* 172 F334" { set x [expr $x+1]; exp_continue; }
558 -re ".* 173 02b0 6A381234" { set x [expr $x+1]; exp_continue; }
559 -re ".* 173 5678F334" { set x [expr $x+1]; exp_continue; }
561 if [expr $x == 6] then {
562 pass "$testname: bfst r3h, #0x34:8, ..."
564 fail "$testname: bfst r3h, #0x34:8, ... ($x)"
567 default { fail "$testname: bfst r3h, #0x34:8, ... ($x)" }
570 # This was intended to do any cleanup necessary.
571 # It kinda looks like it isn't needed, but just
572 # in case, please keep it in for now.
578 if [istarget h8300*-*-elf] then {
579 # Test advanced h8300sx instructions.