
# Copyright 1992-2021 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
