# Copyright 2012, 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, write to the Free Software
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  

#
# Some generic MIPS tests
#

# When adding a new test to this file, try to do the following things:
#
# * If testing assembly and disassembly of code, don't forget to test
# the actual bit encodings of the instructions (using the
# --show-raw-insn flag to objdump). 
#
# * Try to run the test for as many architectures as appropriate,
# using the "run_dump_test_arches" or "run_list_test_arches" functions,
# along with the output from a call to "mips_arch_list_matching."
#
# * Be sure to compare the test output before and after your testsuite
# changes, to verify that existing and new tests were run as expected.
# Look for expect ERROR messages in the testsuite .log file to make sure
# the new expect code did not contain errors.

# To add support for a new CPU to this file, add an appropriate entry
# to the sequence of "mips_arch_create" function calls below, and test
# the result.  The new CPU should automatically be used when running
# various tests.  If the new CPU is the default CPU for any tool
# targets, make sure the call to "mips_arch_create" reflects that fact.


# The functions below create and manipulate an "architecture data
# array" which contains entries for each MIPS architecture (or CPU)
# known to these tests.  The array contains the following information
# for each architecture, indexed by the name of the architecture
# described by the entry:
#
# displayname: The name of the entry to be used for pretty-printing.
#
# gprsize: The size in bits of General Purpose Registers provided by
# the architecture (must be 32 or 64).
#
# props: A list of text strings which are associated with the
# architecture.  These include the architecture name as well as
# information about what instructions the CPU supports.  When matching
# based on properties, an additional property is added to the normal
# property list, "gpr<gprsize>" so that tests can match CPUs which
# have GPRs of a specific size.  The following properties are most
# useful when matching properties for generic (i.e., not CPU-specific)
# tests:
#
#	mips1, mips2, mips3, mips4, mips5, mips32, mips64
#		The architecture includes the instructions defined
#		by that MIPS ISA.
#
#	fpisa3, fpisa4, fpisa5
#		The architecture includes the floating-point
#		instructions defined by that MIPS ISA.
#
#	gpr_ilocks
#		The architecture interlocks GPRs accesses.  (That is,
#		there are no load delay slots.)
#
#	mips3d	The architecture includes the MIPS-3D ASE.
#
#	ror	The architecture includes hardware rotate instructions.
#
#	gpr32, gpr64
#		The architecture provides 32- or 64-bit General Purpose
#		Registers.
#
#	singlefloat
#		The CPU is 64 bit, but only supports 32 bit FPU.
#
#	nollsc
#		The CPU doesn't support ll, sc, lld and scd instructions.
#
# as_flags: The assembler flags used when assembling tests for this
# architecture.
#
# objdump_flags: The objdump flags used when disassembling tests for
# this architecture.
#
# Most entries in the architecture array will have values in all of
# the fields above.  One entry, "default" represents the default CPU
# based on the target of the assembler being built.  If always has
# empty "as_flags" and "objdump_flags."

# mips_arch_init
#
# This function initializes the architecture data array ("mips_arches")
# to be empty.
proc mips_arch_init {} {
    global mips_arches

    # Catch because the variable won't be set the first time through.
    catch {unset mips_arches}
}

# mips_arch_create ARCH GPRSIZE EXTENDS PROPS AS_FLAGS OBJDUMP_FLAGS \
#		   (optional:) DEFAULT_FOR_TARGETS
#
# This function creates a new entry in the architecture data array,
# for the architecture or CPU named ARCH, and fills in the entry
# according to the rest of the arguments.
#
# The new entry's property list is initialized to contain ARCH, any
# properties specified by PROPS, and the properties associated with
# the entry specified by EXTENDS.  (The new architecture is considered
# to extend the capabilities provided by that architecture.)
#
# If DEFAULT_FOR_TARGETS is specified, it is a list of targets for which
# this architecture is the default architecture.  If "istarget" returns
# true for any of the targets in the list, a "default" entry will be
# added to the architecture array which indicates that ARCH is the default
# architecture.
proc mips_arch_create {arch gprsize extends props as_flags objdump_flags
		       {default_for_targets {}}} {
    global mips_arches

    if { [info exists mips_arches($arch)] } {
             error "mips_arch_create: arch \"$arch\" already exists"
    }
    if { $gprsize != 32 && $gprsize != 64 } {
	error "mips_arch_create: invalid GPR size $gprsize"
    }

    set archdata(displayname) $arch
    set archdata(gprsize) $gprsize
    set archdata(as_flags) $as_flags
    set archdata(objdump_flags) $objdump_flags
    set archdata(props) $arch
    eval lappend archdata(props) $props
    if { [string length $extends] != 0 } {
	eval lappend archdata(props) [mips_arch_properties $extends 0]
    }

    set mips_arches($arch) [array get archdata]

    # Set as default if appropriate.
    foreach target $default_for_targets {
	if { [istarget $target] } {
	    if { [info exists mips_arches(default)] } {
		error "mips_arch_create: default arch already exists"
	    }

	    set archdata(displayname) "default = $arch"
    	    set archdata(as_flags) ""
	    set archdata(objdump_flags) ""

	    set mips_arches(default) [array get archdata]
	    break
	}
    }
}

# mips_arch_destroy ARCH
#
# The opposite of the above.  This function removes an entry from
# the architecture data array, for the architecture or CPU named ARCH.

proc mips_arch_destroy {arch} {
    global mips_arches

    if { [info exists mips_arches($arch)] } {
	unset mips_arches($arch)
    }
}

# mips_arch_list_all
#
# This function returns the list of all names of entries in the
# architecture data array (including the default entry, if a default
# is known).
proc mips_arch_list_all {} {
    global mips_arches
    return [lsort -dictionary [array names mips_arches]]
}

# mips_arch_data ARCH
#
# This function returns the information associated with ARCH
# in the architecture data array, in "array get" form.
proc mips_arch_data {arch} {
    global mips_arches

    if { ! [info exists mips_arches($arch)] } {
	error "mips_arch_data: unknown arch \"$arch\""
    }
    return $mips_arches($arch)
}

# mips_arch_displayname ARCH
#
# This function returns the printable name associated with ARCH in
# the architecture data array.
proc mips_arch_displayname {arch} {
    array set archdata [mips_arch_data $arch]
    return $archdata(displayname)
}

# mips_arch_properties ARCH (optional:) INCLUDE_GPRSIZE
#
# This function returns the property list associated with ARCH in the
# architecture data array, including the "canonical" target name as the
# first element.
#
# If INCLUDE_GPRSIZE is non-zero, an additional "gpr32" or "gpr64"
# property will be returned as part of the list based on the
# architecture's GPR size.
proc mips_arch_properties {arch {include_gprsize 1}} {
    array set archdata [mips_arch_data $arch]
    set props $archdata(props)
    if { $include_gprsize } {
	lappend props gpr$archdata(gprsize)
    }
    return $props
}

# mips_arch_as_flags ARCH
#
# This function returns the assembler flags associated with ARCH in
# the architecture data array. 
proc mips_arch_as_flags {arch} {
    array set archdata [mips_arch_data $arch]
    return $archdata(as_flags)
}

# mips_arch_objdump_flags ARCH
#
# This function returns the objdump disassembly flags associated with
# ARCH in the architecture data array. 
proc mips_arch_objdump_flags {arch} {
    array set archdata [mips_arch_data $arch]
    return $archdata(objdump_flags)
}

# mips_arch_matches ARCH PROPMATCHLIST
#
# This function returns non-zero if ARCH matches the set of properties
# described by PROPMATCHLIST.  Each entry in PROPMATCHLIST can either
# be the name of a property which must be matched, or "!" followed by
# the name of a property which must not be matched.  ARCH matches
# PROPMATCHLIST if and only if all of the conditions specified by
# PROPMATCHLIST are satisfied.
proc mips_arch_matches {arch propmatchlist} {
    foreach pm $propmatchlist {
	if { [string match {!*} $pm] } {
	    # fail if present.
	    set inverted 1
	    set p [string range $pm 1 end]
	} {
	    # fail if not present.
	    set inverted 0
	    set p $pm
	}

	set loc [lsearch -exact [mips_arch_properties $arch] $p]

	# required-absent and found, or required-present and not found: fail.
	if { ($inverted && $loc != -1) || (! $inverted && $loc == -1) } {
	    return 0
	}
    }
    return 1
}

# mips_arch_list_matching ARGS
#
# This function returns a list of all architectures which match
# the conditions described by its arguments.  Its arguments are
# taken as a list and used as the PROPMATCHLIST in a call to
# "mips_arch_matches" for each known architecture.
proc mips_arch_list_matching {args} {
    set l ""
    foreach arch [mips_arch_list_all] {
	# For now, don't match default arch until we know what its
	# properties actually are.
	if { [string compare $arch default] == 0
	     && [string length [mips_arch_properties default]] == 0} {
	    continue
	}
	if { [mips_arch_matches $arch $args] } {
	    lappend l $arch
	}
    }
    return $l
}


# The functions below facilitate running various types of tests.

# run_dump_test_arch NAME OPTS ARCH
#
# Invoke "run_dump_test" for test NAME with additional assembler options OPTS.
# Add the assembler and disassembler flags that are associated with
# architecture ARCH.
#
# You can override the expected output for particular architectures.
# The possible test names are, in order of preference:
#
# 1. CARCH@NAME.d
# 2. NAME.d
#
# where CARCH is the "canonical" name of architecture ARCH as recorded
# in its associated property list.
proc run_dump_test_arch { name opts arch } {
    global subdir srcdir

    set proparch [lindex [mips_arch_properties $arch 0] 0]
    set prefixes [list ${proparch}@ ]
    if { [ string match "octeon*" $proparch ] && $proparch != "octeon" } {
	lappend prefixes octeon@
    }
    foreach prefix ${prefixes} {
	set archname ${prefix}${name}
	if { [file exists "$srcdir/$subdir/${archname}.d"] } {
	    set name $archname
	    break
	}
    }

    if [catch {run_dump_test $name \
		   "{name    {([concat $opts [mips_arch_displayname $arch]])}}
		    {objdump {[mips_arch_objdump_flags $arch]}}
		    {as      {[concat $opts [mips_arch_as_flags $arch]]}}"} rv] {
        perror "$rv"
        untested "$subdir/$name ($arch)"
    }
}

# run_dump_test_arches NAME [OPTS] ARCH_LIST
#
# Invoke "run_dump_test_arch" for test NAME, for each architecture
# listed in ARCH_LIST.  OPTS, if specified, is a list of additional
# assembler options that should be used for all architectures.
proc run_dump_test_arches { name args } {
    set opts ""
    if { [llength $args] > 1 } {
	set opts [lindex $args 0]
	set args [lrange $args 1 end]
    }
    set arch_list [lindex $args 0]
    foreach arch $arch_list {
	run_dump_test_arch $name $opts $arch
    }
}

# run_list_test_arch NAME OPTS ARCH
#
# Invoke "run_list_test" for test NAME with additional assembler options OPTS.
# Add the assembler flags that are associated with architecture ARCH.
proc run_list_test_arch { name opts arch } {
    global subdir

    set testname "MIPS $name ([concat $opts [mips_arch_displayname $arch]])"
    if [catch {run_list_test \
		   $name \
		   [concat $opts [mips_arch_as_flags $arch]] \
		   $testname} rv] {
        perror "$rv"
        untested "$testname"
    }
}

# run_list_test_arches NAME [OPTS] ARCH_LIST
#
# Invoke "run_list_test_arch" for test NAME, for each architecture listed
# in ARCH_LIST.  OPTS, if specified, is a list of additional assembler
# options that should be used for all architectures.
proc run_list_test_arches { name args } {
    set opts ""
    if { [llength $args] > 1 } {
	set opts [lindex $args 0]
	set args [lrange $args 1 end]
    }
    set arch_list [lindex $args 0]
    foreach arch $arch_list {
	run_list_test_arch "$name" "$opts" "$arch"
    }
}


# Create the architecture data array by providing data for all
# known architectures.
#
# Note that several targets pick default CPU based on ABI.  We
# can't easily handle that; do NOT list those targets as defaulting
# to any architecture.
mips_arch_init
mips_arch_create mips1 	32	{}	{} \
			{ -march=mips1 -mtune=mips1 } { -mmips:3000 }
mips_arch_create mips2 	32	mips1	{ gpr_ilocks } \
		        { -march=mips2 -mtune=mips2 } { -mmips:6000 }
mips_arch_create mips3 	64	mips2	{ fpisa3 } \
			{ -march=mips3 -mtune=mips3 } { -mmips:4000 }
mips_arch_create mips4 	64	mips3	{ fpisa4 } \
			{ -march=mips4 -mtune=mips4 } { -mmips:8000 }
mips_arch_create mips5 	64	mips4	{ fpisa5 } \
			{ -march=mips5 -mtune=mips5 } { -mmips:mips5 }
mips_arch_create mips32	32	mips2	{} \
			{ -march=mips32 -mtune=mips32 } { -mmips:isa32 } \
			{ mipsisa32-*-* mipsisa32el-*-* }
mips_arch_create mips32r2 32	mips32	{ fpisa3 fpisa4 fpisa5 ror } \
			{ -march=mips32r2 -mtune=mips32r2 } \
			{ -mmips:isa32r2 } \
			{ mipsisa32r2-*-* mipsisa32r2el-*-* }
mips_arch_create mips64	64	mips5	{ mips32 } \
			{ -march=mips64 -mtune=mips64 } { -mmips:isa64 } \
			{ mipsisa64-*-* mipsisa64el-*-* }
mips_arch_create mips64r2 64	mips64	{ mips32r2 ror } \
			{ -march=mips64r2 -mtune=mips64r2 } \
			{ -mmips:isa64r2 } \
			{ mipsisa64r2-*-* mipsisa64r2el-*-* }
mips_arch_create mips16	32	{}	{} \
			{ -march=mips1 -mips16 } { -mmips:16 }
mips_arch_create micromips 64	mips64r2 {} \
			{ -march=mips64 -mmicromips } {}
mips_arch_create r3000 	32	mips1	{} \
			{ -march=r3000 -mtune=r3000 } { -mmips:3000 }
mips_arch_create r3900 	32	mips1	{ gpr_ilocks } \
			{ -march=r3900 -mtune=r3900 } { -mmips:3900 } \
			{ mipstx39-*-* mipstx39el-*-* }
mips_arch_create r4000 	64	mips3	{} \
			{ -march=r4000 -mtune=r4000 } { -mmips:4000 }
mips_arch_create vr5400	64	mips4	{ ror } \
			{ -march=vr5400 -mtune=vr5400 } { -mmips:5400 }
mips_arch_create sb1 	64	mips64	{ mips3d } \
			{ -march=sb1 -mtune=sb1 } { -mmips:sb1 } \
			{ mipsisa64sb1-*-* mipsisa64sb1el-*-* }
mips_arch_create octeon 64	mips64r2 {} \
			{ -march=octeon -mtune=octeon } { -mmips:octeon } \
			{ mips64octeon*-*-* }
mips_arch_create octeonp 64	octeon {} \
			{ -march=octeon+ -mtune=octeon+ } { -mmips:octeon+ } \
			{ }
mips_arch_create octeon2 64	octeonp {} \
			{ -march=octeon2 -mtune=octeon2 } { -mmips:octeon2 } \
			{ }
mips_arch_create xlr 	64	mips64	{} \
			{ -march=xlr -mtune=xlr } { -mmips:xlr }
mips_arch_create r5900 	64	mips3	{ gpr_ilocks singlefloat nollsc } \
			{ -march=r5900 -mtune=r5900 } { -mmips:5900 } \
			{ mipsr5900el-*-* mips64r5900el-*-* }

#
# And now begin the actual tests!  VxWorks uses RELA rather than REL
# relocations, so most of the generic dump tests will not work there.
#
if { [istarget mips*-*-vxworks*] } {
    run_dump_test "vxworks1"
    run_dump_test "vxworks1-xgot"
    run_dump_test "vxworks1-el"
    run_dump_test "vxworks1-xgot-el"
} elseif { [istarget mips*-*-*] } {
    set addr32 [expr [istarget mipstx39*-*-*] || [istarget mips-*-linux*] || [istarget mipsel-*-linux*]]
    set has_newabi [expr [istarget *-*-irix6*] || [istarget mips*-*-linux*] || [istarget mips*-sde-elf*]]

    if { [istarget "mips*-*-*linux*"]
	 || [istarget "mips*-sde-elf*"]
	 || [istarget "mips*-*-*bsd*"] } then {
	set tmips "t"
    } else {
	set tmips ""
    }
    if [istarget mips*el-*-*] {
	set el "el"
    } {
	set el ""
    }

    run_dump_test_arches "dot-1"	[mips_arch_list_matching mips1]
    run_dump_test_arches "abs"		[mips_arch_list_matching mips1]
    run_dump_test_arches "add"		[mips_arch_list_matching mips1]
    run_dump_test_arches "and"		[mips_arch_list_matching mips1]
    run_dump_test_arches "mips1-fp"	[mips_arch_list_matching mips1]
    run_list_test_arches "mips1-fp" "-32 -msoft-float" \
					[mips_arch_list_matching mips1]
    run_dump_test "break20"
    run_dump_test "trap20"

    run_dump_test_arches "beq"		[mips_arch_list_matching mips1]
    run_dump_test_arches "bge"		[mips_arch_list_matching mips1]
    run_dump_test_arches "bgeu"		[mips_arch_list_matching mips1]
    run_dump_test_arches "blt"		[mips_arch_list_matching mips1]
    run_dump_test_arches "bltu"		[mips_arch_list_matching mips1]
    run_dump_test_arches "branch-likely" [mips_arch_list_matching mips2]
    run_dump_test_arches "branch-misc-1" [mips_arch_list_matching mips1]
    run_dump_test_arches "branch-misc-2" [mips_arch_list_matching mips1]
    run_dump_test_arches "branch-misc-2pic" [mips_arch_list_matching mips1]
    run_dump_test_arches "branch-misc-2-64" [mips_arch_list_matching mips3]
    run_dump_test_arches "branch-misc-2pic-64" [mips_arch_list_matching mips3]
    run_dump_test "branch-misc-3"
    run_dump_test "branch-swap"

    # Sweep a range of branch offsets so that it hits a position where
    # it is at the beginning of a frag and then swapped with a 16-bit
    # instruction from the preceding frag.  The offset will be somewhere
    # close below 4096 as this is the default obstack size limit that
    # we use and some space will have been already consumed.  The exact
    # amount depends on the host's programming model.
    for { set count 960 } { $count <= 1024 } { incr count } {
	run_list_test "branch-swap-2" "--defsym count=$count" \
	    "MIPS branch swapping ($count)"
    }

    run_dump_test "div"

    if { !$addr32 } {
	run_dump_test_arches "dli"	[mips_arch_list_matching mips3]
    }
    run_dump_test_arches "jal"		[mips_arch_list_matching mips1]
    run_dump_test_arches "jal-mask-11"	[mips_arch_list_matching mips1]
    run_dump_test_arches "jal-mask-12"	[mips_arch_list_matching mips1]
    run_dump_test_arches "jal-mask-21"	[mips_arch_list_matching micromips]
    run_dump_test_arches "jal-mask-22"	[mips_arch_list_matching micromips]
    run_dump_test "eret-1"
    run_dump_test "eret-2"
    run_dump_test "eret-3"
    run_dump_test_arches "24k-branch-delay-1" \
					[mips_arch_list_matching mips1]
    run_dump_test_arches "24k-triple-stores-1" \
				[mips_arch_list_matching fpisa5 !octeon]
    run_dump_test_arches "24k-triple-stores-2" \
					[mips_arch_list_matching mips2]
    run_dump_test_arches "24k-triple-stores-2-llsc" \
					[mips_arch_list_matching mips2 !nollsc]
    run_dump_test_arches "24k-triple-stores-3" \
					[mips_arch_list_matching mips2]
    run_dump_test_arches "24k-triple-stores-4" \
					[mips_arch_list_matching mips2 !singlefloat]
    run_dump_test_arches "24k-triple-stores-5" \
					[mips_arch_list_matching mips1]
    run_dump_test_arches "24k-triple-stores-6" \
					[mips_arch_list_matching mips2 !singlefloat]
    run_dump_test_arches "24k-triple-stores-7" \
					[mips_arch_list_matching mips2 !singlefloat]
    run_dump_test_arches "24k-triple-stores-8" \
					[mips_arch_list_matching mips1]
    run_dump_test_arches "24k-triple-stores-9" \
					[mips_arch_list_matching mips1]
    run_dump_test_arches "24k-triple-stores-10" \
					[mips_arch_list_matching mips1]
    run_dump_test_arches "24k-triple-stores-11" \
	    				[mips_arch_list_matching mips1]

    run_dump_test_arches "jal-svr4pic"	[mips_arch_list_matching mips1]
    run_dump_test_arches "jal-svr4pic-noreorder" \
					[mips_arch_list_matching mips1]
    run_dump_test "jal-xgot"
    run_list_test_arches "jal-range" "-32" [mips_arch_list_matching mips1]
    if $has_newabi { run_dump_test "jal-newabi" }
    run_dump_test "la"
    run_dump_test "la-svr4pic"
    run_dump_test "la-xgot"
    run_dump_test "lca-svr4pic"
    run_dump_test "lca-xgot"
    # XXX FIXME: Has mips2 and later insns with mips1 disassemblies.
    # (Should split and then use appropriate arch lists.)
    run_dump_test_arches "lb"	[mips_arch_list_matching mips1 !mips2]
    run_dump_test_arches "lb-svr4pic" \
				[mips_arch_list_matching mips1 !gpr_ilocks]
    run_dump_test_arches "lb-svr4pic-ilocks" [mips_arch_list_matching gpr_ilocks]
    # Both versions specify the cpu, so we can run both regardless of
    # the interlocking in the configured default cpu.
    run_dump_test "lb-xgot"
    run_dump_test "lb-xgot-ilocks"
    run_dump_test_arches "ld"		[mips_arch_list_matching mips1]
    run_dump_test_arches "ld-forward" 	[mips_arch_list_matching mips1]
    run_dump_test_arches "sd"		[mips_arch_list_matching mips1]
    run_dump_test_arches "sd-forward" 	[mips_arch_list_matching mips1]
    run_dump_test_arches "l_d" 		[mips_arch_list_matching mips1 !singlefloat]
    run_dump_test_arches "l_d-single"	[mips_arch_list_matching mips1 singlefloat]
    run_dump_test_arches "l_d-forward"	[mips_arch_list_matching mips1 !singlefloat]
    run_dump_test_arches "s_d"		[mips_arch_list_matching mips1 !singlefloat]
    run_dump_test_arches "s_d-single"	[mips_arch_list_matching mips1 singlefloat]
    run_dump_test_arches "s_d-forward" 	[mips_arch_list_matching mips1 !singlefloat]
    run_dump_test_arches "ldc1"		[mips_arch_list_matching mips2 !singlefloat]
    run_dump_test_arches "ldc1-forward" [mips_arch_list_matching mips2 !singlefloat]
    run_dump_test_arches "sdc1"		[mips_arch_list_matching mips2 !singlefloat]
    run_dump_test_arches "sdc1-forward" [mips_arch_list_matching mips2 !singlefloat]
    if $has_newabi {
	run_dump_test_arches "ld-n32" 	[mips_arch_list_matching mips3]
	run_dump_test_arches "ld-forward-n32" \
					[mips_arch_list_matching mips3]
	run_dump_test_arches "sd-n32" 	[mips_arch_list_matching mips3]
	run_dump_test_arches "sd-forward-n32" \
					[mips_arch_list_matching mips3]
	run_dump_test_arches "l_d-n32" 	[mips_arch_list_matching mips3 !singlefloat]
	run_dump_test_arches "l_d-forward-n32" \
					[mips_arch_list_matching mips3 !singlefloat]
	run_dump_test_arches "s_d-n32" 	[mips_arch_list_matching mips3 !singlefloat]
	run_dump_test_arches "s_d-forward-n32" \
					[mips_arch_list_matching mips3 !singlefloat]
	run_dump_test_arches "ldc1-n32" [mips_arch_list_matching mips3 !singlefloat]
	run_dump_test_arches "ldc1-forward-n32" \
					[mips_arch_list_matching mips3 !singlefloat]
	run_dump_test_arches "sdc1-n32" [mips_arch_list_matching mips3 !singlefloat]
	run_dump_test_arches "sdc1-forward-n32" \
					[mips_arch_list_matching mips3 !singlefloat]
	run_dump_test_arches "ld-n64"	[mips_arch_list_matching mips3]
	run_dump_test_arches "ld-forward-n64" \
					[mips_arch_list_matching mips3]
	run_dump_test_arches "sd-n64"	[mips_arch_list_matching mips3]
	run_dump_test_arches "sd-forward-n64" \
					[mips_arch_list_matching mips3]
	run_dump_test_arches "l_d-n64"	[mips_arch_list_matching mips3 !singlefloat]
	run_dump_test_arches "l_d-forward-n64" \
					[mips_arch_list_matching mips3 !singlefloat]
	run_dump_test_arches "s_d-n64"	[mips_arch_list_matching mips3 !singlefloat]
	run_dump_test_arches "s_d-forward-n64" \
					[mips_arch_list_matching mips3 !singlefloat]
	run_dump_test_arches "ldc1-n64"	[mips_arch_list_matching mips3 !singlefloat]
	run_dump_test_arches "ldc1-forward-n64" \
					[mips_arch_list_matching mips3 !singlefloat]
	run_dump_test_arches "sdc1-n64"	[mips_arch_list_matching mips3 !singlefloat]
	run_dump_test_arches "sdc1-forward-n64" \
					[mips_arch_list_matching mips3 !singlefloat]
    }
    run_dump_test_arches "ld-zero"	[mips_arch_list_matching mips1]
    run_dump_test_arches "ld-zero-2"	[mips_arch_list_matching mips2 !nollsc]
    run_dump_test_arches "ld-zero-3"	[mips_arch_list_matching mips3 !nollsc]
    run_dump_test_arches "ld-zero-u"	[mips_arch_list_matching micromips]
    run_dump_test_arches "ld-zero-q"	[mips_arch_list_matching r5900]
    run_dump_test "ld-svr4pic"
    run_dump_test "ld-xgot"
    run_dump_test_arches "li"		[mips_arch_list_matching mips1]
    run_dump_test "lifloat"
    run_dump_test "lif-svr4pic"
    run_dump_test "lif-xgot"
    run_dump_test_arches "mips4"	[mips_arch_list_matching mips4]
    run_dump_test_arches "mips4-fp" "-32" \
					[mips_arch_list_matching fpisa4]
    run_dump_test_arches "mips4-fp" "-mabi=o64" \
					[mips_arch_list_matching fpisa4 gpr64]
    run_list_test_arches "mips4-fp" "-32 -msoft-float" \
					[mips_arch_list_matching fpisa4]
    run_dump_test_arches "mips4-branch-likely" \
					[mips_arch_list_matching mips4]
    run_list_test_arches "mips4-branch-likely" "-32 -msoft-float" \
					[mips_arch_list_matching mips4]
    run_dump_test_arches "mips5-fp" "-32" \
					[mips_arch_list_matching fpisa5]
    run_dump_test_arches "mips5-fp" "-mabi=o64" \
					[mips_arch_list_matching fpisa5 gpr64]
    run_dump_test "mul"

    run_dump_test_arches "rol"		[mips_arch_list_matching mips1 !ror]
    run_dump_test_arches "rol-hw" 	[mips_arch_list_matching ror]

    run_dump_test_arches "rol64"	[mips_arch_list_matching gpr64 !ror]
    run_dump_test_arches "rol64-hw"	[mips_arch_list_matching gpr64 ror]

    run_dump_test "sb"
    run_dump_test "trunc"
    run_dump_test "ulh"
    run_dump_test_arches "ulh2-eb"	[mips_arch_list_matching mips1]
    run_dump_test_arches "ulh2-el"	[mips_arch_list_matching mips1]
    run_dump_test "ulh-svr4pic"
    run_dump_test "ulh-xgot"
    run_dump_test "ulw"
    run_dump_test "uld"
    run_dump_test "ush"
    run_dump_test "usw"
    run_dump_test "usd"
    run_dump_test_arches "ulw2-eb" [mips_arch_list_matching mips1 !gpr_ilocks]
    run_dump_test_arches "ulw2-eb-ilocks" [mips_arch_list_matching gpr_ilocks]
    run_dump_test_arches "ulw2-el" [mips_arch_list_matching mips1 !gpr_ilocks]
    run_dump_test_arches "ulw2-el-ilocks" [mips_arch_list_matching gpr_ilocks]

    run_dump_test_arches "uld2-eb" [mips_arch_list_matching mips3]
    run_dump_test_arches "uld2-el" [mips_arch_list_matching mips3]

    run_dump_test "mips16"
    run_dump_test "mips16-64"
    # Check MIPS16e extensions
    run_dump_test_arches "mips16e" [mips_arch_list_matching mips32 !micromips]
    # Check jalx handling
    run_dump_test "mips16-jalx"
    run_dump_test "mips-jalx"
    run_dump_test "mips-jalx-2"
    # Check MIPS16 HI16/LO16 relocations
    run_dump_test "mips16-hilo"
    if $has_newabi {
	run_dump_test "mips16-hilo-n32"
    }
    run_dump_test "mips16-hilo-match"
    run_dump_test "delay"
    run_dump_test "nodelay"
    run_dump_test "mips4010"
    run_dump_test "mips4650"
    run_dump_test "mips4100"
    run_dump_test "vr4111"
    run_dump_test "vr4120"
    run_dump_test "vr4120-2"
    run_dump_test "vr4130"
    run_dump_test "vr5400"
    run_list_test "vr5400-ill" "-march=vr5400"
    run_dump_test "vr5500"
    run_dump_test "rm7000"
    run_dump_test "perfcount"
    run_dump_test "lineno"
    run_dump_test "sync"

    run_dump_test_arches "virt"		[mips_arch_list_matching mips32r2]
    run_dump_test_arches "virt64"	[mips_arch_list_matching mips64r2]

    run_dump_test_arches "mips32"	[mips_arch_list_matching mips32]
    run_dump_test_arches "mips32-imm"	[mips_arch_list_matching mips32]

    run_dump_test_arches "mips32-sf32"	[mips_arch_list_matching mips32]
    run_list_test_arches "mips32-sf32" "-32 -msoft-float" \
					[mips_arch_list_matching mips32]
    run_dump_test_arches "mips32-cp2"	[mips_arch_list_matching mips32 \
					    !octeon]

    run_dump_test_arches "mips32r2"	[mips_arch_list_matching mips32r2]
    run_dump_test_arches "mips32r2-cp2"	[mips_arch_list_matching mips32r2 \
					    !octeon]
    run_dump_test_arches "mips32r2-fp32" \
					[mips_arch_list_matching mips32r2]
    run_list_test_arches "mips32r2-fp32" "-32 -msoft-float" \
					[mips_arch_list_matching mips32r2]
    run_list_test_arches "mips32r2-ill" "-32" \
			[mips_arch_list_matching mips32r2 gpr32]
    run_list_test_arches "mips32r2-ill-fp64" "-mabi=o64" \
			[mips_arch_list_matching mips32r2 gpr64]
    run_list_test_arches "mips32r2-ill-nofp" "-32 -msoft-float" \
			[mips_arch_list_matching mips32r2]

    run_dump_test_arches "mips64"	[mips_arch_list_matching mips64]
    run_dump_test_arches "mips64-cp2"	[mips_arch_list_matching mips64 \
					    !octeon]

    run_dump_test_arches "mips64r2"	[mips_arch_list_matching mips64r2]
    run_list_test_arches "mips64r2-ill"	[mips_arch_list_matching mips64r2]

    run_dump_test "set-arch"

    if { !$addr32 } {
	run_dump_test "mips64-mips3d"
	run_dump_test_arches "mips64-mips3d-incl" [mips_arch_list_matching mips3d]

	run_dump_test "mips64-mdmx"
	run_dump_test "sb1-ext-mdmx"
	run_dump_test "sb1-ext-ps"
	run_dump_test "xlr-ext"
    }

    run_dump_test_arches "relax"	[mips_arch_list_matching mips2]
    run_dump_test_arches "relax-at"	[mips_arch_list_matching mips2]
    run_dump_test "relax-swap1-mips1"
    run_dump_test "relax-swap1-mips2"
    run_dump_test "relax-swap2"
    run_dump_test_arches "relax-swap3"	[mips_arch_list_all]
    run_list_test_arches "relax-bc1any" "-mips3d -relax-branch" \
					[mips_arch_list_matching mips64 \
					    !micromips]
    run_list_test_arches "relax-bposge" "-mdsp -relax-branch" \
					[mips_arch_list_matching mips64r2 \
					    !micromips]

    run_dump_test_arches "eva"		[mips_arch_list_matching mips32r2 !octeon]

    run_list_test "illegal" "-32"
    run_list_test "baddata1" "-32"
    run_list_test "jalr" ""

    run_dump_test "mips-gp32-fp32"
    run_dump_test "mips-gp32-fp64"
    run_dump_test "mips-gp64-fp32"
    run_dump_test "mips-gp64-fp64"

    # Make sure that -mcpu=FOO and -mFOO are equivalent.  Assemble a file
    # containing 4650-specific instructions with -m4650 and -mcpu=4650,
    # and verify that they're the same.  Specifically, we're checking
    # that the EF_MIPS_MACH field is set, and that the 4650 'mul'
    # instruction does get used.  In previous versions of GAS,
    # only -mcpu=4650 would set the EF_MIPS_MACH field; -m4650 wouldn't.
    run_dump_test "elf_e_flags1"
    run_dump_test "elf_e_flags2"
    run_dump_test "elf_e_flags3"
    run_dump_test "elf_e_flags4"

    # Check EF_MIPS_ARCH markings for each supported architecture.
    run_dump_test "elf_arch_mips1"
    run_dump_test "elf_arch_mips2"
    run_dump_test "elf_arch_mips3"
    run_dump_test "elf_arch_mips4"
    run_dump_test "elf_arch_mips5"
    run_dump_test "elf_arch_mips32"
    run_dump_test "elf_arch_mips32r2"
    run_dump_test "elf_arch_mips64"
    run_dump_test "elf_arch_mips64r2"

    # Verify that ASE markings are handled properly.
    run_dump_test "elf_ase_mips16"
    run_dump_test "elf_ase_mips16-2"

    run_dump_test "elf_ase_micromips"
    run_dump_test "elf_ase_micromips-2"

    run_dump_test "mips-gp32-fp32-pic"
    run_dump_test "mips-gp32-fp64-pic"
    run_dump_test "mips-gp64-fp32-pic"
    run_dump_test "mips-gp64-fp64-pic"

    run_dump_test "mips-abi32"
    run_dump_test "mips-abi32-pic"
    run_dump_test "mips-abi32-pic2"

    run_dump_test "elf${el}-rel"
    run_dump_test_arches "elf${el}-rel2" [mips_arch_list_matching gpr64 !singlefloat]
    run_dump_test "e32${el}-rel2"
    run_dump_test "elf${el}-rel3"
    run_dump_test_arches "elf-rel4" [mips_arch_list_matching gpr64]
    run_dump_test "e32-rel4"
    run_dump_test "elf-rel5"
    run_dump_test "elf-rel6"
    if $has_newabi {
	run_dump_test "elf-rel6-n32"
	run_dump_test "elf-rel6-n64"
    }
    run_dump_test "elf-rel7"
    run_dump_test "elf-rel8"
    run_dump_test "elf-rel8-mips16"
    run_dump_test "elf-rel9"
    run_dump_test "elf-rel9-mips16"
    if $has_newabi {
	run_dump_test "elf-rel10"
	run_dump_test "elf-rel11"
    }
    run_dump_test "elf-rel12"
    run_dump_test "elf-rel13"
    run_dump_test "elf-rel13-mips16"
    run_dump_test "elf-rel14"

    if $has_newabi {
	run_dump_test "elf-rel15"
	run_dump_test "elf-rel16"

	run_dump_test "elf-rel-got-n32"
	run_dump_test "elf-rel-xgot-n32"
	run_dump_test "elf-rel-got-n64"
	run_dump_test "elf-rel-xgot-n64"
    }
    run_dump_test "elf-rel17"
    if $has_newabi {
	run_dump_test "elf-rel18"
    }
    run_dump_test "elf-rel19"
    run_dump_test "elf-rel20"
    if $has_newabi {
	run_dump_test "elf-rel21"
	run_dump_test "elf-rel22"
	run_dump_test "elf-rel23"
	run_dump_test "elf-rel23a"
	run_dump_test "elf-rel23b"
	run_dump_test "elf-rel24"
    }

    run_dump_test "elf-rel25"
    run_dump_test "elf-rel25a"
    run_dump_test "elf-rel26"

    run_dump_test_arches "elf-rel27" [mips_arch_list_all]

    if $has_newabi {
	run_dump_test "elf-rel28-n32"
	run_dump_test "elf-rel28-n64"
	run_dump_test_arches "elf-rel29" [mips_arch_list_matching mips3]
    }
    run_list_test_arches "elf-rel30" "-32" [mips_arch_list_all]

    run_dump_test "${tmips}mips${el}16-e"
    run_dump_test "${tmips}mips${el}16-f"

    run_dump_test "elf-consthilo"
    run_dump_test "expr1"

    run_list_test "tls-ill" "-32"
    run_dump_test "tls-o32"
    run_dump_test "tls-relw"
    run_dump_test "jalr2"
    run_dump_test_arches "jalr3"	[mips_arch_list_matching mips1 \
					!micromips]
    if $has_newabi {
	run_dump_test_arches "jalr3-n32" \
				    [mips_arch_list_matching mips3 \
					!micromips]
	run_dump_test_arches "jalr3-n64" \
				    [mips_arch_list_matching mips3 \
					!micromips]
    }

    run_dump_test_arches "aent"	[mips_arch_list_matching mips1]

    run_dump_test_arches "branch-misc-4"	[mips_arch_list_matching mips1]
    run_dump_test_arches "branch-misc-4-64"	[mips_arch_list_matching mips3]

    run_dump_test_arches "loc-swap"	[mips_arch_list_all]
    run_dump_test_arches "loc-swap-dis"	[mips_arch_list_all]
    run_dump_test_arches "loc-swap-2"	[mips_arch_list_all]
    run_dump_test_arches "loc-swap-3"	[mips_arch_list_all]

    run_dump_test "nan-legacy-1"
    run_dump_test "nan-legacy-2"
    run_dump_test "nan-legacy-3"
    run_dump_test "nan-legacy-4"
    run_dump_test "nan-legacy-5"

    run_dump_test "nan-2008-1"
    run_dump_test "nan-2008-2"
    run_dump_test "nan-2008-3"
    run_dump_test "nan-2008-4"

    run_list_test "nan-error-1"
    run_list_test "nan-error-2" "-mnan=foo"

    if $has_newabi {
	run_dump_test "n32-consec"
    }

    # tests of objdump's ability to disassemble using different
    # register names.
    run_dump_test "gpr-names-numeric"
    run_dump_test "gpr-names-32"
    run_dump_test "gpr-names-n32"
    run_dump_test "gpr-names-64"

    run_dump_test "fpr-names-numeric"
    run_dump_test "fpr-names-32"
    run_dump_test "fpr-names-n32"
    run_dump_test "fpr-names-64"

    run_dump_test "cp0-names-numeric"
    run_dump_test "cp0-names-r3000"
    run_dump_test "cp0-names-r4000" \
		  { { {name} {(r4000)} } { {objdump} {-M cp0-names=r4000} } }
    run_dump_test "cp0-names-r4000" \
		  { { {name} {(r4400)} } { {objdump} {-M cp0-names=r4400} } }
    run_dump_test "cp0-names-mips32"
    run_dump_test "cp0-names-mips32r2"
    run_dump_test "cp0-names-mips64"
    run_dump_test "cp0-names-mips64r2"
    run_dump_test "cp0-names-sb1"

    run_dump_test "cp0sel-names-numeric"
    run_dump_test "cp0sel-names-mips32"
    run_dump_test "cp0sel-names-mips32r2"
    run_dump_test "cp0sel-names-mips64"
    run_dump_test "cp0sel-names-mips64r2"
    run_dump_test "cp0sel-names-sb1"

    run_dump_test "hwr-names-numeric"
    run_dump_test "hwr-names-mips32r2"
    run_dump_test "hwr-names-mips64r2"

    run_dump_test "ldstla-32"
    run_dump_test "ldstla-32-mips3"
    run_dump_test "ldstla-32-shared"
    run_dump_test "ldstla-32-mips3-shared"
    run_list_test "ldstla-32-1" "-mabi=32" \
	"MIPS ld-st-la bad constants (ABI o32)"
    run_list_test "ldstla-32-mips3-1" "-mabi=32" \
	"MIPS ld-st-la bad constants (ABI o32, mips3)"
    run_list_test "ldstla-32-1" "-KPIC -mabi=32" \
	"MIPS ld-st-la bad constants (ABI o32, shared)"
    run_list_test "ldstla-32-mips3-1" "-KPIC -mabi=32" \
	"MIPS ld-st-la bad constants (ABI o32, mips3, shared)"
    run_dump_test "ldstla-eabi64"
    if $has_newabi {
	run_dump_test "ldstla-n64"
	run_dump_test "ldstla-n64-shared"
	run_dump_test "ldstla-n64-sym32"
    }

    run_dump_test "macro-warn-1"
    run_dump_test "macro-warn-2"
    run_dump_test "macro-warn-3"
    run_dump_test "macro-warn-4"
    if $has_newabi {
	run_dump_test "macro-warn-1-n32"
	run_dump_test "macro-warn-2-n32"
    }

    run_dump_test "noat-1"
    run_list_test "noat-2" ""
    run_list_test "noat-3" ""
    run_list_test "noat-4" ""
    run_list_test "noat-5" ""
    run_list_test "noat-6" ""
    run_list_test "noat-7" ""

    run_dump_test "at-1"
    run_list_test "at-2" "-32 -mips1" "MIPS at-2"

    run_dump_test "loongson-2e"
    run_dump_test "loongson-2f"
    run_dump_test "loongson-2f-2"
    run_dump_test "loongson-2f-3"

    run_dump_test "loongson-3a"
    run_dump_test "loongson-3a-2"
    run_dump_test "loongson-3a-3"

    run_dump_test_arches "octeon"	[mips_arch_list_matching octeon]
    run_dump_test_arches "octeon-saa-saad" [mips_arch_list_matching octeonp]
    run_list_test_arches "octeon-ill"	[mips_arch_list_matching octeon]
    run_dump_test_arches "octeon-pref"	[mips_arch_list_matching octeon]
    run_dump_test_arches "octeon2"	[mips_arch_list_matching octeon2]

    run_dump_test "smartmips"
    run_dump_test_arches "mips32-dsp"	[mips_arch_list_matching mips32r2 \
					    !octeon]
    run_dump_test_arches "mips32-dspr2"	[mips_arch_list_matching mips32r2 \
					    !octeon]
    run_dump_test "mips64-dsp"
    run_dump_test "mips32-mt"

    run_dump_test "mips16-dwarf2"
    if $has_newabi {
	run_dump_test "mips16-dwarf2-n32"
    }
    run_dump_test "mips16-stabs"

    run_dump_test "mips16e-jrc"
    run_dump_test "mips16e-save"
    run_dump_test "mips16e-64"
    run_list_test "mips16e-64" "-march=mips32 -32"
    run_dump_test "mips16-intermix"

    run_dump_test "vxworks1"
    run_dump_test "vxworks1-xgot"
    run_dump_test "vxworks1-el"
    run_dump_test "vxworks1-xgot-el"

    run_dump_test "noreorder"
    run_dump_test "align"
    run_dump_test "align2"
    run_dump_test "align2-el"
    run_dump_test "align3"
    run_dump_test "odd-float"
    run_dump_test "ehword"

    run_list_test_arches "mips-macro-ill-sfp" "-32 -msingle-float" \
					[mips_arch_list_matching mips2]
    run_list_test_arches "mips-macro-ill-nofp" "-32 -msoft-float" \
					[mips_arch_list_matching mips2]

    run_list_test_arches "mips-hard-float-flag" \
	"-32 -msoft-float -mhard-float" \
	[mips_arch_list_matching mips1 !singlefloat]
    run_list_test_arches "mips-double-float-flag" \
	"-32 -msingle-float -mdouble-float" \
	[mips_arch_list_matching mips1 !singlefloat]

    run_dump_test "mips16-vis-1"
    run_dump_test "call-nonpic-1"
    run_dump_test "mips32-sync"
    run_dump_test_arches "mips32r2-sync" \
					[mips_arch_list_matching mips32r2]
    run_dump_test_arches "alnv_ps-swap" [mips_arch_list_matching fpisa5]
    run_dump_test_arches "cache" [lsort -dictionary -unique [concat \
					[mips_arch_list_matching mips3] \
					[mips_arch_list_matching mips32] ] ]
    run_dump_test_arches "daddi"	[mips_arch_list_matching mips3]
    run_dump_test_arches "pref" [lsort -dictionary -unique [concat \
					[mips_arch_list_matching mips4] \
					[mips_arch_list_matching mips32] ] ]

    if $has_newabi { run_dump_test "cfi-n64-1" }

    run_dump_test "pr12915"
    run_dump_test "reginfo-1a"
    run_dump_test "reginfo-1b"

    run_dump_test "micromips"
    run_dump_test "micromips-trap"
    run_dump_test "micromips-insn32"
    run_dump_test "micromips-noinsn32"
    run_list_test "micromips" "-mips32r2 -32 -mfp64 -minsn32" \
	"microMIPS for MIPS32r2 (instructions invalid in insn32 mode)"
    run_list_test "micromips-size-0" \
	"-32 -march=mips64 -mmicromips" "microMIPS instruction size 0"
    run_dump_test "micromips-size-1"
    run_dump_test "micromips-branch-relax"
    run_dump_test "micromips-branch-relax-pic"
    run_dump_test "micromips-branch-delay"
    run_dump_test "micromips-warn-branch-delay"
    run_dump_test "micromips-warn-branch-delay-1"
    run_dump_test "micromips-b16"
    run_list_test "micromips-ill"

    run_dump_test_arches "mcu"		[mips_arch_list_matching mips32r2 \
					    !octeon]
    run_dump_test_arches "hilo-diff-eb"	[mips_arch_list_all]
    run_dump_test_arches "hilo-diff-el"	[mips_arch_list_all]
    if $has_newabi {
	run_dump_test_arches "hilo-diff-eb-n32" [mips_arch_list_matching mips3]
	run_dump_test_arches "hilo-diff-el-n32" [mips_arch_list_matching mips3]
	run_dump_test_arches "hilo-diff-eb-n64" [mips_arch_list_matching mips3]
	run_dump_test_arches "hilo-diff-el-n64" [mips_arch_list_matching mips3]
    }
    run_dump_test_arches "lui"		[mips_arch_list_matching mips1]
    run_list_test_arches "lui-1" "-32"	[mips_arch_list_matching mips1]
    run_list_test_arches "lui-2" "-32"	[mips_arch_list_matching mips1]

    run_dump_test "r5900"
    run_dump_test "r5900-full"
    run_list_test "r5900-nollsc" "-mabi=o64 -march=r5900"
    run_dump_test "r5900-vu0"

    run_list_test_arches "ext-ill"	[mips_arch_list_matching mips64r2]

    run_list_test "ase-errors-1" "-mabi=32 -march=mips1" "ASE errors (1)"
    run_list_test "ase-errors-2" "-mabi=o64 -march=mips3" "ASE errors (2)"
    run_list_test "ase-errors-3" "-mabi=32 -march=mips1" "ASE errors (3)"
    run_list_test "ase-errors-4" "-mabi=o64 -march=mips3" "ASE errors (4)"

    run_dump_test_arches "la-reloc"	[mips_arch_list_matching mips1]
    if { $has_newabi } {
	run_dump_test_arches "dla-reloc" [mips_arch_list_matching mips3]
    }

    # Start with MIPS II to avoid load delay nops.
    run_dump_test_arches "ld-reloc"	[mips_arch_list_matching mips2]
    run_dump_test_arches "ulw-reloc"	[mips_arch_list_matching mips2]
    run_dump_test_arches "ulh-reloc"	[mips_arch_list_matching mips2]

    run_dump_test "l_d-reloc"
}
