
# Copyright 1992-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@cs.utah.edu)

if ![istarget "hppa*-*-*"] {
    verbose "Tests ignored for all but hppa based targets."
    return
}



set testfile "hppa"
set srcfile ${srcdir}/${subdir}/${testfile}.s
set binfile ${objdir}/${subdir}/${testfile}
set comp_output [gdb_compile "${srcfile}" "${binfile}" executable ""];
if  { $comp_output != "" } {
    if [ regexp "Opcode not defined - DIAG" $comp_output] {
	warning "HP assembler in use--skipping disasm tests"
	return
    } else {
	perror "Couldn't compile ${srcfile}"
	return -1
    }
}

proc all_integer_memory_tests { } {
    global gdb_prompt
    global hex
    global decimal

    send_gdb "x/8i integer_memory_tests\n"
    gdb_expect {
	-re "
.*ldw 0\\(sr0,r4\\),r26.*
.*ldh 0\\(sr0,r4\\),r26.*
.*ldb 0\\(sr0,r4\\),r26.*
.*stw r26,0\\(sr0,r4\\).*
.*sth r26,0\\(sr0,r4\\).*
.*stb r26,0\\(sr0,r4\\).*
.*ldwm 0\\(sr0,r4\\),r26.*
.*stwm r26,0\\(sr0,r4\\).*
.*$gdb_prompt $" { pass "integer_memory_tests" }
	-re "$gdb_prompt $" { fail "integer_memory_tests" }
	timeout { fail "(timeout) integer memory_tests" }
    }

    send_gdb "x/20i integer_indexing_load\n"
    gdb_expect {
	-re "
.*ldwx r5\\(sr0,r4\\),r26.*
.*ldwx,s r5\\(sr0,r4\\),r26.*
.*ldwx,m r5\\(sr0,r4\\),r26.*
.*ldwx,sm r5\\(sr0,r4\\),r26.*
.*ldhx r5\\(sr0,r4\\),r26.*
.*ldhx,s r5\\(sr0,r4\\),r26.*
.*ldhx,m r5\\(sr0,r4\\),r26.*
.*ldhx,sm r5\\(sr0,r4\\),r26.*
.*ldbx r5\\(sr0,r4\\),r26.*
.*ldbx,s r5\\(sr0,r4\\),r26.*
.*ldbx,m r5\\(sr0,r4\\),r26.*
.*ldbx,sm r5\\(sr0,r4\\),r26.*
.*ldwax r5\\(r4\\),r26.*
.*ldwax,s r5\\(r4\\),r26.*
.*ldwax,m r5\\(r4\\),r26.*
.*ldwax,sm r5\\(r4\\),r26.*
.*ldcwx r5\\(sr0,r4\\),r26.*
.*ldcwx,s r5\\(sr0,r4\\),r26.*
.*ldcwx,m r5\\(sr0,r4\\),r26.*
.*ldcwx,sm r5\\(sr0,r4\\),r26.*
.*$gdb_prompt $" { pass "integer_indexing_load" }
	-re "$gdb_prompt $" { fail "integer_indexing_load" }
	timeout { fail "(timeout) integer_indexing" }
    }

    send_gdb "x/15i integer_load_short_memory\n"
    gdb_expect {
	-re "
.*ldws 0\\(sr0,r4\\),r26.*
.*ldws,mb 0\\(sr0,r4\\),r26.*
.*ldws,ma 0\\(sr0,r4\\),r26.*
.*ldhs 0\\(sr0,r4\\),r26.*
.*ldhs,mb 0\\(sr0,r4\\),r26.*
.*ldhs,ma 0\\(sr0,r4\\),r26.*
.*ldbs 0\\(sr0,r4\\),r26.*
.*ldbs,mb 0\\(sr0,r4\\),r26.*
.*ldbs,ma 0\\(sr0,r4\\),r26.*
.*ldwas 0\\(r4\\),r26.*
.*ldwas,mb 0\\(r4\\),r26.*
.*ldwas,ma 0\\(r4\\),r26.*
.*ldcws 0\\(sr0,r4\\),r26.*
.*ldcws,mb 0\\(sr0,r4\\),r26.*
.*ldcws,ma 0\\(sr0,r4\\),r26.*
.*$gdb_prompt $" { pass "integer_load_short_memory" }
	-re "$gdb_prompt $" { fail "integer_load_short_memory" }
	timeout { fail "(timeout) integer_load_short_memory " }
    }


    send_gdb "x/17i integer_store_short_memory\n"
    gdb_expect {
	-re "
.*stws r26,0\\(sr0,r4\\).*
.*stws,mb r26,0\\(sr0,r4\\).*
.*stws,ma r26,0\\(sr0,r4\\).*
.*sths r26,0\\(sr0,r4\\).*
.*sths,mb r26,0\\(sr0,r4\\).*
.*sths,ma r26,0\\(sr0,r4\\).*
.*stbs r26,0\\(sr0,r4\\).*
.*stbs,mb r26,0\\(sr0,r4\\).*
.*stbs,ma r26,0\\(sr0,r4\\).*
.*stwas r26,0\\(r4\\).*
.*stwas,mb r26,0\\(r4\\).*
.*stwas,ma r26,0\\(r4\\).*
.*stbys r26,0\\(sr0,r4\\).*
.*stbys r26,0\\(sr0,r4\\).*
.*stbys,e r26,0\\(sr0,r4\\).*
.*stbys,b,m r26,0\\(sr0,r4\\).*
.*stbys,e,m r26,0\\(sr0,r4\\).*
.*$gdb_prompt $" { pass "integer_store_short_memory" }
	-re "$gdb_prompt $" { fail "integer_store_short_memory" }
	timeout { fail "(timeout) integer_short_memory " }
    }
}

proc all_immediate_tests { } {
    global gdb_prompt
    global hex
    global decimal

    send_gdb "x/3i immediate_tests\n"
    gdb_expect {
	-re "
.*ldo 5\\(r26\\),r26.*
.*ldil -21524800,r26.*
.*addil -21524800,r5.*
.*$gdb_prompt $" { pass "immedate_tests" }
	-re "$gdb_prompt $" { fail "immedate_tests" }
	timeout { fail "(timeout) immedate_tests " }
    }
}

proc all_branch_tests { } {
    global gdb_prompt
    global hex
    global decimal

    send_gdb "x/10i branch_tests_1\n"
    gdb_expect {
	-re "
.*bl.*,rp.*
.*bl,n.*,rp.*
.*b.*
.*b,n.*
.*gate.*,rp.*
.*gate,n.*,rp.*
.*blr r4,rp.*
.*blr,n r4,rp.*
.*blr r4,r0.*
.*blr,n r4,r0.*
.*$gdb_prompt $" { pass "branch_tests_1" }
	-re "$gdb_prompt $" { fail "branch_tests_1" }
	timeout { fail "(timeout) branch_tests_1" }
    }

    send_gdb "x/6i branch_tests_2\n"
    gdb_expect {
	-re "
.*bv r0\\(rp\\).*
.*bv,n r0\\(rp\\).*
.*be 1234\\(sr1,rp\\).*
.*be,n 1234\\(sr1,rp\\).*
.*ble 1234\\(sr1,rp\\).*
.*ble,n 1234\\(sr1,rp\\).*
.*$gdb_prompt $" { pass "branch_tests_2" }
	-re "$gdb_prompt $" { fail "branch_tests_2" }
	timeout { fail "(timeout) branch_tests_2" }
    }


    send_gdb "x/8i movb_tests\n"
    gdb_expect {
	-re "
.*movb r4,r26,.* <movb_tests>.*
.*movb,= r4,r26,.* <movb_tests>.*
.*movb,< r4,r26,.* <movb_tests>.*
.*movb,od r4,r26,.* <movb_tests>.*
.*movb,tr r4,r26,.* <movb_tests>.*
.*movb,<> r4,r26,.* <movb_tests>.*
.*movb,>= r4,r26,.* <movb_tests>.*
.*movb,ev r4,r26,.* <movb_tests>.*
.*$gdb_prompt $" { pass "movb_tests" }
	-re "$gdb_prompt $" { fail "movb_tests" }
	timeout { fail "(timeout) movb_tests " }
    }

    send_gdb "x/8i movb_nullified_tests\n"
    gdb_expect {
	-re "
.*movb,n.*r4,r26,.* <movb_tests>.*
.*movb,=,n.*r4,r26,.* <movb_tests>.*
.*movb,<,n.*r4,r26,.* <movb_tests>.*
.*movb,od,n.*r4,r26,.* <movb_tests>.*
.*movb,tr,n.*r4,r26,.* <movb_tests>.*
.*movb,<>,n.*r4,r26,.* <movb_tests>.*
.*movb,>=,n.*r4,r26,.* <movb_tests>.*
.*movb,ev,n.*r4,r26,.* <movb_tests>.*
.*$gdb_prompt $" { pass "movb_nullified_tests" }
	-re "$gdb_prompt $" { fail "movb_nullified_tests" }
	timeout { fail "(timeout) movb_nullified_tests " }
    }

    send_gdb "x/8i movib_tests\n"
    gdb_expect {
	-re "
.*movib 5,r26,.* <movib_tests>.*
.*movib,= 5,r26,.* <movib_tests>.*
.*movib,< 5,r26,.* <movib_tests>.*
.*movib,od 5,r26,.* <movib_tests>.*
.*movib,tr 5,r26,.* <movib_tests>.*
.*movib,<> 5,r26,.* <movib_tests>.*
.*movib,>= 5,r26,.* <movib_tests>.*
.*movib,ev 5,r26,.* <movib_tests>.*
.*$gdb_prompt $" { pass "movib_tests" }
	-re "$gdb_prompt $" { fail "movib_tests" }
	timeout { fail "(timeout) movib_tests " }
    }

    send_gdb "x/8i movib_nullified_tests\n"
    gdb_expect {
	-re "
.*movib,n.*5,r26,.* <movib_tests>.*
.*movib,=,n.*5,r26,.* <movib_tests>.*
.*movib,<,n.*5,r26,.* <movib_tests>.*
.*movib,od,n.*5,r26,.* <movib_tests>.*
.*movib,tr,n.*5,r26,.* <movib_tests>.*
.*movib,<>,n.*5,r26,.* <movib_tests>.*
.*movib,>=,n.*5,r26,.* <movib_tests>.*
.*movib,ev,n.*5,r26,.* <movib_tests>.*
.*$gdb_prompt $" { pass "movib_nullified_tests" }
	-re "$gdb_prompt $" { fail "movib_nullified_tests" }
	timeout { fail "(timeout) movib_nullified_tests " }
    }

    send_gdb "x/8i comb_tests_1\n"
    gdb_expect {
	-re "
.*comb r0,r4,.* <comb_tests_1>.*
.*comb,= r0,r4,.* <comb_tests_1>.*
.*comb,< r0,r4,.* <comb_tests_1>.*
.*comb,<= r0,r4,.* <comb_tests_1>.*
.*comb,<< r0,r4,.* <comb_tests_1>.*
.*comb,<<= r0,r4,.* <comb_tests_1>.*
.*comb,sv r0,r4,.* <comb_tests_1>.*
.*comb,od r0,r4,.* <comb_tests_1>.*
.*$gdb_prompt $" { pass "comb_tests_1" }
	-re "$gdb_prompt $" { fail "comb_tests_1" }
	timeout { fail "(timeout) comb_tests_1" }
    }

    send_gdb "x/8i comb_tests_2\n"
    gdb_expect {
	-re "
.*combf r0,r4,.* <comb_tests_2>.*
.*combf,= r0,r4,.* <comb_tests_2>.*
.*combf,< r0,r4,.* <comb_tests_2>.*
.*combf,<= r0,r4,.* <comb_tests_2>.*
.*combf,<< r0,r4,.* <comb_tests_2>.*
.*combf,<<= r0,r4,.* <comb_tests_2>.*
.*combf,sv r0,r4,.* <comb_tests_2>.*
.*combf,od r0,r4,.* <comb_tests_2>.*
.*$gdb_prompt $" { pass "comb_tests_2" }
	-re "$gdb_prompt $" { fail "comb_tests_2" }
	timeout { fail "(timeout) comb_tests_2" }
    }

    send_gdb "x/8i comb_nullified_tests_1\n"
    gdb_expect {
	-re "
.*comb,n r0,r4,.* <comb_tests_1>.*
.*comb,=,n r0,r4,.* <comb_tests_1>.*
.*comb,<,n r0,r4,.* <comb_tests_1>.*
.*comb,<=,n r0,r4,.* <comb_tests_1>.*
.*comb,<<,n r0,r4,.* <comb_tests_1>.*
.*comb,<<=,n r0,r4,.* <comb_tests_1>.*
.*comb,sv,n r0,r4,.* <comb_tests_1>.*
.*comb,od,n r0,r4,.* <comb_tests_1>.*
.*$gdb_prompt $" { pass "comb_nullified_tests_1" }
	-re "$gdb_prompt $" { fail "comb_nullified_tests_1" }
	timeout { fail "(timeout) comb_nullified_tests_1" }
    }

    send_gdb "x/8i comb_nullified_tests_2\n"
    gdb_expect {
	-re "
.*combf,n r0,r4,.* <comb_tests_2>.*
.*combf,=,n r0,r4,.* <comb_tests_2>.*
.*combf,<,n r0,r4,.* <comb_tests_2>.*
.*combf,<=,n r0,r4,.* <comb_tests_2>.*
.*combf,<<,n r0,r4,.* <comb_tests_2>.*
.*combf,<<=,n r0,r4,.* <comb_tests_2>.*
.*combf,sv,n r0,r4,.* <comb_tests_2>.*
.*combf,od,n r0,r4,.* <comb_tests_2>.*
.*$gdb_prompt $" { pass "comb_nullified_tests_2" }
	-re "$gdb_prompt $" { fail "comb_nullified_tests_2" }
	timeout { fail "(timeout) comb_nullified_tests_2" }
    }

    send_gdb "x/8i comib_tests_1\n"
    gdb_expect {
	-re "
.*comib 0,r4,.* <comib_tests_1>.*
.*comib,= 0,r4,.* <comib_tests_1>.*
.*comib,< 0,r4,.* <comib_tests_1>.*
.*comib,<= 0,r4,.* <comib_tests_1>.*
.*comib,<< 0,r4,.* <comib_tests_1>.*
.*comib,<<= 0,r4,.* <comib_tests_1>.*
.*comib,sv 0,r4,.* <comib_tests_1>.*
.*comib,od 0,r4,.* <comib_tests_1>.*
.*$gdb_prompt $" { pass "comib_tests_1" }
	-re "$gdb_prompt $" { fail "comib_tests_1" }
	timeout { fail "(timeout) comib_tests_1" }
    }

    send_gdb "x/8i comib_tests_2\n"
    gdb_expect {
	-re "
.*comibf 0,r4,.* <comib_tests_2>.*
.*comibf,= 0,r4,.* <comib_tests_2>.*
.*comibf,< 0,r4,.* <comib_tests_2>.*
.*comibf,<= 0,r4,.* <comib_tests_2>.*
.*comibf,<< 0,r4,.* <comib_tests_2>.*
.*comibf,<<= 0,r4,.* <comib_tests_2>.*
.*comibf,sv 0,r4,.* <comib_tests_2>.*
.*comibf,od 0,r4,.* <comib_tests_2>.*
.*$gdb_prompt $" { pass "comib_tests_2" }
	-re "$gdb_prompt $" { fail "comib_tests_2" }
	timeout { fail "(timeout) comib_tests_2" }
    }

    send_gdb "x/8i comib_nullified_tests_1\n"
    gdb_expect {
	-re "
.*comib,n 0,r4,.* <comib_tests_1>.*
.*comib,=,n 0,r4,.* <comib_tests_1>.*
.*comib,<,n 0,r4,.* <comib_tests_1>.*
.*comib,<=,n 0,r4,.* <comib_tests_1>.*
.*comib,<<,n 0,r4,.* <comib_tests_1>.*
.*comib,<<=,n 0,r4,.* <comib_tests_1>.*
.*comib,sv,n 0,r4,.* <comib_tests_1>.*
.*comib,od,n 0,r4,.* <comib_tests_1>.*
.*$gdb_prompt $" { pass "comib_nullified_tests_1" }
	-re "$gdb_prompt $" { fail "comib_nullified_tests_1" }
	timeout { fail "(timeout) comib_nullified_tests_1" }
    }

    send_gdb "x/8i comib_nullified_tests_2\n"
    gdb_expect {
	-re "
.*comibf,n 0,r4,.* <comib_tests_2>.*
.*comibf,=,n 0,r4,.* <comib_tests_2>.*
.*comibf,<,n 0,r4,.* <comib_tests_2>.*
.*comibf,<=,n 0,r4,.* <comib_tests_2>.*
.*comibf,<<,n 0,r4,.* <comib_tests_2>.*
.*comibf,<<=,n 0,r4,.* <comib_tests_2>.*
.*comibf,sv,n 0,r4,.* <comib_tests_2>.*
.*comibf,od,n 0,r4,.* <comib_tests_2>.*
.*$gdb_prompt $" { pass "comib_nullified_tests_2" }
	-re "$gdb_prompt $" { fail "comib_nullified_tests_2" }
	timeout { fail "(timeout) comib_nullified_tests_2" }
    }

    send_gdb "x/8i addb_tests_1\n"
    gdb_expect {
	-re "
.*addb r1,r4,.* <addb_tests_1>.*
.*addb,= r1,r4,.* <addb_tests_1>.*
.*addb,< r1,r4,.* <addb_tests_1>.*
.*addb,<= r1,r4,.* <addb_tests_1>.*
.*addb,nuv r1,r4,.* <addb_tests_1>.*
.*addb,znv r1,r4,.* <addb_tests_1>.*
.*addb,sv r1,r4,.* <addb_tests_1>.*
.*addb,od r1,r4,.* <addb_tests_1>.*
.*$gdb_prompt $" { pass "addb_tests_1" }
	-re "$gdb_prompt $" { fail "addb_tests_1" }
	timeout { fail "(timeout) addb_tests_1" }
    }

    send_gdb "x/8i addb_tests_2\n"
    gdb_expect {
	-re "
.*addbf r1,r4,.* <addb_tests_2>.*
.*addbf,= r1,r4,.* <addb_tests_2>.*
.*addbf,< r1,r4,.* <addb_tests_2>.*
.*addbf,<= r1,r4,.* <addb_tests_2>.*
.*addbf,nuv r1,r4,.* <addb_tests_2>.*
.*addbf,znv r1,r4,.* <addb_tests_2>.*
.*addbf,sv r1,r4,.* <addb_tests_2>.*
.*addbf,od r1,r4,.* <addb_tests_2>.*
.*$gdb_prompt $" { pass "addb_tests_2" }
	-re "$gdb_prompt $" { fail "addb_tests_2" }
	timeout { fail "(timeout) addb_tests_2" }
    }

    send_gdb "x/8i addb_nullified_tests_1\n"
    gdb_expect {
	-re "
.*addb,n r1,r4,.* <addb_tests_1>.*
.*addb,=,n r1,r4,.* <addb_tests_1>.*
.*addb,<,n r1,r4,.* <addb_tests_1>.*
.*addb,<=,n r1,r4,.* <addb_tests_1>.*
.*addb,nuv,n r1,r4,.* <addb_tests_1>.*
.*addb,znv,n r1,r4,.* <addb_tests_1>.*
.*addb,sv,n r1,r4,.* <addb_tests_1>.*
.*addb,od,n r1,r4,.* <addb_tests_1>.*
.*$gdb_prompt $" { pass "addb_nullified_tests_1" }
	-re "$gdb_prompt $" { fail "addb_nullified_tests_1" }
	timeout { fail "(timeout) addb_nullified_tests_1" }
    }

    send_gdb "x/8i addb_nullified_tests_2\n"
    gdb_expect {
	-re "
.*addbf,n r1,r4,.* <addb_tests_2>.*
.*addbf,=,n r1,r4,.* <addb_tests_2>.*
.*addbf,<,n r1,r4,.* <addb_tests_2>.*
.*addbf,<=,n r1,r4,.* <addb_tests_2>.*
.*addbf,nuv,n r1,r4,.* <addb_tests_2>.*
.*addbf,znv,n r1,r4,.* <addb_tests_2>.*
.*addbf,sv,n r1,r4,.* <addb_tests_2>.*
.*addbf,od,n r1,r4,.* <addb_tests_2>.*
.*$gdb_prompt $" { pass "addb_nullified_tests_2" }
	-re "$gdb_prompt $" { fail "addb_nullified_tests_2" }
	timeout { fail "(timeout) addb_nullified_tests_2" }
    }

    send_gdb "x/8i addib_tests_1\n"
    gdb_expect {
	-re "
.*addib -1,r4,.* <addib_tests_1>.*
.*addib,= -1,r4,.* <addib_tests_1>.*
.*addib,< -1,r4,.* <addib_tests_1>.*
.*addib,<= -1,r4,.* <addib_tests_1>.*
.*addib,nuv -1,r4,.* <addib_tests_1>.*
.*addib,znv -1,r4,.* <addib_tests_1>.*
.*addib,sv -1,r4,.* <addib_tests_1>.*
.*addib,od -1,r4,.* <addib_tests_1>.*
.*$gdb_prompt $" { pass "addib_tests_1" }
	-re "$gdb_prompt $" { fail "addib_tests_1" }
	timeout { fail "(timeout) addib_tests_1" }
    }

    send_gdb "x/8i addib_tests_2\n"
    gdb_expect {
	-re "
.*addibf -1,r4,.* <addib_tests_2>.*
.*addibf,= -1,r4,.* <addib_tests_2>.*
.*addibf,< -1,r4,.* <addib_tests_2>.*
.*addibf,<= -1,r4,.* <addib_tests_2>.*
.*addibf,nuv -1,r4,.* <addib_tests_2>.*
.*addibf,znv -1,r4,.* <addib_tests_2>.*
.*addibf,sv -1,r4,.* <addib_tests_2>.*
.*addibf,od -1,r4,.* <addib_tests_2>.*
.*$gdb_prompt $" { pass "addib_tests_2" }
	-re "$gdb_prompt $" { fail "addib_tests_2" }
	timeout { fail "(timeout) addib_tests_2" }
    }

    send_gdb "x/8i addib_nullified_tests_1\n"
    gdb_expect {
	-re "
.*addib,n -1,r4,.* <addib_tests_1>.*
.*addib,=,n -1,r4,.* <addib_tests_1>.*
.*addib,<,n -1,r4,.* <addib_tests_1>.*
.*addib,<=,n -1,r4,.* <addib_tests_1>.*
.*addib,nuv,n -1,r4,.* <addib_tests_1>.*
.*addib,znv,n -1,r4,.* <addib_tests_1>.*
.*addib,sv,n -1,r4,.* <addib_tests_1>.*
.*addib,od,n -1,r4,.* <addib_tests_1>.*
.*$gdb_prompt $" { pass "addb_nullified_tests_1" }
	-re "$gdb_prompt $" { fail "addb_nullified_tests_1" }
	timeout { fail "(timeout) addb_nullified_tests_1" }
    }

    send_gdb "x/8i addib_nullified_tests_2\n"
    gdb_expect {
	-re "
.*addibf,n -1,r4,.* <addib_tests_2>.*
.*addibf,=,n -1,r4,.* <addib_tests_2>.*
.*addibf,<,n -1,r4,.* <addib_tests_2>.*
.*addibf,<=,n -1,r4,.* <addib_tests_2>.*
.*addibf,nuv,n -1,r4,.* <addib_tests_2>.*
.*addibf,znv,n -1,r4,.* <addib_tests_2>.*
.*addibf,sv,n -1,r4,.* <addib_tests_2>.*
.*addibf,od,n -1,r4,.* <addib_tests_2>.*
.*$gdb_prompt $" { pass "addb_nullified_tests_2" }
	-re "$gdb_prompt $" { fail "addb_nullified_tests_2" }
	timeout { fail "(timeout) addb_nullified_tests_2" }
    }

    send_gdb "x/8i bb_tests\n"
    gdb_expect {
	-re "
.*bvb,< r4,.* <bb_tests>.*
.*bvb,>= r4,.* <bb_tests>.*
.*bvb,<,n r4,.* <bb_tests>.*
.*bvb,>=,n r4,.* <bb_tests>.*
.*bb,< r4,5,.* <bb_tests>.*
.*bb,>= r4,5,.* <bb_tests>.*
.*bb,<,n r4,5,.* <bb_tests>.*
.*bb,>=,n r4,5,.* <bb_tests>.*
.*$gdb_prompt $" { pass "bb_tests" }
	-re "$gdb_prompt $" { fail "bb_tests" }
	timeout { fail "(timeout) bb_tests " }
    }
}

proc all_integer_computational_tests { } {
    global gdb_prompt
    global hex
    global decimal

    set add_insns [list {add} {addl} {addo} {addc} {addco} \
			{sh1add} {sh1addl} {sh1addo} \
			{sh2add} {sh2addl} {sh2addo} \
			{sh3add} {sh3addl} {sh3addo} ]

    foreach i $add_insns {
	send_gdb "x/16i $i"; send_gdb "_tests\n"
	gdb_expect {
	    -re "
.*$i r4,r5,r6.*
.*$i,= r4,r5,r6.*
.*$i,< r4,r5,r6.*
.*$i,<= r4,r5,r6.*
.*$i,nuv r4,r5,r6.*
.*$i,znv r4,r5,r6.*
.*$i,sv r4,r5,r6.*
.*$i,od r4,r5,r6.*
.*$i,tr r4,r5,r6.*
.*$i,<> r4,r5,r6.*
.*$i,>= r4,r5,r6.*
.*$i,> r4,r5,r6.*
.*$i,uv r4,r5,r6.*
.*$i,vnz r4,r5,r6.*
.*$i,nsv r4,r5,r6.*
.*$i,ev r4,r5,r6.*
.*$gdb_prompt $" { pass "$i tests" }
	    -re "$gdb_prompt $" { fail "$i tests" }
	    timeout { fail "(timeout) $i tests" }
	}
    }

    set sub_insns [list {sub} {subo} {subb} {subbo} {subt} {subto} \
			{ds} {comclr} ]

    foreach i $sub_insns {
	send_gdb "x/16i $i"; send_gdb "_tests\n"
	gdb_expect {
	    -re "
.*$i r4,r5,r6.*
.*$i,= r4,r5,r6.*
.*$i,< r4,r5,r6.*
.*$i,<= r4,r5,r6.*
.*$i,<< r4,r5,r6.*
.*$i,<<= r4,r5,r6.*
.*$i,sv r4,r5,r6.*
.*$i,od r4,r5,r6.*
.*$i,tr r4,r5,r6.*
.*$i,<> r4,r5,r6.*
.*$i,>= r4,r5,r6.*
.*$i,> r4,r5,r6.*
.*$i,>>= r4,r5,r6.*
.*$i,>> r4,r5,r6.*
.*$i,nsv r4,r5,r6.*
.*$i,ev r4,r5,r6.*
.*$gdb_prompt $" { pass "$i tests" }
	    -re "$gdb_prompt $" { fail "$i tests" }
	    timeout { fail "(timeout) $i tests" }
	}
    }

    set logical_insns [list {or} {xor} {and} {andcm} ]

    foreach i $logical_insns {
	send_gdb "x/10i $i"; send_gdb "_tests\n"
	gdb_expect {
	    -re "
.*$i r4,r5,r6.*
.*$i,= r4,r5,r6.*
.*$i,< r4,r5,r6.*
.*$i,<= r4,r5,r6.*
.*$i,od r4,r5,r6.*
.*$i,tr r4,r5,r6.*
.*$i,<> r4,r5,r6.*
.*$i,>= r4,r5,r6.*
.*$i,> r4,r5,r6.*
.*$i,ev r4,r5,r6.*
.*$gdb_prompt $" { pass "$i tests" }
	    -re "$gdb_prompt $" { fail "$i tests" }
	    timeout { fail "(timeout) $i tests" }
	}
    }

    set unit_insns1 [list {uxor} {uaddcm} {uaddcmt} ]

    foreach i $unit_insns1 {
	send_gdb "x/12i $i"; send_gdb "_tests\n"
	gdb_expect {
	    -re "
.*$i r4,r5,r6.*
.*$i,sbz r4,r5,r6.*
.*$i,shz r4,r5,r6.*
.*$i,sdc r4,r5,r6.*
.*$i,sbc r4,r5,r6.*
.*$i,shc r4,r5,r6.*
.*$i,tr r4,r5,r6.*
.*$i,nbz r4,r5,r6.*
.*$i,nhz r4,r5,r6.*
.*$i,ndc r4,r5,r6.*
.*$i,nbc r4,r5,r6.*
.*$i,nhc r4,r5,r6.*
.*$gdb_prompt $" { pass "$i tests" }
	    -re "$gdb_prompt $" { fail "$i tests" }
	    timeout { fail "(timeout) $i tests" }
	}
    }

    set unit_insns2 [list {dcor} {idcor} ]

    foreach i $unit_insns2 {
	send_gdb "x/12i $i"; send_gdb "_tests\n"
	gdb_expect {
	    -re "
.*$i r4,r5.*
.*$i,sbz r4,r5.*
.*$i,shz r4,r5.*
.*$i,sdc r4,r5.*
.*$i,sbc r4,r5.*
.*$i,shc r4,r5.*
.*$i,tr r4,r5.*
.*$i,nbz r4,r5.*
.*$i,nhz r4,r5.*
.*$i,ndc r4,r5.*
.*$i,nbc r4,r5.*
.*$i,nhc r4,r5.*
.*$gdb_prompt $" { pass "$i tests" }
	    -re "$gdb_prompt $" { fail "$i tests" }
	    timeout { fail "(timeout) $i tests" }
	}
    }

    set addi_insns [list {addi} {addio} {addit} {addito} ]

    foreach i $addi_insns {
	send_gdb "x/16i $i"; send_gdb "_tests\n"
	gdb_expect {
	    -re "
.*$i 7b,r5,r6.*
.*$i,= 7b,r5,r6.*
.*$i,< 7b,r5,r6.*
.*$i,<= 7b,r5,r6.*
.*$i,nuv 7b,r5,r6.*
.*$i,znv 7b,r5,r6.*
.*$i,sv 7b,r5,r6.*
.*$i,od 7b,r5,r6.*
.*$i,tr 7b,r5,r6.*
.*$i,<> 7b,r5,r6.*
.*$i,>= 7b,r5,r6.*
.*$i,> 7b,r5,r6.*
.*$i,uv 7b,r5,r6.*
.*$i,vnz 7b,r5,r6.*
.*$i,nsv 7b,r5,r6.*
.*$i,ev 7b,r5,r6.*
.*$gdb_prompt $" { pass "$i tests" }
	    -re "$gdb_prompt $" { fail "$i tests" }
	    timeout { fail "(timeout) $i tests" }
	}
    }

    set subi_insns [list {subi} {subio} {comiclr} ] 

    foreach i $subi_insns {
	send_gdb "x/16i $i"; send_gdb "_tests\n"
	gdb_expect {
	    -re "
.*$i 7b,r5,r6.*
.*$i,= 7b,r5,r6.*
.*$i,< 7b,r5,r6.*
.*$i,<= 7b,r5,r6.*
.*$i,<< 7b,r5,r6.*
.*$i,<<= 7b,r5,r6.*
.*$i,sv 7b,r5,r6.*
.*$i,od 7b,r5,r6.*
.*$i,tr 7b,r5,r6.*
.*$i,<> 7b,r5,r6.*
.*$i,>= 7b,r5,r6.*
.*$i,> 7b,r5,r6.*
.*$i,>>= 7b,r5,r6.*
.*$i,>> 7b,r5,r6.*
.*$i,nsv 7b,r5,r6.*
.*$i,ev 7b,r5,r6.*
.*$gdb_prompt $" { pass "$i tests" }
	    -re "$gdb_prompt $" { fail "$i tests" }
	    timeout { fail "(timeout) $i tests" }
	}
    }

    send_gdb "x/8i vshd_tests\n"
    gdb_expect {
	-re "
.*vshd r4,r5,r6.*
.*vshd,= r4,r5,r6.*
.*vshd,< r4,r5,r6.*
.*vshd,od r4,r5,r6.*
.*vshd,tr r4,r5,r6.*
.*vshd,<> r4,r5,r6.*
.*vshd,>= r4,r5,r6.*
.*vshd,ev r4,r5,r6.*
.*$gdb_prompt $" { pass "vshd tests" }
	    -re "$gdb_prompt $" { fail "vshd tests" }
	    timeout { fail "(timeout) "vshd tests" }
	}

    send_gdb "x/8i shd_tests\n"
    gdb_expect {
	-re "
.*shd r4,r5,5,r6.*
.*shd,= r4,r5,5,r6.*
.*shd,< r4,r5,5,r6.*
.*shd,od r4,r5,5,r6.*
.*shd,tr r4,r5,5,r6.*
.*shd,<> r4,r5,5,r6.*
.*shd,>= r4,r5,5,r6.*
.*shd,ev r4,r5,5,r6.*
.*$gdb_prompt $" { pass "shd tests" }
	    -re "$gdb_prompt $" { fail "shd tests" }
	    timeout { fail "(timeout) "shd tests" }
	}

    set extract_insns1 [list {extru} {extrs} {zdep} {dep} ] 

    foreach i $extract_insns1 {
	send_gdb "x/8i $i"; send_gdb "_tests\n"
	gdb_expect {
	    -re "
.*$i r4,5,10,r6.*
.*$i,= r4,5,10,r6.*
.*$i,< r4,5,10,r6.*
.*$i,od r4,5,10,r6.*
.*$i,tr r4,5,10,r6.*
.*$i,<> r4,5,10,r6.*
.*$i,>= r4,5,10,r6.*
.*$i,ev r4,5,10,r6.*
.*$gdb_prompt $" { pass "$i tests" }
	    -re "$gdb_prompt $" { fail "$i tests" }
	    timeout { fail "(timeout) $i tests" }
	}
    }

    set extract_insns2 [list {vextru} {vextrs} {zvdep} {vdep} ] 

    foreach i $extract_insns2 {
	send_gdb "x/8i $i"; send_gdb "_tests\n"
	gdb_expect {
	    -re "
.*$i r4,5,r6.*
.*$i,= r4,5,r6.*
.*$i,< r4,5,r6.*
.*$i,od r4,5,r6.*
.*$i,tr r4,5,r6.*
.*$i,<> r4,5,r6.*
.*$i,>= r4,5,r6.*
.*$i,ev r4,5,r6.*
.*$gdb_prompt $" { pass "$i tests" }
	    -re "$gdb_prompt $" { fail "$i tests" }
	    timeout { fail "(timeout) $i tests" }
	}
    }

    set extract_insns3 [list {vdepi} {zvdepi} ] 

    foreach i $extract_insns3 {
	send_gdb "x/8i $i"; send_gdb "_tests\n"
	gdb_expect {
	    -re "
.*$i -1,5,r6.*
.*$i,= -1,5,r6.*
.*$i,< -1,5,r6.*
.*$i,od -1,5,r6.*
.*$i,tr -1,5,r6.*
.*$i,<> -1,5,r6.*
.*$i,>= -1,5,r6.*
.*$i,ev -1,5,r6.*
.*$gdb_prompt $" { pass "$i tests" }
	    -re "$gdb_prompt $" { fail "$i tests" }
	    timeout { fail "(timeout) $i tests" }
	}
    }

    set extract_insns4 [list {depi} {zdepi} ] 

    foreach i $extract_insns4 {
	send_gdb "x/8i $i"; send_gdb "_tests\n"
	gdb_expect {
	    -re "
.*$i -1,4,10,r6.*
.*$i,= -1,4,10,r6.*
.*$i,< -1,4,10,r6.*
.*$i,od -1,4,10,r6.*
.*$i,tr -1,4,10,r6.*
.*$i,<> -1,4,10,r6.*
.*$i,>= -1,4,10,r6.*
.*$i,ev -1,4,10,r6.*
.*$gdb_prompt $" { pass "$i tests" }
	    -re "$gdb_prompt $" { fail "$i tests" }
	    timeout { fail "(timeout) $i tests" }
	}
    }
}

proc all_system_control_tests { } {
    global gdb_prompt
    global hex
    global decimal

    send_gdb "x/14i system_control_tests\n"
    gdb_expect {
	-re "
.*break 5,c.*
.*rfi.*
.*rfir.*
.*ssm 5,r4.*
.*rsm 5,r4.*
.*mtsm r4.*
.*ldsid \\(sr0,r5\\),r4.*
.*mtsp r4,sr0.*
.*mtctl r4,ccr.*
.*mfsp sr0,r4.*
.*mfctl ccr,r4.*
.*sync.*
.*syncdma.*
.*diag 4d2.*
.*$gdb_prompt $" { pass "system_constrol_tests" }
	-re "$gdb_prompt $" { fail "system_control_tests" }
	timeout { file "(timeout) system_control_tests" }
    }

    send_gdb "x/4i probe_tests\n"
    gdb_expect {
	-re "
.*prober \\(sr0,r5\\),r6,r7.*
.*proberi \\(sr0,r5\\),1,r7.*
.*probew \\(sr0,r5\\),r6,r7.*
.*probewi \\(sr0,r5\\),1,r7.*
.*$gdb_prompt $" { pass "probe_tests" }
	-re "$gdb_prompt $" { fail "probe_tests" }
	timeout { file "(timeout) probe_tests" }
    }

    # lci uses the same bit pattern as lha, so accept lha.
    send_gdb "x/5i lpa_tests\n"
    gdb_expect {
	-re "
.*lpa r4\\(sr0,r5\\),r6.*
.*lpa,m r4\\(sr0,r5\\),r6.*
.*lha r4\\(sr0,r5\\),r6.*
.*lha,m r4\\(sr0,r5\\),r6.*
.*lha r4\\(sr0,r5\\),r6.*
.*$gdb_prompt $" { pass "lpa_tests" }
	-re "$gdb_prompt $" { fail "lpa_tests" }
	timeout { file "(timeout) lpa_tests" }
    }

    send_gdb "x/18i purge_tests\n"
    gdb_expect {
	-re "
.*pdtlb r4\\(sr0,r5\\).*
.*pdtlb,m r4\\(sr0,r5\\).*
.*pitlb r4\\(sr0,r5\\).*
.*pitlb,m r4\\(sr0,r5\\).*
.*pdtlbe r4\\(sr0,r5\\).*
.*pdtlbe,m r4\\(sr0,r5\\).*
.*pitlbe r4\\(sr0,r5\\).*
.*pitlbe,m r4\\(sr0,r5\\).*
.*pdc r4\\(sr0,r5\\).*
.*pdc,m r4\\(sr0,r5\\).*
.*fdc r4\\(sr0,r5\\).*
.*fdc,m r4\\(sr0,r5\\).*
.*fic r4\\(sr0,r5\\).*
.*fic,m r4\\(sr0,r5\\).*
.*fdce r4\\(sr0,r5\\).*
.*fdce,m r4\\(sr0,r5\\).*
.*fice r4\\(sr0,r5\\).*
.*fice,m r4\\(sr0,r5\\).*
.*$gdb_prompt $" { pass "purge_tests" }
	-re "$gdb_prompt $" { fail "purge_tests" }
	timeout { file "(timeout) purge_tests" }
    }

    send_gdb "x/4i insert_tests\n"
    gdb_expect {
	-re "
.*idtlba r4,\\(sr0,r5\\).*
.*iitlba r4,\\(sr0,r5\\).*
.*idtlbp r4,\\(sr0,r5\\).*
.*iitlbp r4,\\(sr0,r5\\).*
.*$gdb_prompt $" { pass "insert_tests" }
	-re "$gdb_prompt $" { fail "insert_tests" }
	timeout { file "(timeout) insert_tests" }
    }

}

proc all_fpu_memory_tests { } {
    global gdb_prompt
    global hex
    global decimal

    send_gdb "x/20i fpu_memory_indexing_tests\n"
    gdb_expect {
	-re "
.*fldwx r4\\(sr0,r5\\),fr6.*
.*fldwx,s r4\\(sr0,r5\\),fr6.*
.*fldwx,m r4\\(sr0,r5\\),fr6.*
.*fldwx,sm r4\\(sr0,r5\\),fr6.*
.*flddx r4\\(sr0,r5\\),fr6.*
.*flddx,s r4\\(sr0,r5\\),fr6.*
.*flddx,m r4\\(sr0,r5\\),fr6.*
.*flddx,sm r4\\(sr0,r5\\),fr6.*
.*fstwx fr6,r4\\(sr0,r5\\).*
.*fstwx,s fr6,r4\\(sr0,r5\\).*
.*fstwx,m fr6,r4\\(sr0,r5\\).*
.*fstwx,sm fr6,r4\\(sr0,r5\\).*
.*fstdx fr6,r4\\(sr0,r5\\).*
.*fstdx,s fr6,r4\\(sr0,r5\\).*
.*fstdx,m fr6,r4\\(sr0,r5\\).*
.*fstdx,sm fr6,r4\\(sr0,r5\\).*
.*fstqx fr6,r4\\(sr0,r5\\).*
.*fstqx,s fr6,r4\\(sr0,r5\\).*
.*fstqx,m fr6,r4\\(sr0,r5\\).*
.*fstqx,sm fr6,r4\\(sr0,r5\\).*
.*$gdb_prompt $" { pass "fpu_memory_indexing_tests" }
	-re "$gdb_prompt $" { fail "fpu_memory_indexing_tests" }
	timeout { file "(timeout) fpu_memory_indexing_tests" }
    }

    send_gdb "x/15i fpu_short_memory_tests\n"
    gdb_expect {
	-re "
.*fldws 0\\(sr0,r5\\),fr6.*
.*fldws,mb 0\\(sr0,r5\\),fr6.*
.*fldws,ma 0\\(sr0,r5\\),fr6.*
.*fldds 0\\(sr0,r5\\),fr6.*
.*fldds,mb 0\\(sr0,r5\\),fr6.*
.*fldds,ma 0\\(sr0,r5\\),fr6.*
.*fstws fr6,0\\(sr0,r5\\).*
.*fstws,mb fr6,0\\(sr0,r5\\).*
.*fstws,ma fr6,0\\(sr0,r5\\).*
.*fstds fr6,0\\(sr0,r5\\).*
.*fstds,mb fr6,0\\(sr0,r5\\).*
.*fstds,ma fr6,0\\(sr0,r5\\).*
.*fstqs fr6,0\\(sr0,r5\\).*
.*fstqs,mb fr6,0\\(sr0,r5\\).*
.*fstqs,ma fr6,0\\(sr0,r5\\).*
.*$gdb_prompt $" { pass "fpu_short_memory_tests" }
	-re "$gdb_prompt $" { fail "fpu_short_memory_tests" }
	timeout { file "(timeout) fpu_short_memory_tests" }
    }

}

proc all_fpu_computational_tests { } {
    global gdb_prompt
    global hex
    global decimal

    send_gdb "x/1i fpu_misc_tests\n"
    gdb_expect {
	-re "
.*ftest.*
.*$gdb_prompt $" { pass "fpu_misc_tests" }
	-re "$gdb_prompt $" { fail "fpu_misc_tests" }
	timeout { file "(timeout) fpu_misc_tests" }
    }

    set fpu_two_op_insns [list {fcpy} {fabs} {fsqrt} {frnd} ]

    foreach i $fpu_two_op_insns {
	send_gdb "x/5i $i"; send_gdb "_tests\n"
	gdb_expect {
	    -re "
.*$i,sgl fr5,fr10.*
.*$i,dbl fr5,fr10.*
.*$i,quad fr5,fr10.*
.*$i,sgl fr20,fr24.*
.*$i,dbl fr20,fr24.*
.*$gdb_prompt $" { pass "$i tests" }
	    -re "$gdb_prompt $" { fail "$i tests" }
	    timeout { fail "(timeout) $i tests" }
	}
    }

    set fpu_conversions [list {fcnvff} {fcnvxf} {fcnvfx} {fcnvfxt} ]

    foreach i $fpu_conversions {
	send_gdb "x/18i $i"; send_gdb "_tests\n"
	gdb_expect {
	    -re "
.*$i,sgl,sgl fr5,fr10.*
.*$i,sgl,dbl fr5,fr10.*
.*$i,sgl,quad fr5,fr10.*
.*$i,dbl,sgl fr5,fr10.*
.*$i,dbl,dbl fr5,fr10.*
.*$i,dbl,quad fr5,fr10.*
.*$i,quad,sgl fr5,fr10.*
.*$i,quad,dbl fr5,fr10.*
.*$i,quad,quad fr5,fr10.*
.*$i,sgl,sgl fr20,fr24.*
.*$i,sgl,dbl fr20,fr24.*
.*$i,sgl,quad fr20,fr24.*
.*$i,dbl,sgl fr20,fr24.*
.*$i,dbl,dbl fr20,fr24.*
.*$i,dbl,quad fr20,fr24.*
.*$i,quad,sgl fr20,fr24.*
.*$i,quad,dbl fr20,fr24.*
.*$i,quad,quad fr20,fr24.*
.*$gdb_prompt $" { pass "$i tests" }
	    -re "$gdb_prompt $" { fail "$i tests" }
	    timeout { fail "(timeout) $i tests" }
	}
    }

    set fpu_three_op_insns [list {fadd} {fsub} {fmpy} {fdiv} {frem} ]

    foreach i $fpu_three_op_insns {
	send_gdb "x/6i $i"; send_gdb "_tests\n"
	gdb_expect {
	    -re "
.*$i,sgl fr4,fr8,fr12.*
.*$i,dbl fr4,fr8,fr12.*
.*$i,quad fr4,fr8,fr12.*
.*$i,sgl fr20,fr24,fr28.*
.*$i,dbl fr20,fr24,fr28.*
.*$i,quad fr20,fr24,fr28.*
.*$gdb_prompt $" { pass "$i tests" }
	    -re "$gdb_prompt $" { fail "$i tests" }
	    timeout { fail "(timeout) $i tests" }
	}
    }

    send_gdb "x/4i fmpy_addsub_tests\n"
    gdb_expect {
	-re "
.*fmpyadd,sgl fr16,fr17,fr18,fr19,fr20.*
.*fmpyadd,dbl fr16,fr17,fr18,fr19,fr20.*
.*fmpysub,sgl fr16,fr17,fr18,fr19,fr20.*
.*fmpysub,dbl fr16,fr17,fr18,fr19,fr20.*
.*$gdb_prompt $" { pass "fmpy_addsub_tests" }
	-re "$gdb_prompt $" { fail "fmpy_addsub_tests" }
	timeout { fail "(timeout) fmpy_addsub_tests" }
    }

    send_gdb "x/i xmpyu_tests\n"
    gdb_expect {
	-re "
.*xmpyu fr4,fr5,fr6.*
.*$gdb_prompt $" {pass "xmpyu_tests" }
	-re "$gdb_prompt $" {fail "xmpyu_tests" }
	timeout { fail "(timeout) xmpyu_tests" }
    }

}

proc all_fpu_comparison_tests { } {
    global gdb_prompt
    global hex
    global decimal

    set fpu_comparison_formats [list {sgl} {dbl} {quad} ]

    foreach i $fpu_comparison_formats {
	send_gdb "x/8i fcmp_$i"; send_gdb "_tests_1\n"
	gdb_expect {
	    -re "
.*fcmp,$i,false\\? fr4,fr5.*
.*fcmp,$i,false fr4,fr5.*
.*fcmp,$i,\\? fr4,fr5.*
.*fcmp,$i,!<=> fr4,fr5.*
.*fcmp,$i,= fr4,fr5.*
.*fcmp,$i,=t fr4,fr5.*
.*fcmp,$i,\\?= fr4,fr5.*
.*fcmp,$i,!<> fr4,fr5.*
.*$gdb_prompt $" { pass "$i tests (part1) " }
	    -re "$gdb_prompt $" { fail "fcmp_$i tests (part1) " }
	    timeout { fail "(timeout) fcmp_$i tests (part1) " }
	}

	send_gdb "x/8i fcmp_$i"; send_gdb "_tests_2\n"
	gdb_expect {
	    -re "
.*fcmp,$i,!\\?>= fr4,fr5.*
.*fcmp,$i,< fr4,fr5.*
.*fcmp,$i,\\?< fr4,fr5.*
.*fcmp,$i,!>= fr4,fr5.*
.*fcmp,$i,!\\?> fr4,fr5.*
.*fcmp,$i,<= fr4,fr5.*
.*fcmp,$i,\\?<= fr4,fr5.*
.*fcmp,$i,!> fr4,fr5.*
.*$gdb_prompt $" { pass "$i tests (part2) " }
	    -re "$gdb_prompt $" { fail "fcmp_$i tests (part2) " }
	    timeout { fail "(timeout) fcmp_$i tests (part2) " }
	}

	send_gdb "x/8i fcmp_$i"; send_gdb "_tests_3\n"
	gdb_expect {
	    -re "
.*fcmp,$i,!\\?<= fr4,fr5.*
.*fcmp,$i,> fr4,fr5.*
.*fcmp,$i,\\?> fr4,fr5.*
.*fcmp,$i,!<= fr4,fr5.*
.*fcmp,$i,!\\?< fr4,fr5.*
.*fcmp,$i,>= fr4,fr5.*
.*fcmp,$i,\\?>= fr4,fr5.*
.*fcmp,$i,!< fr4,fr5.*
.*$gdb_prompt $" { pass "$i tests (part3) " }
	    -re "$gdb_prompt $" { fail "fcmp_$i tests (part3) " }
	    timeout { fail "(timeout) fcmp_$i tests (part3) " }
	}

	send_gdb "x/8i fcmp_$i"; send_gdb "_tests_4\n"
	gdb_expect {
	    -re "
.*fcmp,$i,!\\?= fr4,fr5.*
.*fcmp,$i,<> fr4,fr5.*
.*fcmp,$i,!= fr4,fr5.*
.*fcmp,$i,!=t fr4,fr5.*
.*fcmp,$i,!\\? fr4,fr5.*
.*fcmp,$i,<=> fr4,fr5.*
.*fcmp,$i,true\\? fr4,fr5.*
.*fcmp,$i,true fr4,fr5.*
.*$gdb_prompt $" { pass "$i tests (part4) " }
	    -re "$gdb_prompt $" { fail "fcmp_$i tests (part4) " }
	    timeout { fail "(timeout) fcmp_$i tests (part4) " }
	}
    }
}

proc all_special_tests { } {
    global gdb_prompt
    global hex
    global decimal

    send_gdb "x/4i special_tests\n"
    gdb_expect {
	-re "
.*gfw r4\\(sr0,r5\\).*
.*gfw,m r4\\(sr0,r5\\).*
.*gfr r4\\(sr0,r5\\).*
.*gfr,m r4\\(sr0,r5\\).*
.*$gdb_prompt $" { pass "special tests" }
	-re "$gdb_prompt $" { fail "special tests" }
	timeout { fail "(timeout) special tests " }
    }

}

proc all_sfu_tests { } {
    global gdb_prompt
    global hex
    global decimal

    send_gdb "x/16i sfu_tests\n"
    gdb_expect {
	-re "
.*spop0,4,5.*
.*spop0,4,73.*
.*spop0,4,5,n.*
.*spop0,4,73,n.*
.*spop1,4,5 r5.*
.*spop1,4,73 r5.*
.*spop1,4,5,n r5.*
.*spop1,4,73,n r5.*
.*spop2,4,5 r5.*
.*spop2,4,73 r5.*
.*spop2,4,5,n r5.*
.*spop2,4,73,n r5.*
.*spop3,4,5 r5,r6.*
.*spop3,4,73 r5,r6.*
.*spop3,4,5,n r5,r6.*
.*spop3,4,73,n r5,r6.*
.*$gdb_prompt $" { pass "sfu tests" }
	-re "$gdb_prompt $" { fail "sfu tests" }
	timeout { fail "(timeout) sfu tests " }
    }
}

proc all_copr_tests { } {
    global gdb_prompt
    global hex
    global decimal

    send_gdb "x/4i copr_tests\n"
    gdb_expect {
	-re "
.*copr,4,5.*
.*copr,4,73.*
.*copr,4,5,n.*
.*copr,4,73,n.*
.*$gdb_prompt $" { pass "copr tests" }
	-re "$gdb_prompt $" { fail "copr tests" }
	timeout { fail "(timeout) copr tests " }
    }
}

proc all_copr_mem_tests { } {
    global gdb_prompt
    global hex
    global decimal

    send_gdb "x/8i copr_indexing_load\n"
    gdb_expect {
	-re "
.*cldwx,4 r5\\(sr0,r4\\),r26.*
.*cldwx,4,s r5\\(sr0,r4\\),r26.*
.*cldwx,4,m r5\\(sr0,r4\\),r26.*
.*cldwx,4,sm r5\\(sr0,r4\\),r26.*
.*clddx,4 r5\\(sr0,r4\\),r26.*
.*clddx,4,s r5\\(sr0,r4\\),r26.*
.*clddx,4,m r5\\(sr0,r4\\),r26.*
.*clddx,4,sm r5\\(sr0,r4\\),r26.*
.*$gdb_prompt $" { pass "copr indexed load tests" }
	-re "$gdb_prompt $" { fail "copr indexed load tests" }
	timeout { fail "(timeout) copr indexed load tests " }
    }

    send_gdb "x/8i copr_indexing_store\n"
    gdb_expect {
	-re "
.*cstwx,4 r26,r5\\(sr0,r4\\).*
.*cstwx,4,s r26,r5\\(sr0,r4\\).*
.*cstwx,4,m r26,r5\\(sr0,r4\\).*
.*cstwx,4,sm r26,r5\\(sr0,r4\\).*
.*cstdx,4 r26,r5\\(sr0,r4\\).*
.*cstdx,4,s r26,r5\\(sr0,r4\\).*
.*cstdx,4,m r26,r5\\(sr0,r4\\).*
.*cstdx,4,sm r26,r5\\(sr0,r4\\).*
.*$gdb_prompt $" { pass "copr indexed store tests" }
	-re "$gdb_prompt $" { fail "copr indexed store tests" }
	timeout { fail "(timeout) copr indexed load tests " }
    }

    send_gdb "x/12i copr_short_memory\n"
    gdb_expect {
	-re "
.*cldws,4 0\\(sr0,r4\\),r26.*
.*cldws,4,mb 0\\(sr0,r4\\),r26.*
.*cldws,4,ma 0\\(sr0,r4\\),r26.*
.*cldds,4 0\\(sr0,r4\\),r26.*
.*cldds,4,mb 0\\(sr0,r4\\),r26.*
.*cldds,4,ma 0\\(sr0,r4\\),r26.*
.*cstws,4 r26,0\\(sr0,r4\\).*
.*cstws,4,mb r26,0\\(sr0,r4\\).*
.*cstws,4,ma r26,0\\(sr0,r4\\).*
.*cstds,4 r26,0\\(sr0,r4\\).*
.*cstds,4,mb r26,0\\(sr0,r4\\).*
.*cstds,4,ma r26,0\\(sr0,r4\\).*
.*$gdb_prompt $" { pass "copr short memory tests" }
	-re "$gdb_prompt $" { fail "copr short memory tests" }
	timeout { fail "(timeout) copr short memory tests " }
    }
}

proc fmemLRbug_tests { } {
    global gdb_prompt
    global hex
    global decimal

    send_gdb "x/12i fmemLRbug_tests_1\n"
    gdb_expect {
	-re "
.*fstws fr6R,0\\(sr0,r26\\).*
.*fstws fr6,4\\(sr0,r26\\).*
.*fstws fr6,8\\(sr0,r26\\).*
.*fstds fr6,0\\(sr0,r26\\).*
.*fstds fr6,4\\(sr0,r26\\).*
.*fstds fr6,8\\(sr0,r26\\).*
.*fldws 0\\(sr0,r26\\),fr6R.*
.*fldws 4\\(sr0,r26\\),fr6.*
.*fldws 8\\(sr0,r26\\),fr6.*
.*fldds 0\\(sr0,r26\\),fr6.*
.*fldds 4\\(sr0,r26\\),fr6.*
.*fldds 8\\(sr0,r26\\),fr6.*
.*$gdb_prompt $" { pass "fmem LR register selector tests (part1)" }
	-re "$gdb_prompt $" { fail "fmem LR register selector tests (part1)" }
	timeout { fail "(timeout) fmem LR register selector tests  (part1)" }
    }

    send_gdb "x/12i fmemLRbug_tests_2\n"
    gdb_expect {
	-re "
.*fstws fr6R,0\\(sr0,r26\\).*
.*fstws fr6,4\\(sr0,r26\\).*
.*fstws fr6,8\\(sr0,r26\\).*
.*fstds fr6,0\\(sr0,r26\\).*
.*fstds fr6,4\\(sr0,r26\\).*
.*fstds fr6,8\\(sr0,r26\\).*
.*fldws 0\\(sr0,r26\\),fr6R.*
.*fldws 4\\(sr0,r26\\),fr6.*
.*fldws 8\\(sr0,r26\\),fr6.*
.*fldds 0\\(sr0,r26\\),fr6.*
.*fldds 4\\(sr0,r26\\),fr6.*
.*fldds 8\\(sr0,r26\\),fr6.*
.*$gdb_prompt $" { pass "fmem LR register selector tests (part2)" }
	-re "$gdb_prompt $" { fail "fmem LR register selector tests (part2)" }
	timeout { fail "(timeout) fmem LR register selector tests  (part2)" }
    }

    send_gdb "x/12i fmemLRbug_tests_3\n"
    gdb_expect {
	-re "
.*fstwx fr6R,r25\\(sr0,r26\\).*
.*fstwx fr6,r25\\(sr0,r26\\).*
.*fstwx fr6,r25\\(sr0,r26\\).*
.*fstdx fr6,r25\\(sr0,r26\\).*
.*fstdx fr6,r25\\(sr0,r26\\).*
.*fstdx fr6,r25\\(sr0,r26\\).*
.*fldwx r25\\(sr0,r26\\),fr6R.*
.*fldwx r25\\(sr0,r26\\),fr6.*
.*fldwx r25\\(sr0,r26\\),fr6.*
.*flddx r25\\(sr0,r26\\),fr6.*
.*flddx r25\\(sr0,r26\\),fr6.*
.*flddx r25\\(sr0,r26\\),fr6.*
.*$gdb_prompt $" { pass "fmem LR register selector tests (part3)" }
	-re "$gdb_prompt $" { fail "fmem LR register selector tests (part3)" }
	timeout { fail "(timeout) fmem LR register selector tests  (part3)" }
    }

    send_gdb "x/12i fmemLRbug_tests_4\n"
    gdb_expect {
	-re "
.*fstwx fr6R,r25\\(sr0,r26\\).*
.*fstwx fr6,r25\\(sr0,r26\\).*
.*fstwx fr6,r25\\(sr0,r26\\).*
.*fstdx fr6,r25\\(sr0,r26\\).*
.*fstdx fr6,r25\\(sr0,r26\\).*
.*fstdx fr6,r25\\(sr0,r26\\).*
.*fldwx r25\\(sr0,r26\\),fr6R.*
.*fldwx r25\\(sr0,r26\\),fr6.*
.*fldwx r25\\(sr0,r26\\),fr6.*
.*flddx r25\\(sr0,r26\\),fr6.*
.*flddx r25\\(sr0,r26\\),fr6.*
.*flddx r25\\(sr0,r26\\),fr6.*
.*$gdb_prompt $" { pass "fmem LR register selector tests (part4)" }
	-re "$gdb_prompt $" { fail "fmem LR register selector tests (part4)" }
	timeout { fail "(timeout) fmem LR register selector tests  (part4)" }
    }
}

# Start with a fresh gdb.

gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load $binfile

all_integer_memory_tests
all_immediate_tests
all_branch_tests
all_integer_computational_tests
all_system_control_tests
all_fpu_memory_tests
all_fpu_computational_tests
all_fpu_comparison_tests
all_special_tests
all_sfu_tests
all_copr_tests
all_copr_mem_tests

# Regression test for a bug Tege found.
fmemLRbug_tests
