xref: /netbsd-src/external/gpl3/gdb/dist/gdb/testsuite/gdb.disasm/mn10300.exp (revision 62f324d0121177eaf2e0384f92fd9ca2a751c795)
1
2# Copyright 1997, 2007, 2008, 2009, 2010, 2011 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# This file was written by Jeff Law. (law@cygnus.com)
18
19if $tracelevel then {
20	strace $tracelevel
21}
22
23if ![istarget "mn10300*-*-*"] {
24    verbose "Tests ignored for all but mn10300 based targets."
25    return
26}
27
28global exec_output
29
30set testfile "mn10300"
31set srcfile ${srcdir}/${subdir}/${testfile}.s
32set binfile ${objdir}/${subdir}/${testfile}
33if  { [gdb_compile "${srcfile}" "${binfile}" executable ""] != "" } {
34     untested mn10300.exp
35     return -1
36}
37
38proc add_tests { } {
39    global gdb_prompt
40    global hex
41    global decimal
42
43    send_gdb "x/14i add_tests\n"
44    gdb_expect {
45	-re "
46.*add	d1,d2.*
47.*add	d2,a3.*
48.*add	a3,a2.*
49.*add	a2,d1.*
50.*add	16,d1.*
51.*add	256,d2.*
52.*add	131071,d3.*
53.*add	16,a1.*
54.*add	256,a2.*
55.*add	131071,a3.*
56.*add	16,sp.*
57.*add	256,sp.*
58.*add	131071,sp.*
59.*addc	d1,d2.*
60.*$gdb_prompt $" { pass "add tests" }
61	-re "$gdb_prompt $" { fail "add tests" }
62	timeout { fail "(timeout) add tests" }
63    }
64}
65
66proc bcc_tests { } {
67    global gdb_prompt
68    global hex
69    global decimal
70
71    send_gdb "x/15i bCC_tests\n"
72    gdb_expect {
73	-re "
74.*beq	0x\[0-9a-f]+ <bCC_tests>.*
75.*bne	0x\[0-9a-f]+ <bCC_tests>.*
76.*bgt	0x\[0-9a-f]+ <bCC_tests>.*
77.*bge	0x\[0-9a-f]+ <bCC_tests>.*
78.*ble	0x\[0-9a-f]+ <bCC_tests>.*
79.*blt	0x\[0-9a-f]+ <bCC_tests>.*
80.*bhi	0x\[0-9a-f]+ <bCC_tests>.*
81.*bcc	0x\[0-9a-f]+ <bCC_tests>.*
82.*bls	0x\[0-9a-f]+ <bCC_tests>.*
83.*bcs	0x\[0-9a-f]+ <bCC_tests>.*
84.*bvc	0x\[0-9a-f]+ <bCC_tests>.*
85.*bvs	0x\[0-9a-f]+ <bCC_tests>.*
86.*bnc	0x\[0-9a-f]+ <bCC_tests>.*
87.*bns	0x\[0-9a-f]+ <bCC_tests>.*
88.*bra	0x\[0-9a-f]+ <bCC_tests>.*
89.*$gdb_prompt $" { pass "bCC tests" }
90	-re "$gdb_prompt $" { fail "bCC tests" }
91	timeout { fail "(timeout) bCC tests" }
92    }
93}
94
95proc bit_tests { } {
96    global gdb_prompt
97    global hex
98    global decimal
99
100    send_gdb "x/11i bit_tests\n"
101    gdb_expect {
102	-re "
103.*btst	64,d1.*
104.*btst	8192,d2.*
105.*btst	131071,d3.*
106.*btst	64,\\(8,a1\\).*
107.*btst	64,\\(0x1ffff\\).*
108.*bset	d1,\\(a2\\).*
109.*bset	64,\\(8,a1\\).*
110.*bset	64,\\(0x1ffff\\).*
111.*bclr	d1,\\(a2\\).*
112.*bclr	64,\\(8,a1\\).*
113.*bclr	64,\\(0x1ffff\\).*
114.*$gdb_prompt $" { pass "bit tests" }
115	-re "$gdb_prompt $" { fail "bit tests" }
116	timeout { fail "(timeout) bit tests" }
117    }
118}
119
120proc cmp_tests { } {
121    global gdb_prompt
122    global hex
123    global decimal
124
125    send_gdb "x/10i cmp_tests\n"
126    gdb_expect {
127	-re "
128.*cmp	d1,d2.*
129.*cmp	d2,a3.*
130.*cmp	a3,d3.*
131.*cmp	a3,a2.*
132.*cmp	16,d3.*
133.*cmp	256,d2.*
134.*cmp	131071,d1.*
135.*cmp	16,a3.*
136.*cmp	256,a2.*
137.*cmp	131071,a1.*
138.*$gdb_prompt $" { pass "cmp tests" }
139	-re "$gdb_prompt $" { fail "cmp tests" }
140	timeout { fail "(timeout) cmp tests" }
141    }
142}
143
144proc extend_tests { } {
145    global gdb_prompt
146    global hex
147    global decimal
148
149    send_gdb "x/5i extend_tests\n"
150    gdb_expect {
151	-re "
152.*ext	d1.*
153.*extb	d2.*
154.*extbu	d3.*
155.*exth	d2.*
156.*exthu	d1.*
157.*$gdb_prompt $" { pass "extend tests" }
158	-re "$gdb_prompt $" { fail "extend tests" }
159	timeout { fail "(timeout) extend tests" }
160    }
161}
162
163proc extended_tests { } {
164    global gdb_prompt
165    global hex
166    global decimal
167
168    send_gdb "x/13i extended_tests\n"
169    gdb_expect {
170	-re "
171.*putx	d1.*
172.*getx	d2.*
173.*mulq	d1,d2.*
174.*mulq	16,d2.*
175.*mulq	256,d3.*
176.*mulq	131071,d3.*
177.*mulqu	d1,d2.*
178.*mulqu	16,d2.*
179.*mulqu	256,d3.*
180.*mulqu	131071,d3.*
181.*sat16	d2,d3.*
182.*sat24	d3,d2.*
183.*bsch	d1,d2.*
184.*$gdb_prompt $" { pass "extended tests" }
185	-re "$gdb_prompt $" { fail "extended tests" }
186	timeout { fail "(timeout) extended tests" }
187    }
188}
189
190proc logical_tests { } {
191    global gdb_prompt
192    global hex
193    global decimal
194
195    send_gdb "x/14i logical_tests\n"
196    gdb_expect {
197	-re "
198.*and	d1,d2.*
199.*and	127,d2.*
200.*and	32767,d3.*
201.*and	131071,d3.*
202.*and	32767,psw.*
203.*or	d1,d2.*
204.*or	127,d2.*
205.*or	32767,d3.*
206.*or	131071,d3.*
207.*or	32767,psw.*
208.*xor	d1,d2.*
209.*xor	32767,d3.*
210.*xor	131071,d3.*
211.*not	d3.*
212.*$gdb_prompt $" { pass "logical tests" }
213	-re "$gdb_prompt $" { fail "logical tests" }
214	timeout { fail "(timeout) logical tests" }
215    }
216}
217
218proc loop_tests { } {
219    global gdb_prompt
220    global hex
221    global decimal
222
223    send_gdb "x/12i loop_tests\n"
224    gdb_expect {
225	-re "
226.*leq.*
227.*lne.*
228.*lgt.*
229.*lge.*
230.*lle.*
231.*llt.*
232.*lhi.*
233.*lcc.*
234.*lls.*
235.*lcs.*
236.*lra.*
237.*setlb.*
238.*$gdb_prompt $" { pass "loop tests" }
239	-re "$gdb_prompt $" { fail "loop tests" }
240	timeout { fail "(timeout) loop tests" }
241    }
242}
243
244proc mov_tests_1 { } {
245    global gdb_prompt
246    global hex
247    global decimal
248
249    send_gdb "x/16i mov_tests_1\n"
250    gdb_expect {
251	-re "
252.*mov	d1,d2.*
253.*mov	d1,a2.*
254.*mov	a2,d1.*
255.*mov	a2,a1.*
256.*mov	sp,a2.*
257.*mov	a1,sp.*
258.*mov	d2,psw.*
259.*mov	mdr,d1.*
260.*mov	d2,mdr.*
261.*mov	\\(a2\\),d1.*
262.*mov	\\(8,a2\\),d1.*
263.*mov	\\(256,a2\\),d1.*
264.*mov	\\(131071,a2\\),d1.*
265.*mov	\\(8,sp\\),d1.*
266.*mov	\\(256,sp\\),d1.*
267.*mov	psw,d3.*
268.*$gdb_prompt $" { pass "mov1 tests" }
269	-re "$gdb_prompt $" { fail "mov1 tests" }
270	timeout { fail "(timeout) mov1 tests" }
271    }
272}
273
274proc mov_tests_2 { } {
275    global gdb_prompt
276    global hex
277    global decimal
278
279    send_gdb "x/15i mov_tests_2\n"
280    gdb_expect {
281	-re "
282.*mov	\\(131071,sp\\),d1.*
283.*mov	\\(d1,a1\\),d2.*
284.*mov	\\(0x8000.*\\),d1.*
285.*mov	\\(0x1ffff.*\\),d1.*
286.*mov	\\(a2\\),a1.*
287.*mov	\\(8,a2\\),a1.*
288.*mov	\\(256,a2\\),a1.*
289.*mov	\\(131071,a2\\),a1.*
290.*mov	\\(8,sp\\),a1.*
291.*mov	\\(256,sp\\),a1.*
292.*mov	\\(131071,sp\\),a1.*
293.*mov	\\(d1,a1\\),a2.*
294.*mov	\\(0x8000.*\\),a1.*
295.*mov	\\(0x1ffff.*\\),a1.*
296.*mov	\\(32,a1\\),sp.*
297.*$gdb_prompt $" { pass "mov2 tests" }
298	-re "$gdb_prompt $" { fail "mov2 tests" }
299	timeout { fail "(timeout) mov2 tests" }
300    }
301}
302
303proc mov_tests_3 { } {
304    global gdb_prompt
305    global hex
306    global decimal
307
308    send_gdb "x/15i mov_tests_3\n"
309    gdb_expect {
310	-re "
311.*mov	d1,\\(a2\\).*
312.*mov	d1,\\(32,a2\\).*
313.*mov	d1,\\(256,a2\\).*
314.*mov	d1,\\(131071,a2\\).*
315.*mov	d1,\\(32,sp\\).*
316.*mov	d1,\\(32768,sp\\).*
317.*mov	d1,\\(131071,sp\\).*
318.*mov	d1,\\(d2,a2\\).*
319.*mov	d1,\\(0x80.*\\).*
320.*mov	d1,\\(0x1ffff.*\\).*
321.*mov	a1,\\(a2\\).*
322.*mov	a1,\\(32,a2\\).*
323.*mov	a1,\\(256,a2\\).*
324.*mov	a1,\\(131071,a2\\).*
325.*mov	a1,\\(32,sp\\).*
326.*$gdb_prompt $" { pass "mov3 tests" }
327	-re "$gdb_prompt $" { fail "mov3 tests" }
328	timeout { fail "(timeout) mov3 tests" }
329    }
330}
331
332proc mov_tests_4 { } {
333    global gdb_prompt
334    global hex
335    global decimal
336
337    send_gdb "x/12i mov_tests_4\n"
338    gdb_expect {
339	-re "
340.*mov	a1,\\(32768,sp\\).*
341.*mov	a1,\\(131071,sp\\).*
342.*mov	a1,\\(d2,a2\\).*
343.*mov	a1,\\(0x80.*\\).*
344.*mov	a1,\\(0x1ffff.*\\).*
345.*mov	sp,\\(32,a1\\).*
346.*mov	8,d1.*
347.*mov	256,d1.*
348.*mov	131071,d1.*
349.*mov	8,a1.*
350.*mov	256,a1.*
351.*mov	131071,a1.*
352.*$gdb_prompt $" { pass "mov4 tests" }
353	-re "$gdb_prompt $" { fail "mov4 tests" }
354	timeout { fail "(timeout) mov4 tests" }
355    }
356}
357
358proc movbu_tests { } {
359    global gdb_prompt
360    global hex
361    global decimal
362
363    send_gdb "x/20i movbu_tests\n"
364    gdb_expect {
365	-re "
366.*movbu	\\(a2\\),d1.*
367.*movbu	\\(8,a2\\),d1.*
368.*movbu	\\(256,a2\\),d1.*
369.*movbu	\\(131071,a2\\),d1.*
370.*movbu	\\(8,sp\\),d1.*
371.*movbu	\\(256,sp\\),d1.*
372.*movbu	\\(131071,sp\\),d1.*
373.*movbu	\\(d1,a1\\),d2.*
374.*movbu	\\(0x8000.*\\),d1.*
375.*movbu	\\(0x1ffff.*\\),d1.*
376.*movbu	d1,\\(a2\\).*
377.*movbu	d1,\\(32,a2\\).*
378.*movbu	d1,\\(256,a2\\).*
379.*movbu	d1,\\(131071,a2\\).*
380.*movbu	d1,\\(32,sp\\).*
381.*movbu	d1,\\(32768,sp\\).*
382.*movbu	d1,\\(131071,sp\\).*
383.*movbu	d1,\\(d2,a2\\).*
384.*movbu	d1,\\(0x80.*\\).*
385.*movbu	d1,\\(0x1ffff.*\\).*
386.*$gdb_prompt $" { pass "movbu tests" }
387	-re "$gdb_prompt $" { fail "movbu tests" }
388	timeout { fail "(timeout) movbu tests" }
389    }
390}
391
392proc movhu_tests { } {
393    global gdb_prompt
394    global hex
395    global decimal
396
397    send_gdb "x/20i movhu_tests\n"
398    gdb_expect {
399	-re "
400.*movhu	\\(a2\\),d1.*
401.*movhu	\\(8,a2\\),d1.*
402.*movhu	\\(256,a2\\),d1.*
403.*movhu	\\(131071,a2\\),d1.*
404.*movhu	\\(8,sp\\),d1.*
405.*movhu	\\(256,sp\\),d1.*
406.*movhu	\\(131071,sp\\),d1.*
407.*movhu	\\(d1,a1\\),d2.*
408.*movhu	\\(0x8000.*\\),d1.*
409.*movhu	\\(0x1ffff.*\\),d1.*
410.*movhu	d1,\\(a2\\).*
411.*movhu	d1,\\(32,a2\\).*
412.*movhu	d1,\\(256,a2\\).*
413.*movhu	d1,\\(131071,a2\\).*
414.*movhu	d1,\\(32,sp\\).*
415.*movhu	d1,\\(32768,sp\\).*
416.*movhu	d1,\\(131071,sp\\).*
417.*movhu	d1,\\(d2,a2\\).*
418.*movhu	d1,\\(0x80.*\\).*
419.*movhu	d1,\\(0x1ffff.*\\).*
420.*$gdb_prompt $" { pass "movhu tests" }
421	-re "$gdb_prompt $" { fail "movhu tests" }
422	timeout { fail "(timeout) movhu tests" }
423    }
424}
425
426proc movm_tests { } {
427    global gdb_prompt
428    global hex
429    global decimal
430
431    send_gdb "x/4i movm_tests\n"
432    gdb_expect {
433	-re "
434.*movm	\\(sp\\),.a2,a3..*
435.*movm	\\(sp\\),.d2,d3,a2,a3,other..*
436.*movm	.a2,a3.,\\(sp\\).*
437.*movm	.d2,d3,a2,a3,other.,\\(sp\\).*
438.*$gdb_prompt $" { pass "movm tests" }
439	-re "$gdb_prompt $" { fail "movm tests" }
440	timeout { fail "(timeout) movm tests" }
441    }
442}
443
444proc muldiv_tests { } {
445    global gdb_prompt
446    global hex
447    global decimal
448
449    send_gdb "x/4i muldiv_tests\n"
450    gdb_expect {
451	-re "
452.*mul	d1,d2.*
453.*mulu	d2,d3.*
454.*div	d3,d3.*
455.*divu	d3,d2.*
456.*$gdb_prompt $" { pass "muldiv tests" }
457	-re "$gdb_prompt $" { fail "muldiv tests" }
458	timeout { fail "(timeout) muldiv tests" }
459    }
460}
461
462proc other_tests { } {
463    global gdb_prompt
464    global hex
465    global decimal
466
467    send_gdb "x/19i other_tests\n"
468    gdb_expect {
469	-re "
470.*clr	d2.*
471.*inc	d1.*
472.*inc	a2.*
473.*inc4	a3.*
474.*jmp	\\(a2\\).*
475.*jmp	0x\[0-9a-f]+ <main>.*
476.*jmp	0x\[0-9a-f]+ <start>.*
477.*call	0x\[0-9a-f]+ <main>,.a2,a3.,9.*
478.*call	0x\[0-9a-f]+ <start>,.a2,a3.,32.*
479.*calls	\\(a2\\).*
480.*calls	0x\[0-9a-f]+ <main>.*
481.*calls	0x\[0-9a-f]+ <start>.*
482.*ret	.a2,a3.,7.*
483.*retf	.a2,a3.,5.*
484.*rets.*
485.*rti.*
486.*trap.*
487.*nop.*
488.*rtm.*
489.*$gdb_prompt $" { pass "other tests" }
490	-re "$gdb_prompt $" { fail "other tests" }
491	timeout { fail "(timeout) other tests" }
492    }
493}
494
495proc shift_tests { } {
496    global gdb_prompt
497    global hex
498    global decimal
499
500    send_gdb "x/9i shift_tests\n"
501    gdb_expect {
502	-re "
503.*asr	d1,d2.*
504.*asr	4,d2.*
505.*lsr	d2,d3.*
506.*lsr	4,d3.*
507.*asl	d3,d2.*
508.*asl	4,d2.*
509.*asl2	d2.*
510.*ror	d1.*
511.*rol	d2.*
512.*$gdb_prompt $" { pass "shift tests" }
513	-re "$gdb_prompt $" { fail "shift tests" }
514	timeout { fail "(timeout) shift tests" }
515    }
516}
517
518proc sub_tests { } {
519    global gdb_prompt
520    global hex
521    global decimal
522
523    send_gdb "x/7i sub_tests\n"
524    gdb_expect {
525	-re "
526.*sub	d1,d2.*
527.*sub	d2,a3.*
528.*sub	a3,d3.*
529.*sub	a3,a2.*
530.*sub	131071,d2.*
531.*sub	131071,a1.*
532.*subc	d1,d2.*
533.*$gdb_prompt $" { pass "sub tests" }
534	-re "$gdb_prompt $" { fail "sub tests" }
535	timeout { fail "(timeout) sub tests" }
536    }
537}
538
539# Start with a fresh gdb.
540
541gdb_exit
542gdb_start
543gdb_reinitialize_dir $srcdir/$subdir
544gdb_load $binfile
545
546add_tests
547bcc_tests
548bit_tests
549cmp_tests
550extend_tests
551extended_tests
552logical_tests
553loop_tests
554mov_tests_1
555mov_tests_2
556mov_tests_3
557mov_tests_4
558movbu_tests
559movhu_tests
560movm_tests
561muldiv_tests
562other_tests
563shift_tests
564sub_tests
565