diff options
Diffstat (limited to 'gdb/testsuite/gdb.disasm/am33.exp')
-rw-r--r-- | gdb/testsuite/gdb.disasm/am33.exp | 838 |
1 files changed, 838 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.disasm/am33.exp b/gdb/testsuite/gdb.disasm/am33.exp new file mode 100644 index 0000000..0337be8 --- /dev/null +++ b/gdb/testsuite/gdb.disasm/am33.exp @@ -0,0 +1,838 @@ + +# Copyright (C) 1997 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@prep.ai.mit.edu + +# This file was written by Jeff Law. (law@cygnus.com) + +if $tracelevel then { + strace $tracelevel +} + +if ![istarget "mn10300*-*-*"] { + verbose "Tests ignored for all but mn10300 based targets." + return +} + +global exec_output +set prms_id 0 +set bug_id 0 + +set testfile "am33" +set srcfile ${srcdir}/${subdir}/${testfile}.s +set binfile ${objdir}/${subdir}/${testfile} +if { [gdb_compile "${srcfile}" "${binfile}" object ""] != "" } { + gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." +} + +proc call_tests { } { + global gdb_prompt + global hex + global decimal + + send_gdb "x/8i call_tests\n" + gdb_expect { + -re " +.*call .*,.a2,a3,exreg0.,9.* +.*call .*,.a2,a3,exreg1.,9.* +.*call .*,.a2,a3,exother.,9.* +.*call .*,.d2,d3,a2,a3,other,exreg0,exreg1,exother.,9.* +.*call .*,.a2,a3,exreg0.,9.* +.*call .*,.a2,a3,exreg1.,9.* +.*call .*,.a2,a3,exother.,9.* +.*call .*,.d2,d3,a2,a3,other,exreg0,exreg1,exother.,9.* +.*$gdb_prompt $" { pass "call tests" } + -re "$gdb_prompt $" { fail "call tests" } + timeout { fail "(timeout) call tests" } + } +} + +proc movm_tests { } { + global gdb_prompt + global hex + global decimal + + send_gdb "x/16i movm_tests\n" + gdb_expect { + -re " +.*movm \\(sp\\),.a2,a3,exreg0.* +.*movm \\(sp\\),.a2,a3,exreg1.* +.*movm \\(sp\\),.a2,a3,exother.* +.*movm \\(sp\\),.d2,d3,a2,a3,other,exreg0,exreg1,exother.* +.*movm .a2,a3,exreg0.,\\(sp\\).* +.*movm .a2,a3,exreg1.,\\(sp\\).* +.*movm .a2,a3,exother.,\\(sp\\).* +.*movm .d2,d3,a2,a3,other,exreg0,exreg1,exother.,\\(sp\\).* +.*movm \\(usp\\),.a2,a3,exreg0.* +.*movm \\(usp\\),.a2,a3,exreg1.* +.*movm \\(usp\\),.a2,a3,exother.* +.*movm \\(usp\\),.d2,d3,a2,a3,other,exreg0,exreg1,exother.* +.*movm .a2,a3,exreg0.,\\(usp\\).* +.*movm .a2,a3,exreg1.,\\(usp\\).* +.*movm .a2,a3,exother.,\\(usp\\).* +.*movm .d2,d3,a2,a3,other,exreg0,exreg1,exother.,\\(usp\\).* +.*$gdb_prompt $" { pass "movm tests" } + -re "$gdb_prompt $" { fail "movm tests" } + timeout { fail "(timeout) movm tests" } + } +} + +proc misc_tests { } { + global gdb_prompt + global hex + global decimal + + send_gdb "x/11i misc_tests\n" + gdb_expect { + -re " +.*syscall 4.* +.*mcst9 d0.* +.*mcst48 d1.* +.*getchx d0.* +.*getclx d1.* +.*clr a1.* +.*sat16 a1,a0.* +.*mcste r7,r6.* +.*swap r5,r4.* +.*swaph r3,r2.* +.*swhw r1,r0.* +.*$gdb_prompt $" { pass "misc tests" } + -re "$gdb_prompt $" { fail "misc tests" } + timeout { fail "(timeout) misc tests" } + } +} + +proc mov_tests { } { + global gdb_prompt + global hex + global decimal + + send_gdb "x/45i mov_tests\n" + gdb_expect { + -re " +.*mov r0,r1.* +.*mov sp,r1.* +.*mov r1,xr2.* +.*mov \\(r1\\),r2.* +.*mov r3,\\(r4\\).* +.*mov \\(sp\\),r5.* +.*mov r6,\\(sp\\).* +.*mov 16,r1.* +.*mov 16,xr1.* +.*mov \\(16,r1\\),r2.* +.*mov r2,\\(16,r1\\).* +.*mov \\(16,sp\\),r2.* +.*mov r2,\\(16,sp\\).* +.*mov 2096895,r2.* +.*mov 2096895,xr2.* +.*mov \\(2096895,r1\\),r2.* +.*mov r2,\\(2096895,r1\\).* +.*mov \\(2096895,sp\\),r2.* +.*mov r2,\\(2096895,sp\\).* +.*mov \\(0x1ffeff\\),r2.* +.*mov r2,\\(0x1ffeff\\).* +.*mov 2147417596,r2.* +.*mov 2147417596,xr2.* +.*mov \\(2147417596,r1\\),r2.* +.*mov r2,\\(2147417596,r1\\).* +.*mov \\(2147417596,sp\\),r2.* +.*mov r2,\\(2147417596,sp\\).* +.*mov \\(0x7ffefdfc\\),r2.* +.*mov r2,\\(0x7ffefdfc\\).* +.*movu 16,r1.* +.*movu 2096895,r2.* +.*movu 2147417596,r2.* +.*mov usp,a0.* +.*mov ssp,a1.* +.*mov msp,a2.* +.*mov pc,a3.* +.*mov a0,usp.* +.*mov a1,ssp.* +.*mov a2,msp.* +.*mov epsw,d0.* +.*mov d1,epsw.* +.*mov a0,r1.* +.*mov d2,r3.* +.*mov r5,a1.* +.*mov r7,d3.* +.*$gdb_prompt $" { pass "mov tests" } + -re "$gdb_prompt $" { fail "mov tests" } + timeout { fail "(timeout) mov tests" } + } +} + +proc ext_tests { } { + global gdb_prompt + global hex + global decimal + + send_gdb "x/5i ext_tests\n" + gdb_expect { + -re " +.*ext r2.* +.*extb r3,r4.* +.*extbu r4,r5.* +.*exth r6,r7.* +.*exthu r7,a0.* +.*$gdb_prompt $" { pass "ext tests" } + -re "$gdb_prompt $" { fail "ext tests" } + timeout { fail "(timeout) ext tests" } + } +} + +proc add_tests { } { + global gdb_prompt + global hex + global decimal + + send_gdb "x/11i add_tests\n" + gdb_expect { + -re " +.*add a2,a3.* +.*add 16,r1.* +.*add 2096895,r2.* +.*add 2147417596,r2.* +.*add r1,r2,r3.* +.*addc d0,d1.* +.*addc 16,r1.* +.*addc 2096895,r2.* +.*addc 2147417596,r2.* +.*inc d1.* +.*inc4 d0.* +.*$gdb_prompt $" { pass "add tests" } + -re "$gdb_prompt $" { fail "add tests" } + timeout { fail "(timeout) add tests" } + } +} + +proc sub_tests { } { + global gdb_prompt + global hex + global decimal + + send_gdb "x/8i sub_tests\n" + gdb_expect { + -re " +.*sub d2,d3.* +.*sub 16,r1.* +.*sub 2096895,r2.* +.*sub 2147417596,r2.* +.*subc d3,d2.* +.*subc 16,r1.* +.*subc 2096895,r2.* +.*subc 2147417596,r2.* +.*$gdb_prompt $" { pass "sub tests" } + -re "$gdb_prompt $" { fail "sub tests" } + timeout { fail "(timeout) sub tests" } + } +} + +proc cmp_tests { } { + global gdb_prompt + global hex + global decimal + + send_gdb "x/4i cmp_tests\n" + gdb_expect { + -re " +.*cmp a3,a2.* +.*cmp 16,r1.* +.*cmp 2096895,r2.* +.*cmp 2147417596,r2.* +.*$gdb_prompt $" { pass "cmp tests" } + -re "$gdb_prompt $" { fail "cmp tests" } + timeout { fail "(timeout) cmp tests" } + } +} + +proc logical_tests { } { + global gdb_prompt + global hex + global decimal + + send_gdb "x/15i logical_tests\n" + gdb_expect { + -re " +.*and r0,r1.* +.*or r2,r3.* +.*xor r4,r5.* +.*not r6.* +.*and 16,r1.* +.*or 16,r1.* +.*xor 16,r1.* +.*and 2096895,r2.* +.*or 2096895,r2.* +.*xor 2096895,r2.* +.*and 2147417596,r2.* +.*or 2147417596,r2.* +.*xor 2147417596,r2.* +.*and 131072,epsw.* +.*or 65535,epsw.* +.*$gdb_prompt $" { pass "logical tests" } + -re "$gdb_prompt $" { fail "logical tests" } + timeout { fail "(timeout) logical tests" } + } +} + +proc shift_tests { } { + global gdb_prompt + global hex + global decimal + + send_gdb "x/15i shift_tests\n" + gdb_expect { + -re " +.*asr r7,a0.* +.*lsr a1,a2.* +.*asl a3,d0.* +.*asl2 d1.* +.*ror d2.* +.*rol d3.* +.*asr 16,r1.* +.*lsr 16,r1.* +.*asl 16,r1.* +.*asr 2096895,r2.* +.*lsr 2096895,r2.* +.*asl 2096895,r2.* +.*asr 2147417596,r2.* +.*lsr 2147417596,r2.* +.*asl 2147417596,r2.* +.*$gdb_prompt $" { pass "shift tests" } + -re "$gdb_prompt $" { fail "shift tests" } + timeout { fail "(timeout) shift tests" } + } +} + +proc muldiv_tests { } { + global gdb_prompt + global hex + global decimal + + send_gdb "x/16i muldiv_tests\n" + gdb_expect { + -re " +.*mul r1,r2.* +.*mulu r3,r4.* +.*mul 16,r1.* +.*mulu 16,r1.* +.*mul 2096895,r2.* +.*mulu 2096895,r2.* +.*mul 2147417596,r2.* +.*mulu 2147417596,r2.* +.*div r5,r6.* +.*divu r7,a0.* +.*dmulh d1,d0.* +.*dmulhu a3,a2.* +.*dmulh 2147417596,r2.* +.*dmulhu 2147417596,r2.* +.*mul r1,r2,r3,r4.* +.*mulu r1,r2,r3,r4.* +.*$gdb_prompt $" { pass "muldiv tests" } + -re "$gdb_prompt $" { fail "muldiv tests" } + timeout { fail "(timeout) muldiv tests" } + } +} + +proc movbu_tests { } { + global gdb_prompt + global hex + global decimal + + send_gdb "x/20i movbu_tests\n" + gdb_expect { + -re " +.*movbu \\(r5\\),r6.* +.*movbu r7,\\(a0\\).* +.*movbu \\(sp\\),r7.* +.*movbu a0,\\(sp\\).* +.*movbu \\(16,r1\\),r2.* +.*movbu r2,\\(16,r1\\).* +.*movbu \\(16,sp\\),r2.* +.*movbu r2,\\(16,sp\\).* +.*movbu \\(2096895,r1\\),r2.* +.*movbu r2,\\(2096895,r1\\).* +.*movbu \\(2096895,sp\\),r2.* +.*movbu r2,\\(2096895,sp\\).* +.*movbu \\(0x1ffeff\\),r2.* +.*movbu r2,\\(0x1ffeff\\).* +.*movbu \\(2147417596,r1\\),r2.* +.*movbu r2,\\(2147417596,r1\\).* +.*movbu \\(2147417596,sp\\),r2.* +.*movbu r2,\\(2147417596,sp\\).* +.*movbu \\(0x7ffefdfc\\),r2.* +.*movbu r2,\\(0x7ffefdfc\\).* +.*$gdb_prompt $" { pass "movbu tests" } + -re "$gdb_prompt $" { fail "movbu tests" } + timeout { fail "(timeout) movbu tests" } + } +} + +proc movhu_tests { } { + global gdb_prompt + global hex + global decimal + + send_gdb "x/20i movhu_tests\n" + gdb_expect { + -re " +.*movhu \\(a1\\),a2.* +.*movhu a3,\\(d0\\).* +.*movhu \\(sp\\),a1.* +.*movhu a2,\\(sp\\).* +.*movhu \\(16,r1\\),r2.* +.*movhu r2,\\(16,r1\\).* +.*movhu \\(16,sp\\),r2.* +.*movhu r2,\\(16,sp\\).* +.*movhu \\(2096895,r1\\),r2.* +.*movhu r2,\\(2096895,r1\\).* +.*movhu \\(2096895,sp\\),r2.* +.*movhu r2,\\(2096895,sp\\).* +.*movhu \\(0x1ffeff\\),r2.* +.*movhu r2,\\(0x1ffeff\\).* +.*movhu \\(2147417596,r1\\),r2.* +.*movhu r2,\\(2147417596,r1\\).* +.*movhu \\(2147417596,sp\\),r2.* +.*movhu r2,\\(2147417596,sp\\).* +.*movhu \\(0x7ffefdfc\\),r2.* +.*movhu r2,\\(0x7ffefdfc\\).* +.*$gdb_prompt $" { pass "movhu tests" } + -re "$gdb_prompt $" { fail "movhu tests" } + timeout { fail "(timeout) movhu tests" } + } +} + +proc mac_tests { } { + global gdb_prompt + global hex + global decimal + + send_gdb "x/28i mac_tests\n" + gdb_expect { + -re " +.*mac r1,r2.* +.*macu r3,r4.* +.*macb r5,r6.* +.*macbu r7,a0.* +.*mach a1,a2.* +.*machu a3,d0.* +.*dmach d1,d2.* +.*dmachu d3,d2.* +.*mac 16,r1.* +.*macu 16,r1.* +.*macb 16,r1.* +.*macbu 16,r1.* +.*mach 16,r1.* +.*machu 16,r1.* +.*mac 2096895,r2.* +.*macu 2096895,r2.* +.*macb 2096895,r2.* +.*macbu 2096895,r2.* +.*mach 2096895,r2.* +.*machu 2096895,r2.* +.*mac 2147417596,r2.* +.*macu 2147417596,r2.* +.*macb 2147417596,r2.* +.*macbu 2147417596,r2.* +.*mach 2147417596,r2.* +.*machu 2147417596,r2.* +.*dmach 2147417596,r2.* +.*dmachu 2147417596,r2.* +.*$gdb_prompt $" { pass "mac tests" } + -re "$gdb_prompt $" { fail "mac tests" } + timeout { fail "(timeout) mac tests" } + } +} + +proc bit_tests { } { + global gdb_prompt + global hex + global decimal + + send_gdb "x/4i bit_tests\n" + gdb_expect { + -re " +.*bsch r1,r2.* +.*btst 16,r1.* +.*btst 2096895,r2.* +.*btst 2147417596,r2.* +.*$gdb_prompt $" { pass "bit tests" } + -re "$gdb_prompt $" { fail "bit tests" } + timeout { fail "(timeout) bit tests" } + } +} + +proc dsp_add_tests { } { + global gdb_prompt + global hex + global decimal + + send_gdb "x/28i dsp_add_tests\n" + gdb_expect { + -re " +.*add_add r4,r1,r2,r3.* +.*add_add r4,r1,2,r3.* +.*add_sub r4,r1,r2,r3.* +.*add_sub r4,r1,2,r3.* +.*add_cmp r4,r1,r2,r3.* +.*add_cmp r4,r1,2,r3.* +.*add_mov r4,r1,r2,r3.* +.*add_mov r4,r1,2,r3.* +.*add_asr r4,r1,r2,r3.* +.*add_asr r4,r1,2,r3.* +.*add_lsr r4,r1,r2,r3.* +.*add_lsr r4,r1,2,r3.* +.*add_asl r4,r1,r2,r3.* +.*add_asl r4,r1,2,r3.* +.*add_add 4,r1,r2,r3.* +.*add_add 4,r1,2,r3.* +.*add_sub 4,r1,r2,r3.* +.*add_sub 4,r1,2,r3.* +.*add_cmp 4,r1,r2,r3.* +.*add_cmp 4,r1,2,r3.* +.*add_mov 4,r1,r2,r3.* +.*add_mov 4,r1,2,r3.* +.*add_asr 4,r1,r2,r3.* +.*add_asr 4,r1,2,r3.* +.*add_lsr 4,r1,r2,r3.* +.*add_lsr 4,r1,2,r3.* +.*add_asl 4,r1,r2,r3.* +.*add_asl 4,r1,2,r3.* +.*$gdb_prompt $" { pass "dsp_add tests" } + -re "$gdb_prompt $" { fail "dsp_add tests" } + timeout { fail "(timeout) dsp_add tests" } + } +} + +proc dsp_cmp_tests { } { + global gdb_prompt + global hex + global decimal + + send_gdb "x/24i dsp_cmp_tests\n" + gdb_expect { + -re " +.*cmp_add r4,r1,r2,r3.* +.*cmp_add r4,r1,2,r3.* +.*cmp_sub r4,r1,r2,r3.* +.*cmp_sub r4,r1,2,r3.* +.*cmp_mov r4,r1,r2,r3.* +.*cmp_mov r4,r1,2,r3.* +.*cmp_asr r4,r1,r2,r3.* +.*cmp_asr r4,r1,2,r3.* +.*cmp_lsr r4,r1,r2,r3.* +.*cmp_lsr r4,r1,2,r3.* +.*cmp_asl r4,r1,r2,r3.* +.*cmp_asl r4,r1,2,r3.* +.*cmp_add 4,r1,r2,r3.* +.*cmp_add 4,r1,2,r3.* +.*cmp_sub 4,r1,r2,r3.* +.*cmp_sub 4,r1,2,r3.* +.*cmp_mov 4,r1,r2,r3.* +.*cmp_mov 4,r1,2,r3.* +.*cmp_asr 4,r1,r2,r3.* +.*cmp_asr 4,r1,2,r3.* +.*cmp_lsr 4,r1,r2,r3.* +.*cmp_lsr 4,r1,2,r3.* +.*cmp_asl 4,r1,r2,r3.* +.*cmp_asl 4,r1,2,r3.* +.*$gdb_prompt $" { pass "dsp_cmp tests" } + -re "$gdb_prompt $" { fail "dsp_cmp tests" } + timeout { fail "(timeout) dsp_cmp tests" } + } +} + +proc dsp_sub_tests { } { + global gdb_prompt + global hex + global decimal + + send_gdb "x/28i dsp_sub_tests\n" + gdb_expect { + -re " +.*sub_add r4,r1,r2,r3.* +.*sub_add r4,r1,2,r3.* +.*sub_sub r4,r1,r2,r3.* +.*sub_sub r4,r1,2,r3.* +.*sub_cmp r4,r1,r2,r3.* +.*sub_cmp r4,r1,2,r3.* +.*sub_mov r4,r1,r2,r3.* +.*sub_mov r4,r1,2,r3.* +.*sub_asr r4,r1,r2,r3.* +.*sub_asr r4,r1,2,r3.* +.*sub_lsr r4,r1,r2,r3.* +.*sub_lsr r4,r1,2,r3.* +.*sub_asl r4,r1,r2,r3.* +.*sub_asl r4,r1,2,r3.* +.*sub_add 4,r1,r2,r3.* +.*sub_add 4,r1,2,r3.* +.*sub_sub 4,r1,r2,r3.* +.*sub_sub 4,r1,2,r3.* +.*sub_cmp 4,r1,r2,r3.* +.*sub_cmp 4,r1,2,r3.* +.*sub_mov 4,r1,r2,r3.* +.*sub_mov 4,r1,2,r3.* +.*sub_asr 4,r1,r2,r3.* +.*sub_asr 4,r1,2,r3.* +.*sub_lsr 4,r1,r2,r3.* +.*sub_lsr 4,r1,2,r3.* +.*sub_asl 4,r1,r2,r3.* +.*sub_asl 4,r1,2,r3.* +.*$gdb_prompt $" { pass "dsp_sub tests" } + -re "$gdb_prompt $" { fail "dsp_sub tests" } + timeout { fail "(timeout) dsp_sub tests" } + } +} + +proc dsp_mov_tests { } { + global gdb_prompt + global hex + global decimal + + send_gdb "x/28i dsp_mov_tests\n" + gdb_expect { + -re " +.*mov_add r4,r1,r2,r3.* +.*mov_add r4,r1,2,r3.* +.*mov_sub r4,r1,r2,r3.* +.*mov_sub r4,r1,2,r3.* +.*mov_cmp r4,r1,r2,r3.* +.*mov_cmp r4,r1,2,r3.* +.*mov_mov r4,r1,r2,r3.* +.*mov_mov r4,r1,2,r3.* +.*mov_asr r4,r1,r2,r3.* +.*mov_asr r4,r1,2,r3.* +.*mov_lsr r4,r1,r2,r3.* +.*mov_lsr r4,r1,2,r3.* +.*mov_asl r4,r1,r2,r3.* +.*mov_asl r4,r1,2,r3.* +.*mov_add 4,r1,r2,r3.* +.*mov_add 4,r1,2,r3.* +.*mov_sub 4,r1,r2,r3.* +.*mov_sub 4,r1,2,r3.* +.*mov_cmp 4,r1,r2,r3.* +.*mov_cmp 4,r1,2,r3.* +.*mov_mov 4,r1,r2,r3.* +.*mov_mov 4,r1,2,r3.* +.*mov_asr 4,r1,r2,r3.* +.*mov_asr 4,r1,2,r3.* +.*mov_lsr 4,r1,r2,r3.* +.*mov_lsr 4,r1,2,r3.* +.*mov_asl 4,r1,r2,r3.* +.*mov_asl 4,r1,2,r3.* +.*$gdb_prompt $" { pass "dsp_mov tests" } + -re "$gdb_prompt $" { fail "dsp_mov tests" } + timeout { fail "(timeout) dsp_mov tests" } + } +} + +proc dsp_logical_tests { } { + global gdb_prompt + global hex + global decimal + + send_gdb "x/42i dsp_logical_tests\n" + gdb_expect { + -re " +.*and_add r4,r1,r2,r3.* +.*and_add r4,r1,2,r3.* +.*and_sub r4,r1,r2,r3.* +.*and_sub r4,r1,2,r3.* +.*and_cmp r4,r1,r2,r3.* +.*and_cmp r4,r1,2,r3.* +.*and_mov r4,r1,r2,r3.* +.*and_mov r4,r1,2,r3.* +.*and_asr r4,r1,r2,r3.* +.*and_asr r4,r1,2,r3.* +.*and_lsr r4,r1,r2,r3.* +.*and_lsr r4,r1,2,r3.* +.*and_asl r4,r1,r2,r3.* +.*and_asl r4,r1,2,r3.* +.*xor_add r4,r1,r2,r3.* +.*xor_add r4,r1,2,r3.* +.*xor_sub r4,r1,r2,r3.* +.*xor_sub r4,r1,2,r3.* +.*xor_cmp r4,r1,r2,r3.* +.*xor_cmp r4,r1,2,r3.* +.*xor_mov r4,r1,r2,r3.* +.*xor_mov r4,r1,2,r3.* +.*xor_asr r4,r1,r2,r3.* +.*xor_asr r4,r1,2,r3.* +.*xor_lsr r4,r1,r2,r3.* +.*xor_lsr r4,r1,2,r3.* +.*xor_asl r4,r1,r2,r3.* +.*xor_asl r4,r1,2,r3.* +.*or_add r4,r1,r2,r3.* +.*or_add r4,r1,2,r3.* +.*or_sub r4,r1,r2,r3.* +.*or_sub r4,r1,2,r3.* +.*or_cmp r4,r1,r2,r3.* +.*or_cmp r4,r1,2,r3.* +.*or_mov r4,r1,r2,r3.* +.*or_mov r4,r1,2,r3.* +.*or_asr r4,r1,r2,r3.* +.*or_asr r4,r1,2,r3.* +.*or_lsr r4,r1,r2,r3.* +.*or_lsr r4,r1,2,r3.* +.*or_asl r4,r1,r2,r3.* +.*or_asl r4,r1,2,r3.* +.*$gdb_prompt $" { pass "dsp_logical tests" } + -re "$gdb_prompt $" { fail "dsp_logical tests" } + timeout { fail "(timeout) dsp_logical tests" } + } +} + +proc dsp_misc_tests { } { + global gdb_prompt + global hex + global decimal + + send_gdb "x/42i dsp_misc_tests\n" + gdb_expect { + -re " +.*dmach_add r4,r1,r2,r3.* +.*dmach_add r4,r1,2,r3.* +.*dmach_sub r4,r1,r2,r3.* +.*dmach_sub r4,r1,2,r3.* +.*dmach_cmp r4,r1,r2,r3.* +.*dmach_cmp r4,r1,2,r3.* +.*dmach_mov r4,r1,r2,r3.* +.*dmach_mov r4,r1,2,r3.* +.*dmach_asr r4,r1,r2,r3.* +.*dmach_asr r4,r1,2,r3.* +.*dmach_lsr r4,r1,r2,r3.* +.*dmach_lsr r4,r1,2,r3.* +.*dmach_asl r4,r1,r2,r3.* +.*dmach_asl r4,r1,2,r3.* +.*swhw_add r4,r1,r2,r3.* +.*swhw_add r4,r1,2,r3.* +.*swhw_sub r4,r1,r2,r3.* +.*swhw_sub r4,r1,2,r3.* +.*swhw_cmp r4,r1,r2,r3.* +.*swhw_cmp r4,r1,2,r3.* +.*swhw_mov r4,r1,r2,r3.* +.*swhw_mov r4,r1,2,r3.* +.*swhw_asr r4,r1,r2,r3.* +.*swhw_asr r4,r1,2,r3.* +.*swhw_lsr r4,r1,r2,r3.* +.*swhw_lsr r4,r1,2,r3.* +.*swhw_asl r4,r1,r2,r3.* +.*swhw_asl r4,r1,2,r3.* +.*sat16_add r4,r1,r2,r3.* +.*sat16_add r4,r1,2,r3.* +.*sat16_sub r4,r1,r2,r3.* +.*sat16_sub r4,r1,2,r3.* +.*sat16_cmp r4,r1,r2,r3.* +.*sat16_cmp r4,r1,2,r3.* +.*sat16_mov r4,r1,r2,r3.* +.*sat16_mov r4,r1,2,r3.* +.*sat16_asr r4,r1,r2,r3.* +.*sat16_asr r4,r1,2,r3.* +.*sat16_lsr r4,r1,r2,r3.* +.*sat16_lsr r4,r1,2,r3.* +.*sat16_asl r4,r1,r2,r3.* +.*sat16_asl r4,r1,2,r3.* +.*$gdb_prompt $" { pass "dsp_misc tests" } + -re "$gdb_prompt $" { fail "dsp_misc tests" } + timeout { fail "(timeout) dsp_misc tests" } + } +} + +proc autoincrement_tests { } { + global gdb_prompt + global hex + global decimal + + send_gdb "x/16i autoincrement_tests\n" + gdb_expect { + -re " +.*mov \\(r1\\+\\),r2.* +.*mov r3,\\(r4\\+\\).* +.*movhu \\(r6\\+\\),r7.* +.*movhu a0,\\(a1\\+\\).* +.*mov \\(r1\\+,64\\),r2.* +.*mov r1,\\(r2\\+,64\\).* +.*movhu \\(r1\\+,64\\),r2.* +.*movhu r1,\\(r2\\+,64\\).* +.*mov \\(r1\\+,131055\\),r2.* +.*mov r1,\\(r2\\+,131055\\).* +.*movhu \\(r1\\+,131055\\),r2.* +.*movhu r1,\\(r2\\+,131055\\).* +.*mov \\(r1\\+,2147417596\\),r2.* +.*mov r1,\\(r2\\+,2147417596\\).* +.*movhu \\(r1\\+,2147417596\\),r2.* +.*movhu r1,\\(r2\\+,2147417596\\).* +.*$gdb_prompt $" { pass "autoincrement tests" } + -re "$gdb_prompt $" { fail "autoincrement tests" } + timeout { fail "(timeout) autoincrement tests" } + } +} + +proc dsp_autoincrement_tests { } { + global gdb_prompt + global hex + global decimal + + send_gdb "x/11i dsp_autoincrement_tests\n" + gdb_expect { + -re " +.*mov_llt \\(r1\\+,4\\),r2.* +.*mov_lgt \\(r1\\+,4\\),r2.* +.*mov_lge \\(r1\\+,4\\),r2.* +.*mov_lle \\(r1\\+,4\\),r2.* +.*mov_lcs \\(r1\\+,4\\),r2.* +.*mov_lhi \\(r1\\+,4\\),r2.* +.*mov_lcc \\(r1\\+,4\\),r2.* +.*mov_lls \\(r1\\+,4\\),r2.* +.*mov_leq \\(r1\\+,4\\),r2.* +.*mov_lne \\(r1\\+,4\\),r2.* +.*mov_lra \\(r1\\+,4\\),r2.* +.*$gdb_prompt $" { pass "autoincrement tests" } + -re "$gdb_prompt $" { fail "autoincrement tests" } + timeout { fail "(timeout) autoincrement tests" } + } +} + +# Start with a fresh gdb. + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir +gdb_load $binfile + +call_tests +movm_tests +misc_tests +mov_tests +ext_tests +add_tests +sub_tests +cmp_tests +logical_tests +shift_tests +muldiv_tests +movbu_tests +movhu_tests +mac_tests +bit_tests +dsp_add_tests +dsp_cmp_tests +dsp_sub_tests +dsp_mov_tests +dsp_logical_tests +autoincrement_tests +dsp_autoincrement_tests |