
# Copyright 1997-2013 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 <http://www.gnu.org/licenses/>.

# This file was written by Jeff Law. (law@cygnus.com)

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
