This is the mail archive of the binutils@sources.redhat.com 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]

Re: "Error: constant too large" on mips gas


On Mon, 4 Apr 2005, Atsushi Nemoto wrote:

> anemo> With recent binutils (2.15.96 and 20050331 snapshot), mips-linux-as
> anemo> does not accept this instruction.
> 
> anemo> 	lw	$2, 0x80000000
> 
> anemo> $ mips-linux-as -32 -non_shared foo.s
> anemo> foo.s: Assembler messages:
> anemo> foo.s:1: Error: constant too large

 I think I've failed to prepare the promised test case and this is the
result, sigh...

> I modified tc-mips.c to omit this error on 32bit gpr target.  Is this
> a correct fix?

 Well, I've had a look at the problem and decided we need more consistency 
and more reason in handling these cases.  My opinion is we should accept 
address offsets with bit 31 set, but higher bits unset when building for 
32-bit ABIs.  The fact we treat them as 64-bit numbers is an internal 
implementation detail of BFD which should be hidden from users.

 OTOH, for these ABIs we shouldn't silently crop offsets that are clearly 
64-bit as they are results of programming errors and as such should be 
properly diagnosed.  If such constants may be automatically generated by 
some sort of preprocessor magic or whatever and are to be expected, then 
an explicit "& 0xffffffff" or a similar expression can be used.

 And here is the result of the above assumptions, together with test suite 
updates this time. :-)  Tested with no regressions for mips64el-linux-gnu.

gas/:
2005-04-04  Maciej W. Rozycki  <macro@linux-mips.org>

	* config/tc-mips.c (IS_ZEXT_32BIT_NUM): New macro.
	(normalize_address_expr): New function to sign-extend address 
	offsets that fit into 32 bits in 32-bit mode.
	(macro_build_ldst_constoffset): Use normalize_address_expr() 
	instead of a handcoded sequence.
	(load_register): Likewise.  Report oversized numbers in a useful 
	way.
	(macro) [ld_st, ldd_std]: Reject all oversized offsets, not only 
	for constant addresses.  Report oversized numbers in a useful way.
	(mips_ip): Use normalize_address_expr() for addresses.

gas/testsuite/:
2005-04-04  Maciej W. Rozycki  <macro@linux-mips.org>

	* gas/mips/ldstla-32.s: Exclude offsets that are now meant to fail 
	and include more instructions/offsets that are meant to succeed.  
	Use $4 instead $3 to avoid register dependencies.
	* gas/mips/ldstla-32.d: Update accordingly.
	* gas/mips/ldstla-32-shared.d: Likewise.
	* gas/mips/ldstla-32-1.s: New test for offsets that are meant to 
	fail.
	* gas/mips/ldstla-32-1.l: Stderr output for the new test.
	* gas/mips/mips.exp: Run the new test (twice).

 OK to apply?

  Maciej

binutils-2.15.96-20050331-mips-gas-normalize.patch
diff -up --recursive --new-file binutils-2.15.96-20050331.macro/gas/config/tc-mips.c binutils-2.15.96-20050331/gas/config/tc-mips.c
--- binutils-2.15.96-20050331.macro/gas/config/tc-mips.c	2005-03-22 04:25:33.000000000 +0000
+++ binutils-2.15.96-20050331/gas/config/tc-mips.c	2005-04-03 18:00:02.000000000 +0000
@@ -861,6 +861,10 @@ static int mips_relax_branch;
   (((x) &~ (offsetT) 0x7fff) == 0					\
    || (((x) &~ (offsetT) 0x7fff) == ~ (offsetT) 0x7fff))
 
+/* Is the given value a zero-extended 32-bit value?  */
+#define IS_ZEXT_32BIT_NUM(x)						\
+  (((x) &~ (offsetT) 0xffffffff) == 0)
+
 /* Replace bits MASK << SHIFT of STRUCT with the equivalent bits in
    VALUE << SHIFT.  VALUE is evaluated exactly once.  */
 #define INSERT_BITS(STRUCT, VALUE, MASK, SHIFT) \
@@ -3253,6 +3257,33 @@ mips16_macro_build (expressionS *ep, con
   append_insn (&insn, ep, r);
 }
 
+static void
+/*
+ * Sign-extend 32-bit mode constants that have bit 31 set and all
+ * higher bits unset.
+ */
+normalize_constant_expr (expressionS *ex)
+{
+  if ((ex->X_op == O_constant && HAVE_32BIT_GPRS)
+      && IS_ZEXT_32BIT_NUM (ex->X_add_number))
+    ex->X_add_number = (((ex->X_add_number & 0xffffffff) ^ 0x80000000)
+			- 0x80000000);
+}
+
+/*
+ * Sign-extend 32-bit mode address offsets that have bit 31 set and
+ * all higher bits unset.
+ */
+static void
+normalize_address_expr (expressionS *ex)
+{
+  if (((ex->X_op == O_constant && HAVE_32BIT_GPRS)
+	|| (ex->X_op == O_symbol && HAVE_32BIT_SYMBOLS))
+      && IS_ZEXT_32BIT_NUM (ex->X_add_number))
+    ex->X_add_number = (((ex->X_add_number & 0xffffffff) ^ 0x80000000)
+			- 0x80000000);
+}
+
 /*
  * Generate a "jalr" instruction with a relocation hint to the called
  * function.  This occurs in NewABI PIC code.
@@ -3338,15 +3369,8 @@ macro_build_ldst_constoffset (expression
   assert (ep->X_op == O_constant);
 
   /* Sign-extending 32-bit constants makes their handling easier.  */
-  if (! dbl && ! ((ep->X_add_number & ~((bfd_vma) 0x7fffffff))
-		  == ~((bfd_vma) 0x7fffffff)))
-    {
-      if (ep->X_add_number & ~((bfd_vma) 0xffffffff))
-	as_bad (_("constant too large"));
-
-      ep->X_add_number = (((ep->X_add_number & 0xffffffff) ^ 0x80000000)
-			  - 0x80000000);
-    }
+  if (!dbl)
+    normalize_constant_expr (ep);
 
   /* Right now, this routine can only handle signed 32-bit constants.  */
   if (! IS_SEXT_32BIT_NUM(ep->X_add_number + 0x8000))
@@ -3392,14 +3416,6 @@ set_at (int reg, int unsignedp)
     }
 }
 
-static void
-normalize_constant_expr (expressionS *ex)
-{
-  if (ex->X_op == O_constant && HAVE_32BIT_GPRS)
-    ex->X_add_number = (((ex->X_add_number & 0xffffffff) ^ 0x80000000)
-			- 0x80000000);
-}
-
 /* Warn if an expression is not a constant.  */
 
 static void
@@ -3504,15 +3520,8 @@ load_register (int reg, expressionS *ep,
       assert (ep->X_op == O_constant);
 
       /* Sign-extending 32-bit constants makes their handling easier.  */
-      if (! dbl && ! ((ep->X_add_number & ~((bfd_vma) 0x7fffffff))
-		      == ~((bfd_vma) 0x7fffffff)))
-	{
-	  if (ep->X_add_number & ~((bfd_vma) 0xffffffff))
-	    as_bad (_("constant too large"));
-
-	  ep->X_add_number = (((ep->X_add_number & 0xffffffff) ^ 0x80000000)
-			      - 0x80000000);
-	}
+      if (!dbl)
+	normalize_constant_expr (ep);
 
       if (IS_SEXT_16BIT_NUM (ep->X_add_number))
 	{
@@ -3543,8 +3552,9 @@ load_register (int reg, expressionS *ep,
 
   if (HAVE_32BIT_GPRS)
     {
-      as_bad (_("Number (0x%lx) larger than 32 bits"),
-	      (unsigned long) ep->X_add_number);
+      as_bad (_("Number (0x%lx%08lx) larger than 32 bits"),
+	      (unsigned long) (ep->X_add_number >> 32),
+	      (unsigned long) (ep->X_add_number & 0xffffffff));
       macro_build (ep, "addiu", "t,r,j", reg, 0, BFD_RELOC_LO16);
       return;
     }
@@ -5785,14 +5795,16 @@ macro (struct mips_cl_insn *ip)
 	  offset_expr.X_op = O_constant;
 	}
 
+      if (HAVE_32BIT_ADDRESSES
+	  && !IS_SEXT_32BIT_NUM (offset_expr.X_add_number))
+	as_bad (_("Number (0x%lx%08lx) larger than 32 bits"),
+		(unsigned long) (offset_expr.X_add_number >> 32),
+		(unsigned long) (offset_expr.X_add_number & 0xffffffff));
+
       /* A constant expression in PIC code can be handled just as it
 	 is in non PIC code.  */
       if (offset_expr.X_op == O_constant)
 	{
-	  if (HAVE_32BIT_ADDRESSES
-	      && !IS_SEXT_32BIT_NUM (offset_expr.X_add_number))
-	    as_bad (_("constant too large"));
-
 	  expr1.X_add_number = ((offset_expr.X_add_number + 0x8000)
 				& ~(bfd_vma) 0xffff);
 	  load_register (tempreg, &expr1, HAVE_64BIT_ADDRESSES);
@@ -6373,6 +6385,12 @@ macro (struct mips_cl_insn *ip)
 	  offset_expr.X_op = O_constant;
 	}
 
+      if (HAVE_32BIT_ADDRESSES
+	  && !IS_SEXT_32BIT_NUM (offset_expr.X_add_number))
+	as_bad (_("Number (0x%lx%08lx) larger than 32 bits"),
+		(unsigned long) (offset_expr.X_add_number >> 32),
+		(unsigned long) (offset_expr.X_add_number & 0xffffffff));
+
       /* Even on a big endian machine $fn comes before $fn+1.  We have
 	 to adjust when loading from memory.  We set coproc if we must
 	 load $fn+1 first.  */
@@ -8556,6 +8574,7 @@ do_msbd:
 
 	    case 'A':
 	      my_getExpression (&offset_expr, s);
+	      normalize_address_expr (&offset_expr);
 	      *imm_reloc = BFD_RELOC_32;
 	      s = expr_end;
 	      continue;
diff -up --recursive --new-file binutils-2.15.96-20050331.macro/gas/testsuite/gas/mips/ldstla-32-1.l binutils-2.15.96-20050331/gas/testsuite/gas/mips/ldstla-32-1.l
--- binutils-2.15.96-20050331.macro/gas/testsuite/gas/mips/ldstla-32-1.l	1970-01-01 00:00:00.000000000 +0000
+++ binutils-2.15.96-20050331/gas/testsuite/gas/mips/ldstla-32-1.l	2005-04-03 17:55:35.000000000 +0000
@@ -0,0 +1,81 @@
+.*: Assembler messages:
+.*:2: Error: Number \(0xffffffff7fffffff\) larger than 32 bits
+.*:3: Error: Number \(0xffffffff00000000\) larger than 32 bits
+.*:4: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:5: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:6: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:7: Error: Number \(0x100000000\) larger than 32 bits
+.*:9: Error: Number \(0xffffffff7fffffff\) larger than 32 bits
+.*:10: Error: Number \(0xffffffff00000000\) larger than 32 bits
+.*:11: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:12: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:13: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:14: Error: Number \(0x100000000\) larger than 32 bits
+.*:16: Error: Number \(0xffffffff7fffffff\) larger than 32 bits
+.*:17: Error: Number \(0xffffffff00000000\) larger than 32 bits
+.*:18: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:19: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:20: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:21: Error: Number \(0x100000000\) larger than 32 bits
+.*:23: Error: Number \(0xffffffff7fffffff\) larger than 32 bits
+.*:24: Error: Number \(0xffffffff00000000\) larger than 32 bits
+.*:25: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:26: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:27: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:28: Error: Number \(0x100000000\) larger than 32 bits
+.*:30: Error: Number \(0xffffffff7fffffff\) larger than 32 bits
+.*:31: Error: Number \(0xffffffff00000000\) larger than 32 bits
+.*:31: Error: Number \(0xffffffff00000000\) larger than 32 bits
+.*:32: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:32: Error: Number \(0xabcdef0123450000\) larger than 32 bits
+.*:33: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:33: Error: Number \(0x123456789ac0000\) larger than 32 bits
+.*:34: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:34: Error: Number \(0x200000000\) larger than 32 bits
+.*:35: Error: Number \(0x100000000\) larger than 32 bits
+.*:35: Error: Number \(0x100000000\) larger than 32 bits
+.*:37: Error: Number \(0xffffffff7fffffff\) larger than 32 bits
+.*:38: Error: Number \(0xffffffff00000000\) larger than 32 bits
+.*:38: Error: Number \(0xffffffff00000000\) larger than 32 bits
+.*:39: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:39: Error: Number \(0xabcdef0123450000\) larger than 32 bits
+.*:40: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:40: Error: Number \(0x123456789ac0000\) larger than 32 bits
+.*:41: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:41: Error: Number \(0x200000000\) larger than 32 bits
+.*:42: Error: Number \(0x100000000\) larger than 32 bits
+.*:42: Error: Number \(0x100000000\) larger than 32 bits
+.*:44: Error: Number \(0xffffffff7fffffff\) larger than 32 bits
+.*:45: Error: Number \(0xffffffff00000000\) larger than 32 bits
+.*:45: Error: Number \(0xffffffff00000000\) larger than 32 bits
+.*:46: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:46: Error: Number \(0xabcdef0123450000\) larger than 32 bits
+.*:47: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:47: Error: Number \(0x123456789ac0000\) larger than 32 bits
+.*:48: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:48: Error: Number \(0x200000000\) larger than 32 bits
+.*:49: Error: Number \(0x100000000\) larger than 32 bits
+.*:49: Error: Number \(0x100000000\) larger than 32 bits
+.*:51: Error: Number \(0xffffffff7fffffff\) larger than 32 bits
+.*:52: Error: Number \(0xffffffff00000000\) larger than 32 bits
+.*:52: Error: Number \(0xffffffff00000000\) larger than 32 bits
+.*:53: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:53: Error: Number \(0xabcdef0123450000\) larger than 32 bits
+.*:54: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:54: Error: Number \(0x123456789ac0000\) larger than 32 bits
+.*:55: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:55: Error: Number \(0x200000000\) larger than 32 bits
+.*:56: Error: Number \(0x100000000\) larger than 32 bits
+.*:56: Error: Number \(0x100000000\) larger than 32 bits
+.*:58: Error: Number \(0xffffffff7fffffff\) larger than 32 bits
+.*:59: Error: Number \(0xffffffff00000000\) larger than 32 bits
+.*:60: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:61: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:62: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:63: Error: Number \(0x100000000\) larger than 32 bits
+.*:65: Error: Number \(0xffffffff7fffffff\) larger than 32 bits
+.*:66: Error: Number \(0xffffffff00000000\) larger than 32 bits
+.*:67: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:68: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:69: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:70: Error: Number \(0x100000000\) larger than 32 bits
diff -up --recursive --new-file binutils-2.15.96-20050331.macro/gas/testsuite/gas/mips/ldstla-32-1.s binutils-2.15.96-20050331/gas/testsuite/gas/mips/ldstla-32-1.s
--- binutils-2.15.96-20050331.macro/gas/testsuite/gas/mips/ldstla-32-1.s	1970-01-01 00:00:00.000000000 +0000
+++ binutils-2.15.96-20050331/gas/testsuite/gas/mips/ldstla-32-1.s	2005-04-03 14:56:56.000000000 +0000
@@ -0,0 +1,72 @@
+	.text
+	ld $2, 0xffffffff7fffffff($4)
+	ld $2, 0xffffffff00000000($4)
+	ld $2, 0xabcdef0123456789($4)
+	ld $2, 0x0123456789abcdef($4)
+	ld $2, 0x00000001ffffffff($4)
+	ld $2, 0x0000000100000000($4)
+
+	ld $2, 0xffffffff7fffffff
+	ld $2, 0xffffffff00000000
+	ld $2, 0xabcdef0123456789
+	ld $2, 0x0123456789abcdef
+	ld $2, 0x00000001ffffffff
+	ld $2, 0x0000000100000000
+
+	sd $2, 0xffffffff7fffffff($4)
+	sd $2, 0xffffffff00000000($4)
+	sd $2, 0xabcdef0123456789($4)
+	sd $2, 0x0123456789abcdef($4)
+	sd $2, 0x00000001ffffffff($4)
+	sd $2, 0x0000000100000000($4)
+
+	sd $2, 0xffffffff7fffffff
+	sd $2, 0xffffffff00000000
+	sd $2, 0xabcdef0123456789
+	sd $2, 0x0123456789abcdef
+	sd $2, 0x00000001ffffffff
+	sd $2, 0x0000000100000000
+
+	lw $2, 0xffffffff7fffffff($4)
+	lw $2, 0xffffffff00000000($4)
+	lw $2, 0xabcdef0123456789($4)
+	lw $2, 0x0123456789abcdef($4)
+	lw $2, 0x00000001ffffffff($4)
+	lw $2, 0x0000000100000000($4)
+
+	lw $2, 0xffffffff7fffffff
+	lw $2, 0xffffffff00000000
+	lw $2, 0xabcdef0123456789
+	lw $2, 0x0123456789abcdef
+	lw $2, 0x00000001ffffffff
+	lw $2, 0x0000000100000000
+
+	sw $2, 0xffffffff7fffffff($4)
+	sw $2, 0xffffffff00000000($4)
+	sw $2, 0xabcdef0123456789($4)
+	sw $2, 0x0123456789abcdef($4)
+	sw $2, 0x00000001ffffffff($4)
+	sw $2, 0x0000000100000000($4)
+
+	sw $2, 0xffffffff7fffffff
+	sw $2, 0xffffffff00000000
+	sw $2, 0xabcdef0123456789
+	sw $2, 0x0123456789abcdef
+	sw $2, 0x00000001ffffffff
+	sw $2, 0x0000000100000000
+
+	la $2, 0xffffffff7fffffff($4)
+	la $2, 0xffffffff00000000($4)
+	la $2, 0xabcdef0123456789($4)
+	la $2, 0x0123456789abcdef($4)
+	la $2, 0x00000001ffffffff($4)
+	la $2, 0x0000000100000000($4)
+
+	la $2, 0xffffffff7fffffff
+	la $2, 0xffffffff00000000
+	la $2, 0xabcdef0123456789
+	la $2, 0x0123456789abcdef
+	la $2, 0x00000001ffffffff
+	la $2, 0x0000000100000000
+
+	.space 8
diff -up --recursive --new-file binutils-2.15.96-20050331.macro/gas/testsuite/gas/mips/ldstla-32-shared.d binutils-2.15.96-20050331/gas/testsuite/gas/mips/ldstla-32-shared.d
--- binutils-2.15.96-20050331.macro/gas/testsuite/gas/mips/ldstla-32-shared.d	2003-10-01 02:07:48.000000000 +0000
+++ binutils-2.15.96-20050331/gas/testsuite/gas/mips/ldstla-32-shared.d	2005-04-03 18:01:35.000000000 +0000
@@ -8,73 +8,229 @@
 Disassembly of section \.text:
 
 00000000 <\.text>:
-   0:	3c0189ac 	lui	at,0x89ac
-   4:	00610821 	addu	at,v1,at
-   8:	8c22cdef 	lw	v0,-12817\(at\)
-   c:	8c23cdf3 	lw	v1,-12813\(at\)
-  10:	3c012345 	lui	at,0x2345
-  14:	00610821 	addu	at,v1,at
-  18:	8c226789 	lw	v0,26505\(at\)
-  1c:	8c23678d 	lw	v1,26509\(at\)
-  20:	3c018000 	lui	at,0x8000
-  24:	00610821 	addu	at,v1,at
-  28:	8c220000 	lw	v0,0\(at\)
-  2c:	8c230004 	lw	v1,4\(at\)
-  30:	3c010000 	lui	at,0x0
-  34:	00610821 	addu	at,v1,at
-  38:	8c220000 	lw	v0,0\(at\)
-  3c:	8c230004 	lw	v1,4\(at\)
-  40:	3c018000 	lui	at,0x8000
-  44:	00610821 	addu	at,v1,at
-  48:	8c22ffff 	lw	v0,-1\(at\)
-  4c:	8c230003 	lw	v1,3\(at\)
-  50:	3c01abce 	lui	at,0xabce
-  54:	00610821 	addu	at,v1,at
-  58:	8c22ef01 	lw	v0,-4351\(at\)
-  5c:	8c23ef05 	lw	v1,-4347\(at\)
-  60:	3c010123 	lui	at,0x123
-  64:	00610821 	addu	at,v1,at
-  68:	8c224567 	lw	v0,17767\(at\)
-  6c:	8c23456b 	lw	v1,17771\(at\)
-  70:	3c0189ac 	lui	at,0x89ac
-  74:	00610821 	addu	at,v1,at
-  78:	ac22cdef 	sw	v0,-12817\(at\)
-  7c:	ac23cdf3 	sw	v1,-12813\(at\)
-  80:	3c012345 	lui	at,0x2345
-  84:	00610821 	addu	at,v1,at
-  88:	ac226789 	sw	v0,26505\(at\)
-  8c:	ac23678d 	sw	v1,26509\(at\)
-  90:	3c018000 	lui	at,0x8000
-  94:	00610821 	addu	at,v1,at
-  98:	ac220000 	sw	v0,0\(at\)
-  9c:	ac230004 	sw	v1,4\(at\)
+   0:	8c82ffff 	lw	v0,-1\(a0\)
+   4:	8c830003 	lw	v1,3\(a0\)
+   8:	3c01abce 	lui	at,0xabce
+   c:	00810821 	addu	at,a0,at
+  10:	8c22ef01 	lw	v0,-4351\(at\)
+  14:	8c23ef05 	lw	v1,-4347\(at\)
+  18:	3c018000 	lui	at,0x8000
+  1c:	00810821 	addu	at,a0,at
+  20:	8c220000 	lw	v0,0\(at\)
+  24:	8c230004 	lw	v1,4\(at\)
+  28:	3c010000 	lui	at,0x0
+  2c:	00810821 	addu	at,a0,at
+  30:	8c22ffff 	lw	v0,-1\(at\)
+  34:	8c230003 	lw	v1,3\(at\)
+  38:	3c01abce 	lui	at,0xabce
+  3c:	00810821 	addu	at,a0,at
+  40:	8c22ef01 	lw	v0,-4351\(at\)
+  44:	8c23ef05 	lw	v1,-4347\(at\)
+  48:	3c018000 	lui	at,0x8000
+  4c:	00810821 	addu	at,a0,at
+  50:	8c220000 	lw	v0,0\(at\)
+  54:	8c230004 	lw	v1,4\(at\)
+  58:	3c018000 	lui	at,0x8000
+  5c:	00810821 	addu	at,a0,at
+  60:	8c22ffff 	lw	v0,-1\(at\)
+  64:	8c230003 	lw	v1,3\(at\)
+  68:	3c010123 	lui	at,0x123
+  6c:	00810821 	addu	at,a0,at
+  70:	8c224567 	lw	v0,17767\(at\)
+  74:	8c23456b 	lw	v1,17771\(at\)
+  78:	8c820000 	lw	v0,0\(a0\)
+  7c:	8c830004 	lw	v1,4\(a0\)
+  80:	8c02ffff 	lw	v0,-1\(zero\)
+  84:	8c030003 	lw	v1,3\(zero\)
+  88:	3c01abce 	lui	at,0xabce
+  8c:	8c22ef01 	lw	v0,-4351\(at\)
+  90:	8c23ef05 	lw	v1,-4347\(at\)
+  94:	3c018000 	lui	at,0x8000
+  98:	8c220000 	lw	v0,0\(at\)
+  9c:	8c230004 	lw	v1,4\(at\)
   a0:	3c010000 	lui	at,0x0
-  a4:	00610821 	addu	at,v1,at
-  a8:	ac220000 	sw	v0,0\(at\)
-  ac:	ac230004 	sw	v1,4\(at\)
-  b0:	3c018000 	lui	at,0x8000
-  b4:	00610821 	addu	at,v1,at
-  b8:	ac22ffff 	sw	v0,-1\(at\)
-  bc:	ac230003 	sw	v1,3\(at\)
-  c0:	3c01abce 	lui	at,0xabce
-  c4:	00610821 	addu	at,v1,at
-  c8:	ac22ef01 	sw	v0,-4351\(at\)
-  cc:	ac23ef05 	sw	v1,-4347\(at\)
+  a4:	8c22ffff 	lw	v0,-1\(at\)
+  a8:	8c230003 	lw	v1,3\(at\)
+  ac:	3c01abce 	lui	at,0xabce
+  b0:	8c22ef01 	lw	v0,-4351\(at\)
+  b4:	8c23ef05 	lw	v1,-4347\(at\)
+  b8:	3c018000 	lui	at,0x8000
+  bc:	8c220000 	lw	v0,0\(at\)
+  c0:	8c230004 	lw	v1,4\(at\)
+  c4:	3c018000 	lui	at,0x8000
+  c8:	8c22ffff 	lw	v0,-1\(at\)
+  cc:	8c230003 	lw	v1,3\(at\)
   d0:	3c010123 	lui	at,0x123
-  d4:	00610821 	addu	at,v1,at
-  d8:	ac224567 	sw	v0,17767\(at\)
-  dc:	ac23456b 	sw	v1,17771\(at\)
-  e0:	3c028000 	lui	v0,0x8000
-  e4:	00431021 	addu	v0,v0,v1
-  e8:	8c420000 	lw	v0,0\(v0\)
-  ec:	3c020123 	lui	v0,0x123
-  f0:	00431021 	addu	v0,v0,v1
-  f4:	8c424567 	lw	v0,17767\(v0\)
-  f8:	3c010123 	lui	at,0x123
-  fc:	00230821 	addu	at,at,v1
- 100:	ac224567 	sw	v0,17767\(at\)
- 104:	3c027fff 	lui	v0,0x7fff
- 108:	3442ffff 	ori	v0,v0,0xffff
- 10c:	3c020123 	lui	v0,0x123
- 110:	34424567 	ori	v0,v0,0x4567
+  d4:	8c224567 	lw	v0,17767\(at\)
+  d8:	8c23456b 	lw	v1,17771\(at\)
+  dc:	8c020000 	lw	v0,0\(zero\)
+  e0:	8c030004 	lw	v1,4\(zero\)
+  e4:	ac82ffff 	sw	v0,-1\(a0\)
+  e8:	ac830003 	sw	v1,3\(a0\)
+  ec:	3c01abce 	lui	at,0xabce
+  f0:	00810821 	addu	at,a0,at
+  f4:	ac22ef01 	sw	v0,-4351\(at\)
+  f8:	ac23ef05 	sw	v1,-4347\(at\)
+  fc:	3c018000 	lui	at,0x8000
+ 100:	00810821 	addu	at,a0,at
+ 104:	ac220000 	sw	v0,0\(at\)
+ 108:	ac230004 	sw	v1,4\(at\)
+ 10c:	3c010000 	lui	at,0x0
+ 110:	00810821 	addu	at,a0,at
+ 114:	ac22ffff 	sw	v0,-1\(at\)
+ 118:	ac230003 	sw	v1,3\(at\)
+ 11c:	3c01abce 	lui	at,0xabce
+ 120:	00810821 	addu	at,a0,at
+ 124:	ac22ef01 	sw	v0,-4351\(at\)
+ 128:	ac23ef05 	sw	v1,-4347\(at\)
+ 12c:	3c018000 	lui	at,0x8000
+ 130:	00810821 	addu	at,a0,at
+ 134:	ac220000 	sw	v0,0\(at\)
+ 138:	ac230004 	sw	v1,4\(at\)
+ 13c:	3c018000 	lui	at,0x8000
+ 140:	00810821 	addu	at,a0,at
+ 144:	ac22ffff 	sw	v0,-1\(at\)
+ 148:	ac230003 	sw	v1,3\(at\)
+ 14c:	3c010123 	lui	at,0x123
+ 150:	00810821 	addu	at,a0,at
+ 154:	ac224567 	sw	v0,17767\(at\)
+ 158:	ac23456b 	sw	v1,17771\(at\)
+ 15c:	ac820000 	sw	v0,0\(a0\)
+ 160:	ac830004 	sw	v1,4\(a0\)
+ 164:	ac02ffff 	sw	v0,-1\(zero\)
+ 168:	ac030003 	sw	v1,3\(zero\)
+ 16c:	3c01abce 	lui	at,0xabce
+ 170:	ac22ef01 	sw	v0,-4351\(at\)
+ 174:	ac23ef05 	sw	v1,-4347\(at\)
+ 178:	3c018000 	lui	at,0x8000
+ 17c:	ac220000 	sw	v0,0\(at\)
+ 180:	ac230004 	sw	v1,4\(at\)
+ 184:	3c010000 	lui	at,0x0
+ 188:	ac22ffff 	sw	v0,-1\(at\)
+ 18c:	ac230003 	sw	v1,3\(at\)
+ 190:	3c01abce 	lui	at,0xabce
+ 194:	ac22ef01 	sw	v0,-4351\(at\)
+ 198:	ac23ef05 	sw	v1,-4347\(at\)
+ 19c:	3c018000 	lui	at,0x8000
+ 1a0:	ac220000 	sw	v0,0\(at\)
+ 1a4:	ac230004 	sw	v1,4\(at\)
+ 1a8:	3c018000 	lui	at,0x8000
+ 1ac:	ac22ffff 	sw	v0,-1\(at\)
+ 1b0:	ac230003 	sw	v1,3\(at\)
+ 1b4:	3c010123 	lui	at,0x123
+ 1b8:	ac224567 	sw	v0,17767\(at\)
+ 1bc:	ac23456b 	sw	v1,17771\(at\)
+ 1c0:	ac020000 	sw	v0,0\(zero\)
+ 1c4:	ac030004 	sw	v1,4\(zero\)
+ 1c8:	8c82ffff 	lw	v0,-1\(a0\)
+ 1cc:	3c02abce 	lui	v0,0xabce
+ 1d0:	00441021 	addu	v0,v0,a0
+ 1d4:	8c42ef01 	lw	v0,-4351\(v0\)
+ 1d8:	3c028000 	lui	v0,0x8000
+ 1dc:	00441021 	addu	v0,v0,a0
+ 1e0:	8c420000 	lw	v0,0\(v0\)
+ 1e4:	24020000 	li	v0,0
+ 1e8:	00441021 	addu	v0,v0,a0
+ 1ec:	8c42ffff 	lw	v0,-1\(v0\)
+ 1f0:	3c02abce 	lui	v0,0xabce
+ 1f4:	00441021 	addu	v0,v0,a0
+ 1f8:	8c42ef01 	lw	v0,-4351\(v0\)
+ 1fc:	3c028000 	lui	v0,0x8000
+ 200:	00441021 	addu	v0,v0,a0
+ 204:	8c420000 	lw	v0,0\(v0\)
+ 208:	3c028000 	lui	v0,0x8000
+ 20c:	00441021 	addu	v0,v0,a0
+ 210:	8c42ffff 	lw	v0,-1\(v0\)
+ 214:	3c020123 	lui	v0,0x123
+ 218:	00441021 	addu	v0,v0,a0
+ 21c:	8c424567 	lw	v0,17767\(v0\)
+ 220:	8c820000 	lw	v0,0\(a0\)
+ 224:	8c02ffff 	lw	v0,-1\(zero\)
+ 228:	3c02abce 	lui	v0,0xabce
+ 22c:	8c42ef01 	lw	v0,-4351\(v0\)
+ 230:	3c028000 	lui	v0,0x8000
+ 234:	8c420000 	lw	v0,0\(v0\)
+ 238:	24020000 	li	v0,0
+ 23c:	8c42ffff 	lw	v0,-1\(v0\)
+ 240:	3c02abce 	lui	v0,0xabce
+ 244:	8c42ef01 	lw	v0,-4351\(v0\)
+ 248:	3c028000 	lui	v0,0x8000
+ 24c:	8c420000 	lw	v0,0\(v0\)
+ 250:	3c028000 	lui	v0,0x8000
+ 254:	8c42ffff 	lw	v0,-1\(v0\)
+ 258:	3c020123 	lui	v0,0x123
+ 25c:	8c424567 	lw	v0,17767\(v0\)
+ 260:	8c020000 	lw	v0,0\(zero\)
+ 264:	00000000 	nop
+ 268:	ac82ffff 	sw	v0,-1\(a0\)
+ 26c:	3c01abce 	lui	at,0xabce
+ 270:	00240821 	addu	at,at,a0
+ 274:	ac22ef01 	sw	v0,-4351\(at\)
+ 278:	3c018000 	lui	at,0x8000
+ 27c:	00240821 	addu	at,at,a0
+ 280:	ac220000 	sw	v0,0\(at\)
+ 284:	24010000 	li	at,0
+ 288:	00240821 	addu	at,at,a0
+ 28c:	ac22ffff 	sw	v0,-1\(at\)
+ 290:	3c01abce 	lui	at,0xabce
+ 294:	00240821 	addu	at,at,a0
+ 298:	ac22ef01 	sw	v0,-4351\(at\)
+ 29c:	3c018000 	lui	at,0x8000
+ 2a0:	00240821 	addu	at,at,a0
+ 2a4:	ac220000 	sw	v0,0\(at\)
+ 2a8:	3c018000 	lui	at,0x8000
+ 2ac:	00240821 	addu	at,at,a0
+ 2b0:	ac22ffff 	sw	v0,-1\(at\)
+ 2b4:	3c010123 	lui	at,0x123
+ 2b8:	00240821 	addu	at,at,a0
+ 2bc:	ac224567 	sw	v0,17767\(at\)
+ 2c0:	ac820000 	sw	v0,0\(a0\)
+ 2c4:	ac02ffff 	sw	v0,-1\(zero\)
+ 2c8:	3c01abce 	lui	at,0xabce
+ 2cc:	ac22ef01 	sw	v0,-4351\(at\)
+ 2d0:	3c018000 	lui	at,0x8000
+ 2d4:	ac220000 	sw	v0,0\(at\)
+ 2d8:	24010000 	li	at,0
+ 2dc:	ac22ffff 	sw	v0,-1\(at\)
+ 2e0:	3c01abce 	lui	at,0xabce
+ 2e4:	ac22ef01 	sw	v0,-4351\(at\)
+ 2e8:	3c018000 	lui	at,0x8000
+ 2ec:	ac220000 	sw	v0,0\(at\)
+ 2f0:	3c018000 	lui	at,0x8000
+ 2f4:	ac22ffff 	sw	v0,-1\(at\)
+ 2f8:	3c010123 	lui	at,0x123
+ 2fc:	ac224567 	sw	v0,17767\(at\)
+ 300:	ac020000 	sw	v0,0\(zero\)
+ 304:	2482ffff 	addiu	v0,a0,-1
+ 308:	3c02abcd 	lui	v0,0xabcd
+ 30c:	3442ef01 	ori	v0,v0,0xef01
+ 310:	00441021 	addu	v0,v0,a0
+ 314:	3c028000 	lui	v0,0x8000
+ 318:	00441021 	addu	v0,v0,a0
+ 31c:	2482ffff 	addiu	v0,a0,-1
+ 320:	3c02abcd 	lui	v0,0xabcd
+ 324:	3442ef01 	ori	v0,v0,0xef01
+ 328:	00441021 	addu	v0,v0,a0
+ 32c:	3c028000 	lui	v0,0x8000
+ 330:	00441021 	addu	v0,v0,a0
+ 334:	3c027fff 	lui	v0,0x7fff
+ 338:	3442ffff 	ori	v0,v0,0xffff
+ 33c:	00441021 	addu	v0,v0,a0
+ 340:	3c020123 	lui	v0,0x123
+ 344:	34424567 	ori	v0,v0,0x4567
+ 348:	00441021 	addu	v0,v0,a0
+ 34c:	24820000 	addiu	v0,a0,0
+ 350:	2402ffff 	li	v0,-1
+ 354:	3c02abcd 	lui	v0,0xabcd
+ 358:	3442ef01 	ori	v0,v0,0xef01
+ 35c:	3c028000 	lui	v0,0x8000
+ 360:	2402ffff 	li	v0,-1
+ 364:	3c02abcd 	lui	v0,0xabcd
+ 368:	3442ef01 	ori	v0,v0,0xef01
+ 36c:	3c028000 	lui	v0,0x8000
+ 370:	3c027fff 	lui	v0,0x7fff
+ 374:	3442ffff 	ori	v0,v0,0xffff
+ 378:	3c020123 	lui	v0,0x123
+ 37c:	34424567 	ori	v0,v0,0x4567
+ 380:	24020000 	li	v0,0
 	\.\.\.
diff -up --recursive --new-file binutils-2.15.96-20050331.macro/gas/testsuite/gas/mips/ldstla-32.d binutils-2.15.96-20050331/gas/testsuite/gas/mips/ldstla-32.d
--- binutils-2.15.96-20050331.macro/gas/testsuite/gas/mips/ldstla-32.d	2003-10-01 02:07:48.000000000 +0000
+++ binutils-2.15.96-20050331/gas/testsuite/gas/mips/ldstla-32.d	2005-04-03 18:01:43.000000000 +0000
@@ -8,73 +8,229 @@
 Disassembly of section \.text:
 
 00000000 <\.text>:
-   0:	3c0189ac 	lui	at,0x89ac
-   4:	00610821 	addu	at,v1,at
-   8:	8c22cdef 	lw	v0,-12817\(at\)
-   c:	8c23cdf3 	lw	v1,-12813\(at\)
-  10:	3c012345 	lui	at,0x2345
-  14:	00610821 	addu	at,v1,at
-  18:	8c226789 	lw	v0,26505\(at\)
-  1c:	8c23678d 	lw	v1,26509\(at\)
-  20:	3c018000 	lui	at,0x8000
-  24:	00610821 	addu	at,v1,at
-  28:	8c220000 	lw	v0,0\(at\)
-  2c:	8c230004 	lw	v1,4\(at\)
-  30:	3c010000 	lui	at,0x0
-  34:	00610821 	addu	at,v1,at
-  38:	8c220000 	lw	v0,0\(at\)
-  3c:	8c230004 	lw	v1,4\(at\)
-  40:	3c018000 	lui	at,0x8000
-  44:	00610821 	addu	at,v1,at
-  48:	8c22ffff 	lw	v0,-1\(at\)
-  4c:	8c230003 	lw	v1,3\(at\)
-  50:	3c01abce 	lui	at,0xabce
-  54:	00610821 	addu	at,v1,at
-  58:	8c22ef01 	lw	v0,-4351\(at\)
-  5c:	8c23ef05 	lw	v1,-4347\(at\)
-  60:	3c010123 	lui	at,0x123
-  64:	00610821 	addu	at,v1,at
-  68:	8c224567 	lw	v0,17767\(at\)
-  6c:	8c23456b 	lw	v1,17771\(at\)
-  70:	3c0189ac 	lui	at,0x89ac
-  74:	00610821 	addu	at,v1,at
-  78:	ac22cdef 	sw	v0,-12817\(at\)
-  7c:	ac23cdf3 	sw	v1,-12813\(at\)
-  80:	3c012345 	lui	at,0x2345
-  84:	00610821 	addu	at,v1,at
-  88:	ac226789 	sw	v0,26505\(at\)
-  8c:	ac23678d 	sw	v1,26509\(at\)
-  90:	3c018000 	lui	at,0x8000
-  94:	00610821 	addu	at,v1,at
-  98:	ac220000 	sw	v0,0\(at\)
-  9c:	ac230004 	sw	v1,4\(at\)
+   0:	8c82ffff 	lw	v0,-1\(a0\)
+   4:	8c830003 	lw	v1,3\(a0\)
+   8:	3c01abce 	lui	at,0xabce
+   c:	00810821 	addu	at,a0,at
+  10:	8c22ef01 	lw	v0,-4351\(at\)
+  14:	8c23ef05 	lw	v1,-4347\(at\)
+  18:	3c018000 	lui	at,0x8000
+  1c:	00810821 	addu	at,a0,at
+  20:	8c220000 	lw	v0,0\(at\)
+  24:	8c230004 	lw	v1,4\(at\)
+  28:	3c010000 	lui	at,0x0
+  2c:	00810821 	addu	at,a0,at
+  30:	8c22ffff 	lw	v0,-1\(at\)
+  34:	8c230003 	lw	v1,3\(at\)
+  38:	3c01abce 	lui	at,0xabce
+  3c:	00810821 	addu	at,a0,at
+  40:	8c22ef01 	lw	v0,-4351\(at\)
+  44:	8c23ef05 	lw	v1,-4347\(at\)
+  48:	3c018000 	lui	at,0x8000
+  4c:	00810821 	addu	at,a0,at
+  50:	8c220000 	lw	v0,0\(at\)
+  54:	8c230004 	lw	v1,4\(at\)
+  58:	3c018000 	lui	at,0x8000
+  5c:	00810821 	addu	at,a0,at
+  60:	8c22ffff 	lw	v0,-1\(at\)
+  64:	8c230003 	lw	v1,3\(at\)
+  68:	3c010123 	lui	at,0x123
+  6c:	00810821 	addu	at,a0,at
+  70:	8c224567 	lw	v0,17767\(at\)
+  74:	8c23456b 	lw	v1,17771\(at\)
+  78:	8c820000 	lw	v0,0\(a0\)
+  7c:	8c830004 	lw	v1,4\(a0\)
+  80:	8c02ffff 	lw	v0,-1\(zero\)
+  84:	8c030003 	lw	v1,3\(zero\)
+  88:	3c01abce 	lui	at,0xabce
+  8c:	8c22ef01 	lw	v0,-4351\(at\)
+  90:	8c23ef05 	lw	v1,-4347\(at\)
+  94:	3c018000 	lui	at,0x8000
+  98:	8c220000 	lw	v0,0\(at\)
+  9c:	8c230004 	lw	v1,4\(at\)
   a0:	3c010000 	lui	at,0x0
-  a4:	00610821 	addu	at,v1,at
-  a8:	ac220000 	sw	v0,0\(at\)
-  ac:	ac230004 	sw	v1,4\(at\)
-  b0:	3c018000 	lui	at,0x8000
-  b4:	00610821 	addu	at,v1,at
-  b8:	ac22ffff 	sw	v0,-1\(at\)
-  bc:	ac230003 	sw	v1,3\(at\)
-  c0:	3c01abce 	lui	at,0xabce
-  c4:	00610821 	addu	at,v1,at
-  c8:	ac22ef01 	sw	v0,-4351\(at\)
-  cc:	ac23ef05 	sw	v1,-4347\(at\)
+  a4:	8c22ffff 	lw	v0,-1\(at\)
+  a8:	8c230003 	lw	v1,3\(at\)
+  ac:	3c01abce 	lui	at,0xabce
+  b0:	8c22ef01 	lw	v0,-4351\(at\)
+  b4:	8c23ef05 	lw	v1,-4347\(at\)
+  b8:	3c018000 	lui	at,0x8000
+  bc:	8c220000 	lw	v0,0\(at\)
+  c0:	8c230004 	lw	v1,4\(at\)
+  c4:	3c018000 	lui	at,0x8000
+  c8:	8c22ffff 	lw	v0,-1\(at\)
+  cc:	8c230003 	lw	v1,3\(at\)
   d0:	3c010123 	lui	at,0x123
-  d4:	00610821 	addu	at,v1,at
-  d8:	ac224567 	sw	v0,17767\(at\)
-  dc:	ac23456b 	sw	v1,17771\(at\)
-  e0:	3c028000 	lui	v0,0x8000
-  e4:	00431021 	addu	v0,v0,v1
-  e8:	8c420000 	lw	v0,0\(v0\)
-  ec:	3c020123 	lui	v0,0x123
-  f0:	00431021 	addu	v0,v0,v1
-  f4:	8c424567 	lw	v0,17767\(v0\)
-  f8:	3c010123 	lui	at,0x123
-  fc:	00230821 	addu	at,at,v1
- 100:	ac224567 	sw	v0,17767\(at\)
- 104:	3c027fff 	lui	v0,0x7fff
- 108:	3442ffff 	ori	v0,v0,0xffff
- 10c:	3c020123 	lui	v0,0x123
- 110:	34424567 	ori	v0,v0,0x4567
+  d4:	8c224567 	lw	v0,17767\(at\)
+  d8:	8c23456b 	lw	v1,17771\(at\)
+  dc:	8c020000 	lw	v0,0\(zero\)
+  e0:	8c030004 	lw	v1,4\(zero\)
+  e4:	ac82ffff 	sw	v0,-1\(a0\)
+  e8:	ac830003 	sw	v1,3\(a0\)
+  ec:	3c01abce 	lui	at,0xabce
+  f0:	00810821 	addu	at,a0,at
+  f4:	ac22ef01 	sw	v0,-4351\(at\)
+  f8:	ac23ef05 	sw	v1,-4347\(at\)
+  fc:	3c018000 	lui	at,0x8000
+ 100:	00810821 	addu	at,a0,at
+ 104:	ac220000 	sw	v0,0\(at\)
+ 108:	ac230004 	sw	v1,4\(at\)
+ 10c:	3c010000 	lui	at,0x0
+ 110:	00810821 	addu	at,a0,at
+ 114:	ac22ffff 	sw	v0,-1\(at\)
+ 118:	ac230003 	sw	v1,3\(at\)
+ 11c:	3c01abce 	lui	at,0xabce
+ 120:	00810821 	addu	at,a0,at
+ 124:	ac22ef01 	sw	v0,-4351\(at\)
+ 128:	ac23ef05 	sw	v1,-4347\(at\)
+ 12c:	3c018000 	lui	at,0x8000
+ 130:	00810821 	addu	at,a0,at
+ 134:	ac220000 	sw	v0,0\(at\)
+ 138:	ac230004 	sw	v1,4\(at\)
+ 13c:	3c018000 	lui	at,0x8000
+ 140:	00810821 	addu	at,a0,at
+ 144:	ac22ffff 	sw	v0,-1\(at\)
+ 148:	ac230003 	sw	v1,3\(at\)
+ 14c:	3c010123 	lui	at,0x123
+ 150:	00810821 	addu	at,a0,at
+ 154:	ac224567 	sw	v0,17767\(at\)
+ 158:	ac23456b 	sw	v1,17771\(at\)
+ 15c:	ac820000 	sw	v0,0\(a0\)
+ 160:	ac830004 	sw	v1,4\(a0\)
+ 164:	ac02ffff 	sw	v0,-1\(zero\)
+ 168:	ac030003 	sw	v1,3\(zero\)
+ 16c:	3c01abce 	lui	at,0xabce
+ 170:	ac22ef01 	sw	v0,-4351\(at\)
+ 174:	ac23ef05 	sw	v1,-4347\(at\)
+ 178:	3c018000 	lui	at,0x8000
+ 17c:	ac220000 	sw	v0,0\(at\)
+ 180:	ac230004 	sw	v1,4\(at\)
+ 184:	3c010000 	lui	at,0x0
+ 188:	ac22ffff 	sw	v0,-1\(at\)
+ 18c:	ac230003 	sw	v1,3\(at\)
+ 190:	3c01abce 	lui	at,0xabce
+ 194:	ac22ef01 	sw	v0,-4351\(at\)
+ 198:	ac23ef05 	sw	v1,-4347\(at\)
+ 19c:	3c018000 	lui	at,0x8000
+ 1a0:	ac220000 	sw	v0,0\(at\)
+ 1a4:	ac230004 	sw	v1,4\(at\)
+ 1a8:	3c018000 	lui	at,0x8000
+ 1ac:	ac22ffff 	sw	v0,-1\(at\)
+ 1b0:	ac230003 	sw	v1,3\(at\)
+ 1b4:	3c010123 	lui	at,0x123
+ 1b8:	ac224567 	sw	v0,17767\(at\)
+ 1bc:	ac23456b 	sw	v1,17771\(at\)
+ 1c0:	ac020000 	sw	v0,0\(zero\)
+ 1c4:	ac030004 	sw	v1,4\(zero\)
+ 1c8:	8c82ffff 	lw	v0,-1\(a0\)
+ 1cc:	3c02abce 	lui	v0,0xabce
+ 1d0:	00441021 	addu	v0,v0,a0
+ 1d4:	8c42ef01 	lw	v0,-4351\(v0\)
+ 1d8:	3c028000 	lui	v0,0x8000
+ 1dc:	00441021 	addu	v0,v0,a0
+ 1e0:	8c420000 	lw	v0,0\(v0\)
+ 1e4:	24020000 	li	v0,0
+ 1e8:	00441021 	addu	v0,v0,a0
+ 1ec:	8c42ffff 	lw	v0,-1\(v0\)
+ 1f0:	3c02abce 	lui	v0,0xabce
+ 1f4:	00441021 	addu	v0,v0,a0
+ 1f8:	8c42ef01 	lw	v0,-4351\(v0\)
+ 1fc:	3c028000 	lui	v0,0x8000
+ 200:	00441021 	addu	v0,v0,a0
+ 204:	8c420000 	lw	v0,0\(v0\)
+ 208:	3c028000 	lui	v0,0x8000
+ 20c:	00441021 	addu	v0,v0,a0
+ 210:	8c42ffff 	lw	v0,-1\(v0\)
+ 214:	3c020123 	lui	v0,0x123
+ 218:	00441021 	addu	v0,v0,a0
+ 21c:	8c424567 	lw	v0,17767\(v0\)
+ 220:	8c820000 	lw	v0,0\(a0\)
+ 224:	8c02ffff 	lw	v0,-1\(zero\)
+ 228:	3c02abce 	lui	v0,0xabce
+ 22c:	8c42ef01 	lw	v0,-4351\(v0\)
+ 230:	3c028000 	lui	v0,0x8000
+ 234:	8c420000 	lw	v0,0\(v0\)
+ 238:	24020000 	li	v0,0
+ 23c:	8c42ffff 	lw	v0,-1\(v0\)
+ 240:	3c02abce 	lui	v0,0xabce
+ 244:	8c42ef01 	lw	v0,-4351\(v0\)
+ 248:	3c028000 	lui	v0,0x8000
+ 24c:	8c420000 	lw	v0,0\(v0\)
+ 250:	3c028000 	lui	v0,0x8000
+ 254:	8c42ffff 	lw	v0,-1\(v0\)
+ 258:	3c020123 	lui	v0,0x123
+ 25c:	8c424567 	lw	v0,17767\(v0\)
+ 260:	8c020000 	lw	v0,0\(zero\)
+ 264:	00000000 	nop
+ 268:	ac82ffff 	sw	v0,-1\(a0\)
+ 26c:	3c01abce 	lui	at,0xabce
+ 270:	00240821 	addu	at,at,a0
+ 274:	ac22ef01 	sw	v0,-4351\(at\)
+ 278:	3c018000 	lui	at,0x8000
+ 27c:	00240821 	addu	at,at,a0
+ 280:	ac220000 	sw	v0,0\(at\)
+ 284:	24010000 	li	at,0
+ 288:	00240821 	addu	at,at,a0
+ 28c:	ac22ffff 	sw	v0,-1\(at\)
+ 290:	3c01abce 	lui	at,0xabce
+ 294:	00240821 	addu	at,at,a0
+ 298:	ac22ef01 	sw	v0,-4351\(at\)
+ 29c:	3c018000 	lui	at,0x8000
+ 2a0:	00240821 	addu	at,at,a0
+ 2a4:	ac220000 	sw	v0,0\(at\)
+ 2a8:	3c018000 	lui	at,0x8000
+ 2ac:	00240821 	addu	at,at,a0
+ 2b0:	ac22ffff 	sw	v0,-1\(at\)
+ 2b4:	3c010123 	lui	at,0x123
+ 2b8:	00240821 	addu	at,at,a0
+ 2bc:	ac224567 	sw	v0,17767\(at\)
+ 2c0:	ac820000 	sw	v0,0\(a0\)
+ 2c4:	ac02ffff 	sw	v0,-1\(zero\)
+ 2c8:	3c01abce 	lui	at,0xabce
+ 2cc:	ac22ef01 	sw	v0,-4351\(at\)
+ 2d0:	3c018000 	lui	at,0x8000
+ 2d4:	ac220000 	sw	v0,0\(at\)
+ 2d8:	24010000 	li	at,0
+ 2dc:	ac22ffff 	sw	v0,-1\(at\)
+ 2e0:	3c01abce 	lui	at,0xabce
+ 2e4:	ac22ef01 	sw	v0,-4351\(at\)
+ 2e8:	3c018000 	lui	at,0x8000
+ 2ec:	ac220000 	sw	v0,0\(at\)
+ 2f0:	3c018000 	lui	at,0x8000
+ 2f4:	ac22ffff 	sw	v0,-1\(at\)
+ 2f8:	3c010123 	lui	at,0x123
+ 2fc:	ac224567 	sw	v0,17767\(at\)
+ 300:	ac020000 	sw	v0,0\(zero\)
+ 304:	2482ffff 	addiu	v0,a0,-1
+ 308:	3c02abcd 	lui	v0,0xabcd
+ 30c:	3442ef01 	ori	v0,v0,0xef01
+ 310:	00441021 	addu	v0,v0,a0
+ 314:	3c028000 	lui	v0,0x8000
+ 318:	00441021 	addu	v0,v0,a0
+ 31c:	2482ffff 	addiu	v0,a0,-1
+ 320:	3c02abcd 	lui	v0,0xabcd
+ 324:	3442ef01 	ori	v0,v0,0xef01
+ 328:	00441021 	addu	v0,v0,a0
+ 32c:	3c028000 	lui	v0,0x8000
+ 330:	00441021 	addu	v0,v0,a0
+ 334:	3c027fff 	lui	v0,0x7fff
+ 338:	3442ffff 	ori	v0,v0,0xffff
+ 33c:	00441021 	addu	v0,v0,a0
+ 340:	3c020123 	lui	v0,0x123
+ 344:	34424567 	ori	v0,v0,0x4567
+ 348:	00441021 	addu	v0,v0,a0
+ 34c:	24820000 	addiu	v0,a0,0
+ 350:	2402ffff 	li	v0,-1
+ 354:	3c02abcd 	lui	v0,0xabcd
+ 358:	3442ef01 	ori	v0,v0,0xef01
+ 35c:	3c028000 	lui	v0,0x8000
+ 360:	2402ffff 	li	v0,-1
+ 364:	3c02abcd 	lui	v0,0xabcd
+ 368:	3442ef01 	ori	v0,v0,0xef01
+ 36c:	3c028000 	lui	v0,0x8000
+ 370:	3c027fff 	lui	v0,0x7fff
+ 374:	3442ffff 	ori	v0,v0,0xffff
+ 378:	3c020123 	lui	v0,0x123
+ 37c:	34424567 	ori	v0,v0,0x4567
+ 380:	24020000 	li	v0,0
 	\.\.\.
diff -up --recursive --new-file binutils-2.15.96-20050331.macro/gas/testsuite/gas/mips/ldstla-32.s binutils-2.15.96-20050331/gas/testsuite/gas/mips/ldstla-32.s
--- binutils-2.15.96-20050331.macro/gas/testsuite/gas/mips/ldstla-32.s	2003-10-01 02:07:48.000000000 +0000
+++ binutils-2.15.96-20050331/gas/testsuite/gas/mips/ldstla-32.s	2005-04-03 14:48:15.000000000 +0000
@@ -1,26 +1,102 @@
 	.text
-	ld $2, 0x0123456789abcdef($3)
-	ld $2, 0xabcdef0123456789($3)
-	ld $2, 0xffffffff80000000($3)
-	ld $2, 0xffffffff00000000($3)
-	ld $2, 0xffffffff7fffffff($3)
-	ld $2, 0xabcdef01($3)
-	ld $2, 0x01234567($3)
-
-	sd $2, 0x0123456789abcdef($3)
-	sd $2, 0xabcdef0123456789($3)
-	sd $2, 0xffffffff80000000($3)
-	sd $2, 0xffffffff00000000($3)
-	sd $2, 0xffffffff7fffffff($3)
-	sd $2, 0xabcdef01($3)
-	sd $2, 0x01234567($3)
+	ld $2, 0xffffffffffffffff($4)
+	ld $2, 0xffffffffabcdef01($4)
+	ld $2, 0xffffffff80000000($4)
+	ld $2, 0xffffffff($4)
+	ld $2, 0xabcdef01($4)
+	ld $2, 0x80000000($4)
+	ld $2, 0x7fffffff($4)
+	ld $2, 0x01234567($4)
+	ld $2, 0x00000000($4)
 
-	lw $2, 0xffffffff80000000($3)
-	lw $2, 0x01234567($3)
+	ld $2, 0xffffffffffffffff
+	ld $2, 0xffffffffabcdef01
+	ld $2, 0xffffffff80000000
+	ld $2, 0xffffffff
+	ld $2, 0xabcdef01
+	ld $2, 0x80000000
+	ld $2, 0x7fffffff
+	ld $2, 0x01234567
+	ld $2, 0x00000000
 
-	sw $2, 0x01234567($3)
+	sd $2, 0xffffffffffffffff($4)
+	sd $2, 0xffffffffabcdef01($4)
+	sd $2, 0xffffffff80000000($4)
+	sd $2, 0xffffffff($4)
+	sd $2, 0xabcdef01($4)
+	sd $2, 0x80000000($4)
+	sd $2, 0x7fffffff($4)
+	sd $2, 0x01234567($4)
+	sd $2, 0x00000000($4)
 
+	sd $2, 0xffffffffffffffff
+	sd $2, 0xffffffffabcdef01
+	sd $2, 0xffffffff80000000
+	sd $2, 0xffffffff
+	sd $2, 0xabcdef01
+	sd $2, 0x80000000
+	sd $2, 0x7fffffff
+	sd $2, 0x01234567
+	sd $2, 0x00000000
+
+	lw $2, 0xffffffffffffffff($4)
+	lw $2, 0xffffffffabcdef01($4)
+	lw $2, 0xffffffff80000000($4)
+	lw $2, 0xffffffff($4)
+	lw $2, 0xabcdef01($4)
+	lw $2, 0x80000000($4)
+	lw $2, 0x7fffffff($4)
+	lw $2, 0x01234567($4)
+	lw $2, 0x00000000($4)
+
+	lw $2, 0xffffffffffffffff
+	lw $2, 0xffffffffabcdef01
+	lw $2, 0xffffffff80000000
+	lw $2, 0xffffffff
+	lw $2, 0xabcdef01
+	lw $2, 0x80000000
+	lw $2, 0x7fffffff
+	lw $2, 0x01234567
+	lw $2, 0x00000000
+
+	sw $2, 0xffffffffffffffff($4)
+	sw $2, 0xffffffffabcdef01($4)
+	sw $2, 0xffffffff80000000($4)
+	sw $2, 0xffffffff($4)
+	sw $2, 0xabcdef01($4)
+	sw $2, 0x80000000($4)
+	sw $2, 0x7fffffff($4)
+	sw $2, 0x01234567($4)
+	sw $2, 0x00000000($4)
+
+	sw $2, 0xffffffffffffffff
+	sw $2, 0xffffffffabcdef01
+	sw $2, 0xffffffff80000000
+	sw $2, 0xffffffff
+	sw $2, 0xabcdef01
+	sw $2, 0x80000000
+	sw $2, 0x7fffffff
+	sw $2, 0x01234567
+	sw $2, 0x00000000
+
+	la $2, 0xffffffffffffffff($4)
+	la $2, 0xffffffffabcdef01($4)
+	la $2, 0xffffffff80000000($4)
+	la $2, 0xffffffff($4)
+	la $2, 0xabcdef01($4)
+	la $2, 0x80000000($4)
+	la $2, 0x7fffffff($4)
+	la $2, 0x01234567($4)
+	la $2, 0x00000000($4)
+
+	la $2, 0xffffffffffffffff
+	la $2, 0xffffffffabcdef01
+	la $2, 0xffffffff80000000
+	la $2, 0xffffffff
+	la $2, 0xabcdef01
+	la $2, 0x80000000
 	la $2, 0x7fffffff
 	la $2, 0x01234567
+	la $2, 0x00000000
 
 	.space 8
diff -up --recursive --new-file binutils-2.15.96-20050331.macro/gas/testsuite/gas/mips/mips.exp binutils-2.15.96-20050331/gas/testsuite/gas/mips/mips.exp
--- binutils-2.15.96-20050331.macro/gas/testsuite/gas/mips/mips.exp	2005-03-09 09:53:20.000000000 +0000
+++ binutils-2.15.96-20050331/gas/testsuite/gas/mips/mips.exp	2005-04-03 18:02:08.000000000 +0000
@@ -728,6 +728,10 @@ if { [istarget mips*-*-*] } then {
 
     run_dump_test "ldstla-32"
     run_dump_test "ldstla-32-shared"
+    run_list_test "ldstla-32-1" "-32" \
+	"MIPS ld-st-la bad constants (ABI o32)"
+    run_list_test "ldstla-32-1" "-KPIC -32" \
+	"MIPS ld-st-la bad constants (ABI o32, shared)"
     run_dump_test "ldstla-eabi64"
     if $has_newabi {
 	run_dump_test "ldstla-n64"


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