1# Copyright (C) 2012-2021 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.
108proc 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.
132proc 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
177proc 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).
190proc 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.
199proc 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.
212proc 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.
226proc 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.
239proc 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.
248proc 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.
261proc 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.
289proc 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@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.
322proc 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 "mips16e2*" $proparch ] } {
328	lappend prefixes mips16e2@
329    }
330    if { [ string match "mips16e*" $proparch ] } {
331	lappend prefixes mips16e@
332    }
333    if { [ string match "mips16*" $proparch ] } {
334	lappend prefixes mips16@
335    }
336    if { [ string match "octeon*" $proparch ] && $proparch != "octeon" } {
337	lappend prefixes octeon@
338    }
339    if { [ string match "mips*r6" $proparch ]} {
340	lappend prefixes mipsr6@
341    }
342    foreach prefix ${prefixes} {
343	set archname ${prefix}${name}
344	if { [file exists "$srcdir/$subdir/${archname}.d"] } {
345	    set name $archname
346	    break
347	}
348    }
349
350    if [catch {run_dump_test $name \
351		   "{name    {([concat $opts [mips_arch_displayname $arch]])}}
352		    {objdump {[mips_arch_objdump_flags $arch]}}
353		    {as      {[concat $opts [mips_arch_as_flags $arch]]}}"} rv] {
354        perror "$rv"
355        untested "$subdir/$name ($arch)"
356    }
357}
358
359# run_dump_test_arches NAME [OPTS] ARCH_LIST
360#
361# Invoke "run_dump_test_arch" for test NAME, for each architecture
362# listed in ARCH_LIST.  OPTS, if specified, is a list of additional
363# assembler options that should be used for all architectures.
364proc run_dump_test_arches { name args } {
365    set opts ""
366    if { [llength $args] > 1 } {
367	set opts [lindex $args 0]
368	set args [lrange $args 1 end]
369    }
370    set arch_list [lindex $args 0]
371    foreach arch $arch_list {
372	run_dump_test_arch $name $opts $arch
373    }
374}
375
376# run_list_test_arch NAME OPTS ARCH
377#
378# Invoke "run_list_test" for test NAME with additional assembler options OPTS.
379# Add the assembler flags that are associated with architecture ARCH.
380proc run_list_test_arch { name opts arch } {
381    global subdir srcdir
382
383    set testname "MIPS $name ([concat $opts [mips_arch_displayname $arch]])"
384    set proparch [lindex [mips_arch_properties $arch 0] 0]
385    set prefixes [list ${proparch}@ ]
386    if { [ string match "mips16e2*" $proparch ] } {
387	lappend prefixes mips16e2@
388    }
389    if { [ string match "mips16e*" $proparch ] } {
390	lappend prefixes mips16e@
391    }
392    if { [ string match "mips16*" $proparch ] } {
393	lappend prefixes mips16@
394    }
395    if { [ string match "octeon*" $proparch ] && $proparch != "octeon" } {
396	lappend prefixes octeon@
397    }
398    if { [ string match "mips*r6" $proparch ]} {
399	lappend prefixes mipsr6@
400    }
401    foreach prefix ${prefixes} {
402	set archname ${prefix}${name}
403	if { [file exists "$srcdir/$subdir/${archname}.l"] } {
404	    set name $archname
405	    break
406	}
407    }
408
409    if [catch {run_list_test \
410		   $name \
411		   [concat $opts [mips_arch_as_flags $arch]] \
412		   $testname} rv] {
413        perror "$rv"
414        untested "$testname"
415    }
416}
417
418# run_list_test_arches NAME [OPTS] ARCH_LIST
419#
420# Invoke "run_list_test_arch" for test NAME, for each architecture listed
421# in ARCH_LIST.  OPTS, if specified, is a list of additional assembler
422# options that should be used for all architectures.
423proc run_list_test_arches { name args } {
424    set opts ""
425    if { [llength $args] > 1 } {
426	set opts [lindex $args 0]
427	set args [lrange $args 1 end]
428    }
429    set arch_list [lindex $args 0]
430    foreach arch $arch_list {
431	run_list_test_arch "$name" "$opts" "$arch"
432    }
433}
434
435
436# Create the architecture data array by providing data for all
437# known architectures.
438#
439# Note that several targets pick default CPU based on ABI.  We
440# can't easily handle that; do NOT list those targets as defaulting
441# to any architecture.
442mips_arch_init
443mips_arch_create mips1 	32	{}	{} \
444			{ -march=mips1 -mtune=mips1 } { -mmips:3000 }
445mips_arch_create mips2 	32	mips1	{ gpr_ilocks } \
446		        { -march=mips2 -mtune=mips2 } { -mmips:6000 }
447mips_arch_create mips3 	64	mips2	{ fpisa3 } \
448			{ -march=mips3 -mtune=mips3 } { -mmips:4000 }
449mips_arch_create mips4 	64	mips3	{ fpisa4 } \
450			{ -march=mips4 -mtune=mips4 } { -mmips:8000 }
451mips_arch_create mips5 	64	mips4	{ fpisa5 } \
452			{ -march=mips5 -mtune=mips5 } { -mmips:mips5 }
453mips_arch_create mips32	32	mips2	{} \
454			{ -march=mips32 -mtune=mips32 } { -mmips:isa32 } \
455			{ mipsisa32-*-* mipsisa32el-*-* }
456mips_arch_create mips32r2 32	mips32	{ fpisa3 fpisa4 fpisa5 ror } \
457			{ -march=mips32r2 -mtune=mips32r2 } \
458			{ -mmips:isa32r2 } \
459			{ mipsisa32r2-*-* mipsisa32r2el-*-* }
460mips_arch_create mips32r3 32	mips32r2 { fpisa3 fpisa4 fpisa5 ror } \
461			{ -march=mips32r3 -mtune=mips32r3 } \
462			{ -mmips:isa32r3 } \
463			{ mipsisa32r3-*-* mipsisa32r3el-*-* }
464mips_arch_create mips32r5 32	mips32r3 { fpisa3 fpisa4 fpisa5 ror } \
465			{ -march=mips32r5 -mtune=mips32r5 } \
466			{ -mmips:isa32r5 } \
467			{ mipsisa32r5-*-* mipsisa32r5el-*-* }
468mips_arch_create mips32r6 32	mips32r5 { fpisa3 fpisa4 fpisa5 ror } \
469			{ -march=mips32r6 -mtune=mips32r6 --defsym r6=} \
470			{ -mmips:isa32r6 } \
471			{ mipsisa32r6-*-* mipsisa32r6el-*-* }
472mips_arch_create mips64	64	mips5	{ mips32 } \
473			{ -march=mips64 -mtune=mips64 } { -mmips:isa64 } \
474			{ mipsisa64-*-* mipsisa64el-*-* }
475mips_arch_create mips64r2 64	mips64	{ mips32r2 ror } \
476			{ -march=mips64r2 -mtune=mips64r2 } \
477			{ -mmips:isa64r2 } \
478			{ mipsisa64r2-*-* mipsisa64r2el-*-* }
479mips_arch_create mips64r3 64	mips64r2 { mips32r3 ror } \
480			{ -march=mips64r3 -mtune=mips64r3 } \
481			{ -mmips:isa64r3 } \
482			{ mipsisa64r3-*-* mipsisa64r3el-*-* }
483mips_arch_create mips64r5 64	mips64r3 { mips32r5 ror } \
484			{ -march=mips64r5 -mtune=mips64r5 } \
485			{ -mmips:isa64r5 } \
486			{ mipsisa64r5-*-* mipsisa64r5el-*-* }
487mips_arch_create mips64r6 64	mips64r5 { mips32r6 ror } \
488			{ -march=mips64r6 -mtune=mips64r6 --defsym r6=} \
489			{ -mmips:isa64r6 } \
490			{ mipsisa64r6-*-* mipsisa64r6el-*-* }
491mips_arch_create mips16-32 32	{}	{} \
492			{ -march=mips1 -mips16 } { -mmips:3000 }
493mips_arch_create mips16-64 64	mips16-32	{} \
494			{ -march=mips3 -mips16 } { -mmips:4000 }
495mips_arch_create mips16e-32 32	mips16-32	{} \
496			{ -march=mips32 -mips16 } { -mmips:isa32 }
497mips_arch_create mips16e2-32 32	mips16e-32	{} \
498			{ -march=mips32r2 -mips16 -mmips16e2 } \
499			{ -mmips:isa32r2 }
500mips_arch_create mips16e-64 64	mips16-64 { mips16e-32 } \
501			{ -march=mips64 -mips16 } { -mmips:isa64 }
502mips_arch_create mips16e2-64 64	mips16e-64 { mips16e2-32 } \
503			{ -march=mips64r2 -mips16 -mmips16e2 } \
504			{ -mmips:isa64r2 }
505mips_arch_create micromips 64	mips64r2 {} \
506			{ -march=mips64r2 -mmicromips } {}
507mips_arch_create r3000 	32	mips1	{} \
508			{ -march=r3000 -mtune=r3000 } { -mmips:3000 }
509mips_arch_create r3900 	32	mips1	{ gpr_ilocks } \
510			{ -march=r3900 -mtune=r3900 } { -mmips:3900 } \
511			{ mipstx39-*-* mipstx39el-*-* }
512mips_arch_create r4000 	64	mips3	{} \
513			{ -march=r4000 -mtune=r4000 } { -mmips:4000 }
514mips_arch_create vr5400	64	mips4	{ ror } \
515			{ -march=vr5400 -mtune=vr5400 } { -mmips:5400 }
516mips_arch_create interaptiv-mr2 32 mips32r3	{} \
517			{ -march=interaptiv-mr2 -mtune=interaptiv-mr2 } \
518			{ -mmips:interaptiv-mr2 }
519mips_arch_create sb1 	64	mips64	{ mips3d oddspreg } \
520			{ -march=sb1 -mtune=sb1 } { -mmips:sb1 } \
521			{ mipsisa64sb1-*-* mipsisa64sb1el-*-* }
522mips_arch_create octeon 64	mips64r2 { oddspreg } \
523			{ -march=octeon -mtune=octeon } { -mmips:octeon } \
524			{ mips64octeon*-*-* }
525mips_arch_create octeonp 64	octeon { oddspreg } \
526			{ -march=octeon+ -mtune=octeon+ } { -mmips:octeon+ } \
527			{ }
528mips_arch_create octeon2 64	octeonp { oddspreg } \
529			{ -march=octeon2 -mtune=octeon2 } { -mmips:octeon2 } \
530			{ }
531mips_arch_create octeon3 64	octeon2 { oddspreg } \
532			{ -march=octeon3 -mtune=octeon3 } { -mmips:octeon3 } \
533			{ }
534mips_arch_create xlr 	64	mips64	{ oddspreg } \
535			{ -march=xlr -mtune=xlr } { -mmips:xlr }
536mips_arch_create r5900 	64	mips3	{ gpr_ilocks singlefloat nollsc } \
537			{ -march=r5900 -mtune=r5900 } { -mmips:5900 } \
538			{ mipsr5900el-*-* mips64r5900el-*-* }
539mips_arch_create mips16e2-interaptiv-mr2 32 mips16e2-32 {} \
540			{ -march=interaptiv-mr2 -mips16 } \
541			{ -mmips:interaptiv-mr2 }
542
543#
544# And now begin the actual tests!  VxWorks uses RELA rather than REL
545# relocations, so most of the generic dump tests will not work there.
546#
547if { [istarget mips*-*-vxworks*] } {
548    run_dump_test "vxworks1"
549    run_dump_test "vxworks1-xgot"
550    run_dump_test "vxworks1-el"
551    run_dump_test "vxworks1-xgot-el"
552
553    run_list_test "option-pic-vxworks-1" "-mvxworks-pic" \
554	"MIPS invalid PIC option in VxWorks PIC"
555    run_list_test "option-pic-vxworks-2" "-mvxworks-pic" \
556	"MIPS invalid switch to SVR4 PIC from VxWorks PIC"
557} elseif { [istarget mips*-*-*] } {
558    set addr32 [expr [istarget mipstx39*-*-*] || [istarget mips-*-linux*] || [istarget mipsel-*-linux*] \
559		     || [istarget mipsisa32-*-linux*] || [istarget mipsisa32el-*-linux*]]
560    set has_newabi [expr [istarget *-*-irix6*] || [istarget mips*-*-linux*] \
561                         || [istarget mips*-sde-elf*] || [istarget mips*-mti-elf*] \
562                         || [istarget mips*-img-elf*]]
563
564    if { [istarget "mips*-*-*linux*"]
565	 || [istarget "mips*-sde-elf*"]
566	 || [istarget "mips*-mti-elf*"]
567	 || [istarget "mips*-img-elf*"]
568	 || [istarget "mips*-*-*bsd*"] } then {
569	set tmips "t"
570    } else {
571	set tmips ""
572    }
573    if [istarget mips*el-*-*] {
574	set el "el"
575    } {
576	set el ""
577    }
578    set imips [expr [istarget *-*-irix*] ? {"-irix"} : {""}]
579
580    run_dump_test_arches "dot-1"	[mips_arch_list_matching mips1]
581    run_dump_test_arches "abs"		[mips_arch_list_matching mips1]
582    run_dump_test_arches "add"		[mips_arch_list_matching mips1]
583    run_dump_test_arches "and"		[mips_arch_list_matching mips1]
584    run_dump_test_arches "mips1-fp"	[mips_arch_list_matching mips1]
585    run_list_test_arches "mips1-fp" "-32 -msoft-float" \
586					[mips_arch_list_matching mips1]
587    run_dump_test "break20"
588    run_dump_test "trap20"
589
590    run_dump_test_arches "beq"		[mips_arch_list_matching mips1]
591    run_dump_test_arches "bge"		[mips_arch_list_matching mips1]
592    run_dump_test_arches "bgeu"		[mips_arch_list_matching mips1]
593    run_dump_test_arches "blt"		[mips_arch_list_matching mips1]
594    run_dump_test_arches "bltu"		[mips_arch_list_matching mips1]
595    run_dump_test_arches "branch-likely" [mips_arch_list_matching mips2 !mips32r6]
596    run_dump_test_arches "branch-misc-1" [mips_arch_list_matching mips1]
597    run_dump_test_arches "branch-misc-2" [mips_arch_list_matching mips1]
598    run_dump_test_arches "branch-misc-2pic" [mips_arch_list_matching mips1]
599    run_dump_test "branch-misc-3"
600    run_dump_test_arches "branch-misc-4" [mips_arch_list_matching mips1]
601    run_dump_test_arches "branch-misc-5" [mips_arch_list_matching mips1]
602    run_dump_test_arches "branch-misc-5pic" [mips_arch_list_matching mips1]
603    if $has_newabi {
604	run_dump_test_arches "branch-misc-2-64" \
605					[mips_arch_list_matching mips3]
606	run_dump_test_arches "branch-misc-2pic-64" \
607					[mips_arch_list_matching mips3]
608	run_dump_test_arches "branch-misc-4-64" \
609					[mips_arch_list_matching mips3]
610	run_dump_test_arches "branch-misc-5-64" \
611					[mips_arch_list_matching mips3]
612	run_dump_test_arches "branch-misc-5pic-64" \
613					[mips_arch_list_matching mips3]
614    }
615    run_dump_test "branch-swap"
616
617    # Sweep a range of branch offsets so that it hits a position where
618    # it is at the beginning of a frag and then swapped with a 16-bit
619    # instruction from the preceding frag.  The offset will be somewhere
620    # close below 4096 as this is the default obstack size limit that
621    # we use and some space will have been already consumed.  The exact
622    # amount depends on the host's programming model.
623    for { set count 960 } { $count <= 1024 } { incr count } {
624	run_list_test "branch-swap-2" "--defsym count=$count" \
625	    "MIPS branch swapping ($count)"
626    }
627
628    run_dump_test_arches "branch-swap-3" [mips_arch_list_all]
629    run_dump_test_arches "branch-swap-4" [mips_arch_list_all]
630
631    run_dump_test "branch-section-1"
632    run_dump_test "branch-section-2"
633    run_dump_test "branch-section-3"
634    run_dump_test "branch-section-4"
635    run_dump_test "branch-extern-1"
636    run_dump_test "branch-extern-2"
637    run_dump_test "branch-extern-3"
638    run_dump_test "branch-extern-4"
639    run_dump_test "branch-weak-1"
640    run_dump_test "branch-weak-2"
641    run_dump_test "branch-weak-3"
642    run_dump_test "branch-weak-4"
643    run_dump_test "branch-weak-5"
644    run_dump_test "branch-weak-6"
645    run_dump_test "branch-weak-7"
646    run_dump_test "branch-local-1"
647    run_dump_test "branch-local-2"
648    run_dump_test "branch-local-ignore-2"
649    run_dump_test "branch-local-3"
650    run_dump_test "branch-local-ignore-3"
651    run_dump_test "branch-local-4"
652    run_dump_test "branch-local-5"
653    run_dump_test "branch-local-ignore-5"
654    run_dump_test "branch-local-6"
655    run_dump_test "branch-local-ignore-6"
656    run_dump_test "branch-local-7"
657    if $has_newabi {
658	run_dump_test "branch-local-n32-1"
659	run_dump_test "branch-local-n32-2"
660	run_dump_test "branch-local-ignore-n32-2"
661	run_dump_test "branch-local-n32-3"
662	run_dump_test "branch-local-ignore-n32-3"
663	run_dump_test "branch-local-n32-4"
664	run_dump_test "branch-local-n32-5"
665	run_dump_test "branch-local-ignore-n32-5"
666	run_dump_test "branch-local-n32-6"
667	run_dump_test "branch-local-ignore-n32-6"
668	run_dump_test "branch-local-n32-7"
669	run_dump_test "branch-local-n64-1"
670	run_dump_test "branch-local-n64-2"
671	run_dump_test "branch-local-ignore-n64-2"
672	run_dump_test "branch-local-n64-3"
673	run_dump_test "branch-local-ignore-n64-3"
674	run_dump_test "branch-local-n64-4"
675	run_dump_test "branch-local-n64-5"
676	run_dump_test "branch-local-ignore-n64-5"
677	run_dump_test "branch-local-n64-6"
678	run_dump_test "branch-local-ignore-n64-6"
679	run_dump_test "branch-local-n64-7"
680    }
681    run_dump_test "branch-addend"
682    run_dump_test "branch-addend-micromips"
683    if $has_newabi {
684	run_dump_test "branch-addend-n32"
685	run_dump_test "branch-addend-micromips-n32"
686	run_dump_test "branch-addend-n64"
687	run_dump_test "branch-addend-micromips-n64"
688    }
689    run_dump_test "branch-absolute"
690    run_dump_test "branch-absolute-addend"
691    if $has_newabi {
692	run_dump_test "branch-absolute-n32"
693	run_dump_test "branch-absolute-addend-n32"
694	run_dump_test "branch-absolute-n64"
695	run_dump_test "branch-absolute-addend-n64"
696    }
697
698    run_dump_test_arches "nal-1" [mips_arch_list_matching mips1 !micromips]
699    run_dump_test_arches "nal-2" [mips_arch_list_matching mips1 !micromips]
700
701    run_dump_test "compact-eh-eb-1"
702    run_dump_test "compact-eh-eb-2"
703    run_dump_test "compact-eh-eb-3"
704    run_dump_test "compact-eh-eb-4"
705    run_dump_test "compact-eh-eb-5"
706    run_dump_test "compact-eh-eb-6"
707    run_dump_test "compact-eh-eb-7"
708    run_dump_test "compact-eh-el-1"
709    run_dump_test "compact-eh-el-2"
710    run_dump_test "compact-eh-el-3"
711    run_dump_test "compact-eh-el-4"
712    run_dump_test "compact-eh-el-5"
713    run_dump_test "compact-eh-el-6"
714    run_dump_test "compact-eh-el-7"
715    run_list_test "compact-eh-err1"
716    run_list_test "compact-eh-err2"
717
718    run_dump_test "div"
719
720    if { !$addr32 && $has_newabi } {
721	run_dump_test_arches "dli"	[mips_arch_list_matching mips3]
722    }
723    run_dump_test_arches "jal"		[mips_arch_list_matching mips1]
724    run_dump_test_arches "jal-mask-11"	[mips_arch_list_matching mips1]
725    run_dump_test_arches "jal-mask-12"	[mips_arch_list_matching mips1]
726    run_dump_test_arches "jal-mask-21"	[mips_arch_list_matching micromips]
727    run_dump_test_arches "jal-mask-22"	[mips_arch_list_matching micromips]
728    run_dump_test "eret-1"
729    run_dump_test "eret-2"
730    run_dump_test "eret-3"
731    if { $has_newabi } {
732	run_dump_test_arches "fix-rm7000-1" \
733					[mips_arch_list_matching mips3 !singlefloat \
734						!mips64r6]
735    }
736    run_dump_test_arches "fix-rm7000-2" \
737					[mips_arch_list_matching mips3 !singlefloat \
738						!mips64r6]
739    run_dump_test_arches "24k-branch-delay-1" \
740					[mips_arch_list_matching mips1]
741    run_dump_test_arches "24k-triple-stores-1" \
742				[mips_arch_list_matching fpisa5 !octeon]
743    run_dump_test_arches "24k-triple-stores-2" \
744					[mips_arch_list_matching mips2]
745    run_dump_test_arches "24k-triple-stores-2-llsc" \
746					[mips_arch_list_matching mips2 !nollsc]
747    run_dump_test_arches "24k-triple-stores-3" \
748					[mips_arch_list_matching mips2]
749    run_dump_test_arches "24k-triple-stores-4" \
750					[mips_arch_list_matching mips2 !singlefloat]
751    run_dump_test_arches "24k-triple-stores-5" \
752					[mips_arch_list_matching mips1]
753    run_dump_test_arches "24k-triple-stores-6" \
754					[mips_arch_list_matching mips2 !singlefloat]
755    run_dump_test_arches "24k-triple-stores-7" \
756					[mips_arch_list_matching mips2 !singlefloat]
757    run_dump_test_arches "24k-triple-stores-8" \
758					[mips_arch_list_matching mips1]
759    run_dump_test_arches "24k-triple-stores-9" \
760					[mips_arch_list_matching mips1]
761    run_dump_test_arches "24k-triple-stores-10" \
762					[mips_arch_list_matching mips1]
763    run_dump_test_arches "24k-triple-stores-11" \
764	    				[mips_arch_list_matching mips1]
765
766    run_dump_test_arches "jal-svr4pic${imips}" \
767					[mips_arch_list_matching mips1]
768    run_dump_test_arches "jal-svr4pic-noreorder${imips}" \
769					[mips_arch_list_matching mips1]
770    run_dump_test_arches "jal-svr4pic-local${imips}" \
771					[mips_arch_list_matching mips1]
772    if $has_newabi {
773	run_dump_test_arches "jal-svr4pic-local-n32" \
774					[mips_arch_list_matching mips3]
775	run_dump_test_arches "jal-svr4pic-local-n64" \
776					[mips_arch_list_matching mips3]
777    }
778    run_dump_test "jal-xgot${imips}"
779    run_list_test_arches "jal-range" "-32" [mips_arch_list_matching mips1]
780    if $has_newabi { run_dump_test "jal-newabi" }
781    run_dump_test "la"
782    run_dump_test "la-svr4pic"
783    run_dump_test "la-xgot"
784    run_dump_test "lca-svr4pic"
785    run_dump_test "lca-xgot"
786    # XXX FIXME: Has mips2 and later insns with mips1 disassemblies.
787    # (Should split and then use appropriate arch lists.)
788    run_dump_test_arches "lb"	[mips_arch_list_matching mips1 !mips2]
789    run_dump_test_arches "lb-svr4pic" \
790				[mips_arch_list_matching mips1 !gpr_ilocks]
791    run_dump_test_arches "lb-svr4pic-ilocks" [mips_arch_list_matching gpr_ilocks]
792    # Both versions specify the cpu, so we can run both regardless of
793    # the interlocking in the configured default cpu.
794    run_dump_test "lb-xgot"
795    run_dump_test "lb-xgot-ilocks"
796    run_dump_test_arches "ld"		[mips_arch_list_matching mips1]
797    run_dump_test_arches "ld-forward" 	[mips_arch_list_matching mips1]
798    run_dump_test_arches "sd"		[mips_arch_list_matching mips1]
799    run_dump_test_arches "sd-forward" 	[mips_arch_list_matching mips1]
800    run_dump_test_arches "l_d" 		[mips_arch_list_matching mips1 !singlefloat]
801    run_dump_test_arches "l_d-single"	[mips_arch_list_matching mips1 singlefloat]
802    run_dump_test_arches "l_d-forward"	[mips_arch_list_matching mips1 !singlefloat]
803    run_dump_test_arches "s_d"		[mips_arch_list_matching mips1 !singlefloat]
804    run_dump_test_arches "s_d-single"	[mips_arch_list_matching mips1 singlefloat]
805    run_dump_test_arches "s_d-forward" 	[mips_arch_list_matching mips1 !singlefloat]
806    run_dump_test_arches "ldc1"		[mips_arch_list_matching mips2 !singlefloat]
807    run_dump_test_arches "ldc1-forward" [mips_arch_list_matching mips2 !singlefloat]
808    run_dump_test_arches "sdc1"		[mips_arch_list_matching mips2 !singlefloat]
809    run_dump_test_arches "sdc1-forward" [mips_arch_list_matching mips2 !singlefloat]
810    if $has_newabi {
811	run_dump_test_arches "ld-n32" 	[mips_arch_list_matching mips3]
812	run_dump_test_arches "ld-forward-n32" \
813					[mips_arch_list_matching mips3]
814	run_dump_test_arches "sd-n32" 	[mips_arch_list_matching mips3]
815	run_dump_test_arches "sd-forward-n32" \
816					[mips_arch_list_matching mips3]
817	run_dump_test_arches "l_d-n32" 	[mips_arch_list_matching mips3 !singlefloat]
818	run_dump_test_arches "l_d-forward-n32" \
819					[mips_arch_list_matching mips3 !singlefloat]
820	run_dump_test_arches "s_d-n32" 	[mips_arch_list_matching mips3 !singlefloat]
821	run_dump_test_arches "s_d-forward-n32" \
822					[mips_arch_list_matching mips3 !singlefloat]
823	run_dump_test_arches "ldc1-n32" [mips_arch_list_matching mips3 !singlefloat]
824	run_dump_test_arches "ldc1-forward-n32" \
825					[mips_arch_list_matching mips3 !singlefloat]
826	run_dump_test_arches "sdc1-n32" [mips_arch_list_matching mips3 !singlefloat]
827	run_dump_test_arches "sdc1-forward-n32" \
828					[mips_arch_list_matching mips3 !singlefloat]
829	run_dump_test_arches "ld-n64"	[mips_arch_list_matching mips3]
830	run_dump_test_arches "ld-forward-n64" \
831					[mips_arch_list_matching mips3]
832	run_dump_test_arches "sd-n64"	[mips_arch_list_matching mips3]
833	run_dump_test_arches "sd-forward-n64" \
834					[mips_arch_list_matching mips3]
835	run_dump_test_arches "l_d-n64"	[mips_arch_list_matching mips3 !singlefloat]
836	run_dump_test_arches "l_d-forward-n64" \
837					[mips_arch_list_matching mips3 !singlefloat]
838	run_dump_test_arches "s_d-n64"	[mips_arch_list_matching mips3 !singlefloat]
839	run_dump_test_arches "s_d-forward-n64" \
840					[mips_arch_list_matching mips3 !singlefloat]
841	run_dump_test_arches "ldc1-n64"	[mips_arch_list_matching mips3 !singlefloat]
842	run_dump_test_arches "ldc1-forward-n64" \
843					[mips_arch_list_matching mips3 !singlefloat]
844	run_dump_test_arches "sdc1-n64"	[mips_arch_list_matching mips3 !singlefloat]
845	run_dump_test_arches "sdc1-forward-n64" \
846					[mips_arch_list_matching mips3 !singlefloat]
847    }
848    run_dump_test_arches "ld-zero"	[mips_arch_list_matching mips1]
849    run_dump_test_arches "ld-zero-2"	[mips_arch_list_matching mips2 !nollsc]
850    run_dump_test_arches "ld-zero-3"	[mips_arch_list_matching mips3 !nollsc]
851    run_dump_test_arches "ld-zero-u"	[mips_arch_list_matching micromips]
852    run_dump_test_arches "ld-zero-q"	[mips_arch_list_matching r5900]
853    run_dump_test "ld-svr4pic"
854    run_dump_test "ld-xgot"
855    run_dump_test_arches "li"		[mips_arch_list_matching mips1]
856    run_dump_test "lifloat"
857    run_dump_test "lif-svr4pic"
858    run_dump_test "lif-xgot"
859    run_dump_test_arches "mips4"	[mips_arch_list_matching mips4]
860    run_dump_test_arches "mips4-fp" "-32" \
861					[mips_arch_list_matching fpisa4]
862    run_dump_test_arches "mips4-fp" "-mabi=o64" \
863					[mips_arch_list_matching fpisa4 gpr64]
864    run_list_test_arches "mips4-fp" "-32 -msoft-float" \
865					[mips_arch_list_matching fpisa4]
866    run_dump_test_arches "mips4-branch-likely" \
867					[mips_arch_list_matching mips4 !mips32r6]
868    run_list_test_arches "mips4-branch-likely" "-32 -msoft-float" \
869					[mips_arch_list_matching mips4 !mips32r6]
870    run_dump_test_arches "mips5-fp" "-32" \
871					[mips_arch_list_matching fpisa5]
872    run_dump_test_arches "mips5-fp" "-mabi=o64" \
873					[mips_arch_list_matching fpisa5 gpr64]
874    run_dump_test "mul"
875
876    run_dump_test_arches "rol"		[mips_arch_list_matching mips1 !ror]
877    run_dump_test_arches "rol-hw" 	[mips_arch_list_matching ror]
878
879    run_dump_test_arches "rol64" \
880				[mips_arch_list_matching gpr64 !ror !mips16-32]
881    run_dump_test_arches "rol64-hw"	[mips_arch_list_matching gpr64 ror]
882
883    run_dump_test "sb"
884    run_dump_test_arches "sdata-gp"	[mips_arch_list_matching mips1]
885    run_dump_test "trunc"
886    run_dump_test "ulh"
887    run_dump_test_arches "ulh2-eb"	[mips_arch_list_matching mips1 !mips32r6]
888    run_dump_test_arches "ulh2-el"	[mips_arch_list_matching mips1 !mips32r6]
889    run_dump_test "ulh-svr4pic"
890    run_dump_test "ulh-xgot"
891    run_dump_test "ulw"
892    run_dump_test "uld"
893    run_dump_test "ush"
894    run_dump_test "usw"
895    run_dump_test "usd"
896    run_dump_test_arches "ulw2-eb" [mips_arch_list_matching mips1 !gpr_ilocks \
897					!mips32r6]
898    run_dump_test_arches "ulw2-eb-ilocks" [mips_arch_list_matching gpr_ilocks \
899					!mips32r6]
900    run_dump_test_arches "ulw2-el" [mips_arch_list_matching mips1 !gpr_ilocks \
901					!mips32r6]
902    run_dump_test_arches "ulw2-el-ilocks" [mips_arch_list_matching gpr_ilocks \
903					!mips32r6]
904
905    run_dump_test_arches "uld2-eb" [mips_arch_list_matching mips3 !mips32r6]
906    run_dump_test_arches "uld2-el" [mips_arch_list_matching mips3 !mips32r6]
907
908    run_dump_test_arches "mips16"	[mips_arch_list_matching mips16-64]
909    if { $has_newabi } {
910	run_dump_test_arches "mips16-64" \
911					[mips_arch_list_matching mips16-64]
912    }
913    run_dump_test_arches "mips16-macro"	[mips_arch_list_matching mips16-32]
914    run_dump_test_arches "mips16-macro-t" \
915					[mips_arch_list_matching mips16-32]
916    run_dump_test_arches "mips16-macro-e" \
917					[mips_arch_list_matching mips16-32]
918    run_dump_test_arches "mips16-insn-t" \
919					[mips_arch_list_matching mips16-32]
920    run_dump_test_arches "mips16-insn-e" \
921					[mips_arch_list_matching mips16-32]
922    # Check MIPS16e extensions
923    run_dump_test_arches "mips16e"	[mips_arch_list_matching mips16e-32]
924    run_dump_test_arches "mips16e-64"	[mips_arch_list_matching mips16e-32]
925    # Check MIPS16e2 extensions.
926    run_dump_test_arches "mips16e2"	[mips_arch_list_matching mips16e2-32]
927    run_dump_test_arches "mips16e2-mt"	[mips_arch_list_matching mips16e2-32]
928    # Check MIPS16 ISA subset disassembly
929    run_dump_test_arches "mips16-sub"	[mips_arch_list_matching mips16-32]
930    run_dump_test_arches "mips16e-sub"	[mips_arch_list_matching mips16-32]
931    run_dump_test_arches "mips16e-64-sub" \
932					[mips_arch_list_matching mips16-32]
933    run_dump_test_arches "mips16e2-sub"	[mips_arch_list_matching mips16-32]
934    run_dump_test_arches "mips16e2-mt-sub" \
935					[mips_arch_list_matching mips16-32]
936
937    # Check jalx handling
938    run_dump_test "mips16-jalx"
939    run_dump_test "mips-jalx"
940    run_dump_test "mips-jalx-2"
941    run_dump_test "jalx-imm"
942    run_dump_test "jalx-addend"
943    run_dump_test "jalx-local"
944    if $has_newabi {
945	run_dump_test "jalx-imm-n32"
946	run_dump_test "jalx-addend-n32"
947	run_dump_test "jalx-local-n32"
948	run_dump_test "jalx-imm-n64"
949	run_dump_test "jalx-addend-n64"
950	run_dump_test "jalx-local-n64"
951    }
952
953    run_list_test "unaligned-jump-1" "-32" \
954				"MIPS jump to unaligned symbol 1"
955    run_list_test "unaligned-jump-2" "-32" \
956				"MIPS jump to unaligned symbol 2"
957    if $has_newabi {
958	run_dump_test "unaligned-jump-3"
959    }
960    run_list_test "unaligned-jump-mips16-1" "-32" \
961				"MIPS16 jump to unaligned symbol 1"
962    run_list_test "unaligned-jump-mips16-2" "-32" \
963				"MIPS16 jump to unaligned symbol 2"
964    if $has_newabi {
965	run_dump_test "unaligned-jump-mips16-3"
966    }
967    run_list_test "unaligned-jump-micromips-1" "-32" \
968				"microMIPS jump to unaligned symbol 1"
969    run_list_test "unaligned-jump-micromips-2" "-32" \
970				"microMIPS jump to unaligned symbol 2"
971    if $has_newabi {
972	run_dump_test "unaligned-jump-micromips-3"
973    }
974    run_list_test "unaligned-branch-1" "-32" \
975				"MIPS branch to unaligned symbol 1"
976    run_list_test "unaligned-branch-2" "-32" \
977				"MIPS branch to unaligned symbol 2"
978    if $has_newabi {
979	run_dump_test "unaligned-branch-3"
980    }
981    run_list_test "unaligned-branch-r6-1" "-32" \
982				"MIPSr6 branch to unaligned symbol 1"
983    run_list_test "unaligned-branch-r6-2" "-32 -mips64r6" \
984				"MIPSr6 branch to unaligned symbol 2"
985    run_list_test "unaligned-branch-r6-3" "-32" \
986				"MIPSr6 branch to unaligned symbol 3"
987    run_list_test "unaligned-branch-r6-4" "-32 -mips64r6" \
988				"MIPSr6 branch to unaligned symbol 4"
989    if $has_newabi {
990	run_dump_test "unaligned-branch-r6-5"
991	run_dump_test "unaligned-branch-r6-6"
992    }
993    run_list_test "unaligned-branch-mips16-1" "-32" \
994				"MIPS16 branch to unaligned symbol 1"
995    run_list_test "unaligned-branch-mips16-2" "-32" \
996				"MIPS16 branch to unaligned symbol 2"
997    if $has_newabi {
998	run_dump_test "unaligned-branch-mips16-3"
999    }
1000    run_list_test "unaligned-branch-micromips-1" "-32" \
1001				"microMIPS branch to unaligned symbol 1"
1002    run_list_test "unaligned-branch-micromips-2" "-32" \
1003				"microMIPS branch to unaligned symbol 2"
1004    if $has_newabi {
1005	run_dump_test "unaligned-branch-micromips-3"
1006    }
1007
1008    # Check MIPS16 HI16/LO16 relocations
1009    run_dump_test "mips16-hilo"
1010    run_dump_test "mips16e2-hilo"
1011    if $has_newabi {
1012	run_dump_test "mips16-hilo-n32"
1013	run_dump_test "mips16e2-hilo-n32"
1014    }
1015    run_dump_test "mips16-hilo-match"
1016    run_dump_test "mips16-reloc-error"
1017    run_dump_test "mips16e2-reloc-error"
1018    run_dump_test "mips16-reg-error"
1019    run_dump_test "mips16e2-imm-error"
1020
1021    run_dump_test "delay"
1022    run_dump_test "nodelay"
1023    run_dump_test "mips4010"
1024    run_dump_test "mips4650"
1025    run_dump_test "mips4100"
1026    run_dump_test "vr4111"
1027    run_dump_test "vr4120"
1028    run_dump_test "vr4120-2"
1029    run_dump_test "vr4130"
1030    run_dump_test "vr5400"
1031    run_list_test "vr5400-ill" "-march=vr5400"
1032    run_dump_test "vr5500"
1033    run_dump_test "rm7000"
1034    run_dump_test "perfcount"
1035    run_dump_test "lineno"
1036    run_dump_test "sync"
1037
1038    run_dump_test_arches "virt"		[mips_arch_list_matching mips32r2]
1039    if { $has_newabi } {
1040	run_dump_test_arches "virt64"	[mips_arch_list_matching mips64r2]
1041    }
1042
1043    run_dump_test_arches "mips32"	[mips_arch_list_matching mips32]
1044    run_dump_test_arches "mips32-imm"	[mips_arch_list_matching mips32]
1045
1046    run_dump_test_arches "mips32-sf32"	[mips_arch_list_matching mips32]
1047    run_list_test_arches "mips32-sf32" "-32 -msoft-float" \
1048					[mips_arch_list_matching mips32]
1049    run_dump_test_arches "mips32-cp2"	[mips_arch_list_matching mips32 \
1050					    !octeon]
1051
1052    run_dump_test_arches "mips32r2"	[mips_arch_list_matching mips32r2]
1053    run_dump_test_arches "mips32r2-cp2"	[mips_arch_list_matching mips32r2 \
1054					    !octeon]
1055    run_dump_test_arches "mips32r2-fp32" \
1056					[mips_arch_list_matching mips32r2]
1057    run_list_test_arches "mips32r2-fp32" "-32 -msoft-float" \
1058					[mips_arch_list_matching mips32r2]
1059    run_list_test_arches "mips32r2-ill" "-32" \
1060			[mips_arch_list_matching mips32r2 gpr32]
1061    run_list_test_arches "mips32r2-ill-fp64" "-mabi=o64" \
1062			[mips_arch_list_matching mips32r2 gpr64]
1063    run_list_test_arches "mips32r2-ill-nofp" "-32 -msoft-float" \
1064			[mips_arch_list_matching mips32r2]
1065
1066    run_dump_test_arches "mips64"	[mips_arch_list_matching mips64]
1067    run_dump_test_arches "mips64-cp2"	[mips_arch_list_matching mips64 \
1068					    !octeon]
1069
1070    run_dump_test_arches "mips64r2"	[mips_arch_list_matching mips64r2]
1071    run_list_test_arches "mips64r2-ill"	[mips_arch_list_matching mips64r2]
1072
1073    run_dump_test "set-arch"
1074
1075    if { !$addr32 } {
1076	run_dump_test "mips64-mips3d"
1077	if { $has_newabi } {
1078	    run_dump_test_arches "mips64-mips3d-incl" \
1079					[mips_arch_list_matching mips3d]
1080	}
1081
1082	run_dump_test "mips64-mdmx"
1083	if { $has_newabi } {
1084	    run_dump_test "sb1-ext-mdmx"
1085	    run_dump_test "sb1-ext-ps"
1086	}
1087	run_dump_test "xlr-ext"
1088    }
1089
1090    run_dump_test_arches "relax"	[mips_arch_list_matching mips2 !mips32r6]
1091    run_dump_test_arches "relax-at"	[mips_arch_list_matching mips2 !mips32r6]
1092    run_dump_test_arches "relax-offset"	[mips_arch_list_matching mips1 \
1093					    !mips32r6]
1094    run_dump_test "relax-swap1-mips1"
1095    run_dump_test "relax-swap1-mips2"
1096    run_dump_test "relax-swap2"
1097    run_dump_test_arches "relax-swap3"	[mips_arch_list_all]
1098    run_list_test_arches "relax-bc1any" "-mips3d -mabi=o64 -relax-branch" \
1099					[mips_arch_list_matching mips64 \
1100					    !micromips !mips32r6]
1101    run_list_test_arches "relax-bposge" "-mdsp -relax-branch" \
1102					[mips_arch_list_matching mips64r2 \
1103					    !micromips !mips32r6]
1104
1105    run_dump_test_arches "eva"		[mips_arch_list_matching mips32r2 !octeon]
1106
1107    run_list_test "illegal" "-32"
1108    run_list_test "baddata1" "-32"
1109    run_list_test "jalr" ""
1110
1111    run_dump_test "mips-gp32-fp32"
1112    run_dump_test "mips-gp32-fp64"
1113    run_dump_test "mips-gp64-fp32"
1114    run_dump_test "mips-gp64-fp64"
1115
1116    # Make sure that -mcpu=FOO and -mFOO are equivalent.  Assemble a file
1117    # containing 4650-specific instructions with -m4650 and -mcpu=4650,
1118    # and verify that they're the same.  Specifically, we're checking
1119    # that the EF_MIPS_MACH field is set, and that the 4650 'mul'
1120    # instruction does get used.  In previous versions of GAS,
1121    # only -mcpu=4650 would set the EF_MIPS_MACH field; -m4650 wouldn't.
1122    run_dump_test "elf_e_flags1"
1123    run_dump_test "elf_e_flags2"
1124    run_dump_test "elf_e_flags3"
1125    run_dump_test "elf_e_flags4"
1126
1127    # Check EF_MIPS_ARCH markings for each supported architecture.
1128    run_dump_test "elf_arch_mips1"
1129    run_dump_test "elf_arch_mips2"
1130    run_dump_test "elf_arch_mips3"
1131    run_dump_test "elf_arch_mips4"
1132    run_dump_test "elf_arch_mips5"
1133    run_dump_test "elf_arch_mips32"
1134    run_dump_test "elf_arch_mips32r2"
1135    run_dump_test "elf_arch_mips32r3"
1136    run_dump_test "elf_arch_mips32r5"
1137    run_dump_test "elf_arch_mips32r6"
1138    run_dump_test "elf_arch_mips64"
1139    run_dump_test "elf_arch_mips64r2"
1140    run_dump_test "elf_arch_mips64r3"
1141    run_dump_test "elf_arch_mips64r5"
1142    run_dump_test "elf_arch_mips64r6"
1143
1144    # Verify that ASE markings are handled properly.
1145    run_dump_test "elf_ase_mips16"
1146    run_dump_test "elf_ase_mips16-2"
1147    run_dump_test "elf_ase_mips16e2"
1148    run_dump_test "elf_ase_mips16e2-2"
1149
1150    run_dump_test "elf_ase_micromips"
1151    run_dump_test "elf_ase_micromips-2"
1152
1153    # Verify that machine markings are handled properly.
1154    run_dump_test "elf_mach_5900"
1155    run_dump_test "elf_mach_interaptiv-mr2"
1156    run_dump_test "elf_mach_p6600"
1157    run_dump_test "elf_mach_i6400"
1158    run_dump_test "elf_mach_i6500"
1159
1160    run_dump_test "mips-gp32-fp32-pic"
1161    run_dump_test "mips-gp32-fp64-pic"
1162    run_dump_test "mips-gp64-fp32-pic"
1163    run_dump_test "mips-gp64-fp64-pic"
1164
1165    run_dump_test "mips-abi32"
1166    run_dump_test "mips-abi32-pic"
1167    run_dump_test "mips-abi32-pic2${imips}"
1168
1169    run_dump_test "elf${el}-rel"
1170    run_dump_test_arches "elf${el}-rel2" \
1171			[mips_arch_list_matching gpr64 !singlefloat !mips16-32]
1172    run_dump_test "e32${el}-rel2"
1173    run_dump_test "elf${el}-rel3"
1174    run_dump_test_arches "elf-rel4" [mips_arch_list_matching gpr64 !mips16-32]
1175    run_dump_test "e32-rel4"
1176    run_dump_test "elf-rel5"
1177    run_dump_test "elf-rel6"
1178    if $has_newabi {
1179	run_dump_test "elf-rel6-n32"
1180	run_dump_test "elf-rel6-n64"
1181    }
1182    run_dump_test "elf-rel7"
1183    run_dump_test "elf-rel8"
1184    run_dump_test "elf-rel8-mips16"
1185    run_dump_test "elf-rel9"
1186    run_dump_test "elf-rel9-mips16"
1187    run_dump_test "elf-rel9-mips16e2"
1188    if $has_newabi {
1189	run_dump_test "elf-rel10"
1190	run_dump_test "elf-rel11"
1191    }
1192    run_dump_test "elf-rel12"
1193    run_dump_test "elf-rel13"
1194    run_dump_test "elf-rel13-mips16"
1195    run_dump_test "elf-rel14"
1196
1197    if $has_newabi {
1198	run_dump_test "elf-rel15"
1199	run_dump_test "elf-rel16"
1200
1201	run_dump_test "elf-rel-got-n32"
1202	run_dump_test "elf-rel-xgot-n32"
1203	run_dump_test "elf-rel-got-n64"
1204	run_dump_test "elf-rel-xgot-n64"
1205    }
1206    run_dump_test "elf-rel17"
1207    if $has_newabi {
1208	run_dump_test "elf-rel18"
1209    }
1210    run_dump_test "elf-rel19"
1211    run_dump_test "elf-rel20"
1212    if $has_newabi {
1213	run_dump_test "elf-rel21"
1214	run_dump_test "elf-rel22"
1215	run_dump_test "elf-rel23"
1216	run_dump_test "elf-rel23a"
1217	run_dump_test "elf-rel23b"
1218	run_dump_test "elf-rel24"
1219    }
1220
1221    run_dump_test "elf-rel25"
1222    run_dump_test "elf-rel25a"
1223    run_dump_test "elf-rel26"
1224
1225    run_dump_test_arches "elf-rel27" [mips_arch_list_all]
1226
1227    if $has_newabi {
1228	run_dump_test "elf-rel28-n32"
1229	run_dump_test "elf-rel28-micromips-n32"
1230	run_dump_test "elf-rel28-n64"
1231	run_dump_test "elf-rel28-micromips-n64"
1232	run_dump_test "elf-rel28-lldscd-n32"
1233	run_dump_test "elf-rel28-lldscd-micromips-n32"
1234	run_dump_test "elf-rel28-lldscd-n64"
1235	run_dump_test "elf-rel28-lldscd-micromips-n64"
1236	run_dump_test_arches "elf-rel29" [mips_arch_list_matching mips3]
1237    }
1238    run_list_test_arches "elf-rel30" "-32" [mips_arch_list_all]
1239
1240    run_dump_test "comdat-reloc"
1241
1242    run_dump_test "${tmips}mips${el}16-e"
1243    run_dump_test "${tmips}mips${el}16-f"
1244
1245    run_dump_test "elf-consthilo"
1246    run_dump_test "expr1"
1247
1248    run_list_test "tls-ill" "-32"
1249    run_dump_test "tls-o32"
1250    run_dump_test "tls-relw"
1251    run_dump_test "jalr2${imips}"
1252    run_dump_test_arches "jalr3"	[mips_arch_list_matching mips1 \
1253					    !micromips]
1254    run_dump_test_arches "jalr4"	[mips_arch_list_matching mips1 \
1255					    !micromips]
1256    if $has_newabi {
1257	run_dump_test_arches "jalr3-n32" \
1258					[mips_arch_list_matching mips3 \
1259					    !micromips]
1260	run_dump_test_arches "jalr4-n32" \
1261					[mips_arch_list_matching mips3 \
1262					    !micromips]
1263	run_dump_test_arches "jalr3-n64" \
1264					[mips_arch_list_matching mips3 \
1265					    !micromips]
1266	run_dump_test_arches "jalr4-n64" \
1267					[mips_arch_list_matching mips3 \
1268					    !micromips]
1269    }
1270
1271    run_dump_test_arches "aent"		[mips_arch_list_matching mips1]
1272    run_dump_test_arches "aent-2"	[mips_arch_list_matching mips1]
1273    run_dump_test_arches "aent-mdebug"	[mips_arch_list_matching mips1]
1274    run_dump_test_arches "aent-mdebug-2" \
1275					[mips_arch_list_matching mips1]
1276
1277    run_dump_test_arches "loc-swap"	[mips_arch_list_all]
1278    run_dump_test_arches "loc-swap-dis"	[mips_arch_list_all]
1279    run_dump_test_arches "loc-swap-2"	[mips_arch_list_all]
1280    run_dump_test_arches "loc-swap-3"	[mips_arch_list_all]
1281
1282    run_dump_test "nan-legacy-1"
1283    run_dump_test "nan-legacy-2"
1284    run_dump_test "nan-legacy-3"
1285    run_dump_test "nan-legacy-4"
1286    run_dump_test "nan-legacy-5"
1287
1288    run_dump_test "nan-2008-1"
1289    run_dump_test "nan-2008-2"
1290    run_dump_test "nan-2008-3"
1291    run_dump_test "nan-2008-4"
1292
1293    run_list_test "nan-error-1"
1294    run_list_test "nan-error-2" "-mnan=foo"
1295
1296    if $has_newabi {
1297	run_dump_test "n32-consec"
1298    }
1299
1300    # tests of objdump's ability to disassemble the move mnemonic
1301    run_dump_test_arches "move"	[mips_arch_list_matching mips64 !micromips]
1302    run_dump_test_arches "micromips32-move" [mips_arch_list_matching micromips]
1303
1304    # tests of objdump's ability to disassemble using different
1305    # register names.
1306    run_dump_test "gpr-names-numeric"
1307    run_dump_test "gpr-names-32"
1308    run_dump_test "gpr-names-n32"
1309    run_dump_test "gpr-names-64"
1310
1311    run_dump_test "fpr-names-numeric"
1312    run_dump_test "fpr-names-32"
1313    run_dump_test "fpr-names-n32"
1314    run_dump_test "fpr-names-64"
1315
1316    run_dump_test "cp0-names-numeric"
1317    run_dump_test "cp0-names-r3000"
1318    run_dump_test "cp0-names-r3900"
1319    run_dump_test "cp0-names-r4000" \
1320		  { { {name} {(r4000)} } { {objdump} {-M cp0-names=r4000} } }
1321    run_dump_test "cp0-names-r4000" \
1322		  { { {name} {(r4400)} } { {objdump} {-M cp0-names=r4400} } }
1323    run_dump_test "cp0-names-mips32"
1324    run_dump_test "cp0-names-mips32r2"
1325    run_dump_test "cp0-names-mips64"
1326    run_dump_test "cp0-names-mips64r2"
1327    run_dump_test "cp0-names-sb1"
1328
1329    run_dump_test "cp0sel-names-numeric"
1330    run_dump_test "cp0sel-names-mips32"
1331    run_dump_test "cp0sel-names-mips32r2"
1332    run_dump_test "cp0sel-names-mips64"
1333    run_dump_test "cp0sel-names-mips64r2"
1334    run_dump_test "cp0sel-names-sb1"
1335
1336    run_dump_test_arches "cp0c"		[mips_arch_list_matching mips1 \
1337					    !micromips]
1338    run_dump_test_arches "cp0b"		[mips_arch_list_matching mips1 \
1339					    !micromips]
1340    run_dump_test_arches "cp0bl"	[mips_arch_list_matching mips1 \
1341					    !micromips]
1342    run_dump_test_arches "cp0m"		[mips_arch_list_matching mips1 \
1343					    !micromips]
1344
1345    run_dump_test_arches "rfe"		[mips_arch_list_matching mips1 \
1346					    !micromips]
1347
1348    run_dump_test "cp1-names-numeric"
1349    run_dump_test "cp1-names-r3000"
1350    run_dump_test "cp1-names-r3900"
1351    run_dump_test "cp1-names-r4000" \
1352		  { { {name} {(r4000)} } { {objdump} {-M cp0-names=r4000} } }
1353    run_dump_test "cp1-names-r4000" \
1354		  { { {name} {(r4400)} } { {objdump} {-M cp0-names=r4400} } }
1355    run_dump_test "cp1-names-mips32"
1356    run_dump_test "cp1-names-mips32r2"
1357    run_dump_test "cp1-names-mips64"
1358    run_dump_test "cp1-names-mips64r2"
1359    run_dump_test "cp1-names-sb1"
1360
1361    # The VR5400 and R5900 have their own sets of COP2 instructions, so
1362    # exclude them from generic testing.  Likewise the Octeon and DMFC2/DMTC2.
1363    run_dump_test_arches "cp2"		[mips_arch_list_matching mips1 \
1364					    !vr5400 !r5900]
1365    run_dump_test_arches "cp2-64"	[mips_arch_list_matching mips1 \
1366					    !vr5400 !r5900 !octeon]
1367    run_dump_test_arches "cp2b"		[mips_arch_list_matching mips1]
1368    run_dump_test_arches "cp2bl"	[mips_arch_list_matching mips1]
1369    run_dump_test_arches "cp2m"		[mips_arch_list_matching mips1]
1370    run_dump_test_arches "cp2d"		[mips_arch_list_matching mips1]
1371
1372    run_dump_test_arches "cp3"		[mips_arch_list_matching mips1 \
1373					    !micromips]
1374    run_dump_test_arches "cp3b"		[mips_arch_list_matching mips1 \
1375					    !micromips]
1376    run_dump_test_arches "cp3bl"	[mips_arch_list_matching mips1 \
1377					    !micromips]
1378    run_dump_test_arches "cp3m"		[mips_arch_list_matching mips1 \
1379					    !micromips]
1380    run_dump_test_arches "cp3d"		[mips_arch_list_matching mips1 \
1381					    !micromips]
1382
1383    run_dump_test_arches "c0"		[mips_arch_list_matching mips1 \
1384					    !micromips]
1385    run_dump_test_arches "c1"		[mips_arch_list_matching mips1 \
1386					    !micromips]
1387    run_dump_test_arches "c2"		[mips_arch_list_matching mips1 \
1388					    !micromips]
1389    run_dump_test_arches "c3"		[mips_arch_list_matching mips1 \
1390					    !micromips]
1391
1392    run_dump_test "hwr-names-numeric"
1393    run_dump_test "hwr-names-mips32r2"
1394    run_dump_test "hwr-names-mips64r2"
1395    run_dump_test_arches "hwr-names"	[mips_arch_list_matching mips32r6 \
1396					    !micromipsr6]
1397
1398    run_dump_test "ldstla-32"
1399    run_dump_test "ldstla-32-mips3"
1400    run_dump_test "ldstla-32-shared"
1401    run_dump_test "ldstla-32-mips3-shared"
1402    run_list_test "ldstla-32-1" "-mabi=32" \
1403	"MIPS ld-st-la bad constants (ABI o32)"
1404    run_list_test "ldstla-32-mips3-1" "-mabi=32" \
1405	"MIPS ld-st-la bad constants (ABI o32, mips3)"
1406    run_list_test "ldstla-32-1" "-KPIC -mabi=32" \
1407	"MIPS ld-st-la bad constants (ABI o32, shared)"
1408    run_list_test "ldstla-32-mips3-1" "-KPIC -mabi=32" \
1409	"MIPS ld-st-la bad constants (ABI o32, mips3, shared)"
1410    run_dump_test "ldstla-eabi64"
1411    if $has_newabi {
1412	run_dump_test "ldstla-n64"
1413	run_dump_test "ldstla-n64-shared"
1414	run_dump_test "ldstla-n64-sym32"
1415    }
1416
1417    run_dump_test "macro-warn-1"
1418    run_dump_test "macro-warn-2"
1419    run_dump_test "macro-warn-3"
1420    run_dump_test "macro-warn-4"
1421    if $has_newabi {
1422	run_dump_test "macro-warn-1-n32"
1423	run_dump_test "macro-warn-2-n32"
1424    }
1425
1426    run_dump_test "noat-1"
1427    run_list_test "noat-2" ""
1428    run_list_test "noat-3" ""
1429    run_list_test "noat-4" ""
1430    run_list_test "noat-5" ""
1431    run_list_test "noat-6" ""
1432    run_list_test "noat-7" ""
1433
1434    run_dump_test "at-1"
1435    run_list_test "at-2" "-32 -mips1" "MIPS at-2"
1436
1437    run_dump_test "loongson-2e"
1438    run_dump_test "loongson-2f"
1439    run_dump_test "loongson-2f-2"
1440    run_dump_test "loongson-2f-3"
1441
1442    run_dump_test "loongson-3a"
1443    run_dump_test "loongson-3a-2"
1444    run_dump_test "loongson-3a-3"
1445
1446    run_dump_test "loongson-2f-mmi"
1447    run_dump_test "loongson-3a-mmi"
1448
1449    run_dump_test_arches "loongson-cam"		[mips_arch_list_matching gs464]
1450    run_dump_test_arches "loongson-ext2"	[mips_arch_list_matching gs464]
1451
1452    if { $has_newabi } {
1453	run_dump_test_arches "octeon"	[mips_arch_list_matching octeon]
1454    }
1455    run_dump_test_arches "octeon-saa-saad" [mips_arch_list_matching octeonp]
1456    run_list_test_arches "octeon-ill"	[mips_arch_list_matching octeon]
1457    if { $has_newabi } {
1458	run_dump_test_arches "octeon-pref" \
1459					[mips_arch_list_matching octeon]
1460    }
1461    run_dump_test_arches "octeon2"	[mips_arch_list_matching octeon2]
1462    run_dump_test_arches "octeon3"	[mips_arch_list_matching octeon3]
1463
1464    run_dump_test "smartmips"
1465    run_dump_test_arches "mips32-dsp"	[mips_arch_list_matching mips32r2 \
1466					    !octeon]
1467    run_dump_test_arches "mips32-dspr2"	[mips_arch_list_matching mips32r2 \
1468					    !octeon]
1469    run_dump_test_arches "mips32-dspr3"	[mips_arch_list_matching mips32r6]
1470    run_dump_test "mips64-dsp"
1471    run_dump_test "mips32-mt"
1472
1473    run_dump_test_arches "save" [lsort -dictionary -unique [concat \
1474				[mips_arch_list_matching mips16e-32] \
1475				[mips_arch_list_matching interaptiv-mr2]]]
1476    run_dump_test_arches "save-err" [lsort -dictionary -unique [concat \
1477				[mips_arch_list_matching mips16e-32] \
1478				[mips_arch_list_matching interaptiv-mr2]]]
1479    run_dump_test_arches "save-sub" [lsort -dictionary -unique [concat \
1480				[mips_arch_list_matching mips1 !micromips] \
1481				[mips_arch_list_matching mips16-32]]]
1482
1483    run_dump_test "mips16-dwarf2"
1484    if $has_newabi {
1485	run_dump_test "mips16-dwarf2-n32"
1486    }
1487    run_dump_test "mips16-stabs"
1488
1489    run_dump_test "mips16e-jrc"
1490    run_dump_test "mips16e2-lui"
1491    run_dump_test "mips16e2-mt-err"
1492    run_dump_test "mips16e2-copy"
1493    run_dump_test "mips16e2-copy-err"
1494
1495    run_dump_test "mips16-intermix"
1496    run_dump_test "mips16-extend"
1497    run_dump_test "mips16-extend-swap"
1498    run_dump_test "mips16-sprel-swap"
1499    run_dump_test "mips16-sdrasp"
1500    run_dump_test "mips16-insn-length-noargs"
1501
1502    run_dump_test "mips16-branch-unextended-1"
1503    run_dump_test "mips16-branch-unextended-2"
1504    run_dump_test "mips16-relax-unextended-1"
1505    run_dump_test "mips16-relax-unextended-2"
1506    run_dump_test "mips16-jal-t"
1507    run_dump_test "mips16-jal-e"
1508
1509    run_dump_test_arches "mips16-asmacro" [mips_arch_list_matching mips16-32]
1510
1511    run_dump_test "vxworks1"
1512    run_dump_test "vxworks1-xgot"
1513    run_dump_test "vxworks1-el"
1514    run_dump_test "vxworks1-xgot-el"
1515
1516    run_dump_test "noreorder"
1517    run_dump_test "align"
1518    run_dump_test "align2"
1519    run_dump_test "align2-el"
1520    run_dump_test "align3"
1521    run_dump_test "odd-float"
1522    run_dump_test "insn-opts"
1523
1524    run_list_test_arches "mips-macro-ill-sfp" "-32 -msingle-float" \
1525					[mips_arch_list_matching mips2]
1526    run_list_test_arches "mips-macro-ill-nofp" "-32 -msoft-float" \
1527					[mips_arch_list_matching mips2]
1528
1529    run_list_test_arches "mips-hard-float-flag" \
1530	"-32 -msoft-float -mhard-float" \
1531	[mips_arch_list_matching mips1 !singlefloat]
1532    run_list_test_arches "mips-double-float-flag" \
1533	"-32 -msingle-float -mdouble-float" \
1534	[mips_arch_list_matching mips1 !singlefloat]
1535
1536    run_dump_test "mips16-vis-1"
1537    run_dump_test "call-nonpic-1"
1538    run_dump_test "mips32-sync"
1539    run_dump_test_arches "mips32r2-sync" [lsort -dictionary -unique [concat \
1540					[mips_arch_list_matching mips32r2] \
1541					[mips_arch_list_matching mips16e2-32]]]
1542    run_dump_test_arches "mips32r2-sync-1" [lsort -dictionary -unique [concat \
1543					[mips_arch_list_matching mips32r2] \
1544					[mips_arch_list_matching mips16e2-32]]]
1545    run_dump_test_arches "alnv_ps-swap" [mips_arch_list_matching fpisa5 \
1546						!mips32r6]
1547    run_dump_test_arches "cache" [lsort -dictionary -unique [concat \
1548					[mips_arch_list_matching mips3] \
1549					[mips_arch_list_matching mips32] ] ]
1550    run_dump_test_arches "daddi"	[mips_arch_list_matching mips3 \
1551						!mips32r6]
1552    run_dump_test_arches "dadd" 	[mips_arch_list_matching mips64r6]
1553    run_dump_test_arches "pref" [lsort -dictionary -unique [concat \
1554					[mips_arch_list_matching mips4] \
1555					[mips_arch_list_matching mips32] ] ]
1556
1557    if $has_newabi { run_dump_test "cfi-n64-1" }
1558
1559    run_dump_test "pr12915"
1560    run_dump_test "reginfo-1a"
1561    run_dump_test "reginfo-1b"
1562    run_dump_test "reginfo-2"
1563    if $has_newabi {
1564	run_dump_test "reginfo-2-n32"
1565    }
1566
1567    run_dump_test "micromips"
1568    run_dump_test "micromips-trap"
1569    run_dump_test "micromips-compact"
1570    run_dump_test "micromips-insn32"
1571    run_dump_test "micromips-noinsn32"
1572    run_list_test "micromips" "-mips32r2 -32 -mfp64 -minsn32" \
1573	"microMIPS for MIPS32r2 (instructions invalid in insn32 mode)"
1574    run_list_test "micromips-size-0" \
1575	"-32 -march=mips64 -mmicromips" "microMIPS instruction size 0"
1576    run_dump_test "micromips-size-1"
1577    run_dump_test "micromips-branch-relax"
1578    run_dump_test "micromips-branch-relax-pic${imips}"
1579    run_dump_test "micromips-branch-relax-insn32"
1580    run_dump_test "micromips-branch-relax-insn32-pic${imips}"
1581    run_dump_test "micromips-branch-delay"
1582    run_dump_test "micromips-warn-branch-delay"
1583    run_dump_test "micromips-warn-branch-delay-1"
1584    run_dump_test "micromips-branch-absolute"
1585    run_dump_test "micromips-branch-absolute-addend"
1586    if $has_newabi {
1587	run_dump_test "micromips-branch-absolute-n32"
1588	run_dump_test "micromips-branch-absolute-addend-n32"
1589	run_dump_test "micromips-branch-absolute-n64"
1590	run_dump_test "micromips-branch-absolute-addend-n64"
1591    }
1592    run_dump_test "micromips-b16"
1593    run_list_test "micromips-ill"
1594
1595    run_dump_test_arches "mcu"		[mips_arch_list_matching mips32r2 \
1596					    !octeon]
1597    run_dump_test_arches "hilo-diff-eb"	[mips_arch_list_all]
1598    run_dump_test_arches "hilo-diff-el"	[mips_arch_list_all]
1599    if $has_newabi {
1600	run_dump_test_arches "hilo-diff-eb-n32" [mips_arch_list_matching mips3]
1601	run_dump_test_arches "hilo-diff-el-n32" [mips_arch_list_matching mips3]
1602	run_dump_test_arches "hilo-diff-eb-n64" [mips_arch_list_matching mips3]
1603	run_dump_test_arches "hilo-diff-el-n64" [mips_arch_list_matching mips3]
1604    }
1605    run_dump_test_arches "lui"		[mips_arch_list_matching mips1]
1606    run_dump_test_arches "lui-1"	[lsort -dictionary -unique [concat \
1607					[mips_arch_list_matching mips1] \
1608					[mips_arch_list_matching mips16e2-32]]]
1609    run_dump_test_arches "lui-2"	[lsort -dictionary -unique [concat \
1610					[mips_arch_list_matching mips1] \
1611					[mips_arch_list_matching mips16e2-32]]]
1612    run_dump_test_arches "addiu-error"	[mips_arch_list_all]
1613    run_dump_test_arches "break-error"	[mips_arch_list_all]
1614
1615    run_dump_test "r5900"
1616    run_dump_test "r5900-fix"
1617    run_dump_test "r5900-no-fix"
1618    run_dump_test "r5900-full"
1619    run_list_test "r5900-nollsc" "-mabi=o64 -march=r5900"
1620    run_dump_test "r5900-vu0"
1621    run_dump_test "r5900-full-vu0"
1622    run_dump_test "r5900-all-vu0"
1623    run_list_test "r5900-error-vu0" "-march=r5900"
1624
1625    run_list_test_arches "ext-ill"	[mips_arch_list_matching mips64r2]
1626
1627    run_list_test "ase-errors-1" "-mabi=32 -march=mips1" "ASE errors (1)"
1628    run_list_test "ase-errors-2" "-mabi=o64 -march=mips3" "ASE errors (2)"
1629    run_list_test "ase-errors-3" "-mabi=32 -march=mips1" "ASE errors (3)"
1630    run_list_test "ase-errors-4" "-mabi=o64 -march=mips3" "ASE errors (4)"
1631
1632    run_dump_test_arches "la-reloc"	[mips_arch_list_matching mips1]
1633    run_list_test "dla-warn" "-mabi=32 -march=mips3" \
1634			     "DLA with 32-bit addresses"
1635    if { $has_newabi } {
1636	run_dump_test_arches "dla-reloc" [mips_arch_list_matching mips3]
1637	run_list_test "la-warn" "-mabi=64 -march=mips3" \
1638				"LA with 64-bit addresses"
1639    }
1640
1641    # Start with MIPS II to avoid load delay nops.
1642    run_dump_test_arches "ld-reloc"	[mips_arch_list_matching mips2]
1643    run_dump_test_arches "ulw-reloc"	[mips_arch_list_matching mips2 !mips32r6]
1644    run_dump_test_arches "ulh-reloc"	[mips_arch_list_matching mips2 !mips32r6]
1645
1646    run_dump_test "l_d-reloc"
1647    run_list_test "bltzal"
1648
1649    run_dump_test_arches "msa"		[mips_arch_list_matching mips32r2]
1650    if { $has_newabi } {
1651	run_dump_test_arches "msa64"	[mips_arch_list_matching mips64r2]
1652    }
1653    run_dump_test_arches "msa-relax"	[mips_arch_list_matching mips32r2 !mips32r6]
1654    run_dump_test_arches "msa-branch"	[mips_arch_list_matching mips32r2]
1655
1656    run_dump_test_arches "xpa"		[mips_arch_list_matching mips32r2]
1657    run_dump_test_arches "xpa-err"	[mips_arch_list_matching mips32r2]
1658    run_dump_test_arches "xpa-virt-err"	[mips_arch_list_matching mips32r2]
1659    run_dump_test_arches "r5" "-32"	[mips_arch_list_matching mips32r5]
1660
1661    run_dump_test "pcrel-1"
1662    run_dump_test "pcrel-2"
1663    run_list_test "pcrel-3" "" "Invalid cross-section PC-relative references"
1664    run_dump_test "pcrel-4-32"
1665    if $has_newabi {
1666	run_dump_test "pcrel-4-n32"
1667	run_dump_test "pcrel-4-64"
1668    }
1669
1670    run_dump_test "pcrel-reloc-1"
1671    run_dump_test "pcrel-reloc-1-r6"
1672    run_dump_test "pcrel-reloc-2"
1673    run_dump_test "pcrel-reloc-2-r6"
1674    run_dump_test "pcrel-reloc-3"
1675    run_dump_test "pcrel-reloc-3-r6"
1676    run_dump_test "pcrel-reloc-4"
1677    run_dump_test "pcrel-reloc-4-r6"
1678    run_dump_test "pcrel-reloc-5"
1679    run_dump_test "pcrel-reloc-5-r6"
1680    run_dump_test "pcrel-reloc-6"
1681    run_list_test "pcrel-reloc-6" "-32 --defsym offset=4" \
1682	"MIPS local PC-relative relocations 6b"
1683
1684    run_dump_test_arches "mips16-pcrel-0" [mips_arch_list_matching mips16-32]
1685    run_dump_test_arches "mips16-pcrel-1" [mips_arch_list_matching mips16-64]
1686    run_dump_test_arches "mips16-pcrel-2" [mips_arch_list_matching mips16-32]
1687    run_dump_test_arches "mips16-pcrel-3" [mips_arch_list_matching mips16-32]
1688    run_dump_test_arches "mips16-pcrel-4" [mips_arch_list_matching mips16-32]
1689    run_dump_test_arches "mips16-pcrel-5" [mips_arch_list_matching mips16-32]
1690    run_dump_test_arches "mips16-pcrel-pic-0" \
1691					[mips_arch_list_matching mips16-32]
1692    run_dump_test_arches "mips16-pcrel-pic-1" \
1693					[mips_arch_list_matching mips16-64]
1694    if $has_newabi {
1695	run_dump_test_arches "mips16-pcrel-n32-0" \
1696					[mips_arch_list_matching mips16-64]
1697	run_dump_test_arches "mips16-pcrel-n32-1" \
1698					[mips_arch_list_matching mips16-64]
1699	run_dump_test_arches "mips16-pcrel-n64-sym32-0" \
1700					[mips_arch_list_matching mips16-64]
1701	run_dump_test_arches "mips16-pcrel-n64-sym32-1" \
1702					[mips_arch_list_matching mips16-64]
1703	run_dump_test_arches "mips16-pcrel-n64-0" \
1704					[mips_arch_list_matching mips16-64]
1705	run_dump_test_arches "mips16-pcrel-n64-1" \
1706					[mips_arch_list_matching mips16-64]
1707    }
1708    run_dump_test_arches "mips16-pcrel-delay-0" \
1709					[mips_arch_list_matching mips16-32]
1710    run_dump_test_arches "mips16-pcrel-delay-1" \
1711					[mips_arch_list_matching mips16-32]
1712    run_dump_test "mips16-pcrel-relax-0"
1713    run_dump_test "mips16-pcrel-relax-1"
1714    run_dump_test "mips16-pcrel-relax-2"
1715    run_dump_test "mips16-pcrel-relax-3"
1716    run_dump_test_arches "mips16-pcrel-reloc-0" \
1717					[mips_arch_list_matching mips16-32]
1718    run_dump_test_arches "mips16-pcrel-reloc-1" \
1719					[mips_arch_list_matching mips16-32]
1720    run_dump_test_arches "mips16-pcrel-reloc-2" \
1721					[mips_arch_list_matching mips16-32]
1722    run_dump_test_arches "mips16-pcrel-reloc-3" \
1723					[mips_arch_list_matching mips16-32]
1724    run_dump_test_arches "mips16-pcrel-reloc-4" \
1725					[mips_arch_list_matching mips16-64]
1726    run_dump_test_arches "mips16-pcrel-reloc-5" \
1727					[mips_arch_list_matching mips16-64]
1728    run_dump_test_arches "mips16-pcrel-reloc-6" \
1729					[mips_arch_list_matching mips16-64]
1730    run_dump_test_arches "mips16-pcrel-reloc-7" \
1731					[mips_arch_list_matching mips16-64]
1732    run_dump_test_arches "mips16-pcrel-addend-0" \
1733					[mips_arch_list_matching mips16-32]
1734    run_dump_test_arches "mips16-pcrel-addend-1" \
1735					[mips_arch_list_matching mips16-32]
1736    run_dump_test_arches "mips16-pcrel-addend-2" \
1737					[mips_arch_list_matching mips16-32]
1738    run_dump_test_arches "mips16-pcrel-addend-3" \
1739					[mips_arch_list_matching mips16-32]
1740    run_dump_test_arches "mips16-pcrel-addend-4" \
1741					[mips_arch_list_matching mips16-64]
1742    run_dump_test_arches "mips16-pcrel-addend-5" \
1743					[mips_arch_list_matching mips16-64]
1744    run_dump_test_arches "mips16-pcrel-addend-6" \
1745					[mips_arch_list_matching mips16-64]
1746    run_dump_test_arches "mips16-pcrel-addend-7" \
1747					[mips_arch_list_matching mips16-64]
1748    run_dump_test_arches "mips16-pcrel-addend-8" \
1749					[mips_arch_list_matching mips16-32]
1750    run_dump_test_arches "mips16-pcrel-addend-9" \
1751					[mips_arch_list_matching mips16-64]
1752    run_dump_test_arches "mips16-pcrel-addend-pic-8" \
1753					[mips_arch_list_matching mips16-32]
1754    run_dump_test_arches "mips16-pcrel-addend-pic-9" \
1755					[mips_arch_list_matching mips16-64]
1756    if $has_newabi {
1757	run_dump_test_arches "mips16-pcrel-addend-n32-8" \
1758					[mips_arch_list_matching mips16-64]
1759	run_dump_test_arches "mips16-pcrel-addend-n32-9" \
1760					[mips_arch_list_matching mips16-64]
1761	run_dump_test_arches "mips16-pcrel-addend-n64-sym32-8" \
1762					[mips_arch_list_matching mips16-64]
1763	run_dump_test_arches "mips16-pcrel-addend-n64-sym32-9" \
1764					[mips_arch_list_matching mips16-64]
1765	run_dump_test_arches "mips16-pcrel-addend-n64-8" \
1766					[mips_arch_list_matching mips16-64]
1767	run_dump_test_arches "mips16-pcrel-addend-n64-9" \
1768					[mips_arch_list_matching mips16-64]
1769    }
1770    run_dump_test_arches "mips16-pcrel-absolute" \
1771					[mips_arch_list_matching mips16-32]
1772    run_dump_test_arches "mips16-pcrel-absolute-1" \
1773					[mips_arch_list_matching mips16-32]
1774    run_dump_test_arches "mips16-pcrel-absolute-2" \
1775					[mips_arch_list_matching mips16-64]
1776    run_dump_test_arches "mips16-pcrel-absolute-3" \
1777					[mips_arch_list_matching mips16-64]
1778    run_dump_test_arches "mips16-pcrel-absolute-4" \
1779					[mips_arch_list_matching mips16-32]
1780    run_dump_test_arches "mips16-pcrel-absolute-5" \
1781					[mips_arch_list_matching mips16-32]
1782    run_dump_test_arches "mips16-pcrel-absolute-6" \
1783					[mips_arch_list_matching mips16-64]
1784    run_dump_test_arches "mips16-pcrel-absolute-7" \
1785					[mips_arch_list_matching mips16-64]
1786    run_dump_test_arches "mips16-pcrel-absolute-pic-4" \
1787					[mips_arch_list_matching mips16-32]
1788    run_dump_test_arches "mips16-pcrel-absolute-pic-6" \
1789					[mips_arch_list_matching mips16-64]
1790    if $has_newabi {
1791	run_dump_test_arches "mips16-pcrel-absolute-n32-4" \
1792					[mips_arch_list_matching mips16-64]
1793	run_dump_test_arches "mips16-pcrel-absolute-n32-6" \
1794					[mips_arch_list_matching mips16-64]
1795	run_dump_test_arches "mips16-pcrel-absolute-n64-4" \
1796					[mips_arch_list_matching mips16-64]
1797	run_dump_test_arches "mips16-pcrel-absolute-n64-6" \
1798					[mips_arch_list_matching mips16-64]
1799	run_dump_test_arches "mips16-pcrel-absolute-n64-sym32-4" \
1800					[mips_arch_list_matching mips16-64]
1801	run_dump_test_arches "mips16-pcrel-absolute-n64-sym32-6" \
1802					[mips_arch_list_matching mips16-64]
1803	run_dump_test_arches "mips16-pcrel-absolute-pic-n32-4" \
1804					[mips_arch_list_matching mips16-64]
1805	run_dump_test_arches "mips16-pcrel-absolute-pic-n32-6" \
1806					[mips_arch_list_matching mips16-64]
1807	run_dump_test_arches "mips16-pcrel-absolute-pic-n64-4" \
1808					[mips_arch_list_matching mips16-64]
1809	run_dump_test_arches "mips16-pcrel-absolute-pic-n64-6" \
1810					[mips_arch_list_matching mips16-64]
1811	run_dump_test_arches "mips16-pcrel-absolute-pic-n64-sym32-4" \
1812					[mips_arch_list_matching mips16-64]
1813	run_dump_test_arches "mips16-pcrel-absolute-pic-n64-sym32-6" \
1814					[mips_arch_list_matching mips16-64]
1815    }
1816    run_dump_test "mips16-branch-reloc-0"
1817    run_dump_test "mips16-branch-reloc-1"
1818    run_dump_test "mips16-branch-reloc-2"
1819    run_dump_test "mips16-branch-reloc-3"
1820    run_dump_test "mips16-branch-reloc-4"
1821    run_dump_test "mips16-branch-reloc-5"
1822    run_dump_test "mips16-branch-addend-0"
1823    run_dump_test "mips16-branch-addend-1"
1824    run_dump_test "mips16-branch-addend-2"
1825    run_dump_test "mips16-branch-addend-3"
1826    run_dump_test "mips16-branch-addend-4"
1827    run_dump_test "mips16-branch-addend-5"
1828    run_dump_test "mips16-branch-absolute"
1829    run_dump_test "mips16-branch-absolute-1"
1830    run_dump_test "mips16-branch-absolute-2"
1831    run_dump_test "mips16-branch-absolute-addend"
1832    run_dump_test "mips16-branch-absolute-addend-1"
1833    if $has_newabi {
1834	run_dump_test "mips16-branch-absolute-n32"
1835	run_dump_test "mips16-branch-absolute-n32-1"
1836	run_dump_test "mips16-branch-absolute-n32-2"
1837	run_dump_test "mips16-branch-absolute-addend-n32"
1838	run_dump_test "mips16-branch-absolute-addend-n32-1"
1839	run_dump_test "mips16-branch-absolute-n64"
1840	run_dump_test "mips16-branch-absolute-n64-1"
1841	run_dump_test "mips16-branch-absolute-n64-2"
1842	run_dump_test "mips16-branch-absolute-addend-n64"
1843	run_dump_test "mips16-branch-absolute-addend-n64-1"
1844    }
1845    run_dump_test "mips16-absolute-reloc-0"
1846    run_dump_test "mips16-absolute-reloc-1"
1847    run_dump_test "mips16-absolute-reloc-2"
1848    run_dump_test "mips16-absolute-reloc-3"
1849
1850    run_dump_test_arches "attr-gnu-4-0" "-32" \
1851				    [mips_arch_list_matching mips1]
1852    if { $has_newabi } {
1853	run_dump_test_arches "attr-gnu-4-0" "-64" \
1854				    [mips_arch_list_matching mips3]
1855    }
1856    run_dump_test_arches "attr-gnu-4-0" "-mfp32 -32" \
1857				    [mips_arch_list_matching mips1 !mips32r6]
1858    run_dump_test_arches "attr-gnu-4-0" "-mfpxx -32" \
1859				    [mips_arch_list_matching mips2 !r5900]
1860    run_dump_test_arches "attr-gnu-4-0" "-mfp64 -32" \
1861				    [mips_arch_list_matching mips32r2]
1862    run_dump_test_arches "attr-gnu-4-0" "-mfp64 -mno-odd-spreg -32" \
1863				    [mips_arch_list_matching mips32r2]
1864    if { $has_newabi } {
1865	run_dump_test_arches "attr-gnu-4-0" "-mfp64 -64" \
1866				    [mips_arch_list_matching mips3]
1867    }
1868    run_dump_test_arches "attr-gnu-4-0" "-msingle-float -32" \
1869				    [mips_arch_list_matching mips1]
1870    if { $has_newabi } {
1871	run_dump_test_arches "attr-gnu-4-0" "-msingle-float -64" \
1872				    [mips_arch_list_matching mips3]
1873    }
1874    run_dump_test_arches "attr-gnu-4-0" "-msoft-float -32" \
1875				    [mips_arch_list_matching mips1]
1876    if { $has_newabi } {
1877	run_dump_test_arches "attr-gnu-4-0" "-msoft-float -64" \
1878				    [mips_arch_list_matching mips3]
1879    }
1880    run_dump_test_arches "attr-none-double" "-32" \
1881				    [mips_arch_list_matching mips1 !mips32r6]
1882    run_dump_test_arches "r6-attr-none-double" "-32" \
1883				    [mips_arch_list_matching mips32r6]
1884    if { $has_newabi } {
1885	run_dump_test_arches "attr-none-double" "-64" \
1886				    [mips_arch_list_matching mips3]
1887    }
1888    run_dump_test_arches "attr-none-o32-fpxx" \
1889				    [mips_arch_list_matching mips2 !r5900]
1890    run_dump_test_arches "attr-none-o32-fp64" \
1891				    [mips_arch_list_matching mips32r2]
1892    run_dump_test_arches "attr-none-o32-fp64-nooddspreg" \
1893				    [mips_arch_list_matching mips32r2]
1894    run_dump_test_arches "attr-none-single-float" "-32" \
1895				    [mips_arch_list_matching mips1]
1896    if { $has_newabi } {
1897	run_dump_test_arches "attr-none-single-float" "-64" \
1898				    [mips_arch_list_matching mips3]
1899    }
1900    run_dump_test_arches "attr-none-soft-float" "-32 -msoft-float" \
1901				    [mips_arch_list_matching mips1]
1902    if { $has_newabi } {
1903	run_dump_test_arches "attr-none-soft-float" "-64 -msoft-float" \
1904				    [mips_arch_list_matching mips3]
1905    }
1906
1907    run_list_test_arches "attr-gnu-4-1-mfp64" \
1908				    "-32 -mfp64 -mno-odd-spreg" \
1909				    [mips_arch_list_matching mips32r2]
1910    run_list_test_arches "attr-gnu-4-1-mfp64" "-32 -mfp64" \
1911				    [mips_arch_list_matching mips32r2]
1912    if { $has_newabi } {
1913	run_list_test_arches "attr-gnu-4-1-mfp32" "-64 -mfp32" \
1914				    [mips_arch_list_matching mips3 !mips64r6]
1915    }
1916    run_list_test_arches "attr-gnu-4-1-msingle-float" "-32 -msingle-float" \
1917				    [mips_arch_list_matching mips1]
1918    run_list_test_arches "attr-gnu-4-1-msoft-float" "-32 -msoft-float" \
1919				    [mips_arch_list_matching mips1]
1920    run_dump_test_arches "attr-gnu-4-1" "-32 -mfpxx" \
1921				    [mips_arch_list_matching mips2 !r5900]
1922    run_dump_test_arches "attr-gnu-4-1" "-32 -mfp32" \
1923				    [mips_arch_list_matching mips1 !mips32r6]
1924    if { $has_newabi } {
1925	run_dump_test_arches "attr-gnu-4-1" "-64 -mfp64" \
1926				    [mips_arch_list_matching mips3]
1927    }
1928
1929    run_list_test_arches "attr-gnu-4-2-mdouble-float" "-32 -mfp32" \
1930				    [mips_arch_list_matching mips1 !mips32r6]
1931    run_list_test_arches "attr-gnu-4-2-mdouble-float" "-32 -mfpxx" \
1932				    [mips_arch_list_matching mips2 !r5900]
1933    run_list_test_arches "attr-gnu-4-2-mdouble-float" "-32 -mfp64" \
1934				    [mips_arch_list_matching mips32r2]
1935    run_list_test_arches "attr-gnu-4-2-mdouble-float" \
1936				    "-32 -mfp64 -mno-odd-spreg" \
1937				    [mips_arch_list_matching mips32r2]
1938    if { $has_newabi } {
1939	run_list_test_arches "attr-gnu-4-2-mdouble-float" "-64 -mfp64" \
1940				    [mips_arch_list_matching mips3]
1941    }
1942    run_list_test_arches "attr-gnu-4-2-msoft-float" "-32 -msoft-float" \
1943				    [mips_arch_list_matching mips1]
1944    run_dump_test_arches "attr-gnu-4-2" "-32" \
1945				    [mips_arch_list_matching mips1]
1946    if { $has_newabi } {
1947	run_dump_test_arches "attr-gnu-4-2" "-64" \
1948				    [mips_arch_list_matching mips3]
1949    }
1950
1951    run_list_test_arches "attr-gnu-4-3-mhard-float" "-32 -mfp32" \
1952				    [mips_arch_list_matching mips1 !mips32r6]
1953    run_list_test_arches "attr-gnu-4-3-mhard-float" "-32 -mfpxx" \
1954				    [mips_arch_list_matching mips2 !r5900]
1955    run_list_test_arches "attr-gnu-4-3-mhard-float" "-32 -mfp64" \
1956				    [mips_arch_list_matching mips32r2]
1957    run_list_test_arches "attr-gnu-4-3-mhard-float" \
1958				    "-32 -mfp64 -mno-odd-spreg" \
1959				    [mips_arch_list_matching mips32r2]
1960    if { $has_newabi } {
1961	run_list_test_arches "attr-gnu-4-3-mhard-float" "-64 -mfp64" \
1962				    [mips_arch_list_matching mips3]
1963    }
1964    run_list_test_arches "attr-gnu-4-3-mhard-float" "-32 -msingle-float" \
1965				    [mips_arch_list_matching mips1]
1966    run_dump_test_arches "attr-gnu-4-3" "-32" \
1967				    [mips_arch_list_matching mips1]
1968    if { $has_newabi } {
1969	run_dump_test_arches "attr-gnu-4-3" "-64" \
1970				    [mips_arch_list_matching mips3]
1971    }
1972
1973    run_list_test_arches "attr-gnu-4-4" "-32 -mfp32" \
1974				    [mips_arch_list_matching mips1 !mips32r6]
1975    run_list_test_arches "attr-gnu-4-4" "-32 -mfpxx" \
1976				    [mips_arch_list_matching mips2 !r5900]
1977    run_list_test_arches "attr-gnu-4-4" "-32 -mfp64" \
1978				    [mips_arch_list_matching mips32r2]
1979    run_list_test_arches "attr-gnu-4-4" "-32 -mfp64 -mno-odd-spreg" \
1980				    [mips_arch_list_matching mips32r2]
1981    if { $has_newabi } {
1982	run_list_test_arches "attr-gnu-4-4" "-64 -mfp64" \
1983				    [mips_arch_list_matching mips3]
1984    }
1985    run_list_test_arches "attr-gnu-4-4" "-32 -msingle-float" \
1986				    [mips_arch_list_matching mips1]
1987    run_list_test_arches "attr-gnu-4-4" "-32 -msoft-float" \
1988				    [mips_arch_list_matching mips1]
1989
1990    run_list_test_arches "attr-gnu-4-5" "-32 -mfp32" \
1991				    [mips_arch_list_matching mips1 !mips32r6]
1992    run_list_test_arches "attr-gnu-4-5" "-32 -mfp64" \
1993				    [mips_arch_list_matching mips32r2]
1994    run_list_test_arches "attr-gnu-4-5" "-32 -mfp64 -mno-odd-spreg" \
1995				    [mips_arch_list_matching mips32r2]
1996    if { $has_newabi } {
1997	run_list_test_arches "attr-gnu-4-5-64" "-64 -mfp64" \
1998				    [mips_arch_list_matching mips3]
1999    }
2000    run_list_test_arches "attr-gnu-4-5-msingle-float" "-32 -msingle-float" \
2001				    [mips_arch_list_matching mips1]
2002    run_list_test_arches "attr-gnu-4-5-msoft-float" "-32 -msoft-float" \
2003				    [mips_arch_list_matching mips1]
2004    run_dump_test_arches "attr-gnu-4-5" \
2005				    [mips_arch_list_matching mips2 !r5900]
2006
2007    run_list_test_arches "attr-gnu-4-6" "-32 -mfp32" \
2008				    [mips_arch_list_matching mips1 !mips32r6]
2009    run_list_test_arches "attr-gnu-4-6-noodd" "-32 -mfp64 -mno-odd-spreg" \
2010				    [mips_arch_list_matching mips32r2]
2011    if { $has_newabi } {
2012	run_list_test_arches "attr-gnu-4-6-64" "-64 -mfp64" \
2013				    [mips_arch_list_matching mips3]
2014    }
2015    run_list_test_arches "attr-gnu-4-6-msingle-float" "-32 -msingle-float" \
2016				    [mips_arch_list_matching mips1]
2017    run_list_test_arches "attr-gnu-4-6-msoft-float" "-32 -msoft-float" \
2018				    [mips_arch_list_matching mips1]
2019    run_list_test_arches "attr-gnu-4-6" "-32 -mfpxx" \
2020				    [mips_arch_list_matching mips2 !r5900]
2021    run_dump_test_arches "attr-gnu-4-6" "-32 -mfp64" \
2022				    [mips_arch_list_matching mips32r2]
2023
2024    run_list_test_arches "attr-gnu-4-7" "-32 -mfp32" \
2025				    [mips_arch_list_matching mips1 !mips32r6]
2026    run_list_test_arches "attr-gnu-4-7-odd" "-32 -mfp64" \
2027				    [mips_arch_list_matching mips32r2]
2028    if { $has_newabi } {
2029	run_list_test_arches "attr-gnu-4-7-64" "-64 -mfp64" \
2030				    [mips_arch_list_matching mips3]
2031    }
2032    run_list_test_arches "attr-gnu-4-7-msingle-float" "-32 -msingle-float" \
2033				    [mips_arch_list_matching mips1]
2034    run_list_test_arches "attr-gnu-4-7-msoft-float" "-32 -msoft-float" \
2035				    [mips_arch_list_matching mips1]
2036    run_list_test_arches "attr-gnu-4-7" "-32 -mfpxx" \
2037				    [mips_arch_list_matching mips2 !r5900]
2038    run_dump_test_arches "attr-gnu-4-7" "-32 -mfp64 -mno-odd-spreg" \
2039				    [mips_arch_list_matching mips32r2]
2040
2041    run_dump_test "attr-gnu-abi-fp-1"
2042    run_dump_test "attr-gnu-abi-msa-1"
2043
2044    run_dump_test "module-override"
2045    run_dump_test "module-defer-warn1"
2046    run_list_test "module-defer-warn2" "-32"
2047
2048    foreach testopt [list -mfp32 -mfpxx -mfp64 "-mfp64-noodd" \
2049			  -msingle-float -msoft-float] {
2050      foreach cmdopt [list -mfp32 -mfpxx -mfp64 "-mfp64 -mno-odd-spreg" \
2051			   -msingle-float -msoft-float] {
2052        run_dump_test "module${testopt}" \
2053			    [list [list as $cmdopt] [list name ($cmdopt)]]
2054      }
2055    }
2056
2057    run_dump_test "module-set-mfpxx"
2058    run_list_test_arches "fpxx-oddfpreg" "-32 -mfpxx" \
2059			[mips_arch_list_matching mips2 !singlefloat]
2060    run_list_test_arches "fpxx-oddfpreg" "-32 -mfpxx -mno-odd-spreg" \
2061			[mips_arch_list_matching mips2 !singlefloat]
2062    run_dump_test_arches "fpxx-oddfpreg" \
2063			[mips_arch_list_matching oddspreg]
2064    run_dump_test_arches "odd-spreg" "-mfp32" [mips_arch_list_matching oddspreg]
2065    run_dump_test_arches "odd-spreg" "-mfpxx" [mips_arch_list_matching oddspreg]
2066    run_dump_test_arches "odd-spreg" "-mfp64" [mips_arch_list_matching mips32r2]
2067    run_dump_test_arches "no-odd-spreg" "-mfp32" [mips_arch_list_matching mips1 \
2068							!mips32r6]
2069    run_dump_test_arches "no-odd-spreg" "-mfpxx" [mips_arch_list_matching mips2 !r5900]
2070    run_dump_test_arches "no-odd-spreg" "-mfp64" [mips_arch_list_matching mips32r2]
2071    run_dump_test "module-check"
2072    run_list_test "module-check-warn" "-32"
2073
2074    run_dump_test "li-d"
2075
2076    run_dump_test "option-pic-1"
2077    run_list_test "option-pic-2" "" \
2078	"MIPS invalid PIC option"
2079    run_list_test "option-pic-vxworks-1" "-mvxworks-pic" \
2080	"MIPS invalid PIC option in VxWorks PIC"
2081    run_list_test "option-pic-vxworks-2" "-mvxworks-pic" \
2082	"MIPS invalid switch to SVR4 PIC from VxWorks PIC"
2083    run_dump_test "option-pic-relax-0"
2084    run_dump_test "option-pic-relax-1"
2085    run_dump_test "option-pic-relax-2"
2086    run_dump_test "option-pic-relax-3"
2087    run_dump_test "option-pic-relax-3a"
2088    run_dump_test "option-pic-relax-4"
2089    run_dump_test "option-pic-relax-5"
2090
2091    run_dump_test_arches "isa-override-1" "" [mips_arch_list_matching mips1]
2092    run_dump_test_arches "isa-override-2" "" [mips_arch_list_matching mips1]
2093
2094    run_dump_test "debug-label-end-1"
2095    run_dump_test "debug-label-end-2"
2096    run_dump_test "debug-label-end-3"
2097
2098    run_dump_test "org-1"
2099    run_dump_test "org-2"
2100    run_dump_test "org-3"
2101    run_dump_test "org-4"
2102    run_dump_test "org-5"
2103    run_dump_test "org-6"
2104    run_dump_test "org-7"
2105    run_dump_test "org-8"
2106    run_dump_test "org-9"
2107    run_dump_test "org-10"
2108    run_dump_test "org-11"
2109    run_dump_test "org-12"
2110
2111    run_dump_test_arches "stabs-symbol-type" [mips_arch_list_all]
2112
2113    run_dump_test_arches "r6"		[mips_arch_list_matching mips32r6]
2114    if $has_newabi {
2115	run_dump_test_arches "r6-n32"	[mips_arch_list_matching mips64r6]
2116	run_dump_test_arches "r6-n64"	[mips_arch_list_matching mips64r6]
2117	run_dump_test_arches "r6-64-n32"	[mips_arch_list_matching mips64r6]
2118	run_dump_test_arches "r6-64-n64"	[mips_arch_list_matching mips64r6]
2119	run_list_test_arches "ldpc-unalign" "-64" [mips_arch_list_matching mips64r6]
2120    }
2121    run_list_test_arches "r6-removed"	"-32" [mips_arch_list_matching mips32r6]
2122    run_list_test_arches "r6-64-removed"	[mips_arch_list_matching mips64r6]
2123
2124    run_list_test_arches "r6-reg-constraints"  "-32" \
2125			[mips_arch_list_matching mips32r6]
2126
2127    run_dump_test_arches "crc"		[mips_arch_list_matching mips32r6]
2128    run_dump_test_arches "crc-err"	[mips_arch_list_matching mips32r6]
2129    run_dump_test_arches "crc64"	[mips_arch_list_matching mips64r6]
2130    run_dump_test_arches "crc64-err"	[mips_arch_list_matching mips64r6]
2131
2132    run_dump_test_arches "ginv"	[mips_arch_list_matching mips32r6]
2133    run_dump_test_arches "ginv-err"	[mips_arch_list_matching mips32r6]
2134
2135    run_dump_test_arches "llpscp-32" [mips_arch_list_matching mips32r6]
2136    run_dump_test_arch "llpscp-64" "" mips64r6
2137
2138    run_dump_test "pr14798${imips}"
2139    run_dump_test "insn-isa-mode"
2140    run_dump_test "insn-isa-mode"
2141    run_dump_test "global-local-symtab-o32${tmips}"
2142    run_dump_test "global-local-symtab-sort-o32${tmips}"
2143    if $has_newabi {
2144	run_dump_test "global-local-symtab-n32${tmips}"
2145	run_dump_test "global-local-symtab-n64"
2146	run_dump_test "global-local-symtab-sort-n32${tmips}"
2147	run_dump_test "global-local-symtab-sort-n64${tmips}"
2148    }
2149}
2150