summaryrefslogtreecommitdiff
path: root/gas/testsuite/gas/h8300/t13_otr.exp
blob: bb5c1b3334d962f91e440f1cbcefd54c9edbff54 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
#
# Some h8300sx tests -- t13_otr
#

proc do_t13_otr_test {} {
    set testname "t13_otr.s -- h8sx misc tests"

    gas_start "t13_otr.s" "-al"

    # Check each instruction bit pattern to verify it got assembled correctly.

    set x 0
    expect {
	-re ".*  11 1234 4000" { set x [expr $x+1]; exp_continue; }
	-re ".*  12 1236 4100" { set x [expr $x+1]; exp_continue; }
	-re ".*  13 1238 4200" { set x [expr $x+1]; exp_continue; }
	-re ".*  14 123a 4300" { set x [expr $x+1]; exp_continue; }
	-re ".*  15 123c 4400" { set x [expr $x+1]; exp_continue; }
	-re ".*  16 123e 4500" { set x [expr $x+1]; exp_continue; }
	-re ".*  17 1240 4600" { set x [expr $x+1]; exp_continue; }
	-re ".*  18 1242 4700" { set x [expr $x+1]; exp_continue; }
	-re ".*  19 1244 4800" { set x [expr $x+1]; exp_continue; }
	-re ".*  20 1246 4900" { set x [expr $x+1]; exp_continue; }
	-re ".*  21 1248 4A00" { set x [expr $x+1]; exp_continue; }
	-re ".*  22 124a 4B00" { set x [expr $x+1]; exp_continue; }
	-re ".*  23 124c 4C00" { set x [expr $x+1]; exp_continue; }
	-re ".*  24 124e 4D00" { set x [expr $x+1]; exp_continue; }
	-re ".*  25 1250 4E00" { set x [expr $x+1]; exp_continue; }
	-re ".*  26 1252 4F00" { set x [expr $x+1]; exp_continue; }
	-re ".*  27              " {
	    if [expr $x == 16] then {
		pass "$testname: b\[cc\] 0x12+.+2"
	    } else {
		fail "$testname: b\[cc\] 0x12+.+2 ($x)"
	    }
	}
        default	{ fail "$testname: b\[cc\] 0x12+.+2 ($x)" }
    }

    set x 0
    expect {
	-re ".*  28 1254 58000000" { set x [expr $x+1]; exp_continue; }
	-re ".*  29 1258 58100000" { set x [expr $x+1]; exp_continue; }
	-re ".*  30 125c 58200000" { set x [expr $x+1]; exp_continue; }
	-re ".*  31 1260 58300000" { set x [expr $x+1]; exp_continue; }
	-re ".*  32 1264 58400000" { set x [expr $x+1]; exp_continue; }
	-re ".*  33 1268 58500000" { set x [expr $x+1]; exp_continue; }
	-re ".*  34 126c 58600000" { set x [expr $x+1]; exp_continue; }
	-re ".*  35 1270 58700000" { set x [expr $x+1]; exp_continue; }
	-re ".*  36 1274 58800000" { set x [expr $x+1]; exp_continue; }
	-re ".*  37 1278 58900000" { set x [expr $x+1]; exp_continue; }
	-re ".*  38 127c 58A00000" { set x [expr $x+1]; exp_continue; }
	-re ".*  39 1280 58B00000" { set x [expr $x+1]; exp_continue; }
	-re ".*  40 1284 58C00000" { set x [expr $x+1]; exp_continue; }
	-re ".*  41 1288 58D00000" { set x [expr $x+1]; exp_continue; }
	-re ".*  42 128c 58E00000" { set x [expr $x+1]; exp_continue; }
	-re ".*  43 1290 58F00000" { set x [expr $x+1]; exp_continue; }
	-re ".*  44              " {
	    if [expr $x == 16] then {
		pass "$testname: b\[cc\] 0x1234+.+4"
	    } else {
		fail "$testname: b\[cc\] 0x1234+.+4 ($x)"
	    }
	}
        default	{ fail "$testname: b\[cc\] 0x1234+.+4 ($x)" }
    }

    set x 0
    expect {
	-re ".*  45 1294 4001" { set x [expr $x+1]; exp_continue; }
	-re ".*  46 1296 0000" { set x [expr $x+1]; exp_continue; }
	-re ".*  47              " {
	    if [expr $x == 2] then {
		pass "$testname: bra/s"
	    } else {
		fail "$testname: bra/s ($x)"
	    }
	}
        default	{ fail "$testname: bra/s ($x)" }
    }

    set x 0
    expect {
	-re ".*  48 1298 7C204700" { set x [expr $x+1]; exp_continue; }
	-re ".*  49 129c 7E9A4700" { set x [expr $x+1]; exp_continue; }
	-re ".*  50 12a0 6A101234" { set x [expr $x+1]; exp_continue; }
	-re ".*  50      4700" { set x [expr $x+1]; exp_continue; }
	-re ".*  51 12a6 6A301234" { set x [expr $x+1]; exp_continue; }
	-re ".*  51      56784700" { set x [expr $x+1]; exp_continue; }
	-re ".*  52 12ae 7C205870" { set x [expr $x+1]; exp_continue; }
	-re ".*  52      0000" { set x [expr $x+1]; exp_continue; }
	-re ".*  53 12b4 7E125870" { set x [expr $x+1]; exp_continue; }
	-re ".*  53      0000" { set x [expr $x+1]; exp_continue; }
	-re ".*  54 12ba 6A109ABC" { set x [expr $x+1]; exp_continue; }
	-re ".*  54      58700000" { set x [expr $x+1]; exp_continue; }
	-re ".*  55 12c2 6A301234" { set x [expr $x+1]; exp_continue; }
	-re ".*  55      56785870" { set x [expr $x+1]; exp_continue; }
	-re ".*  55      0000" { set x [expr $x+1]; exp_continue; }
	-re ".*  56              " {
	    if [expr $x == 15] then {
		pass "$testname: bra/bc #0x7, ..."
	    } else {
		fail "$testname: bra/bc #0x7, ... ($x)"
	    }
	}
        default	{ fail "$testname: bra/bc #0x7, ... ($x)" }
    }

    set x 0
    expect {
	-re ".*  57 12cc 7C204F00" { set x [expr $x+1]; exp_continue; }
	-re ".*  58 12d0 7E9A4F00" { set x [expr $x+1]; exp_continue; }
	-re ".*  59 12d4 6A101234" { set x [expr $x+1]; exp_continue; }
	-re ".*  59      4F00" { set x [expr $x+1]; exp_continue; }
	-re ".*  60 12da 6A301234" { set x [expr $x+1]; exp_continue; }
	-re ".*  60      56784F00" { set x [expr $x+1]; exp_continue; }
	-re ".*  61 12e2 7C2058F0" { set x [expr $x+1]; exp_continue; }
	-re ".*  61      0000" { set x [expr $x+1]; exp_continue; }
	-re ".*  62 12e8 7E1258F0" { set x [expr $x+1]; exp_continue; }
	-re ".*  62      0000" { set x [expr $x+1]; exp_continue; }
	-re ".*  63 12ee 6A109ABC" { set x [expr $x+1]; exp_continue; }
	-re ".*  63      58F00000" { set x [expr $x+1]; exp_continue; }
	-re ".*  64 12f6 6A301234" { set x [expr $x+1]; exp_continue; }
	-re ".*  64      567858F0" { set x [expr $x+1]; exp_continue; }
	-re ".*  64      0000" { set x [expr $x+1]; exp_continue; }
	-re ".*  65              " {
	    if [expr $x == 15] then {
		pass "$testname: bra/bs #0x7, ..."
	    } else {
		fail "$testname: bra/bs #0x7, ... ($x)"
	    }
	}
        default	{ fail "$testname: bra/bs #0x7, ... ($x)" }
    }

    set x 0
    expect {
	-re ".*  66 1300 7C205C70" { set x [expr $x+1]; exp_continue; }
	-re ".*  66      0000" { set x [expr $x+1]; exp_continue; }
	-re ".*  67 1306 7E125C70" { set x [expr $x+1]; exp_continue; }
	-re ".*  67      0000" { set x [expr $x+1]; exp_continue; }
	-re ".*  68 130c 6A109ABC" { set x [expr $x+1]; exp_continue; }
	-re ".*  68      5C700000" { set x [expr $x+1]; exp_continue; }
	-re ".*  69 1314 6A301234" { set x [expr $x+1]; exp_continue; }
	-re ".*  69      56785C70" { set x [expr $x+1]; exp_continue; }
	-re ".*  69      0000" { set x [expr $x+1]; exp_continue; }
	-re ".*  70              " {
	    if [expr $x == 9] then {
		pass "$testname: bsr/bc #0x7, ..."
	    } else {
		fail "$testname: bsr/bc #0x7, ... ($x)"
	    }
	}
        default	{ fail "$testname: bsr/bc #0x7, ... ($x)" }
    }

    set x 0
    expect {
	-re ".*  71 131e 7C205CF0" { set x [expr $x+1]; exp_continue; }
	-re ".*  71      0000" { set x [expr $x+1]; exp_continue; }
	-re ".*  72 1324 7E125CF0" { set x [expr $x+1]; exp_continue; }
	-re ".*  72      0000" { set x [expr $x+1]; exp_continue; }
	-re ".*  73 132a 6A109ABC" { set x [expr $x+1]; exp_continue; }
	-re ".*  73      5CF00000" { set x [expr $x+1]; exp_continue; }
	-re ".*  74 1332 6A301234" { set x [expr $x+1]; exp_continue; }
	-re ".*  74      56785CF0" { set x [expr $x+1]; exp_continue; }
	-re ".*  74      0000" { set x [expr $x+1]; exp_continue; }
	-re ".*  75              " {
	    if [expr $x == 9] then {
		pass "$testname: bsr/bs #0x7, ..."
	    } else {
		fail "$testname: bsr/bs #0x7, ... ($x)"
	    }
	}
        default	{ fail "$testname: bsr/bs #0x7, ... ($x)" }
    }

    set x 0
    expect {
	-re ".*  76 133c 5925" { set x [expr $x+1]; exp_continue; }
	-re ".*  77 133e 5926" { set x [expr $x+1]; exp_continue; }
	-re ".*  78 1340 5927" { set x [expr $x+1]; exp_continue; }
	-re ".*  79              " {
	    if [expr $x == 3] then {
		pass "$testname: bra ..."
	    } else {
		fail "$testname: bra ... ($x)"
	    }
	}
        default	{ fail "$testname: bra ... ($x)" }
    }

    set x 0
    expect {
	-re ".*  80 1342 5500" { set x [expr $x+1]; exp_continue; }
	-re ".*  81 1344 5C000000" { set x [expr $x+1]; exp_continue; }
	-re ".*  82 1348 5D25" { set x [expr $x+1]; exp_continue; }
	-re ".*  83 134a 5D26" { set x [expr $x+1]; exp_continue; }
	-re ".*  84 134c 5D27" { set x [expr $x+1]; exp_continue; }
	-re ".*  85              " {
	    if [expr $x == 5] then {
		pass "$testname: bsr ..."
	    } else {
		fail "$testname: bsr ... ($x)"
	    }
	}
        default	{ fail "$testname: bsr ... ($x)" }
    }

    set x 0
    expect {
	-re ".*  86 134e 5920" { set x [expr $x+1]; exp_continue; }
	-re ".*  87 1350 5A000000" { set x [expr $x+1]; exp_continue; }
	-re ".*  88 1354 59080000" { set x [expr $x+1]; exp_continue; }
	-re ".*  88      0000" { set x [expr $x+1]; exp_continue; }
	-re ".*  89 135a 5B00" { set x [expr $x+1]; exp_continue; }
	-re ".*  90 135c 5980" { set x [expr $x+1]; exp_continue; }
	-re ".*  91              " {
	    if [expr $x == 6] then {
		pass "$testname: jmp ..."
	    } else {
		fail "$testname: jmp ... ($x)"
	    }
	}
        default	{ fail "$testname: jmp ... ($x)" }
    }

    set x 0
    expect {
	-re ".*  92 135e 5D20" { set x [expr $x+1]; exp_continue; }
	-re ".*  93 1360 5E000000" { set x [expr $x+1]; exp_continue; }
	-re ".*  94 1364 5D080000" { set x [expr $x+1]; exp_continue; }
	-re ".*  94      0000" { set x [expr $x+1]; exp_continue; }
	-re ".*  95 136a 5F00" { set x [expr $x+1]; exp_continue; }
	-re ".*  96 136c 5D00" { set x [expr $x+1]; exp_continue; }
	-re ".*  97              " {
	    if [expr $x == 6] then {
		pass "$testname: jsr ..."
	    } else {
		fail "$testname: jsr ... ($x)"
	    }
	}
        default	{ fail "$testname: jsr ... ($x)" }
    }

    set x 0
    expect {
	-re ".*  98 136e 5470" { set x [expr $x+1]; exp_continue; }
	-re ".*  99 1370 5403" { set x [expr $x+1]; exp_continue; }
	-re ".* 100 1372 5412" { set x [expr $x+1]; exp_continue; }
	-re ".* 101 1374 5424" { set x [expr $x+1]; exp_continue; }
	-re ".* 102 1376 5436" { set x [expr $x+1]; exp_continue; }
	-re ".* 103              " {
	    if [expr $x == 5] then {
		pass "$testname: rts\[/l\]"
	    } else {
		fail "$testname: rts\[/l\] ($x)"
	    }
	}
        default	{ fail "$testname: rts\[/l\] ($x)" }
    }

    set x 0
    expect {
	-re ".* 104 1378 5730" { set x [expr $x+1]; exp_continue; }
	-re ".* 105              " {
	    if [expr $x == 1] then {
		pass "$testname: trapa #0x3"
	    } else {
		fail "$testname: trapa #0x3 ($x)"
	    }
	}
        default	{ fail "$testname: trapa #0x3 ($x)" }
    }

    set x 0
    expect {
	-re ".* 106 137a 5670" { set x [expr $x+1]; exp_continue; }
	-re ".* 107 137c 5603" { set x [expr $x+1]; exp_continue; }
	-re ".* 108 137e 5612" { set x [expr $x+1]; exp_continue; }
	-re ".* 109 1380 5624" { set x [expr $x+1]; exp_continue; }
	-re ".* 110 1382 5636" { set x [expr $x+1]; exp_continue; }
	-re ".* 111              " {
	    if [expr $x == 5] then {
		pass "$testname: rte\[/l\]"
	    } else {
		fail "$testname: rte\[/l\] ($x)"
	    }
	}
        default	{ fail "$testname: rte\[/l\] ($x)" }
    }

    set x 0
    expect {
	-re ".* 112 1384 0712" { set x [expr $x+1]; exp_continue; }
	-re ".* 113 1386 0303" { set x [expr $x+1]; exp_continue; }
	-re ".* 114 1388 01406930" { set x [expr $x+1]; exp_continue; }
	-re ".* 115 138c 01406D30" { set x [expr $x+1]; exp_continue; }
	-re ".* 116 1390 01406F30" { set x [expr $x+1]; exp_continue; }
	-re ".* 116      1234" { set x [expr $x+1]; exp_continue; }
	-re ".* 117 1396 01407830" { set x [expr $x+1]; exp_continue; }
	-re ".* 117      6B201234" { set x [expr $x+1]; exp_continue; }
	-re ".* 117      5678" { set x [expr $x+1]; exp_continue; }
	-re ".* 118 13a0 01406B00" { set x [expr $x+1]; exp_continue; }
	-re ".* 118      1234" { set x [expr $x+1]; exp_continue; }
	-re ".* 119 13a6 01406B20" { set x [expr $x+1]; exp_continue; }
	-re ".* 119      12345678" { set x [expr $x+1]; exp_continue; }
	-re ".* 120              " {
	    if [expr $x == 13] then {
		pass "$testname: ldc.w ..., ccr"
	    } else {
		fail "$testname: ldc.w ..., ccr ($x)"
	    }
	}
        default	{ fail "$testname: ldc.w ..., ccr ($x)" }
    }

    set x 0
    expect {
	-re ".* 121 13ae 01410712" { set x [expr $x+1]; exp_continue; }
	-re ".* 122 13b2 0313" { set x [expr $x+1]; exp_continue; }
	-re ".* 123 13b4 01416930" { set x [expr $x+1]; exp_continue; }
	-re ".* 124 13b8 01416D30" { set x [expr $x+1]; exp_continue; }
	-re ".* 125 13bc 01416F30" { set x [expr $x+1]; exp_continue; }
	-re ".* 125      1234" { set x [expr $x+1]; exp_continue; }
	-re ".* 126 13c2 01417830" { set x [expr $x+1]; exp_continue; }
	-re ".* 126      6B201234" { set x [expr $x+1]; exp_continue; }
	-re ".* 126      5678" { set x [expr $x+1]; exp_continue; }
	-re ".* 127 13cc 01416B00" { set x [expr $x+1]; exp_continue; }
	-re ".* 127      1234" { set x [expr $x+1]; exp_continue; }
	-re ".* 128 13d2 01416B20" { set x [expr $x+1]; exp_continue; }
	-re ".* 128      12345678" { set x [expr $x+1]; exp_continue; }
	-re ".* 129              " {
	    if [expr $x == 13] then {
		pass "$testname: ldc.w ..., exr"
	    } else {
		fail "$testname: ldc.w ..., exr ($x)"
	    }
	}
        default	{ fail "$testname: ldc.w ..., exr ($x)" }
    }

    set x 0
    expect {
	-re ".* 130 13da 0201" { set x [expr $x+1]; exp_continue; }
	-re ".* 131 13dc 01406990" { set x [expr $x+1]; exp_continue; }
	-re ".* 132 13e0 01406D90" { set x [expr $x+1]; exp_continue; }
	-re ".* 133 13e4 01406F90" { set x [expr $x+1]; exp_continue; }
	-re ".* 133      1234" { set x [expr $x+1]; exp_continue; }
	-re ".* 134 13ea 01407810" { set x [expr $x+1]; exp_continue; }
	-re ".* 134      6BA01234" { set x [expr $x+1]; exp_continue; }
	-re ".* 134      5678" { set x [expr $x+1]; exp_continue; }
	-re ".* 135 13f4 01406B80" { set x [expr $x+1]; exp_continue; }
	-re ".* 135      1234" { set x [expr $x+1]; exp_continue; }
	-re ".* 136 13fa 01406BA0" { set x [expr $x+1]; exp_continue; }
	-re ".* 136      12345678" { set x [expr $x+1]; exp_continue; }
	-re ".* 137              " {
	    if [expr $x == 12] then {
		pass "$testname: stc.w ccr, ..."
	    } else {
		fail "$testname: stc.w ccr, ... ($x)"
	    }
	}
        default	{ fail "$testname: stc.w ccr, ... ($x)" }
    }

    set x 0
    expect {
	-re ".* 138 1402 0211" { set x [expr $x+1]; exp_continue; }
	-re ".* 139 1404 01416990" { set x [expr $x+1]; exp_continue; }
	-re ".* 140 1408 01416D90" { set x [expr $x+1]; exp_continue; }
	-re ".* 141 140c 01416F90" { set x [expr $x+1]; exp_continue; }
	-re ".* 141      1234" { set x [expr $x+1]; exp_continue; }
	-re ".* 142 1412 01417810" { set x [expr $x+1]; exp_continue; }
	-re ".* 142      6BA01234" { set x [expr $x+1]; exp_continue; }
	-re ".* 142      5678" { set x [expr $x+1]; exp_continue; }
	-re ".* 143 141c 01416B80" { set x [expr $x+1]; exp_continue; }
	-re ".* 143      1234" { set x [expr $x+1]; exp_continue; }
	-re ".* 144 1422 01416BA0" { set x [expr $x+1]; exp_continue; }
	-re ".* 144      12345678" { set x [expr $x+1]; exp_continue; }
	-re ".* 145              " {
	    if [expr $x == 12] then {
		pass "$testname: stc.w exr, ..."
	    } else {
		fail "$testname: stc.w exr, ... ($x)"
	    }
	}
        default	{ fail "$testname: stc.w exr, ... ($x)" }
    }

    set x 0
    expect {
	-re ".* 146 142a 0412" { set x [expr $x+1]; exp_continue; }
	-re ".* 147 142c 01410412" { set x [expr $x+1]; exp_continue; }
	-re ".* 148              " {
	    if [expr $x == 2] then {
		pass "$testname: orc.b #0x12:8, ..."
	    } else {
		fail "$testname: orc.b #0x12:8, ... ($x)"
	    }
	}
        default	{ fail "$testname: orc.b #0x12:8, ... ($x)" }
    }

    set x 0
    expect {
	-re ".* 149 1430 0512" { set x [expr $x+1]; exp_continue; }
	-re ".* 150 1432 01410512" { set x [expr $x+1]; exp_continue; }
	-re ".* 151              " {
	    if [expr $x == 2] then {
		pass "$testname: xorc.b #0x12:8, ..."
	    } else {
		fail "$testname: xorc.b #0x12:8, ... ($x)"
	    }
	}
        default	{ fail "$testname: xorc.b #0x12:8, ... ($x)" }
    }

    set x 0
    expect {
	-re ".* 152 1436 0612" { set x [expr $x+1]; exp_continue; }
	-re ".* 153 1438 01410612" { set x [expr $x+1]; exp_continue; }
	-re ".* 154              " {
	    if [expr $x == 2] then {
		pass "$testname: andc.b #0x12:8, ..."
	    } else {
		fail "$testname: andc.b #0x12:8, ... ($x)"
	    }
	}
        default	{ fail "$testname: andc.b #0x12:8, ... ($x)" }
    }

    set x 0
    expect {
	-re ".* 155 143c 0180" { set x [expr $x+1]; exp_continue; }
	-re ".* 156              " {
	    if [expr $x == 1] then {
		pass "$testname: sleep"
	    } else {
		fail "$testname: sleep ($x)"
	    }
	}
        default	{ fail "$testname: sleep ($x)" }
    }

    set x 0
    expect {
	-re ".* 157 143e 0000" { set x [expr $x+1]; exp_continue; }
	-re ".* 158              " {
	    if [expr $x == 1] then {
		pass "$testname: nop"
	    } else {
		fail "$testname: nop ($x)"
	    }
	}
        default	{ fail "$testname: nop ($x)" }
    }

    # This was intended to do any cleanup necessary.
    # It kinda looks like it isn't needed, but just
    # in case, please keep it in for now.

    gas_finish

}

if [istarget h8300*-*-elf] then {
    # Test advanced h8300sx instructions.
    do_t13_otr_test
}