# Copyright 1997, 1998, 2007, 2008, 2009, 2010, 2011 # 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 3 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, see . # 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 testfile "am33" set srcfile ${srcdir}/${subdir}/${testfile}.s set binfile ${objdir}/${subdir}/${testfile} if { [gdb_compile "${srcfile}" "${binfile}" object ""] != "" } { untested am33.exp return -1 } 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