📄 am33.exp
字号:
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_exitgdb_startgdb_reinitialize_dir $srcdir/$subdirgdb_load $binfilecall_testsmovm_testsmisc_testsmov_testsext_testsadd_testssub_testscmp_testslogical_testsshift_testsmuldiv_testsmovbu_testsmovhu_testsmac_testsbit_testsdsp_add_testsdsp_cmp_testsdsp_sub_testsdsp_mov_testsdsp_logical_testsautoincrement_testsdsp_autoincrement_tests
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -