* gas/mips: New directory with MIPS specific test cases.
authorIan Lance Taylor <ian@airs.com>
Fri, 23 Sep 1994 19:10:21 +0000 (19:10 +0000)
committerIan Lance Taylor <ian@airs.com>
Fri, 23 Sep 1994 19:10:21 +0000 (19:10 +0000)
30 files changed:
gas/testsuite/gas/.Sanitize
gas/testsuite/gas/mips/.Sanitize [new file with mode: 0644]
gas/testsuite/gas/mips/abs.s [new file with mode: 0644]
gas/testsuite/gas/mips/beq.d [new file with mode: 0644]
gas/testsuite/gas/mips/beq.s [new file with mode: 0644]
gas/testsuite/gas/mips/bge.s [new file with mode: 0644]
gas/testsuite/gas/mips/bgeu.s [new file with mode: 0644]
gas/testsuite/gas/mips/blt.s [new file with mode: 0644]
gas/testsuite/gas/mips/bltu.s [new file with mode: 0644]
gas/testsuite/gas/mips/div.s [new file with mode: 0644]
gas/testsuite/gas/mips/jal.s [new file with mode: 0644]
gas/testsuite/gas/mips/la.s [new file with mode: 0644]
gas/testsuite/gas/mips/lb.s [new file with mode: 0644]
gas/testsuite/gas/mips/ld.d [new file with mode: 0644]
gas/testsuite/gas/mips/ld.s [new file with mode: 0644]
gas/testsuite/gas/mips/lifloat.d [new file with mode: 0644]
gas/testsuite/gas/mips/lifloat.s [new file with mode: 0644]
gas/testsuite/gas/mips/mul.d [new file with mode: 0644]
gas/testsuite/gas/mips/mul.s [new file with mode: 0644]
gas/testsuite/gas/mips/rol.s [new file with mode: 0644]
gas/testsuite/gas/mips/sb.s [new file with mode: 0644]
gas/testsuite/gas/mips/trunc.s [new file with mode: 0644]
gas/testsuite/gas/mips/ulh.d [new file with mode: 0644]
gas/testsuite/gas/mips/ulh.s [new file with mode: 0644]
gas/testsuite/gas/mips/ulw.d [new file with mode: 0644]
gas/testsuite/gas/mips/ulw.s [new file with mode: 0644]
gas/testsuite/gas/mips/ush.d [new file with mode: 0644]
gas/testsuite/gas/mips/ush.s [new file with mode: 0644]
gas/testsuite/gas/mips/usw.d [new file with mode: 0644]
gas/testsuite/gas/mips/usw.s [new file with mode: 0644]

index 045897eca9de4662df079a34f6719e51e5ed52f7..5bb71212c0ba8f5fc62f177997e4fbb68eb722b7 100644 (file)
@@ -34,6 +34,7 @@ i386
 ieee.fp
 m68k
 m68k-coff
+mips
 sparc-solaris
 sun4
 template
diff --git a/gas/testsuite/gas/mips/.Sanitize b/gas/testsuite/gas/mips/.Sanitize
new file mode 100644 (file)
index 0000000..cea0618
--- /dev/null
@@ -0,0 +1,81 @@
+# Sanitize.in for devo.
+# $Id$
+#
+
+# Each directory to survive it's way into a release will need a file
+# like this one called "./.Sanitize".  All keyword lines must exist,
+# and must exist in the order specified by this file.  Each directory
+# in the tree will be processed, top down, in the following order.
+
+# Hash started lines like this one are comments and will be deleted
+# before anything else is done.  Blank lines will also be squashed
+# out.
+
+# The lines between the "Do-first:" line and the "Things-to-keep:"
+# line are executed as a /bin/sh shell script before anything else is
+# done in this 
+
+Do-first:
+
+
+# All files listed between the "Things-to-keep:" line and the
+# "Files-to-sed:" line will be kept.  All other files will be removed.
+# Directories listed in this section will have their own Sanitize
+# called.  Directories not listed will be removed in their entirety
+# with rm -rf.
+
+Things-to-keep:
+
+abs.d
+abs.s
+add.d
+add.s
+and.d
+and.s
+beq.d
+beq.s
+bge.d
+bge.s
+bgeu.d
+bgeu.s
+blt.d
+blt.s
+bltu.d
+bltu.s
+div.d
+div.s
+jal.d
+jal.s
+la.d
+la.s
+lb.d
+lb.s
+ld.d
+ld.s
+li.d
+li.s
+lifloat.d
+lifloat.s
+mips.exp
+mul.d
+mul.s
+rol.d
+rol.s
+sb.d
+sb.s
+trunc.d
+trunc.s
+ulh.d
+ulh.s
+ulw.d
+ulw.s
+ush.d
+ush.s
+usw.d
+usw.s
+
+Things-to-lose:
+
+Do-last:
+
+# End of file.
diff --git a/gas/testsuite/gas/mips/abs.s b/gas/testsuite/gas/mips/abs.s
new file mode 100644 (file)
index 0000000..a2ae06e
--- /dev/null
@@ -0,0 +1,4 @@
+# Source file used to test the abs macro.
+       
+       abs     $4
+       abs     $4,$5
diff --git a/gas/testsuite/gas/mips/beq.d b/gas/testsuite/gas/mips/beq.d
new file mode 100644 (file)
index 0000000..64f8107
--- /dev/null
@@ -0,0 +1,34 @@
+#objdump: -dr
+#name: beq
+
+# Test the beq macro.
+
+.*: +file format .*mips.*
+
+Disassembly of section .text:
+0+0000 <[^>]*> beq \$a0,\$a1,0+0000 <text_label>
+...
+0+0008 <[^>]*> beqz \$a0,0+0000 <text_label>
+...
+0+0010 <[^>]*> li \$at,1
+0+0014 <[^>]*> beq \$a0,\$at,0+0000 <text_label>
+...
+0+001c <[^>]*> li \$at,32768
+0+0020 <[^>]*> beq \$a0,\$at,0+0000 <text_label>
+...
+0+0028 <[^>]*> li \$at,-32768
+0+002c <[^>]*> beq \$a0,\$at,0+0000 <text_label>
+...
+0+0034 <[^>]*> lui \$at,1
+0+0038 <[^>]*> beq \$a0,\$at,0+0000 <text_label>
+...
+0+0040 <[^>]*> lui \$at,1
+0+0044 <[^>]*> ori \$at,\$at,42405
+0+0048 <[^>]*> beq \$a0,\$at,0+0000 <text_label>
+...
+0+0050 <[^>]*> bnez \$a0,0+0000 <text_label>
+...
+0+0058 <[^>]*> beqzl \$a0,0+0000 <text_label>
+...
+0+0060 <[^>]*> bnezl \$a0,0+0000 <text_label>
+...
diff --git a/gas/testsuite/gas/mips/beq.s b/gas/testsuite/gas/mips/beq.s
new file mode 100644 (file)
index 0000000..2525026
--- /dev/null
@@ -0,0 +1,18 @@
+# Source file used to test the beq macro.
+       
+text_label:    
+       beq     $4,$5,text_label
+       beq     $4,0,text_label
+       beq     $4,1,text_label
+       beq     $4,0x8000,text_label
+       beq     $4,-0x8000,text_label
+       beq     $4,0x10000,text_label
+       beq     $4,0x1a5a5,text_label
+
+# bne is handled by the same code as beq.  Just sanity check.
+       bne     $4,0,text_label
+
+# Sanity check beql and bnel
+       .set    mips2
+       beql    $4,0,text_label
+       bnel    $4,0,text_label
diff --git a/gas/testsuite/gas/mips/bge.s b/gas/testsuite/gas/mips/bge.s
new file mode 100644 (file)
index 0000000..a1c08b2
--- /dev/null
@@ -0,0 +1,25 @@
+# Source file used to test the bge macro.
+       
+text_label:    
+       bge     $4,$5,text_label
+       bge     $4,$0,text_label
+       bge     $0,$5,text_label
+       bge     $4,0,text_label
+       bge     $4,1,text_label
+       bge     $4,2,text_label
+       bge     $4,0x8000,text_label
+       bge     $4,-0x8000,text_label
+       bge     $4,0x10000,text_label
+       bge     $4,0x1a5a5,text_label
+
+# bgt is handled like bge, except when both arguments are registers.
+# Just sanity check it otherwise.
+       bgt     $4,$5,text_label
+       bgt     $4,$0,text_label
+       bgt     $0,$5,text_label
+       bgt     $4,0,text_label
+
+# Sanity test bgel and bgtl
+       .set    mips2
+       bgel    $4,$5,text_label
+       bgtl    $4,$5,text_label
diff --git a/gas/testsuite/gas/mips/bgeu.s b/gas/testsuite/gas/mips/bgeu.s
new file mode 100644 (file)
index 0000000..1ba3b29
--- /dev/null
@@ -0,0 +1,23 @@
+# Source file used to test the bgeu macro.
+       
+text_label:    
+       bgeu    $4,$5,text_label
+       bgeu    $0,$5,text_label
+       # A second argument of 0 or $0 is always true
+       bgeu    $4,1,text_label
+       bgeu    $4,2,text_label
+       bgeu    $4,0x8000,text_label
+       bgeu    $4,-0x8000,text_label
+       bgeu    $4,0x10000,text_label
+       bgeu    $4,0x1a5a5,text_label
+
+# bgtu is handled like bgeu, except when both arguments are registers.
+# Just sanity check it otherwise.
+       bgtu    $4,$5,text_label
+       bgtu    $4,$0,text_label
+       bgtu    $4,0,text_label
+
+# Sanity test bgeul and bgtul
+       .set    mips2
+       bgeul   $4,$5,text_label
+       bgtul   $4,$5,text_label
diff --git a/gas/testsuite/gas/mips/blt.s b/gas/testsuite/gas/mips/blt.s
new file mode 100644 (file)
index 0000000..ffa8b1f
--- /dev/null
@@ -0,0 +1,25 @@
+# Source file used to test the blt macro.
+       
+text_label:    
+       blt     $4,$5,text_label
+       blt     $4,$0,text_label
+       blt     $0,$5,text_label
+       blt     $4,0,text_label
+       blt     $4,1,text_label
+       blt     $4,2,text_label
+       blt     $4,0x8000,text_label
+       blt     $4,-0x8000,text_label
+       blt     $4,0x10000,text_label
+       blt     $4,0x1a5a5,text_label
+
+# ble is handled like blt, except when both arguments are registers.
+# Just sanity check it otherwise.
+       ble     $4,$5,text_label
+       ble     $4,$0,text_label
+       ble     $0,$5,text_label
+       ble     $4,0,text_label
+
+# Sanity test bltl and blel
+       .set    mips2
+       bltl    $4,$5,text_label
+       blel    $4,$5,text_label
diff --git a/gas/testsuite/gas/mips/bltu.s b/gas/testsuite/gas/mips/bltu.s
new file mode 100644 (file)
index 0000000..1fbed16
--- /dev/null
@@ -0,0 +1,23 @@
+# Source file used to test the bltu macro.
+       
+text_label:    
+       bltu    $4,$5,text_label
+       bltu    $0,$5,text_label
+       # A second argument of 0 or $0 is always false
+       bltu    $4,1,text_label
+       bltu    $4,2,text_label
+       bltu    $4,0x8000,text_label
+       bltu    $4,-0x8000,text_label
+       bltu    $4,0x10000,text_label
+       bltu    $4,0x1a5a5,text_label
+
+# bleu is handled like bltu, except when both arguments are registers.
+# Just sanity check it otherwise.
+       bleu    $4,$5,text_label
+       bleu    $4,$0,text_label
+       bleu    $4,0,text_label
+
+# Sanity test bltul and bleul
+       .set    mips2
+       bltul   $4,$5,text_label
+       bleul   $4,$5,text_label
diff --git a/gas/testsuite/gas/mips/div.s b/gas/testsuite/gas/mips/div.s
new file mode 100644 (file)
index 0000000..0d1b67a
--- /dev/null
@@ -0,0 +1,37 @@
+# Source file used to test the div macro.
+       
+       div     $0,$4,$5
+       div     $4,$5
+       div     $4,$5,$6
+       div     $4,1
+       div     $4,$5,1
+       div     $4,-1
+       div     $4,$5,-1
+       div     $4,2
+       div     $4,$5,2
+       div     $4,0x8000
+       div     $4,$5,0x8000
+       div     $4,-0x8000
+       div     $4,$5,-0x8000
+       div     $4,0x10000
+       div     $4,$5,0x10000
+       div     $4,0x1a5a5
+       div     $4,$5,0x1a5a5
+
+# divu is like div, except when both arguments are registers.
+# Just sanity check it otherwise.
+       divu    $0,$4,$5
+       divu    $4,$5
+       divu    $4,$5,$6
+       divu    $4,1
+
+# rem is like div, remu is like divu
+       rem     $4,$5,$6
+       remu    $4,$5,2
+
+# Sanity check the 64 bit versions.
+       .set    mips3
+       ddiv    $4,$5,$6
+       ddivu   $4,$5,2
+       drem    $4,$5,0x8000
+       dremu   $4,$5,-0x8000
diff --git a/gas/testsuite/gas/mips/jal.s b/gas/testsuite/gas/mips/jal.s
new file mode 100644 (file)
index 0000000..eab4e1d
--- /dev/null
@@ -0,0 +1,11 @@
+# Source file used to test the jal macro.
+       
+text_label:    
+       jal     $25
+       jal     $4,$25
+       jal     text_label
+       jal     external_text_label
+       
+# Test j as well       
+       j       text_label
+       j       external_text_label
diff --git a/gas/testsuite/gas/mips/la.s b/gas/testsuite/gas/mips/la.s
new file mode 100644 (file)
index 0000000..0a2b08b
--- /dev/null
@@ -0,0 +1,108 @@
+# Source file used to test the la macro.
+       
+       .data
+data_label:
+       .extern big_external_data_label,1000
+       .extern small_external_data_label,1
+       .comm big_external_common,1000
+       .comm small_external_common,1
+       .lcomm big_local_common,1000
+       .lcomm small_local_common,1
+       
+       .text
+       la      $4,0
+       la      $4,1
+       la      $4,0x8000
+       la      $4,-0x8000
+       la      $4,0x10000
+       la      $4,0x1a5a5
+       la      $4,0($5)
+       la      $4,1($5)
+       la      $4,0x8000($5)
+       la      $4,-0x8000($5)
+       la      $4,0x10000($5)
+       la      $4,0x1a5a5($5)
+       la      $4,data_label
+       la      $4,big_external_data_label
+       la      $4,small_external_data_label
+       la      $4,big_external_common
+       la      $4,small_external_common
+       la      $4,big_local_common
+       la      $4,small_local_common
+       la      $4,data_label+1
+       la      $4,big_external_data_label+1
+       la      $4,small_external_data_label+1
+       la      $4,big_external_common+1
+       la      $4,small_external_common+1
+       la      $4,big_local_common+1
+       la      $4,small_local_common+1
+       la      $4,data_label+0x8000
+       la      $4,big_external_data_label+0x8000
+       la      $4,small_external_data_label+0x8000
+       la      $4,big_external_common+0x8000
+       la      $4,small_external_common+0x8000
+       la      $4,big_local_common+0x8000
+       la      $4,small_local_common+0x8000
+       la      $4,data_label-0x8000
+       la      $4,big_external_data_label-0x8000
+       la      $4,small_external_data_label-0x8000
+       la      $4,big_external_common-0x8000
+       la      $4,small_external_common-0x8000
+       la      $4,big_local_common-0x8000
+       la      $4,small_local_common-0x8000
+       la      $4,data_label+0x10000
+       la      $4,big_external_data_label+0x10000
+       la      $4,small_external_data_label+0x10000
+       la      $4,big_external_common+0x10000
+       la      $4,small_external_common+0x10000
+       la      $4,big_local_common+0x10000
+       la      $4,small_local_common+0x10000
+       la      $4,data_label+0x1a5a5
+       la      $4,big_external_data_label+0x1a5a5
+       la      $4,small_external_data_label+0x1a5a5
+       la      $4,big_external_common+0x1a5a5
+       la      $4,small_external_common+0x1a5a5
+       la      $4,big_local_common+0x1a5a5
+       la      $4,small_local_common+0x1a5a5
+       la      $4,data_label($5)
+       la      $4,big_external_data_label($5)
+       la      $4,small_external_data_label($5)
+       la      $4,big_external_common($5)
+       la      $4,small_external_common($5)
+       la      $4,big_local_common($5)
+       la      $4,small_local_common($5)
+       la      $4,data_label+1($5)
+       la      $4,big_external_data_label+1($5)
+       la      $4,small_external_data_label+1($5)
+       la      $4,big_external_common+1($5)
+       la      $4,small_external_common+1($5)
+       la      $4,big_local_common+1($5)
+       la      $4,small_local_common+1($5)
+       la      $4,data_label+0x8000($5)
+       la      $4,big_external_data_label+0x8000($5)
+       la      $4,small_external_data_label+0x8000($5)
+       la      $4,big_external_common+0x8000($5)
+       la      $4,small_external_common+0x8000($5)
+       la      $4,big_local_common+0x8000($5)
+       la      $4,small_local_common+0x8000($5)
+       la      $4,data_label-0x8000($5)
+       la      $4,big_external_data_label-0x8000($5)
+       la      $4,small_external_data_label-0x8000($5)
+       la      $4,big_external_common-0x8000($5)
+       la      $4,small_external_common-0x8000($5)
+       la      $4,big_local_common-0x8000($5)
+       la      $4,small_local_common-0x8000($5)
+       la      $4,data_label+0x10000($5)
+       la      $4,big_external_data_label+0x10000($5)
+       la      $4,small_external_data_label+0x10000($5)
+       la      $4,big_external_common+0x10000($5)
+       la      $4,small_external_common+0x10000($5)
+       la      $4,big_local_common+0x10000($5)
+       la      $4,small_local_common+0x10000($5)
+       la      $4,data_label+0x1a5a5($5)
+       la      $4,big_external_data_label+0x1a5a5($5)
+       la      $4,small_external_data_label+0x1a5a5($5)
+       la      $4,big_external_common+0x1a5a5($5)
+       la      $4,small_external_common+0x1a5a5($5)
+       la      $4,big_local_common+0x1a5a5($5)
+       la      $4,small_local_common+0x1a5a5($5)
diff --git a/gas/testsuite/gas/mips/lb.s b/gas/testsuite/gas/mips/lb.s
new file mode 100644 (file)
index 0000000..1170a65
--- /dev/null
@@ -0,0 +1,120 @@
+# Source file used to test the lb macro.
+       
+       .data
+data_label:
+       .extern big_external_data_label,1000
+       .extern small_external_data_label,1
+       .comm big_external_common,1000
+       .comm small_external_common,1
+       .lcomm big_local_common,1000
+       .lcomm small_local_common,1
+       
+       .text
+       lb      $4,0
+       lb      $4,1
+       lb      $4,0x8000
+       lb      $4,-0x8000
+       lb      $4,0x10000
+       lb      $4,0x1a5a5
+       lb      $4,0($5)
+       lb      $4,1($5)
+       lb      $4,0x8000($5)
+       lb      $4,-0x8000($5)
+       lb      $4,0x10000($5)
+       lb      $4,0x1a5a5($5)
+       lb      $4,data_label
+       lb      $4,big_external_data_label
+       lb      $4,small_external_data_label
+       lb      $4,big_external_common
+       lb      $4,small_external_common
+       lb      $4,big_local_common
+       lb      $4,small_local_common
+       lb      $4,data_label+1
+       lb      $4,big_external_data_label+1
+       lb      $4,small_external_data_label+1
+       lb      $4,big_external_common+1
+       lb      $4,small_external_common+1
+       lb      $4,big_local_common+1
+       lb      $4,small_local_common+1
+       lb      $4,data_label+0x8000
+       lb      $4,big_external_data_label+0x8000
+       lb      $4,small_external_data_label+0x8000
+       lb      $4,big_external_common+0x8000
+       lb      $4,small_external_common+0x8000
+       lb      $4,big_local_common+0x8000
+       lb      $4,small_local_common+0x8000
+       lb      $4,data_label-0x8000
+       lb      $4,big_external_data_label-0x8000
+       lb      $4,small_external_data_label-0x8000
+       lb      $4,big_external_common-0x8000
+       lb      $4,small_external_common-0x8000
+       lb      $4,big_local_common-0x8000
+       lb      $4,small_local_common-0x8000
+       lb      $4,data_label+0x10000
+       lb      $4,big_external_data_label+0x10000
+       lb      $4,small_external_data_label+0x10000
+       lb      $4,big_external_common+0x10000
+       lb      $4,small_external_common+0x10000
+       lb      $4,big_local_common+0x10000
+       lb      $4,small_local_common+0x10000
+       lb      $4,data_label+0x1a5a5
+       lb      $4,big_external_data_label+0x1a5a5
+       lb      $4,small_external_data_label+0x1a5a5
+       lb      $4,big_external_common+0x1a5a5
+       lb      $4,small_external_common+0x1a5a5
+       lb      $4,big_local_common+0x1a5a5
+       lb      $4,small_local_common+0x1a5a5
+       lb      $4,data_label($5)
+       lb      $4,big_external_data_label($5)
+       lb      $4,small_external_data_label($5)
+       lb      $4,big_external_common($5)
+       lb      $4,small_external_common($5)
+       lb      $4,big_local_common($5)
+       lb      $4,small_local_common($5)
+       lb      $4,data_label+1($5)
+       lb      $4,big_external_data_label+1($5)
+       lb      $4,small_external_data_label+1($5)
+       lb      $4,big_external_common+1($5)
+       lb      $4,small_external_common+1($5)
+       lb      $4,big_local_common+1($5)
+       lb      $4,small_local_common+1($5)
+       lb      $4,data_label+0x8000($5)
+       lb      $4,big_external_data_label+0x8000($5)
+       lb      $4,small_external_data_label+0x8000($5)
+       lb      $4,big_external_common+0x8000($5)
+       lb      $4,small_external_common+0x8000($5)
+       lb      $4,big_local_common+0x8000($5)
+       lb      $4,small_local_common+0x8000($5)
+       lb      $4,data_label-0x8000($5)
+       lb      $4,big_external_data_label-0x8000($5)
+       lb      $4,small_external_data_label-0x8000($5)
+       lb      $4,big_external_common-0x8000($5)
+       lb      $4,small_external_common-0x8000($5)
+       lb      $4,big_local_common-0x8000($5)
+       lb      $4,small_local_common-0x8000($5)
+       lb      $4,data_label+0x10000($5)
+       lb      $4,big_external_data_label+0x10000($5)
+       lb      $4,small_external_data_label+0x10000($5)
+       lb      $4,big_external_common+0x10000($5)
+       lb      $4,small_external_common+0x10000($5)
+       lb      $4,big_local_common+0x10000($5)
+       lb      $4,small_local_common+0x10000($5)
+       lb      $4,data_label+0x1a5a5($5)
+       lb      $4,big_external_data_label+0x1a5a5($5)
+       lb      $4,small_external_data_label+0x1a5a5($5)
+       lb      $4,big_external_common+0x1a5a5($5)
+       lb      $4,small_external_common+0x1a5a5($5)
+       lb      $4,big_local_common+0x1a5a5($5)
+       lb      $4,small_local_common+0x1a5a5($5)
+
+# Several macros are handled like lb.  Sanity check them.
+       lbu     $4,0
+       lh      $4,0
+       lhu     $4,0
+       lw      $4,0
+       lwl     $4,0
+       lwr     $4,0
+       lwc0    $4,0
+       lwc1    $4,0
+       lwc2    $4,0
+       lwc3    $4,0
diff --git a/gas/testsuite/gas/mips/ld.d b/gas/testsuite/gas/mips/ld.d
new file mode 100644 (file)
index 0000000..9f9ac95
--- /dev/null
@@ -0,0 +1,650 @@
+#objdump: -dr
+#name: ld
+
+# Test the ld macro.
+
+.*: +file format .*mips.*
+
+Disassembly of section .text:
+0+0000 <[^>]*> lw \$a0,0\(\$zero\)
+0+0004 <[^>]*> lw \$a1,4\(\$zero\)
+0+0008 <[^>]*> lw \$a0,1\(\$zero\)
+0+000c <[^>]*> lw \$a1,5\(\$zero\)
+0+0010 <[^>]*> lui \$at,1
+0+0014 <[^>]*> lw \$a0,-32768\(\$at\)
+0+0018 <[^>]*> lw \$a1,-32764\(\$at\)
+0+001c <[^>]*> lw \$a0,-32768\(\$zero\)
+0+0020 <[^>]*> lw \$a1,-32764\(\$zero\)
+0+0024 <[^>]*> lui \$at,1
+0+0028 <[^>]*> lw \$a0,0\(\$at\)
+0+002c <[^>]*> lw \$a1,4\(\$at\)
+0+0030 <[^>]*> lui \$at,2
+0+0034 <[^>]*> lw \$a0,-23131\(\$at\)
+0+0038 <[^>]*> lw \$a1,-23127\(\$at\)
+...
+0+0040 <[^>]*> lw \$a0,0\(\$a1\)
+0+0044 <[^>]*> lw \$a1,4\(\$a1\)
+...
+0+004c <[^>]*> lw \$a0,1\(\$a1\)
+0+0050 <[^>]*> lw \$a1,5\(\$a1\)
+0+0054 <[^>]*> lui \$at,1
+0+0058 <[^>]*> addu \$at,\$a1,\$at
+0+005c <[^>]*> lw \$a0,-32768\(\$at\)
+0+0060 <[^>]*> lw \$a1,-32764\(\$at\)
+...
+0+0068 <[^>]*> lw \$a0,-32768\(\$a1\)
+0+006c <[^>]*> lw \$a1,-32764\(\$a1\)
+0+0070 <[^>]*> lui \$at,1
+0+0074 <[^>]*> addu \$at,\$a1,\$at
+0+0078 <[^>]*> lw \$a0,0\(\$at\)
+0+007c <[^>]*> lw \$a1,4\(\$at\)
+0+0080 <[^>]*> lui \$at,2
+0+0084 <[^>]*> addu \$at,\$a1,\$at
+0+0088 <[^>]*> lw \$a0,-23131\(\$at\)
+0+008c <[^>]*> lw \$a1,-23127\(\$at\)
+0+0090 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0090 [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+0094 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0094 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+0098 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0098 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+009c <[^>]*> lui \$at,0
+[      ]*RELOC: 0+009c [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+00a0 <[^>]*> lw \$a0,0\(\$at\)
+[      ]*RELOC: 0+00a0 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+00a4 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+00a4 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+00a8 <[^>]*> lw \$a0,0\(\$gp\)
+[      ]*RELOC: 0+00a8 [A-Z0-9_]*GPREL[A-Z0-9_]* small_external_data_label
+0+00ac <[^>]*> lw \$a1,[-0-9]+\(\$gp\)
+[      ]*RELOC: 0+00ac [A-Z0-9_]*GPREL[A-Z0-9_]* small_external_data_label
+0+00b0 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+00b0 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+00b4 <[^>]*> lw \$a0,0\(\$at\)
+[      ]*RELOC: 0+00b4 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+00b8 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+00b8 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+00bc <[^>]*> lw \$a0,0\(\$gp\)
+[      ]*RELOC: 0+00bc [A-Z0-9_]*GPREL[A-Z0-9_]* small_external_common
+0+00c0 <[^>]*> lw \$a1,[-0-9]+\(\$gp\)
+[      ]*RELOC: 0+00c0 [A-Z0-9_]*GPREL[A-Z0-9_]* small_external_common
+0+00c4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+00c4 [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+00c8 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+00c8 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+00cc <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+00cc [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+00d0 <[^>]*> lw \$a0,[-0-9]+\(\$gp\)
+[      ]*RELOC: 0+00d0 [A-Z0-9_]*GPREL[A-Z0-9_]* .sbss.*
+0+00d4 <[^>]*> lw \$a1,[-0-9]+\(\$gp\)
+[      ]*RELOC: 0+00d4 [A-Z0-9_]*GPREL[A-Z0-9_]* .sbss.*
+0+00d8 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+00d8 [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+00dc <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+00dc [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+00e0 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+00e0 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+00e4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+00e4 [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+00e8 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+00e8 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+00ec <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+00ec [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+00f0 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+00f0 [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+00f4 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+00f4 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+00f8 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+00f8 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+00fc <[^>]*> lui \$at,0
+[      ]*RELOC: 0+00fc [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+0100 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0100 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+0104 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0104 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+0108 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0108 [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+010c <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+010c [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+0110 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0110 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+0114 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0114 [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+0118 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0118 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+011c <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+011c [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+0120 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0120 [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+0124 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0124 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+0128 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0128 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+012c <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+012c [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+0130 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0130 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+0134 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0134 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+0138 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0138 [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+013c <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+013c [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+0140 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0140 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+0144 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0144 [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+0148 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0148 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+014c <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+014c [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+0150 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0150 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+0154 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0154 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+0158 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0158 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+015c <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+015c [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+0160 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0160 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+0164 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0164 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+0168 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0168 [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+016c <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+016c [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+0170 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0170 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+0174 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0174 [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+0178 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0178 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+017c <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+017c [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+0180 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0180 [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+0184 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0184 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+0188 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0188 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+018c <[^>]*> lui \$at,0
+[      ]*RELOC: 0+018c [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+0190 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0190 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+0194 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0194 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+0198 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0198 [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+019c <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+019c [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+01a0 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+01a0 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+01a4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+01a4 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+01a8 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+01a8 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+01ac <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+01ac [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+01b0 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+01b0 [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+01b4 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+01b4 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+01b8 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+01b8 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+01bc <[^>]*> lui \$at,0
+[      ]*RELOC: 0+01bc [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+01c0 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+01c0 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+01c4 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+01c4 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+01c8 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+01c8 [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+01cc <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+01cc [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+01d0 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+01d0 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+01d4 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+01d4 [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+01d8 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+01d8 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+01dc <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+01dc [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+01e0 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+01e0 [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+01e4 <[^>]*> lw \$a0,0\(\$at\)
+[      ]*RELOC: 0+01e4 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+01e8 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+01e8 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+01ec <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+01ec [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+01f0 <[^>]*> lw \$a0,0\(\$at\)
+[      ]*RELOC: 0+01f0 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+01f4 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+01f4 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+01f8 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+01f8 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+01fc <[^>]*> lw \$a0,0\(\$at\)
+[      ]*RELOC: 0+01fc [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+0200 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0200 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+0204 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0204 [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+0208 <[^>]*> lw \$a0,0\(\$at\)
+[      ]*RELOC: 0+0208 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+020c <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+020c [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+0210 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0210 [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+0214 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0214 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+0218 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0218 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+021c <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+021c [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+0220 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0220 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+0224 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0224 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+0228 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0228 [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+022c <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+022c [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+0230 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0230 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+0234 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0234 [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+0238 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0238 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+023c <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+023c [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+0240 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0240 [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+0244 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0244 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+0248 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0248 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+024c <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+024c [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+0250 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0250 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+0254 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0254 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+0258 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0258 [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+025c <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+025c [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+0260 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0260 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+0264 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0264 [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+0268 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0268 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+026c <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+026c [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+0270 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0270 [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+0274 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0274 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+0278 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0278 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+...
+0+0280 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0280 [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+0284 <[^>]*> addu \$at,\$a1,\$at
+0+0288 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0288 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+028c <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+028c [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+...
+0+0294 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0294 [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+0298 <[^>]*> addu \$at,\$a1,\$at
+0+029c <[^>]*> lw \$a0,0\(\$at\)
+[      ]*RELOC: 0+029c [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+02a0 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+02a0 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+...
+0+02a8 <[^>]*> addu \$at,\$a1,\$gp
+0+02ac <[^>]*> lw \$a0,0\(\$at\)
+[      ]*RELOC: 0+02ac [A-Z0-9_]*GPREL[A-Z0-9_]* small_external_data_label
+0+02b0 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+02b0 [A-Z0-9_]*GPREL[A-Z0-9_]* small_external_data_label
+...
+0+02b8 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+02b8 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+02bc <[^>]*> addu \$at,\$a1,\$at
+0+02c0 <[^>]*> lw \$a0,0\(\$at\)
+[      ]*RELOC: 0+02c0 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+02c4 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+02c4 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+...
+0+02cc <[^>]*> addu \$at,\$a1,\$gp
+0+02d0 <[^>]*> lw \$a0,0\(\$at\)
+[      ]*RELOC: 0+02d0 [A-Z0-9_]*GPREL[A-Z0-9_]* small_external_common
+0+02d4 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+02d4 [A-Z0-9_]*GPREL[A-Z0-9_]* small_external_common
+...
+0+02dc <[^>]*> lui \$at,0
+[      ]*RELOC: 0+02dc [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+02e0 <[^>]*> addu \$at,\$a1,\$at
+0+02e4 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+02e4 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+02e8 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+02e8 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+...
+0+02f0 <[^>]*> addu \$at,\$a1,\$gp
+0+02f4 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+02f4 [A-Z0-9_]*GPREL[A-Z0-9_]* .sbss.*
+0+02f8 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+02f8 [A-Z0-9_]*GPREL[A-Z0-9_]* .sbss.*
+0+02fc <[^>]*> lui \$at,0
+[      ]*RELOC: 0+02fc [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+0300 <[^>]*> addu \$at,\$a1,\$at
+0+0304 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0304 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+0308 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0308 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+030c <[^>]*> lui \$at,0
+[      ]*RELOC: 0+030c [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+0310 <[^>]*> addu \$at,\$a1,\$at
+0+0314 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0314 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+0318 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0318 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+031c <[^>]*> lui \$at,0
+[      ]*RELOC: 0+031c [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+0320 <[^>]*> addu \$at,\$a1,\$at
+0+0324 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0324 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+0328 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0328 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+032c <[^>]*> lui \$at,0
+[      ]*RELOC: 0+032c [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+0330 <[^>]*> addu \$at,\$a1,\$at
+0+0334 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0334 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+0338 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0338 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+033c <[^>]*> lui \$at,0
+[      ]*RELOC: 0+033c [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+0340 <[^>]*> addu \$at,\$a1,\$at
+0+0344 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0344 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+0348 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0348 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+034c <[^>]*> lui \$at,0
+[      ]*RELOC: 0+034c [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+0350 <[^>]*> addu \$at,\$a1,\$at
+0+0354 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0354 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+0358 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0358 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+035c <[^>]*> lui \$at,0
+[      ]*RELOC: 0+035c [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+0360 <[^>]*> addu \$at,\$a1,\$at
+0+0364 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0364 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+0368 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0368 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+036c <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+036c [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+0370 <[^>]*> addu \$at,\$a1,\$at
+0+0374 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0374 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+0378 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0378 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+037c <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+037c [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+0380 <[^>]*> addu \$at,\$a1,\$at
+0+0384 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0384 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+0388 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0388 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+038c <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+038c [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+0390 <[^>]*> addu \$at,\$a1,\$at
+0+0394 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0394 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+0398 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0398 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+039c <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+039c [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+03a0 <[^>]*> addu \$at,\$a1,\$at
+0+03a4 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+03a4 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+03a8 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+03a8 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+03ac <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+03ac [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+03b0 <[^>]*> addu \$at,\$a1,\$at
+0+03b4 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+03b4 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+03b8 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+03b8 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+03bc <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+03bc [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+03c0 <[^>]*> addu \$at,\$a1,\$at
+0+03c4 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+03c4 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+03c8 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+03c8 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+03cc <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+03cc [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+03d0 <[^>]*> addu \$at,\$a1,\$at
+0+03d4 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+03d4 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+03d8 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+03d8 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+03dc <[^>]*> lui \$at,0
+[      ]*RELOC: 0+03dc [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+03e0 <[^>]*> addu \$at,\$a1,\$at
+0+03e4 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+03e4 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+03e8 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+03e8 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+03ec <[^>]*> lui \$at,0
+[      ]*RELOC: 0+03ec [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+03f0 <[^>]*> addu \$at,\$a1,\$at
+0+03f4 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+03f4 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+03f8 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+03f8 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+03fc <[^>]*> lui \$at,0
+[      ]*RELOC: 0+03fc [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+0400 <[^>]*> addu \$at,\$a1,\$at
+0+0404 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0404 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+0408 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0408 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+040c <[^>]*> lui \$at,0
+[      ]*RELOC: 0+040c [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+0410 <[^>]*> addu \$at,\$a1,\$at
+0+0414 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0414 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+0418 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0418 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+041c <[^>]*> lui \$at,0
+[      ]*RELOC: 0+041c [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+0420 <[^>]*> addu \$at,\$a1,\$at
+0+0424 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0424 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+0428 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0428 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+042c <[^>]*> lui \$at,0
+[      ]*RELOC: 0+042c [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+0430 <[^>]*> addu \$at,\$a1,\$at
+0+0434 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0434 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+0438 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0438 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+043c <[^>]*> lui \$at,0
+[      ]*RELOC: 0+043c [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+0440 <[^>]*> addu \$at,\$a1,\$at
+0+0444 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0444 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+0448 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0448 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+044c <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+044c [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+0450 <[^>]*> addu \$at,\$a1,\$at
+0+0454 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0454 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+0458 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0458 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+045c <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+045c [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+0460 <[^>]*> addu \$at,\$a1,\$at
+0+0464 <[^>]*> lw \$a0,0\(\$at\)
+[      ]*RELOC: 0+0464 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+0468 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0468 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+046c <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+046c [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+0470 <[^>]*> addu \$at,\$a1,\$at
+0+0474 <[^>]*> lw \$a0,0\(\$at\)
+[      ]*RELOC: 0+0474 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+0478 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0478 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+047c <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+047c [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+0480 <[^>]*> addu \$at,\$a1,\$at
+0+0484 <[^>]*> lw \$a0,0\(\$at\)
+[      ]*RELOC: 0+0484 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+0488 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0488 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+048c <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+048c [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+0490 <[^>]*> addu \$at,\$a1,\$at
+0+0494 <[^>]*> lw \$a0,0\(\$at\)
+[      ]*RELOC: 0+0494 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+0498 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0498 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+049c <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+049c [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+04a0 <[^>]*> addu \$at,\$a1,\$at
+0+04a4 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+04a4 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+04a8 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+04a8 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+04ac <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+04ac [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+04b0 <[^>]*> addu \$at,\$a1,\$at
+0+04b4 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+04b4 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+04b8 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+04b8 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+04bc <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+04bc [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+04c0 <[^>]*> addu \$at,\$a1,\$at
+0+04c4 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+04c4 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+04c8 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+04c8 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+04cc <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+04cc [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+04d0 <[^>]*> addu \$at,\$a1,\$at
+0+04d4 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+04d4 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+04d8 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+04d8 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+04dc <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+04dc [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+04e0 <[^>]*> addu \$at,\$a1,\$at
+0+04e4 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+04e4 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+04e8 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+04e8 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+04ec <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+04ec [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+04f0 <[^>]*> addu \$at,\$a1,\$at
+0+04f4 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+04f4 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+04f8 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+04f8 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+04fc <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+04fc [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+0500 <[^>]*> addu \$at,\$a1,\$at
+0+0504 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0504 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+0508 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0508 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+050c <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+050c [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+0510 <[^>]*> addu \$at,\$a1,\$at
+0+0514 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0514 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+0518 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0518 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+051c <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+051c [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+0520 <[^>]*> addu \$at,\$a1,\$at
+0+0524 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0524 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+0528 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0528 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+052c <[^>]*> lwc1 \$f5,0\(\$zero\)
+0+0530 <[^>]*> lwc1 \$f4,4\(\$zero\)
+0+0534 <[^>]*> lwc1 \$f5,1\(\$zero\)
+0+0538 <[^>]*> lwc1 \$f4,5\(\$zero\)
+0+053c <[^>]*> lui \$at,1
+0+0540 <[^>]*> lwc1 \$f5,-32768\(\$at\)
+0+0544 <[^>]*> lwc1 \$f4,-32764\(\$at\)
+0+0548 <[^>]*> lwc1 \$f5,-32768\(\$zero\)
+0+054c <[^>]*> lwc1 \$f4,-32764\(\$zero\)
+0+0550 <[^>]*> lwc1 \$f5,0\(\$a1\)
+0+0554 <[^>]*> lwc1 \$f4,4\(\$a1\)
+0+0558 <[^>]*> lwc1 \$f5,1\(\$a1\)
+0+055c <[^>]*> lwc1 \$f4,5\(\$a1\)
+0+0560 <[^>]*> lui \$at,1
+0+0564 <[^>]*> addu \$at,\$a1,\$at
+0+0568 <[^>]*> lwc1 \$f5,-32768\(\$at\)
+0+056c <[^>]*> lwc1 \$f4,-32764\(\$at\)
+0+0570 <[^>]*> lwc1 \$f5,-32768\(\$a1\)
+0+0574 <[^>]*> lwc1 \$f4,-32764\(\$a1\)
+0+0578 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0578 [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+057c <[^>]*> addu \$at,\$a1,\$at
+0+0580 <[^>]*> lwc1 \$f5,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0580 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+0584 <[^>]*> lwc1 \$f4,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0584 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+0588 <[^>]*> swc1 \$f5,0\(\$zero\)
+0+058c <[^>]*> swc1 \$f4,4\(\$zero\)
+0+0590 <[^>]*> swc1 \$f5,1\(\$zero\)
+0+0594 <[^>]*> swc1 \$f4,5\(\$zero\)
+0+0598 <[^>]*> lui \$at,1
+0+059c <[^>]*> swc1 \$f5,-32768\(\$at\)
+0+05a0 <[^>]*> swc1 \$f4,-32764\(\$at\)
+0+05a4 <[^>]*> swc1 \$f5,-32768\(\$zero\)
+0+05a8 <[^>]*> swc1 \$f4,-32764\(\$zero\)
+0+05ac <[^>]*> swc1 \$f5,0\(\$a1\)
+0+05b0 <[^>]*> swc1 \$f4,4\(\$a1\)
+0+05b4 <[^>]*> swc1 \$f5,1\(\$a1\)
+0+05b8 <[^>]*> swc1 \$f4,5\(\$a1\)
+0+05bc <[^>]*> lui \$at,1
+0+05c0 <[^>]*> addu \$at,\$a1,\$at
+0+05c4 <[^>]*> swc1 \$f5,-32768\(\$at\)
+0+05c8 <[^>]*> swc1 \$f4,-32764\(\$at\)
+0+05cc <[^>]*> swc1 \$f5,-32768\(\$a1\)
+0+05d0 <[^>]*> swc1 \$f4,-32764\(\$a1\)
+0+05d4 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+05d4 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+05d8 <[^>]*> addu \$at,\$a1,\$at
+0+05dc <[^>]*> swc1 \$f5,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+05dc [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+05e0 <[^>]*> swc1 \$f4,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+05e0 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+05e4 <[^>]*> sw \$a0,0\(\$zero\)
+0+05e8 <[^>]*> sw \$a1,4\(\$zero\)
+0+05ec <[^>]*> lui \$a0,[-0-9]+
+[      ]*RELOC: 0+05ec [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+05f0 <[^>]*> daddu \$a0,\$a0,\$a1
+0+05f4 <[^>]*> ld \$a0,[-0-9]+\(\$a0\)
+[      ]*RELOC: 0+05f4 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+05f8 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+05f8 [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+05fc <[^>]*> daddu \$at,\$at,\$a1
+0+0600 <[^>]*> sd \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0600 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+...
diff --git a/gas/testsuite/gas/mips/ld.s b/gas/testsuite/gas/mips/ld.s
new file mode 100644 (file)
index 0000000..0ee236d
--- /dev/null
@@ -0,0 +1,138 @@
+# Source file used to test the ld macro.
+       
+       .set    mips1
+
+       .data
+data_label:
+       .extern big_external_data_label,1000
+       .extern small_external_data_label,1
+       .comm big_external_common,1000
+       .comm small_external_common,1
+       .lcomm big_local_common,1000
+       .lcomm small_local_common,1
+       
+       .text
+       ld      $4,0
+       ld      $4,1
+       ld      $4,0x8000
+       ld      $4,-0x8000
+       ld      $4,0x10000
+       ld      $4,0x1a5a5
+       ld      $4,0($5)
+       ld      $4,1($5)
+       ld      $4,0x8000($5)
+       ld      $4,-0x8000($5)
+       ld      $4,0x10000($5)
+       ld      $4,0x1a5a5($5)
+       ld      $4,data_label
+       ld      $4,big_external_data_label
+       ld      $4,small_external_data_label
+       ld      $4,big_external_common
+       ld      $4,small_external_common
+       ld      $4,big_local_common
+       ld      $4,small_local_common
+       ld      $4,data_label+1
+       ld      $4,big_external_data_label+1
+       ld      $4,small_external_data_label+1
+       ld      $4,big_external_common+1
+       ld      $4,small_external_common+1
+       ld      $4,big_local_common+1
+       ld      $4,small_local_common+1
+       ld      $4,data_label+0x8000
+       ld      $4,big_external_data_label+0x8000
+       ld      $4,small_external_data_label+0x8000
+       ld      $4,big_external_common+0x8000
+       ld      $4,small_external_common+0x8000
+       ld      $4,big_local_common+0x8000
+       ld      $4,small_local_common+0x8000
+       ld      $4,data_label-0x8000
+       ld      $4,big_external_data_label-0x8000
+       ld      $4,small_external_data_label-0x8000
+       ld      $4,big_external_common-0x8000
+       ld      $4,small_external_common-0x8000
+       ld      $4,big_local_common-0x8000
+       ld      $4,small_local_common-0x8000
+       ld      $4,data_label+0x10000
+       ld      $4,big_external_data_label+0x10000
+       ld      $4,small_external_data_label+0x10000
+       ld      $4,big_external_common+0x10000
+       ld      $4,small_external_common+0x10000
+       ld      $4,big_local_common+0x10000
+       ld      $4,small_local_common+0x10000
+       ld      $4,data_label+0x1a5a5
+       ld      $4,big_external_data_label+0x1a5a5
+       ld      $4,small_external_data_label+0x1a5a5
+       ld      $4,big_external_common+0x1a5a5
+       ld      $4,small_external_common+0x1a5a5
+       ld      $4,big_local_common+0x1a5a5
+       ld      $4,small_local_common+0x1a5a5
+       ld      $4,data_label($5)
+       ld      $4,big_external_data_label($5)
+       ld      $4,small_external_data_label($5)
+       ld      $4,big_external_common($5)
+       ld      $4,small_external_common($5)
+       ld      $4,big_local_common($5)
+       ld      $4,small_local_common($5)
+       ld      $4,data_label+1($5)
+       ld      $4,big_external_data_label+1($5)
+       ld      $4,small_external_data_label+1($5)
+       ld      $4,big_external_common+1($5)
+       ld      $4,small_external_common+1($5)
+       ld      $4,big_local_common+1($5)
+       ld      $4,small_local_common+1($5)
+       ld      $4,data_label+0x8000($5)
+       ld      $4,big_external_data_label+0x8000($5)
+       ld      $4,small_external_data_label+0x8000($5)
+       ld      $4,big_external_common+0x8000($5)
+       ld      $4,small_external_common+0x8000($5)
+       ld      $4,big_local_common+0x8000($5)
+       ld      $4,small_local_common+0x8000($5)
+       ld      $4,data_label-0x8000($5)
+       ld      $4,big_external_data_label-0x8000($5)
+       ld      $4,small_external_data_label-0x8000($5)
+       ld      $4,big_external_common-0x8000($5)
+       ld      $4,small_external_common-0x8000($5)
+       ld      $4,big_local_common-0x8000($5)
+       ld      $4,small_local_common-0x8000($5)
+       ld      $4,data_label+0x10000($5)
+       ld      $4,big_external_data_label+0x10000($5)
+       ld      $4,small_external_data_label+0x10000($5)
+       ld      $4,big_external_common+0x10000($5)
+       ld      $4,small_external_common+0x10000($5)
+       ld      $4,big_local_common+0x10000($5)
+       ld      $4,small_local_common+0x10000($5)
+       ld      $4,data_label+0x1a5a5($5)
+       ld      $4,big_external_data_label+0x1a5a5($5)
+       ld      $4,small_external_data_label+0x1a5a5($5)
+       ld      $4,big_external_common+0x1a5a5($5)
+       ld      $4,small_external_common+0x1a5a5($5)
+       ld      $4,big_local_common+0x1a5a5($5)
+       ld      $4,small_local_common+0x1a5a5($5)
+
+# l.d and s.d are sort of like ld.
+       l.d     $f4,0
+       l.d     $f4,1
+       l.d     $f4,0x8000
+       l.d     $f4,-0x8000
+       l.d     $f4,0($5)
+       l.d     $f4,1($5)
+       l.d     $f4,0x8000($5)
+       l.d     $f4,-0x8000($5)
+       l.d     $f4,small_external_common+0x1a5a5($5)
+       s.d     $f4,0
+       s.d     $f4,1
+       s.d     $f4,0x8000
+       s.d     $f4,-0x8000
+       s.d     $f4,0($5)
+       s.d     $f4,1($5)
+       s.d     $f4,0x8000($5)
+       s.d     $f4,-0x8000($5)
+       s.d     $f4,big_external_common+0x1a5a5($5)
+
+# sd is handled like ld.  Sanity check it.
+       sd      $4,0
+
+# Sanity check the -mips3 versions
+       .set    mips3
+       ld      $4,big_local_common+0x1a5a5($5)
+       sd      $4,small_local_common+0x1a5a5($5)
diff --git a/gas/testsuite/gas/mips/lifloat.d b/gas/testsuite/gas/mips/lifloat.d
new file mode 100644 (file)
index 0000000..378b46a
--- /dev/null
@@ -0,0 +1,23 @@
+#objdump: -dr
+#name: lifloat
+#as: -mips1
+
+# Test the li.d and li.s macros.
+
+.*: +file format .*mips.*
+
+Disassembly of section .text:
+0+0000 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0000 [A-Z0-9_]*HI[A-Z0-9_]* .ro?data.*
+0+0004 <[^>]*> lw \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0004 [A-Z0-9_]*LO[A-Z0-9_]* .ro?data.*
+0+0008 <[^>]*> lw \$a1,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0008 [A-Z0-9_]*LO[A-Z0-9_]* .ro?data.*
+0+000c <[^>]*> lwc1 \$f5,[-0-9]+\(\$gp\)
+[      ]*RELOC: 0+000c [A-Z0-9_]*LITERAL[A-Z0-9_]* .lit8.*
+0+0010 <[^>]*> lwc1 \$f4,[-0-9]+\(\$gp\)
+[      ]*RELOC: 0+0010 [A-Z0-9_]*LITERAL[A-Z0-9_]* .lit8.*
+0+0014 <[^>]*> lui \$a0,16256
+0+0018 <[^>]*> lwc1 \$f4,[-0-9]+\(\$gp\)
+[      ]*RELOC: 0+0018 [A-Z0-9_]*LITERAL[A-Z0-9_]* .lit4.*
+...
diff --git a/gas/testsuite/gas/mips/lifloat.s b/gas/testsuite/gas/mips/lifloat.s
new file mode 100644 (file)
index 0000000..9a7d138
--- /dev/null
@@ -0,0 +1,8 @@
+# Source file used to test the li.d and li.s macros.
+       
+foo:   
+       li.d    $4,1.0
+       li.d    $f4,1.0
+       
+       li.s    $4,1.0
+       li.s    $f4,1.0
diff --git a/gas/testsuite/gas/mips/mul.d b/gas/testsuite/gas/mips/mul.d
new file mode 100644 (file)
index 0000000..6c356b6
--- /dev/null
@@ -0,0 +1,91 @@
+#objdump: -dr
+#name: mul
+
+# Test the mul macro.
+
+.*: +file format .*mips.*
+
+No symbols in .*
+Disassembly of section .text:
+0+0000 multu \$a0,\$a1
+0+0004 mflo \$a0
+...
+0+0010 multu \$a1,\$a2
+0+0014 mflo \$a0
+0+0018 li \$at,0
+...
+0+0020 mult \$a1,\$at
+0+0024 mflo \$a0
+0+0028 li \$at,1
+...
+0+0030 mult \$a1,\$at
+0+0034 mflo \$a0
+0+0038 li \$at,32768
+...
+0+0040 mult \$a1,\$at
+0+0044 mflo \$a0
+0+0048 li \$at,-32768
+...
+0+0050 mult \$a1,\$at
+0+0054 mflo \$a0
+0+0058 lui \$at,1
+...
+0+0060 mult \$a1,\$at
+0+0064 mflo \$a0
+0+0068 lui \$at,1
+0+006c ori \$at,\$at,42405
+0+0070 mult \$a1,\$at
+0+0074 mflo \$a0
+...
+0+0080 mult \$a0,\$a1
+0+0084 mflo \$a0
+0+0088 sra \$a0,\$a0,0x1f
+0+008c mfhi \$at
+0+0090 beq \$a0,\$at,0000009c
+...
+0+0098 break 0x6
+0+009c mflo \$a0
+...
+0+00a8 mult \$a1,\$a2
+0+00ac mflo \$a0
+0+00b0 sra \$a0,\$a0,0x1f
+0+00b4 mfhi \$at
+0+00b8 beq \$a0,\$at,000000c4
+...
+0+00c0 break 0x6
+0+00c4 mflo \$a0
+...
+0+00d0 multu \$a0,\$a1
+0+00d4 mfhi \$at
+0+00d8 mflo \$a0
+0+00dc beqz \$at,000000e8
+...
+0+00e4 break 0x6
+0+00e8 multu \$a1,\$a2
+0+00ec mfhi \$at
+0+00f0 mflo \$a0
+0+00f4 beqz \$at,00000100
+...
+0+00fc break 0x6
+0+0100 dmultu \$a1,\$a2
+0+0104 mflo \$a0
+0+0108 li \$at,1
+...
+0+0110 dmult \$a1,\$at
+0+0114 mflo \$a0
+...
+0+0120 dmult \$a1,\$a2
+0+0124 mflo \$a0
+0+0128 dsra32 \$a0,\$a0,0x1f
+0+012c mfhi \$at
+0+0130 beq \$a0,\$at,0000013c
+...
+0+0138 break 0x6
+0+013c mflo \$a0
+...
+0+0148 dmultu \$a1,\$a2
+0+014c mfhi \$at
+0+0150 mflo \$a0
+0+0154 beqz \$at,00000160
+...
+0+015c break 0x6
diff --git a/gas/testsuite/gas/mips/mul.s b/gas/testsuite/gas/mips/mul.s
new file mode 100644 (file)
index 0000000..f9c2027
--- /dev/null
@@ -0,0 +1,24 @@
+# Source file used to test the mul macro.
+       
+       mul     $4,$5
+       mul     $4,$5,$6
+       mul     $4,$5,0
+       mul     $4,$5,1
+       mul     $4,$5,0x8000
+       mul     $4,$5,-0x8000
+       mul     $4,$5,0x10000
+       mul     $4,$5,0x1a5a5
+
+# mulo and mulou are only supported for register arguments     
+       mulo    $4,$5
+       mulo    $4,$5,$6
+
+       mulou   $4,$5
+       mulou   $4,$5,$6
+
+# Sanity check the 64 bit versions.
+       .set    mips3
+       dmul    $4,$5,$6
+       dmul    $4,$5,1
+       dmulo   $4,$5,$6
+       dmulou  $4,$5,$6
diff --git a/gas/testsuite/gas/mips/rol.s b/gas/testsuite/gas/mips/rol.s
new file mode 100644 (file)
index 0000000..cfed5ea
--- /dev/null
@@ -0,0 +1,11 @@
+# Source file used to test the rol and ror macros.
+       
+       rol     $4,$5
+       rol     $4,$5,$6
+       rol     $4,1
+       rol     $4,$5,1
+
+       ror     $4,$5
+       ror     $4,$5,$6
+       ror     $4,1
+       ror     $4,$5,1
diff --git a/gas/testsuite/gas/mips/sb.s b/gas/testsuite/gas/mips/sb.s
new file mode 100644 (file)
index 0000000..d535848
--- /dev/null
@@ -0,0 +1,120 @@
+# Source file used to test the sb macro.
+       
+       .data
+data_label:
+       .extern big_external_data_label,1000
+       .extern small_external_data_label,1
+       .comm big_external_common,1000
+       .comm small_external_common,1
+       .lcomm big_local_common,1000
+       .lcomm small_local_common,1
+       
+       .text
+       sb      $4,0
+       sb      $4,1
+       sb      $4,0x8000
+       sb      $4,-0x8000
+       sb      $4,0x10000
+       sb      $4,0x1a5a5
+       sb      $4,0($5)
+       sb      $4,1($5)
+       sb      $4,0x8000($5)
+       sb      $4,-0x8000($5)
+       sb      $4,0x10000($5)
+       sb      $4,0x1a5a5($5)
+       sb      $4,data_label
+       sb      $4,big_external_data_label
+       sb      $4,small_external_data_label
+       sb      $4,big_external_common
+       sb      $4,small_external_common
+       sb      $4,big_local_common
+       sb      $4,small_local_common
+       sb      $4,data_label+1
+       sb      $4,big_external_data_label+1
+       sb      $4,small_external_data_label+1
+       sb      $4,big_external_common+1
+       sb      $4,small_external_common+1
+       sb      $4,big_local_common+1
+       sb      $4,small_local_common+1
+       sb      $4,data_label+0x8000
+       sb      $4,big_external_data_label+0x8000
+       sb      $4,small_external_data_label+0x8000
+       sb      $4,big_external_common+0x8000
+       sb      $4,small_external_common+0x8000
+       sb      $4,big_local_common+0x8000
+       sb      $4,small_local_common+0x8000
+       sb      $4,data_label-0x8000
+       sb      $4,big_external_data_label-0x8000
+       sb      $4,small_external_data_label-0x8000
+       sb      $4,big_external_common-0x8000
+       sb      $4,small_external_common-0x8000
+       sb      $4,big_local_common-0x8000
+       sb      $4,small_local_common-0x8000
+       sb      $4,data_label+0x10000
+       sb      $4,big_external_data_label+0x10000
+       sb      $4,small_external_data_label+0x10000
+       sb      $4,big_external_common+0x10000
+       sb      $4,small_external_common+0x10000
+       sb      $4,big_local_common+0x10000
+       sb      $4,small_local_common+0x10000
+       sb      $4,data_label+0x1a5a5
+       sb      $4,big_external_data_label+0x1a5a5
+       sb      $4,small_external_data_label+0x1a5a5
+       sb      $4,big_external_common+0x1a5a5
+       sb      $4,small_external_common+0x1a5a5
+       sb      $4,big_local_common+0x1a5a5
+       sb      $4,small_local_common+0x1a5a5
+       sb      $4,data_label($5)
+       sb      $4,big_external_data_label($5)
+       sb      $4,small_external_data_label($5)
+       sb      $4,big_external_common($5)
+       sb      $4,small_external_common($5)
+       sb      $4,big_local_common($5)
+       sb      $4,small_local_common($5)
+       sb      $4,data_label+1($5)
+       sb      $4,big_external_data_label+1($5)
+       sb      $4,small_external_data_label+1($5)
+       sb      $4,big_external_common+1($5)
+       sb      $4,small_external_common+1($5)
+       sb      $4,big_local_common+1($5)
+       sb      $4,small_local_common+1($5)
+       sb      $4,data_label+0x8000($5)
+       sb      $4,big_external_data_label+0x8000($5)
+       sb      $4,small_external_data_label+0x8000($5)
+       sb      $4,big_external_common+0x8000($5)
+       sb      $4,small_external_common+0x8000($5)
+       sb      $4,big_local_common+0x8000($5)
+       sb      $4,small_local_common+0x8000($5)
+       sb      $4,data_label-0x8000($5)
+       sb      $4,big_external_data_label-0x8000($5)
+       sb      $4,small_external_data_label-0x8000($5)
+       sb      $4,big_external_common-0x8000($5)
+       sb      $4,small_external_common-0x8000($5)
+       sb      $4,big_local_common-0x8000($5)
+       sb      $4,small_local_common-0x8000($5)
+       sb      $4,data_label+0x10000($5)
+       sb      $4,big_external_data_label+0x10000($5)
+       sb      $4,small_external_data_label+0x10000($5)
+       sb      $4,big_external_common+0x10000($5)
+       sb      $4,small_external_common+0x10000($5)
+       sb      $4,big_local_common+0x10000($5)
+       sb      $4,small_local_common+0x10000($5)
+       sb      $4,data_label+0x1a5a5($5)
+       sb      $4,big_external_data_label+0x1a5a5($5)
+       sb      $4,small_external_data_label+0x1a5a5($5)
+       sb      $4,big_external_common+0x1a5a5($5)
+       sb      $4,small_external_common+0x1a5a5($5)
+       sb      $4,big_local_common+0x1a5a5($5)
+       sb      $4,small_local_common+0x1a5a5($5)
+       
+# Several macros are handled like sb.  Sanity check them.
+       sd      $4,0
+       sh      $4,0
+       sw      $4,0
+       swc0    $4,0
+       swc1    $4,0
+       swc2    $4,0
+       swc3    $4,0
+       s.s     $f4,0
+       swl     $4,0
+       swr     $4,0
diff --git a/gas/testsuite/gas/mips/trunc.s b/gas/testsuite/gas/mips/trunc.s
new file mode 100644 (file)
index 0000000..31409ab
--- /dev/null
@@ -0,0 +1,5 @@
+# Source file used to test the trunc macros.
+
+       trunc.w.d       $f4,$f6,$4
+
+       trunc.w.s       $f4,$f6,$4
diff --git a/gas/testsuite/gas/mips/ulh.d b/gas/testsuite/gas/mips/ulh.d
new file mode 100644 (file)
index 0000000..ec86719
--- /dev/null
@@ -0,0 +1,380 @@
+#objdump: -dr
+#name: ulh
+#as: -mips1
+
+# Test the ulh macro.
+
+.*: +file format .*mips.*
+
+Disassembly of section .text:
+0+0000 <[^>]*> lb \$a0,0\(\$zero\)
+0+0004 <[^>]*> lbu \$at,1\(\$zero\)
+0+0008 <[^>]*> sll \$a0,\$a0,0x8
+0+000c <[^>]*> or \$a0,\$a0,\$at
+0+0010 <[^>]*> lb \$a0,1\(\$zero\)
+0+0014 <[^>]*> lbu \$at,2\(\$zero\)
+0+0018 <[^>]*> sll \$a0,\$a0,0x8
+0+001c <[^>]*> or \$a0,\$a0,\$at
+0+0020 <[^>]*> li \$at,32768
+0+0024 <[^>]*> lb \$a0,0\(\$at\)
+0+0028 <[^>]*> lbu \$at,1\(\$at\)
+0+002c <[^>]*> sll \$a0,\$a0,0x8
+0+0030 <[^>]*> or \$a0,\$a0,\$at
+0+0034 <[^>]*> lb \$a0,-32768\(\$zero\)
+0+0038 <[^>]*> lbu \$at,-32767\(\$zero\)
+0+003c <[^>]*> sll \$a0,\$a0,0x8
+0+0040 <[^>]*> or \$a0,\$a0,\$at
+0+0044 <[^>]*> lui \$at,1
+0+0048 <[^>]*> lb \$a0,0\(\$at\)
+0+004c <[^>]*> lbu \$at,1\(\$at\)
+0+0050 <[^>]*> sll \$a0,\$a0,0x8
+0+0054 <[^>]*> or \$a0,\$a0,\$at
+0+0058 <[^>]*> lui \$at,1
+0+005c <[^>]*> ori \$at,\$at,42405
+0+0060 <[^>]*> lb \$a0,0\(\$at\)
+0+0064 <[^>]*> lbu \$at,1\(\$at\)
+0+0068 <[^>]*> sll \$a0,\$a0,0x8
+0+006c <[^>]*> or \$a0,\$a0,\$at
+0+0070 <[^>]*> lb \$a0,0\(\$a1\)
+0+0074 <[^>]*> lbu \$at,1\(\$a1\)
+0+0078 <[^>]*> sll \$a0,\$a0,0x8
+0+007c <[^>]*> or \$a0,\$a0,\$at
+0+0080 <[^>]*> lb \$a0,1\(\$a1\)
+0+0084 <[^>]*> lbu \$at,2\(\$a1\)
+0+0088 <[^>]*> sll \$a0,\$a0,0x8
+0+008c <[^>]*> or \$a0,\$a0,\$at
+[      ]*RELOC: 0+008c [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+0090 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0090 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+0094 <[^>]*> addiu \$at,\$at,0
+0+0098 <[^>]*> lb \$a0,0\(\$at\)
+0+009c <[^>]*> lbu \$at,1\(\$at\)
+0+00a0 <[^>]*> sll \$a0,\$a0,0x8
+0+00a4 <[^>]*> or \$a0,\$a0,\$at
+[      ]*RELOC: 0+00a4 [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+00a8 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+00a8 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+00ac <[^>]*> addiu \$at,\$at,0
+0+00b0 <[^>]*> lb \$a0,0\(\$at\)
+0+00b4 <[^>]*> lbu \$at,1\(\$at\)
+0+00b8 <[^>]*> sll \$a0,\$a0,0x8
+0+00bc <[^>]*> or \$a0,\$a0,\$at
+0+00c0 <[^>]*> addiu \$at,\$gp,0
+[      ]*RELOC: 0+00c0 [A-Z0-9_]*GPREL[A-Z0-9_]* small_external_data_label
+0+00c4 <[^>]*> lb \$a0,0\(\$at\)
+0+00c8 <[^>]*> lbu \$at,1\(\$at\)
+0+00cc <[^>]*> sll \$a0,\$a0,0x8
+0+00d0 <[^>]*> or \$a0,\$a0,\$at
+[      ]*RELOC: 0+00d0 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+00d4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+00d4 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+00d8 <[^>]*> addiu \$at,\$at,0
+0+00dc <[^>]*> lb \$a0,0\(\$at\)
+0+00e0 <[^>]*> lbu \$at,1\(\$at\)
+0+00e4 <[^>]*> sll \$a0,\$a0,0x8
+0+00e8 <[^>]*> or \$a0,\$a0,\$at
+0+00ec <[^>]*> addiu \$at,\$gp,0
+[      ]*RELOC: 0+00ec [A-Z0-9_]*GPREL[A-Z0-9_]* small_external_common
+0+00f0 <[^>]*> lb \$a0,0\(\$at\)
+0+00f4 <[^>]*> lbu \$at,1\(\$at\)
+0+00f8 <[^>]*> sll \$a0,\$a0,0x8
+0+00fc <[^>]*> or \$a0,\$a0,\$at
+[      ]*RELOC: 0+00fc [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+0100 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0100 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+0104 <[^>]*> addiu \$at,\$at,0
+0+0108 <[^>]*> lb \$a0,0\(\$at\)
+0+010c <[^>]*> lbu \$at,1\(\$at\)
+0+0110 <[^>]*> sll \$a0,\$a0,0x8
+0+0114 <[^>]*> or \$a0,\$a0,\$at
+0+0118 <[^>]*> addiu \$at,\$gp,[-0-9]+
+[      ]*RELOC: 0+0118 [A-Z0-9_]*GPREL[A-Z0-9_]* .sbss.*
+0+011c <[^>]*> lb \$a0,0\(\$at\)
+0+0120 <[^>]*> lbu \$at,1\(\$at\)
+0+0124 <[^>]*> sll \$a0,\$a0,0x8
+0+0128 <[^>]*> or \$a0,\$a0,\$at
+0+012c <[^>]*> lui \$at,0
+[      ]*RELOC: 0+012c [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+0130 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0130 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+0134 <[^>]*> lb \$a0,0\(\$at\)
+0+0138 <[^>]*> lbu \$at,1\(\$at\)
+0+013c <[^>]*> sll \$a0,\$a0,0x8
+0+0140 <[^>]*> or \$a0,\$a0,\$at
+0+0144 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0144 [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+0148 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0148 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+014c <[^>]*> lb \$a0,0\(\$at\)
+0+0150 <[^>]*> lbu \$at,1\(\$at\)
+0+0154 <[^>]*> sll \$a0,\$a0,0x8
+0+0158 <[^>]*> or \$a0,\$a0,\$at
+0+015c <[^>]*> lui \$at,0
+[      ]*RELOC: 0+015c [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+0160 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0160 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+0164 <[^>]*> lb \$a0,0\(\$at\)
+0+0168 <[^>]*> lbu \$at,1\(\$at\)
+0+016c <[^>]*> sll \$a0,\$a0,0x8
+0+0170 <[^>]*> or \$a0,\$a0,\$at
+0+0174 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0174 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+0178 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0178 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+017c <[^>]*> lb \$a0,0\(\$at\)
+0+0180 <[^>]*> lbu \$at,1\(\$at\)
+0+0184 <[^>]*> sll \$a0,\$a0,0x8
+0+0188 <[^>]*> or \$a0,\$a0,\$at
+0+018c <[^>]*> lui \$at,0
+[      ]*RELOC: 0+018c [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+0190 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0190 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+0194 <[^>]*> lb \$a0,0\(\$at\)
+0+0198 <[^>]*> lbu \$at,1\(\$at\)
+0+019c <[^>]*> sll \$a0,\$a0,0x8
+0+01a0 <[^>]*> or \$a0,\$a0,\$at
+0+01a4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+01a4 [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+01a8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+01a8 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+01ac <[^>]*> lb \$a0,0\(\$at\)
+0+01b0 <[^>]*> lbu \$at,1\(\$at\)
+0+01b4 <[^>]*> sll \$a0,\$a0,0x8
+0+01b8 <[^>]*> or \$a0,\$a0,\$at
+0+01bc <[^>]*> lui \$at,0
+[      ]*RELOC: 0+01bc [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+01c0 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+01c0 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+01c4 <[^>]*> lb \$a0,0\(\$at\)
+0+01c8 <[^>]*> lbu \$at,1\(\$at\)
+0+01cc <[^>]*> sll \$a0,\$a0,0x8
+0+01d0 <[^>]*> or \$a0,\$a0,\$at
+0+01d4 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+01d4 [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+01d8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+01d8 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+01dc <[^>]*> lb \$a0,0\(\$at\)
+0+01e0 <[^>]*> lbu \$at,1\(\$at\)
+0+01e4 <[^>]*> sll \$a0,\$a0,0x8
+0+01e8 <[^>]*> or \$a0,\$a0,\$at
+0+01ec <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+01ec [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+01f0 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+01f0 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+01f4 <[^>]*> lb \$a0,0\(\$at\)
+0+01f8 <[^>]*> lbu \$at,1\(\$at\)
+0+01fc <[^>]*> sll \$a0,\$a0,0x8
+0+0200 <[^>]*> or \$a0,\$a0,\$at
+0+0204 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0204 [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+0208 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0208 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+020c <[^>]*> lb \$a0,0\(\$at\)
+0+0210 <[^>]*> lbu \$at,1\(\$at\)
+0+0214 <[^>]*> sll \$a0,\$a0,0x8
+0+0218 <[^>]*> or \$a0,\$a0,\$at
+0+021c <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+021c [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+0220 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0220 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+0224 <[^>]*> lb \$a0,0\(\$at\)
+0+0228 <[^>]*> lbu \$at,1\(\$at\)
+0+022c <[^>]*> sll \$a0,\$a0,0x8
+0+0230 <[^>]*> or \$a0,\$a0,\$at
+0+0234 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0234 [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+0238 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0238 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+023c <[^>]*> lb \$a0,0\(\$at\)
+0+0240 <[^>]*> lbu \$at,1\(\$at\)
+0+0244 <[^>]*> sll \$a0,\$a0,0x8
+0+0248 <[^>]*> or \$a0,\$a0,\$at
+0+024c <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+024c [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+0250 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0250 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+0254 <[^>]*> lb \$a0,0\(\$at\)
+0+0258 <[^>]*> lbu \$at,1\(\$at\)
+0+025c <[^>]*> sll \$a0,\$a0,0x8
+0+0260 <[^>]*> or \$a0,\$a0,\$at
+0+0264 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0264 [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+0268 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0268 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+026c <[^>]*> lb \$a0,0\(\$at\)
+0+0270 <[^>]*> lbu \$at,1\(\$at\)
+0+0274 <[^>]*> sll \$a0,\$a0,0x8
+0+0278 <[^>]*> or \$a0,\$a0,\$at
+0+027c <[^>]*> lui \$at,0
+[      ]*RELOC: 0+027c [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+0280 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0280 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+0284 <[^>]*> lb \$a0,0\(\$at\)
+0+0288 <[^>]*> lbu \$at,1\(\$at\)
+0+028c <[^>]*> sll \$a0,\$a0,0x8
+0+0290 <[^>]*> or \$a0,\$a0,\$at
+0+0294 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0294 [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+0298 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0298 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+029c <[^>]*> lb \$a0,0\(\$at\)
+0+02a0 <[^>]*> lbu \$at,1\(\$at\)
+0+02a4 <[^>]*> sll \$a0,\$a0,0x8
+0+02a8 <[^>]*> or \$a0,\$a0,\$at
+0+02ac <[^>]*> lui \$at,0
+[      ]*RELOC: 0+02ac [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+02b0 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+02b0 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+02b4 <[^>]*> lb \$a0,0\(\$at\)
+0+02b8 <[^>]*> lbu \$at,1\(\$at\)
+0+02bc <[^>]*> sll \$a0,\$a0,0x8
+0+02c0 <[^>]*> or \$a0,\$a0,\$at
+0+02c4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+02c4 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+02c8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+02c8 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+02cc <[^>]*> lb \$a0,0\(\$at\)
+0+02d0 <[^>]*> lbu \$at,1\(\$at\)
+0+02d4 <[^>]*> sll \$a0,\$a0,0x8
+0+02d8 <[^>]*> or \$a0,\$a0,\$at
+0+02dc <[^>]*> lui \$at,0
+[      ]*RELOC: 0+02dc [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+02e0 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+02e0 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+02e4 <[^>]*> lb \$a0,0\(\$at\)
+0+02e8 <[^>]*> lbu \$at,1\(\$at\)
+0+02ec <[^>]*> sll \$a0,\$a0,0x8
+0+02f0 <[^>]*> or \$a0,\$a0,\$at
+0+02f4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+02f4 [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+02f8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+02f8 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+02fc <[^>]*> lb \$a0,0\(\$at\)
+0+0300 <[^>]*> lbu \$at,1\(\$at\)
+0+0304 <[^>]*> sll \$a0,\$a0,0x8
+0+0308 <[^>]*> or \$a0,\$a0,\$at
+0+030c <[^>]*> lui \$at,0
+[      ]*RELOC: 0+030c [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+0310 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0310 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+0314 <[^>]*> lb \$a0,0\(\$at\)
+0+0318 <[^>]*> lbu \$at,1\(\$at\)
+0+031c <[^>]*> sll \$a0,\$a0,0x8
+0+0320 <[^>]*> or \$a0,\$a0,\$at
+0+0324 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0324 [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+0328 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0328 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+032c <[^>]*> lb \$a0,0\(\$at\)
+0+0330 <[^>]*> lbu \$at,1\(\$at\)
+0+0334 <[^>]*> sll \$a0,\$a0,0x8
+0+0338 <[^>]*> or \$a0,\$a0,\$at
+0+033c <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+033c [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+0340 <[^>]*> addiu \$at,\$at,0
+[      ]*RELOC: 0+0340 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+0344 <[^>]*> lb \$a0,0\(\$at\)
+0+0348 <[^>]*> lbu \$at,1\(\$at\)
+0+034c <[^>]*> sll \$a0,\$a0,0x8
+0+0350 <[^>]*> or \$a0,\$a0,\$at
+0+0354 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0354 [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+0358 <[^>]*> addiu \$at,\$at,0
+[      ]*RELOC: 0+0358 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+035c <[^>]*> lb \$a0,0\(\$at\)
+0+0360 <[^>]*> lbu \$at,1\(\$at\)
+0+0364 <[^>]*> sll \$a0,\$a0,0x8
+0+0368 <[^>]*> or \$a0,\$a0,\$at
+0+036c <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+036c [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+0370 <[^>]*> addiu \$at,\$at,0
+[      ]*RELOC: 0+0370 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+0374 <[^>]*> lb \$a0,0\(\$at\)
+0+0378 <[^>]*> lbu \$at,1\(\$at\)
+0+037c <[^>]*> sll \$a0,\$a0,0x8
+0+0380 <[^>]*> or \$a0,\$a0,\$at
+0+0384 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0384 [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+0388 <[^>]*> addiu \$at,\$at,0
+[      ]*RELOC: 0+0388 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+038c <[^>]*> lb \$a0,0\(\$at\)
+0+0390 <[^>]*> lbu \$at,1\(\$at\)
+0+0394 <[^>]*> sll \$a0,\$a0,0x8
+0+0398 <[^>]*> or \$a0,\$a0,\$at
+0+039c <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+039c [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+03a0 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+03a0 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+03a4 <[^>]*> lb \$a0,0\(\$at\)
+0+03a8 <[^>]*> lbu \$at,1\(\$at\)
+0+03ac <[^>]*> sll \$a0,\$a0,0x8
+0+03b0 <[^>]*> or \$a0,\$a0,\$at
+0+03b4 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+03b4 [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+03b8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+03b8 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+03bc <[^>]*> lb \$a0,0\(\$at\)
+0+03c0 <[^>]*> lbu \$at,1\(\$at\)
+0+03c4 <[^>]*> sll \$a0,\$a0,0x8
+0+03c8 <[^>]*> or \$a0,\$a0,\$at
+0+03cc <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+03cc [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+03d0 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+03d0 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+03d4 <[^>]*> lb \$a0,0\(\$at\)
+0+03d8 <[^>]*> lbu \$at,1\(\$at\)
+0+03dc <[^>]*> sll \$a0,\$a0,0x8
+0+03e0 <[^>]*> or \$a0,\$a0,\$at
+0+03e4 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+03e4 [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+03e8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+03e8 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+03ec <[^>]*> lb \$a0,0\(\$at\)
+0+03f0 <[^>]*> lbu \$at,1\(\$at\)
+0+03f4 <[^>]*> sll \$a0,\$a0,0x8
+0+03f8 <[^>]*> or \$a0,\$a0,\$at
+0+03fc <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+03fc [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+0400 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0400 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+0404 <[^>]*> lb \$a0,0\(\$at\)
+0+0408 <[^>]*> lbu \$at,1\(\$at\)
+0+040c <[^>]*> sll \$a0,\$a0,0x8
+0+0410 <[^>]*> or \$a0,\$a0,\$at
+0+0414 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0414 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+0418 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0418 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+041c <[^>]*> lb \$a0,0\(\$at\)
+0+0420 <[^>]*> lbu \$at,1\(\$at\)
+0+0424 <[^>]*> sll \$a0,\$a0,0x8
+0+0428 <[^>]*> or \$a0,\$a0,\$at
+0+042c <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+042c [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+0430 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0430 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+0434 <[^>]*> lb \$a0,0\(\$at\)
+0+0438 <[^>]*> lbu \$at,1\(\$at\)
+0+043c <[^>]*> sll \$a0,\$a0,0x8
+0+0440 <[^>]*> or \$a0,\$a0,\$at
+0+0444 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0444 [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+0448 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0448 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+044c <[^>]*> lb \$a0,0\(\$at\)
+0+0450 <[^>]*> lbu \$at,1\(\$at\)
+0+0454 <[^>]*> sll \$a0,\$a0,0x8
+0+0458 <[^>]*> or \$a0,\$a0,\$at
+0+045c <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+045c [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+0460 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0460 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+0464 <[^>]*> lb \$a0,0\(\$at\)
+0+0468 <[^>]*> lbu \$at,1\(\$at\)
+0+046c <[^>]*> sll \$a0,\$a0,0x8
+0+0470 <[^>]*> or \$a0,\$a0,\$at
+0+0474 <[^>]*> lbu \$a0,0\(\$zero\)
+0+0478 <[^>]*> lbu \$at,1\(\$zero\)
+0+047c <[^>]*> sll \$a0,\$a0,0x8
+0+0480 <[^>]*> or \$a0,\$a0,\$at
+...
diff --git a/gas/testsuite/gas/mips/ulh.s b/gas/testsuite/gas/mips/ulh.s
new file mode 100644 (file)
index 0000000..92dfb1a
--- /dev/null
@@ -0,0 +1,65 @@
+# Source file used to test the ulh macro.
+       
+       .data
+data_label:
+       .extern big_external_data_label,1000
+       .extern small_external_data_label,1
+       .comm big_external_common,1000
+       .comm small_external_common,1
+       .lcomm big_local_common,1000
+       .lcomm small_local_common,1
+       
+       .text
+       ulh     $4,0
+       ulh     $4,1
+       ulh     $4,0x8000
+       ulh     $4,-0x8000
+       ulh     $4,0x10000
+       ulh     $4,0x1a5a5
+       ulh     $4,0($5)
+       ulh     $4,1($5)
+       ulh     $4,data_label
+       ulh     $4,big_external_data_label
+       ulh     $4,small_external_data_label
+       ulh     $4,big_external_common
+       ulh     $4,small_external_common
+       ulh     $4,big_local_common
+       ulh     $4,small_local_common
+       ulh     $4,data_label+1
+       ulh     $4,big_external_data_label+1
+       ulh     $4,small_external_data_label+1
+       ulh     $4,big_external_common+1
+       ulh     $4,small_external_common+1
+       ulh     $4,big_local_common+1
+       ulh     $4,small_local_common+1
+       ulh     $4,data_label+0x8000
+       ulh     $4,big_external_data_label+0x8000
+       ulh     $4,small_external_data_label+0x8000
+       ulh     $4,big_external_common+0x8000
+       ulh     $4,small_external_common+0x8000
+       ulh     $4,big_local_common+0x8000
+       ulh     $4,small_local_common+0x8000
+       ulh     $4,data_label-0x8000
+       ulh     $4,big_external_data_label-0x8000
+       ulh     $4,small_external_data_label-0x8000
+       ulh     $4,big_external_common-0x8000
+       ulh     $4,small_external_common-0x8000
+       ulh     $4,big_local_common-0x8000
+       ulh     $4,small_local_common-0x8000
+       ulh     $4,data_label+0x10000
+       ulh     $4,big_external_data_label+0x10000
+       ulh     $4,small_external_data_label+0x10000
+       ulh     $4,big_external_common+0x10000
+       ulh     $4,small_external_common+0x10000
+       ulh     $4,big_local_common+0x10000
+       ulh     $4,small_local_common+0x10000
+       ulh     $4,data_label+0x1a5a5
+       ulh     $4,big_external_data_label+0x1a5a5
+       ulh     $4,small_external_data_label+0x1a5a5
+       ulh     $4,big_external_common+0x1a5a5
+       ulh     $4,small_external_common+0x1a5a5
+       ulh     $4,big_local_common+0x1a5a5
+       ulh     $4,small_local_common+0x1a5a5
+
+# ulhu is handled like ulh.  Sanity check it.
+       ulhu    $4,0
diff --git a/gas/testsuite/gas/mips/ulw.d b/gas/testsuite/gas/mips/ulw.d
new file mode 100644 (file)
index 0000000..e85831c
--- /dev/null
@@ -0,0 +1,276 @@
+#objdump: -dr
+#name: ulw
+#as: -mips1
+
+# Test the ulw macro.
+
+.*: +file format .*mips.*
+
+Disassembly of section .text:
+0+0000 <[^>]*> lwl \$a0,0\(\$zero\)
+0+0004 <[^>]*> lwr \$a0,3\(\$zero\)
+0+0008 <[^>]*> lwl \$a0,1\(\$zero\)
+0+000c <[^>]*> lwr \$a0,4\(\$zero\)
+0+0010 <[^>]*> li \$at,32768
+0+0014 <[^>]*> lwl \$a0,0\(\$at\)
+0+0018 <[^>]*> lwr \$a0,3\(\$at\)
+0+001c <[^>]*> lwl \$a0,-32768\(\$zero\)
+0+0020 <[^>]*> lwr \$a0,-32765\(\$zero\)
+0+0024 <[^>]*> lui \$at,1
+0+0028 <[^>]*> lwl \$a0,0\(\$at\)
+0+002c <[^>]*> lwr \$a0,3\(\$at\)
+0+0030 <[^>]*> lui \$at,1
+0+0034 <[^>]*> ori \$at,\$at,42405
+0+0038 <[^>]*> lwl \$a0,0\(\$at\)
+0+003c <[^>]*> lwr \$a0,3\(\$at\)
+0+0040 <[^>]*> lwl \$a0,0\(\$a1\)
+0+0044 <[^>]*> lwr \$a0,3\(\$a1\)
+0+0048 <[^>]*> lwl \$a0,1\(\$a1\)
+0+004c <[^>]*> lwr \$a0,[-0-9]+\(\$a1\)
+[      ]*RELOC: 0+004c [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+0050 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0050 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+0054 <[^>]*> addiu \$at,\$at,0
+0+0058 <[^>]*> lwl \$a0,0\(\$at\)
+0+005c <[^>]*> lwr \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+005c [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+0060 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0060 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+0064 <[^>]*> addiu \$at,\$at,0
+0+0068 <[^>]*> lwl \$a0,0\(\$at\)
+0+006c <[^>]*> lwr \$a0,3\(\$at\)
+0+0070 <[^>]*> addiu \$at,\$gp,0
+[      ]*RELOC: 0+0070 [A-Z0-9_]*GPREL[A-Z0-9_]* small_external_data_label
+0+0074 <[^>]*> lwl \$a0,0\(\$at\)
+0+0078 <[^>]*> lwr \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0078 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+007c <[^>]*> lui \$at,0
+[      ]*RELOC: 0+007c [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+0080 <[^>]*> addiu \$at,\$at,0
+0+0084 <[^>]*> lwl \$a0,0\(\$at\)
+0+0088 <[^>]*> lwr \$a0,3\(\$at\)
+0+008c <[^>]*> addiu \$at,\$gp,0
+[      ]*RELOC: 0+008c [A-Z0-9_]*GPREL[A-Z0-9_]* small_external_common
+0+0090 <[^>]*> lwl \$a0,0\(\$at\)
+0+0094 <[^>]*> lwr \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0094 [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+0098 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0098 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+009c <[^>]*> addiu \$at,\$at,0
+0+00a0 <[^>]*> lwl \$a0,0\(\$at\)
+0+00a4 <[^>]*> lwr \$a0,3\(\$at\)
+0+00a8 <[^>]*> addiu \$at,\$gp,[-0-9]+
+[      ]*RELOC: 0+00a8 [A-Z0-9_]*GPREL[A-Z0-9_]* .sbss.*
+0+00ac <[^>]*> lwl \$a0,0\(\$at\)
+0+00b0 <[^>]*> lwr \$a0,3\(\$at\)
+0+00b4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+00b4 [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+00b8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+00b8 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+00bc <[^>]*> lwl \$a0,0\(\$at\)
+0+00c0 <[^>]*> lwr \$a0,3\(\$at\)
+0+00c4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+00c4 [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+00c8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+00c8 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+00cc <[^>]*> lwl \$a0,0\(\$at\)
+0+00d0 <[^>]*> lwr \$a0,3\(\$at\)
+0+00d4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+00d4 [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+00d8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+00d8 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+00dc <[^>]*> lwl \$a0,0\(\$at\)
+0+00e0 <[^>]*> lwr \$a0,3\(\$at\)
+0+00e4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+00e4 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+00e8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+00e8 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+00ec <[^>]*> lwl \$a0,0\(\$at\)
+0+00f0 <[^>]*> lwr \$a0,3\(\$at\)
+0+00f4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+00f4 [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+00f8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+00f8 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+00fc <[^>]*> lwl \$a0,0\(\$at\)
+0+0100 <[^>]*> lwr \$a0,3\(\$at\)
+0+0104 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0104 [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+0108 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0108 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+010c <[^>]*> lwl \$a0,0\(\$at\)
+0+0110 <[^>]*> lwr \$a0,3\(\$at\)
+0+0114 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0114 [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+0118 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0118 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+011c <[^>]*> lwl \$a0,0\(\$at\)
+0+0120 <[^>]*> lwr \$a0,3\(\$at\)
+0+0124 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0124 [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+0128 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0128 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+012c <[^>]*> lwl \$a0,0\(\$at\)
+0+0130 <[^>]*> lwr \$a0,3\(\$at\)
+0+0134 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0134 [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+0138 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0138 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+013c <[^>]*> lwl \$a0,0\(\$at\)
+0+0140 <[^>]*> lwr \$a0,3\(\$at\)
+0+0144 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0144 [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+0148 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0148 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+014c <[^>]*> lwl \$a0,0\(\$at\)
+0+0150 <[^>]*> lwr \$a0,3\(\$at\)
+0+0154 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0154 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+0158 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0158 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+015c <[^>]*> lwl \$a0,0\(\$at\)
+0+0160 <[^>]*> lwr \$a0,3\(\$at\)
+0+0164 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0164 [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+0168 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0168 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+016c <[^>]*> lwl \$a0,0\(\$at\)
+0+0170 <[^>]*> lwr \$a0,3\(\$at\)
+0+0174 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0174 [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+0178 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0178 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+017c <[^>]*> lwl \$a0,0\(\$at\)
+0+0180 <[^>]*> lwr \$a0,3\(\$at\)
+0+0184 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0184 [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+0188 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0188 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+018c <[^>]*> lwl \$a0,0\(\$at\)
+0+0190 <[^>]*> lwr \$a0,3\(\$at\)
+0+0194 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0194 [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+0198 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0198 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+019c <[^>]*> lwl \$a0,0\(\$at\)
+0+01a0 <[^>]*> lwr \$a0,3\(\$at\)
+0+01a4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+01a4 [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+01a8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+01a8 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+01ac <[^>]*> lwl \$a0,0\(\$at\)
+0+01b0 <[^>]*> lwr \$a0,3\(\$at\)
+0+01b4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+01b4 [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+01b8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+01b8 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+01bc <[^>]*> lwl \$a0,0\(\$at\)
+0+01c0 <[^>]*> lwr \$a0,3\(\$at\)
+0+01c4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+01c4 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+01c8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+01c8 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+01cc <[^>]*> lwl \$a0,0\(\$at\)
+0+01d0 <[^>]*> lwr \$a0,3\(\$at\)
+0+01d4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+01d4 [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+01d8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+01d8 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+01dc <[^>]*> lwl \$a0,0\(\$at\)
+0+01e0 <[^>]*> lwr \$a0,3\(\$at\)
+0+01e4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+01e4 [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+01e8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+01e8 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+01ec <[^>]*> lwl \$a0,0\(\$at\)
+0+01f0 <[^>]*> lwr \$a0,3\(\$at\)
+0+01f4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+01f4 [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+01f8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+01f8 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+01fc <[^>]*> lwl \$a0,0\(\$at\)
+0+0200 <[^>]*> lwr \$a0,3\(\$at\)
+0+0204 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0204 [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+0208 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0208 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+020c <[^>]*> lwl \$a0,0\(\$at\)
+0+0210 <[^>]*> lwr \$a0,3\(\$at\)
+0+0214 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0214 [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+0218 <[^>]*> addiu \$at,\$at,0
+[      ]*RELOC: 0+0218 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+021c <[^>]*> lwl \$a0,0\(\$at\)
+0+0220 <[^>]*> lwr \$a0,3\(\$at\)
+0+0224 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0224 [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+0228 <[^>]*> addiu \$at,\$at,0
+[      ]*RELOC: 0+0228 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+022c <[^>]*> lwl \$a0,0\(\$at\)
+0+0230 <[^>]*> lwr \$a0,3\(\$at\)
+0+0234 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0234 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+0238 <[^>]*> addiu \$at,\$at,0
+[      ]*RELOC: 0+0238 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+023c <[^>]*> lwl \$a0,0\(\$at\)
+0+0240 <[^>]*> lwr \$a0,3\(\$at\)
+0+0244 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0244 [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+0248 <[^>]*> addiu \$at,\$at,0
+[      ]*RELOC: 0+0248 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+024c <[^>]*> lwl \$a0,0\(\$at\)
+0+0250 <[^>]*> lwr \$a0,3\(\$at\)
+0+0254 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0254 [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+0258 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0258 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+025c <[^>]*> lwl \$a0,0\(\$at\)
+0+0260 <[^>]*> lwr \$a0,3\(\$at\)
+0+0264 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0264 [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+0268 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0268 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+026c <[^>]*> lwl \$a0,0\(\$at\)
+0+0270 <[^>]*> lwr \$a0,3\(\$at\)
+0+0274 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0274 [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+0278 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0278 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+027c <[^>]*> lwl \$a0,0\(\$at\)
+0+0280 <[^>]*> lwr \$a0,3\(\$at\)
+0+0284 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0284 [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+0288 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0288 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+028c <[^>]*> lwl \$a0,0\(\$at\)
+0+0290 <[^>]*> lwr \$a0,3\(\$at\)
+0+0294 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0294 [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+0298 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0298 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+029c <[^>]*> lwl \$a0,0\(\$at\)
+0+02a0 <[^>]*> lwr \$a0,3\(\$at\)
+0+02a4 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+02a4 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+02a8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+02a8 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+02ac <[^>]*> lwl \$a0,0\(\$at\)
+0+02b0 <[^>]*> lwr \$a0,3\(\$at\)
+0+02b4 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+02b4 [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+02b8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+02b8 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+02bc <[^>]*> lwl \$a0,0\(\$at\)
+0+02c0 <[^>]*> lwr \$a0,3\(\$at\)
+0+02c4 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+02c4 [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+02c8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+02c8 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+02cc <[^>]*> lwl \$a0,0\(\$at\)
+0+02d0 <[^>]*> lwr \$a0,3\(\$at\)
+0+02d4 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+02d4 [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+02d8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+02d8 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+02dc <[^>]*> lwl \$a0,0\(\$at\)
+0+02e0 <[^>]*> lwr \$a0,3\(\$at\)
+...
diff --git a/gas/testsuite/gas/mips/ulw.s b/gas/testsuite/gas/mips/ulw.s
new file mode 100644 (file)
index 0000000..e422549
--- /dev/null
@@ -0,0 +1,62 @@
+# Source file used to test the ulw macro.
+       
+       .data
+data_label:
+       .extern big_external_data_label,1000
+       .extern small_external_data_label,1
+       .comm big_external_common,1000
+       .comm small_external_common,1
+       .lcomm big_local_common,1000
+       .lcomm small_local_common,1
+       
+       .text
+       ulw     $4,0
+       ulw     $4,1
+       ulw     $4,0x8000
+       ulw     $4,-0x8000
+       ulw     $4,0x10000
+       ulw     $4,0x1a5a5
+       ulw     $4,0($5)
+       ulw     $4,1($5)
+       ulw     $4,data_label
+       ulw     $4,big_external_data_label
+       ulw     $4,small_external_data_label
+       ulw     $4,big_external_common
+       ulw     $4,small_external_common
+       ulw     $4,big_local_common
+       ulw     $4,small_local_common
+       ulw     $4,data_label+1
+       ulw     $4,big_external_data_label+1
+       ulw     $4,small_external_data_label+1
+       ulw     $4,big_external_common+1
+       ulw     $4,small_external_common+1
+       ulw     $4,big_local_common+1
+       ulw     $4,small_local_common+1
+       ulw     $4,data_label+0x8000
+       ulw     $4,big_external_data_label+0x8000
+       ulw     $4,small_external_data_label+0x8000
+       ulw     $4,big_external_common+0x8000
+       ulw     $4,small_external_common+0x8000
+       ulw     $4,big_local_common+0x8000
+       ulw     $4,small_local_common+0x8000
+       ulw     $4,data_label-0x8000
+       ulw     $4,big_external_data_label-0x8000
+       ulw     $4,small_external_data_label-0x8000
+       ulw     $4,big_external_common-0x8000
+       ulw     $4,small_external_common-0x8000
+       ulw     $4,big_local_common-0x8000
+       ulw     $4,small_local_common-0x8000
+       ulw     $4,data_label+0x10000
+       ulw     $4,big_external_data_label+0x10000
+       ulw     $4,small_external_data_label+0x10000
+       ulw     $4,big_external_common+0x10000
+       ulw     $4,small_external_common+0x10000
+       ulw     $4,big_local_common+0x10000
+       ulw     $4,small_local_common+0x10000
+       ulw     $4,data_label+0x1a5a5
+       ulw     $4,big_external_data_label+0x1a5a5
+       ulw     $4,small_external_data_label+0x1a5a5
+       ulw     $4,big_external_common+0x1a5a5
+       ulw     $4,small_external_common+0x1a5a5
+       ulw     $4,big_local_common+0x1a5a5
+       ulw     $4,small_local_common+0x1a5a5
diff --git a/gas/testsuite/gas/mips/ush.d b/gas/testsuite/gas/mips/ush.d
new file mode 100644 (file)
index 0000000..099dc54
--- /dev/null
@@ -0,0 +1,461 @@
+#objdump: -dr
+#name: ush
+#as: -mips1
+
+# Test the ush macro.
+
+.*: +file format .*mips.*
+
+Disassembly of section .text:
+0+0000 <[^>]*> sb \$a0,1\(\$zero\)
+0+0004 <[^>]*> srl \$at,\$a0,0x8
+0+0008 <[^>]*> sb \$at,0\(\$zero\)
+0+000c <[^>]*> sb \$a0,2\(\$zero\)
+0+0010 <[^>]*> srl \$at,\$a0,0x8
+0+0014 <[^>]*> sb \$at,1\(\$zero\)
+0+0018 <[^>]*> li \$at,32768
+0+001c <[^>]*> sb \$a0,1\(\$at\)
+0+0020 <[^>]*> srl \$a0,\$a0,0x8
+0+0024 <[^>]*> sb \$a0,0\(\$at\)
+0+0028 <[^>]*> lbu \$at,1\(\$at\)
+0+002c <[^>]*> sll \$a0,\$a0,0x8
+0+0030 <[^>]*> or \$a0,\$a0,\$at
+0+0034 <[^>]*> sb \$a0,-32767\(\$zero\)
+0+0038 <[^>]*> srl \$at,\$a0,0x8
+0+003c <[^>]*> sb \$at,-32768\(\$zero\)
+0+0040 <[^>]*> lui \$at,1
+0+0044 <[^>]*> sb \$a0,1\(\$at\)
+0+0048 <[^>]*> srl \$a0,\$a0,0x8
+0+004c <[^>]*> sb \$a0,0\(\$at\)
+0+0050 <[^>]*> lbu \$at,1\(\$at\)
+0+0054 <[^>]*> sll \$a0,\$a0,0x8
+0+0058 <[^>]*> or \$a0,\$a0,\$at
+0+005c <[^>]*> lui \$at,1
+0+0060 <[^>]*> ori \$at,\$at,42405
+0+0064 <[^>]*> sb \$a0,1\(\$at\)
+0+0068 <[^>]*> srl \$a0,\$a0,0x8
+0+006c <[^>]*> sb \$a0,0\(\$at\)
+0+0070 <[^>]*> lbu \$at,1\(\$at\)
+0+0074 <[^>]*> sll \$a0,\$a0,0x8
+0+0078 <[^>]*> or \$a0,\$a0,\$at
+0+007c <[^>]*> sb \$a0,1\(\$a1\)
+0+0080 <[^>]*> srl \$at,\$a0,0x8
+0+0084 <[^>]*> sb \$at,0\(\$a1\)
+0+0088 <[^>]*> sb \$a0,2\(\$a1\)
+0+008c <[^>]*> srl \$at,\$a0,0x8
+0+0090 <[^>]*> sb \$at,[-0-9]+\(\$a1\)
+[      ]*RELOC: 0+0090 [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+0094 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0094 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+0098 <[^>]*> addiu \$at,\$at,0
+0+009c <[^>]*> sb \$a0,1\(\$at\)
+0+00a0 <[^>]*> srl \$a0,\$a0,0x8
+0+00a4 <[^>]*> sb \$a0,0\(\$at\)
+0+00a8 <[^>]*> lbu \$at,1\(\$at\)
+0+00ac <[^>]*> sll \$a0,\$a0,0x8
+0+00b0 <[^>]*> or \$a0,\$a0,\$at
+[      ]*RELOC: 0+00b0 [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+00b4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+00b4 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+00b8 <[^>]*> addiu \$at,\$at,0
+0+00bc <[^>]*> sb \$a0,1\(\$at\)
+0+00c0 <[^>]*> srl \$a0,\$a0,0x8
+0+00c4 <[^>]*> sb \$a0,0\(\$at\)
+0+00c8 <[^>]*> lbu \$at,1\(\$at\)
+0+00cc <[^>]*> sll \$a0,\$a0,0x8
+0+00d0 <[^>]*> or \$a0,\$a0,\$at
+0+00d4 <[^>]*> addiu \$at,\$gp,0
+[      ]*RELOC: 0+00d4 [A-Z0-9_]*GPREL[A-Z0-9_]* small_external_data_label
+0+00d8 <[^>]*> sb \$a0,1\(\$at\)
+0+00dc <[^>]*> srl \$a0,\$a0,0x8
+0+00e0 <[^>]*> sb \$a0,0\(\$at\)
+0+00e4 <[^>]*> lbu \$at,1\(\$at\)
+0+00e8 <[^>]*> sll \$a0,\$a0,0x8
+0+00ec <[^>]*> or \$a0,\$a0,\$at
+[      ]*RELOC: 0+00ec [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+00f0 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+00f0 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+00f4 <[^>]*> addiu \$at,\$at,0
+0+00f8 <[^>]*> sb \$a0,1\(\$at\)
+0+00fc <[^>]*> srl \$a0,\$a0,0x8
+0+0100 <[^>]*> sb \$a0,0\(\$at\)
+0+0104 <[^>]*> lbu \$at,1\(\$at\)
+0+0108 <[^>]*> sll \$a0,\$a0,0x8
+0+010c <[^>]*> or \$a0,\$a0,\$at
+0+0110 <[^>]*> addiu \$at,\$gp,0
+[      ]*RELOC: 0+0110 [A-Z0-9_]*GPREL[A-Z0-9_]* small_external_common
+0+0114 <[^>]*> sb \$a0,1\(\$at\)
+0+0118 <[^>]*> srl \$a0,\$a0,0x8
+0+011c <[^>]*> sb \$a0,0\(\$at\)
+0+0120 <[^>]*> lbu \$at,1\(\$at\)
+0+0124 <[^>]*> sll \$a0,\$a0,0x8
+0+0128 <[^>]*> or \$a0,\$a0,\$at
+[      ]*RELOC: 0+0128 [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+012c <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+012c [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+0130 <[^>]*> addiu \$at,\$at,0
+0+0134 <[^>]*> sb \$a0,1\(\$at\)
+0+0138 <[^>]*> srl \$a0,\$a0,0x8
+0+013c <[^>]*> sb \$a0,0\(\$at\)
+0+0140 <[^>]*> lbu \$at,1\(\$at\)
+0+0144 <[^>]*> sll \$a0,\$a0,0x8
+0+0148 <[^>]*> or \$a0,\$a0,\$at
+0+014c <[^>]*> addiu \$at,\$gp,[-0-9]+
+[      ]*RELOC: 0+014c [A-Z0-9_]*GPREL[A-Z0-9_]* .sbss.*
+0+0150 <[^>]*> sb \$a0,1\(\$at\)
+0+0154 <[^>]*> srl \$a0,\$a0,0x8
+0+0158 <[^>]*> sb \$a0,0\(\$at\)
+0+015c <[^>]*> lbu \$at,1\(\$at\)
+0+0160 <[^>]*> sll \$a0,\$a0,0x8
+0+0164 <[^>]*> or \$a0,\$a0,\$at
+0+0168 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0168 [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+016c <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+016c [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+0170 <[^>]*> sb \$a0,1\(\$at\)
+0+0174 <[^>]*> srl \$a0,\$a0,0x8
+0+0178 <[^>]*> sb \$a0,0\(\$at\)
+0+017c <[^>]*> lbu \$at,1\(\$at\)
+0+0180 <[^>]*> sll \$a0,\$a0,0x8
+0+0184 <[^>]*> or \$a0,\$a0,\$at
+0+0188 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0188 [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+018c <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+018c [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+0190 <[^>]*> sb \$a0,1\(\$at\)
+0+0194 <[^>]*> srl \$a0,\$a0,0x8
+0+0198 <[^>]*> sb \$a0,0\(\$at\)
+0+019c <[^>]*> lbu \$at,1\(\$at\)
+0+01a0 <[^>]*> sll \$a0,\$a0,0x8
+0+01a4 <[^>]*> or \$a0,\$a0,\$at
+0+01a8 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+01a8 [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+01ac <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+01ac [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+01b0 <[^>]*> sb \$a0,1\(\$at\)
+0+01b4 <[^>]*> srl \$a0,\$a0,0x8
+0+01b8 <[^>]*> sb \$a0,0\(\$at\)
+0+01bc <[^>]*> lbu \$at,1\(\$at\)
+0+01c0 <[^>]*> sll \$a0,\$a0,0x8
+0+01c4 <[^>]*> or \$a0,\$a0,\$at
+0+01c8 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+01c8 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+01cc <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+01cc [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+01d0 <[^>]*> sb \$a0,1\(\$at\)
+0+01d4 <[^>]*> srl \$a0,\$a0,0x8
+0+01d8 <[^>]*> sb \$a0,0\(\$at\)
+0+01dc <[^>]*> lbu \$at,1\(\$at\)
+0+01e0 <[^>]*> sll \$a0,\$a0,0x8
+0+01e4 <[^>]*> or \$a0,\$a0,\$at
+0+01e8 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+01e8 [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+01ec <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+01ec [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+01f0 <[^>]*> sb \$a0,1\(\$at\)
+0+01f4 <[^>]*> srl \$a0,\$a0,0x8
+0+01f8 <[^>]*> sb \$a0,0\(\$at\)
+0+01fc <[^>]*> lbu \$at,1\(\$at\)
+0+0200 <[^>]*> sll \$a0,\$a0,0x8
+0+0204 <[^>]*> or \$a0,\$a0,\$at
+0+0208 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0208 [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+020c <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+020c [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+0210 <[^>]*> sb \$a0,1\(\$at\)
+0+0214 <[^>]*> srl \$a0,\$a0,0x8
+0+0218 <[^>]*> sb \$a0,0\(\$at\)
+0+021c <[^>]*> lbu \$at,1\(\$at\)
+0+0220 <[^>]*> sll \$a0,\$a0,0x8
+0+0224 <[^>]*> or \$a0,\$a0,\$at
+0+0228 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0228 [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+022c <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+022c [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+0230 <[^>]*> sb \$a0,1\(\$at\)
+0+0234 <[^>]*> srl \$a0,\$a0,0x8
+0+0238 <[^>]*> sb \$a0,0\(\$at\)
+0+023c <[^>]*> lbu \$at,1\(\$at\)
+0+0240 <[^>]*> sll \$a0,\$a0,0x8
+0+0244 <[^>]*> or \$a0,\$a0,\$at
+0+0248 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0248 [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+024c <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+024c [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+0250 <[^>]*> sb \$a0,1\(\$at\)
+0+0254 <[^>]*> srl \$a0,\$a0,0x8
+0+0258 <[^>]*> sb \$a0,0\(\$at\)
+0+025c <[^>]*> lbu \$at,1\(\$at\)
+0+0260 <[^>]*> sll \$a0,\$a0,0x8
+0+0264 <[^>]*> or \$a0,\$a0,\$at
+0+0268 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0268 [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+026c <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+026c [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+0270 <[^>]*> sb \$a0,1\(\$at\)
+0+0274 <[^>]*> srl \$a0,\$a0,0x8
+0+0278 <[^>]*> sb \$a0,0\(\$at\)
+0+027c <[^>]*> lbu \$at,1\(\$at\)
+0+0280 <[^>]*> sll \$a0,\$a0,0x8
+0+0284 <[^>]*> or \$a0,\$a0,\$at
+0+0288 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0288 [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+028c <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+028c [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+0290 <[^>]*> sb \$a0,1\(\$at\)
+0+0294 <[^>]*> srl \$a0,\$a0,0x8
+0+0298 <[^>]*> sb \$a0,0\(\$at\)
+0+029c <[^>]*> lbu \$at,1\(\$at\)
+0+02a0 <[^>]*> sll \$a0,\$a0,0x8
+0+02a4 <[^>]*> or \$a0,\$a0,\$at
+0+02a8 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+02a8 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+02ac <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+02ac [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+02b0 <[^>]*> sb \$a0,1\(\$at\)
+0+02b4 <[^>]*> srl \$a0,\$a0,0x8
+0+02b8 <[^>]*> sb \$a0,0\(\$at\)
+0+02bc <[^>]*> lbu \$at,1\(\$at\)
+0+02c0 <[^>]*> sll \$a0,\$a0,0x8
+0+02c4 <[^>]*> or \$a0,\$a0,\$at
+0+02c8 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+02c8 [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+02cc <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+02cc [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+02d0 <[^>]*> sb \$a0,1\(\$at\)
+0+02d4 <[^>]*> srl \$a0,\$a0,0x8
+0+02d8 <[^>]*> sb \$a0,0\(\$at\)
+0+02dc <[^>]*> lbu \$at,1\(\$at\)
+0+02e0 <[^>]*> sll \$a0,\$a0,0x8
+0+02e4 <[^>]*> or \$a0,\$a0,\$at
+0+02e8 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+02e8 [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+02ec <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+02ec [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+02f0 <[^>]*> sb \$a0,1\(\$at\)
+0+02f4 <[^>]*> srl \$a0,\$a0,0x8
+0+02f8 <[^>]*> sb \$a0,0\(\$at\)
+0+02fc <[^>]*> lbu \$at,1\(\$at\)
+0+0300 <[^>]*> sll \$a0,\$a0,0x8
+0+0304 <[^>]*> or \$a0,\$a0,\$at
+0+0308 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0308 [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+030c <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+030c [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+0310 <[^>]*> sb \$a0,1\(\$at\)
+0+0314 <[^>]*> srl \$a0,\$a0,0x8
+0+0318 <[^>]*> sb \$a0,0\(\$at\)
+0+031c <[^>]*> lbu \$at,1\(\$at\)
+0+0320 <[^>]*> sll \$a0,\$a0,0x8
+0+0324 <[^>]*> or \$a0,\$a0,\$at
+0+0328 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0328 [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+032c <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+032c [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+0330 <[^>]*> sb \$a0,1\(\$at\)
+0+0334 <[^>]*> srl \$a0,\$a0,0x8
+0+0338 <[^>]*> sb \$a0,0\(\$at\)
+0+033c <[^>]*> lbu \$at,1\(\$at\)
+0+0340 <[^>]*> sll \$a0,\$a0,0x8
+0+0344 <[^>]*> or \$a0,\$a0,\$at
+0+0348 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0348 [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+034c <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+034c [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+0350 <[^>]*> sb \$a0,1\(\$at\)
+0+0354 <[^>]*> srl \$a0,\$a0,0x8
+0+0358 <[^>]*> sb \$a0,0\(\$at\)
+0+035c <[^>]*> lbu \$at,1\(\$at\)
+0+0360 <[^>]*> sll \$a0,\$a0,0x8
+0+0364 <[^>]*> or \$a0,\$a0,\$at
+0+0368 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0368 [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+036c <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+036c [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+0370 <[^>]*> sb \$a0,1\(\$at\)
+0+0374 <[^>]*> srl \$a0,\$a0,0x8
+0+0378 <[^>]*> sb \$a0,0\(\$at\)
+0+037c <[^>]*> lbu \$at,1\(\$at\)
+0+0380 <[^>]*> sll \$a0,\$a0,0x8
+0+0384 <[^>]*> or \$a0,\$a0,\$at
+0+0388 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0388 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+038c <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+038c [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+0390 <[^>]*> sb \$a0,1\(\$at\)
+0+0394 <[^>]*> srl \$a0,\$a0,0x8
+0+0398 <[^>]*> sb \$a0,0\(\$at\)
+0+039c <[^>]*> lbu \$at,1\(\$at\)
+0+03a0 <[^>]*> sll \$a0,\$a0,0x8
+0+03a4 <[^>]*> or \$a0,\$a0,\$at
+0+03a8 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+03a8 [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+03ac <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+03ac [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+03b0 <[^>]*> sb \$a0,1\(\$at\)
+0+03b4 <[^>]*> srl \$a0,\$a0,0x8
+0+03b8 <[^>]*> sb \$a0,0\(\$at\)
+0+03bc <[^>]*> lbu \$at,1\(\$at\)
+0+03c0 <[^>]*> sll \$a0,\$a0,0x8
+0+03c4 <[^>]*> or \$a0,\$a0,\$at
+0+03c8 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+03c8 [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+03cc <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+03cc [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+03d0 <[^>]*> sb \$a0,1\(\$at\)
+0+03d4 <[^>]*> srl \$a0,\$a0,0x8
+0+03d8 <[^>]*> sb \$a0,0\(\$at\)
+0+03dc <[^>]*> lbu \$at,1\(\$at\)
+0+03e0 <[^>]*> sll \$a0,\$a0,0x8
+0+03e4 <[^>]*> or \$a0,\$a0,\$at
+0+03e8 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+03e8 [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+03ec <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+03ec [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+03f0 <[^>]*> sb \$a0,1\(\$at\)
+0+03f4 <[^>]*> srl \$a0,\$a0,0x8
+0+03f8 <[^>]*> sb \$a0,0\(\$at\)
+0+03fc <[^>]*> lbu \$at,1\(\$at\)
+0+0400 <[^>]*> sll \$a0,\$a0,0x8
+0+0404 <[^>]*> or \$a0,\$a0,\$at
+0+0408 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0408 [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+040c <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+040c [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+0410 <[^>]*> sb \$a0,1\(\$at\)
+0+0414 <[^>]*> srl \$a0,\$a0,0x8
+0+0418 <[^>]*> sb \$a0,0\(\$at\)
+0+041c <[^>]*> lbu \$at,1\(\$at\)
+0+0420 <[^>]*> sll \$a0,\$a0,0x8
+0+0424 <[^>]*> or \$a0,\$a0,\$at
+0+0428 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0428 [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+042c <[^>]*> addiu \$at,\$at,0
+[      ]*RELOC: 0+042c [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+0430 <[^>]*> sb \$a0,1\(\$at\)
+0+0434 <[^>]*> srl \$a0,\$a0,0x8
+0+0438 <[^>]*> sb \$a0,0\(\$at\)
+0+043c <[^>]*> lbu \$at,1\(\$at\)
+0+0440 <[^>]*> sll \$a0,\$a0,0x8
+0+0444 <[^>]*> or \$a0,\$a0,\$at
+0+0448 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0448 [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+044c <[^>]*> addiu \$at,\$at,0
+[      ]*RELOC: 0+044c [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+0450 <[^>]*> sb \$a0,1\(\$at\)
+0+0454 <[^>]*> srl \$a0,\$a0,0x8
+0+0458 <[^>]*> sb \$a0,0\(\$at\)
+0+045c <[^>]*> lbu \$at,1\(\$at\)
+0+0460 <[^>]*> sll \$a0,\$a0,0x8
+0+0464 <[^>]*> or \$a0,\$a0,\$at
+0+0468 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0468 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+046c <[^>]*> addiu \$at,\$at,0
+[      ]*RELOC: 0+046c [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+0470 <[^>]*> sb \$a0,1\(\$at\)
+0+0474 <[^>]*> srl \$a0,\$a0,0x8
+0+0478 <[^>]*> sb \$a0,0\(\$at\)
+0+047c <[^>]*> lbu \$at,1\(\$at\)
+0+0480 <[^>]*> sll \$a0,\$a0,0x8
+0+0484 <[^>]*> or \$a0,\$a0,\$at
+0+0488 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0488 [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+048c <[^>]*> addiu \$at,\$at,0
+[      ]*RELOC: 0+048c [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+0490 <[^>]*> sb \$a0,1\(\$at\)
+0+0494 <[^>]*> srl \$a0,\$a0,0x8
+0+0498 <[^>]*> sb \$a0,0\(\$at\)
+0+049c <[^>]*> lbu \$at,1\(\$at\)
+0+04a0 <[^>]*> sll \$a0,\$a0,0x8
+0+04a4 <[^>]*> or \$a0,\$a0,\$at
+0+04a8 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+04a8 [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+04ac <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+04ac [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+04b0 <[^>]*> sb \$a0,1\(\$at\)
+0+04b4 <[^>]*> srl \$a0,\$a0,0x8
+0+04b8 <[^>]*> sb \$a0,0\(\$at\)
+0+04bc <[^>]*> lbu \$at,1\(\$at\)
+0+04c0 <[^>]*> sll \$a0,\$a0,0x8
+0+04c4 <[^>]*> or \$a0,\$a0,\$at
+0+04c8 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+04c8 [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+04cc <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+04cc [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+04d0 <[^>]*> sb \$a0,1\(\$at\)
+0+04d4 <[^>]*> srl \$a0,\$a0,0x8
+0+04d8 <[^>]*> sb \$a0,0\(\$at\)
+0+04dc <[^>]*> lbu \$at,1\(\$at\)
+0+04e0 <[^>]*> sll \$a0,\$a0,0x8
+0+04e4 <[^>]*> or \$a0,\$a0,\$at
+0+04e8 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+04e8 [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+04ec <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+04ec [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+04f0 <[^>]*> sb \$a0,1\(\$at\)
+0+04f4 <[^>]*> srl \$a0,\$a0,0x8
+0+04f8 <[^>]*> sb \$a0,0\(\$at\)
+0+04fc <[^>]*> lbu \$at,1\(\$at\)
+0+0500 <[^>]*> sll \$a0,\$a0,0x8
+0+0504 <[^>]*> or \$a0,\$a0,\$at
+0+0508 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0508 [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+050c <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+050c [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+0510 <[^>]*> sb \$a0,1\(\$at\)
+0+0514 <[^>]*> srl \$a0,\$a0,0x8
+0+0518 <[^>]*> sb \$a0,0\(\$at\)
+0+051c <[^>]*> lbu \$at,1\(\$at\)
+0+0520 <[^>]*> sll \$a0,\$a0,0x8
+0+0524 <[^>]*> or \$a0,\$a0,\$at
+0+0528 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0528 [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+052c <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+052c [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+0530 <[^>]*> sb \$a0,1\(\$at\)
+0+0534 <[^>]*> srl \$a0,\$a0,0x8
+0+0538 <[^>]*> sb \$a0,0\(\$at\)
+0+053c <[^>]*> lbu \$at,1\(\$at\)
+0+0540 <[^>]*> sll \$a0,\$a0,0x8
+0+0544 <[^>]*> or \$a0,\$a0,\$at
+0+0548 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0548 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+054c <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+054c [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+0550 <[^>]*> sb \$a0,1\(\$at\)
+0+0554 <[^>]*> srl \$a0,\$a0,0x8
+0+0558 <[^>]*> sb \$a0,0\(\$at\)
+0+055c <[^>]*> lbu \$at,1\(\$at\)
+0+0560 <[^>]*> sll \$a0,\$a0,0x8
+0+0564 <[^>]*> or \$a0,\$a0,\$at
+0+0568 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0568 [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+056c <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+056c [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+0570 <[^>]*> sb \$a0,1\(\$at\)
+0+0574 <[^>]*> srl \$a0,\$a0,0x8
+0+0578 <[^>]*> sb \$a0,0\(\$at\)
+0+057c <[^>]*> lbu \$at,1\(\$at\)
+0+0580 <[^>]*> sll \$a0,\$a0,0x8
+0+0584 <[^>]*> or \$a0,\$a0,\$at
+0+0588 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0588 [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+058c <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+058c [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+0590 <[^>]*> sb \$a0,1\(\$at\)
+0+0594 <[^>]*> srl \$a0,\$a0,0x8
+0+0598 <[^>]*> sb \$a0,0\(\$at\)
+0+059c <[^>]*> lbu \$at,1\(\$at\)
+0+05a0 <[^>]*> sll \$a0,\$a0,0x8
+0+05a4 <[^>]*> or \$a0,\$a0,\$at
+0+05a8 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+05a8 [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+05ac <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+05ac [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+05b0 <[^>]*> sb \$a0,1\(\$at\)
+0+05b4 <[^>]*> srl \$a0,\$a0,0x8
+0+05b8 <[^>]*> sb \$a0,0\(\$at\)
+0+05bc <[^>]*> lbu \$at,1\(\$at\)
+0+05c0 <[^>]*> sll \$a0,\$a0,0x8
+0+05c4 <[^>]*> or \$a0,\$a0,\$at
+...
diff --git a/gas/testsuite/gas/mips/ush.s b/gas/testsuite/gas/mips/ush.s
new file mode 100644 (file)
index 0000000..ad6f651
--- /dev/null
@@ -0,0 +1,62 @@
+# Source file used to test the ush macro.
+       
+       .data
+data_label:
+       .extern big_external_data_label,1000
+       .extern small_external_data_label,1
+       .comm big_external_common,1000
+       .comm small_external_common,1
+       .lcomm big_local_common,1000
+       .lcomm small_local_common,1
+       
+       .text
+       ush     $4,0
+       ush     $4,1
+       ush     $4,0x8000
+       ush     $4,-0x8000
+       ush     $4,0x10000
+       ush     $4,0x1a5a5
+       ush     $4,0($5)
+       ush     $4,1($5)
+       ush     $4,data_label
+       ush     $4,big_external_data_label
+       ush     $4,small_external_data_label
+       ush     $4,big_external_common
+       ush     $4,small_external_common
+       ush     $4,big_local_common
+       ush     $4,small_local_common
+       ush     $4,data_label+1
+       ush     $4,big_external_data_label+1
+       ush     $4,small_external_data_label+1
+       ush     $4,big_external_common+1
+       ush     $4,small_external_common+1
+       ush     $4,big_local_common+1
+       ush     $4,small_local_common+1
+       ush     $4,data_label+0x8000
+       ush     $4,big_external_data_label+0x8000
+       ush     $4,small_external_data_label+0x8000
+       ush     $4,big_external_common+0x8000
+       ush     $4,small_external_common+0x8000
+       ush     $4,big_local_common+0x8000
+       ush     $4,small_local_common+0x8000
+       ush     $4,data_label-0x8000
+       ush     $4,big_external_data_label-0x8000
+       ush     $4,small_external_data_label-0x8000
+       ush     $4,big_external_common-0x8000
+       ush     $4,small_external_common-0x8000
+       ush     $4,big_local_common-0x8000
+       ush     $4,small_local_common-0x8000
+       ush     $4,data_label+0x10000
+       ush     $4,big_external_data_label+0x10000
+       ush     $4,small_external_data_label+0x10000
+       ush     $4,big_external_common+0x10000
+       ush     $4,small_external_common+0x10000
+       ush     $4,big_local_common+0x10000
+       ush     $4,small_local_common+0x10000
+       ush     $4,data_label+0x1a5a5
+       ush     $4,big_external_data_label+0x1a5a5
+       ush     $4,small_external_data_label+0x1a5a5
+       ush     $4,big_external_common+0x1a5a5
+       ush     $4,small_external_common+0x1a5a5
+       ush     $4,big_local_common+0x1a5a5
+       ush     $4,small_local_common+0x1a5a5
diff --git a/gas/testsuite/gas/mips/usw.d b/gas/testsuite/gas/mips/usw.d
new file mode 100644 (file)
index 0000000..e65f9c2
--- /dev/null
@@ -0,0 +1,276 @@
+#objdump: -dr
+#name: usw
+#as: -mips1
+
+# Test the usw macro.
+
+.*: +file format .*mips.*
+
+Disassembly of section .text:
+0+0000 <[^>]*> swl \$a0,0\(\$zero\)
+0+0004 <[^>]*> swr \$a0,3\(\$zero\)
+0+0008 <[^>]*> swl \$a0,1\(\$zero\)
+0+000c <[^>]*> swr \$a0,4\(\$zero\)
+0+0010 <[^>]*> li \$at,32768
+0+0014 <[^>]*> swl \$a0,0\(\$at\)
+0+0018 <[^>]*> swr \$a0,3\(\$at\)
+0+001c <[^>]*> swl \$a0,-32768\(\$zero\)
+0+0020 <[^>]*> swr \$a0,-32765\(\$zero\)
+0+0024 <[^>]*> lui \$at,1
+0+0028 <[^>]*> swl \$a0,0\(\$at\)
+0+002c <[^>]*> swr \$a0,3\(\$at\)
+0+0030 <[^>]*> lui \$at,1
+0+0034 <[^>]*> ori \$at,\$at,42405
+0+0038 <[^>]*> swl \$a0,0\(\$at\)
+0+003c <[^>]*> swr \$a0,3\(\$at\)
+0+0040 <[^>]*> swl \$a0,0\(\$a1\)
+0+0044 <[^>]*> swr \$a0,3\(\$a1\)
+0+0048 <[^>]*> swl \$a0,1\(\$a1\)
+0+004c <[^>]*> swr \$a0,[-0-9]+\(\$a1\)
+[      ]*RELOC: 0+004c [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+0050 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0050 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+0054 <[^>]*> addiu \$at,\$at,0
+0+0058 <[^>]*> swl \$a0,0\(\$at\)
+0+005c <[^>]*> swr \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+005c [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+0060 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0060 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+0064 <[^>]*> addiu \$at,\$at,0
+0+0068 <[^>]*> swl \$a0,0\(\$at\)
+0+006c <[^>]*> swr \$a0,3\(\$at\)
+0+0070 <[^>]*> addiu \$at,\$gp,0
+[      ]*RELOC: 0+0070 [A-Z0-9_]*GPREL[A-Z0-9_]* small_external_data_label
+0+0074 <[^>]*> swl \$a0,0\(\$at\)
+0+0078 <[^>]*> swr \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0078 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+007c <[^>]*> lui \$at,0
+[      ]*RELOC: 0+007c [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+0080 <[^>]*> addiu \$at,\$at,0
+0+0084 <[^>]*> swl \$a0,0\(\$at\)
+0+0088 <[^>]*> swr \$a0,3\(\$at\)
+0+008c <[^>]*> addiu \$at,\$gp,0
+[      ]*RELOC: 0+008c [A-Z0-9_]*GPREL[A-Z0-9_]* small_external_common
+0+0090 <[^>]*> swl \$a0,0\(\$at\)
+0+0094 <[^>]*> swr \$a0,[-0-9]+\(\$at\)
+[      ]*RELOC: 0+0094 [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+0098 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0098 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+009c <[^>]*> addiu \$at,\$at,0
+0+00a0 <[^>]*> swl \$a0,0\(\$at\)
+0+00a4 <[^>]*> swr \$a0,3\(\$at\)
+0+00a8 <[^>]*> addiu \$at,\$gp,[-0-9]+
+[      ]*RELOC: 0+00a8 [A-Z0-9_]*GPREL[A-Z0-9_]* .sbss.*
+0+00ac <[^>]*> swl \$a0,0\(\$at\)
+0+00b0 <[^>]*> swr \$a0,3\(\$at\)
+0+00b4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+00b4 [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+00b8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+00b8 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+00bc <[^>]*> swl \$a0,0\(\$at\)
+0+00c0 <[^>]*> swr \$a0,3\(\$at\)
+0+00c4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+00c4 [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+00c8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+00c8 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+00cc <[^>]*> swl \$a0,0\(\$at\)
+0+00d0 <[^>]*> swr \$a0,3\(\$at\)
+0+00d4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+00d4 [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+00d8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+00d8 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+00dc <[^>]*> swl \$a0,0\(\$at\)
+0+00e0 <[^>]*> swr \$a0,3\(\$at\)
+0+00e4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+00e4 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+00e8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+00e8 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+00ec <[^>]*> swl \$a0,0\(\$at\)
+0+00f0 <[^>]*> swr \$a0,3\(\$at\)
+0+00f4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+00f4 [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+00f8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+00f8 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+00fc <[^>]*> swl \$a0,0\(\$at\)
+0+0100 <[^>]*> swr \$a0,3\(\$at\)
+0+0104 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0104 [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+0108 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0108 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+010c <[^>]*> swl \$a0,0\(\$at\)
+0+0110 <[^>]*> swr \$a0,3\(\$at\)
+0+0114 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0114 [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+0118 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0118 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+011c <[^>]*> swl \$a0,0\(\$at\)
+0+0120 <[^>]*> swr \$a0,3\(\$at\)
+0+0124 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0124 [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+0128 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0128 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+012c <[^>]*> swl \$a0,0\(\$at\)
+0+0130 <[^>]*> swr \$a0,3\(\$at\)
+0+0134 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0134 [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+0138 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0138 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+013c <[^>]*> swl \$a0,0\(\$at\)
+0+0140 <[^>]*> swr \$a0,3\(\$at\)
+0+0144 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0144 [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+0148 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0148 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+014c <[^>]*> swl \$a0,0\(\$at\)
+0+0150 <[^>]*> swr \$a0,3\(\$at\)
+0+0154 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0154 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+0158 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0158 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+015c <[^>]*> swl \$a0,0\(\$at\)
+0+0160 <[^>]*> swr \$a0,3\(\$at\)
+0+0164 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0164 [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+0168 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0168 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+016c <[^>]*> swl \$a0,0\(\$at\)
+0+0170 <[^>]*> swr \$a0,3\(\$at\)
+0+0174 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0174 [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+0178 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0178 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+017c <[^>]*> swl \$a0,0\(\$at\)
+0+0180 <[^>]*> swr \$a0,3\(\$at\)
+0+0184 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0184 [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+0188 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0188 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+018c <[^>]*> swl \$a0,0\(\$at\)
+0+0190 <[^>]*> swr \$a0,3\(\$at\)
+0+0194 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+0194 [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+0198 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0198 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+019c <[^>]*> swl \$a0,0\(\$at\)
+0+01a0 <[^>]*> swr \$a0,3\(\$at\)
+0+01a4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+01a4 [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+01a8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+01a8 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+01ac <[^>]*> swl \$a0,0\(\$at\)
+0+01b0 <[^>]*> swr \$a0,3\(\$at\)
+0+01b4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+01b4 [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+01b8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+01b8 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+01bc <[^>]*> swl \$a0,0\(\$at\)
+0+01c0 <[^>]*> swr \$a0,3\(\$at\)
+0+01c4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+01c4 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+01c8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+01c8 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+01cc <[^>]*> swl \$a0,0\(\$at\)
+0+01d0 <[^>]*> swr \$a0,3\(\$at\)
+0+01d4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+01d4 [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+01d8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+01d8 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+01dc <[^>]*> swl \$a0,0\(\$at\)
+0+01e0 <[^>]*> swr \$a0,3\(\$at\)
+0+01e4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+01e4 [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+01e8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+01e8 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+01ec <[^>]*> swl \$a0,0\(\$at\)
+0+01f0 <[^>]*> swr \$a0,3\(\$at\)
+0+01f4 <[^>]*> lui \$at,0
+[      ]*RELOC: 0+01f4 [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+01f8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+01f8 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+01fc <[^>]*> swl \$a0,0\(\$at\)
+0+0200 <[^>]*> swr \$a0,3\(\$at\)
+0+0204 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0204 [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+0208 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0208 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+020c <[^>]*> swl \$a0,0\(\$at\)
+0+0210 <[^>]*> swr \$a0,3\(\$at\)
+0+0214 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0214 [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+0218 <[^>]*> addiu \$at,\$at,0
+[      ]*RELOC: 0+0218 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+021c <[^>]*> swl \$a0,0\(\$at\)
+0+0220 <[^>]*> swr \$a0,3\(\$at\)
+0+0224 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0224 [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+0228 <[^>]*> addiu \$at,\$at,0
+[      ]*RELOC: 0+0228 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+022c <[^>]*> swl \$a0,0\(\$at\)
+0+0230 <[^>]*> swr \$a0,3\(\$at\)
+0+0234 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0234 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+0238 <[^>]*> addiu \$at,\$at,0
+[      ]*RELOC: 0+0238 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+023c <[^>]*> swl \$a0,0\(\$at\)
+0+0240 <[^>]*> swr \$a0,3\(\$at\)
+0+0244 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0244 [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+0248 <[^>]*> addiu \$at,\$at,0
+[      ]*RELOC: 0+0248 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+024c <[^>]*> swl \$a0,0\(\$at\)
+0+0250 <[^>]*> swr \$a0,3\(\$at\)
+0+0254 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0254 [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+0258 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0258 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+025c <[^>]*> swl \$a0,0\(\$at\)
+0+0260 <[^>]*> swr \$a0,3\(\$at\)
+0+0264 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0264 [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+0268 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0268 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+026c <[^>]*> swl \$a0,0\(\$at\)
+0+0270 <[^>]*> swr \$a0,3\(\$at\)
+0+0274 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0274 [A-Z0-9_]*HI[A-Z0-9_]* .data.*
+0+0278 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0278 [A-Z0-9_]*LO[A-Z0-9_]* .data.*
+0+027c <[^>]*> swl \$a0,0\(\$at\)
+0+0280 <[^>]*> swr \$a0,3\(\$at\)
+0+0284 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0284 [A-Z0-9_]*HI[A-Z0-9_]* big_external_data_label
+0+0288 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0288 [A-Z0-9_]*LO[A-Z0-9_]* big_external_data_label
+0+028c <[^>]*> swl \$a0,0\(\$at\)
+0+0290 <[^>]*> swr \$a0,3\(\$at\)
+0+0294 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+0294 [A-Z0-9_]*HI[A-Z0-9_]* small_external_data_label
+0+0298 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+0298 [A-Z0-9_]*LO[A-Z0-9_]* small_external_data_label
+0+029c <[^>]*> swl \$a0,0\(\$at\)
+0+02a0 <[^>]*> swr \$a0,3\(\$at\)
+0+02a4 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+02a4 [A-Z0-9_]*HI[A-Z0-9_]* big_external_common
+0+02a8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+02a8 [A-Z0-9_]*LO[A-Z0-9_]* big_external_common
+0+02ac <[^>]*> swl \$a0,0\(\$at\)
+0+02b0 <[^>]*> swr \$a0,3\(\$at\)
+0+02b4 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+02b4 [A-Z0-9_]*HI[A-Z0-9_]* small_external_common
+0+02b8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+02b8 [A-Z0-9_]*LO[A-Z0-9_]* small_external_common
+0+02bc <[^>]*> swl \$a0,0\(\$at\)
+0+02c0 <[^>]*> swr \$a0,3\(\$at\)
+0+02c4 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+02c4 [A-Z0-9_]*HI[A-Z0-9_]* .bss.*
+0+02c8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+02c8 [A-Z0-9_]*LO[A-Z0-9_]* .bss.*
+0+02cc <[^>]*> swl \$a0,0\(\$at\)
+0+02d0 <[^>]*> swr \$a0,3\(\$at\)
+0+02d4 <[^>]*> lui \$at,[-0-9]+
+[      ]*RELOC: 0+02d4 [A-Z0-9_]*HI[A-Z0-9_]* .sbss.*
+0+02d8 <[^>]*> addiu \$at,\$at,[-0-9]+
+[      ]*RELOC: 0+02d8 [A-Z0-9_]*LO[A-Z0-9_]* .sbss.*
+0+02dc <[^>]*> swl \$a0,0\(\$at\)
+0+02e0 <[^>]*> swr \$a0,3\(\$at\)
+...
diff --git a/gas/testsuite/gas/mips/usw.s b/gas/testsuite/gas/mips/usw.s
new file mode 100644 (file)
index 0000000..64486cf
--- /dev/null
@@ -0,0 +1,62 @@
+# Source file used to test the usw macro.
+       
+       .data
+data_label:
+       .extern big_external_data_label,1000
+       .extern small_external_data_label,1
+       .comm big_external_common,1000
+       .comm small_external_common,1
+       .lcomm big_local_common,1000
+       .lcomm small_local_common,1
+       
+       .text
+       usw     $4,0
+       usw     $4,1
+       usw     $4,0x8000
+       usw     $4,-0x8000
+       usw     $4,0x10000
+       usw     $4,0x1a5a5
+       usw     $4,0($5)
+       usw     $4,1($5)
+       usw     $4,data_label
+       usw     $4,big_external_data_label
+       usw     $4,small_external_data_label
+       usw     $4,big_external_common
+       usw     $4,small_external_common
+       usw     $4,big_local_common
+       usw     $4,small_local_common
+       usw     $4,data_label+1
+       usw     $4,big_external_data_label+1
+       usw     $4,small_external_data_label+1
+       usw     $4,big_external_common+1
+       usw     $4,small_external_common+1
+       usw     $4,big_local_common+1
+       usw     $4,small_local_common+1
+       usw     $4,data_label+0x8000
+       usw     $4,big_external_data_label+0x8000
+       usw     $4,small_external_data_label+0x8000
+       usw     $4,big_external_common+0x8000
+       usw     $4,small_external_common+0x8000
+       usw     $4,big_local_common+0x8000
+       usw     $4,small_local_common+0x8000
+       usw     $4,data_label-0x8000
+       usw     $4,big_external_data_label-0x8000
+       usw     $4,small_external_data_label-0x8000
+       usw     $4,big_external_common-0x8000
+       usw     $4,small_external_common-0x8000
+       usw     $4,big_local_common-0x8000
+       usw     $4,small_local_common-0x8000
+       usw     $4,data_label+0x10000
+       usw     $4,big_external_data_label+0x10000
+       usw     $4,small_external_data_label+0x10000
+       usw     $4,big_external_common+0x10000
+       usw     $4,small_external_common+0x10000
+       usw     $4,big_local_common+0x10000
+       usw     $4,small_local_common+0x10000
+       usw     $4,data_label+0x1a5a5
+       usw     $4,big_external_data_label+0x1a5a5
+       usw     $4,small_external_data_label+0x1a5a5
+       usw     $4,big_external_common+0x1a5a5
+       usw     $4,small_external_common+0x1a5a5
+       usw     $4,big_local_common+0x1a5a5
+       usw     $4,small_local_common+0x1a5a5
This page took 0.078338 seconds and 4 git commands to generate.