daily update
[external/binutils.git] / gdb / testsuite / gdb.disasm / am33.exp
1
2 # Copyright 1997, 1998, 2007, 2008 Free Software Foundation, Inc.
3
4 # This program is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation; either version 3 of the License, or
7 # (at your option) any later version.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 # GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License
15 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
16
17 # Please email any bugs, comments, and/or additions to this file to:
18 # bug-gdb@prep.ai.mit.edu
19
20 # This file was written by Jeff Law. (law@cygnus.com)
21
22 if $tracelevel then {
23         strace $tracelevel
24 }
25
26 if ![istarget "mn10300*-*-*"] {
27     verbose "Tests ignored for all but mn10300 based targets."
28     return
29 }
30
31 global exec_output
32 set prms_id 0
33 set bug_id 0
34
35 set testfile "am33"
36 set srcfile ${srcdir}/${subdir}/${testfile}.s
37 set binfile ${objdir}/${subdir}/${testfile}
38 if  { [gdb_compile "${srcfile}" "${binfile}" object ""] != "" } {
39      untested am33.exp
40      return -1
41 }
42
43 proc call_tests { } {
44     global gdb_prompt
45     global hex
46     global decimal
47
48     send_gdb "x/8i call_tests\n"
49     gdb_expect {
50         -re "
51 .*call  .*,.a2,a3,exreg0.,9.*
52 .*call  .*,.a2,a3,exreg1.,9.*
53 .*call  .*,.a2,a3,exother.,9.*
54 .*call  .*,.d2,d3,a2,a3,other,exreg0,exreg1,exother.,9.*
55 .*call  .*,.a2,a3,exreg0.,9.*
56 .*call  .*,.a2,a3,exreg1.,9.*
57 .*call  .*,.a2,a3,exother.,9.*
58 .*call  .*,.d2,d3,a2,a3,other,exreg0,exreg1,exother.,9.*
59 .*$gdb_prompt $" { pass "call tests" }
60         -re "$gdb_prompt $" { fail "call tests" }
61         timeout { fail "(timeout) call tests" }
62     }
63 }
64
65 proc movm_tests { } {
66     global gdb_prompt
67     global hex
68     global decimal
69
70     send_gdb "x/16i movm_tests\n"
71     gdb_expect {
72         -re "
73 .*movm  \\(sp\\),.a2,a3,exreg0.*
74 .*movm  \\(sp\\),.a2,a3,exreg1.*
75 .*movm  \\(sp\\),.a2,a3,exother.*
76 .*movm  \\(sp\\),.d2,d3,a2,a3,other,exreg0,exreg1,exother.*
77 .*movm  .a2,a3,exreg0.,\\(sp\\).*
78 .*movm  .a2,a3,exreg1.,\\(sp\\).*
79 .*movm  .a2,a3,exother.,\\(sp\\).*
80 .*movm  .d2,d3,a2,a3,other,exreg0,exreg1,exother.,\\(sp\\).*
81 .*movm  \\(usp\\),.a2,a3,exreg0.*
82 .*movm  \\(usp\\),.a2,a3,exreg1.*
83 .*movm  \\(usp\\),.a2,a3,exother.*
84 .*movm  \\(usp\\),.d2,d3,a2,a3,other,exreg0,exreg1,exother.*
85 .*movm  .a2,a3,exreg0.,\\(usp\\).*
86 .*movm  .a2,a3,exreg1.,\\(usp\\).*
87 .*movm  .a2,a3,exother.,\\(usp\\).*
88 .*movm  .d2,d3,a2,a3,other,exreg0,exreg1,exother.,\\(usp\\).*
89 .*$gdb_prompt $" { pass "movm tests" }
90         -re "$gdb_prompt $" { fail "movm tests" }
91         timeout { fail "(timeout) movm tests" }
92     }
93 }
94
95 proc misc_tests { } {
96     global gdb_prompt
97     global hex
98     global decimal
99
100     send_gdb "x/11i misc_tests\n"
101     gdb_expect {
102         -re "
103 .*syscall       4.*
104 .*mcst9 d0.*
105 .*mcst48        d1.*
106 .*getchx        d0.*
107 .*getclx        d1.*
108 .*clr   a1.*
109 .*sat16 a1,a0.*
110 .*mcste r7,r6.*
111 .*swap  r5,r4.*
112 .*swaph r3,r2.*
113 .*swhw  r1,r0.*
114 .*$gdb_prompt $" { pass "misc tests" }
115         -re "$gdb_prompt $" { fail "misc tests" }
116         timeout { fail "(timeout) misc tests" }
117     }
118 }
119
120 proc mov_tests { } {
121     global gdb_prompt
122     global hex
123     global decimal
124
125     send_gdb "x/45i mov_tests\n"
126     gdb_expect {
127         -re "
128 .*mov   r0,r1.*
129 .*mov   sp,r1.*
130 .*mov   r1,xr2.*
131 .*mov   \\(r1\\),r2.*
132 .*mov   r3,\\(r4\\).*
133 .*mov   \\(sp\\),r5.*
134 .*mov   r6,\\(sp\\).*
135 .*mov   16,r1.*
136 .*mov   16,xr1.*
137 .*mov   \\(16,r1\\),r2.*
138 .*mov   r2,\\(16,r1\\).*
139 .*mov   \\(16,sp\\),r2.*
140 .*mov   r2,\\(16,sp\\).*
141 .*mov   2096895,r2.*
142 .*mov   2096895,xr2.*
143 .*mov   \\(2096895,r1\\),r2.*
144 .*mov   r2,\\(2096895,r1\\).*
145 .*mov   \\(2096895,sp\\),r2.*
146 .*mov   r2,\\(2096895,sp\\).*
147 .*mov   \\(0x1ffeff\\),r2.*
148 .*mov   r2,\\(0x1ffeff\\).*
149 .*mov   2147417596,r2.*
150 .*mov   2147417596,xr2.*
151 .*mov   \\(2147417596,r1\\),r2.*
152 .*mov   r2,\\(2147417596,r1\\).*
153 .*mov   \\(2147417596,sp\\),r2.*
154 .*mov   r2,\\(2147417596,sp\\).*
155 .*mov   \\(0x7ffefdfc\\),r2.*
156 .*mov   r2,\\(0x7ffefdfc\\).*
157 .*movu  16,r1.*
158 .*movu  2096895,r2.*
159 .*movu  2147417596,r2.*
160 .*mov   usp,a0.*
161 .*mov   ssp,a1.*
162 .*mov   msp,a2.*
163 .*mov   pc,a3.*
164 .*mov   a0,usp.*
165 .*mov   a1,ssp.*
166 .*mov   a2,msp.*
167 .*mov   epsw,d0.*
168 .*mov   d1,epsw.*
169 .*mov   a0,r1.*
170 .*mov   d2,r3.*
171 .*mov   r5,a1.*
172 .*mov   r7,d3.*
173 .*$gdb_prompt $" { pass "mov tests" }
174         -re "$gdb_prompt $" { fail "mov tests" }
175         timeout { fail "(timeout) mov tests" }
176     }
177 }
178
179 proc ext_tests { } {
180     global gdb_prompt
181     global hex
182     global decimal
183
184     send_gdb "x/5i ext_tests\n"
185     gdb_expect {
186         -re "
187 .*ext   r2.*
188 .*extb  r3,r4.*
189 .*extbu r4,r5.*
190 .*exth  r6,r7.*
191 .*exthu r7,a0.*
192 .*$gdb_prompt $" { pass "ext tests" }
193         -re "$gdb_prompt $" { fail "ext tests" }
194         timeout { fail "(timeout) ext tests" }
195     }
196 }
197
198 proc add_tests { } {
199     global gdb_prompt
200     global hex
201     global decimal
202
203     send_gdb "x/11i add_tests\n"
204     gdb_expect {
205         -re "
206 .*add   a2,a3.*
207 .*add   16,r1.*
208 .*add   2096895,r2.*
209 .*add   2147417596,r2.*
210 .*add   r1,r2,r3.*
211 .*addc  d0,d1.*
212 .*addc  16,r1.*
213 .*addc  2096895,r2.*
214 .*addc  2147417596,r2.*
215 .*inc   d1.*
216 .*inc4  d0.*
217 .*$gdb_prompt $" { pass "add tests" }
218         -re "$gdb_prompt $" { fail "add tests" }
219         timeout { fail "(timeout) add tests" }
220     }
221 }
222
223 proc sub_tests { } {
224     global gdb_prompt
225     global hex
226     global decimal
227
228     send_gdb "x/8i sub_tests\n"
229     gdb_expect {
230         -re "
231 .*sub   d2,d3.*
232 .*sub   16,r1.*
233 .*sub   2096895,r2.*
234 .*sub   2147417596,r2.*
235 .*subc  d3,d2.*
236 .*subc  16,r1.*
237 .*subc  2096895,r2.*
238 .*subc  2147417596,r2.*
239 .*$gdb_prompt $" { pass "sub tests" }
240         -re "$gdb_prompt $" { fail "sub tests" }
241         timeout { fail "(timeout) sub tests" }
242     }
243 }
244
245 proc cmp_tests { } {
246     global gdb_prompt
247     global hex
248     global decimal
249
250     send_gdb "x/4i cmp_tests\n"
251     gdb_expect {
252         -re "
253 .*cmp   a3,a2.*
254 .*cmp   16,r1.*
255 .*cmp   2096895,r2.*
256 .*cmp   2147417596,r2.*
257 .*$gdb_prompt $" { pass "cmp tests" }
258         -re "$gdb_prompt $" { fail "cmp tests" }
259         timeout { fail "(timeout) cmp tests" }
260     }
261 }
262
263 proc logical_tests { } {
264     global gdb_prompt
265     global hex
266     global decimal
267
268     send_gdb "x/15i logical_tests\n"
269     gdb_expect {
270         -re "
271 .*and   r0,r1.*
272 .*or    r2,r3.*
273 .*xor   r4,r5.*
274 .*not   r6.*
275 .*and   16,r1.*
276 .*or    16,r1.*
277 .*xor   16,r1.*
278 .*and   2096895,r2.*
279 .*or    2096895,r2.*
280 .*xor   2096895,r2.*
281 .*and   2147417596,r2.*
282 .*or    2147417596,r2.*
283 .*xor   2147417596,r2.*
284 .*and   131072,epsw.*
285 .*or    65535,epsw.*
286 .*$gdb_prompt $" { pass "logical tests" }
287         -re "$gdb_prompt $" { fail "logical tests" }
288         timeout { fail "(timeout) logical tests" }
289     }
290 }
291
292 proc shift_tests { } {
293     global gdb_prompt
294     global hex
295     global decimal
296
297     send_gdb "x/15i shift_tests\n"
298     gdb_expect {
299         -re "
300 .*asr   r7,a0.*
301 .*lsr   a1,a2.*
302 .*asl   a3,d0.*
303 .*asl2  d1.*
304 .*ror   d2.*
305 .*rol   d3.*
306 .*asr   16,r1.*
307 .*lsr   16,r1.*
308 .*asl   16,r1.*
309 .*asr   2096895,r2.*
310 .*lsr   2096895,r2.*
311 .*asl   2096895,r2.*
312 .*asr   2147417596,r2.*
313 .*lsr   2147417596,r2.*
314 .*asl   2147417596,r2.*
315 .*$gdb_prompt $" { pass "shift tests" }
316         -re "$gdb_prompt $" { fail "shift tests" }
317         timeout { fail "(timeout) shift tests" }
318     }
319 }
320
321 proc muldiv_tests { } {
322     global gdb_prompt
323     global hex
324     global decimal
325
326     send_gdb "x/16i muldiv_tests\n"
327     gdb_expect {
328         -re "
329 .*mul   r1,r2.*
330 .*mulu  r3,r4.*
331 .*mul   16,r1.*
332 .*mulu  16,r1.*
333 .*mul   2096895,r2.*
334 .*mulu  2096895,r2.*
335 .*mul   2147417596,r2.*
336 .*mulu  2147417596,r2.*
337 .*div   r5,r6.*
338 .*divu  r7,a0.*
339 .*dmulh d1,d0.*
340 .*dmulhu        a3,a2.*
341 .*dmulh 2147417596,r2.*
342 .*dmulhu        2147417596,r2.*
343 .*mul   r1,r2,r3,r4.*
344 .*mulu  r1,r2,r3,r4.*
345 .*$gdb_prompt $" { pass "muldiv tests" }
346         -re "$gdb_prompt $" { fail "muldiv tests" }
347         timeout { fail "(timeout) muldiv tests" }
348     }
349 }
350
351 proc movbu_tests { } {
352     global gdb_prompt
353     global hex
354     global decimal
355
356     send_gdb "x/20i movbu_tests\n"
357     gdb_expect {
358         -re "
359 .*movbu \\(r5\\),r6.*
360 .*movbu r7,\\(a0\\).*
361 .*movbu \\(sp\\),r7.*
362 .*movbu a0,\\(sp\\).*
363 .*movbu \\(16,r1\\),r2.*
364 .*movbu r2,\\(16,r1\\).*
365 .*movbu \\(16,sp\\),r2.*
366 .*movbu r2,\\(16,sp\\).*
367 .*movbu \\(2096895,r1\\),r2.*
368 .*movbu r2,\\(2096895,r1\\).*
369 .*movbu \\(2096895,sp\\),r2.*
370 .*movbu r2,\\(2096895,sp\\).*
371 .*movbu \\(0x1ffeff\\),r2.*
372 .*movbu r2,\\(0x1ffeff\\).*
373 .*movbu \\(2147417596,r1\\),r2.*
374 .*movbu r2,\\(2147417596,r1\\).*
375 .*movbu \\(2147417596,sp\\),r2.*
376 .*movbu r2,\\(2147417596,sp\\).*
377 .*movbu \\(0x7ffefdfc\\),r2.*
378 .*movbu r2,\\(0x7ffefdfc\\).*
379 .*$gdb_prompt $" { pass "movbu tests" }
380         -re "$gdb_prompt $" { fail "movbu tests" }
381         timeout { fail "(timeout) movbu tests" }
382     }
383 }
384
385 proc movhu_tests { } {
386     global gdb_prompt
387     global hex
388     global decimal
389
390     send_gdb "x/20i movhu_tests\n"
391     gdb_expect {
392         -re "
393 .*movhu \\(a1\\),a2.*
394 .*movhu a3,\\(d0\\).*
395 .*movhu \\(sp\\),a1.*
396 .*movhu a2,\\(sp\\).*
397 .*movhu \\(16,r1\\),r2.*
398 .*movhu r2,\\(16,r1\\).*
399 .*movhu \\(16,sp\\),r2.*
400 .*movhu r2,\\(16,sp\\).*
401 .*movhu \\(2096895,r1\\),r2.*
402 .*movhu r2,\\(2096895,r1\\).*
403 .*movhu \\(2096895,sp\\),r2.*
404 .*movhu r2,\\(2096895,sp\\).*
405 .*movhu \\(0x1ffeff\\),r2.*
406 .*movhu r2,\\(0x1ffeff\\).*
407 .*movhu \\(2147417596,r1\\),r2.*
408 .*movhu r2,\\(2147417596,r1\\).*
409 .*movhu \\(2147417596,sp\\),r2.*
410 .*movhu r2,\\(2147417596,sp\\).*
411 .*movhu \\(0x7ffefdfc\\),r2.*
412 .*movhu r2,\\(0x7ffefdfc\\).*
413 .*$gdb_prompt $" { pass "movhu tests" }
414         -re "$gdb_prompt $" { fail "movhu tests" }
415         timeout { fail "(timeout) movhu tests" }
416     }
417 }
418
419 proc mac_tests { } {
420     global gdb_prompt
421     global hex
422     global decimal
423
424     send_gdb "x/28i mac_tests\n"
425     gdb_expect {
426         -re "
427 .*mac   r1,r2.*
428 .*macu  r3,r4.*
429 .*macb  r5,r6.*
430 .*macbu r7,a0.*
431 .*mach  a1,a2.*
432 .*machu a3,d0.*
433 .*dmach d1,d2.*
434 .*dmachu        d3,d2.*
435 .*mac   16,r1.*
436 .*macu  16,r1.*
437 .*macb  16,r1.*
438 .*macbu 16,r1.*
439 .*mach  16,r1.*
440 .*machu 16,r1.*
441 .*mac   2096895,r2.*
442 .*macu  2096895,r2.*
443 .*macb  2096895,r2.*
444 .*macbu 2096895,r2.*
445 .*mach  2096895,r2.*
446 .*machu 2096895,r2.*
447 .*mac   2147417596,r2.*
448 .*macu  2147417596,r2.*
449 .*macb  2147417596,r2.*
450 .*macbu 2147417596,r2.*
451 .*mach  2147417596,r2.*
452 .*machu 2147417596,r2.*
453 .*dmach 2147417596,r2.*
454 .*dmachu        2147417596,r2.*
455 .*$gdb_prompt $" { pass "mac tests" }
456         -re "$gdb_prompt $" { fail "mac tests" }
457         timeout { fail "(timeout) mac tests" }
458     }
459 }
460
461 proc bit_tests { } {
462     global gdb_prompt
463     global hex
464     global decimal
465
466     send_gdb "x/4i bit_tests\n"
467     gdb_expect {
468         -re "
469 .*bsch  r1,r2.*
470 .*btst  16,r1.*
471 .*btst  2096895,r2.*
472 .*btst  2147417596,r2.*
473 .*$gdb_prompt $" { pass "bit tests" }
474         -re "$gdb_prompt $" { fail "bit tests" }
475         timeout { fail "(timeout) bit tests" }
476     }
477 }
478
479 proc dsp_add_tests { } {
480     global gdb_prompt
481     global hex
482     global decimal
483
484     send_gdb "x/28i dsp_add_tests\n"
485     gdb_expect {
486         -re "
487 .*add_add       r4,r1,r2,r3.*
488 .*add_add       r4,r1,2,r3.*
489 .*add_sub       r4,r1,r2,r3.*
490 .*add_sub       r4,r1,2,r3.*
491 .*add_cmp       r4,r1,r2,r3.*
492 .*add_cmp       r4,r1,2,r3.*
493 .*add_mov       r4,r1,r2,r3.*
494 .*add_mov       r4,r1,2,r3.*
495 .*add_asr       r4,r1,r2,r3.*
496 .*add_asr       r4,r1,2,r3.*
497 .*add_lsr       r4,r1,r2,r3.*
498 .*add_lsr       r4,r1,2,r3.*
499 .*add_asl       r4,r1,r2,r3.*
500 .*add_asl       r4,r1,2,r3.*
501 .*add_add       4,r1,r2,r3.*
502 .*add_add       4,r1,2,r3.*
503 .*add_sub       4,r1,r2,r3.*
504 .*add_sub       4,r1,2,r3.*
505 .*add_cmp       4,r1,r2,r3.*
506 .*add_cmp       4,r1,2,r3.*
507 .*add_mov       4,r1,r2,r3.*
508 .*add_mov       4,r1,2,r3.*
509 .*add_asr       4,r1,r2,r3.*
510 .*add_asr       4,r1,2,r3.*
511 .*add_lsr       4,r1,r2,r3.*
512 .*add_lsr       4,r1,2,r3.*
513 .*add_asl       4,r1,r2,r3.*
514 .*add_asl       4,r1,2,r3.*
515 .*$gdb_prompt $" { pass "dsp_add tests" }
516         -re "$gdb_prompt $" { fail "dsp_add tests" }
517         timeout { fail "(timeout) dsp_add tests" }
518     }
519 }
520
521 proc dsp_cmp_tests { } {
522     global gdb_prompt
523     global hex
524     global decimal
525
526     send_gdb "x/24i dsp_cmp_tests\n"
527     gdb_expect {
528         -re "
529 .*cmp_add       r4,r1,r2,r3.*
530 .*cmp_add       r4,r1,2,r3.*
531 .*cmp_sub       r4,r1,r2,r3.*
532 .*cmp_sub       r4,r1,2,r3.*
533 .*cmp_mov       r4,r1,r2,r3.*
534 .*cmp_mov       r4,r1,2,r3.*
535 .*cmp_asr       r4,r1,r2,r3.*
536 .*cmp_asr       r4,r1,2,r3.*
537 .*cmp_lsr       r4,r1,r2,r3.*
538 .*cmp_lsr       r4,r1,2,r3.*
539 .*cmp_asl       r4,r1,r2,r3.*
540 .*cmp_asl       r4,r1,2,r3.*
541 .*cmp_add       4,r1,r2,r3.*
542 .*cmp_add       4,r1,2,r3.*
543 .*cmp_sub       4,r1,r2,r3.*
544 .*cmp_sub       4,r1,2,r3.*
545 .*cmp_mov       4,r1,r2,r3.*
546 .*cmp_mov       4,r1,2,r3.*
547 .*cmp_asr       4,r1,r2,r3.*
548 .*cmp_asr       4,r1,2,r3.*
549 .*cmp_lsr       4,r1,r2,r3.*
550 .*cmp_lsr       4,r1,2,r3.*
551 .*cmp_asl       4,r1,r2,r3.*
552 .*cmp_asl       4,r1,2,r3.*
553 .*$gdb_prompt $" { pass "dsp_cmp tests" }
554         -re "$gdb_prompt $" { fail "dsp_cmp tests" }
555         timeout { fail "(timeout) dsp_cmp tests" }
556     }
557 }
558
559 proc dsp_sub_tests { } {
560     global gdb_prompt
561     global hex
562     global decimal
563
564     send_gdb "x/28i dsp_sub_tests\n"
565     gdb_expect {
566         -re "
567 .*sub_add       r4,r1,r2,r3.*
568 .*sub_add       r4,r1,2,r3.*
569 .*sub_sub       r4,r1,r2,r3.*
570 .*sub_sub       r4,r1,2,r3.*
571 .*sub_cmp       r4,r1,r2,r3.*
572 .*sub_cmp       r4,r1,2,r3.*
573 .*sub_mov       r4,r1,r2,r3.*
574 .*sub_mov       r4,r1,2,r3.*
575 .*sub_asr       r4,r1,r2,r3.*
576 .*sub_asr       r4,r1,2,r3.*
577 .*sub_lsr       r4,r1,r2,r3.*
578 .*sub_lsr       r4,r1,2,r3.*
579 .*sub_asl       r4,r1,r2,r3.*
580 .*sub_asl       r4,r1,2,r3.*
581 .*sub_add       4,r1,r2,r3.*
582 .*sub_add       4,r1,2,r3.*
583 .*sub_sub       4,r1,r2,r3.*
584 .*sub_sub       4,r1,2,r3.*
585 .*sub_cmp       4,r1,r2,r3.*
586 .*sub_cmp       4,r1,2,r3.*
587 .*sub_mov       4,r1,r2,r3.*
588 .*sub_mov       4,r1,2,r3.*
589 .*sub_asr       4,r1,r2,r3.*
590 .*sub_asr       4,r1,2,r3.*
591 .*sub_lsr       4,r1,r2,r3.*
592 .*sub_lsr       4,r1,2,r3.*
593 .*sub_asl       4,r1,r2,r3.*
594 .*sub_asl       4,r1,2,r3.*
595 .*$gdb_prompt $" { pass "dsp_sub tests" }
596         -re "$gdb_prompt $" { fail "dsp_sub tests" }
597         timeout { fail "(timeout) dsp_sub tests" }
598     }
599 }
600
601 proc dsp_mov_tests { } {
602     global gdb_prompt
603     global hex
604     global decimal
605
606     send_gdb "x/28i dsp_mov_tests\n"
607     gdb_expect {
608         -re "
609 .*mov_add       r4,r1,r2,r3.*
610 .*mov_add       r4,r1,2,r3.*
611 .*mov_sub       r4,r1,r2,r3.*
612 .*mov_sub       r4,r1,2,r3.*
613 .*mov_cmp       r4,r1,r2,r3.*
614 .*mov_cmp       r4,r1,2,r3.*
615 .*mov_mov       r4,r1,r2,r3.*
616 .*mov_mov       r4,r1,2,r3.*
617 .*mov_asr       r4,r1,r2,r3.*
618 .*mov_asr       r4,r1,2,r3.*
619 .*mov_lsr       r4,r1,r2,r3.*
620 .*mov_lsr       r4,r1,2,r3.*
621 .*mov_asl       r4,r1,r2,r3.*
622 .*mov_asl       r4,r1,2,r3.*
623 .*mov_add       4,r1,r2,r3.*
624 .*mov_add       4,r1,2,r3.*
625 .*mov_sub       4,r1,r2,r3.*
626 .*mov_sub       4,r1,2,r3.*
627 .*mov_cmp       4,r1,r2,r3.*
628 .*mov_cmp       4,r1,2,r3.*
629 .*mov_mov       4,r1,r2,r3.*
630 .*mov_mov       4,r1,2,r3.*
631 .*mov_asr       4,r1,r2,r3.*
632 .*mov_asr       4,r1,2,r3.*
633 .*mov_lsr       4,r1,r2,r3.*
634 .*mov_lsr       4,r1,2,r3.*
635 .*mov_asl       4,r1,r2,r3.*
636 .*mov_asl       4,r1,2,r3.*
637 .*$gdb_prompt $" { pass "dsp_mov tests" }
638         -re "$gdb_prompt $" { fail "dsp_mov tests" }
639         timeout { fail "(timeout) dsp_mov tests" }
640     }
641 }
642
643 proc dsp_logical_tests { } {
644     global gdb_prompt
645     global hex
646     global decimal
647
648     send_gdb "x/42i dsp_logical_tests\n"
649     gdb_expect {
650         -re "
651 .*and_add       r4,r1,r2,r3.*
652 .*and_add       r4,r1,2,r3.*
653 .*and_sub       r4,r1,r2,r3.*
654 .*and_sub       r4,r1,2,r3.*
655 .*and_cmp       r4,r1,r2,r3.*
656 .*and_cmp       r4,r1,2,r3.*
657 .*and_mov       r4,r1,r2,r3.*
658 .*and_mov       r4,r1,2,r3.*
659 .*and_asr       r4,r1,r2,r3.*
660 .*and_asr       r4,r1,2,r3.*
661 .*and_lsr       r4,r1,r2,r3.*
662 .*and_lsr       r4,r1,2,r3.*
663 .*and_asl       r4,r1,r2,r3.*
664 .*and_asl       r4,r1,2,r3.*
665 .*xor_add       r4,r1,r2,r3.*
666 .*xor_add       r4,r1,2,r3.*
667 .*xor_sub       r4,r1,r2,r3.*
668 .*xor_sub       r4,r1,2,r3.*
669 .*xor_cmp       r4,r1,r2,r3.*
670 .*xor_cmp       r4,r1,2,r3.*
671 .*xor_mov       r4,r1,r2,r3.*
672 .*xor_mov       r4,r1,2,r3.*
673 .*xor_asr       r4,r1,r2,r3.*
674 .*xor_asr       r4,r1,2,r3.*
675 .*xor_lsr       r4,r1,r2,r3.*
676 .*xor_lsr       r4,r1,2,r3.*
677 .*xor_asl       r4,r1,r2,r3.*
678 .*xor_asl       r4,r1,2,r3.*
679 .*or_add        r4,r1,r2,r3.*
680 .*or_add        r4,r1,2,r3.*
681 .*or_sub        r4,r1,r2,r3.*
682 .*or_sub        r4,r1,2,r3.*
683 .*or_cmp        r4,r1,r2,r3.*
684 .*or_cmp        r4,r1,2,r3.*
685 .*or_mov        r4,r1,r2,r3.*
686 .*or_mov        r4,r1,2,r3.*
687 .*or_asr        r4,r1,r2,r3.*
688 .*or_asr        r4,r1,2,r3.*
689 .*or_lsr        r4,r1,r2,r3.*
690 .*or_lsr        r4,r1,2,r3.*
691 .*or_asl        r4,r1,r2,r3.*
692 .*or_asl        r4,r1,2,r3.*
693 .*$gdb_prompt $" { pass "dsp_logical tests" }
694         -re "$gdb_prompt $" { fail "dsp_logical tests" }
695         timeout { fail "(timeout) dsp_logical tests" }
696     }
697 }
698
699 proc dsp_misc_tests { } {
700     global gdb_prompt
701     global hex
702     global decimal
703
704     send_gdb "x/42i dsp_misc_tests\n"
705     gdb_expect {
706         -re "
707 .*dmach_add     r4,r1,r2,r3.*
708 .*dmach_add     r4,r1,2,r3.*
709 .*dmach_sub     r4,r1,r2,r3.*
710 .*dmach_sub     r4,r1,2,r3.*
711 .*dmach_cmp     r4,r1,r2,r3.*
712 .*dmach_cmp     r4,r1,2,r3.*
713 .*dmach_mov     r4,r1,r2,r3.*
714 .*dmach_mov     r4,r1,2,r3.*
715 .*dmach_asr     r4,r1,r2,r3.*
716 .*dmach_asr     r4,r1,2,r3.*
717 .*dmach_lsr     r4,r1,r2,r3.*
718 .*dmach_lsr     r4,r1,2,r3.*
719 .*dmach_asl     r4,r1,r2,r3.*
720 .*dmach_asl     r4,r1,2,r3.*
721 .*swhw_add      r4,r1,r2,r3.*
722 .*swhw_add      r4,r1,2,r3.*
723 .*swhw_sub      r4,r1,r2,r3.*
724 .*swhw_sub      r4,r1,2,r3.*
725 .*swhw_cmp      r4,r1,r2,r3.*
726 .*swhw_cmp      r4,r1,2,r3.*
727 .*swhw_mov      r4,r1,r2,r3.*
728 .*swhw_mov      r4,r1,2,r3.*
729 .*swhw_asr      r4,r1,r2,r3.*
730 .*swhw_asr      r4,r1,2,r3.*
731 .*swhw_lsr      r4,r1,r2,r3.*
732 .*swhw_lsr      r4,r1,2,r3.*
733 .*swhw_asl      r4,r1,r2,r3.*
734 .*swhw_asl      r4,r1,2,r3.*
735 .*sat16_add     r4,r1,r2,r3.*
736 .*sat16_add     r4,r1,2,r3.*
737 .*sat16_sub     r4,r1,r2,r3.*
738 .*sat16_sub     r4,r1,2,r3.*
739 .*sat16_cmp     r4,r1,r2,r3.*
740 .*sat16_cmp     r4,r1,2,r3.*
741 .*sat16_mov     r4,r1,r2,r3.*
742 .*sat16_mov     r4,r1,2,r3.*
743 .*sat16_asr     r4,r1,r2,r3.*
744 .*sat16_asr     r4,r1,2,r3.*
745 .*sat16_lsr     r4,r1,r2,r3.*
746 .*sat16_lsr     r4,r1,2,r3.*
747 .*sat16_asl     r4,r1,r2,r3.*
748 .*sat16_asl     r4,r1,2,r3.*
749 .*$gdb_prompt $" { pass "dsp_misc tests" }
750         -re "$gdb_prompt $" { fail "dsp_misc tests" }
751         timeout { fail "(timeout) dsp_misc tests" }
752     }
753 }
754
755 proc autoincrement_tests { } {
756     global gdb_prompt
757     global hex
758     global decimal
759
760     send_gdb "x/16i autoincrement_tests\n"
761     gdb_expect {
762         -re "
763 .*mov   \\(r1\\+\\),r2.*
764 .*mov   r3,\\(r4\\+\\).*
765 .*movhu \\(r6\\+\\),r7.*
766 .*movhu a0,\\(a1\\+\\).*
767 .*mov   \\(r1\\+,64\\),r2.*
768 .*mov   r1,\\(r2\\+,64\\).*
769 .*movhu \\(r1\\+,64\\),r2.*
770 .*movhu r1,\\(r2\\+,64\\).*
771 .*mov   \\(r1\\+,131055\\),r2.*
772 .*mov   r1,\\(r2\\+,131055\\).*
773 .*movhu \\(r1\\+,131055\\),r2.*
774 .*movhu r1,\\(r2\\+,131055\\).*
775 .*mov   \\(r1\\+,2147417596\\),r2.*
776 .*mov   r1,\\(r2\\+,2147417596\\).*
777 .*movhu \\(r1\\+,2147417596\\),r2.*
778 .*movhu r1,\\(r2\\+,2147417596\\).*
779 .*$gdb_prompt $" { pass "autoincrement tests" }
780         -re "$gdb_prompt $" { fail "autoincrement tests" }
781         timeout { fail "(timeout) autoincrement tests" }
782     }
783 }
784
785 proc dsp_autoincrement_tests { } {
786     global gdb_prompt
787     global hex
788     global decimal
789
790     send_gdb "x/11i dsp_autoincrement_tests\n"
791     gdb_expect {
792         -re "
793 .*mov_llt       \\(r1\\+,4\\),r2.*
794 .*mov_lgt       \\(r1\\+,4\\),r2.*
795 .*mov_lge       \\(r1\\+,4\\),r2.*
796 .*mov_lle       \\(r1\\+,4\\),r2.*
797 .*mov_lcs       \\(r1\\+,4\\),r2.*
798 .*mov_lhi       \\(r1\\+,4\\),r2.*
799 .*mov_lcc       \\(r1\\+,4\\),r2.*
800 .*mov_lls       \\(r1\\+,4\\),r2.*
801 .*mov_leq       \\(r1\\+,4\\),r2.*
802 .*mov_lne       \\(r1\\+,4\\),r2.*
803 .*mov_lra       \\(r1\\+,4\\),r2.*
804 .*$gdb_prompt $" { pass "autoincrement tests" }
805         -re "$gdb_prompt $" { fail "autoincrement tests" }
806         timeout { fail "(timeout) autoincrement tests" }
807     }
808 }
809
810 # Start with a fresh gdb.
811
812 gdb_exit
813 gdb_start
814 gdb_reinitialize_dir $srcdir/$subdir
815 gdb_load $binfile
816
817 call_tests
818 movm_tests
819 misc_tests
820 mov_tests
821 ext_tests
822 add_tests
823 sub_tests
824 cmp_tests
825 logical_tests
826 shift_tests
827 muldiv_tests
828 movbu_tests
829 movhu_tests
830 mac_tests
831 bit_tests
832 dsp_add_tests
833 dsp_cmp_tests
834 dsp_sub_tests
835 dsp_mov_tests
836 dsp_logical_tests
837 autoincrement_tests
838 dsp_autoincrement_tests