8744736d044ae8d65dc167245e7a148c2795a858
[deliverable/binutils-gdb.git] / gas / testsuite / gas / xc16x / xc16x.exp
1 #
2 # Some xc16x tests
3 #
4 proc do_xc16x_add {} {
5 set testname "add.s: xc16x add word tests"
6 set x 0
7
8 gas_start "add.s" "-al"
9
10 # Check each instruction bit pattern to verify it got
11 # assembled correctly.
12 while 1 {
13 expect {
14 -re " +\[0-9\]+ 0000 0001\[^\n\]*\n" { set x [expr $x+1] }
15 -re " +\[0-9\]+ 0002 0809\[^\n\]*\n" { set x [expr $x+1] }
16 -re " +\[0-9\]+ 0004 080D\[^\n\]*\n" { set x [expr $x+1] }
17 -re " +\[0-9\]+ 0006 0803\[^\n\]*\n" { set x [expr $x+1] }
18 -re " +\[0-9\]+ 0008 06F0D204\[^\n\]*\n" { set x [expr $x+1] }
19 -re " +\[0-9\]+ 000c 02F0EDFF\[^\n\]*\n" { set x [expr $x+1] }
20 -re " +\[0-9\]+ 0010 04F0EDFF\[^\n\]*\n" { set x [expr $x+1] }
21 timeout { perror "timeout\n"; break }
22 eof { break }
23 }
24 }
25
26 # This was intended to do any cleanup necessary. It kinda looks like it
27 # isn't needed, but just in case, please keep it in for now.
28 gas_finish
29
30 # Did we find what we were looking for? If not, flunk it.
31 if [expr $x == 7] then { pass $testname } else { fail $testname }
32 }
33
34 proc do_xc16x_addb {} {
35 set testname "addb.s: xc16x add byte tests"
36 set x 0
37
38 gas_start "addb.s" "-al"
39
40 # Check each instruction bit pattern to verify it got
41 # assembled correctly.
42 while 1 {
43 expect {
44 -re " +\[0-9\]+ 0000 0102\[^\n\]*\n" { set x [expr $x+1] }
45 -re " +\[0-9\]+ 0002 0909\[^\n\]*\n" { set x [expr $x+1] }
46 -re " +\[0-9\]+ 0004 090D\[^\n\]*\n" { set x [expr $x+1] }
47 -re " +\[0-9\]+ 0006 0902\[^\n\]*\n" { set x [expr $x+1] }
48 -re " +\[0-9\]+ 0008 07F03300\[^\n\]*\n" { set x [expr $x+1] }
49 -re " +\[0-9\]+ 000c 03F08723\[^\n\]*\n" { set x [expr $x+1] }
50 -re " +\[0-9\]+ 0010 05F08723\[^\n\]*\n" { set x [expr $x+1] }
51 timeout { perror "timeout\n"; break }
52 eof { break }
53 }
54 }
55
56 # This was intended to do any cleanup necessary. It kinda looks like it
57 # isn't needed, but just in case, please keep it in for now.
58 gas_finish
59
60 # Did we find what we were looking for? If not, flunk it.
61 if [expr $x == 7] then { pass $testname } else { fail $testname }
62 }
63
64 proc do_xc16x_addc {} {
65 set testname "addc.s: xc16x add with carry tests"
66 set x 0
67
68 gas_start "addc.s" "-al"
69
70 # Check each instruction bit pattern to verify it got
71 # assembled correctly.
72 while 1 {
73 expect {
74 -re " +\[0-9\]+ 0000 1001\[^\n\]*\n" { set x [expr $x+1] }
75 -re " +\[0-9\]+ 0002 1809\[^\n\]*\n" { set x [expr $x+1] }
76 -re " +\[0-9\]+ 0004 180D\[^\n\]*\n" { set x [expr $x+1] }
77 -re " +\[0-9\]+ 0006 16F03400\[^\n\]*\n" { set x [expr $x+1] }
78 -re " +\[0-9\]+ 000a 16F05634\[^\n\]*\n" { set x [expr $x+1] }
79 -re " +\[0-9\]+ 000e 12F08723\[^\n\]*\n" { set x [expr $x+1] }
80 -re " +\[0-9\]+ 0012 14F08723\[^\n\]*\n" { set x [expr $x+1] }
81 timeout { perror "timeout\n"; break }
82 eof { break }
83 }
84 }
85
86 # This was intended to do any cleanup necessary. It kinda looks like it
87 # isn't needed, but just in case, please keep it in for now.
88 gas_finish
89
90 # Did we find what we were looking for? If not, flunk it.
91 if [expr $x == 7] then { pass $testname } else { fail $testname }
92 }
93
94 proc do_xc16x_addcb {} {
95 set testname "addcb.s: xc16x add byte with carry tests"
96 set x 0
97
98 gas_start "addcb.s" "-al"
99
100 # Check each instruction bit pattern to verify it got
101 # assembled correctly.
102 while 1 {
103 expect {
104 -re " +\[0-9\]+ 0000 1102\[^\n\]*\n" { set x [expr $x+1] }
105 -re " +\[0-9\]+ 0002 1909\[^\n\]*\n" { set x [expr $x+1] }
106 -re " +\[0-9\]+ 0004 190D\[^\n\]*\n" { set x [expr $x+1] }
107 -re " +\[0-9\]+ 0006 17F00200\[^\n\]*\n" { set x [expr $x+1] }
108 -re " +\[0-9\]+ 000a 17F02300\[^\n\]*\n" { set x [expr $x+1] }
109 -re " +\[0-9\]+ 000e 15F08723\[^\n\]*\n" { set x [expr $x+1] }
110 timeout { perror "timeout\n"; break }
111 eof { break }
112 }
113 }
114
115 # This was intended to do any cleanup necessary. It kinda looks like it
116 # isn't needed, but just in case, please keep it in for now.
117 gas_finish
118
119 # Did we find what we were looking for? If not, flunk it.
120 if [expr $x == 6] then { pass $testname } else { fail $testname }
121 }
122
123 proc do_xc16x_sub {} {
124 set testname "sub.s: xc16x sub tests"
125 set x 0
126
127 gas_start "sub.s" "-al"
128
129 # Check each instruction bit pattern to verify it got
130 # assembled correctly.
131 while 1 {
132 expect {
133 -re " +\[0-9\]+ 0000 2001\[^\n\]*\n" { set x [expr $x+1] }
134 -re " +\[0-9\]+ 0002 2809\[^\n\]*\n" { set x [expr $x+1] }
135 -re " +\[0-9\]+ 0004 280D\[^\n\]*\n" { set x [expr $x+1] }
136 -re " +\[0-9\]+ 0006 2801\[^\n\]*\n" { set x [expr $x+1] }
137 -re " +\[0-9\]+ 0008 26F04376\[^\n\]*\n" { set x [expr $x+1] }
138 -re " +\[0-9\]+ 000c 22F04376\[^\n\]*\n" { set x [expr $x+1] }
139 -re " +\[0-9\]+ 0010 24F04376\[^\n\]*\n" { set x [expr $x+1] }
140 timeout { perror "timeout\n"; break }
141 eof { break }
142 }
143 }
144
145 # This was intended to do any cleanup necessary. It kinda looks like it
146 # isn't needed, but just in case, please keep it in for now.
147 gas_finish
148
149 # Did we find what we were looking for? If not, flunk it.
150 if [expr $x == 7] then { pass $testname } else { fail $testname }
151 }
152
153 proc do_xc16x_subb {} {
154 set testname "subb.s: xc16x sub byte tests"
155 set x 0
156
157 gas_start "subb.s" "-al"
158
159 # Check each instruction bit pattern to verify it got
160 # assembled correctly.
161 while 1 {
162 expect {
163 -re " +\[0-9\]+ 0000 2102\[^\n\]*\n" { set x [expr $x+1] }
164 -re " +\[0-9\]+ 0002 2909\[^\n\]*\n" { set x [expr $x+1] }
165 -re " +\[0-9\]+ 0004 290D\[^\n\]*\n" { set x [expr $x+1] }
166 -re " +\[0-9\]+ 0006 2901\[^\n\]*\n" { set x [expr $x+1] }
167 -re " +\[0-9\]+ 0008 27F04300\[^\n\]*\n" { set x [expr $x+1] }
168 -re " +\[0-9\]+ 000c 23F04376\[^\n\]*\n" { set x [expr $x+1] }
169 -re " +\[0-9\]+ 0010 25F04376\[^\n\]*\n" { set x [expr $x+1] }
170 timeout { perror "timeout\n"; break }
171 eof { break }
172 }
173 }
174
175 # This was intended to do any cleanup necessary. It kinda looks like it
176 # isn't needed, but just in case, please keep it in for now.
177 gas_finish
178
179 # Did we find what we were looking for? If not, flunk it.
180 if [expr $x == 7] then { pass $testname } else { fail $testname }
181 }
182
183 proc do_xc16x_subc {} {
184 set testname "subc.s: xc16x sub with carry tests"
185 set x 0
186
187 gas_start "subc.s" "-al"
188
189 # Check each instruction bit pattern to verify it got
190 # assembled correctly.
191 while 1 {
192 expect {
193 -re " +\[0-9\]+ 0000 3001\[^\n\]*\n" { set x [expr $x+1] }
194 -re " +\[0-9\]+ 0002 3809\[^\n\]*\n" { set x [expr $x+1] }
195 -re " +\[0-9\]+ 0004 380D\[^\n\]*\n" { set x [expr $x+1] }
196 -re " +\[0-9\]+ 0006 3802\[^\n\]*\n" { set x [expr $x+1] }
197 -re " +\[0-9\]+ 0008 36F04300\[^\n\]*\n" { set x [expr $x+1] }
198 -re " +\[0-9\]+ 000c 32F04376\[^\n\]*\n" { set x [expr $x+1] }
199 -re " +\[0-9\]+ 0010 34F04376\[^\n\]*\n" { set x [expr $x+1] }
200 timeout { perror "timeout\n"; break }
201 eof { break }
202 }
203 }
204
205 # This was intended to do any cleanup necessary. It kinda looks like it
206 # isn't needed, but just in case, please keep it in for now.
207 gas_finish
208
209 # Did we find what we were looking for? If not, flunk it.
210 if [expr $x == 7] then { pass $testname } else { fail $testname }
211 }
212
213 proc do_xc16x_subcb {} {
214 set testname "subcb.s: xc16x sub byte with carry tests"
215 set x 0
216
217 gas_start "subcb.s" "-al"
218
219 # Check each instruction bit pattern to verify it got
220 # assembled correctly.
221 while 1 {
222 expect {
223 -re " +\[0-9\]+ 0000 3102\[^\n\]*\n" { set x [expr $x+1] }
224 -re " +\[0-9\]+ 0002 3909\[^\n\]*\n" { set x [expr $x+1] }
225 -re " +\[0-9\]+ 0004 390D\[^\n\]*\n" { set x [expr $x+1] }
226 -re " +\[0-9\]+ 0006 3902\[^\n\]*\n" { set x [expr $x+1] }
227 -re " +\[0-9\]+ 0008 37F04300\[^\n\]*\n" { set x [expr $x+1] }
228 -re " +\[0-9\]+ 000c 33F04376\[^\n\]*\n" { set x [expr $x+1] }
229 -re " +\[0-9\]+ 0010 35F04376\[^\n\]*\n" { set x [expr $x+1] }
230 timeout { perror "timeout\n"; break }
231 eof { break }
232 }
233 }
234
235 # This was intended to do any cleanup necessary. It kinda looks like it
236 # isn't needed, but just in case, please keep it in for now.
237 gas_finish
238
239 # Did we find what we were looking for? If not, flunk it.
240 if [expr $x == 7] then { pass $testname } else { fail $testname }
241 }
242
243 proc do_xc16x_and {} {
244 set testname "and.s: xc16x and tests"
245 set x 0
246
247 gas_start "and.s" "-al"
248
249 # Check each instruction bit pattern to verify it got
250 # assembled correctly.
251 while 1 {
252 expect {
253 -re " +\[0-9\]+ 0000 6001\[^\n\]*\n" { set x [expr $x+1] }
254 -re " +\[0-9\]+ 0002 6809\[^\n\]*\n" { set x [expr $x+1] }
255 -re " +\[0-9\]+ 0004 680D\[^\n\]*\n" { set x [expr $x+1] }
256 -re " +\[0-9\]+ 0006 6803\[^\n\]*\n" { set x [expr $x+1] }
257 -re " +\[0-9\]+ 0008 66F0BEFC\[^\n\]*\n" { set x [expr $x+1] }
258 -re " +\[0-9\]+ 000c 62F03002\[^\n\]*\n" { set x [expr $x+1] }
259 -re " +\[0-9\]+ 0010 64F02003\[^\n\]*\n" { set x [expr $x+1] }
260 timeout { perror "timeout\n"; break }
261 eof { break }
262 }
263 }
264
265 # This was intended to do any cleanup necessary. It kinda looks like it
266 # isn't needed, but just in case, please keep it in for now.
267 gas_finish
268
269 # Did we find what we were looking for? If not, flunk it.
270 if [expr $x == 7] then { pass $testname } else { fail $testname }
271 }
272
273 proc do_xc16x_andb {} {
274 set testname "andb.s: xc16x and byte tests"
275 set x 0
276
277 gas_start "andb.s" "-al"
278
279 # Check each instruction bit pattern to verify it got
280 # assembled correctly.
281 while 1 {
282 expect {
283 -re " +\[0-9\]+ 0000 6102\[^\n\]*\n" { set x [expr $x+1] }
284 -re " +\[0-9\]+ 0002 6909\[^\n\]*\n" { set x [expr $x+1] }
285 -re " +\[0-9\]+ 0004 690D\[^\n\]*\n" { set x [expr $x+1] }
286 -re " +\[0-9\]+ 0006 6903\[^\n\]*\n" { set x [expr $x+1] }
287 -re " +\[0-9\]+ 0008 67F0BE00\[^\n\]*\n" { set x [expr $x+1] }
288 -re " +\[0-9\]+ 000c 63F03002\[^\n\]*\n" { set x [expr $x+1] }
289 -re " +\[0-9\]+ 0010 65F02003\[^\n\]*\n" { set x [expr $x+1] }
290 timeout { perror "timeout\n"; break }
291 eof { break }
292 }
293 }
294
295 # This was intended to do any cleanup necessary. It kinda looks like it
296 # isn't needed, but just in case, please keep it in for now.
297 gas_finish
298
299 # Did we find what we were looking for? If not, flunk it.
300 if [expr $x == 7] then { pass $testname } else { fail $testname }
301 }
302
303 proc do_xc16x_or {} {
304 set testname "or.s: xc16x or tests"
305 set x 0
306
307 gas_start "or.s" "-al"
308
309 # Check each instruction bit pattern to verify it got
310 # assembled correctly.
311 while 1 {
312 expect {
313 -re " +\[0-9\]+ 0000 7001\[^\n\]*\n" { set x [expr $x+1] }
314 -re " +\[0-9\]+ 0002 7809\[^\n\]*\n" { set x [expr $x+1] }
315 -re " +\[0-9\]+ 0004 780D\[^\n\]*\n" { set x [expr $x+1] }
316 -re " +\[0-9\]+ 0006 7803\[^\n\]*\n" { set x [expr $x+1] }
317 -re " +\[0-9\]+ 0008 76F03402\[^\n\]*\n" { set x [expr $x+1] }
318 -re " +\[0-9\]+ 000c 72F03645\[^\n\]*\n" { set x [expr $x+1] }
319 -re " +\[0-9\]+ 0010 74F03645\[^\n\]*\n" { set x [expr $x+1] }
320 timeout { perror "timeout\n"; break }
321 eof { break }
322 }
323 }
324
325 # This was intended to do any cleanup necessary. It kinda looks like it
326 # isn't needed, but just in case, please keep it in for now.
327 gas_finish
328
329 # Did we find what we were looking for? If not, flunk it.
330 if [expr $x == 7] then { pass $testname } else { fail $testname }
331 }
332
333 proc do_xc16x_xor {} {
334 set testname "xor.s: xc16x xor tests"
335 set x 0
336
337 gas_start "xor.s" "-al"
338
339 # Check each instruction bit pattern to verify it got
340 # assembled correctly.
341 while 1 {
342 expect {
343 -re " +\[0-9\]+ 0000 5001\[^\n\]*\n" { set x [expr $x+1] }
344 -re " +\[0-9\]+ 0002 5809\[^\n\]*\n" { set x [expr $x+1] }
345 -re " +\[0-9\]+ 0004 580D\[^\n\]*\n" { set x [expr $x+1] }
346 -re " +\[0-9\]+ 0006 5803\[^\n\]*\n" { set x [expr $x+1] }
347 -re " +\[0-9\]+ 0008 56F03402\[^\n\]*\n" { set x [expr $x+1] }
348 -re " +\[0-9\]+ 000c 52F03402\[^\n\]*\n" { set x [expr $x+1] }
349 -re " +\[0-9\]+ 0010 54F03402\[^\n\]*\n" { set x [expr $x+1] }
350 timeout { perror "timeout\n"; break }
351 eof { break }
352 }
353 }
354
355 # This was intended to do any cleanup necessary. It kinda looks like it
356 # isn't needed, but just in case, please keep it in for now.
357 gas_finish
358
359 # Did we find what we were looking for? If not, flunk it.
360 if [expr $x == 7] then { pass $testname } else { fail $testname }
361 }
362
363 proc do_xc16x_xorb {} {
364 set testname "xorb.s: xc16x xorb tests"
365 set x 0
366
367 gas_start "xorb.s" "-al"
368
369 # Check each instruction bit pattern to verify it got
370 # assembled correctly.
371 while 1 {
372 expect {
373 -re " +\[0-9\]+ 0000 5102\[^\n\]*\n" { set x [expr $x+1] }
374 -re " +\[0-9\]+ 0002 5909\[^\n\]*\n" { set x [expr $x+1] }
375 -re " +\[0-9\]+ 0004 590D\[^\n\]*\n" { set x [expr $x+1] }
376 -re " +\[0-9\]+ 0006 5903\[^\n\]*\n" { set x [expr $x+1] }
377 -re " +\[0-9\]+ 0008 57F03400\[^\n\]*\n" { set x [expr $x+1] }
378 -re " +\[0-9\]+ 000c 53F00324\[^\n\]*\n" { set x [expr $x+1] }
379 -re " +\[0-9\]+ 0010 55F00324\[^\n\]*\n" { set x [expr $x+1] }
380 timeout { perror "timeout\n"; break }
381 eof { break }
382 }
383 }
384
385 # This was intended to do any cleanup necessary. It kinda looks like it
386 # isn't needed, but just in case, please keep it in for now.
387 gas_finish
388
389 # Did we find what we were looking for? If not, flunk it.
390 if [expr $x == 7] then { pass $testname } else { fail $testname }
391
392 }
393
394 proc do_xc16x_mov {} {
395 set testname "mov.s: xc16x mov tests"
396 set x 0
397
398 gas_start "mov.s" "-al"
399
400 # Check each instruction bit pattern to verify it got
401 # assembled correctly.
402 while 1 {
403 expect {
404 -re " +\[0-9\]+ 0000 F001\[^\n\]*\n" { set x [expr $x+1] }
405 -re " +\[0-9\]+ 0002 E6F00200\[^\n\]*\n" { set x [expr $x+1] }
406 -re " +\[0-9\]+ 0006 E6F0BEFC\[^\n\]*\n" { set x [expr $x+1] }
407 -re " +\[0-9\]+ 000a A801\[^\n\]*\n" { set x [expr $x+1] }
408 -re " +\[0-9\]+ 000c 9801\[^\n\]*\n" { set x [expr $x+1] }
409 -re " +\[0-9\]+ 000e B810\[^\n\]*\n" { set x [expr $x+1] }
410 -re " +\[0-9\]+ 0010 8810\[^\n\]*\n" { set x [expr $x+1] }
411 -re " +\[0-9\]+ 0012 C801\[^\n\]*\n" { set x [expr $x+1] }
412 -re " +\[0-9\]+ 0014 D801\[^\n\]*\n" { set x [expr $x+1] }
413 -re " +\[0-9\]+ 0016 E801\[^\n\]*\n" { set x [expr $x+1] }
414 -re " +\[0-9\]+ 0018 D400CBFF\[^\n\]*\n" { set x [expr $x+1] }
415 -re " +\[0-9\]+ 001c C400CBFF\[^\n\]*\n" { set x [expr $x+1] }
416 -re " +\[0-9\]+ 0020 8400CBFF\[^\n\]*\n" { set x [expr $x+1] }
417 -re " +\[0-9\]+ 0024 9400CBFF\[^\n\]*\n" { set x [expr $x+1] }
418 -re " +\[0-9\]+ 0028 F2F0CBFF\[^\n\]*\n" { set x [expr $x+1] }
419 -re " +\[0-9\]+ 002c F6F0CBFF\[^\n\]*\n" { set x [expr $x+1] }
420 timeout { perror "timeout\n"; break }
421 eof { break }
422 }
423 }
424
425 # This was intended to do any cleanup necessary. It kinda looks like it
426 # isn't needed, but just in case, please keep it in for now.
427 gas_finish
428
429 # Did we find what we were looking for? If not, flunk it.
430 if [expr $x == 16] then { pass $testname } else { fail $testname }
431 }
432
433 proc do_xc16x_movb {} {
434 set testname "movb.s: xc16x movb tests"
435 set x 0
436
437 gas_start "movb.s" "-al"
438
439 # Check each instruction bit pattern to verify it got
440 # assembled correctly.
441 while 1 {
442 expect {
443 -re " +\[0-9\]+ 0000 F3F00000\[^\n\]*\n" { set x [expr $x+1] }
444 -re " +\[0-9\]+ 0004 E7F01200\[^\n\]*\n" { set x [expr $x+1] }
445 -re " +\[0-9\]+ 0008 B4020000\[^\n\]*\n" { set x [expr $x+1] }
446 -re " +\[0-9\]+ 000c 9902\[^\n\]*\n" { set x [expr $x+1] }
447 -re " +\[0-9\]+ 000e 8902\[^\n\]*\n" { set x [expr $x+1] }
448 -re " +\[0-9\]+ 0010 E932\[^\n\]*\n" { set x [expr $x+1] }
449 -re " +\[0-9\]+ 0012 C932\[^\n\]*\n" { set x [expr $x+1] }
450 -re " +\[0-9\]+ 0014 D923\[^\n\]*\n" { set x [expr $x+1] }
451 -re " +\[0-9\]+ 0016 E923\[^\n\]*\n" { set x [expr $x+1] }
452 -re " +\[0-9\]+ 0018 F4033412\[^\n\]*\n" { set x [expr $x+1] }
453 -re " +\[0-9\]+ 001c E4033412\[^\n\]*\n" { set x [expr $x+1] }
454 -re " +\[0-9\]+ 0020 A4033412\[^\n\]*\n" { set x [expr $x+1] }
455 -re " +\[0-9\]+ 0024 A403FFEE\[^\n\]*\n" { set x [expr $x+1] }
456 -re " +\[0-9\]+ 0028 B4033412\[^\n\]*\n" { set x [expr $x+1] }
457 -re " +\[0-9\]+ 002c F3F01200\[^\n\]*\n" { set x [expr $x+1] }
458 -re " +\[0-9\]+ 0030 F7F01200\[^\n\]*\n" { set x [expr $x+1] }
459 timeout { perror "timeout\n"; break }
460 eof { break }
461 }
462 }
463
464 # This was intended to do any cleanup necessary. It kinda looks like it
465 # isn't needed, but just in case, please keep it in for now.
466 gas_finish
467
468 # Did we find what we were looking for? If not, flunk it.
469 if [expr $x == 16] then { pass $testname } else { fail $testname }
470 }
471
472 proc do_xc16x_movbs {} {
473 set testname "movbs.s: xc16x mov byte tests"
474 set x 0
475
476 gas_start "movbs.s" "-al"
477
478 # Check each instruction bit pattern to verify it got
479 # assembled correctly.
480 while 1 {
481 expect {
482 -re " +\[0-9\]+ 0000 D020\[^\n\]*\n" { set x [expr $x+1] }
483 -re " +\[0-9\]+ 0002 D2F0FF00\[^\n\]*\n" { set x [expr $x+1] }
484 -re " +\[0-9\]+ 0006 D5F0CBFF\[^\n\]*\n" { set x [expr $x+1] }
485 timeout { perror "timeout\n"; break }
486 eof { break }
487 }
488 }
489
490 # This was intended to do any cleanup necessary. It kinda looks like it
491 # isn't needed, but just in case, please keep it in for now.
492 gas_finish
493
494 # Did we find what we were looking for? If not, flunk it.
495 if [expr $x == 3] then { pass $testname } else { fail $testname }
496 }
497
498 proc do_xc16x_movbz {} {
499 set testname "movbz.s: xc16x movbz tests"
500 set x 0
501
502 gas_start "movbz.s" "-al"
503
504 # Check each instruction bit pattern to verify it got
505 # assembled correctly.
506 while 1 {
507 expect {
508 -re " +\[0-9\]+ 0000 C002\[^\n\]*\n" { set x [expr $x+1] }
509 -re " +\[0-9\]+ 0002 C2F0DD23\[^\n\]*\n" { set x [expr $x+1] }
510 -re " +\[0-9\]+ 0006 C5F02300\[^\n\]*\n" { set x [expr $x+1] }
511 timeout { perror "timeout\n"; break }
512 eof { break }
513 }
514 }
515
516 # This was intended to do any cleanup necessary. It kinda looks like it
517 # isn't needed, but just in case, please keep it in for now.
518 gas_finish
519
520 # Did we find what we were looking for? If not, flunk it.
521 if [expr $x == 3] then { pass $testname } else { fail $testname }
522 }
523
524 proc do_xc16x_pushpop {} {
525 set testname "pushpop.s: xc16x push/pop tests"
526 set x 0
527
528 gas_start "pushpop.s" "-al"
529
530 # Check each instruction bit pattern to verify it got
531 # assembled correctly.
532 while 1 {
533 expect {
534 -re " +\[0-9\]+ 0000 FCF0\[^\n\]*\n" { set x [expr $x+1] }
535 -re " +\[0-9\]+ 0002 ECF0\[^\n\]*\n" { set x [expr $x+1] }
536 timeout { perror "timeout\n"; break }
537 eof { break }
538 }
539 }
540
541 # This was intended to do any cleanup necessary. It kinda looks like it
542 # isn't needed, but just in case, please keep it in for now.
543 gas_finish
544
545 # Did we find what we were looking for? If not, flunk it.
546 if [expr $x == 2] then { pass $testname } else { fail $testname }
547 }
548
549 proc do_xc16x_shlrol {} {
550 set testname "shlrol.s: xc16x shift and rotate tests"
551 set x 0
552
553 gas_start "shlrol.s" "-al"
554
555 # Check each instruction bit pattern to verify it got
556 # assembled correctly.
557 while 1 {
558 expect {
559 -re " +\[0-9\]+ 0000 4C01\[^\n\]*\n" { set x [expr $x+1] }
560 -re " +\[0-9\]+ 0002 5C40\[^\n\]*\n" { set x [expr $x+1] }
561 -re " +\[0-9\]+ 0004 6C01\[^\n\]*\n" { set x [expr $x+1] }
562 -re " +\[0-9\]+ 0006 7C40\[^\n\]*\n" { set x [expr $x+1] }
563 -re " +\[0-9\]+ 0008 0C01\[^\n\]*\n" { set x [expr $x+1] }
564 -re " +\[0-9\]+ 000a 1C40\[^\n\]*\n" { set x [expr $x+1] }
565 -re " +\[0-9\]+ 000c 2C01\[^\n\]*\n" { set x [expr $x+1] }
566 -re " +\[0-9\]+ 000e 3C40\[^\n\]*\n" { set x [expr $x+1] }
567 -re " +\[0-9\]+ 0010 AC01\[^\n\]*\n" { set x [expr $x+1] }
568 -re " +\[0-9\]+ 0012 BC40\[^\n\]*\n" { set x [expr $x+1] }
569 timeout { perror "timeout\n"; break }
570 eof { break }
571 }
572 }
573
574 # This was intended to do any cleanup necessary. It kinda looks like it
575 # isn't needed, but just in case, please keep it in for now.
576 gas_finish
577
578 # Did we find what we were looking for? If not, flunk it.
579 if [expr $x == 10] then { pass $testname } else { fail $testname }
580 }
581
582 proc do_xc16x_neg {} {
583 set testname "neg.s: xc16x neg tests"
584 set x 0
585
586 gas_start "neg.s" "-al"
587
588 # Check each instruction bit pattern to verify it got
589 # assembled correctly.
590 while 1 {
591 expect {
592 -re " +\[0-9\]+ 0000 8100\[^\n\]*\n" { set x [expr $x+1] }
593 -re " +\[0-9\]+ 0002 A100\[^\n\]*\n" { set x [expr $x+1] }
594 timeout { perror "timeout\n"; break }
595 eof { break }
596 }
597 }
598
599 # This was intended to do any cleanup necessary. It kinda looks like it
600 # isn't needed, but just in case, please keep it in for now.
601 gas_finish
602
603 # Did we find what we were looking for? If not, flunk it.
604 if [expr $x == 2] then { pass $testname } else { fail $testname }
605 }
606 proc do_xc16x_mul {} {
607 set testname "mul.s: xc16x multiply tests"
608 set x 0
609
610 gas_start "mul.s" "-al"
611
612 # Check each instruction bit pattern to verify it got
613 # assembled correctly.
614 while 1 {
615 expect {
616 -re " +\[0-9\]+ 0000 0B01\[^\n\]*\n" { set x [expr $x+1] }
617 -re " +\[0-9\]+ 0002 1B01\[^\n\]*\n" { set x [expr $x+1] }
618 timeout { perror "timeout\n"; break }
619 eof { break }
620 }
621 }
622
623 # This was intended to do any cleanup necessary. It kinda looks like it
624 # isn't needed, but just in case, please keep it in for now.
625 gas_finish
626
627 # Did we find what we were looking for? If not, flunk it.
628 if [expr $x == 2] then { pass $testname } else { fail $testname }
629 }
630
631 proc do_xc16x_div {} {
632 set testname "div.s: xc16x division tests"
633 set x 0
634
635 gas_start "div.s" "-al"
636
637 # Check each instruction bit pattern to verify it got
638 # assembled correctly.
639 while 1 {
640 expect {
641 -re " +\[0-9\]+ 0000 4B00\[^\n\]*\n" { set x [expr $x+1] }
642 -re " +\[0-9\]+ 0002 6B00\[^\n\]*\n" { set x [expr $x+1] }
643 -re " +\[0-9\]+ 0004 7B00\[^\n\]*\n" { set x [expr $x+1] }
644 -re " +\[0-9\]+ 0006 5B00\[^\n\]*\n" { set x [expr $x+1] }
645 timeout { perror "timeout\n"; break }
646 eof { break }
647 }
648 }
649
650 # This was intended to do any cleanup necessary. It kinda looks like it
651 # isn't needed, but just in case, please keep it in for now.
652 gas_finish
653
654 # Did we find what we were looking for? If not, flunk it.
655 if [expr $x == 4] then { pass $testname } else { fail $testname }
656 }
657
658 proc do_xc16x_jmpa {} {
659 set testname "jmpa.s: xc16x jump absolute test"
660 set x 0
661
662 gas_start "jmpa.s" "-al"
663
664 # Check each instruction bit pattern to verify it got
665 # assembled correctly.
666 while 1 {
667 expect {
668 -re " +\[0-9\]+ 0000 EA00AAAA\[^\n\]*\n" { set x [expr $x+1] }
669 -re " +\[0-9\]+ 0004 EA20AAAA\[^\n\]*\n" { set x [expr $x+1] }
670 -re " +\[0-9\]+ 0008 EA30AAAA\[^\n\]*\n" { set x [expr $x+1] }
671 -re " +\[0-9\]+ 000c EA40AAAA\[^\n\]*\n" { set x [expr $x+1] }
672 -re " +\[0-9\]+ 0010 EA50AAAA\[^\n\]*\n" { set x [expr $x+1] }
673 -re " +\[0-9\]+ 0014 EA60AAAA\[^\n\]*\n" { set x [expr $x+1] }
674 -re " +\[0-9\]+ 0018 EA70AAAA\[^\n\]*\n" { set x [expr $x+1] }
675 -re " +\[0-9\]+ 001c EA80AAAA\[^\n\]*\n" { set x [expr $x+1] }
676 -re " +\[0-9\]+ 0020 EA90AAAA\[^\n\]*\n" { set x [expr $x+1] }
677 -re " +\[0-9\]+ 0024 EA20AAAA\[^\n\]*\n" { set x [expr $x+1] }
678 -re " +\[0-9\]+ 0028 EA30AAAA\[^\n\]*\n" { set x [expr $x+1] }
679 -re " +\[0-9\]+ 002c EA80AAAA\[^\n\]*\n" { set x [expr $x+1] }
680 -re " +\[0-9\]+ 0030 EAF0AAAA\[^\n\]*\n" { set x [expr $x+1] }
681 -re " +\[0-9\]+ 0034 EA90AAAA\[^\n\]*\n" { set x [expr $x+1] }
682 -re " +\[0-9\]+ 0038 EAE0AAAA\[^\n\]*\n" { set x [expr $x+1] }
683 -re " +\[0-9\]+ 003c EAB0AAAA\[^\n\]*\n" { set x [expr $x+1] }
684 -re " +\[0-9\]+ 0040 EAD0AAAA\[^\n\]*\n" { set x [expr $x+1] }
685 -re " +\[0-9\]+ 0044 EAA0AAAA\[^\n\]*\n" { set x [expr $x+1] }
686 -re " +\[0-9\]+ 0048 EA10AAAA\[^\n\]*\n" { set x [expr $x+1] }
687 timeout { perror "timeout\n"; break }
688 eof { break }
689 }
690 }
691
692 # This was intended to do any cleanup necessary. It kinda looks like it
693 # isn't needed, but just in case, please keep it in for now.
694 gas_finish
695
696 # Did we find what we were looking for? If not, flunk it.
697 if [expr $x == 19] then { pass $testname } else { fail $testname }
698 }
699
700 proc do_xc16x_jmpi {} {
701 set testname "jmpi.s: xc16x jmp immidiate tests "
702 set x 0
703
704 gas_start "jmpi.s" "-al"
705
706 # Check each instruction bit pattern to verify it got
707 # assembled correctly.
708 while 1 {
709 expect {
710 -re " +\[0-9\]+ 0000 9C07\[^\n\]*\n" { set x [expr $x+1] }
711 -re " +\[0-9\]+ 0002 9C27\[^\n\]*\n" { set x [expr $x+1] }
712 -re " +\[0-9\]+ 0004 9C37\[^\n\]*\n" { set x [expr $x+1] }
713 -re " +\[0-9\]+ 0006 9C47\[^\n\]*\n" { set x [expr $x+1] }
714 -re " +\[0-9\]+ 0008 9C57\[^\n\]*\n" { set x [expr $x+1] }
715 -re " +\[0-9\]+ 000a 9C67\[^\n\]*\n" { set x [expr $x+1] }
716 -re " +\[0-9\]+ 000c 9C77\[^\n\]*\n" { set x [expr $x+1] }
717 -re " +\[0-9\]+ 000e 9C87\[^\n\]*\n" { set x [expr $x+1] }
718 -re " +\[0-9\]+ 0010 9C97\[^\n\]*\n" { set x [expr $x+1] }
719 -re " +\[0-9\]+ 0012 9C27\[^\n\]*\n" { set x [expr $x+1] }
720 -re " +\[0-9\]+ 0014 9C37\[^\n\]*\n" { set x [expr $x+1] }
721 -re " +\[0-9\]+ 0016 9C87\[^\n\]*\n" { set x [expr $x+1] }
722 -re " +\[0-9\]+ 0018 9CF7\[^\n\]*\n" { set x [expr $x+1] }
723 -re " +\[0-9\]+ 001a 9C97\[^\n\]*\n" { set x [expr $x+1] }
724 -re " +\[0-9\]+ 001c 9CE7\[^\n\]*\n" { set x [expr $x+1] }
725 -re " +\[0-9\]+ 001e 9CB7\[^\n\]*\n" { set x [expr $x+1] }
726 -re " +\[0-9\]+ 0020 9CD7\[^\n\]*\n" { set x [expr $x+1] }
727 -re " +\[0-9\]+ 0022 9CA7\[^\n\]*\n" { set x [expr $x+1] }
728 -re " +\[0-9\]+ 0024 9C17\[^\n\]*\n" { set x [expr $x+1] }
729 timeout { perror "timeout\n"; break }
730 eof { break }
731 }
732 }
733
734 # This was intended to do any cleanup necessary. It kinda looks like it
735 # isn't needed, but just in case, please keep it in for now.
736 gas_finish
737
738 # Did we find what we were looking for? If not, flunk it.
739 if [expr $x == 19] then { pass $testname } else { fail $testname }
740 }
741
742
743 proc do_xc16x_jmpr {} {
744 set testname "jmpr.s: xc16x jump relative tests"
745 set x 0
746
747 gas_start "jmpr.s" "-al"
748
749 # Check each instruction bit pattern to verify it got
750 # assembled correctly.
751 while 1 {
752 expect {
753 -re " +\[0-9\]+ 0000 0DFF\[^\n\]*\n" { set x [expr $x+1] }
754 -re " +\[0-9\]+ 0002 2DFE\[^\n\]*\n" { set x [expr $x+1] }
755 -re " +\[0-9\]+ 0004 3DFD\[^\n\]*\n" { set x [expr $x+1] }
756 -re " +\[0-9\]+ 0006 4DFC\[^\n\]*\n" { set x [expr $x+1] }
757 -re " +\[0-9\]+ 0008 5DFB\[^\n\]*\n" { set x [expr $x+1] }
758 -re " +\[0-9\]+ 000a 6DFA\[^\n\]*\n" { set x [expr $x+1] }
759 -re " +\[0-9\]+ 000c 7DF9\[^\n\]*\n" { set x [expr $x+1] }
760 -re " +\[0-9\]+ 000e 8DF8\[^\n\]*\n" { set x [expr $x+1] }
761 -re " +\[0-9\]+ 0010 9DF7\[^\n\]*\n" { set x [expr $x+1] }
762 -re " +\[0-9\]+ 0012 2DF6\[^\n\]*\n" { set x [expr $x+1] }
763 -re " +\[0-9\]+ 0014 3DF5\[^\n\]*\n" { set x [expr $x+1] }
764 -re " +\[0-9\]+ 0016 8DF4\[^\n\]*\n" { set x [expr $x+1] }
765 -re " +\[0-9\]+ 0018 FDF3\[^\n\]*\n" { set x [expr $x+1] }
766 -re " +\[0-9\]+ 001a 9DF2\[^\n\]*\n" { set x [expr $x+1] }
767 -re " +\[0-9\]+ 001c EDF1\[^\n\]*\n" { set x [expr $x+1] }
768 -re " +\[0-9\]+ 001e BDF0\[^\n\]*\n" { set x [expr $x+1] }
769 -re " +\[0-9\]+ 0020 DDEF\[^\n\]*\n" { set x [expr $x+1] }
770 -re " +\[0-9\]+ 0022 ADEE\[^\n\]*\n" { set x [expr $x+1] }
771 -re " +\[0-9\]+ 0024 1DED\[^\n\]*\n" { set x [expr $x+1] }
772 -re " +\[0-9\]+ 0026 CDEC\[^\n\]*\n" { set x [expr $x+1] }
773 timeout { perror "timeout\n"; break }
774 eof { break }
775 }
776 }
777
778 # This was intended to do any cleanup necessary. It kinda looks like it
779 # isn't needed, but just in case, please keep it in for now.
780 gas_finish
781
782 # Did we find what we were looking for? If not, flunk it.
783 if [expr $x == 20] then { pass $testname } else { fail $testname }
784 }
785
786 proc do_xc16x_syscontrol1 {} {
787 set testname "syscontrol1.s: xc16x system control insrutions tests"
788 set x 0
789
790 gas_start "syscontrol1.s" "-al"
791
792 # Check each instruction bit pattern to verify it got
793 # assembled correctly.
794 while 1 {
795 expect {
796 -re " +\[0-9\]+ 0000 B748B7B7\[^\n\]*\n" { set x [expr $x+1] }
797 -re " +\[0-9\]+ 0004 8C00\[^\n\]*\n" { set x [expr $x+1] }
798 -re " +\[0-9\]+ 0006 87788787\[^\n\]*\n" { set x [expr $x+1] }
799 -re " +\[0-9\]+ 000a 97689797\[^\n\]*\n" { set x [expr $x+1] }
800 -re " +\[0-9\]+ 000e A758A7A7\[^\n\]*\n" { set x [expr $x+1] }
801 -re " +\[0-9\]+ 0012 A55AA5A5\[^\n\]*\n" { set x [expr $x+1] }
802 -re " +\[0-9\]+ 0016 857A8585\[^\n\]*\n" { set x [expr $x+1] }
803 -re " +\[0-9\]+ 001a B54AB5B5\[^\n\]*\n" { set x [expr $x+1] }
804 timeout { perror "timeout\n"; break }
805 eof { break }
806 }
807 }
808
809 # This was intended to do any cleanup necessary. It kinda looks like it
810 # isn't needed, but just in case, please keep it in for now.
811 gas_finish
812
813 # Did we find what we were looking for? If not, flunk it.
814 if [expr $x == 8] then { pass $testname } else { fail $testname }
815 }
816
817 proc do_xc16x_syscontrol2 {} {
818 set testname "syscontrol2.s: xc16x syscontrol2 tests"
819 set x 0
820
821 gas_start "syscontrol2.s" "-al"
822
823 # Check each instruction bit pattern to verify it got
824 # assembled correctly.
825 while 1 {
826 expect {
827 -re " +\[0-9\]+ 0000 D1B0\[^\n\]*\n" { set x [expr $x+1] }
828 -re " +\[0-9\]+ 0002 D1A0\[^\n\]*\n" { set x [expr $x+1] }
829 -re " +\[0-9\]+ 0004 D190\[^\n\]*\n" { set x [expr $x+1] }
830 -re " +\[0-9\]+ 0006 D180\[^\n\]*\n" { set x [expr $x+1] }
831 -re " +\[0-9\]+ 0008 D130\[^\n\]*\n" { set x [expr $x+1] }
832 -re " +\[0-9\]+ 000a D120\[^\n\]*\n" { set x [expr $x+1] }
833 -re " +\[0-9\]+ 000c D110\[^\n\]*\n" { set x [expr $x+1] }
834 -re " +\[0-9\]+ 000e D100\[^\n\]*\n" { set x [expr $x+1] }
835 -re " +\[0-9\]+ 0010 DC75\[^\n\]*\n" { set x [expr $x+1] }
836 -re " +\[0-9\]+ 0012 D770FF03\[^\n\]*\n" { set x [expr $x+1] }
837 -re " +\[0-9\]+ 0016 DCF5\[^\n\]*\n" { set x [expr $x+1] }
838 -re " +\[0-9\]+ 0018 D7F0FF03\[^\n\]*\n" { set x [expr $x+1] }
839 -re " +\[0-9\]+ 001c DC35\[^\n\]*\n" { set x [expr $x+1] }
840 -re " +\[0-9\]+ 001e D7300100\[^\n\]*\n" { set x [expr $x+1] }
841 -re " +\[0-9\]+ 0022 DCB5\[^\n\]*\n" { set x [expr $x+1] }
842 -re " +\[0-9\]+ 0024 D7B00100\[^\n\]*\n" { set x [expr $x+1] }
843 timeout { perror "timeout\n"; break }
844 eof { break }
845 }
846 }
847
848 # This was intended to do any cleanup necessary. It kinda looks like it
849 # isn't needed, but just in case, please keep it in for now.
850 gas_finish
851
852 # Did we find what we were looking for? If not, flunk it.
853 if [expr $x == 16] then { pass $testname } else { fail $testname }
854 }
855
856 proc do_xc16x_cpl {} {
857 set testname "cpl.s: xc16x compliment tests"
858 set x 0
859
860 gas_start "cpl.s" "-al"
861
862 # Check each instruction bit pattern to verify it got
863 # assembled correctly.
864 while 1 {
865 expect {
866 -re " +\[0-9\]+ 0000 9100\[^\n\]*\n" { set x [expr $x+1] }
867 -re " +\[0-9\]+ 0002 B100\[^\n\]*\n" { set x [expr $x+1] }
868 timeout { perror "timeout\n"; break }
869 eof { break }
870 }
871 }
872
873 # This was intended to do any cleanup necessary. It kinda looks like it
874 # isn't needed, but just in case, please keep it in for now.
875 gas_finish
876
877 # Did we find what we were looking for? If not, flunk it.
878 if [expr $x == 2] then { pass $testname } else { fail $testname }
879 }
880
881 proc do_xc16x_cmp {} {
882 set testname "cmp.s: xc16x misc tests"
883 set x 0
884
885 gas_start "cmp.s" "-al"
886
887 # Check each instruction bit pattern to verify it got
888 # assembled correctly.
889 while 1 {
890 expect {
891 -re " +\[0-9\]+ 0000 4001\[^\n\]*\n" { set x [expr $x+1] }
892 -re " +\[0-9\]+ 0002 4809\[^\n\]*\n" { set x [expr $x+1] }
893 -re " +\[0-9\]+ 0004 480D\[^\n\]*\n" { set x [expr $x+1] }
894 -re " +\[0-9\]+ 0006 4803\[^\n\]*\n" { set x [expr $x+1] }
895 -re " +\[0-9\]+ 0008 46F03402\[^\n\]*\n" { set x [expr $x+1] }
896 -re " +\[0-9\]+ 000c 42F05234\[^\n\]*\n" { set x [expr $x+1] }
897 timeout { perror "timeout\n"; break }
898 eof { break }
899 }
900 }
901
902 # This was intended to do any cleanup necessary. It kinda looks like it
903 # isn't needed, but just in case, please keep it in for now.
904 gas_finish
905
906 # Did we find what we were looking for? If not, flunk it.
907 if [expr $x == 6] then { pass $testname } else { fail $testname }
908 }
909
910 proc do_xc16x_cmpb {} {
911 set testname "cmpb.s: xc16x cmp byte tests"
912 set x 0
913
914 gas_start "cmpb.s" "-al"
915
916 # Check each instruction bit pattern to verify it got
917 # assembled correctly.
918 while 1 {
919 expect {
920 -re " +\[0-9\]+ 0000 4102\[^\n\]*\n" { set x [expr $x+1] }
921 -re " +\[0-9\]+ 0002 4909\[^\n\]*\n" { set x [expr $x+1] }
922 -re " +\[0-9\]+ 0004 490D\[^\n\]*\n" { set x [expr $x+1] }
923 -re " +\[0-9\]+ 0006 4903\[^\n\]*\n" { set x [expr $x+1] }
924 -re " +\[0-9\]+ 0008 47F02200\[^\n\]*\n" { set x [expr $x+1] }
925 -re " +\[0-9\]+ 000c 43F03402\[^\n\]*\n" { set x [expr $x+1] }
926 timeout { perror "timeout\n"; break }
927 eof { break }
928 }
929 }
930
931 # This was intended to do any cleanup necessary. It kinda looks like it
932 # isn't needed, but just in case, please keep it in for now.
933 gas_finish
934
935 # Did we find what we were looking for? If not, flunk it.
936 if [expr $x == 6] then { pass $testname } else { fail $testname }
937 }
938
939 proc do_xc16x_cmpi {} {
940 set testname "cmpi.s: xc16x cmpi tests"
941 set x 0
942
943 gas_start "cmpi.s" "-al"
944
945 # Check each instruction bit pattern to verify it got
946 # assembled correctly.
947 while 1 {
948 expect {
949 -re " +\[0-9\]+ 0000 A0F0\[^\n\]*\n" { set x [expr $x+1] }
950 -re " +\[0-9\]+ 0002 A6F0CBFC\[^\n\]*\n" { set x [expr $x+1] }
951 -re " +\[0-9\]+ 0006 A2F0CBFF\[^\n\]*\n" { set x [expr $x+1] }
952 -re " +\[0-9\]+ 000a B0F0\[^\n\]*\n" { set x [expr $x+1] }
953 -re " +\[0-9\]+ 000c B6F0CBFC\[^\n\]*\n" { set x [expr $x+1] }
954 -re " +\[0-9\]+ 0010 B2F0CBFF\[^\n\]*\n" { set x [expr $x+1] }
955 -re " +\[0-9\]+ 0014 80F0\[^\n\]*\n" { set x [expr $x+1] }
956 -re " +\[0-9\]+ 0016 86F0CBFC\[^\n\]*\n" { set x [expr $x+1] }
957 -re " +\[0-9\]+ 001a 82F0CBFF\[^\n\]*\n" { set x [expr $x+1] }
958 -re " +\[0-9\]+ 001e 90F0\[^\n\]*\n" { set x [expr $x+1] }
959 -re " +\[0-9\]+ 0020 96F0CBFC\[^\n\]*\n" { set x [expr $x+1] }
960 -re " +\[0-9\]+ 0024 92F0CBFF\[^\n\]*\n" { set x [expr $x+1] }
961 timeout { perror "timeout\n"; break }
962 eof { break }
963 }
964 }
965
966 # This was intended to do any cleanup necessary. It kinda looks like it
967 # isn't needed, but just in case, please keep it in for now.
968 gas_finish
969
970 # Did we find what we were looking for? If not, flunk it.
971 if [expr $x == 12] then { pass $testname } else { fail $testname }
972 }
973
974 proc do_xc16x_calli {} {
975 set testname "calli.s: xc16x call tests"
976 set x 0
977
978 gas_start "calli.s" "-al"
979
980 # Check each instruction bit pattern to verify it got
981 # assembled correctly.
982 while 1 {
983 expect {
984 -re " +\[0-9\]+ 0000 AB01\[^\n\]*\n" { set x [expr $x+1] }
985 -re " +\[0-9\]+ 0002 AB21\[^\n\]*\n" { set x [expr $x+1] }
986 -re " +\[0-9\]+ 0004 AB31\[^\n\]*\n" { set x [expr $x+1] }
987 -re " +\[0-9\]+ 0006 AB41\[^\n\]*\n" { set x [expr $x+1] }
988 -re " +\[0-9\]+ 0008 AB51\[^\n\]*\n" { set x [expr $x+1] }
989 -re " +\[0-9\]+ 000a AB61\[^\n\]*\n" { set x [expr $x+1] }
990 -re " +\[0-9\]+ 000c AB71\[^\n\]*\n" { set x [expr $x+1] }
991 -re " +\[0-9\]+ 000e AB81\[^\n\]*\n" { set x [expr $x+1] }
992 -re " +\[0-9\]+ 0010 AB91\[^\n\]*\n" { set x [expr $x+1] }
993 -re " +\[0-9\]+ 0012 AB21\[^\n\]*\n" { set x [expr $x+1] }
994 -re " +\[0-9\]+ 0014 AB31\[^\n\]*\n" { set x [expr $x+1] }
995 -re " +\[0-9\]+ 0016 AB81\[^\n\]*\n" { set x [expr $x+1] }
996 -re " +\[0-9\]+ 0018 ABF1\[^\n\]*\n" { set x [expr $x+1] }
997 -re " +\[0-9\]+ 001a AB91\[^\n\]*\n" { set x [expr $x+1] }
998 -re " +\[0-9\]+ 001c ABE1\[^\n\]*\n" { set x [expr $x+1] }
999 -re " +\[0-9\]+ 001e ABB1\[^\n\]*\n" { set x [expr $x+1] }
1000 -re " +\[0-9\]+ 0020 ABD1\[^\n\]*\n" { set x [expr $x+1] }
1001 -re " +\[0-9\]+ 0022 AB11\[^\n\]*\n" { set x [expr $x+1] }
1002 -re " +\[0-9\]+ 0024 ABC1\[^\n\]*\n" { set x [expr $x+1] }
1003 timeout { perror "timeout\n"; break }
1004 eof { break }
1005 }
1006 }
1007
1008 # This was intended to do any cleanup necessary. It kinda looks like it
1009 # isn't needed, but just in case, please keep it in for now.
1010 gas_finish
1011
1012 # Did we find what we were looking for? If not, flunk it.
1013 if [expr $x == 19] then { pass $testname } else { fail $testname }
1014 }
1015
1016 proc do_xc16x_calla {} {
1017 set testname "calla.s: xc16x call tests"
1018 set x 0
1019
1020 gas_start "calla.s" "-al"
1021
1022 # Check each instruction bit pattern to verify it got
1023 # assembled correctly.
1024 while 1 {
1025 expect {
1026 -re " +\[0-9\]+ 0000 CA00AAAA\[^\n\]*\n" { set x [expr $x+1] }
1027 -re " +\[0-9\]+ 0004 CA20AAAA\[^\n\]*\n" { set x [expr $x+1] }
1028 -re " +\[0-9\]+ 0008 CA30AAAA\[^\n\]*\n" { set x [expr $x+1] }
1029 -re " +\[0-9\]+ 000c CA40AAAA\[^\n\]*\n" { set x [expr $x+1] }
1030 -re " +\[0-9\]+ 0010 CA50AAAA\[^\n\]*\n" { set x [expr $x+1] }
1031 -re " +\[0-9\]+ 0014 CA60AAAA\[^\n\]*\n" { set x [expr $x+1] }
1032 -re " +\[0-9\]+ 0018 CA70AAAA\[^\n\]*\n" { set x [expr $x+1] }
1033 -re " +\[0-9\]+ 001c CA80AAAA\[^\n\]*\n" { set x [expr $x+1] }
1034 -re " +\[0-9\]+ 0020 CA90AAAA\[^\n\]*\n" { set x [expr $x+1] }
1035 -re " +\[0-9\]+ 0024 CA20AAAA\[^\n\]*\n" { set x [expr $x+1] }
1036 -re " +\[0-9\]+ 0028 CA30AAAA\[^\n\]*\n" { set x [expr $x+1] }
1037 -re " +\[0-9\]+ 002c CA80AAAA\[^\n\]*\n" { set x [expr $x+1] }
1038 -re " +\[0-9\]+ 0030 CAF0AAAA\[^\n\]*\n" { set x [expr $x+1] }
1039 -re " +\[0-9\]+ 0034 CA90AAAA\[^\n\]*\n" { set x [expr $x+1] }
1040 -re " +\[0-9\]+ 0038 CAE0AAAA\[^\n\]*\n" { set x [expr $x+1] }
1041 -re " +\[0-9\]+ 003c CAB0AAAA\[^\n\]*\n" { set x [expr $x+1] }
1042 -re " +\[0-9\]+ 0040 CAD0AAAA\[^\n\]*\n" { set x [expr $x+1] }
1043 -re " +\[0-9\]+ 0044 CAA0AAAA\[^\n\]*\n" { set x [expr $x+1] }
1044 -re " +\[0-9\]+ 0048 CA10AAAA\[^\n\]*\n" { set x [expr $x+1] }
1045 -re " +\[0-9\]+ 004c CAC0AAAA\[^\n\]*\n" { set x [expr $x+1] }
1046 timeout { perror "timeout\n"; break }
1047 eof { break }
1048 }
1049 }
1050
1051 # This was intended to do any cleanup necessary. It kinda looks like it
1052 # isn't needed, but just in case, please keep it in for now.
1053 gas_finish
1054
1055 # Did we find what we were looking for? If not, flunk it.
1056 if [expr $x == 20] then { pass $testname } else { fail $testname }
1057 }
1058
1059
1060 proc do_xc16x_bit {} {
1061 set testname "bit.s: xc16x bit manipulation tests"
1062 set x 0
1063
1064 gas_start "bit.s" "-al"
1065
1066 # Check each instruction bit pattern to verify it got
1067 # assembled correctly.
1068 while 1 {
1069 expect {
1070 -re " +\[0-9\]+ 0000 1EF0\[^\n\]*\n" { set x [expr $x+1] }
1071 -re " +\[0-9\]+ 0002 1FF0\[^\n\]*\n" { set x [expr $x+1] }
1072 -re " +\[0-9\]+ 0004 4AF0F012\[^\n\]*\n" { set x [expr $x+1] }
1073 -re " +\[0-9\]+ 0008 3AF0F023\[^\n\]*\n" { set x [expr $x+1] }
1074 -re " +\[0-9\]+ 000c 6AF0F041\[^\n\]*\n" { set x [expr $x+1] }
1075 -re " +\[0-9\]+ 0010 5AF0F021\[^\n\]*\n" { set x [expr $x+1] }
1076 -re " +\[0-9\]+ 0014 7AF0F021\[^\n\]*\n" { set x [expr $x+1] }
1077 -re " +\[0-9\]+ 0018 2AF0F021\[^\n\]*\n" { set x [expr $x+1] }
1078 timeout { perror "timeout\n"; break }
1079 eof { break }
1080 }
1081 }
1082
1083 # This was intended to do any cleanup necessary. It kinda looks like it
1084 # isn't needed, but just in case, please keep it in for now.
1085 gas_finish
1086
1087 # Did we find what we were looking for? If not, flunk it.
1088 if [expr $x == 8] then { pass $testname } else { fail $testname }
1089 }
1090
1091 proc do_xc16x_bfldl {} {
1092 set testname "bfldl.s: xc16x bitwise modify masked data tests"
1093 set x 0
1094
1095 gas_start "bfldl.s" "-al"
1096
1097 # Check each instruction bit pattern to verify it got
1098 # assembled correctly.
1099 while 1 {
1100 expect {
1101 -re " +\[0-9\]+ 0000 0AF0870E\[^\n\]*\n" { set x [expr $x+1] }
1102 -re " +\[0-9\]+ 0004 1AF00EFF\[^\n\]*\n" { set x [expr $x+1] }
1103 timeout { perror "timeout\n"; break }
1104 eof { break }
1105 }
1106 }
1107
1108 # This was intended to do any cleanup necessary. It kinda looks like it
1109 # isn't needed, but just in case, please keep it in for now.
1110 gas_finish
1111
1112 # Did we find what we were looking for? If not, flunk it.
1113 if [expr $x == 2] then { pass $testname } else { fail $testname }
1114 }
1115
1116 proc do_xc16x_ret {} {
1117 set testname "ret.s: xc16x ret tests"
1118 set x 0
1119
1120 gas_start "ret.s" "-al"
1121
1122 # Check each instruction bit pattern to verify it got
1123 # assembled correctly.
1124 while 1 {
1125 expect {
1126 -re " +\[0-9\]+ 0000 CB00\[^\n\]*\n" { set x [expr $x+1] }
1127 -re " +\[0-9\]+ 0002 FB88\[^\n\]*\n" { set x [expr $x+1] }
1128 -re " +\[0-9\]+ 0004 DB00\[^\n\]*\n" { set x [expr $x+1] }
1129 -re " +\[0-9\]+ 0006 EBF5\[^\n\]*\n" { set x [expr $x+1] }
1130 timeout { perror "timeout\n"; break }
1131 eof { break }
1132 }
1133 }
1134
1135 # This was intended to do any cleanup necessary. It kinda looks like it
1136 # isn't needed, but just in case, please keep it in for now.
1137 gas_finish
1138
1139 # Did we find what we were looking for? If not, flunk it.
1140 if [expr $x == 4] then { pass $testname } else { fail $testname }
1141 }
1142
1143 proc do_xc16x_trap {} {
1144 set testname "trap.s: xc16x add/sub tests"
1145 set x 0
1146
1147 gas_start "trap.s" "-al"
1148
1149 # Check each instruction bit pattern to verify it got
1150 # assembled correctly.
1151 while 1 {
1152 expect {
1153 -re " +\[0-9\]+ 0000 9B04\[^\n\]*\n" { set x [expr $x+1] }
1154 timeout { perror "timeout\n"; break }
1155 eof { break }
1156 }
1157 }
1158
1159 # This was intended to do any cleanup necessary. It kinda looks like it
1160 # isn't needed, but just in case, please keep it in for now.
1161 gas_finish
1162
1163 # Did we find what we were looking for? If not, flunk it.
1164 if [expr $x == 1] then { pass $testname } else { fail $testname }
1165 }
1166
1167 proc do_xc16x_orb {} {
1168 set testname "orb.s: xc16x or byte instructions tests"
1169 set x 0
1170
1171 gas_start "orb.s" "-al"
1172
1173 # Check each instruction bit pattern to verify it got
1174 # assembled correctly.
1175 while 1 {
1176 expect {
1177 -re " +\[0-9\]+ 0000 7102\[^\n\]*\n" { set x [expr $x+1] }
1178 -re " +\[0-9\]+ 0002 7909\[^\n\]*\n" { set x [expr $x+1] }
1179 -re " +\[0-9\]+ 0004 790D\[^\n\]*\n" { set x [expr $x+1] }
1180 -re " +\[0-9\]+ 0006 7903\[^\n\]*\n" { set x [expr $x+1] }
1181 -re " +\[0-9\]+ 0008 77F02300\[^\n\]*\n" { set x [expr $x+1] }
1182 -re " +\[0-9\]+ 000c 73F03402\[^\n\]*\n" { set x [expr $x+1] }
1183 -re " +\[0-9\]+ 0010 75F03402\[^\n\]*\n" { set x [expr $x+1] }
1184 timeout { perror "timeout\n"; break }
1185 eof { break }
1186 }
1187 }
1188
1189 # This was intended to do any cleanup necessary. It kinda looks like it
1190 # isn't needed, but just in case, please keep it in for now.
1191 gas_finish
1192
1193 # Did we find what we were looking for? If not, flunk it.
1194 if [expr $x == 7] then { pass $testname } else { fail $testname }
1195 }
1196
1197
1198 proc do_xc16x_prior {} {
1199 set testname "prior.s: Determine no shift cycles tests"
1200 set x 0
1201
1202 gas_start "prior.s" "-al"
1203
1204 # Check each instruction bit pattern to verify it got
1205 # assembled correctly.
1206 while 1 {
1207 expect {
1208 -re " +\[0-9\]+ 0000 2B01\[^\n\]*\n" { set x [expr $x+1] }
1209 timeout { perror "timeout\n"; break }
1210 eof { break }
1211 }
1212 }
1213
1214 # This was intended to do any cleanup necessary. It kinda looks like it
1215 # isn't needed, but just in case, please keep it in for now.
1216 gas_finish
1217
1218 # Did we find what we were looking for? If not, flunk it.
1219 if [expr $x == 1] then { pass $testname } else { fail $testname }
1220 }
1221
1222 proc do_xc16x_nop {} {
1223 set testname "nop.s: no operation nop tests"
1224 set x 0
1225
1226 gas_start "nop.s" "-al"
1227
1228 # Check each instruction bit pattern to verify it got
1229 # assembled correctly.
1230 while 1 {
1231 expect {
1232 -re " +\[0-9\]+ 0000 CC00\[^\n\]*\n" { set x [expr $x+1] }
1233 -re " +\[0-9\]+ 0002 CC00\[^\n\]*\n" { set x [expr $x+1] }
1234 timeout { perror "timeout\n"; break }
1235 eof { break }
1236 }
1237 }
1238
1239 # This was intended to do any cleanup necessary. It kinda looks like it
1240 # isn't needed, but just in case, please keep it in for now.
1241 gas_finish
1242
1243 # Did we find what we were looking for? If not, flunk it.
1244 if [expr $x == 2] then { pass $testname } else { fail $testname }
1245 }
1246
1247
1248 proc do_xc16x_scxt {} {
1249 set testname "scxt.s: push direct word to system stack tests"
1250 set x 0
1251
1252 gas_start "scxt.s" "-al"
1253
1254 # Check each instruction bit pattern to verify it got
1255 # assembled correctly.
1256 while 1 {
1257 expect {
1258 -re " +\[0-9\]+ 0000 C6F0FFFF\[^\n\]*\n" { set x [expr $x+1] }
1259 -re " +\[0-9\]+ 0004 D6F0FFFF\[^\n\]*\n" { set x [expr $x+1] }
1260 timeout { perror "timeout\n"; break }
1261 eof { break }
1262 }
1263 }
1264
1265 # This was intended to do any cleanup necessary. It kinda looks like it
1266 # isn't needed, but just in case, please keep it in for now.
1267 gas_finish
1268
1269 # Did we find what we were looking for? If not, flunk it.
1270 if [expr $x == 2] then { pass $testname } else { fail $testname }
1271 }
1272
1273
1274 if [istarget xc16x*-*-*] then {
1275 # Test the basic xc16x instruction parser
1276 do_xc16x_add
1277 do_xc16x_addb
1278 do_xc16x_addc
1279 do_xc16x_addcb
1280 do_xc16x_sub
1281 do_xc16x_subb
1282 do_xc16x_subc
1283 do_xc16x_subcb
1284 do_xc16x_and
1285 do_xc16x_andb
1286 do_xc16x_or
1287 do_xc16x_xor
1288 do_xc16x_xorb
1289 do_xc16x_mov
1290 do_xc16x_movb
1291 do_xc16x_movbs
1292 do_xc16x_movbz
1293 do_xc16x_shlrol
1294 do_xc16x_neg
1295 do_xc16x_mul
1296 do_xc16x_div
1297 do_xc16x_jmpa
1298 do_xc16x_jmpi
1299 do_xc16x_jmpr
1300 do_xc16x_syscontrol1
1301 do_xc16x_syscontrol2
1302 do_xc16x_cpl
1303 do_xc16x_cmp
1304 do_xc16x_cmpb
1305 do_xc16x_cmpi
1306 do_xc16x_calla
1307 do_xc16x_calli
1308 do_xc16x_bit
1309 do_xc16x_bfldl
1310 do_xc16x_ret
1311 do_xc16x_trap
1312 do_xc16x_orb
1313 do_xc16x_prior
1314 do_xc16x_nop
1315 do_xc16x_scxt
1316
1317 }
This page took 0.056628 seconds and 3 git commands to generate.