Home | History | Annotate | Download | only in mips
      1 # Copyright (C) 2012-2016 Free Software Foundation, Inc.
      2 
      3 # This program is free software; you can redistribute it and/or modify
      4 # it under the terms of the GNU General Public License as published by
      5 # the Free Software Foundation; either version 3 of the License, or
      6 # (at your option) any later version.
      7 #
      8 # This program is distributed in the hope that it will be useful,
      9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
     10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     11 # GNU General Public License for more details.
     12 #
     13 # You should have received a copy of the GNU General Public License
     14 # along with this program; if not, write to the Free Software
     15 # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
     16 
     17 #
     18 # Some generic MIPS tests
     19 #
     20 
     21 # When adding a new test to this file, try to do the following things:
     22 #
     23 # * If testing assembly and disassembly of code, don't forget to test
     24 # the actual bit encodings of the instructions (using the
     25 # --show-raw-insn flag to objdump).
     26 #
     27 # * Try to run the test for as many architectures as appropriate,
     28 # using the "run_dump_test_arches" or "run_list_test_arches" functions,
     29 # along with the output from a call to "mips_arch_list_matching."
     30 #
     31 # * Be sure to compare the test output before and after your testsuite
     32 # changes, to verify that existing and new tests were run as expected.
     33 # Look for expect ERROR messages in the testsuite .log file to make sure
     34 # the new expect code did not contain errors.
     35 
     36 # To add support for a new CPU to this file, add an appropriate entry
     37 # to the sequence of "mips_arch_create" function calls below, and test
     38 # the result.  The new CPU should automatically be used when running
     39 # various tests.  If the new CPU is the default CPU for any tool
     40 # targets, make sure the call to "mips_arch_create" reflects that fact.
     41 
     42 
     43 # The functions below create and manipulate an "architecture data
     44 # array" which contains entries for each MIPS architecture (or CPU)
     45 # known to these tests.  The array contains the following information
     46 # for each architecture, indexed by the name of the architecture
     47 # described by the entry:
     48 #
     49 # displayname: The name of the entry to be used for pretty-printing.
     50 #
     51 # gprsize: The size in bits of General Purpose Registers provided by
     52 # the architecture (must be 32 or 64).
     53 #
     54 # props: A list of text strings which are associated with the
     55 # architecture.  These include the architecture name as well as
     56 # information about what instructions the CPU supports.  When matching
     57 # based on properties, an additional property is added to the normal
     58 # property list, "gpr<gprsize>" so that tests can match CPUs which
     59 # have GPRs of a specific size.  The following properties are most
     60 # useful when matching properties for generic (i.e., not CPU-specific)
     61 # tests:
     62 #
     63 #	mips1, mips2, mips3, mips4, mips5, mips32, mips64
     64 #		The architecture includes the instructions defined
     65 #		by that MIPS ISA.
     66 #
     67 #	fpisa3, fpisa4, fpisa5
     68 #		The architecture includes the floating-point
     69 #		instructions defined by that MIPS ISA.
     70 #
     71 #	gpr_ilocks
     72 #		The architecture interlocks GPRs accesses.  (That is,
     73 #		there are no load delay slots.)
     74 #
     75 #	mips3d	The architecture includes the MIPS-3D ASE.
     76 #
     77 #	ror	The architecture includes hardware rotate instructions.
     78 #
     79 #	gpr32, gpr64
     80 #		The architecture provides 32- or 64-bit General Purpose
     81 #		Registers.
     82 #
     83 #	singlefloat
     84 #		The CPU is 64 bit, but only supports 32 bit FPU.
     85 #
     86 #	nollsc
     87 #		The CPU doesn't support ll, sc, lld and scd instructions.
     88 #
     89 #	oddspreg
     90 #		The CPU has odd-numbered single-precision registers
     91 #		available and GAS enables use of them by default.
     92 #
     93 # as_flags: The assembler flags used when assembling tests for this
     94 # architecture.
     95 #
     96 # objdump_flags: The objdump flags used when disassembling tests for
     97 # this architecture.
     98 #
     99 # Most entries in the architecture array will have values in all of
    100 # the fields above.  One entry, "default" represents the default CPU
    101 # based on the target of the assembler being built.  If always has
    102 # empty "as_flags" and "objdump_flags."
    103 
    104 # mips_arch_init
    105 #
    106 # This function initializes the architecture data array ("mips_arches")
    107 # to be empty.
    108 proc mips_arch_init {} {
    109     global mips_arches
    110 
    111     # Catch because the variable won't be set the first time through.
    112     catch {unset mips_arches}
    113 }
    114 
    115 # mips_arch_create ARCH GPRSIZE EXTENDS PROPS AS_FLAGS OBJDUMP_FLAGS \
    116 #		   (optional:) DEFAULT_FOR_TARGETS
    117 #
    118 # This function creates a new entry in the architecture data array,
    119 # for the architecture or CPU named ARCH, and fills in the entry
    120 # according to the rest of the arguments.
    121 #
    122 # The new entry's property list is initialized to contain ARCH, any
    123 # properties specified by PROPS, and the properties associated with
    124 # the entry specified by EXTENDS.  (The new architecture is considered
    125 # to extend the capabilities provided by that architecture.)
    126 #
    127 # If DEFAULT_FOR_TARGETS is specified, it is a list of targets for which
    128 # this architecture is the default architecture.  If "istarget" returns
    129 # true for any of the targets in the list, a "default" entry will be
    130 # added to the architecture array which indicates that ARCH is the default
    131 # architecture.
    132 proc mips_arch_create {arch gprsize extends props as_flags objdump_flags
    133 		       {default_for_targets {}}} {
    134     global mips_arches
    135 
    136     if { [info exists mips_arches($arch)] } {
    137              error "mips_arch_create: arch \"$arch\" already exists"
    138     }
    139     if { $gprsize != 32 && $gprsize != 64 } {
    140 	error "mips_arch_create: invalid GPR size $gprsize"
    141     }
    142 
    143     set archdata(displayname) $arch
    144     set archdata(gprsize) $gprsize
    145     set archdata(as_flags) $as_flags
    146     set archdata(objdump_flags) $objdump_flags
    147     set archdata(props) $arch
    148     eval lappend archdata(props) $props
    149     if { [string length $extends] != 0 } {
    150 	eval lappend archdata(props) [mips_arch_properties $extends 0]
    151     }
    152 
    153     set mips_arches($arch) [array get archdata]
    154 
    155     # Set as default if appropriate.
    156     foreach target $default_for_targets {
    157 	if { [istarget $target] } {
    158 	    if { [info exists mips_arches(default)] } {
    159 		error "mips_arch_create: default arch already exists"
    160 	    }
    161 
    162 	    set archdata(displayname) "default = $arch"
    163     	    set archdata(as_flags) ""
    164 	    set archdata(objdump_flags) ""
    165 
    166 	    set mips_arches(default) [array get archdata]
    167 	    break
    168 	}
    169     }
    170 }
    171 
    172 # mips_arch_destroy ARCH
    173 #
    174 # The opposite of the above.  This function removes an entry from
    175 # the architecture data array, for the architecture or CPU named ARCH.
    176 
    177 proc mips_arch_destroy {arch} {
    178     global mips_arches
    179 
    180     if { [info exists mips_arches($arch)] } {
    181 	unset mips_arches($arch)
    182     }
    183 }
    184 
    185 # mips_arch_list_all
    186 #
    187 # This function returns the list of all names of entries in the
    188 # architecture data array (including the default entry, if a default
    189 # is known).
    190 proc mips_arch_list_all {} {
    191     global mips_arches
    192     return [lsort -dictionary [array names mips_arches]]
    193 }
    194 
    195 # mips_arch_data ARCH
    196 #
    197 # This function returns the information associated with ARCH
    198 # in the architecture data array, in "array get" form.
    199 proc mips_arch_data {arch} {
    200     global mips_arches
    201 
    202     if { ! [info exists mips_arches($arch)] } {
    203 	error "mips_arch_data: unknown arch \"$arch\""
    204     }
    205     return $mips_arches($arch)
    206 }
    207 
    208 # mips_arch_displayname ARCH
    209 #
    210 # This function returns the printable name associated with ARCH in
    211 # the architecture data array.
    212 proc mips_arch_displayname {arch} {
    213     array set archdata [mips_arch_data $arch]
    214     return $archdata(displayname)
    215 }
    216 
    217 # mips_arch_properties ARCH (optional:) INCLUDE_GPRSIZE
    218 #
    219 # This function returns the property list associated with ARCH in the
    220 # architecture data array, including the "canonical" target name as the
    221 # first element.
    222 #
    223 # If INCLUDE_GPRSIZE is non-zero, an additional "gpr32" or "gpr64"
    224 # property will be returned as part of the list based on the
    225 # architecture's GPR size.
    226 proc mips_arch_properties {arch {include_gprsize 1}} {
    227     array set archdata [mips_arch_data $arch]
    228     set props $archdata(props)
    229     if { $include_gprsize } {
    230 	lappend props gpr$archdata(gprsize)
    231     }
    232     return $props
    233 }
    234 
    235 # mips_arch_as_flags ARCH
    236 #
    237 # This function returns the assembler flags associated with ARCH in
    238 # the architecture data array.
    239 proc mips_arch_as_flags {arch} {
    240     array set archdata [mips_arch_data $arch]
    241     return $archdata(as_flags)
    242 }
    243 
    244 # mips_arch_objdump_flags ARCH
    245 #
    246 # This function returns the objdump disassembly flags associated with
    247 # ARCH in the architecture data array.
    248 proc mips_arch_objdump_flags {arch} {
    249     array set archdata [mips_arch_data $arch]
    250     return $archdata(objdump_flags)
    251 }
    252 
    253 # mips_arch_matches ARCH PROPMATCHLIST
    254 #
    255 # This function returns non-zero if ARCH matches the set of properties
    256 # described by PROPMATCHLIST.  Each entry in PROPMATCHLIST can either
    257 # be the name of a property which must be matched, or "!" followed by
    258 # the name of a property which must not be matched.  ARCH matches
    259 # PROPMATCHLIST if and only if all of the conditions specified by
    260 # PROPMATCHLIST are satisfied.
    261 proc mips_arch_matches {arch propmatchlist} {
    262     foreach pm $propmatchlist {
    263 	if { [string match {!*} $pm] } {
    264 	    # fail if present.
    265 	    set inverted 1
    266 	    set p [string range $pm 1 end]
    267 	} {
    268 	    # fail if not present.
    269 	    set inverted 0
    270 	    set p $pm
    271 	}
    272 
    273 	set loc [lsearch -exact [mips_arch_properties $arch] $p]
    274 
    275 	# required-absent and found, or required-present and not found: fail.
    276 	if { ($inverted && $loc != -1) || (! $inverted && $loc == -1) } {
    277 	    return 0
    278 	}
    279     }
    280     return 1
    281 }
    282 
    283 # mips_arch_list_matching ARGS
    284 #
    285 # This function returns a list of all architectures which match
    286 # the conditions described by its arguments.  Its arguments are
    287 # taken as a list and used as the PROPMATCHLIST in a call to
    288 # "mips_arch_matches" for each known architecture.
    289 proc mips_arch_list_matching {args} {
    290     set l ""
    291     foreach arch [mips_arch_list_all] {
    292 	# For now, don't match default arch until we know what its
    293 	# properties actually are.
    294 	if { [string compare $arch default] == 0
    295 	     && [string length [mips_arch_properties default]] == 0} {
    296 	    continue
    297 	}
    298 	if { [mips_arch_matches $arch $args] } {
    299 	    lappend l $arch
    300 	}
    301     }
    302     return $l
    303 }
    304 
    305 
    306 # The functions below facilitate running various types of tests.
    307 
    308 # run_dump_test_arch NAME OPTS ARCH
    309 #
    310 # Invoke "run_dump_test" for test NAME with additional assembler options OPTS.
    311 # Add the assembler and disassembler flags that are associated with
    312 # architecture ARCH.
    313 #
    314 # You can override the expected output for particular architectures.
    315 # The possible test names are, in order of preference:
    316 #
    317 # 1. CARCH (at) NAME.d
    318 # 2. NAME.d
    319 #
    320 # where CARCH is the "canonical" name of architecture ARCH as recorded
    321 # in its associated property list.
    322 proc run_dump_test_arch { name opts arch } {
    323     global subdir srcdir
    324 
    325     set proparch [lindex [mips_arch_properties $arch 0] 0]
    326     set prefixes [list ${proparch}@ ]
    327     if { [ string match "octeon*" $proparch ] && $proparch != "octeon" } {
    328 	lappend prefixes octeon@
    329     }
    330     if { [ string match "mips*r6" $proparch ]} {
    331 	lappend prefixes mipsr6@
    332     }
    333     foreach prefix ${prefixes} {
    334 	set archname ${prefix}${name}
    335 	if { [file exists "$srcdir/$subdir/${archname}.d"] } {
    336 	    set name $archname
    337 	    break
    338 	}
    339     }
    340 
    341     if [catch {run_dump_test $name \
    342 		   "{name    {([concat $opts [mips_arch_displayname $arch]])}}
    343 		    {objdump {[mips_arch_objdump_flags $arch]}}
    344 		    {as      {[concat $opts [mips_arch_as_flags $arch]]}}"} rv] {
    345         perror "$rv"
    346         untested "$subdir/$name ($arch)"
    347     }
    348 }
    349 
    350 # run_dump_test_arches NAME [OPTS] ARCH_LIST
    351 #
    352 # Invoke "run_dump_test_arch" for test NAME, for each architecture
    353 # listed in ARCH_LIST.  OPTS, if specified, is a list of additional
    354 # assembler options that should be used for all architectures.
    355 proc run_dump_test_arches { name args } {
    356     set opts ""
    357     if { [llength $args] > 1 } {
    358 	set opts [lindex $args 0]
    359 	set args [lrange $args 1 end]
    360     }
    361     set arch_list [lindex $args 0]
    362     foreach arch $arch_list {
    363 	run_dump_test_arch $name $opts $arch
    364     }
    365 }
    366 
    367 # run_list_test_arch NAME OPTS ARCH
    368 #
    369 # Invoke "run_list_test" for test NAME with additional assembler options OPTS.
    370 # Add the assembler flags that are associated with architecture ARCH.
    371 proc run_list_test_arch { name opts arch } {
    372     global subdir srcdir
    373 
    374     set testname "MIPS $name ([concat $opts [mips_arch_displayname $arch]])"
    375     set proparch [lindex [mips_arch_properties $arch 0] 0]
    376     set prefixes [list ${proparch}@ ]
    377     if { [ string match "octeon*" $proparch ] && $proparch != "octeon" } {
    378 	lappend prefixes octeon@
    379     }
    380     if { [ string match "mips*r6" $proparch ]} {
    381 	lappend prefixes mipsr6@
    382     }
    383     foreach prefix ${prefixes} {
    384 	set archname ${prefix}${name}
    385 	if { [file exists "$srcdir/$subdir/${archname}.l"] } {
    386 	    set name $archname
    387 	    break
    388 	}
    389     }
    390 
    391     if [catch {run_list_test \
    392 		   $name \
    393 		   [concat $opts [mips_arch_as_flags $arch]] \
    394 		   $testname} rv] {
    395         perror "$rv"
    396         untested "$testname"
    397     }
    398 }
    399 
    400 # run_list_test_arches NAME [OPTS] ARCH_LIST
    401 #
    402 # Invoke "run_list_test_arch" for test NAME, for each architecture listed
    403 # in ARCH_LIST.  OPTS, if specified, is a list of additional assembler
    404 # options that should be used for all architectures.
    405 proc run_list_test_arches { name args } {
    406     set opts ""
    407     if { [llength $args] > 1 } {
    408 	set opts [lindex $args 0]
    409 	set args [lrange $args 1 end]
    410     }
    411     set arch_list [lindex $args 0]
    412     foreach arch $arch_list {
    413 	run_list_test_arch "$name" "$opts" "$arch"
    414     }
    415 }
    416 
    417 
    418 # Create the architecture data array by providing data for all
    419 # known architectures.
    420 #
    421 # Note that several targets pick default CPU based on ABI.  We
    422 # can't easily handle that; do NOT list those targets as defaulting
    423 # to any architecture.
    424 mips_arch_init
    425 mips_arch_create mips1 	32	{}	{} \
    426 			{ -march=mips1 -mtune=mips1 } { -mmips:3000 }
    427 mips_arch_create mips2 	32	mips1	{ gpr_ilocks } \
    428 		        { -march=mips2 -mtune=mips2 } { -mmips:6000 }
    429 mips_arch_create mips3 	64	mips2	{ fpisa3 } \
    430 			{ -march=mips3 -mtune=mips3 } { -mmips:4000 }
    431 mips_arch_create mips4 	64	mips3	{ fpisa4 } \
    432 			{ -march=mips4 -mtune=mips4 } { -mmips:8000 }
    433 mips_arch_create mips5 	64	mips4	{ fpisa5 } \
    434 			{ -march=mips5 -mtune=mips5 } { -mmips:mips5 }
    435 mips_arch_create mips32	32	mips2	{} \
    436 			{ -march=mips32 -mtune=mips32 } { -mmips:isa32 } \
    437 			{ mipsisa32-*-* mipsisa32el-*-* }
    438 mips_arch_create mips32r2 32	mips32	{ fpisa3 fpisa4 fpisa5 ror } \
    439 			{ -march=mips32r2 -mtune=mips32r2 } \
    440 			{ -mmips:isa32r2 } \
    441 			{ mipsisa32r2-*-* mipsisa32r2el-*-* }
    442 mips_arch_create mips32r3 32	mips32r2 { fpisa3 fpisa4 fpisa5 ror } \
    443 			{ -march=mips32r3 -mtune=mips32r3 } \
    444 			{ -mmips:isa32r3 } \
    445 			{ mipsisa32r3-*-* mipsisa32r3el-*-* }
    446 mips_arch_create mips32r5 32	mips32r3 { fpisa3 fpisa4 fpisa5 ror } \
    447 			{ -march=mips32r5 -mtune=mips32r5 } \
    448 			{ -mmips:isa32r5 } \
    449 			{ mipsisa32r5-*-* mipsisa32r5el-*-* }
    450 mips_arch_create mips32r6 32	mips32r5 { fpisa3 fpisa4 fpisa5 ror } \
    451 			{ -march=mips32r6 -mtune=mips32r6 --defsym r6=} \
    452 			{ -mmips:isa32r6 } \
    453 			{ mipsisa32r6-*-* mipsisa32r6el-*-* }
    454 mips_arch_create mips64	64	mips5	{ mips32 } \
    455 			{ -march=mips64 -mtune=mips64 } { -mmips:isa64 } \
    456 			{ mipsisa64-*-* mipsisa64el-*-* }
    457 mips_arch_create mips64r2 64	mips64	{ mips32r2 ror } \
    458 			{ -march=mips64r2 -mtune=mips64r2 } \
    459 			{ -mmips:isa64r2 } \
    460 			{ mipsisa64r2-*-* mipsisa64r2el-*-* }
    461 mips_arch_create mips64r3 64	mips64r2 { mips32r3 ror } \
    462 			{ -march=mips64r3 -mtune=mips64r3 } \
    463 			{ -mmips:isa64r3 } \
    464 			{ mipsisa64r3-*-* mipsisa64r3el-*-* }
    465 mips_arch_create mips64r5 64	mips64r3 { mips32r5 ror } \
    466 			{ -march=mips64r5 -mtune=mips64r5 } \
    467 			{ -mmips:isa64r5 } \
    468 			{ mipsisa64r5-*-* mipsisa64r5el-*-* }
    469 mips_arch_create mips64r6 64	mips64r5 { mips32r6 ror } \
    470 			{ -march=mips64r6 -mtune=mips64r6 --defsym r6=} \
    471 			{ -mmips:isa64r6 } \
    472 			{ mipsisa64r6-*-* mipsisa64r6el-*-* }
    473 mips_arch_create mips16	32	{}	{} \
    474 			{ -march=mips1 -mips16 } { -mmips:16 }
    475 mips_arch_create micromips 64	mips64r2 {} \
    476 			{ -march=mips64r2 -mmicromips } {}
    477 mips_arch_create r3000 	32	mips1	{} \
    478 			{ -march=r3000 -mtune=r3000 } { -mmips:3000 }
    479 mips_arch_create r3900 	32	mips1	{ gpr_ilocks } \
    480 			{ -march=r3900 -mtune=r3900 } { -mmips:3900 } \
    481 			{ mipstx39-*-* mipstx39el-*-* }
    482 mips_arch_create r4000 	64	mips3	{} \
    483 			{ -march=r4000 -mtune=r4000 } { -mmips:4000 }
    484 mips_arch_create vr5400	64	mips4	{ ror } \
    485 			{ -march=vr5400 -mtune=vr5400 } { -mmips:5400 }
    486 mips_arch_create sb1 	64	mips64	{ mips3d oddspreg } \
    487 			{ -march=sb1 -mtune=sb1 } { -mmips:sb1 } \
    488 			{ mipsisa64sb1-*-* mipsisa64sb1el-*-* }
    489 mips_arch_create octeon 64	mips64r2 { oddspreg } \
    490 			{ -march=octeon -mtune=octeon } { -mmips:octeon } \
    491 			{ mips64octeon*-*-* }
    492 mips_arch_create octeonp 64	octeon { oddspreg } \
    493 			{ -march=octeon+ -mtune=octeon+ } { -mmips:octeon+ } \
    494 			{ }
    495 mips_arch_create octeon2 64	octeonp { oddspreg } \
    496 			{ -march=octeon2 -mtune=octeon2 } { -mmips:octeon2 } \
    497 			{ }
    498 mips_arch_create octeon3 64	octeon2 { oddspreg } \
    499 			{ -march=octeon3 -mtune=octeon3 } { -mmips:octeon3 } \
    500 			{ }
    501 mips_arch_create xlr 	64	mips64	{ oddspreg } \
    502 			{ -march=xlr -mtune=xlr } { -mmips:xlr }
    503 mips_arch_create r5900 	64	mips3	{ gpr_ilocks singlefloat nollsc } \
    504 			{ -march=r5900 -mtune=r5900 } { -mmips:5900 } \
    505 			{ mipsr5900el-*-* mips64r5900el-*-* }
    506 
    507 #
    508 # And now begin the actual tests!  VxWorks uses RELA rather than REL
    509 # relocations, so most of the generic dump tests will not work there.
    510 #
    511 if { [istarget mips*-*-vxworks*] } {
    512     run_dump_test "vxworks1"
    513     run_dump_test "vxworks1-xgot"
    514     run_dump_test "vxworks1-el"
    515     run_dump_test "vxworks1-xgot-el"
    516 
    517     run_list_test "option-pic-vxworks-1" "-mvxworks-pic" \
    518 	"MIPS invalid PIC option in VxWorks PIC"
    519     run_list_test "option-pic-vxworks-2" "-mvxworks-pic" \
    520 	"MIPS invalid switch to SVR4 PIC from VxWorks PIC"
    521 } elseif { [istarget mips*-*-*] } {
    522     set addr32 [expr [istarget mipstx39*-*-*] || [istarget mips-*-linux*] || [istarget mipsel-*-linux*] \
    523 		     || [istarget mipsisa32-*-linux*] || [istarget mipsisa32el-*-linux*]]
    524     set has_newabi [expr [istarget *-*-irix6*] || [istarget mips*-*-linux*] \
    525                          || [istarget mips*-sde-elf*] || [istarget mips*-mti-elf*] \
    526                          || [istarget mips*-img-elf*]]
    527 
    528     if { [istarget "mips*-*-*linux*"]
    529 	 || [istarget "mips*-sde-elf*"]
    530 	 || [istarget "mips*-mti-elf*"]
    531 	 || [istarget "mips*-img-elf*"]
    532 	 || [istarget "mips*-*-*bsd*"] } then {
    533 	set tmips "t"
    534     } else {
    535 	set tmips ""
    536     }
    537     if [istarget mips*el-*-*] {
    538 	set el "el"
    539     } {
    540 	set el ""
    541     }
    542 
    543     run_dump_test_arches "dot-1"	[mips_arch_list_matching mips1]
    544     run_dump_test_arches "abs"		[mips_arch_list_matching mips1]
    545     run_dump_test_arches "add"		[mips_arch_list_matching mips1]
    546     run_dump_test_arches "and"		[mips_arch_list_matching mips1]
    547     run_dump_test_arches "mips1-fp"	[mips_arch_list_matching mips1]
    548     run_list_test_arches "mips1-fp" "-32 -msoft-float" \
    549 					[mips_arch_list_matching mips1]
    550     run_dump_test "break20"
    551     run_dump_test "trap20"
    552 
    553     run_dump_test_arches "beq"		[mips_arch_list_matching mips1]
    554     run_dump_test_arches "bge"		[mips_arch_list_matching mips1]
    555     run_dump_test_arches "bgeu"		[mips_arch_list_matching mips1]
    556     run_dump_test_arches "blt"		[mips_arch_list_matching mips1]
    557     run_dump_test_arches "bltu"		[mips_arch_list_matching mips1]
    558     run_dump_test_arches "branch-likely" [mips_arch_list_matching mips2 !mips32r6]
    559     run_dump_test_arches "branch-misc-1" [mips_arch_list_matching mips1]
    560     run_dump_test_arches "branch-misc-2" [mips_arch_list_matching mips1]
    561     run_dump_test_arches "branch-misc-2pic" [mips_arch_list_matching mips1]
    562     run_dump_test_arches "branch-misc-2-64" [mips_arch_list_matching mips3]
    563     run_dump_test_arches "branch-misc-2pic-64" [mips_arch_list_matching mips3]
    564     run_dump_test "branch-misc-3"
    565     run_dump_test "branch-swap"
    566 
    567     # Sweep a range of branch offsets so that it hits a position where
    568     # it is at the beginning of a frag and then swapped with a 16-bit
    569     # instruction from the preceding frag.  The offset will be somewhere
    570     # close below 4096 as this is the default obstack size limit that
    571     # we use and some space will have been already consumed.  The exact
    572     # amount depends on the host's programming model.
    573     for { set count 960 } { $count <= 1024 } { incr count } {
    574 	run_list_test "branch-swap-2" "--defsym count=$count" \
    575 	    "MIPS branch swapping ($count)"
    576     }
    577 
    578     run_dump_test_arches "branch-swap-3" [mips_arch_list_all]
    579     run_dump_test_arches "branch-swap-4" [mips_arch_list_all]
    580 
    581     run_dump_test "branch-section-1"
    582     run_dump_test "branch-section-2"
    583     run_dump_test "branch-section-3"
    584     run_dump_test "branch-section-4"
    585     run_dump_test "branch-extern-1"
    586     run_dump_test "branch-extern-2"
    587     run_dump_test "branch-extern-3"
    588     run_dump_test "branch-extern-4"
    589     run_dump_test "branch-weak-1"
    590     run_dump_test "branch-weak-2"
    591     run_dump_test "branch-weak-3"
    592     run_dump_test "branch-weak-4"
    593     run_dump_test "branch-weak-5"
    594     run_dump_test "branch-weak-6"
    595     run_dump_test "branch-weak-7"
    596     run_dump_test "branch-local-1"
    597     if $has_newabi {
    598 	run_dump_test "branch-local-n32-1"
    599 	run_dump_test "branch-local-n64-1"
    600     }
    601 
    602     run_dump_test "compact-eh-eb-1"
    603     run_dump_test "compact-eh-eb-2"
    604     run_dump_test "compact-eh-eb-3"
    605     run_dump_test "compact-eh-eb-4"
    606     run_dump_test "compact-eh-eb-5"
    607     run_dump_test "compact-eh-eb-6"
    608     run_dump_test "compact-eh-eb-7"
    609     run_dump_test "compact-eh-el-1"
    610     run_dump_test "compact-eh-el-2"
    611     run_dump_test "compact-eh-el-3"
    612     run_dump_test "compact-eh-el-4"
    613     run_dump_test "compact-eh-el-5"
    614     run_dump_test "compact-eh-el-6"
    615     run_dump_test "compact-eh-el-7"
    616     run_list_test "compact-eh-err1"
    617     run_list_test "compact-eh-err2"
    618 
    619     run_dump_test "div"
    620 
    621     if { !$addr32 } {
    622 	run_dump_test_arches "dli"	[mips_arch_list_matching mips3]
    623     }
    624     run_dump_test_arches "jal"		[mips_arch_list_matching mips1]
    625     run_dump_test_arches "jal-mask-11"	[mips_arch_list_matching mips1]
    626     run_dump_test_arches "jal-mask-12"	[mips_arch_list_matching mips1]
    627     run_dump_test_arches "jal-mask-21"	[mips_arch_list_matching micromips]
    628     run_dump_test_arches "jal-mask-22"	[mips_arch_list_matching micromips]
    629     run_dump_test "eret-1"
    630     run_dump_test "eret-2"
    631     run_dump_test "eret-3"
    632     run_dump_test_arches "fix-rm7000-1" \
    633 					[mips_arch_list_matching mips3 !singlefloat \
    634 						!mips64r6]
    635     run_dump_test_arches "fix-rm7000-2" \
    636 					[mips_arch_list_matching mips3 !singlefloat \
    637 						!mips64r6]
    638     run_dump_test_arches "24k-branch-delay-1" \
    639 					[mips_arch_list_matching mips1]
    640     run_dump_test_arches "24k-triple-stores-1" \
    641 				[mips_arch_list_matching fpisa5 !octeon]
    642     run_dump_test_arches "24k-triple-stores-2" \
    643 					[mips_arch_list_matching mips2]
    644     run_dump_test_arches "24k-triple-stores-2-llsc" \
    645 					[mips_arch_list_matching mips2 !nollsc]
    646     run_dump_test_arches "24k-triple-stores-3" \
    647 					[mips_arch_list_matching mips2]
    648     run_dump_test_arches "24k-triple-stores-4" \
    649 					[mips_arch_list_matching mips2 !singlefloat]
    650     run_dump_test_arches "24k-triple-stores-5" \
    651 					[mips_arch_list_matching mips1]
    652     run_dump_test_arches "24k-triple-stores-6" \
    653 					[mips_arch_list_matching mips2 !singlefloat]
    654     run_dump_test_arches "24k-triple-stores-7" \
    655 					[mips_arch_list_matching mips2 !singlefloat]
    656     run_dump_test_arches "24k-triple-stores-8" \
    657 					[mips_arch_list_matching mips1]
    658     run_dump_test_arches "24k-triple-stores-9" \
    659 					[mips_arch_list_matching mips1]
    660     run_dump_test_arches "24k-triple-stores-10" \
    661 					[mips_arch_list_matching mips1]
    662     run_dump_test_arches "24k-triple-stores-11" \
    663 	    				[mips_arch_list_matching mips1]
    664 
    665     run_dump_test_arches "jal-svr4pic"	[mips_arch_list_matching mips1]
    666     run_dump_test_arches "jal-svr4pic-noreorder" \
    667 					[mips_arch_list_matching mips1]
    668     run_dump_test_arches "jal-svr4pic-local" \
    669 					[mips_arch_list_matching mips1]
    670     if $has_newabi {
    671 	run_dump_test_arches "jal-svr4pic-local-n32" \
    672 					[mips_arch_list_matching mips3]
    673 	run_dump_test_arches "jal-svr4pic-local-n64" \
    674 					[mips_arch_list_matching mips3]
    675     }
    676     run_dump_test "jal-xgot"
    677     run_list_test_arches "jal-range" "-32" [mips_arch_list_matching mips1]
    678     if $has_newabi { run_dump_test "jal-newabi" }
    679     run_dump_test "la"
    680     run_dump_test "la-svr4pic"
    681     run_dump_test "la-xgot"
    682     run_dump_test "lca-svr4pic"
    683     run_dump_test "lca-xgot"
    684     # XXX FIXME: Has mips2 and later insns with mips1 disassemblies.
    685     # (Should split and then use appropriate arch lists.)
    686     run_dump_test_arches "lb"	[mips_arch_list_matching mips1 !mips2]
    687     run_dump_test_arches "lb-svr4pic" \
    688 				[mips_arch_list_matching mips1 !gpr_ilocks]
    689     run_dump_test_arches "lb-svr4pic-ilocks" [mips_arch_list_matching gpr_ilocks]
    690     # Both versions specify the cpu, so we can run both regardless of
    691     # the interlocking in the configured default cpu.
    692     run_dump_test "lb-xgot"
    693     run_dump_test "lb-xgot-ilocks"
    694     run_dump_test_arches "ld"		[mips_arch_list_matching mips1]
    695     run_dump_test_arches "ld-forward" 	[mips_arch_list_matching mips1]
    696     run_dump_test_arches "sd"		[mips_arch_list_matching mips1]
    697     run_dump_test_arches "sd-forward" 	[mips_arch_list_matching mips1]
    698     run_dump_test_arches "l_d" 		[mips_arch_list_matching mips1 !singlefloat]
    699     run_dump_test_arches "l_d-single"	[mips_arch_list_matching mips1 singlefloat]
    700     run_dump_test_arches "l_d-forward"	[mips_arch_list_matching mips1 !singlefloat]
    701     run_dump_test_arches "s_d"		[mips_arch_list_matching mips1 !singlefloat]
    702     run_dump_test_arches "s_d-single"	[mips_arch_list_matching mips1 singlefloat]
    703     run_dump_test_arches "s_d-forward" 	[mips_arch_list_matching mips1 !singlefloat]
    704     run_dump_test_arches "ldc1"		[mips_arch_list_matching mips2 !singlefloat]
    705     run_dump_test_arches "ldc1-forward" [mips_arch_list_matching mips2 !singlefloat]
    706     run_dump_test_arches "sdc1"		[mips_arch_list_matching mips2 !singlefloat]
    707     run_dump_test_arches "sdc1-forward" [mips_arch_list_matching mips2 !singlefloat]
    708     if $has_newabi {
    709 	run_dump_test_arches "ld-n32" 	[mips_arch_list_matching mips3]
    710 	run_dump_test_arches "ld-forward-n32" \
    711 					[mips_arch_list_matching mips3]
    712 	run_dump_test_arches "sd-n32" 	[mips_arch_list_matching mips3]
    713 	run_dump_test_arches "sd-forward-n32" \
    714 					[mips_arch_list_matching mips3]
    715 	run_dump_test_arches "l_d-n32" 	[mips_arch_list_matching mips3 !singlefloat]
    716 	run_dump_test_arches "l_d-forward-n32" \
    717 					[mips_arch_list_matching mips3 !singlefloat]
    718 	run_dump_test_arches "s_d-n32" 	[mips_arch_list_matching mips3 !singlefloat]
    719 	run_dump_test_arches "s_d-forward-n32" \
    720 					[mips_arch_list_matching mips3 !singlefloat]
    721 	run_dump_test_arches "ldc1-n32" [mips_arch_list_matching mips3 !singlefloat]
    722 	run_dump_test_arches "ldc1-forward-n32" \
    723 					[mips_arch_list_matching mips3 !singlefloat]
    724 	run_dump_test_arches "sdc1-n32" [mips_arch_list_matching mips3 !singlefloat]
    725 	run_dump_test_arches "sdc1-forward-n32" \
    726 					[mips_arch_list_matching mips3 !singlefloat]
    727 	run_dump_test_arches "ld-n64"	[mips_arch_list_matching mips3]
    728 	run_dump_test_arches "ld-forward-n64" \
    729 					[mips_arch_list_matching mips3]
    730 	run_dump_test_arches "sd-n64"	[mips_arch_list_matching mips3]
    731 	run_dump_test_arches "sd-forward-n64" \
    732 					[mips_arch_list_matching mips3]
    733 	run_dump_test_arches "l_d-n64"	[mips_arch_list_matching mips3 !singlefloat]
    734 	run_dump_test_arches "l_d-forward-n64" \
    735 					[mips_arch_list_matching mips3 !singlefloat]
    736 	run_dump_test_arches "s_d-n64"	[mips_arch_list_matching mips3 !singlefloat]
    737 	run_dump_test_arches "s_d-forward-n64" \
    738 					[mips_arch_list_matching mips3 !singlefloat]
    739 	run_dump_test_arches "ldc1-n64"	[mips_arch_list_matching mips3 !singlefloat]
    740 	run_dump_test_arches "ldc1-forward-n64" \
    741 					[mips_arch_list_matching mips3 !singlefloat]
    742 	run_dump_test_arches "sdc1-n64"	[mips_arch_list_matching mips3 !singlefloat]
    743 	run_dump_test_arches "sdc1-forward-n64" \
    744 					[mips_arch_list_matching mips3 !singlefloat]
    745     }
    746     run_dump_test_arches "ld-zero"	[mips_arch_list_matching mips1]
    747     run_dump_test_arches "ld-zero-2"	[mips_arch_list_matching mips2 !nollsc]
    748     run_dump_test_arches "ld-zero-3"	[mips_arch_list_matching mips3 !nollsc]
    749     run_dump_test_arches "ld-zero-u"	[mips_arch_list_matching micromips]
    750     run_dump_test_arches "ld-zero-q"	[mips_arch_list_matching r5900]
    751     run_dump_test "ld-svr4pic"
    752     run_dump_test "ld-xgot"
    753     run_dump_test_arches "li"		[mips_arch_list_matching mips1]
    754     run_dump_test "lifloat"
    755     run_dump_test "lif-svr4pic"
    756     run_dump_test "lif-xgot"
    757     run_dump_test_arches "mips4"	[mips_arch_list_matching mips4]
    758     run_dump_test_arches "mips4-fp" "-32" \
    759 					[mips_arch_list_matching fpisa4]
    760     run_dump_test_arches "mips4-fp" "-mabi=o64" \
    761 					[mips_arch_list_matching fpisa4 gpr64]
    762     run_list_test_arches "mips4-fp" "-32 -msoft-float" \
    763 					[mips_arch_list_matching fpisa4]
    764     run_dump_test_arches "mips4-branch-likely" \
    765 					[mips_arch_list_matching mips4 !mips32r6]
    766     run_list_test_arches "mips4-branch-likely" "-32 -msoft-float" \
    767 					[mips_arch_list_matching mips4 !mips32r6]
    768     run_dump_test_arches "mips5-fp" "-32" \
    769 					[mips_arch_list_matching fpisa5]
    770     run_dump_test_arches "mips5-fp" "-mabi=o64" \
    771 					[mips_arch_list_matching fpisa5 gpr64]
    772     run_dump_test "mul"
    773 
    774     run_dump_test_arches "rol"		[mips_arch_list_matching mips1 !ror]
    775     run_dump_test_arches "rol-hw" 	[mips_arch_list_matching ror]
    776 
    777     run_dump_test_arches "rol64"	[mips_arch_list_matching gpr64 !ror]
    778     run_dump_test_arches "rol64-hw"	[mips_arch_list_matching gpr64 ror]
    779 
    780     run_dump_test "sb"
    781     run_dump_test_arches "sdata-gp"	[mips_arch_list_matching mips1]
    782     run_dump_test "trunc"
    783     run_dump_test "ulh"
    784     run_dump_test_arches "ulh2-eb"	[mips_arch_list_matching mips1 !mips32r6]
    785     run_dump_test_arches "ulh2-el"	[mips_arch_list_matching mips1 !mips32r6]
    786     run_dump_test "ulh-svr4pic"
    787     run_dump_test "ulh-xgot"
    788     run_dump_test "ulw"
    789     run_dump_test "uld"
    790     run_dump_test "ush"
    791     run_dump_test "usw"
    792     run_dump_test "usd"
    793     run_dump_test_arches "ulw2-eb" [mips_arch_list_matching mips1 !gpr_ilocks \
    794 					!mips32r6]
    795     run_dump_test_arches "ulw2-eb-ilocks" [mips_arch_list_matching gpr_ilocks \
    796 					!mips32r6]
    797     run_dump_test_arches "ulw2-el" [mips_arch_list_matching mips1 !gpr_ilocks \
    798 					!mips32r6]
    799     run_dump_test_arches "ulw2-el-ilocks" [mips_arch_list_matching gpr_ilocks \
    800 					!mips32r6]
    801 
    802     run_dump_test_arches "uld2-eb" [mips_arch_list_matching mips3 !mips32r6]
    803     run_dump_test_arches "uld2-el" [mips_arch_list_matching mips3 !mips32r6]
    804 
    805     run_dump_test "mips16"
    806     run_dump_test "mips16-64"
    807     run_dump_test "mips16-macro"
    808     # Check MIPS16e extensions
    809     run_dump_test_arches "mips16e" [mips_arch_list_matching mips32 !micromips \
    810 					!mips32r6]
    811     # Check jalx handling
    812     run_dump_test "mips16-jalx"
    813     run_dump_test "mips-jalx"
    814     run_dump_test "mips-jalx-2"
    815     run_dump_test "jalx-imm"
    816     run_dump_test "jalx-addend"
    817     run_dump_test "jalx-local"
    818     if $has_newabi {
    819 	run_dump_test "jalx-imm-n32"
    820 	run_dump_test "jalx-addend-n32"
    821 	run_dump_test "jalx-local-n32"
    822 	run_dump_test "jalx-imm-n64"
    823 	run_dump_test "jalx-addend-n64"
    824 	run_dump_test "jalx-local-n64"
    825     }
    826     # Check MIPS16 HI16/LO16 relocations
    827     run_dump_test "mips16-hilo"
    828     if $has_newabi {
    829 	run_dump_test "mips16-hilo-n32"
    830     }
    831     run_dump_test "mips16-hilo-match"
    832     run_dump_test "delay"
    833     run_dump_test "nodelay"
    834     run_dump_test "mips4010"
    835     run_dump_test "mips4650"
    836     run_dump_test "mips4100"
    837     run_dump_test "vr4111"
    838     run_dump_test "vr4120"
    839     run_dump_test "vr4120-2"
    840     run_dump_test "vr4130"
    841     run_dump_test "vr5400"
    842     run_list_test "vr5400-ill" "-march=vr5400"
    843     run_dump_test "vr5500"
    844     run_dump_test "rm7000"
    845     run_dump_test "perfcount"
    846     run_dump_test "lineno"
    847     run_dump_test "sync"
    848 
    849     run_dump_test_arches "virt"		[mips_arch_list_matching mips32r2]
    850     run_dump_test_arches "virt64"	[mips_arch_list_matching mips64r2]
    851 
    852     run_dump_test_arches "mips32"	[mips_arch_list_matching mips32]
    853     run_dump_test_arches "mips32-imm"	[mips_arch_list_matching mips32]
    854 
    855     run_dump_test_arches "mips32-sf32"	[mips_arch_list_matching mips32]
    856     run_list_test_arches "mips32-sf32" "-32 -msoft-float" \
    857 					[mips_arch_list_matching mips32]
    858     run_dump_test_arches "mips32-cp2"	[mips_arch_list_matching mips32 \
    859 					    !octeon]
    860 
    861     run_dump_test_arches "mips32r2"	[mips_arch_list_matching mips32r2]
    862     run_dump_test_arches "mips32r2-cp2"	[mips_arch_list_matching mips32r2 \
    863 					    !octeon]
    864     run_dump_test_arches "mips32r2-fp32" \
    865 					[mips_arch_list_matching mips32r2]
    866     run_list_test_arches "mips32r2-fp32" "-32 -msoft-float" \
    867 					[mips_arch_list_matching mips32r2]
    868     run_list_test_arches "mips32r2-ill" "-32" \
    869 			[mips_arch_list_matching mips32r2 gpr32]
    870     run_list_test_arches "mips32r2-ill-fp64" "-mabi=o64" \
    871 			[mips_arch_list_matching mips32r2 gpr64]
    872     run_list_test_arches "mips32r2-ill-nofp" "-32 -msoft-float" \
    873 			[mips_arch_list_matching mips32r2]
    874 
    875     run_dump_test_arches "mips64"	[mips_arch_list_matching mips64]
    876     run_dump_test_arches "mips64-cp2"	[mips_arch_list_matching mips64 \
    877 					    !octeon]
    878 
    879     run_dump_test_arches "mips64r2"	[mips_arch_list_matching mips64r2]
    880     run_list_test_arches "mips64r2-ill"	[mips_arch_list_matching mips64r2]
    881 
    882     run_dump_test "set-arch"
    883 
    884     if { !$addr32 } {
    885 	run_dump_test "mips64-mips3d"
    886 	run_dump_test_arches "mips64-mips3d-incl" [mips_arch_list_matching mips3d]
    887 
    888 	run_dump_test "mips64-mdmx"
    889 	run_dump_test "sb1-ext-mdmx"
    890 	run_dump_test "sb1-ext-ps"
    891 	run_dump_test "xlr-ext"
    892     }
    893 
    894     run_dump_test_arches "relax"	[mips_arch_list_matching mips2 !mips32r6]
    895     run_dump_test_arches "relax-at"	[mips_arch_list_matching mips2 !mips32r6]
    896     run_dump_test "relax-swap1-mips1"
    897     run_dump_test "relax-swap1-mips2"
    898     run_dump_test "relax-swap2"
    899     run_dump_test_arches "relax-swap3"	[mips_arch_list_all]
    900     run_list_test_arches "relax-bc1any" "-mips3d -mabi=o64 -relax-branch" \
    901 					[mips_arch_list_matching mips64 \
    902 					    !micromips !mips32r6]
    903     run_list_test_arches "relax-bposge" "-mdsp -relax-branch" \
    904 					[mips_arch_list_matching mips64r2 \
    905 					    !micromips !mips32r6]
    906 
    907     run_dump_test_arches "eva"		[mips_arch_list_matching mips32r2 !octeon]
    908 
    909     run_list_test "illegal" "-32"
    910     run_list_test "baddata1" "-32"
    911     run_list_test "jalr" ""
    912 
    913     run_dump_test "mips-gp32-fp32"
    914     run_dump_test "mips-gp32-fp64"
    915     run_dump_test "mips-gp64-fp32"
    916     run_dump_test "mips-gp64-fp64"
    917 
    918     # Make sure that -mcpu=FOO and -mFOO are equivalent.  Assemble a file
    919     # containing 4650-specific instructions with -m4650 and -mcpu=4650,
    920     # and verify that they're the same.  Specifically, we're checking
    921     # that the EF_MIPS_MACH field is set, and that the 4650 'mul'
    922     # instruction does get used.  In previous versions of GAS,
    923     # only -mcpu=4650 would set the EF_MIPS_MACH field; -m4650 wouldn't.
    924     run_dump_test "elf_e_flags1"
    925     run_dump_test "elf_e_flags2"
    926     run_dump_test "elf_e_flags3"
    927     run_dump_test "elf_e_flags4"
    928 
    929     # Check EF_MIPS_ARCH markings for each supported architecture.
    930     run_dump_test "elf_arch_mips1"
    931     run_dump_test "elf_arch_mips2"
    932     run_dump_test "elf_arch_mips3"
    933     run_dump_test "elf_arch_mips4"
    934     run_dump_test "elf_arch_mips5"
    935     run_dump_test "elf_arch_mips32"
    936     run_dump_test "elf_arch_mips32r2"
    937     run_dump_test "elf_arch_mips32r3"
    938     run_dump_test "elf_arch_mips32r5"
    939     run_dump_test "elf_arch_mips32r6"
    940     run_dump_test "elf_arch_mips64"
    941     run_dump_test "elf_arch_mips64r2"
    942     run_dump_test "elf_arch_mips64r3"
    943     run_dump_test "elf_arch_mips64r5"
    944     run_dump_test "elf_arch_mips64r6"
    945 
    946     # Verify that ASE markings are handled properly.
    947     run_dump_test "elf_ase_mips16"
    948     run_dump_test "elf_ase_mips16-2"
    949 
    950     run_dump_test "elf_ase_micromips"
    951     run_dump_test "elf_ase_micromips-2"
    952 
    953     run_dump_test "mips-gp32-fp32-pic"
    954     run_dump_test "mips-gp32-fp64-pic"
    955     run_dump_test "mips-gp64-fp32-pic"
    956     run_dump_test "mips-gp64-fp64-pic"
    957 
    958     run_dump_test "mips-abi32"
    959     run_dump_test "mips-abi32-pic"
    960     run_dump_test "mips-abi32-pic2"
    961 
    962     run_dump_test "elf${el}-rel"
    963     run_dump_test_arches "elf${el}-rel2" [mips_arch_list_matching gpr64 !singlefloat]
    964     run_dump_test "e32${el}-rel2"
    965     run_dump_test "elf${el}-rel3"
    966     run_dump_test_arches "elf-rel4" [mips_arch_list_matching gpr64]
    967     run_dump_test "e32-rel4"
    968     run_dump_test "elf-rel5"
    969     run_dump_test "elf-rel6"
    970     if $has_newabi {
    971 	run_dump_test "elf-rel6-n32"
    972 	run_dump_test "elf-rel6-n64"
    973     }
    974     run_dump_test "elf-rel7"
    975     run_dump_test "elf-rel8"
    976     run_dump_test "elf-rel8-mips16"
    977     run_dump_test "elf-rel9"
    978     run_dump_test "elf-rel9-mips16"
    979     if $has_newabi {
    980 	run_dump_test "elf-rel10"
    981 	run_dump_test "elf-rel11"
    982     }
    983     run_dump_test "elf-rel12"
    984     run_dump_test "elf-rel13"
    985     run_dump_test "elf-rel13-mips16"
    986     run_dump_test "elf-rel14"
    987 
    988     if $has_newabi {
    989 	run_dump_test "elf-rel15"
    990 	run_dump_test "elf-rel16"
    991 
    992 	run_dump_test "elf-rel-got-n32"
    993 	run_dump_test "elf-rel-xgot-n32"
    994 	run_dump_test "elf-rel-got-n64"
    995 	run_dump_test "elf-rel-xgot-n64"
    996     }
    997     run_dump_test "elf-rel17"
    998     if $has_newabi {
    999 	run_dump_test "elf-rel18"
   1000     }
   1001     run_dump_test "elf-rel19"
   1002     run_dump_test "elf-rel20"
   1003     if $has_newabi {
   1004 	run_dump_test "elf-rel21"
   1005 	run_dump_test "elf-rel22"
   1006 	run_dump_test "elf-rel23"
   1007 	run_dump_test "elf-rel23a"
   1008 	run_dump_test "elf-rel23b"
   1009 	run_dump_test "elf-rel24"
   1010     }
   1011 
   1012     run_dump_test "elf-rel25"
   1013     run_dump_test "elf-rel25a"
   1014     run_dump_test "elf-rel26"
   1015 
   1016     run_dump_test_arches "elf-rel27" [mips_arch_list_all]
   1017 
   1018     if $has_newabi {
   1019 	run_dump_test "elf-rel28-n32"
   1020 	run_dump_test "elf-rel28-n64"
   1021 	run_dump_test_arches "elf-rel29" [mips_arch_list_matching mips3]
   1022     }
   1023     run_list_test_arches "elf-rel30" "-32" [mips_arch_list_all]
   1024 
   1025     run_dump_test "${tmips}mips${el}16-e"
   1026     run_dump_test "${tmips}mips${el}16-f"
   1027 
   1028     run_dump_test "elf-consthilo"
   1029     run_dump_test "expr1"
   1030 
   1031     run_list_test "tls-ill" "-32"
   1032     run_dump_test "tls-o32"
   1033     run_dump_test "tls-relw"
   1034     run_dump_test "jalr2"
   1035     run_dump_test_arches "jalr3"	[mips_arch_list_matching mips1 \
   1036 					    !micromips]
   1037     if $has_newabi {
   1038 	run_dump_test_arches "jalr3-n32" \
   1039 					[mips_arch_list_matching mips3 \
   1040 					    !micromips]
   1041 	run_dump_test_arches "jalr3-n64" \
   1042 					[mips_arch_list_matching mips3 \
   1043 					    !micromips]
   1044     }
   1045 
   1046     run_dump_test_arches "aent"	[mips_arch_list_matching mips1]
   1047 
   1048     run_dump_test_arches "branch-misc-4"	[mips_arch_list_matching mips1]
   1049     run_dump_test_arches "branch-misc-4-64"	[mips_arch_list_matching mips3]
   1050 
   1051     run_dump_test_arches "loc-swap"	[mips_arch_list_all]
   1052     run_dump_test_arches "loc-swap-dis"	[mips_arch_list_all]
   1053     run_dump_test_arches "loc-swap-2"	[mips_arch_list_all]
   1054     run_dump_test_arches "loc-swap-3"	[mips_arch_list_all]
   1055 
   1056     run_dump_test "nan-legacy-1"
   1057     run_dump_test "nan-legacy-2"
   1058     run_dump_test "nan-legacy-3"
   1059     run_dump_test "nan-legacy-4"
   1060     run_dump_test "nan-legacy-5"
   1061 
   1062     run_dump_test "nan-2008-1"
   1063     run_dump_test "nan-2008-2"
   1064     run_dump_test "nan-2008-3"
   1065     run_dump_test "nan-2008-4"
   1066 
   1067     run_list_test "nan-error-1"
   1068     run_list_test "nan-error-2" "-mnan=foo"
   1069 
   1070     if $has_newabi {
   1071 	run_dump_test "n32-consec"
   1072     }
   1073 
   1074     # tests of objdump's ability to disassemble the move mnemonic
   1075     run_dump_test_arches "move"	[mips_arch_list_matching mips64 !micromips]
   1076     run_dump_test_arches "micromips32-move" [mips_arch_list_matching micromips]
   1077 
   1078     # tests of objdump's ability to disassemble using different
   1079     # register names.
   1080     run_dump_test "gpr-names-numeric"
   1081     run_dump_test "gpr-names-32"
   1082     run_dump_test "gpr-names-n32"
   1083     run_dump_test "gpr-names-64"
   1084 
   1085     run_dump_test "fpr-names-numeric"
   1086     run_dump_test "fpr-names-32"
   1087     run_dump_test "fpr-names-n32"
   1088     run_dump_test "fpr-names-64"
   1089 
   1090     run_dump_test "cp0-names-numeric"
   1091     run_dump_test "cp0-names-r3000"
   1092     run_dump_test "cp0-names-r4000" \
   1093 		  { { {name} {(r4000)} } { {objdump} {-M cp0-names=r4000} } }
   1094     run_dump_test "cp0-names-r4000" \
   1095 		  { { {name} {(r4400)} } { {objdump} {-M cp0-names=r4400} } }
   1096     run_dump_test "cp0-names-mips32"
   1097     run_dump_test "cp0-names-mips32r2"
   1098     run_dump_test "cp0-names-mips64"
   1099     run_dump_test "cp0-names-mips64r2"
   1100     run_dump_test "cp0-names-sb1"
   1101 
   1102     run_dump_test "cp0sel-names-numeric"
   1103     run_dump_test "cp0sel-names-mips32"
   1104     run_dump_test "cp0sel-names-mips32r2"
   1105     run_dump_test "cp0sel-names-mips64"
   1106     run_dump_test "cp0sel-names-mips64r2"
   1107     run_dump_test "cp0sel-names-sb1"
   1108 
   1109     run_dump_test "cp1-names-numeric"
   1110     run_dump_test "cp1-names-r3000"
   1111     run_dump_test "cp1-names-r4000" \
   1112 		  { { {name} {(r4000)} } { {objdump} {-M cp0-names=r4000} } }
   1113     run_dump_test "cp1-names-r4000" \
   1114 		  { { {name} {(r4400)} } { {objdump} {-M cp0-names=r4400} } }
   1115     run_dump_test "cp1-names-mips32"
   1116     run_dump_test "cp1-names-mips32r2"
   1117     run_dump_test "cp1-names-mips64"
   1118     run_dump_test "cp1-names-mips64r2"
   1119     run_dump_test "cp1-names-sb1"
   1120 
   1121     run_dump_test "hwr-names-numeric"
   1122     run_dump_test "hwr-names-mips32r2"
   1123     run_dump_test "hwr-names-mips64r2"
   1124 
   1125     run_dump_test "ldstla-32"
   1126     run_dump_test "ldstla-32-mips3"
   1127     run_dump_test "ldstla-32-shared"
   1128     run_dump_test "ldstla-32-mips3-shared"
   1129     run_list_test "ldstla-32-1" "-mabi=32" \
   1130 	"MIPS ld-st-la bad constants (ABI o32)"
   1131     run_list_test "ldstla-32-mips3-1" "-mabi=32" \
   1132 	"MIPS ld-st-la bad constants (ABI o32, mips3)"
   1133     run_list_test "ldstla-32-1" "-KPIC -mabi=32" \
   1134 	"MIPS ld-st-la bad constants (ABI o32, shared)"
   1135     run_list_test "ldstla-32-mips3-1" "-KPIC -mabi=32" \
   1136 	"MIPS ld-st-la bad constants (ABI o32, mips3, shared)"
   1137     run_dump_test "ldstla-eabi64"
   1138     if $has_newabi {
   1139 	run_dump_test "ldstla-n64"
   1140 	run_dump_test "ldstla-n64-shared"
   1141 	run_dump_test "ldstla-n64-sym32"
   1142     }
   1143 
   1144     run_dump_test "macro-warn-1"
   1145     run_dump_test "macro-warn-2"
   1146     run_dump_test "macro-warn-3"
   1147     run_dump_test "macro-warn-4"
   1148     if $has_newabi {
   1149 	run_dump_test "macro-warn-1-n32"
   1150 	run_dump_test "macro-warn-2-n32"
   1151     }
   1152 
   1153     run_dump_test "noat-1"
   1154     run_list_test "noat-2" ""
   1155     run_list_test "noat-3" ""
   1156     run_list_test "noat-4" ""
   1157     run_list_test "noat-5" ""
   1158     run_list_test "noat-6" ""
   1159     run_list_test "noat-7" ""
   1160 
   1161     run_dump_test "at-1"
   1162     run_list_test "at-2" "-32 -mips1" "MIPS at-2"
   1163 
   1164     run_dump_test "loongson-2e"
   1165     run_dump_test "loongson-2f"
   1166     run_dump_test "loongson-2f-2"
   1167     run_dump_test "loongson-2f-3"
   1168 
   1169     run_dump_test "loongson-3a"
   1170     run_dump_test "loongson-3a-2"
   1171     run_dump_test "loongson-3a-3"
   1172 
   1173     run_dump_test_arches "octeon"	[mips_arch_list_matching octeon]
   1174     run_dump_test_arches "octeon-saa-saad" [mips_arch_list_matching octeonp]
   1175     run_list_test_arches "octeon-ill"	[mips_arch_list_matching octeon]
   1176     run_dump_test_arches "octeon-pref"	[mips_arch_list_matching octeon]
   1177     run_dump_test_arches "octeon2"	[mips_arch_list_matching octeon2]
   1178     run_dump_test_arches "octeon3"	[mips_arch_list_matching octeon3]
   1179 
   1180     run_dump_test "smartmips"
   1181     run_dump_test_arches "mips32-dsp"	[mips_arch_list_matching mips32r2 \
   1182 					    !octeon]
   1183     run_dump_test_arches "mips32-dspr2"	[mips_arch_list_matching mips32r2 \
   1184 					    !octeon]
   1185     run_dump_test_arches "mips32-dspr3"	[mips_arch_list_matching mips32r6]
   1186     run_dump_test "mips64-dsp"
   1187     run_dump_test "mips32-mt"
   1188 
   1189     run_dump_test "mips16-dwarf2"
   1190     if $has_newabi {
   1191 	run_dump_test "mips16-dwarf2-n32"
   1192     }
   1193     run_dump_test "mips16-stabs"
   1194 
   1195     run_dump_test "mips16e-jrc"
   1196     run_dump_test "mips16e-save"
   1197     run_list_test "mips16e-save-err" "-march=mips32 -32"
   1198     run_dump_test "mips16e-64"
   1199     run_list_test "mips16e-64" "-march=mips32 -32"
   1200     run_dump_test "mips16-intermix"
   1201 
   1202     run_dump_test "vxworks1"
   1203     run_dump_test "vxworks1-xgot"
   1204     run_dump_test "vxworks1-el"
   1205     run_dump_test "vxworks1-xgot-el"
   1206 
   1207     run_dump_test "noreorder"
   1208     run_dump_test "align"
   1209     run_dump_test "align2"
   1210     run_dump_test "align2-el"
   1211     run_dump_test "align3"
   1212     run_dump_test "odd-float"
   1213     run_dump_test "insn-opts"
   1214 
   1215     run_list_test_arches "mips-macro-ill-sfp" "-32 -msingle-float" \
   1216 					[mips_arch_list_matching mips2]
   1217     run_list_test_arches "mips-macro-ill-nofp" "-32 -msoft-float" \
   1218 					[mips_arch_list_matching mips2]
   1219 
   1220     run_list_test_arches "mips-hard-float-flag" \
   1221 	"-32 -msoft-float -mhard-float" \
   1222 	[mips_arch_list_matching mips1 !singlefloat]
   1223     run_list_test_arches "mips-double-float-flag" \
   1224 	"-32 -msingle-float -mdouble-float" \
   1225 	[mips_arch_list_matching mips1 !singlefloat]
   1226 
   1227     run_dump_test "mips16-vis-1"
   1228     run_dump_test "call-nonpic-1"
   1229     run_dump_test "mips32-sync"
   1230     run_dump_test_arches "mips32r2-sync" \
   1231 					[mips_arch_list_matching mips32r2]
   1232     run_dump_test_arches "alnv_ps-swap" [mips_arch_list_matching fpisa5 \
   1233 						!mips32r6]
   1234     run_dump_test_arches "cache" [lsort -dictionary -unique [concat \
   1235 					[mips_arch_list_matching mips3] \
   1236 					[mips_arch_list_matching mips32] ] ]
   1237     run_dump_test_arches "daddi"	[mips_arch_list_matching mips3 \
   1238 						!mips32r6]
   1239     run_dump_test_arches "pref" [lsort -dictionary -unique [concat \
   1240 					[mips_arch_list_matching mips4] \
   1241 					[mips_arch_list_matching mips32] ] ]
   1242 
   1243     if $has_newabi { run_dump_test "cfi-n64-1" }
   1244 
   1245     run_dump_test "pr12915"
   1246     run_dump_test "reginfo-1a"
   1247     run_dump_test "reginfo-1b"
   1248 
   1249     run_dump_test "micromips"
   1250     run_dump_test "micromips-trap"
   1251     run_dump_test "micromips-insn32"
   1252     run_dump_test "micromips-noinsn32"
   1253     run_list_test "micromips" "-mips32r2 -32 -mfp64 -minsn32" \
   1254 	"microMIPS for MIPS32r2 (instructions invalid in insn32 mode)"
   1255     run_list_test "micromips-size-0" \
   1256 	"-32 -march=mips64 -mmicromips" "microMIPS instruction size 0"
   1257     run_dump_test "micromips-size-1"
   1258     run_dump_test "micromips-branch-relax"
   1259     run_dump_test "micromips-branch-relax-pic"
   1260     run_dump_test "micromips-branch-delay"
   1261     run_dump_test "micromips-warn-branch-delay"
   1262     run_dump_test "micromips-warn-branch-delay-1"
   1263     run_dump_test "micromips-b16"
   1264     run_list_test "micromips-ill"
   1265 
   1266     run_dump_test_arches "mcu"		[mips_arch_list_matching mips32r2 \
   1267 					    !octeon]
   1268     run_dump_test_arches "hilo-diff-eb"	[mips_arch_list_all]
   1269     run_dump_test_arches "hilo-diff-el"	[mips_arch_list_all]
   1270     if $has_newabi {
   1271 	run_dump_test_arches "hilo-diff-eb-n32" [mips_arch_list_matching mips3]
   1272 	run_dump_test_arches "hilo-diff-el-n32" [mips_arch_list_matching mips3]
   1273 	run_dump_test_arches "hilo-diff-eb-n64" [mips_arch_list_matching mips3]
   1274 	run_dump_test_arches "hilo-diff-el-n64" [mips_arch_list_matching mips3]
   1275     }
   1276     run_dump_test_arches "lui"		[mips_arch_list_matching mips1]
   1277     run_list_test_arches "lui-1" "-32"	[mips_arch_list_matching mips1]
   1278     run_list_test_arches "lui-2" "-32"	[mips_arch_list_matching mips1]
   1279 
   1280     run_dump_test "r5900"
   1281     run_dump_test "r5900-full"
   1282     run_list_test "r5900-nollsc" "-mabi=o64 -march=r5900"
   1283     run_dump_test "r5900-vu0"
   1284     run_dump_test "r5900-full-vu0"
   1285     run_dump_test "r5900-all-vu0"
   1286     run_list_test "r5900-error-vu0" "-march=r5900"
   1287 
   1288     run_list_test_arches "ext-ill"	[mips_arch_list_matching mips64r2]
   1289 
   1290     run_list_test "ase-errors-1" "-mabi=32 -march=mips1" "ASE errors (1)"
   1291     run_list_test "ase-errors-2" "-mabi=o64 -march=mips3" "ASE errors (2)"
   1292     run_list_test "ase-errors-3" "-mabi=32 -march=mips1" "ASE errors (3)"
   1293     run_list_test "ase-errors-4" "-mabi=o64 -march=mips3" "ASE errors (4)"
   1294 
   1295     run_dump_test_arches "la-reloc"	[mips_arch_list_matching mips1]
   1296     run_list_test "dla-warn" "-mabi=32 -march=mips3" \
   1297 			     "DLA with 32-bit addresses"
   1298     if { $has_newabi } {
   1299 	run_dump_test_arches "dla-reloc" [mips_arch_list_matching mips3]
   1300 	run_list_test "la-warn" "-mabi=64 -march=mips3" \
   1301 				"LA with 64-bit addresses"
   1302     }
   1303 
   1304     # Start with MIPS II to avoid load delay nops.
   1305     run_dump_test_arches "ld-reloc"	[mips_arch_list_matching mips2]
   1306     run_dump_test_arches "ulw-reloc"	[mips_arch_list_matching mips2 !mips32r6]
   1307     run_dump_test_arches "ulh-reloc"	[mips_arch_list_matching mips2 !mips32r6]
   1308 
   1309     run_dump_test "l_d-reloc"
   1310     run_list_test "bltzal"
   1311 
   1312     run_dump_test_arches "msa"		[mips_arch_list_matching mips32r2]
   1313     run_dump_test_arches "msa64"	[mips_arch_list_matching mips64r2]
   1314     run_dump_test_arches "msa-relax"	[mips_arch_list_matching mips32r2 !mips32r6]
   1315     run_dump_test_arches "msa-branch"	[mips_arch_list_matching mips32r2]
   1316 
   1317     run_dump_test_arches "xpa"		[mips_arch_list_matching mips32r2 !micromips]
   1318     run_dump_test_arches "r5" "-32"	[mips_arch_list_matching mips32r5 !micromips]
   1319 
   1320     run_dump_test "pcrel-1"
   1321     run_dump_test "pcrel-2"
   1322     run_list_test "pcrel-3" "" "Invalid cross-section PC-relative references"
   1323     run_dump_test "pcrel-4-32"
   1324     if $has_newabi {
   1325 	run_dump_test "pcrel-4-n32"
   1326 	run_dump_test "pcrel-4-64"
   1327     }
   1328 
   1329     run_dump_test "pcrel-reloc-1"
   1330     run_dump_test "pcrel-reloc-1-r6"
   1331     run_dump_test "pcrel-reloc-2"
   1332     run_dump_test "pcrel-reloc-2-r6"
   1333     run_dump_test "pcrel-reloc-3"
   1334     run_dump_test "pcrel-reloc-3-r6"
   1335     run_dump_test "pcrel-reloc-4"
   1336     run_dump_test "pcrel-reloc-4-r6"
   1337     run_dump_test "pcrel-reloc-5"
   1338     run_dump_test "pcrel-reloc-5-r6"
   1339     run_dump_test "pcrel-reloc-6"
   1340     run_list_test "pcrel-reloc-6" "-32 --defsym offset=4" \
   1341 	"MIPS local PC-relative relocations 6b"
   1342 
   1343     run_dump_test "mips16-pcrel-relax-0"
   1344     run_dump_test "mips16-pcrel-relax-1"
   1345     run_dump_test "mips16-pcrel-relax-2"
   1346     run_dump_test "mips16-pcrel-relax-3"
   1347     run_dump_test "mips16-pcrel-reloc-0"
   1348     run_dump_test "mips16-pcrel-reloc-1"
   1349     run_dump_test "mips16-pcrel-reloc-2"
   1350     run_dump_test "mips16-pcrel-reloc-3"
   1351     run_dump_test "mips16-pcrel-reloc-4"
   1352     run_dump_test "mips16-pcrel-reloc-5"
   1353     run_dump_test "mips16-pcrel-reloc-6"
   1354     run_dump_test "mips16-pcrel-reloc-7"
   1355     run_dump_test "mips16-pcrel-addend-0"
   1356     run_dump_test "mips16-pcrel-addend-1"
   1357     run_dump_test "mips16-pcrel-addend-2"
   1358     run_dump_test "mips16-pcrel-addend-3"
   1359     run_dump_test "mips16-pcrel-absolute"
   1360     run_dump_test "mips16-branch-reloc-0"
   1361     run_dump_test "mips16-branch-reloc-1"
   1362     run_dump_test "mips16-branch-reloc-2"
   1363     run_dump_test "mips16-branch-reloc-3"
   1364     run_dump_test "mips16-branch-addend-0"
   1365     run_dump_test "mips16-branch-addend-1"
   1366     run_dump_test "mips16-branch-addend-2"
   1367     run_dump_test "mips16-branch-addend-3"
   1368     run_dump_test "mips16-branch-absolute"
   1369     run_dump_test "mips16-absolute-reloc-0"
   1370     run_dump_test "mips16-absolute-reloc-1"
   1371     run_dump_test "mips16-absolute-reloc-2"
   1372     run_dump_test "mips16-absolute-reloc-3"
   1373 
   1374     run_dump_test_arches "attr-gnu-4-0" "-32" \
   1375 				    [mips_arch_list_matching mips1]
   1376     run_dump_test_arches "attr-gnu-4-0" "-64" \
   1377 				    [mips_arch_list_matching mips3]
   1378     run_dump_test_arches "attr-gnu-4-0" "-mfp32 -32" \
   1379 				    [mips_arch_list_matching mips1 !mips32r6]
   1380     run_dump_test_arches "attr-gnu-4-0" "-mfpxx -32" \
   1381 				    [mips_arch_list_matching mips2 !r5900]
   1382     run_dump_test_arches "attr-gnu-4-0" "-mfp64 -32" \
   1383 				    [mips_arch_list_matching mips32r2]
   1384     run_dump_test_arches "attr-gnu-4-0" "-mfp64 -mno-odd-spreg -32" \
   1385 				    [mips_arch_list_matching mips32r2]
   1386     run_dump_test_arches "attr-gnu-4-0" "-mfp64 -64" \
   1387 				    [mips_arch_list_matching mips3]
   1388     run_dump_test_arches "attr-gnu-4-0" "-msingle-float -32" \
   1389 				    [mips_arch_list_matching mips1]
   1390     run_dump_test_arches "attr-gnu-4-0" "-msingle-float -64" \
   1391 				    [mips_arch_list_matching mips3]
   1392     run_dump_test_arches "attr-gnu-4-0" "-msoft-float -32" \
   1393 				    [mips_arch_list_matching mips1]
   1394     run_dump_test_arches "attr-gnu-4-0" "-msoft-float -64" \
   1395 				    [mips_arch_list_matching mips3]
   1396     run_dump_test_arches "attr-none-double" "-32" \
   1397 				    [mips_arch_list_matching mips1 !mips32r6]
   1398     run_dump_test_arches "r6-attr-none-double" "-32" \
   1399 				    [mips_arch_list_matching mips32r6]
   1400     run_dump_test_arches "attr-none-double" "-64" \
   1401 				    [mips_arch_list_matching mips3]
   1402     run_dump_test_arches "attr-none-o32-fpxx" \
   1403 				    [mips_arch_list_matching mips2 !r5900]
   1404     run_dump_test_arches "attr-none-o32-fp64" \
   1405 				    [mips_arch_list_matching mips32r2]
   1406     run_dump_test_arches "attr-none-o32-fp64-nooddspreg" \
   1407 				    [mips_arch_list_matching mips32r2]
   1408     run_dump_test_arches "attr-none-single-float" "-32" \
   1409 				    [mips_arch_list_matching mips1]
   1410     run_dump_test_arches "attr-none-single-float" "-64" \
   1411 				    [mips_arch_list_matching mips3]
   1412     run_dump_test_arches "attr-none-soft-float" "-32 -msoft-float" \
   1413 				    [mips_arch_list_matching mips1]
   1414     run_dump_test_arches "attr-none-soft-float" "-64 -msoft-float" \
   1415 				    [mips_arch_list_matching mips3]
   1416 
   1417     run_list_test_arches "attr-gnu-4-1-mfp64" \
   1418 				    "-32 -mfp64 -mno-odd-spreg" \
   1419 				    [mips_arch_list_matching mips32r2]
   1420     run_list_test_arches "attr-gnu-4-1-mfp64" "-32 -mfp64" \
   1421 				    [mips_arch_list_matching mips32r2]
   1422     run_list_test_arches "attr-gnu-4-1-mfp32" "-64 -mfp32" \
   1423 				    [mips_arch_list_matching mips3 !mips64r6]
   1424     run_list_test_arches "attr-gnu-4-1-msingle-float" "-32 -msingle-float" \
   1425 				    [mips_arch_list_matching mips1]
   1426     run_list_test_arches "attr-gnu-4-1-msoft-float" "-32 -msoft-float" \
   1427 				    [mips_arch_list_matching mips1]
   1428     run_dump_test_arches "attr-gnu-4-1" "-32 -mfpxx" \
   1429 				    [mips_arch_list_matching mips2 !r5900]
   1430     run_dump_test_arches "attr-gnu-4-1" "-32 -mfp32" \
   1431 				    [mips_arch_list_matching mips1 !mips32r6]
   1432     run_dump_test_arches "attr-gnu-4-1" "-64 -mfp64" \
   1433 				    [mips_arch_list_matching mips3]
   1434 
   1435     run_list_test_arches "attr-gnu-4-2-mdouble-float" "-32 -mfp32" \
   1436 				    [mips_arch_list_matching mips1 !mips32r6]
   1437     run_list_test_arches "attr-gnu-4-2-mdouble-float" "-32 -mfpxx" \
   1438 				    [mips_arch_list_matching mips2 !r5900]
   1439     run_list_test_arches "attr-gnu-4-2-mdouble-float" "-32 -mfp64" \
   1440 				    [mips_arch_list_matching mips32r2]
   1441     run_list_test_arches "attr-gnu-4-2-mdouble-float" \
   1442 				    "-32 -mfp64 -mno-odd-spreg" \
   1443 				    [mips_arch_list_matching mips32r2]
   1444     run_list_test_arches "attr-gnu-4-2-mdouble-float" "-64 -mfp64" \
   1445 				    [mips_arch_list_matching mips3]
   1446     run_list_test_arches "attr-gnu-4-2-msoft-float" "-32 -msoft-float" \
   1447 				    [mips_arch_list_matching mips1]
   1448     run_dump_test_arches "attr-gnu-4-2" "-32" \
   1449 				    [mips_arch_list_matching mips1]
   1450     run_dump_test_arches "attr-gnu-4-2" "-64" \
   1451 				    [mips_arch_list_matching mips3]
   1452 
   1453     run_list_test_arches "attr-gnu-4-3-mhard-float" "-32 -mfp32" \
   1454 				    [mips_arch_list_matching mips1 !mips32r6]
   1455     run_list_test_arches "attr-gnu-4-3-mhard-float" "-32 -mfpxx" \
   1456 				    [mips_arch_list_matching mips2 !r5900]
   1457     run_list_test_arches "attr-gnu-4-3-mhard-float" "-32 -mfp64" \
   1458 				    [mips_arch_list_matching mips32r2]
   1459     run_list_test_arches "attr-gnu-4-3-mhard-float" \
   1460 				    "-32 -mfp64 -mno-odd-spreg" \
   1461 				    [mips_arch_list_matching mips32r2]
   1462     run_list_test_arches "attr-gnu-4-3-mhard-float" "-64 -mfp64" \
   1463 				    [mips_arch_list_matching mips3]
   1464     run_list_test_arches "attr-gnu-4-3-mhard-float" "-32 -msingle-float" \
   1465 				    [mips_arch_list_matching mips1]
   1466     run_dump_test_arches "attr-gnu-4-3" "-32" \
   1467 				    [mips_arch_list_matching mips1]
   1468     run_dump_test_arches "attr-gnu-4-3" "-64" \
   1469 				    [mips_arch_list_matching mips3]
   1470 
   1471     run_list_test_arches "attr-gnu-4-4" "-32 -mfp32" \
   1472 				    [mips_arch_list_matching mips1 !mips32r6]
   1473     run_list_test_arches "attr-gnu-4-4" "-32 -mfpxx" \
   1474 				    [mips_arch_list_matching mips2 !r5900]
   1475     run_list_test_arches "attr-gnu-4-4" "-32 -mfp64" \
   1476 				    [mips_arch_list_matching mips32r2]
   1477     run_list_test_arches "attr-gnu-4-4" "-32 -mfp64 -mno-odd-spreg" \
   1478 				    [mips_arch_list_matching mips32r2]
   1479     run_list_test_arches "attr-gnu-4-4" "-64 -mfp64" \
   1480 				    [mips_arch_list_matching mips3]
   1481     run_list_test_arches "attr-gnu-4-4" "-32 -msingle-float" \
   1482 				    [mips_arch_list_matching mips1]
   1483     run_list_test_arches "attr-gnu-4-4" "-32 -msoft-float" \
   1484 				    [mips_arch_list_matching mips1]
   1485 
   1486     run_list_test_arches "attr-gnu-4-5" "-32 -mfp32" \
   1487 				    [mips_arch_list_matching mips1 !mips32r6]
   1488     run_list_test_arches "attr-gnu-4-5" "-32 -mfp64" \
   1489 				    [mips_arch_list_matching mips32r2]
   1490     run_list_test_arches "attr-gnu-4-5" "-32 -mfp64 -mno-odd-spreg" \
   1491 				    [mips_arch_list_matching mips32r2]
   1492     run_list_test_arches "attr-gnu-4-5-64" "-64 -mfp64" \
   1493 				    [mips_arch_list_matching mips3]
   1494     run_list_test_arches "attr-gnu-4-5-msingle-float" "-32 -msingle-float" \
   1495 				    [mips_arch_list_matching mips1]
   1496     run_list_test_arches "attr-gnu-4-5-msoft-float" "-32 -msoft-float" \
   1497 				    [mips_arch_list_matching mips1]
   1498     run_dump_test_arches "attr-gnu-4-5" \
   1499 				    [mips_arch_list_matching mips2 !r5900]
   1500 
   1501     run_list_test_arches "attr-gnu-4-6" "-32 -mfp32" \
   1502 				    [mips_arch_list_matching mips1 !mips32r6]
   1503     run_list_test_arches "attr-gnu-4-6-noodd" "-32 -mfp64 -mno-odd-spreg" \
   1504 				    [mips_arch_list_matching mips32r2]
   1505     run_list_test_arches "attr-gnu-4-6-64" "-64 -mfp64" \
   1506 				    [mips_arch_list_matching mips3]
   1507     run_list_test_arches "attr-gnu-4-6-msingle-float" "-32 -msingle-float" \
   1508 				    [mips_arch_list_matching mips1]
   1509     run_list_test_arches "attr-gnu-4-6-msoft-float" "-32 -msoft-float" \
   1510 				    [mips_arch_list_matching mips1]
   1511     run_list_test_arches "attr-gnu-4-6" "-32 -mfpxx" \
   1512 				    [mips_arch_list_matching mips2 !r5900]
   1513     run_dump_test_arches "attr-gnu-4-6" "-32 -mfp64" \
   1514 				    [mips_arch_list_matching mips32r2]
   1515 
   1516     run_list_test_arches "attr-gnu-4-7" "-32 -mfp32" \
   1517 				    [mips_arch_list_matching mips1 !mips32r6]
   1518     run_list_test_arches "attr-gnu-4-7-odd" "-32 -mfp64" \
   1519 				    [mips_arch_list_matching mips32r2]
   1520     run_list_test_arches "attr-gnu-4-7-64" "-64 -mfp64" \
   1521 				    [mips_arch_list_matching mips3]
   1522     run_list_test_arches "attr-gnu-4-7-msingle-float" "-32 -msingle-float" \
   1523 				    [mips_arch_list_matching mips1]
   1524     run_list_test_arches "attr-gnu-4-7-msoft-float" "-32 -msoft-float" \
   1525 				    [mips_arch_list_matching mips1]
   1526     run_list_test_arches "attr-gnu-4-7" "-32 -mfpxx" \
   1527 				    [mips_arch_list_matching mips2 !r5900]
   1528     run_dump_test_arches "attr-gnu-4-7" "-32 -mfp64 -mno-odd-spreg" \
   1529 				    [mips_arch_list_matching mips32r2]
   1530 
   1531     run_dump_test "attr-gnu-abi-fp-1"
   1532     run_dump_test "attr-gnu-abi-msa-1"
   1533 
   1534     run_dump_test "module-override"
   1535     run_dump_test "module-defer-warn1"
   1536     run_list_test "module-defer-warn2" "-32"
   1537 
   1538     foreach testopt [list -mfp32 -mfpxx -mfp64 "-mfp64-noodd" \
   1539 			  -msingle-float -msoft-float] {
   1540       foreach cmdopt [list -mfp32 -mfpxx -mfp64 "-mfp64 -mno-odd-spreg" \
   1541 			   -msingle-float -msoft-float] {
   1542         run_dump_test "module${testopt}" \
   1543 			    [list [list as $cmdopt] [list name ($cmdopt)]]
   1544       }
   1545     }
   1546 
   1547     run_dump_test "module-set-mfpxx"
   1548     run_list_test_arches "fpxx-oddfpreg" "-32 -mfpxx" \
   1549 			[mips_arch_list_matching mips2 !singlefloat]
   1550     run_list_test_arches "fpxx-oddfpreg" "-32 -mfpxx -mno-odd-spreg" \
   1551 			[mips_arch_list_matching mips2 !singlefloat]
   1552     run_dump_test_arches "fpxx-oddfpreg" \
   1553 			[mips_arch_list_matching oddspreg]
   1554     run_dump_test_arches "odd-spreg" "-mfp32" [mips_arch_list_matching oddspreg]
   1555     run_dump_test_arches "odd-spreg" "-mfpxx" [mips_arch_list_matching oddspreg]
   1556     run_dump_test_arches "odd-spreg" "-mfp64" [mips_arch_list_matching mips32r2]
   1557     run_dump_test_arches "no-odd-spreg" "-mfp32" [mips_arch_list_matching mips1 \
   1558 							!mips32r6]
   1559     run_dump_test_arches "no-odd-spreg" "-mfpxx" [mips_arch_list_matching mips2 !r5900]
   1560     run_dump_test_arches "no-odd-spreg" "-mfp64" [mips_arch_list_matching mips32r2]
   1561     run_dump_test "module-check"
   1562     run_list_test "module-check-warn" "-32"
   1563 
   1564     run_dump_test "li-d"
   1565 
   1566     run_dump_test "option-pic-1"
   1567     run_list_test "option-pic-2" "" \
   1568 	"MIPS invalid PIC option"
   1569     run_list_test "option-pic-vxworks-1" "-mvxworks-pic" \
   1570 	"MIPS invalid PIC option in VxWorks PIC"
   1571     run_list_test "option-pic-vxworks-2" "-mvxworks-pic" \
   1572 	"MIPS invalid switch to SVR4 PIC from VxWorks PIC"
   1573 
   1574     run_dump_test_arches "isa-override-1" "" [mips_arch_list_matching mips1]
   1575     run_list_test_arches "isa-override-2" "-32" [mips_arch_list_matching mips1]
   1576 
   1577     run_dump_test_arches "r6"		[mips_arch_list_matching mips32r6]
   1578     if $has_newabi {
   1579 	run_dump_test_arches "r6-n32"	[mips_arch_list_matching mips64r6]
   1580 	run_dump_test_arches "r6-n64"	[mips_arch_list_matching mips64r6]
   1581 	run_dump_test_arches "r6-64-n32"	[mips_arch_list_matching mips64r6]
   1582 	run_dump_test_arches "r6-64-n64"	[mips_arch_list_matching mips64r6]
   1583 	run_list_test_arches "ldpc-unalign" "-64" [mips_arch_list_matching mips64r6]
   1584     }
   1585     run_list_test_arches "r6-removed"	"-32" [mips_arch_list_matching mips32r6]
   1586     run_list_test_arches "r6-64-removed"	[mips_arch_list_matching mips64r6]
   1587 
   1588     run_list_test_arches "r6-branch-constraints"  "-32" \
   1589 			[mips_arch_list_matching mips32r6]
   1590 }
   1591