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