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