
# Copyright 1992-2024 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)

require {istarget "hppa*-*-*"}

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)" }
    }
}

clean_restart $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
