This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] gas: Implement a MIPS ".set at=REG" directive


Hello,

 This idea has been bouncing in my head for quite a while now and I have 
finally come to implement it.  The motivation was the ability to be able 
to use the k0 or k1 register at the exception level for ABI-agnostic code 
which may wish to load an address or suchlike without going through 
horrible hassle.  Also Linux regards the use $1 as a place to keep 
precious data a good idea (cf. arch/mips/lib/*.S) and for such code, if 
need be, it might be easier to specify another register as the temporary 
than to rewrite the code.  And last but not least, gas is a tool which 
should serve its purpose and I recognise the coupling of the assembler 
temporary register to $1 as an unnecessary limitation inspired by the MIPS 
ABI.

 In the end it has turned out to be much easier to implement than I 
worried it would.

 Here is a patch that extends the semantics of the ".set at" directive, by 
adding an optional argument that lets one specify a register to use as the 
temporary.  Under the bonnet it boils down to converting the option from a 
binary, to a numeric, which specifies the temporary register to use.  All 
the usual ways to call the register are accepted, with $0 meaning no 
temporary is allowed as with ".set noat".

 With this change in place the following applies:

1. ".set at=$0" is the same as ".set noat" and disables the use of an 
   assembler temporary register altogether.

2. ".set at=$1" is the same as ".set at" and makes $1 the assembler 
   temporary register.

3. ".set at=$2", ".set at=$3", ".set at=$ra", etc. designate the named 
   register the assembler temporary until another ".set at=REG", ".set at" 
   or ".set noat" directive is encountered.

That is, in particular, old code only using ".set at" and ".set noat" sees 
no difference.

gas/:
2007-10-01  Maciej W. Rozycki  <macro@linux-mips.org>

	* config/tc-mips.c (AT): Rename to...
	(ATREG): ... this.
	(AT): New definition.
	(mips_set_options): Rename "noat" to "at"; change the type.
	(mips_opts): Update accordingly.
	(append_insn): Likewise.
	(macro_build_ldst_constoffset): Likewise.
	(load_address): Likewise.
	(macro, macro2): Likewise.
	(s_mipsset): Handle ".set at=REG".  Update handling of ".set at" 
	and ".set noat".

gas/testsuite/:
2007-10-01  Maciej W. Rozycki  <macro@linux-mips.org>

	* gas/mips/at-1.d, gas/mips/at-2.l: New tests to check the ".set 
	at=REG" directive.
	* gas/mips/at-1.s, gas/mips/at-2.s: Sources for the new tests.
	* gas/mips/mips.exp: Run the new tests.

 This change has been tested natively for mips64el-linux-gnu with no 
regressions; the included new cases do pass as well.  OK to apply?

  Maciej

binutils-2.18-mips-set-at.patch
diff -up --recursive --new-file binutils-2.18.macro/gas/config/tc-mips.c binutils-2.18/gas/config/tc-mips.c
--- binutils-2.18.macro/gas/config/tc-mips.c	2007-08-06 20:00:02.000000000 +0000
+++ binutils-2.18/gas/config/tc-mips.c	2007-09-29 19:08:26.000000000 +0000
@@ -89,7 +89,7 @@ static char *mips_regmask_frag;
 #endif
 
 #define ZERO 0
-#define AT  1
+#define ATREG 1
 #define TREG 24
 #define PIC_CALL_REG 25
 #define KT0 26
@@ -101,6 +101,8 @@ static char *mips_regmask_frag;
 
 #define ILLEGAL_REG (32)
 
+#define AT  mips_opts.at
+
 /* Allow override of standard little-endian ECOFF format.  */
 
 #ifndef ECOFF_LITTLE_FORMAT
@@ -203,9 +205,11 @@ struct mips_set_options
   /* Non-zero if we should not reorder instructions.  Changed by `.set
      reorder' and `.set noreorder'.  */
   int noreorder;
-  /* Non-zero if we should not permit the $at ($1) register to be used
-     in instructions.  Changed by `.set at' and `.set noat'.  */
-  int noat;
+  /* Non-zero if we should not permit the register designated "assembler
+     temporary" to be used in instructions.  The value is the register
+     number, normally $at ($1).  Changed by `.set at=REG', `.set noat'
+     (same as `.set at=$0') and `.set at' (same as `.set at=$1').  */
+  unsigned int at;
   /* Non-zero if we should warn when a macro instruction expands into
      more than one machine instruction.  Changed by `.set nomacro' and
      `.set macro'.  */
@@ -245,7 +249,7 @@ static int file_mips_fp32 = -1;
 
 static struct mips_set_options mips_opts =
 {
-  ISA_UNKNOWN, -1, -1, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, CPU_UNKNOWN, FALSE
+  ISA_UNKNOWN, -1, -1, 0, -1, -1, -1, -1, 0, ATREG, 0, 0, 0, 0, 0, 0, CPU_UNKNOWN, FALSE
 };
 
 /* These variables are filled in with the masks of registers used.
@@ -2637,7 +2641,7 @@ append_insn (struct mips_cl_insn *ip, ex
 	 .set noat if we use $at for PIC computations.  If it turns
 	 out that the branch was out-of-range, we'll get an error.  */
       && !mips_opts.warn_about_macros
-      && !(mips_opts.noat && mips_pic != NO_PIC)
+      && (mips_opts.at || mips_pic == NO_PIC)
       && !mips_opts.mips16)
     {
       relaxed_branch = TRUE;
@@ -3815,7 +3819,7 @@ macro_build_ldst_constoffset (expression
       macro_build (NULL, ADDRESS_ADD_INSN, "d,v,t", AT, AT, breg);
       macro_build (ep, op, "t,o(b)", treg, BFD_RELOC_LO16, AT);
 
-      if (mips_opts.noat)
+      if (!mips_opts.at)
 	as_bad (_("Macro used $at after \".set noat\""));
     }
 }
@@ -4226,7 +4230,7 @@ load_address (int reg, expressionS *ep, 
 	      relax_switch ();
 	    }
 
-	  if (*used_at == 0 && !mips_opts.noat)
+	  if (*used_at == 0 && mips_opts.at)
 	    {
 	      macro_build (ep, "lui", "t,u", reg, BFD_RELOC_MIPS_HIGHEST);
 	      macro_build (ep, "lui", "t,u", AT, BFD_RELOC_HI16_S);
@@ -4415,7 +4419,7 @@ load_address (int reg, expressionS *ep, 
   else
     abort ();
 
-  if (mips_opts.noat && *used_at == 1)
+  if (!mips_opts.at && *used_at == 1)
     as_bad (_("Macro used $at after \".set noat\""));
 }
 
@@ -4524,8 +4528,8 @@ add_got_offset_hilo (int dest, expressio
 static void
 macro (struct mips_cl_insn *ip)
 {
-  int treg, sreg, dreg, breg;
-  int tempreg;
+  unsigned int treg, sreg, dreg, breg;
+  unsigned int tempreg;
   int mask;
   int used_at = 0;
   expressionS expr1;
@@ -5288,7 +5292,7 @@ macro (struct mips_cl_insn *ip)
 	  break;
 	}
 
-      if (!mips_opts.noat && (treg == breg))
+      if (mips_opts.at && (treg == breg))
 	{
 	  tempreg = AT;
 	  used_at = 1;
@@ -5347,7 +5351,7 @@ macro (struct mips_cl_insn *ip)
 		  relax_switch ();
 		}
 
-	      if (used_at == 0 && !mips_opts.noat)
+	      if (used_at == 0 && mips_opts.at)
 		{
 		  macro_build (&offset_expr, "lui", "t,u",
 			       tempreg, BFD_RELOC_MIPS_HIGHEST);
@@ -6344,7 +6348,7 @@ macro (struct mips_cl_insn *ip)
 		  relax_switch ();
 		}
 
-	      if (used_at == 0 && !mips_opts.noat)
+	      if (used_at == 0 && mips_opts.at)
 		{
 		  macro_build (&offset_expr, "lui", "t,u", tempreg,
 			       BFD_RELOC_MIPS_HIGHEST);
@@ -7137,15 +7141,15 @@ macro (struct mips_cl_insn *ip)
       macro2 (ip);
       break;
     }
-  if (mips_opts.noat && used_at)
+  if (!mips_opts.at && used_at)
     as_bad (_("Macro used $at after \".set noat\""));
 }
 
 static void
 macro2 (struct mips_cl_insn *ip)
 {
-  int treg, sreg, dreg, breg;
-  int tempreg;
+  unsigned int treg, sreg, dreg, breg;
+  unsigned int tempreg;
   int mask;
   int used_at;
   expressionS expr1;
@@ -7928,7 +7932,7 @@ macro2 (struct mips_cl_insn *ip)
       as_bad (_("Macro %s not implemented yet"), ip->insn_mo->name);
       break;
     }
-  if (mips_opts.noat && used_at)
+  if (!mips_opts.at && used_at)
     as_bad (_("Macro used $at after \".set noat\""));
 }
 
@@ -9089,8 +9093,14 @@ do_msbd:
 	      else
 		{
 		  ok = reg_lookup (&s, RTYPE_NUM | RTYPE_GP, &regno);
-		  if (regno == AT && ! mips_opts.noat)
-		    as_warn ("Used $at without \".set noat\"");
+		  if (regno == AT && mips_opts.at)
+		    {
+		      if (mips_opts.at == ATREG)
+			as_warn (_("used $at without \".set noat\""));
+		      else
+			as_warn (_("used $%u with \".set at=$%u\""),
+				 regno, mips_opts.at);
+		    }
 		}
 	      if (ok)
 		{
@@ -9983,8 +9993,14 @@ mips16_ip (char *str, struct mips_cl_ins
 
 		case 'X':
 		case 'Y':
-		  if (regno == AT && ! mips_opts.noat)
-		    as_warn (_("used $at without \".set noat\""));
+		  if (regno == AT && mips_opts.at)
+		    {
+		      if (mips_opts.at == ATREG)
+			as_warn (_("used $at without \".set noat\""));
+		      else
+			as_warn (_("used $%u with \".set at=$%u\""),
+				 regno, mips_opts.at);
+		    }
 		  break;
 
 		default:
@@ -12404,13 +12420,20 @@ s_mipsset (int x ATTRIBUTE_UNUSED)
       if (!mips_opts.noreorder)
 	start_noreorder ();
     }
+  else if (strncmp (name, "at=", 3) == 0)
+    {
+      char *s = name + 3;
+
+      if (!reg_lookup (&s, RTYPE_NUM | RTYPE_GP, &mips_opts.at))
+	as_bad (_("Unrecognized register name `%s'"), s);
+    }
   else if (strcmp (name, "at") == 0)
     {
-      mips_opts.noat = 0;
+      mips_opts.at = ATREG;
     }
   else if (strcmp (name, "noat") == 0)
     {
-      mips_opts.noat = 1;
+      mips_opts.at = ZERO;
     }
   else if (strcmp (name, "macro") == 0)
     {
diff -up --recursive --new-file binutils-2.18.macro/gas/testsuite/gas/mips/at-1.d binutils-2.18/gas/testsuite/gas/mips/at-1.d
--- binutils-2.18.macro/gas/testsuite/gas/mips/at-1.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-2.18/gas/testsuite/gas/mips/at-1.d	2007-09-29 18:32:14.000000000 +0000
@@ -0,0 +1,938 @@
+#objdump: -dr --prefix-addresses -mmips:3000
+#name: MIPS at-1
+#as: -32 -mips1
+
+# Test the .set at=REG directive.
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addu	at,at,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(at\)
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addu	at,at,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(at\)
+[0-9a-f]+ <[^>]*> lui	at,0xffff
+[0-9a-f]+ <[^>]*> addu	at,at,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(at\)
+[0-9a-f]+ <[^>]*> lui	at,0xffff
+[0-9a-f]+ <[^>]*> addu	at,at,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(at\)
+[0-9a-f]+ <[^>]*> lui	at,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	at,at,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(at\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	at,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	at,at,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(at\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	v0,0x1
+[0-9a-f]+ <[^>]*> addu	v0,v0,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(v0\)
+[0-9a-f]+ <[^>]*> lui	v0,0x1
+[0-9a-f]+ <[^>]*> addu	v0,v0,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(v0\)
+[0-9a-f]+ <[^>]*> lui	v0,0xffff
+[0-9a-f]+ <[^>]*> addu	v0,v0,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(v0\)
+[0-9a-f]+ <[^>]*> lui	v0,0xffff
+[0-9a-f]+ <[^>]*> addu	v0,v0,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(v0\)
+[0-9a-f]+ <[^>]*> lui	v0,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	v0,v0,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(v0\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	v0,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	v0,v0,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(v0\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	v1,0x1
+[0-9a-f]+ <[^>]*> addu	v1,v1,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(v1\)
+[0-9a-f]+ <[^>]*> lui	v1,0x1
+[0-9a-f]+ <[^>]*> addu	v1,v1,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(v1\)
+[0-9a-f]+ <[^>]*> lui	v1,0xffff
+[0-9a-f]+ <[^>]*> addu	v1,v1,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(v1\)
+[0-9a-f]+ <[^>]*> lui	v1,0xffff
+[0-9a-f]+ <[^>]*> addu	v1,v1,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(v1\)
+[0-9a-f]+ <[^>]*> lui	v1,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	v1,v1,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(v1\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	v1,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	v1,v1,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(v1\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	a0,0x1
+[0-9a-f]+ <[^>]*> addu	a0,a0,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(a0\)
+[0-9a-f]+ <[^>]*> lui	a0,0x1
+[0-9a-f]+ <[^>]*> addu	a0,a0,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(a0\)
+[0-9a-f]+ <[^>]*> lui	a0,0xffff
+[0-9a-f]+ <[^>]*> addu	a0,a0,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(a0\)
+[0-9a-f]+ <[^>]*> lui	a0,0xffff
+[0-9a-f]+ <[^>]*> addu	a0,a0,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(a0\)
+[0-9a-f]+ <[^>]*> lui	a0,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	a0,a0,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(a0\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	a0,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	a0,a0,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(a0\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	a1,0x1
+[0-9a-f]+ <[^>]*> addu	a1,a1,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(a1\)
+[0-9a-f]+ <[^>]*> lui	a1,0x1
+[0-9a-f]+ <[^>]*> addu	a1,a1,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(a1\)
+[0-9a-f]+ <[^>]*> lui	a1,0xffff
+[0-9a-f]+ <[^>]*> addu	a1,a1,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(a1\)
+[0-9a-f]+ <[^>]*> lui	a1,0xffff
+[0-9a-f]+ <[^>]*> addu	a1,a1,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(a1\)
+[0-9a-f]+ <[^>]*> lui	a1,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	a1,a1,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(a1\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	a1,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	a1,a1,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(a1\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	a2,0x1
+[0-9a-f]+ <[^>]*> addu	a2,a2,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(a2\)
+[0-9a-f]+ <[^>]*> lui	a2,0x1
+[0-9a-f]+ <[^>]*> addu	a2,a2,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(a2\)
+[0-9a-f]+ <[^>]*> lui	a2,0xffff
+[0-9a-f]+ <[^>]*> addu	a2,a2,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(a2\)
+[0-9a-f]+ <[^>]*> lui	a2,0xffff
+[0-9a-f]+ <[^>]*> addu	a2,a2,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(a2\)
+[0-9a-f]+ <[^>]*> lui	a2,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	a2,a2,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(a2\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	a2,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	a2,a2,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(a2\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	a3,0x1
+[0-9a-f]+ <[^>]*> addu	a3,a3,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(a3\)
+[0-9a-f]+ <[^>]*> lui	a3,0x1
+[0-9a-f]+ <[^>]*> addu	a3,a3,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(a3\)
+[0-9a-f]+ <[^>]*> lui	a3,0xffff
+[0-9a-f]+ <[^>]*> addu	a3,a3,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(a3\)
+[0-9a-f]+ <[^>]*> lui	a3,0xffff
+[0-9a-f]+ <[^>]*> addu	a3,a3,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(a3\)
+[0-9a-f]+ <[^>]*> lui	a3,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	a3,a3,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(a3\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	a3,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	a3,a3,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(a3\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	t0,0x1
+[0-9a-f]+ <[^>]*> addu	t0,t0,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(t0\)
+[0-9a-f]+ <[^>]*> lui	t0,0x1
+[0-9a-f]+ <[^>]*> addu	t0,t0,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(t0\)
+[0-9a-f]+ <[^>]*> lui	t0,0xffff
+[0-9a-f]+ <[^>]*> addu	t0,t0,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(t0\)
+[0-9a-f]+ <[^>]*> lui	t0,0xffff
+[0-9a-f]+ <[^>]*> addu	t0,t0,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(t0\)
+[0-9a-f]+ <[^>]*> lui	t0,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	t0,t0,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(t0\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	t0,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	t0,t0,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(t0\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	t1,0x1
+[0-9a-f]+ <[^>]*> addu	t1,t1,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(t1\)
+[0-9a-f]+ <[^>]*> lui	t1,0x1
+[0-9a-f]+ <[^>]*> addu	t1,t1,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(t1\)
+[0-9a-f]+ <[^>]*> lui	t1,0xffff
+[0-9a-f]+ <[^>]*> addu	t1,t1,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(t1\)
+[0-9a-f]+ <[^>]*> lui	t1,0xffff
+[0-9a-f]+ <[^>]*> addu	t1,t1,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(t1\)
+[0-9a-f]+ <[^>]*> lui	t1,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	t1,t1,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(t1\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	t1,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	t1,t1,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(t1\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	t2,0x1
+[0-9a-f]+ <[^>]*> addu	t2,t2,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(t2\)
+[0-9a-f]+ <[^>]*> lui	t2,0x1
+[0-9a-f]+ <[^>]*> addu	t2,t2,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(t2\)
+[0-9a-f]+ <[^>]*> lui	t2,0xffff
+[0-9a-f]+ <[^>]*> addu	t2,t2,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(t2\)
+[0-9a-f]+ <[^>]*> lui	t2,0xffff
+[0-9a-f]+ <[^>]*> addu	t2,t2,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(t2\)
+[0-9a-f]+ <[^>]*> lui	t2,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	t2,t2,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(t2\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	t2,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	t2,t2,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(t2\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	t3,0x1
+[0-9a-f]+ <[^>]*> addu	t3,t3,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(t3\)
+[0-9a-f]+ <[^>]*> lui	t3,0x1
+[0-9a-f]+ <[^>]*> addu	t3,t3,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(t3\)
+[0-9a-f]+ <[^>]*> lui	t3,0xffff
+[0-9a-f]+ <[^>]*> addu	t3,t3,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(t3\)
+[0-9a-f]+ <[^>]*> lui	t3,0xffff
+[0-9a-f]+ <[^>]*> addu	t3,t3,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(t3\)
+[0-9a-f]+ <[^>]*> lui	t3,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	t3,t3,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(t3\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	t3,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	t3,t3,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(t3\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	t4,0x1
+[0-9a-f]+ <[^>]*> addu	t4,t4,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(t4\)
+[0-9a-f]+ <[^>]*> lui	t4,0x1
+[0-9a-f]+ <[^>]*> addu	t4,t4,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(t4\)
+[0-9a-f]+ <[^>]*> lui	t4,0xffff
+[0-9a-f]+ <[^>]*> addu	t4,t4,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(t4\)
+[0-9a-f]+ <[^>]*> lui	t4,0xffff
+[0-9a-f]+ <[^>]*> addu	t4,t4,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(t4\)
+[0-9a-f]+ <[^>]*> lui	t4,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	t4,t4,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(t4\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	t4,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	t4,t4,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(t4\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	t5,0x1
+[0-9a-f]+ <[^>]*> addu	t5,t5,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(t5\)
+[0-9a-f]+ <[^>]*> lui	t5,0x1
+[0-9a-f]+ <[^>]*> addu	t5,t5,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(t5\)
+[0-9a-f]+ <[^>]*> lui	t5,0xffff
+[0-9a-f]+ <[^>]*> addu	t5,t5,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(t5\)
+[0-9a-f]+ <[^>]*> lui	t5,0xffff
+[0-9a-f]+ <[^>]*> addu	t5,t5,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(t5\)
+[0-9a-f]+ <[^>]*> lui	t5,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	t5,t5,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(t5\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	t5,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	t5,t5,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(t5\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	t6,0x1
+[0-9a-f]+ <[^>]*> addu	t6,t6,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(t6\)
+[0-9a-f]+ <[^>]*> lui	t6,0x1
+[0-9a-f]+ <[^>]*> addu	t6,t6,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(t6\)
+[0-9a-f]+ <[^>]*> lui	t6,0xffff
+[0-9a-f]+ <[^>]*> addu	t6,t6,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(t6\)
+[0-9a-f]+ <[^>]*> lui	t6,0xffff
+[0-9a-f]+ <[^>]*> addu	t6,t6,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(t6\)
+[0-9a-f]+ <[^>]*> lui	t6,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	t6,t6,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(t6\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	t6,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	t6,t6,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(t6\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	t7,0x1
+[0-9a-f]+ <[^>]*> addu	t7,t7,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(t7\)
+[0-9a-f]+ <[^>]*> lui	t7,0x1
+[0-9a-f]+ <[^>]*> addu	t7,t7,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(t7\)
+[0-9a-f]+ <[^>]*> lui	t7,0xffff
+[0-9a-f]+ <[^>]*> addu	t7,t7,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(t7\)
+[0-9a-f]+ <[^>]*> lui	t7,0xffff
+[0-9a-f]+ <[^>]*> addu	t7,t7,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(t7\)
+[0-9a-f]+ <[^>]*> lui	t7,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	t7,t7,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(t7\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	t7,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	t7,t7,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(t7\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	s0,0x1
+[0-9a-f]+ <[^>]*> addu	s0,s0,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(s0\)
+[0-9a-f]+ <[^>]*> lui	s0,0x1
+[0-9a-f]+ <[^>]*> addu	s0,s0,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(s0\)
+[0-9a-f]+ <[^>]*> lui	s0,0xffff
+[0-9a-f]+ <[^>]*> addu	s0,s0,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(s0\)
+[0-9a-f]+ <[^>]*> lui	s0,0xffff
+[0-9a-f]+ <[^>]*> addu	s0,s0,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(s0\)
+[0-9a-f]+ <[^>]*> lui	s0,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	s0,s0,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(s0\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	s0,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	s0,s0,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(s0\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	s1,0x1
+[0-9a-f]+ <[^>]*> addu	s1,s1,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(s1\)
+[0-9a-f]+ <[^>]*> lui	s1,0x1
+[0-9a-f]+ <[^>]*> addu	s1,s1,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(s1\)
+[0-9a-f]+ <[^>]*> lui	s1,0xffff
+[0-9a-f]+ <[^>]*> addu	s1,s1,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(s1\)
+[0-9a-f]+ <[^>]*> lui	s1,0xffff
+[0-9a-f]+ <[^>]*> addu	s1,s1,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(s1\)
+[0-9a-f]+ <[^>]*> lui	s1,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	s1,s1,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(s1\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	s1,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	s1,s1,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(s1\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	s2,0x1
+[0-9a-f]+ <[^>]*> addu	s2,s2,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(s2\)
+[0-9a-f]+ <[^>]*> lui	s2,0x1
+[0-9a-f]+ <[^>]*> addu	s2,s2,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(s2\)
+[0-9a-f]+ <[^>]*> lui	s2,0xffff
+[0-9a-f]+ <[^>]*> addu	s2,s2,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(s2\)
+[0-9a-f]+ <[^>]*> lui	s2,0xffff
+[0-9a-f]+ <[^>]*> addu	s2,s2,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(s2\)
+[0-9a-f]+ <[^>]*> lui	s2,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	s2,s2,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(s2\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	s2,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	s2,s2,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(s2\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	s3,0x1
+[0-9a-f]+ <[^>]*> addu	s3,s3,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(s3\)
+[0-9a-f]+ <[^>]*> lui	s3,0x1
+[0-9a-f]+ <[^>]*> addu	s3,s3,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(s3\)
+[0-9a-f]+ <[^>]*> lui	s3,0xffff
+[0-9a-f]+ <[^>]*> addu	s3,s3,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(s3\)
+[0-9a-f]+ <[^>]*> lui	s3,0xffff
+[0-9a-f]+ <[^>]*> addu	s3,s3,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(s3\)
+[0-9a-f]+ <[^>]*> lui	s3,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	s3,s3,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(s3\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	s3,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	s3,s3,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(s3\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	s4,0x1
+[0-9a-f]+ <[^>]*> addu	s4,s4,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(s4\)
+[0-9a-f]+ <[^>]*> lui	s4,0x1
+[0-9a-f]+ <[^>]*> addu	s4,s4,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(s4\)
+[0-9a-f]+ <[^>]*> lui	s4,0xffff
+[0-9a-f]+ <[^>]*> addu	s4,s4,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(s4\)
+[0-9a-f]+ <[^>]*> lui	s4,0xffff
+[0-9a-f]+ <[^>]*> addu	s4,s4,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(s4\)
+[0-9a-f]+ <[^>]*> lui	s4,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	s4,s4,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(s4\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	s4,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	s4,s4,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(s4\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	s5,0x1
+[0-9a-f]+ <[^>]*> addu	s5,s5,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(s5\)
+[0-9a-f]+ <[^>]*> lui	s5,0x1
+[0-9a-f]+ <[^>]*> addu	s5,s5,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(s5\)
+[0-9a-f]+ <[^>]*> lui	s5,0xffff
+[0-9a-f]+ <[^>]*> addu	s5,s5,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(s5\)
+[0-9a-f]+ <[^>]*> lui	s5,0xffff
+[0-9a-f]+ <[^>]*> addu	s5,s5,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(s5\)
+[0-9a-f]+ <[^>]*> lui	s5,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	s5,s5,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(s5\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	s5,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	s5,s5,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(s5\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	s6,0x1
+[0-9a-f]+ <[^>]*> addu	s6,s6,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(s6\)
+[0-9a-f]+ <[^>]*> lui	s6,0x1
+[0-9a-f]+ <[^>]*> addu	s6,s6,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(s6\)
+[0-9a-f]+ <[^>]*> lui	s6,0xffff
+[0-9a-f]+ <[^>]*> addu	s6,s6,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(s6\)
+[0-9a-f]+ <[^>]*> lui	s6,0xffff
+[0-9a-f]+ <[^>]*> addu	s6,s6,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(s6\)
+[0-9a-f]+ <[^>]*> lui	s6,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	s6,s6,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(s6\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	s6,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	s6,s6,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(s6\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	s7,0x1
+[0-9a-f]+ <[^>]*> addu	s7,s7,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(s7\)
+[0-9a-f]+ <[^>]*> lui	s7,0x1
+[0-9a-f]+ <[^>]*> addu	s7,s7,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(s7\)
+[0-9a-f]+ <[^>]*> lui	s7,0xffff
+[0-9a-f]+ <[^>]*> addu	s7,s7,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(s7\)
+[0-9a-f]+ <[^>]*> lui	s7,0xffff
+[0-9a-f]+ <[^>]*> addu	s7,s7,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(s7\)
+[0-9a-f]+ <[^>]*> lui	s7,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	s7,s7,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(s7\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	s7,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	s7,s7,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(s7\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	t8,0x1
+[0-9a-f]+ <[^>]*> addu	t8,t8,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(t8\)
+[0-9a-f]+ <[^>]*> lui	t8,0x1
+[0-9a-f]+ <[^>]*> addu	t8,t8,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(t8\)
+[0-9a-f]+ <[^>]*> lui	t8,0xffff
+[0-9a-f]+ <[^>]*> addu	t8,t8,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(t8\)
+[0-9a-f]+ <[^>]*> lui	t8,0xffff
+[0-9a-f]+ <[^>]*> addu	t8,t8,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(t8\)
+[0-9a-f]+ <[^>]*> lui	t8,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	t8,t8,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(t8\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	t8,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	t8,t8,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(t8\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	t9,0x1
+[0-9a-f]+ <[^>]*> addu	t9,t9,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(t9\)
+[0-9a-f]+ <[^>]*> lui	t9,0x1
+[0-9a-f]+ <[^>]*> addu	t9,t9,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(t9\)
+[0-9a-f]+ <[^>]*> lui	t9,0xffff
+[0-9a-f]+ <[^>]*> addu	t9,t9,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(t9\)
+[0-9a-f]+ <[^>]*> lui	t9,0xffff
+[0-9a-f]+ <[^>]*> addu	t9,t9,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(t9\)
+[0-9a-f]+ <[^>]*> lui	t9,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	t9,t9,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(t9\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	t9,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	t9,t9,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(t9\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	k0,0x1
+[0-9a-f]+ <[^>]*> addu	k0,k0,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k0\)
+[0-9a-f]+ <[^>]*> lui	k0,0x1
+[0-9a-f]+ <[^>]*> addu	k0,k0,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k0\)
+[0-9a-f]+ <[^>]*> lui	k0,0xffff
+[0-9a-f]+ <[^>]*> addu	k0,k0,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k0\)
+[0-9a-f]+ <[^>]*> lui	k0,0xffff
+[0-9a-f]+ <[^>]*> addu	k0,k0,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k0\)
+[0-9a-f]+ <[^>]*> lui	k0,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	k0,k0,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(k0\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	k0,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	k0,k0,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(k0\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k0,32767\(k0\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k0,32767\(k0\)
+[0-9a-f]+ <[^>]*> lw	k0,-32768\(k0\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k0,-32768\(k0\)
+[0-9a-f]+ <[^>]*> lui	k1,0x1
+[0-9a-f]+ <[^>]*> addu	k1,k1,k0
+[0-9a-f]+ <[^>]*> lw	k0,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	k1,0x1
+[0-9a-f]+ <[^>]*> addu	k1,k1,k0
+[0-9a-f]+ <[^>]*> sw	k0,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	k1,0xffff
+[0-9a-f]+ <[^>]*> addu	k1,k1,k0
+[0-9a-f]+ <[^>]*> lw	k0,32767\(k1\)
+[0-9a-f]+ <[^>]*> lui	k1,0xffff
+[0-9a-f]+ <[^>]*> addu	k1,k1,k0
+[0-9a-f]+ <[^>]*> sw	k0,32767\(k1\)
+[0-9a-f]+ <[^>]*> lui	k1,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	k1,k1,k0
+[0-9a-f]+ <[^>]*> lw	k0,0\(k1\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	k1,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	k1,k1,k0
+[0-9a-f]+ <[^>]*> sw	k0,0\(k1\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	gp,0x1
+[0-9a-f]+ <[^>]*> addu	gp,gp,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(gp\)
+[0-9a-f]+ <[^>]*> lui	gp,0x1
+[0-9a-f]+ <[^>]*> addu	gp,gp,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(gp\)
+[0-9a-f]+ <[^>]*> lui	gp,0xffff
+[0-9a-f]+ <[^>]*> addu	gp,gp,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(gp\)
+[0-9a-f]+ <[^>]*> lui	gp,0xffff
+[0-9a-f]+ <[^>]*> addu	gp,gp,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(gp\)
+[0-9a-f]+ <[^>]*> lui	gp,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	gp,gp,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	gp,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	gp,gp,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	s8,0x1
+[0-9a-f]+ <[^>]*> addu	s8,s8,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(s8\)
+[0-9a-f]+ <[^>]*> lui	s8,0x1
+[0-9a-f]+ <[^>]*> addu	s8,s8,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(s8\)
+[0-9a-f]+ <[^>]*> lui	s8,0xffff
+[0-9a-f]+ <[^>]*> addu	s8,s8,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(s8\)
+[0-9a-f]+ <[^>]*> lui	s8,0xffff
+[0-9a-f]+ <[^>]*> addu	s8,s8,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(s8\)
+[0-9a-f]+ <[^>]*> lui	s8,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	s8,s8,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(s8\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	s8,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	s8,s8,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(s8\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	sp,0x1
+[0-9a-f]+ <[^>]*> addu	sp,sp,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(sp\)
+[0-9a-f]+ <[^>]*> lui	sp,0x1
+[0-9a-f]+ <[^>]*> addu	sp,sp,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(sp\)
+[0-9a-f]+ <[^>]*> lui	sp,0xffff
+[0-9a-f]+ <[^>]*> addu	sp,sp,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(sp\)
+[0-9a-f]+ <[^>]*> lui	sp,0xffff
+[0-9a-f]+ <[^>]*> addu	sp,sp,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(sp\)
+[0-9a-f]+ <[^>]*> lui	sp,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	sp,sp,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(sp\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	sp,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	sp,sp,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(sp\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	ra,0x1
+[0-9a-f]+ <[^>]*> addu	ra,ra,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(ra\)
+[0-9a-f]+ <[^>]*> lui	ra,0x1
+[0-9a-f]+ <[^>]*> addu	ra,ra,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(ra\)
+[0-9a-f]+ <[^>]*> lui	ra,0xffff
+[0-9a-f]+ <[^>]*> addu	ra,ra,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(ra\)
+[0-9a-f]+ <[^>]*> lui	ra,0xffff
+[0-9a-f]+ <[^>]*> addu	ra,ra,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(ra\)
+[0-9a-f]+ <[^>]*> lui	ra,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	ra,ra,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(ra\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	ra,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	ra,ra,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(ra\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> lw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,32767\(k1\)
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(k1\)
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addu	at,at,k1
+[0-9a-f]+ <[^>]*> lw	k1,-32768\(at\)
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addu	at,at,k1
+[0-9a-f]+ <[^>]*> sw	k1,-32768\(at\)
+[0-9a-f]+ <[^>]*> lui	at,0xffff
+[0-9a-f]+ <[^>]*> addu	at,at,k1
+[0-9a-f]+ <[^>]*> lw	k1,32767\(at\)
+[0-9a-f]+ <[^>]*> lui	at,0xffff
+[0-9a-f]+ <[^>]*> addu	at,at,k1
+[0-9a-f]+ <[^>]*> sw	k1,32767\(at\)
+[0-9a-f]+ <[^>]*> lui	at,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	at,at,k1
+[0-9a-f]+ <[^>]*> lw	k1,0\(at\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> lui	at,0x0
+[ 	]*[0-9a-f]+: R_MIPS_HI16	symbol
+[0-9a-f]+ <[^>]*> addu	at,at,k1
+[0-9a-f]+ <[^>]*> sw	k1,0\(at\)
+[ 	]*[0-9a-f]+: R_MIPS_LO16	symbol
+	\.\.\.
diff -up --recursive --new-file binutils-2.18.macro/gas/testsuite/gas/mips/at-1.s binutils-2.18/gas/testsuite/gas/mips/at-1.s
--- binutils-2.18.macro/gas/testsuite/gas/mips/at-1.s	1970-01-01 00:00:00.000000000 +0000
+++ binutils-2.18/gas/testsuite/gas/mips/at-1.s	2007-09-29 18:24:10.000000000 +0000
@@ -0,0 +1,388 @@
+	.text
+foo:
+	.set	at=$1
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$2
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$3
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$a0
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$a1
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$a2
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$a3
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$8
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$9
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$10
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$11
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$12
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$13
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$14
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$15
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$s0
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$s1
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$s2
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$s3
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$s4
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$s5
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$s6
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$s7
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$24
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$25
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$26
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$27
+	lw	$26, 0x7fff($26)
+	sw	$26, 0x7fff($26)
+	lw	$26, -0x8000($26)
+	sw	$26, -0x8000($26)
+	lw	$26, 0x8000($26)
+	sw	$26, 0x8000($26)
+	lw	$26, -0x8001($26)
+	sw	$26, -0x8001($26)
+	lw	$26, symbol($26)
+	sw	$26, symbol($26)
+
+	.set	at=$gp
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$fp
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$sp
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at=$ra
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+	.set	at
+	lw	$27, 0x7fff($27)
+	sw	$27, 0x7fff($27)
+	lw	$27, -0x8000($27)
+	sw	$27, -0x8000($27)
+	lw	$27, 0x8000($27)
+	sw	$27, 0x8000($27)
+	lw	$27, -0x8001($27)
+	sw	$27, -0x8001($27)
+	lw	$27, symbol($27)
+	sw	$27, symbol($27)
+
+# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...
+	.space	8
diff -up --recursive --new-file binutils-2.18.macro/gas/testsuite/gas/mips/at-2.l binutils-2.18/gas/testsuite/gas/mips/at-2.l
--- binutils-2.18.macro/gas/testsuite/gas/mips/at-2.l	1970-01-01 00:00:00.000000000 +0000
+++ binutils-2.18/gas/testsuite/gas/mips/at-2.l	2007-09-29 19:17:04.000000000 +0000
@@ -0,0 +1,13 @@
+.*\.s: Assembler messages:
+.*\.s:4: Error: Macro used \$at after ".set noat"
+.*\.s:5: Error: Macro used \$at after ".set noat"
+.*\.s:6: Error: Macro used \$at after ".set noat"
+.*\.s:8: Warning: used \$at without ".set noat"
+.*\.s:8: Warning: used \$at without ".set noat"
+.*\.s:8: Warning: used \$at without ".set noat"
+.*\.s:13: Warning: used \$26 with ".set at=\$26"
+.*\.s:13: Warning: used \$26 with ".set at=\$26"
+.*\.s:13: Warning: used \$26 with ".set at=\$26"
+.*\.s:18: Warning: used \$27 with ".set at=\$27"
+.*\.s:18: Warning: used \$27 with ".set at=\$27"
+.*\.s:18: Warning: used \$27 with ".set at=\$27"
diff -up --recursive --new-file binutils-2.18.macro/gas/testsuite/gas/mips/at-2.s binutils-2.18/gas/testsuite/gas/mips/at-2.s
--- binutils-2.18.macro/gas/testsuite/gas/mips/at-2.s	1970-01-01 00:00:00.000000000 +0000
+++ binutils-2.18/gas/testsuite/gas/mips/at-2.s	2007-09-29 19:14:38.000000000 +0000
@@ -0,0 +1,21 @@
+	.text
+foo:
+	.set	at=$0
+	lw	$1, 0x8000($1)
+	lw	$26, 0x8000($26)
+	lw	$27, 0x8000($27)
+	.set	at=$1
+	lw	$1, 0x8000($1)
+	lw	$26, 0x8000($26)
+	lw	$27, 0x8000($27)
+	.set	at=$26
+	lw	$1, 0x8000($1)
+	lw	$26, 0x8000($26)
+	lw	$27, 0x8000($27)
+	.set	at=$27
+	lw	$1, 0x8000($1)
+	lw	$26, 0x8000($26)
+	lw	$27, 0x8000($27)
+
+# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...
+	.space	8
diff -up --recursive --new-file binutils-2.18.macro/gas/testsuite/gas/mips/mips.exp binutils-2.18/gas/testsuite/gas/mips/mips.exp
--- binutils-2.18.macro/gas/testsuite/gas/mips/mips.exp	2007-08-06 20:00:14.000000000 +0000
+++ binutils-2.18/gas/testsuite/gas/mips/mips.exp	2007-09-29 19:32:33.000000000 +0000
@@ -749,6 +749,9 @@ if { [istarget mips*-*-vxworks*] } {
     run_list_test "noat-6" ""
     run_list_test "noat-7" ""
 
+    run_dump_test "at-1"
+    run_list_test "at-2" "-32 -mips1" "MIPS at-2"
+
     run_dump_test_arches "smartmips"	[mips_arch_list_matching mips32 !gpr64]
     run_dump_test_arches "mips32-dsp"	[mips_arch_list_matching mips32r2]
     run_dump_test_arches "mips32-dspr2"	[mips_arch_list_matching mips32r2]


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]