aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorMaciej W. Rozycki <macro@linux-mips.org>2005-04-13 18:17:10 +0000
committerMaciej W. Rozycki <macro@linux-mips.org>2005-04-13 18:17:10 +0000
commit2051e8c45faf97a1f6edb065c23a6a5e8fb8c484 (patch)
tree131f277bc01126fddb04b29d97feeee206ad4eb8 /gas
parenta63027e547181bee6b09e1c4441df4934e38edcd (diff)
downloadgdb-2051e8c45faf97a1f6edb065c23a6a5e8fb8c484.zip
gdb-2051e8c45faf97a1f6edb065c23a6a5e8fb8c484.tar.gz
gdb-2051e8c45faf97a1f6edb065c23a6a5e8fb8c484.tar.bz2
gas/:
* 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/: * 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-mips3.d: New test based on the above, except for mips3. * gas/mips/ldstla-32-mips3-shared.d: Similarly, for PIC. * gas/mips/ldstla-32-mips3.s: Source for the new tests. * gas/mips/ldstla-32-1.s: New test for offsets that are meant to fail. * gas/mips/ldstla-32-mips3-1.s: Likewise, for mips3. * gas/mips/ldstla-32-1.l: Stderr output for the new test. * gas/mips/ldstla-32-mips3-1.l: Likewise. * gas/mips/mips.exp: Run the new tests.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog13
-rw-r--r--gas/config/tc-mips.c87
-rw-r--r--gas/testsuite/ChangeLog18
-rw-r--r--gas/testsuite/gas/mips/ldstla-32-1.l81
-rw-r--r--gas/testsuite/gas/mips/ldstla-32-1.s73
-rw-r--r--gas/testsuite/gas/mips/ldstla-32-mips3-1.l101
-rw-r--r--gas/testsuite/gas/mips/ldstla-32-mips3-1.s73
-rw-r--r--gas/testsuite/gas/mips/ldstla-32-mips3-shared.d271
-rw-r--r--gas/testsuite/gas/mips/ldstla-32-mips3.d271
-rw-r--r--gas/testsuite/gas/mips/ldstla-32-mips3.s133
-rw-r--r--gas/testsuite/gas/mips/ldstla-32-shared.d380
-rw-r--r--gas/testsuite/gas/mips/ldstla-32.d380
-rw-r--r--gas/testsuite/gas/mips/ldstla-32.s146
-rw-r--r--gas/testsuite/gas/mips/mips.exp10
14 files changed, 1844 insertions, 193 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index d756de3..944f316 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,16 @@
+2005-04-13 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.
+
2005-04-12 Mark Kettenis <kettenis@gnu.org>
* config/tc-i386.c (output_insn): Handle VIA PadLock instructions
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
index d622d4b..a13b06e 100644
--- a/gas/config/tc-mips.c
+++ b/gas/config/tc-mips.c
@@ -861,6 +861,11 @@ static int mips_relax_branch;
(((x) &~ (offsetT) 0x7fff) == 0 \
|| (((x) &~ (offsetT) 0x7fff) == ~ (offsetT) 0x7fff))
+/* Is the given value a zero-extended 32-bit value? Or a negated one? */
+#define IS_ZEXT_32BIT_NUM(x) \
+ (((x) &~ (offsetT) 0xffffffff) == 0 \
+ || (((x) &~ (offsetT) 0xffffffff) == ~ (offsetT) 0xffffffff))
+
/* 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 +3258,33 @@ mips16_macro_build (expressionS *ep, const char *name, const char *fmt,
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_ADDRESSES)
+ || (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 +3370,8 @@ macro_build_ldst_constoffset (expressionS *ep, const char *op,
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 +3417,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 +3521,8 @@ load_register (int reg, expressionS *ep, int dbl)
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))
{
@@ -3541,10 +3551,11 @@ load_register (int reg, expressionS *ep, int dbl)
/* The value is larger than 32 bits. */
- if (HAVE_32BIT_GPRS)
+ if (!dbl || 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,16 +5796,19 @@ 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);
+ normalize_address_expr (&expr1);
load_register (tempreg, &expr1, HAVE_64BIT_ADDRESSES);
if (breg != 0)
macro_build (NULL, ADDRESS_ADD_INSN, "d,v,t",
@@ -6373,6 +6387,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 +8576,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 --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 0083029..cbeb46d 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,21 @@
+2005-04-13 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-mips3.d: New test based on the above, except
+ for mips3.
+ * gas/mips/ldstla-32-mips3-shared.d: Similarly, for PIC.
+ * gas/mips/ldstla-32-mips3.s: Source for the new tests.
+ * gas/mips/ldstla-32-1.s: New test for offsets that are meant to
+ fail.
+ * gas/mips/ldstla-32-mips3-1.s: Likewise, for mips3.
+ * gas/mips/ldstla-32-1.l: Stderr output for the new test.
+ * gas/mips/ldstla-32-mips3-1.l: Likewise.
+ * gas/mips/mips.exp: Run the new tests.
+
2005-04-11 Mark Kettenis <kettenis@gnu.org>
* gas/all/gas.exp: Don't run fastcall labels test on
diff --git a/gas/testsuite/gas/mips/ldstla-32-1.l b/gas/testsuite/gas/mips/ldstla-32-1.l
new file mode 100644
index 0000000..0ee83c9
--- /dev/null
+++ b/gas/testsuite/gas/mips/ldstla-32-1.l
@@ -0,0 +1,81 @@
+.*: Assembler messages:
+.*:3: Error: Number \(0xfffffffeffffffff\) larger than 32 bits
+.*:4: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:5: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:6: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:7: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:8: Error: Number \(0x100000000\) larger than 32 bits
+.*:10: Error: Number \(0xfffffffeffffffff\) larger than 32 bits
+.*:11: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:12: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:13: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:14: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:15: Error: Number \(0x100000000\) larger than 32 bits
+.*:17: Error: Number \(0xfffffffeffffffff\) larger than 32 bits
+.*:18: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:19: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:20: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:21: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:22: Error: Number \(0x100000000\) larger than 32 bits
+.*:24: Error: Number \(0xfffffffeffffffff\) larger than 32 bits
+.*:25: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:26: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:27: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:28: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:29: Error: Number \(0x100000000\) larger than 32 bits
+.*:31: Error: Number \(0xfffffffeffffffff\) larger than 32 bits
+.*:32: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:32: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:33: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:33: Error: Number \(0xabcdef0123450000\) larger than 32 bits
+.*:34: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:34: Error: Number \(0x123456789ac0000\) larger than 32 bits
+.*:35: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:35: Error: Number \(0x200000000\) larger than 32 bits
+.*:36: Error: Number \(0x100000000\) larger than 32 bits
+.*:36: Error: Number \(0x100000000\) larger than 32 bits
+.*:38: Error: Number \(0xfffffffeffffffff\) larger than 32 bits
+.*:39: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:39: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:40: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:40: Error: Number \(0xabcdef0123450000\) larger than 32 bits
+.*:41: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:41: Error: Number \(0x123456789ac0000\) larger than 32 bits
+.*:42: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:42: Error: Number \(0x200000000\) larger than 32 bits
+.*:43: Error: Number \(0x100000000\) larger than 32 bits
+.*:43: Error: Number \(0x100000000\) larger than 32 bits
+.*:45: Error: Number \(0xfffffffeffffffff\) larger than 32 bits
+.*:46: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:46: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:47: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:47: Error: Number \(0xabcdef0123450000\) larger than 32 bits
+.*:48: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:48: Error: Number \(0x123456789ac0000\) larger than 32 bits
+.*:49: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:49: Error: Number \(0x200000000\) larger than 32 bits
+.*:50: Error: Number \(0x100000000\) larger than 32 bits
+.*:50: Error: Number \(0x100000000\) larger than 32 bits
+.*:52: Error: Number \(0xfffffffeffffffff\) larger than 32 bits
+.*:53: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:53: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:54: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:54: Error: Number \(0xabcdef0123450000\) larger than 32 bits
+.*:55: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:55: Error: Number \(0x123456789ac0000\) larger than 32 bits
+.*:56: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:56: Error: Number \(0x200000000\) larger than 32 bits
+.*:57: Error: Number \(0x100000000\) larger than 32 bits
+.*:57: Error: Number \(0x100000000\) larger than 32 bits
+.*:59: Error: Number \(0xfffffffeffffffff\) larger than 32 bits
+.*:60: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:61: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:62: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:63: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:64: Error: Number \(0x100000000\) larger than 32 bits
+.*:66: Error: Number \(0xfffffffeffffffff\) larger than 32 bits
+.*:67: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:68: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:69: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:70: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:71: Error: Number \(0x100000000\) larger than 32 bits
diff --git a/gas/testsuite/gas/mips/ldstla-32-1.s b/gas/testsuite/gas/mips/ldstla-32-1.s
new file mode 100644
index 0000000..2037e33
--- /dev/null
+++ b/gas/testsuite/gas/mips/ldstla-32-1.s
@@ -0,0 +1,73 @@
+
+ .text
+ ld $2, 0xfffffffeffffffff($4)
+ ld $2, 0xfffffffe00000000($4)
+ ld $2, 0xabcdef0123456789($4)
+ ld $2, 0x0123456789abcdef($4)
+ ld $2, 0x00000001ffffffff($4)
+ ld $2, 0x0000000100000000($4)
+
+ ld $2, 0xfffffffeffffffff
+ ld $2, 0xfffffffe00000000
+ ld $2, 0xabcdef0123456789
+ ld $2, 0x0123456789abcdef
+ ld $2, 0x00000001ffffffff
+ ld $2, 0x0000000100000000
+
+ sd $2, 0xfffffffeffffffff($4)
+ sd $2, 0xfffffffe00000000($4)
+ sd $2, 0xabcdef0123456789($4)
+ sd $2, 0x0123456789abcdef($4)
+ sd $2, 0x00000001ffffffff($4)
+ sd $2, 0x0000000100000000($4)
+
+ sd $2, 0xfffffffeffffffff
+ sd $2, 0xfffffffe00000000
+ sd $2, 0xabcdef0123456789
+ sd $2, 0x0123456789abcdef
+ sd $2, 0x00000001ffffffff
+ sd $2, 0x0000000100000000
+
+ lw $2, 0xfffffffeffffffff($4)
+ lw $2, 0xfffffffe00000000($4)
+ lw $2, 0xabcdef0123456789($4)
+ lw $2, 0x0123456789abcdef($4)
+ lw $2, 0x00000001ffffffff($4)
+ lw $2, 0x0000000100000000($4)
+
+ lw $2, 0xfffffffeffffffff
+ lw $2, 0xfffffffe00000000
+ lw $2, 0xabcdef0123456789
+ lw $2, 0x0123456789abcdef
+ lw $2, 0x00000001ffffffff
+ lw $2, 0x0000000100000000
+
+ sw $2, 0xfffffffeffffffff($4)
+ sw $2, 0xfffffffe00000000($4)
+ sw $2, 0xabcdef0123456789($4)
+ sw $2, 0x0123456789abcdef($4)
+ sw $2, 0x00000001ffffffff($4)
+ sw $2, 0x0000000100000000($4)
+
+ sw $2, 0xfffffffeffffffff
+ sw $2, 0xfffffffe00000000
+ sw $2, 0xabcdef0123456789
+ sw $2, 0x0123456789abcdef
+ sw $2, 0x00000001ffffffff
+ sw $2, 0x0000000100000000
+
+ la $2, 0xfffffffeffffffff($4)
+ la $2, 0xfffffffe00000000($4)
+ la $2, 0xabcdef0123456789($4)
+ la $2, 0x0123456789abcdef($4)
+ la $2, 0x00000001ffffffff($4)
+ la $2, 0x0000000100000000($4)
+
+ la $2, 0xfffffffeffffffff
+ la $2, 0xfffffffe00000000
+ la $2, 0xabcdef0123456789
+ la $2, 0x0123456789abcdef
+ la $2, 0x00000001ffffffff
+ la $2, 0x0000000100000000
+
+ .space 8
diff --git a/gas/testsuite/gas/mips/ldstla-32-mips3-1.l b/gas/testsuite/gas/mips/ldstla-32-mips3-1.l
new file mode 100644
index 0000000..26a0a4f
--- /dev/null
+++ b/gas/testsuite/gas/mips/ldstla-32-mips3-1.l
@@ -0,0 +1,101 @@
+.*: Assembler messages:
+.*:3: Error: Number \(0xfffffffeffffffff\) larger than 32 bits
+.*:4: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:4: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:5: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:5: Error: Number \(0xabcdef0123450000\) larger than 32 bits
+.*:6: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:6: Error: Number \(0x123456789ac0000\) larger than 32 bits
+.*:7: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:7: Error: Number \(0x200000000\) larger than 32 bits
+.*:8: Error: Number \(0x100000000\) larger than 32 bits
+.*:8: Error: Number \(0x100000000\) larger than 32 bits
+.*:10: Error: Number \(0xfffffffeffffffff\) larger than 32 bits
+.*:11: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:11: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:12: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:12: Error: Number \(0xabcdef0123450000\) larger than 32 bits
+.*:13: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:13: Error: Number \(0x123456789ac0000\) larger than 32 bits
+.*:14: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:14: Error: Number \(0x200000000\) larger than 32 bits
+.*:15: Error: Number \(0x100000000\) larger than 32 bits
+.*:15: Error: Number \(0x100000000\) larger than 32 bits
+.*:17: Error: Number \(0xfffffffeffffffff\) larger than 32 bits
+.*:18: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:18: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:19: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:19: Error: Number \(0xabcdef0123450000\) larger than 32 bits
+.*:20: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:20: Error: Number \(0x123456789ac0000\) larger than 32 bits
+.*:21: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:21: Error: Number \(0x200000000\) larger than 32 bits
+.*:22: Error: Number \(0x100000000\) larger than 32 bits
+.*:22: Error: Number \(0x100000000\) larger than 32 bits
+.*:24: Error: Number \(0xfffffffeffffffff\) larger than 32 bits
+.*:25: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:25: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:26: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:26: Error: Number \(0xabcdef0123450000\) larger than 32 bits
+.*:27: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:27: Error: Number \(0x123456789ac0000\) larger than 32 bits
+.*:28: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:28: Error: Number \(0x200000000\) larger than 32 bits
+.*:29: Error: Number \(0x100000000\) larger than 32 bits
+.*:29: Error: Number \(0x100000000\) larger than 32 bits
+.*:31: Error: Number \(0xfffffffeffffffff\) larger than 32 bits
+.*:32: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:32: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:33: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:33: Error: Number \(0xabcdef0123450000\) larger than 32 bits
+.*:34: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:34: Error: Number \(0x123456789ac0000\) larger than 32 bits
+.*:35: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:35: Error: Number \(0x200000000\) larger than 32 bits
+.*:36: Error: Number \(0x100000000\) larger than 32 bits
+.*:36: Error: Number \(0x100000000\) larger than 32 bits
+.*:38: Error: Number \(0xfffffffeffffffff\) larger than 32 bits
+.*:39: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:39: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:40: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:40: Error: Number \(0xabcdef0123450000\) larger than 32 bits
+.*:41: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:41: Error: Number \(0x123456789ac0000\) larger than 32 bits
+.*:42: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:42: Error: Number \(0x200000000\) larger than 32 bits
+.*:43: Error: Number \(0x100000000\) larger than 32 bits
+.*:43: Error: Number \(0x100000000\) larger than 32 bits
+.*:45: Error: Number \(0xfffffffeffffffff\) larger than 32 bits
+.*:46: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:46: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:47: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:47: Error: Number \(0xabcdef0123450000\) larger than 32 bits
+.*:48: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:48: Error: Number \(0x123456789ac0000\) larger than 32 bits
+.*:49: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:49: Error: Number \(0x200000000\) larger than 32 bits
+.*:50: Error: Number \(0x100000000\) larger than 32 bits
+.*:50: Error: Number \(0x100000000\) larger than 32 bits
+.*:52: Error: Number \(0xfffffffeffffffff\) larger than 32 bits
+.*:53: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:53: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:54: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:54: Error: Number \(0xabcdef0123450000\) larger than 32 bits
+.*:55: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:55: Error: Number \(0x123456789ac0000\) larger than 32 bits
+.*:56: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:56: Error: Number \(0x200000000\) larger than 32 bits
+.*:57: Error: Number \(0x100000000\) larger than 32 bits
+.*:57: Error: Number \(0x100000000\) larger than 32 bits
+.*:59: Error: Number \(0xfffffffeffffffff\) larger than 32 bits
+.*:60: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:61: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:62: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:63: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:64: Error: Number \(0x100000000\) larger than 32 bits
+.*:66: Error: Number \(0xfffffffeffffffff\) larger than 32 bits
+.*:67: Error: Number \(0xfffffffe00000000\) larger than 32 bits
+.*:68: Error: Number \(0xabcdef0123456789\) larger than 32 bits
+.*:69: Error: Number \(0x123456789abcdef\) larger than 32 bits
+.*:70: Error: Number \(0x1ffffffff\) larger than 32 bits
+.*:71: Error: Number \(0x100000000\) larger than 32 bits
diff --git a/gas/testsuite/gas/mips/ldstla-32-mips3-1.s b/gas/testsuite/gas/mips/ldstla-32-mips3-1.s
new file mode 100644
index 0000000..4b3d653
--- /dev/null
+++ b/gas/testsuite/gas/mips/ldstla-32-mips3-1.s
@@ -0,0 +1,73 @@
+ .set mips3
+ .text
+ ld $2, 0xfffffffeffffffff($4)
+ ld $2, 0xfffffffe00000000($4)
+ ld $2, 0xabcdef0123456789($4)
+ ld $2, 0x0123456789abcdef($4)
+ ld $2, 0x00000001ffffffff($4)
+ ld $2, 0x0000000100000000($4)
+
+ ld $2, 0xfffffffeffffffff
+ ld $2, 0xfffffffe00000000
+ ld $2, 0xabcdef0123456789
+ ld $2, 0x0123456789abcdef
+ ld $2, 0x00000001ffffffff
+ ld $2, 0x0000000100000000
+
+ sd $2, 0xfffffffeffffffff($4)
+ sd $2, 0xfffffffe00000000($4)
+ sd $2, 0xabcdef0123456789($4)
+ sd $2, 0x0123456789abcdef($4)
+ sd $2, 0x00000001ffffffff($4)
+ sd $2, 0x0000000100000000($4)
+
+ sd $2, 0xfffffffeffffffff
+ sd $2, 0xfffffffe00000000
+ sd $2, 0xabcdef0123456789
+ sd $2, 0x0123456789abcdef
+ sd $2, 0x00000001ffffffff
+ sd $2, 0x0000000100000000
+
+ lw $2, 0xfffffffeffffffff($4)
+ lw $2, 0xfffffffe00000000($4)
+ lw $2, 0xabcdef0123456789($4)
+ lw $2, 0x0123456789abcdef($4)
+ lw $2, 0x00000001ffffffff($4)
+ lw $2, 0x0000000100000000($4)
+
+ lw $2, 0xfffffffeffffffff
+ lw $2, 0xfffffffe00000000
+ lw $2, 0xabcdef0123456789
+ lw $2, 0x0123456789abcdef
+ lw $2, 0x00000001ffffffff
+ lw $2, 0x0000000100000000
+
+ sw $2, 0xfffffffeffffffff($4)
+ sw $2, 0xfffffffe00000000($4)
+ sw $2, 0xabcdef0123456789($4)
+ sw $2, 0x0123456789abcdef($4)
+ sw $2, 0x00000001ffffffff($4)
+ sw $2, 0x0000000100000000($4)
+
+ sw $2, 0xfffffffeffffffff
+ sw $2, 0xfffffffe00000000
+ sw $2, 0xabcdef0123456789
+ sw $2, 0x0123456789abcdef
+ sw $2, 0x00000001ffffffff
+ sw $2, 0x0000000100000000
+
+ la $2, 0xfffffffeffffffff($4)
+ la $2, 0xfffffffe00000000($4)
+ la $2, 0xabcdef0123456789($4)
+ la $2, 0x0123456789abcdef($4)
+ la $2, 0x00000001ffffffff($4)
+ la $2, 0x0000000100000000($4)
+
+ la $2, 0xfffffffeffffffff
+ la $2, 0xfffffffe00000000
+ la $2, 0xabcdef0123456789
+ la $2, 0x0123456789abcdef
+ la $2, 0x00000001ffffffff
+ la $2, 0x0000000100000000
+
+ .space 8
diff --git a/gas/testsuite/gas/mips/ldstla-32-mips3-shared.d b/gas/testsuite/gas/mips/ldstla-32-mips3-shared.d
new file mode 100644
index 0000000..11bca35
--- /dev/null
+++ b/gas/testsuite/gas/mips/ldstla-32-mips3-shared.d
@@ -0,0 +1,271 @@
+#objdump: -d -mmips:4000
+#as: -KPIC -mabi=32
+#name: MIPS ld-st-la constants (ABI o32, mips3, shared)
+#source: ldstla-32-mips3.s
+
+.*: +file format elf32-.*mips
+
+Disassembly of section \.text:
+
+00000000 <\.text>:
+ 0: dc82ffff ld v0,-1\(a0\)
+ 4: 3c02abce lui v0,0xabce
+ 8: 00441021 addu v0,v0,a0
+ c: dc42ef01 ld v0,-4351\(v0\)
+ 10: 3c028000 lui v0,0x8000
+ 14: 00441021 addu v0,v0,a0
+ 18: dc420000 ld v0,0\(v0\)
+ 1c: 3c028000 lui v0,0x8000
+ 20: 00441021 addu v0,v0,a0
+ 24: dc42ffff ld v0,-1\(v0\)
+ 28: 3c020123 lui v0,0x123
+ 2c: 00441021 addu v0,v0,a0
+ 30: dc424567 ld v0,17767\(v0\)
+ 34: 24020000 li v0,0
+ 38: 00441021 addu v0,v0,a0
+ 3c: dc420000 ld v0,0\(v0\)
+ 40: 24020000 li v0,0
+ 44: 00441021 addu v0,v0,a0
+ 48: dc42ffff ld v0,-1\(v0\)
+ 4c: 3c02abce lui v0,0xabce
+ 50: 00441021 addu v0,v0,a0
+ 54: dc42ef01 ld v0,-4351\(v0\)
+ 58: 3c028000 lui v0,0x8000
+ 5c: 00441021 addu v0,v0,a0
+ 60: dc420000 ld v0,0\(v0\)
+ 64: 3c028000 lui v0,0x8000
+ 68: 00441021 addu v0,v0,a0
+ 6c: dc42ffff ld v0,-1\(v0\)
+ 70: 3c020123 lui v0,0x123
+ 74: 00441021 addu v0,v0,a0
+ 78: dc424567 ld v0,17767\(v0\)
+ 7c: dc820000 ld v0,0\(a0\)
+ 80: dc02ffff ld v0,-1\(zero\)
+ 84: 3c02abce lui v0,0xabce
+ 88: dc42ef01 ld v0,-4351\(v0\)
+ 8c: 3c028000 lui v0,0x8000
+ 90: dc420000 ld v0,0\(v0\)
+ 94: 3c028000 lui v0,0x8000
+ 98: dc42ffff ld v0,-1\(v0\)
+ 9c: 3c020123 lui v0,0x123
+ a0: dc424567 ld v0,17767\(v0\)
+ a4: 24020000 li v0,0
+ a8: dc420000 ld v0,0\(v0\)
+ ac: 24020000 li v0,0
+ b0: dc42ffff ld v0,-1\(v0\)
+ b4: 3c02abce lui v0,0xabce
+ b8: dc42ef01 ld v0,-4351\(v0\)
+ bc: 3c028000 lui v0,0x8000
+ c0: dc420000 ld v0,0\(v0\)
+ c4: 3c028000 lui v0,0x8000
+ c8: dc42ffff ld v0,-1\(v0\)
+ cc: 3c020123 lui v0,0x123
+ d0: dc424567 ld v0,17767\(v0\)
+ d4: dc020000 ld v0,0\(zero\)
+ d8: fc82ffff sd v0,-1\(a0\)
+ dc: 3c01abce lui at,0xabce
+ e0: 00240821 addu at,at,a0
+ e4: fc22ef01 sd v0,-4351\(at\)
+ e8: 3c018000 lui at,0x8000
+ ec: 00240821 addu at,at,a0
+ f0: fc220000 sd v0,0\(at\)
+ f4: 3c018000 lui at,0x8000
+ f8: 00240821 addu at,at,a0
+ fc: fc22ffff sd v0,-1\(at\)
+ 100: 3c010123 lui at,0x123
+ 104: 00240821 addu at,at,a0
+ 108: fc224567 sd v0,17767\(at\)
+ 10c: 24010000 li at,0
+ 110: 00240821 addu at,at,a0
+ 114: fc220000 sd v0,0\(at\)
+ 118: 24010000 li at,0
+ 11c: 00240821 addu at,at,a0
+ 120: fc22ffff sd v0,-1\(at\)
+ 124: 3c01abce lui at,0xabce
+ 128: 00240821 addu at,at,a0
+ 12c: fc22ef01 sd v0,-4351\(at\)
+ 130: 3c018000 lui at,0x8000
+ 134: 00240821 addu at,at,a0
+ 138: fc220000 sd v0,0\(at\)
+ 13c: 3c018000 lui at,0x8000
+ 140: 00240821 addu at,at,a0
+ 144: fc22ffff sd v0,-1\(at\)
+ 148: 3c010123 lui at,0x123
+ 14c: 00240821 addu at,at,a0
+ 150: fc224567 sd v0,17767\(at\)
+ 154: fc820000 sd v0,0\(a0\)
+ 158: fc02ffff sd v0,-1\(zero\)
+ 15c: 3c01abce lui at,0xabce
+ 160: fc22ef01 sd v0,-4351\(at\)
+ 164: 3c018000 lui at,0x8000
+ 168: fc220000 sd v0,0\(at\)
+ 16c: 3c018000 lui at,0x8000
+ 170: fc22ffff sd v0,-1\(at\)
+ 174: 3c010123 lui at,0x123
+ 178: fc224567 sd v0,17767\(at\)
+ 17c: 24010000 li at,0
+ 180: fc220000 sd v0,0\(at\)
+ 184: 24010000 li at,0
+ 188: fc22ffff sd v0,-1\(at\)
+ 18c: 3c01abce lui at,0xabce
+ 190: fc22ef01 sd v0,-4351\(at\)
+ 194: 3c018000 lui at,0x8000
+ 198: fc220000 sd v0,0\(at\)
+ 19c: 3c018000 lui at,0x8000
+ 1a0: fc22ffff sd v0,-1\(at\)
+ 1a4: 3c010123 lui at,0x123
+ 1a8: fc224567 sd v0,17767\(at\)
+ 1ac: fc020000 sd v0,0\(zero\)
+ 1b0: 8c82ffff lw v0,-1\(a0\)
+ 1b4: 3c02abce lui v0,0xabce
+ 1b8: 00441021 addu v0,v0,a0
+ 1bc: 8c42ef01 lw v0,-4351\(v0\)
+ 1c0: 3c028000 lui v0,0x8000
+ 1c4: 00441021 addu v0,v0,a0
+ 1c8: 8c420000 lw v0,0\(v0\)
+ 1cc: 3c028000 lui v0,0x8000
+ 1d0: 00441021 addu v0,v0,a0
+ 1d4: 8c42ffff lw v0,-1\(v0\)
+ 1d8: 3c020123 lui v0,0x123
+ 1dc: 00441021 addu v0,v0,a0
+ 1e0: 8c424567 lw v0,17767\(v0\)
+ 1e4: 24020000 li v0,0
+ 1e8: 00441021 addu v0,v0,a0
+ 1ec: 8c420000 lw v0,0\(v0\)
+ 1f0: 24020000 li v0,0
+ 1f4: 00441021 addu v0,v0,a0
+ 1f8: 8c42ffff lw v0,-1\(v0\)
+ 1fc: 3c02abce lui v0,0xabce
+ 200: 00441021 addu v0,v0,a0
+ 204: 8c42ef01 lw v0,-4351\(v0\)
+ 208: 3c028000 lui v0,0x8000
+ 20c: 00441021 addu v0,v0,a0
+ 210: 8c420000 lw v0,0\(v0\)
+ 214: 3c028000 lui v0,0x8000
+ 218: 00441021 addu v0,v0,a0
+ 21c: 8c42ffff lw v0,-1\(v0\)
+ 220: 3c020123 lui v0,0x123
+ 224: 00441021 addu v0,v0,a0
+ 228: 8c424567 lw v0,17767\(v0\)
+ 22c: 8c820000 lw v0,0\(a0\)
+ 230: 8c02ffff lw v0,-1\(zero\)
+ 234: 3c02abce lui v0,0xabce
+ 238: 8c42ef01 lw v0,-4351\(v0\)
+ 23c: 3c028000 lui v0,0x8000
+ 240: 8c420000 lw v0,0\(v0\)
+ 244: 3c028000 lui v0,0x8000
+ 248: 8c42ffff lw v0,-1\(v0\)
+ 24c: 3c020123 lui v0,0x123
+ 250: 8c424567 lw v0,17767\(v0\)
+ 254: 24020000 li v0,0
+ 258: 8c420000 lw v0,0\(v0\)
+ 25c: 24020000 li v0,0
+ 260: 8c42ffff lw v0,-1\(v0\)
+ 264: 3c02abce lui v0,0xabce
+ 268: 8c42ef01 lw v0,-4351\(v0\)
+ 26c: 3c028000 lui v0,0x8000
+ 270: 8c420000 lw v0,0\(v0\)
+ 274: 3c028000 lui v0,0x8000
+ 278: 8c42ffff lw v0,-1\(v0\)
+ 27c: 3c020123 lui v0,0x123
+ 280: 8c424567 lw v0,17767\(v0\)
+ 284: 8c020000 lw v0,0\(zero\)
+ 288: ac82ffff sw v0,-1\(a0\)
+ 28c: 3c01abce lui at,0xabce
+ 290: 00240821 addu at,at,a0
+ 294: ac22ef01 sw v0,-4351\(at\)
+ 298: 3c018000 lui at,0x8000
+ 29c: 00240821 addu at,at,a0
+ 2a0: ac220000 sw v0,0\(at\)
+ 2a4: 3c018000 lui at,0x8000
+ 2a8: 00240821 addu at,at,a0
+ 2ac: ac22ffff sw v0,-1\(at\)
+ 2b0: 3c010123 lui at,0x123
+ 2b4: 00240821 addu at,at,a0
+ 2b8: ac224567 sw v0,17767\(at\)
+ 2bc: 24010000 li at,0
+ 2c0: 00240821 addu at,at,a0
+ 2c4: ac220000 sw v0,0\(at\)
+ 2c8: 24010000 li at,0
+ 2cc: 00240821 addu at,at,a0
+ 2d0: ac22ffff sw v0,-1\(at\)
+ 2d4: 3c01abce lui at,0xabce
+ 2d8: 00240821 addu at,at,a0
+ 2dc: ac22ef01 sw v0,-4351\(at\)
+ 2e0: 3c018000 lui at,0x8000
+ 2e4: 00240821 addu at,at,a0
+ 2e8: ac220000 sw v0,0\(at\)
+ 2ec: 3c018000 lui at,0x8000
+ 2f0: 00240821 addu at,at,a0
+ 2f4: ac22ffff sw v0,-1\(at\)
+ 2f8: 3c010123 lui at,0x123
+ 2fc: 00240821 addu at,at,a0
+ 300: ac224567 sw v0,17767\(at\)
+ 304: ac820000 sw v0,0\(a0\)
+ 308: ac02ffff sw v0,-1\(zero\)
+ 30c: 3c01abce lui at,0xabce
+ 310: ac22ef01 sw v0,-4351\(at\)
+ 314: 3c018000 lui at,0x8000
+ 318: ac220000 sw v0,0\(at\)
+ 31c: 3c018000 lui at,0x8000
+ 320: ac22ffff sw v0,-1\(at\)
+ 324: 3c010123 lui at,0x123
+ 328: ac224567 sw v0,17767\(at\)
+ 32c: 24010000 li at,0
+ 330: ac220000 sw v0,0\(at\)
+ 334: 24010000 li at,0
+ 338: ac22ffff sw v0,-1\(at\)
+ 33c: 3c01abce lui at,0xabce
+ 340: ac22ef01 sw v0,-4351\(at\)
+ 344: 3c018000 lui at,0x8000
+ 348: ac220000 sw v0,0\(at\)
+ 34c: 3c018000 lui at,0x8000
+ 350: ac22ffff sw v0,-1\(at\)
+ 354: 3c010123 lui at,0x123
+ 358: ac224567 sw v0,17767\(at\)
+ 35c: ac020000 sw v0,0\(zero\)
+ 360: 2482ffff addiu v0,a0,-1
+ 364: 3c02abcd lui v0,0xabcd
+ 368: 3442ef01 ori v0,v0,0xef01
+ 36c: 00441021 addu v0,v0,a0
+ 370: 3c028000 lui v0,0x8000
+ 374: 00441021 addu v0,v0,a0
+ 378: 3c027fff lui v0,0x7fff
+ 37c: 3442ffff ori v0,v0,0xffff
+ 380: 00441021 addu v0,v0,a0
+ 384: 3c020123 lui v0,0x123
+ 388: 34424567 ori v0,v0,0x4567
+ 38c: 00441021 addu v0,v0,a0
+ 390: 24820000 addiu v0,a0,0
+ 394: 2482ffff addiu v0,a0,-1
+ 398: 3c02abcd lui v0,0xabcd
+ 39c: 3442ef01 ori v0,v0,0xef01
+ 3a0: 00441021 addu v0,v0,a0
+ 3a4: 3c028000 lui v0,0x8000
+ 3a8: 00441021 addu v0,v0,a0
+ 3ac: 3c027fff lui v0,0x7fff
+ 3b0: 3442ffff ori v0,v0,0xffff
+ 3b4: 00441021 addu v0,v0,a0
+ 3b8: 3c020123 lui v0,0x123
+ 3bc: 34424567 ori v0,v0,0x4567
+ 3c0: 00441021 addu v0,v0,a0
+ 3c4: 24820000 addiu v0,a0,0
+ 3c8: 2402ffff li v0,-1
+ 3cc: 3c02abcd lui v0,0xabcd
+ 3d0: 3442ef01 ori v0,v0,0xef01
+ 3d4: 3c028000 lui v0,0x8000
+ 3d8: 3c027fff lui v0,0x7fff
+ 3dc: 3442ffff ori v0,v0,0xffff
+ 3e0: 3c020123 lui v0,0x123
+ 3e4: 34424567 ori v0,v0,0x4567
+ 3e8: 24020000 li v0,0
+ 3ec: 2402ffff li v0,-1
+ 3f0: 3c02abcd lui v0,0xabcd
+ 3f4: 3442ef01 ori v0,v0,0xef01
+ 3f8: 3c028000 lui v0,0x8000
+ 3fc: 3c027fff lui v0,0x7fff
+ 400: 3442ffff ori v0,v0,0xffff
+ 404: 3c020123 lui v0,0x123
+ 408: 34424567 ori v0,v0,0x4567
+ 40c: 24020000 li v0,0
+ \.\.\.
diff --git a/gas/testsuite/gas/mips/ldstla-32-mips3.d b/gas/testsuite/gas/mips/ldstla-32-mips3.d
new file mode 100644
index 0000000..a6f0ed1
--- /dev/null
+++ b/gas/testsuite/gas/mips/ldstla-32-mips3.d
@@ -0,0 +1,271 @@
+#objdump: -d -mmips:4000
+#as: -mabi=32
+#name: MIPS ld-st-la constants (ABI o32, mips3)
+#source: ldstla-32-mips3.s
+
+.*: +file format elf32-.*mips
+
+Disassembly of section \.text:
+
+00000000 <\.text>:
+ 0: dc82ffff ld v0,-1\(a0\)
+ 4: 3c02abce lui v0,0xabce
+ 8: 00441021 addu v0,v0,a0
+ c: dc42ef01 ld v0,-4351\(v0\)
+ 10: 3c028000 lui v0,0x8000
+ 14: 00441021 addu v0,v0,a0
+ 18: dc420000 ld v0,0\(v0\)
+ 1c: 3c028000 lui v0,0x8000
+ 20: 00441021 addu v0,v0,a0
+ 24: dc42ffff ld v0,-1\(v0\)
+ 28: 3c020123 lui v0,0x123
+ 2c: 00441021 addu v0,v0,a0
+ 30: dc424567 ld v0,17767\(v0\)
+ 34: 24020000 li v0,0
+ 38: 00441021 addu v0,v0,a0
+ 3c: dc420000 ld v0,0\(v0\)
+ 40: 24020000 li v0,0
+ 44: 00441021 addu v0,v0,a0
+ 48: dc42ffff ld v0,-1\(v0\)
+ 4c: 3c02abce lui v0,0xabce
+ 50: 00441021 addu v0,v0,a0
+ 54: dc42ef01 ld v0,-4351\(v0\)
+ 58: 3c028000 lui v0,0x8000
+ 5c: 00441021 addu v0,v0,a0
+ 60: dc420000 ld v0,0\(v0\)
+ 64: 3c028000 lui v0,0x8000
+ 68: 00441021 addu v0,v0,a0
+ 6c: dc42ffff ld v0,-1\(v0\)
+ 70: 3c020123 lui v0,0x123
+ 74: 00441021 addu v0,v0,a0
+ 78: dc424567 ld v0,17767\(v0\)
+ 7c: dc820000 ld v0,0\(a0\)
+ 80: dc02ffff ld v0,-1\(zero\)
+ 84: 3c02abce lui v0,0xabce
+ 88: dc42ef01 ld v0,-4351\(v0\)
+ 8c: 3c028000 lui v0,0x8000
+ 90: dc420000 ld v0,0\(v0\)
+ 94: 3c028000 lui v0,0x8000
+ 98: dc42ffff ld v0,-1\(v0\)
+ 9c: 3c020123 lui v0,0x123
+ a0: dc424567 ld v0,17767\(v0\)
+ a4: 24020000 li v0,0
+ a8: dc420000 ld v0,0\(v0\)
+ ac: 24020000 li v0,0
+ b0: dc42ffff ld v0,-1\(v0\)
+ b4: 3c02abce lui v0,0xabce
+ b8: dc42ef01 ld v0,-4351\(v0\)
+ bc: 3c028000 lui v0,0x8000
+ c0: dc420000 ld v0,0\(v0\)
+ c4: 3c028000 lui v0,0x8000
+ c8: dc42ffff ld v0,-1\(v0\)
+ cc: 3c020123 lui v0,0x123
+ d0: dc424567 ld v0,17767\(v0\)
+ d4: dc020000 ld v0,0\(zero\)
+ d8: fc82ffff sd v0,-1\(a0\)
+ dc: 3c01abce lui at,0xabce
+ e0: 00240821 addu at,at,a0
+ e4: fc22ef01 sd v0,-4351\(at\)
+ e8: 3c018000 lui at,0x8000
+ ec: 00240821 addu at,at,a0
+ f0: fc220000 sd v0,0\(at\)
+ f4: 3c018000 lui at,0x8000
+ f8: 00240821 addu at,at,a0
+ fc: fc22ffff sd v0,-1\(at\)
+ 100: 3c010123 lui at,0x123
+ 104: 00240821 addu at,at,a0
+ 108: fc224567 sd v0,17767\(at\)
+ 10c: 24010000 li at,0
+ 110: 00240821 addu at,at,a0
+ 114: fc220000 sd v0,0\(at\)
+ 118: 24010000 li at,0
+ 11c: 00240821 addu at,at,a0
+ 120: fc22ffff sd v0,-1\(at\)
+ 124: 3c01abce lui at,0xabce
+ 128: 00240821 addu at,at,a0
+ 12c: fc22ef01 sd v0,-4351\(at\)
+ 130: 3c018000 lui at,0x8000
+ 134: 00240821 addu at,at,a0
+ 138: fc220000 sd v0,0\(at\)
+ 13c: 3c018000 lui at,0x8000
+ 140: 00240821 addu at,at,a0
+ 144: fc22ffff sd v0,-1\(at\)
+ 148: 3c010123 lui at,0x123
+ 14c: 00240821 addu at,at,a0
+ 150: fc224567 sd v0,17767\(at\)
+ 154: fc820000 sd v0,0\(a0\)
+ 158: fc02ffff sd v0,-1\(zero\)
+ 15c: 3c01abce lui at,0xabce
+ 160: fc22ef01 sd v0,-4351\(at\)
+ 164: 3c018000 lui at,0x8000
+ 168: fc220000 sd v0,0\(at\)
+ 16c: 3c018000 lui at,0x8000
+ 170: fc22ffff sd v0,-1\(at\)
+ 174: 3c010123 lui at,0x123
+ 178: fc224567 sd v0,17767\(at\)
+ 17c: 24010000 li at,0
+ 180: fc220000 sd v0,0\(at\)
+ 184: 24010000 li at,0
+ 188: fc22ffff sd v0,-1\(at\)
+ 18c: 3c01abce lui at,0xabce
+ 190: fc22ef01 sd v0,-4351\(at\)
+ 194: 3c018000 lui at,0x8000
+ 198: fc220000 sd v0,0\(at\)
+ 19c: 3c018000 lui at,0x8000
+ 1a0: fc22ffff sd v0,-1\(at\)
+ 1a4: 3c010123 lui at,0x123
+ 1a8: fc224567 sd v0,17767\(at\)
+ 1ac: fc020000 sd v0,0\(zero\)
+ 1b0: 8c82ffff lw v0,-1\(a0\)
+ 1b4: 3c02abce lui v0,0xabce
+ 1b8: 00441021 addu v0,v0,a0
+ 1bc: 8c42ef01 lw v0,-4351\(v0\)
+ 1c0: 3c028000 lui v0,0x8000
+ 1c4: 00441021 addu v0,v0,a0
+ 1c8: 8c420000 lw v0,0\(v0\)
+ 1cc: 3c028000 lui v0,0x8000
+ 1d0: 00441021 addu v0,v0,a0
+ 1d4: 8c42ffff lw v0,-1\(v0\)
+ 1d8: 3c020123 lui v0,0x123
+ 1dc: 00441021 addu v0,v0,a0
+ 1e0: 8c424567 lw v0,17767\(v0\)
+ 1e4: 24020000 li v0,0
+ 1e8: 00441021 addu v0,v0,a0
+ 1ec: 8c420000 lw v0,0\(v0\)
+ 1f0: 24020000 li v0,0
+ 1f4: 00441021 addu v0,v0,a0
+ 1f8: 8c42ffff lw v0,-1\(v0\)
+ 1fc: 3c02abce lui v0,0xabce
+ 200: 00441021 addu v0,v0,a0
+ 204: 8c42ef01 lw v0,-4351\(v0\)
+ 208: 3c028000 lui v0,0x8000
+ 20c: 00441021 addu v0,v0,a0
+ 210: 8c420000 lw v0,0\(v0\)
+ 214: 3c028000 lui v0,0x8000
+ 218: 00441021 addu v0,v0,a0
+ 21c: 8c42ffff lw v0,-1\(v0\)
+ 220: 3c020123 lui v0,0x123
+ 224: 00441021 addu v0,v0,a0
+ 228: 8c424567 lw v0,17767\(v0\)
+ 22c: 8c820000 lw v0,0\(a0\)
+ 230: 8c02ffff lw v0,-1\(zero\)
+ 234: 3c02abce lui v0,0xabce
+ 238: 8c42ef01 lw v0,-4351\(v0\)
+ 23c: 3c028000 lui v0,0x8000
+ 240: 8c420000 lw v0,0\(v0\)
+ 244: 3c028000 lui v0,0x8000
+ 248: 8c42ffff lw v0,-1\(v0\)
+ 24c: 3c020123 lui v0,0x123
+ 250: 8c424567 lw v0,17767\(v0\)
+ 254: 24020000 li v0,0
+ 258: 8c420000 lw v0,0\(v0\)
+ 25c: 24020000 li v0,0
+ 260: 8c42ffff lw v0,-1\(v0\)
+ 264: 3c02abce lui v0,0xabce
+ 268: 8c42ef01 lw v0,-4351\(v0\)
+ 26c: 3c028000 lui v0,0x8000
+ 270: 8c420000 lw v0,0\(v0\)
+ 274: 3c028000 lui v0,0x8000
+ 278: 8c42ffff lw v0,-1\(v0\)
+ 27c: 3c020123 lui v0,0x123
+ 280: 8c424567 lw v0,17767\(v0\)
+ 284: 8c020000 lw v0,0\(zero\)
+ 288: ac82ffff sw v0,-1\(a0\)
+ 28c: 3c01abce lui at,0xabce
+ 290: 00240821 addu at,at,a0
+ 294: ac22ef01 sw v0,-4351\(at\)
+ 298: 3c018000 lui at,0x8000
+ 29c: 00240821 addu at,at,a0
+ 2a0: ac220000 sw v0,0\(at\)
+ 2a4: 3c018000 lui at,0x8000
+ 2a8: 00240821 addu at,at,a0
+ 2ac: ac22ffff sw v0,-1\(at\)
+ 2b0: 3c010123 lui at,0x123
+ 2b4: 00240821 addu at,at,a0
+ 2b8: ac224567 sw v0,17767\(at\)
+ 2bc: 24010000 li at,0
+ 2c0: 00240821 addu at,at,a0
+ 2c4: ac220000 sw v0,0\(at\)
+ 2c8: 24010000 li at,0
+ 2cc: 00240821 addu at,at,a0
+ 2d0: ac22ffff sw v0,-1\(at\)
+ 2d4: 3c01abce lui at,0xabce
+ 2d8: 00240821 addu at,at,a0
+ 2dc: ac22ef01 sw v0,-4351\(at\)
+ 2e0: 3c018000 lui at,0x8000
+ 2e4: 00240821 addu at,at,a0
+ 2e8: ac220000 sw v0,0\(at\)
+ 2ec: 3c018000 lui at,0x8000
+ 2f0: 00240821 addu at,at,a0
+ 2f4: ac22ffff sw v0,-1\(at\)
+ 2f8: 3c010123 lui at,0x123
+ 2fc: 00240821 addu at,at,a0
+ 300: ac224567 sw v0,17767\(at\)
+ 304: ac820000 sw v0,0\(a0\)
+ 308: ac02ffff sw v0,-1\(zero\)
+ 30c: 3c01abce lui at,0xabce
+ 310: ac22ef01 sw v0,-4351\(at\)
+ 314: 3c018000 lui at,0x8000
+ 318: ac220000 sw v0,0\(at\)
+ 31c: 3c018000 lui at,0x8000
+ 320: ac22ffff sw v0,-1\(at\)
+ 324: 3c010123 lui at,0x123
+ 328: ac224567 sw v0,17767\(at\)
+ 32c: 24010000 li at,0
+ 330: ac220000 sw v0,0\(at\)
+ 334: 24010000 li at,0
+ 338: ac22ffff sw v0,-1\(at\)
+ 33c: 3c01abce lui at,0xabce
+ 340: ac22ef01 sw v0,-4351\(at\)
+ 344: 3c018000 lui at,0x8000
+ 348: ac220000 sw v0,0\(at\)
+ 34c: 3c018000 lui at,0x8000
+ 350: ac22ffff sw v0,-1\(at\)
+ 354: 3c010123 lui at,0x123
+ 358: ac224567 sw v0,17767\(at\)
+ 35c: ac020000 sw v0,0\(zero\)
+ 360: 2482ffff addiu v0,a0,-1
+ 364: 3c02abcd lui v0,0xabcd
+ 368: 3442ef01 ori v0,v0,0xef01
+ 36c: 00441021 addu v0,v0,a0
+ 370: 3c028000 lui v0,0x8000
+ 374: 00441021 addu v0,v0,a0
+ 378: 3c027fff lui v0,0x7fff
+ 37c: 3442ffff ori v0,v0,0xffff
+ 380: 00441021 addu v0,v0,a0
+ 384: 3c020123 lui v0,0x123
+ 388: 34424567 ori v0,v0,0x4567
+ 38c: 00441021 addu v0,v0,a0
+ 390: 24820000 addiu v0,a0,0
+ 394: 2482ffff addiu v0,a0,-1
+ 398: 3c02abcd lui v0,0xabcd
+ 39c: 3442ef01 ori v0,v0,0xef01
+ 3a0: 00441021 addu v0,v0,a0
+ 3a4: 3c028000 lui v0,0x8000
+ 3a8: 00441021 addu v0,v0,a0
+ 3ac: 3c027fff lui v0,0x7fff
+ 3b0: 3442ffff ori v0,v0,0xffff
+ 3b4: 00441021 addu v0,v0,a0
+ 3b8: 3c020123 lui v0,0x123
+ 3bc: 34424567 ori v0,v0,0x4567
+ 3c0: 00441021 addu v0,v0,a0
+ 3c4: 24820000 addiu v0,a0,0
+ 3c8: 2402ffff li v0,-1
+ 3cc: 3c02abcd lui v0,0xabcd
+ 3d0: 3442ef01 ori v0,v0,0xef01
+ 3d4: 3c028000 lui v0,0x8000
+ 3d8: 3c027fff lui v0,0x7fff
+ 3dc: 3442ffff ori v0,v0,0xffff
+ 3e0: 3c020123 lui v0,0x123
+ 3e4: 34424567 ori v0,v0,0x4567
+ 3e8: 24020000 li v0,0
+ 3ec: 2402ffff li v0,-1
+ 3f0: 3c02abcd lui v0,0xabcd
+ 3f4: 3442ef01 ori v0,v0,0xef01
+ 3f8: 3c028000 lui v0,0x8000
+ 3fc: 3c027fff lui v0,0x7fff
+ 400: 3442ffff ori v0,v0,0xffff
+ 404: 3c020123 lui v0,0x123
+ 408: 34424567 ori v0,v0,0x4567
+ 40c: 24020000 li v0,0
+ \.\.\.
diff --git a/gas/testsuite/gas/mips/ldstla-32-mips3.s b/gas/testsuite/gas/mips/ldstla-32-mips3.s
new file mode 100644
index 0000000..e4e5a8f
--- /dev/null
+++ b/gas/testsuite/gas/mips/ldstla-32-mips3.s
@@ -0,0 +1,133 @@
+ .set mips3
+ .text
+ ld $2, 0xffffffffffffffff($4)
+ ld $2, 0xffffffffabcdef01($4)
+ ld $2, 0xffffffff80000000($4)
+ ld $2, 0xffffffff7fffffff($4)
+ ld $2, 0xffffffff01234567($4)
+ ld $2, 0xffffffff00000000($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)
+
+ ld $2, 0xffffffffffffffff
+ ld $2, 0xffffffffabcdef01
+ ld $2, 0xffffffff80000000
+ ld $2, 0xffffffff7fffffff
+ ld $2, 0xffffffff01234567
+ ld $2, 0xffffffff00000000
+ ld $2, 0xffffffff
+ ld $2, 0xabcdef01
+ ld $2, 0x80000000
+ ld $2, 0x7fffffff
+ ld $2, 0x01234567
+ ld $2, 0x00000000
+
+ sd $2, 0xffffffffffffffff($4)
+ sd $2, 0xffffffffabcdef01($4)
+ sd $2, 0xffffffff80000000($4)
+ sd $2, 0xffffffff7fffffff($4)
+ sd $2, 0xffffffff01234567($4)
+ sd $2, 0xffffffff00000000($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, 0xffffffff7fffffff
+ sd $2, 0xffffffff01234567
+ sd $2, 0xffffffff00000000
+ 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, 0xffffffff7fffffff($4)
+ lw $2, 0xffffffff01234567($4)
+ lw $2, 0xffffffff00000000($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, 0xffffffff7fffffff
+ lw $2, 0xffffffff01234567
+ lw $2, 0xffffffff00000000
+ 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, 0xffffffff7fffffff($4)
+ sw $2, 0xffffffff01234567($4)
+ sw $2, 0xffffffff00000000($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, 0xffffffff7fffffff
+ sw $2, 0xffffffff01234567
+ sw $2, 0xffffffff00000000
+ 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, 0xffffffff7fffffff($4)
+ la $2, 0xffffffff01234567($4)
+ la $2, 0xffffffff00000000($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, 0xffffffff7fffffff
+ la $2, 0xffffffff01234567
+ la $2, 0xffffffff00000000
+ la $2, 0xffffffff
+ la $2, 0xabcdef01
+ la $2, 0x80000000
+ la $2, 0x7fffffff
+ la $2, 0x01234567
+ la $2, 0x00000000
+
+ .space 8
diff --git a/gas/testsuite/gas/mips/ldstla-32-shared.d b/gas/testsuite/gas/mips/ldstla-32-shared.d
index bcb6bd6..b9e1f13 100644
--- a/gas/testsuite/gas/mips/ldstla-32-shared.d
+++ b/gas/testsuite/gas/mips/ldstla-32-shared.d
@@ -1,5 +1,5 @@
#objdump: -d
-#as: -KPIC -32
+#as: -KPIC -mabi=32
#name: MIPS ld-st-la constants (ABI o32, shared)
#source: ldstla-32.s
@@ -8,73 +8,313 @@
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\)
- 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\)
- 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
+ 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: 3c018000 lui at,0x8000
+ 2c: 00810821 addu at,a0,at
+ 30: 8c22ffff lw v0,-1\(at\)
+ 34: 8c230003 lw v1,3\(at\)
+ 38: 3c010123 lui at,0x123
+ 3c: 00810821 addu at,a0,at
+ 40: 8c224567 lw v0,17767\(at\)
+ 44: 8c23456b lw v1,17771\(at\)
+ 48: 3c010000 lui at,0x0
+ 4c: 00810821 addu at,a0,at
+ 50: 8c220000 lw v0,0\(at\)
+ 54: 8c230004 lw v1,4\(at\)
+ 58: 3c010000 lui at,0x0
+ 5c: 00810821 addu at,a0,at
+ 60: 8c22ffff lw v0,-1\(at\)
+ 64: 8c230003 lw v1,3\(at\)
+ 68: 3c01abce lui at,0xabce
+ 6c: 00810821 addu at,a0,at
+ 70: 8c22ef01 lw v0,-4351\(at\)
+ 74: 8c23ef05 lw v1,-4347\(at\)
+ 78: 3c018000 lui at,0x8000
+ 7c: 00810821 addu at,a0,at
+ 80: 8c220000 lw v0,0\(at\)
+ 84: 8c230004 lw v1,4\(at\)
+ 88: 3c018000 lui at,0x8000
+ 8c: 00810821 addu at,a0,at
+ 90: 8c22ffff lw v0,-1\(at\)
+ 94: 8c230003 lw v1,3\(at\)
+ 98: 3c010123 lui at,0x123
+ 9c: 00810821 addu at,a0,at
+ a0: 8c224567 lw v0,17767\(at\)
+ a4: 8c23456b lw v1,17771\(at\)
+ a8: 8c820000 lw v0,0\(a0\)
+ ac: 8c830004 lw v1,4\(a0\)
+ b0: 8c02ffff lw v0,-1\(zero\)
+ b4: 8c030003 lw v1,3\(zero\)
+ b8: 3c01abce lui at,0xabce
+ bc: 8c22ef01 lw v0,-4351\(at\)
+ c0: 8c23ef05 lw v1,-4347\(at\)
+ c4: 3c018000 lui at,0x8000
+ c8: 8c220000 lw v0,0\(at\)
+ cc: 8c230004 lw v1,4\(at\)
+ d0: 3c018000 lui at,0x8000
+ d4: 8c22ffff lw v0,-1\(at\)
+ d8: 8c230003 lw v1,3\(at\)
+ dc: 3c010123 lui at,0x123
+ e0: 8c224567 lw v0,17767\(at\)
+ e4: 8c23456b lw v1,17771\(at\)
+ e8: 3c010000 lui at,0x0
+ ec: 8c220000 lw v0,0\(at\)
+ f0: 8c230004 lw v1,4\(at\)
+ f4: 3c010000 lui at,0x0
+ f8: 8c22ffff lw v0,-1\(at\)
+ fc: 8c230003 lw v1,3\(at\)
+ 100: 3c01abce lui at,0xabce
+ 104: 8c22ef01 lw v0,-4351\(at\)
+ 108: 8c23ef05 lw v1,-4347\(at\)
+ 10c: 3c018000 lui at,0x8000
+ 110: 8c220000 lw v0,0\(at\)
+ 114: 8c230004 lw v1,4\(at\)
+ 118: 3c018000 lui at,0x8000
+ 11c: 8c22ffff lw v0,-1\(at\)
+ 120: 8c230003 lw v1,3\(at\)
+ 124: 3c010123 lui at,0x123
+ 128: 8c224567 lw v0,17767\(at\)
+ 12c: 8c23456b lw v1,17771\(at\)
+ 130: 8c020000 lw v0,0\(zero\)
+ 134: 8c030004 lw v1,4\(zero\)
+ 138: ac82ffff sw v0,-1\(a0\)
+ 13c: ac830003 sw v1,3\(a0\)
+ 140: 3c01abce lui at,0xabce
+ 144: 00810821 addu at,a0,at
+ 148: ac22ef01 sw v0,-4351\(at\)
+ 14c: ac23ef05 sw v1,-4347\(at\)
+ 150: 3c018000 lui at,0x8000
+ 154: 00810821 addu at,a0,at
+ 158: ac220000 sw v0,0\(at\)
+ 15c: ac230004 sw v1,4\(at\)
+ 160: 3c018000 lui at,0x8000
+ 164: 00810821 addu at,a0,at
+ 168: ac22ffff sw v0,-1\(at\)
+ 16c: ac230003 sw v1,3\(at\)
+ 170: 3c010123 lui at,0x123
+ 174: 00810821 addu at,a0,at
+ 178: ac224567 sw v0,17767\(at\)
+ 17c: ac23456b sw v1,17771\(at\)
+ 180: 3c010000 lui at,0x0
+ 184: 00810821 addu at,a0,at
+ 188: ac220000 sw v0,0\(at\)
+ 18c: ac230004 sw v1,4\(at\)
+ 190: 3c010000 lui at,0x0
+ 194: 00810821 addu at,a0,at
+ 198: ac22ffff sw v0,-1\(at\)
+ 19c: ac230003 sw v1,3\(at\)
+ 1a0: 3c01abce lui at,0xabce
+ 1a4: 00810821 addu at,a0,at
+ 1a8: ac22ef01 sw v0,-4351\(at\)
+ 1ac: ac23ef05 sw v1,-4347\(at\)
+ 1b0: 3c018000 lui at,0x8000
+ 1b4: 00810821 addu at,a0,at
+ 1b8: ac220000 sw v0,0\(at\)
+ 1bc: ac230004 sw v1,4\(at\)
+ 1c0: 3c018000 lui at,0x8000
+ 1c4: 00810821 addu at,a0,at
+ 1c8: ac22ffff sw v0,-1\(at\)
+ 1cc: ac230003 sw v1,3\(at\)
+ 1d0: 3c010123 lui at,0x123
+ 1d4: 00810821 addu at,a0,at
+ 1d8: ac224567 sw v0,17767\(at\)
+ 1dc: ac23456b sw v1,17771\(at\)
+ 1e0: ac820000 sw v0,0\(a0\)
+ 1e4: ac830004 sw v1,4\(a0\)
+ 1e8: ac02ffff sw v0,-1\(zero\)
+ 1ec: ac030003 sw v1,3\(zero\)
+ 1f0: 3c01abce lui at,0xabce
+ 1f4: ac22ef01 sw v0,-4351\(at\)
+ 1f8: ac23ef05 sw v1,-4347\(at\)
+ 1fc: 3c018000 lui at,0x8000
+ 200: ac220000 sw v0,0\(at\)
+ 204: ac230004 sw v1,4\(at\)
+ 208: 3c018000 lui at,0x8000
+ 20c: ac22ffff sw v0,-1\(at\)
+ 210: ac230003 sw v1,3\(at\)
+ 214: 3c010123 lui at,0x123
+ 218: ac224567 sw v0,17767\(at\)
+ 21c: ac23456b sw v1,17771\(at\)
+ 220: 3c010000 lui at,0x0
+ 224: ac220000 sw v0,0\(at\)
+ 228: ac230004 sw v1,4\(at\)
+ 22c: 3c010000 lui at,0x0
+ 230: ac22ffff sw v0,-1\(at\)
+ 234: ac230003 sw v1,3\(at\)
+ 238: 3c01abce lui at,0xabce
+ 23c: ac22ef01 sw v0,-4351\(at\)
+ 240: ac23ef05 sw v1,-4347\(at\)
+ 244: 3c018000 lui at,0x8000
+ 248: ac220000 sw v0,0\(at\)
+ 24c: ac230004 sw v1,4\(at\)
+ 250: 3c018000 lui at,0x8000
+ 254: ac22ffff sw v0,-1\(at\)
+ 258: ac230003 sw v1,3\(at\)
+ 25c: 3c010123 lui at,0x123
+ 260: ac224567 sw v0,17767\(at\)
+ 264: ac23456b sw v1,17771\(at\)
+ 268: ac020000 sw v0,0\(zero\)
+ 26c: ac030004 sw v1,4\(zero\)
+ 270: 8c82ffff lw v0,-1\(a0\)
+ 274: 3c02abce lui v0,0xabce
+ 278: 00441021 addu v0,v0,a0
+ 27c: 8c42ef01 lw v0,-4351\(v0\)
+ 280: 3c028000 lui v0,0x8000
+ 284: 00441021 addu v0,v0,a0
+ 288: 8c420000 lw v0,0\(v0\)
+ 28c: 3c028000 lui v0,0x8000
+ 290: 00441021 addu v0,v0,a0
+ 294: 8c42ffff lw v0,-1\(v0\)
+ 298: 3c020123 lui v0,0x123
+ 29c: 00441021 addu v0,v0,a0
+ 2a0: 8c424567 lw v0,17767\(v0\)
+ 2a4: 24020000 li v0,0
+ 2a8: 00441021 addu v0,v0,a0
+ 2ac: 8c420000 lw v0,0\(v0\)
+ 2b0: 24020000 li v0,0
+ 2b4: 00441021 addu v0,v0,a0
+ 2b8: 8c42ffff lw v0,-1\(v0\)
+ 2bc: 3c02abce lui v0,0xabce
+ 2c0: 00441021 addu v0,v0,a0
+ 2c4: 8c42ef01 lw v0,-4351\(v0\)
+ 2c8: 3c028000 lui v0,0x8000
+ 2cc: 00441021 addu v0,v0,a0
+ 2d0: 8c420000 lw v0,0\(v0\)
+ 2d4: 3c028000 lui v0,0x8000
+ 2d8: 00441021 addu v0,v0,a0
+ 2dc: 8c42ffff lw v0,-1\(v0\)
+ 2e0: 3c020123 lui v0,0x123
+ 2e4: 00441021 addu v0,v0,a0
+ 2e8: 8c424567 lw v0,17767\(v0\)
+ 2ec: 8c820000 lw v0,0\(a0\)
+ 2f0: 8c02ffff lw v0,-1\(zero\)
+ 2f4: 3c02abce lui v0,0xabce
+ 2f8: 8c42ef01 lw v0,-4351\(v0\)
+ 2fc: 3c028000 lui v0,0x8000
+ 300: 8c420000 lw v0,0\(v0\)
+ 304: 3c028000 lui v0,0x8000
+ 308: 8c42ffff lw v0,-1\(v0\)
+ 30c: 3c020123 lui v0,0x123
+ 310: 8c424567 lw v0,17767\(v0\)
+ 314: 24020000 li v0,0
+ 318: 8c420000 lw v0,0\(v0\)
+ 31c: 24020000 li v0,0
+ 320: 8c42ffff lw v0,-1\(v0\)
+ 324: 3c02abce lui v0,0xabce
+ 328: 8c42ef01 lw v0,-4351\(v0\)
+ 32c: 3c028000 lui v0,0x8000
+ 330: 8c420000 lw v0,0\(v0\)
+ 334: 3c028000 lui v0,0x8000
+ 338: 8c42ffff lw v0,-1\(v0\)
+ 33c: 3c020123 lui v0,0x123
+ 340: 8c424567 lw v0,17767\(v0\)
+ 344: 8c020000 lw v0,0\(zero\)
+ 348: 00000000 nop
+ 34c: ac82ffff sw v0,-1\(a0\)
+ 350: 3c01abce lui at,0xabce
+ 354: 00240821 addu at,at,a0
+ 358: ac22ef01 sw v0,-4351\(at\)
+ 35c: 3c018000 lui at,0x8000
+ 360: 00240821 addu at,at,a0
+ 364: ac220000 sw v0,0\(at\)
+ 368: 3c018000 lui at,0x8000
+ 36c: 00240821 addu at,at,a0
+ 370: ac22ffff sw v0,-1\(at\)
+ 374: 3c010123 lui at,0x123
+ 378: 00240821 addu at,at,a0
+ 37c: ac224567 sw v0,17767\(at\)
+ 380: 24010000 li at,0
+ 384: 00240821 addu at,at,a0
+ 388: ac220000 sw v0,0\(at\)
+ 38c: 24010000 li at,0
+ 390: 00240821 addu at,at,a0
+ 394: ac22ffff sw v0,-1\(at\)
+ 398: 3c01abce lui at,0xabce
+ 39c: 00240821 addu at,at,a0
+ 3a0: ac22ef01 sw v0,-4351\(at\)
+ 3a4: 3c018000 lui at,0x8000
+ 3a8: 00240821 addu at,at,a0
+ 3ac: ac220000 sw v0,0\(at\)
+ 3b0: 3c018000 lui at,0x8000
+ 3b4: 00240821 addu at,at,a0
+ 3b8: ac22ffff sw v0,-1\(at\)
+ 3bc: 3c010123 lui at,0x123
+ 3c0: 00240821 addu at,at,a0
+ 3c4: ac224567 sw v0,17767\(at\)
+ 3c8: ac820000 sw v0,0\(a0\)
+ 3cc: ac02ffff sw v0,-1\(zero\)
+ 3d0: 3c01abce lui at,0xabce
+ 3d4: ac22ef01 sw v0,-4351\(at\)
+ 3d8: 3c018000 lui at,0x8000
+ 3dc: ac220000 sw v0,0\(at\)
+ 3e0: 3c018000 lui at,0x8000
+ 3e4: ac22ffff sw v0,-1\(at\)
+ 3e8: 3c010123 lui at,0x123
+ 3ec: ac224567 sw v0,17767\(at\)
+ 3f0: 24010000 li at,0
+ 3f4: ac220000 sw v0,0\(at\)
+ 3f8: 24010000 li at,0
+ 3fc: ac22ffff sw v0,-1\(at\)
+ 400: 3c01abce lui at,0xabce
+ 404: ac22ef01 sw v0,-4351\(at\)
+ 408: 3c018000 lui at,0x8000
+ 40c: ac220000 sw v0,0\(at\)
+ 410: 3c018000 lui at,0x8000
+ 414: ac22ffff sw v0,-1\(at\)
+ 418: 3c010123 lui at,0x123
+ 41c: ac224567 sw v0,17767\(at\)
+ 420: ac020000 sw v0,0\(zero\)
+ 424: 2482ffff addiu v0,a0,-1
+ 428: 3c02abcd lui v0,0xabcd
+ 42c: 3442ef01 ori v0,v0,0xef01
+ 430: 00441021 addu v0,v0,a0
+ 434: 3c028000 lui v0,0x8000
+ 438: 00441021 addu v0,v0,a0
+ 43c: 3c027fff lui v0,0x7fff
+ 440: 3442ffff ori v0,v0,0xffff
+ 444: 00441021 addu v0,v0,a0
+ 448: 3c020123 lui v0,0x123
+ 44c: 34424567 ori v0,v0,0x4567
+ 450: 00441021 addu v0,v0,a0
+ 454: 24820000 addiu v0,a0,0
+ 458: 2482ffff addiu v0,a0,-1
+ 45c: 3c02abcd lui v0,0xabcd
+ 460: 3442ef01 ori v0,v0,0xef01
+ 464: 00441021 addu v0,v0,a0
+ 468: 3c028000 lui v0,0x8000
+ 46c: 00441021 addu v0,v0,a0
+ 470: 3c027fff lui v0,0x7fff
+ 474: 3442ffff ori v0,v0,0xffff
+ 478: 00441021 addu v0,v0,a0
+ 47c: 3c020123 lui v0,0x123
+ 480: 34424567 ori v0,v0,0x4567
+ 484: 00441021 addu v0,v0,a0
+ 488: 24820000 addiu v0,a0,0
+ 48c: 2402ffff li v0,-1
+ 490: 3c02abcd lui v0,0xabcd
+ 494: 3442ef01 ori v0,v0,0xef01
+ 498: 3c028000 lui v0,0x8000
+ 49c: 3c027fff lui v0,0x7fff
+ 4a0: 3442ffff ori v0,v0,0xffff
+ 4a4: 3c020123 lui v0,0x123
+ 4a8: 34424567 ori v0,v0,0x4567
+ 4ac: 24020000 li v0,0
+ 4b0: 2402ffff li v0,-1
+ 4b4: 3c02abcd lui v0,0xabcd
+ 4b8: 3442ef01 ori v0,v0,0xef01
+ 4bc: 3c028000 lui v0,0x8000
+ 4c0: 3c027fff lui v0,0x7fff
+ 4c4: 3442ffff ori v0,v0,0xffff
+ 4c8: 3c020123 lui v0,0x123
+ 4cc: 34424567 ori v0,v0,0x4567
+ 4d0: 24020000 li v0,0
\.\.\.
diff --git a/gas/testsuite/gas/mips/ldstla-32.d b/gas/testsuite/gas/mips/ldstla-32.d
index 989cd7e..6c467c4 100644
--- a/gas/testsuite/gas/mips/ldstla-32.d
+++ b/gas/testsuite/gas/mips/ldstla-32.d
@@ -1,5 +1,5 @@
#objdump: -d
-#as: -32
+#as: -mabi=32
#name: MIPS ld-st-la constants (ABI o32)
#source: ldstla-32.s
@@ -8,73 +8,313 @@
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\)
- 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\)
- 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
+ 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: 3c018000 lui at,0x8000
+ 2c: 00810821 addu at,a0,at
+ 30: 8c22ffff lw v0,-1\(at\)
+ 34: 8c230003 lw v1,3\(at\)
+ 38: 3c010123 lui at,0x123
+ 3c: 00810821 addu at,a0,at
+ 40: 8c224567 lw v0,17767\(at\)
+ 44: 8c23456b lw v1,17771\(at\)
+ 48: 3c010000 lui at,0x0
+ 4c: 00810821 addu at,a0,at
+ 50: 8c220000 lw v0,0\(at\)
+ 54: 8c230004 lw v1,4\(at\)
+ 58: 3c010000 lui at,0x0
+ 5c: 00810821 addu at,a0,at
+ 60: 8c22ffff lw v0,-1\(at\)
+ 64: 8c230003 lw v1,3\(at\)
+ 68: 3c01abce lui at,0xabce
+ 6c: 00810821 addu at,a0,at
+ 70: 8c22ef01 lw v0,-4351\(at\)
+ 74: 8c23ef05 lw v1,-4347\(at\)
+ 78: 3c018000 lui at,0x8000
+ 7c: 00810821 addu at,a0,at
+ 80: 8c220000 lw v0,0\(at\)
+ 84: 8c230004 lw v1,4\(at\)
+ 88: 3c018000 lui at,0x8000
+ 8c: 00810821 addu at,a0,at
+ 90: 8c22ffff lw v0,-1\(at\)
+ 94: 8c230003 lw v1,3\(at\)
+ 98: 3c010123 lui at,0x123
+ 9c: 00810821 addu at,a0,at
+ a0: 8c224567 lw v0,17767\(at\)
+ a4: 8c23456b lw v1,17771\(at\)
+ a8: 8c820000 lw v0,0\(a0\)
+ ac: 8c830004 lw v1,4\(a0\)
+ b0: 8c02ffff lw v0,-1\(zero\)
+ b4: 8c030003 lw v1,3\(zero\)
+ b8: 3c01abce lui at,0xabce
+ bc: 8c22ef01 lw v0,-4351\(at\)
+ c0: 8c23ef05 lw v1,-4347\(at\)
+ c4: 3c018000 lui at,0x8000
+ c8: 8c220000 lw v0,0\(at\)
+ cc: 8c230004 lw v1,4\(at\)
+ d0: 3c018000 lui at,0x8000
+ d4: 8c22ffff lw v0,-1\(at\)
+ d8: 8c230003 lw v1,3\(at\)
+ dc: 3c010123 lui at,0x123
+ e0: 8c224567 lw v0,17767\(at\)
+ e4: 8c23456b lw v1,17771\(at\)
+ e8: 3c010000 lui at,0x0
+ ec: 8c220000 lw v0,0\(at\)
+ f0: 8c230004 lw v1,4\(at\)
+ f4: 3c010000 lui at,0x0
+ f8: 8c22ffff lw v0,-1\(at\)
+ fc: 8c230003 lw v1,3\(at\)
+ 100: 3c01abce lui at,0xabce
+ 104: 8c22ef01 lw v0,-4351\(at\)
+ 108: 8c23ef05 lw v1,-4347\(at\)
+ 10c: 3c018000 lui at,0x8000
+ 110: 8c220000 lw v0,0\(at\)
+ 114: 8c230004 lw v1,4\(at\)
+ 118: 3c018000 lui at,0x8000
+ 11c: 8c22ffff lw v0,-1\(at\)
+ 120: 8c230003 lw v1,3\(at\)
+ 124: 3c010123 lui at,0x123
+ 128: 8c224567 lw v0,17767\(at\)
+ 12c: 8c23456b lw v1,17771\(at\)
+ 130: 8c020000 lw v0,0\(zero\)
+ 134: 8c030004 lw v1,4\(zero\)
+ 138: ac82ffff sw v0,-1\(a0\)
+ 13c: ac830003 sw v1,3\(a0\)
+ 140: 3c01abce lui at,0xabce
+ 144: 00810821 addu at,a0,at
+ 148: ac22ef01 sw v0,-4351\(at\)
+ 14c: ac23ef05 sw v1,-4347\(at\)
+ 150: 3c018000 lui at,0x8000
+ 154: 00810821 addu at,a0,at
+ 158: ac220000 sw v0,0\(at\)
+ 15c: ac230004 sw v1,4\(at\)
+ 160: 3c018000 lui at,0x8000
+ 164: 00810821 addu at,a0,at
+ 168: ac22ffff sw v0,-1\(at\)
+ 16c: ac230003 sw v1,3\(at\)
+ 170: 3c010123 lui at,0x123
+ 174: 00810821 addu at,a0,at
+ 178: ac224567 sw v0,17767\(at\)
+ 17c: ac23456b sw v1,17771\(at\)
+ 180: 3c010000 lui at,0x0
+ 184: 00810821 addu at,a0,at
+ 188: ac220000 sw v0,0\(at\)
+ 18c: ac230004 sw v1,4\(at\)
+ 190: 3c010000 lui at,0x0
+ 194: 00810821 addu at,a0,at
+ 198: ac22ffff sw v0,-1\(at\)
+ 19c: ac230003 sw v1,3\(at\)
+ 1a0: 3c01abce lui at,0xabce
+ 1a4: 00810821 addu at,a0,at
+ 1a8: ac22ef01 sw v0,-4351\(at\)
+ 1ac: ac23ef05 sw v1,-4347\(at\)
+ 1b0: 3c018000 lui at,0x8000
+ 1b4: 00810821 addu at,a0,at
+ 1b8: ac220000 sw v0,0\(at\)
+ 1bc: ac230004 sw v1,4\(at\)
+ 1c0: 3c018000 lui at,0x8000
+ 1c4: 00810821 addu at,a0,at
+ 1c8: ac22ffff sw v0,-1\(at\)
+ 1cc: ac230003 sw v1,3\(at\)
+ 1d0: 3c010123 lui at,0x123
+ 1d4: 00810821 addu at,a0,at
+ 1d8: ac224567 sw v0,17767\(at\)
+ 1dc: ac23456b sw v1,17771\(at\)
+ 1e0: ac820000 sw v0,0\(a0\)
+ 1e4: ac830004 sw v1,4\(a0\)
+ 1e8: ac02ffff sw v0,-1\(zero\)
+ 1ec: ac030003 sw v1,3\(zero\)
+ 1f0: 3c01abce lui at,0xabce
+ 1f4: ac22ef01 sw v0,-4351\(at\)
+ 1f8: ac23ef05 sw v1,-4347\(at\)
+ 1fc: 3c018000 lui at,0x8000
+ 200: ac220000 sw v0,0\(at\)
+ 204: ac230004 sw v1,4\(at\)
+ 208: 3c018000 lui at,0x8000
+ 20c: ac22ffff sw v0,-1\(at\)
+ 210: ac230003 sw v1,3\(at\)
+ 214: 3c010123 lui at,0x123
+ 218: ac224567 sw v0,17767\(at\)
+ 21c: ac23456b sw v1,17771\(at\)
+ 220: 3c010000 lui at,0x0
+ 224: ac220000 sw v0,0\(at\)
+ 228: ac230004 sw v1,4\(at\)
+ 22c: 3c010000 lui at,0x0
+ 230: ac22ffff sw v0,-1\(at\)
+ 234: ac230003 sw v1,3\(at\)
+ 238: 3c01abce lui at,0xabce
+ 23c: ac22ef01 sw v0,-4351\(at\)
+ 240: ac23ef05 sw v1,-4347\(at\)
+ 244: 3c018000 lui at,0x8000
+ 248: ac220000 sw v0,0\(at\)
+ 24c: ac230004 sw v1,4\(at\)
+ 250: 3c018000 lui at,0x8000
+ 254: ac22ffff sw v0,-1\(at\)
+ 258: ac230003 sw v1,3\(at\)
+ 25c: 3c010123 lui at,0x123
+ 260: ac224567 sw v0,17767\(at\)
+ 264: ac23456b sw v1,17771\(at\)
+ 268: ac020000 sw v0,0\(zero\)
+ 26c: ac030004 sw v1,4\(zero\)
+ 270: 8c82ffff lw v0,-1\(a0\)
+ 274: 3c02abce lui v0,0xabce
+ 278: 00441021 addu v0,v0,a0
+ 27c: 8c42ef01 lw v0,-4351\(v0\)
+ 280: 3c028000 lui v0,0x8000
+ 284: 00441021 addu v0,v0,a0
+ 288: 8c420000 lw v0,0\(v0\)
+ 28c: 3c028000 lui v0,0x8000
+ 290: 00441021 addu v0,v0,a0
+ 294: 8c42ffff lw v0,-1\(v0\)
+ 298: 3c020123 lui v0,0x123
+ 29c: 00441021 addu v0,v0,a0
+ 2a0: 8c424567 lw v0,17767\(v0\)
+ 2a4: 24020000 li v0,0
+ 2a8: 00441021 addu v0,v0,a0
+ 2ac: 8c420000 lw v0,0\(v0\)
+ 2b0: 24020000 li v0,0
+ 2b4: 00441021 addu v0,v0,a0
+ 2b8: 8c42ffff lw v0,-1\(v0\)
+ 2bc: 3c02abce lui v0,0xabce
+ 2c0: 00441021 addu v0,v0,a0
+ 2c4: 8c42ef01 lw v0,-4351\(v0\)
+ 2c8: 3c028000 lui v0,0x8000
+ 2cc: 00441021 addu v0,v0,a0
+ 2d0: 8c420000 lw v0,0\(v0\)
+ 2d4: 3c028000 lui v0,0x8000
+ 2d8: 00441021 addu v0,v0,a0
+ 2dc: 8c42ffff lw v0,-1\(v0\)
+ 2e0: 3c020123 lui v0,0x123
+ 2e4: 00441021 addu v0,v0,a0
+ 2e8: 8c424567 lw v0,17767\(v0\)
+ 2ec: 8c820000 lw v0,0\(a0\)
+ 2f0: 8c02ffff lw v0,-1\(zero\)
+ 2f4: 3c02abce lui v0,0xabce
+ 2f8: 8c42ef01 lw v0,-4351\(v0\)
+ 2fc: 3c028000 lui v0,0x8000
+ 300: 8c420000 lw v0,0\(v0\)
+ 304: 3c028000 lui v0,0x8000
+ 308: 8c42ffff lw v0,-1\(v0\)
+ 30c: 3c020123 lui v0,0x123
+ 310: 8c424567 lw v0,17767\(v0\)
+ 314: 24020000 li v0,0
+ 318: 8c420000 lw v0,0\(v0\)
+ 31c: 24020000 li v0,0
+ 320: 8c42ffff lw v0,-1\(v0\)
+ 324: 3c02abce lui v0,0xabce
+ 328: 8c42ef01 lw v0,-4351\(v0\)
+ 32c: 3c028000 lui v0,0x8000
+ 330: 8c420000 lw v0,0\(v0\)
+ 334: 3c028000 lui v0,0x8000
+ 338: 8c42ffff lw v0,-1\(v0\)
+ 33c: 3c020123 lui v0,0x123
+ 340: 8c424567 lw v0,17767\(v0\)
+ 344: 8c020000 lw v0,0\(zero\)
+ 348: 00000000 nop
+ 34c: ac82ffff sw v0,-1\(a0\)
+ 350: 3c01abce lui at,0xabce
+ 354: 00240821 addu at,at,a0
+ 358: ac22ef01 sw v0,-4351\(at\)
+ 35c: 3c018000 lui at,0x8000
+ 360: 00240821 addu at,at,a0
+ 364: ac220000 sw v0,0\(at\)
+ 368: 3c018000 lui at,0x8000
+ 36c: 00240821 addu at,at,a0
+ 370: ac22ffff sw v0,-1\(at\)
+ 374: 3c010123 lui at,0x123
+ 378: 00240821 addu at,at,a0
+ 37c: ac224567 sw v0,17767\(at\)
+ 380: 24010000 li at,0
+ 384: 00240821 addu at,at,a0
+ 388: ac220000 sw v0,0\(at\)
+ 38c: 24010000 li at,0
+ 390: 00240821 addu at,at,a0
+ 394: ac22ffff sw v0,-1\(at\)
+ 398: 3c01abce lui at,0xabce
+ 39c: 00240821 addu at,at,a0
+ 3a0: ac22ef01 sw v0,-4351\(at\)
+ 3a4: 3c018000 lui at,0x8000
+ 3a8: 00240821 addu at,at,a0
+ 3ac: ac220000 sw v0,0\(at\)
+ 3b0: 3c018000 lui at,0x8000
+ 3b4: 00240821 addu at,at,a0
+ 3b8: ac22ffff sw v0,-1\(at\)
+ 3bc: 3c010123 lui at,0x123
+ 3c0: 00240821 addu at,at,a0
+ 3c4: ac224567 sw v0,17767\(at\)
+ 3c8: ac820000 sw v0,0\(a0\)
+ 3cc: ac02ffff sw v0,-1\(zero\)
+ 3d0: 3c01abce lui at,0xabce
+ 3d4: ac22ef01 sw v0,-4351\(at\)
+ 3d8: 3c018000 lui at,0x8000
+ 3dc: ac220000 sw v0,0\(at\)
+ 3e0: 3c018000 lui at,0x8000
+ 3e4: ac22ffff sw v0,-1\(at\)
+ 3e8: 3c010123 lui at,0x123
+ 3ec: ac224567 sw v0,17767\(at\)
+ 3f0: 24010000 li at,0
+ 3f4: ac220000 sw v0,0\(at\)
+ 3f8: 24010000 li at,0
+ 3fc: ac22ffff sw v0,-1\(at\)
+ 400: 3c01abce lui at,0xabce
+ 404: ac22ef01 sw v0,-4351\(at\)
+ 408: 3c018000 lui at,0x8000
+ 40c: ac220000 sw v0,0\(at\)
+ 410: 3c018000 lui at,0x8000
+ 414: ac22ffff sw v0,-1\(at\)
+ 418: 3c010123 lui at,0x123
+ 41c: ac224567 sw v0,17767\(at\)
+ 420: ac020000 sw v0,0\(zero\)
+ 424: 2482ffff addiu v0,a0,-1
+ 428: 3c02abcd lui v0,0xabcd
+ 42c: 3442ef01 ori v0,v0,0xef01
+ 430: 00441021 addu v0,v0,a0
+ 434: 3c028000 lui v0,0x8000
+ 438: 00441021 addu v0,v0,a0
+ 43c: 3c027fff lui v0,0x7fff
+ 440: 3442ffff ori v0,v0,0xffff
+ 444: 00441021 addu v0,v0,a0
+ 448: 3c020123 lui v0,0x123
+ 44c: 34424567 ori v0,v0,0x4567
+ 450: 00441021 addu v0,v0,a0
+ 454: 24820000 addiu v0,a0,0
+ 458: 2482ffff addiu v0,a0,-1
+ 45c: 3c02abcd lui v0,0xabcd
+ 460: 3442ef01 ori v0,v0,0xef01
+ 464: 00441021 addu v0,v0,a0
+ 468: 3c028000 lui v0,0x8000
+ 46c: 00441021 addu v0,v0,a0
+ 470: 3c027fff lui v0,0x7fff
+ 474: 3442ffff ori v0,v0,0xffff
+ 478: 00441021 addu v0,v0,a0
+ 47c: 3c020123 lui v0,0x123
+ 480: 34424567 ori v0,v0,0x4567
+ 484: 00441021 addu v0,v0,a0
+ 488: 24820000 addiu v0,a0,0
+ 48c: 2402ffff li v0,-1
+ 490: 3c02abcd lui v0,0xabcd
+ 494: 3442ef01 ori v0,v0,0xef01
+ 498: 3c028000 lui v0,0x8000
+ 49c: 3c027fff lui v0,0x7fff
+ 4a0: 3442ffff ori v0,v0,0xffff
+ 4a4: 3c020123 lui v0,0x123
+ 4a8: 34424567 ori v0,v0,0x4567
+ 4ac: 24020000 li v0,0
+ 4b0: 2402ffff li v0,-1
+ 4b4: 3c02abcd lui v0,0xabcd
+ 4b8: 3442ef01 ori v0,v0,0xef01
+ 4bc: 3c028000 lui v0,0x8000
+ 4c0: 3c027fff lui v0,0x7fff
+ 4c4: 3442ffff ori v0,v0,0xffff
+ 4c8: 3c020123 lui v0,0x123
+ 4cc: 34424567 ori v0,v0,0x4567
+ 4d0: 24020000 li v0,0
\.\.\.
diff --git a/gas/testsuite/gas/mips/ldstla-32.s b/gas/testsuite/gas/mips/ldstla-32.s
index 0f36327..642c3d0 100644
--- a/gas/testsuite/gas/mips/ldstla-32.s
+++ b/gas/testsuite/gas/mips/ldstla-32.s
@@ -1,26 +1,132 @@
.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)
-
- lw $2, 0xffffffff80000000($3)
- lw $2, 0x01234567($3)
-
- sw $2, 0x01234567($3)
+ ld $2, 0xffffffffffffffff($4)
+ ld $2, 0xffffffffabcdef01($4)
+ ld $2, 0xffffffff80000000($4)
+ ld $2, 0xffffffff7fffffff($4)
+ ld $2, 0xffffffff01234567($4)
+ ld $2, 0xffffffff00000000($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)
+ ld $2, 0xffffffffffffffff
+ ld $2, 0xffffffffabcdef01
+ ld $2, 0xffffffff80000000
+ ld $2, 0xffffffff7fffffff
+ ld $2, 0xffffffff01234567
+ ld $2, 0xffffffff00000000
+ ld $2, 0xffffffff
+ ld $2, 0xabcdef01
+ ld $2, 0x80000000
+ ld $2, 0x7fffffff
+ ld $2, 0x01234567
+ ld $2, 0x00000000
+
+ sd $2, 0xffffffffffffffff($4)
+ sd $2, 0xffffffffabcdef01($4)
+ sd $2, 0xffffffff80000000($4)
+ sd $2, 0xffffffff7fffffff($4)
+ sd $2, 0xffffffff01234567($4)
+ sd $2, 0xffffffff00000000($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, 0xffffffff7fffffff
+ sd $2, 0xffffffff01234567
+ sd $2, 0xffffffff00000000
+ 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, 0xffffffff7fffffff($4)
+ lw $2, 0xffffffff01234567($4)
+ lw $2, 0xffffffff00000000($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, 0xffffffff7fffffff
+ lw $2, 0xffffffff01234567
+ lw $2, 0xffffffff00000000
+ 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, 0xffffffff7fffffff($4)
+ sw $2, 0xffffffff01234567($4)
+ sw $2, 0xffffffff00000000($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, 0xffffffff7fffffff
+ sw $2, 0xffffffff01234567
+ sw $2, 0xffffffff00000000
+ 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, 0xffffffff7fffffff($4)
+ la $2, 0xffffffff01234567($4)
+ la $2, 0xffffffff00000000($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, 0xffffffff7fffffff
+ la $2, 0xffffffff01234567
+ la $2, 0xffffffff00000000
+ la $2, 0xffffffff
+ la $2, 0xabcdef01
+ la $2, 0x80000000
la $2, 0x7fffffff
la $2, 0x01234567
+ la $2, 0x00000000
.space 8
diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp
index 8750878..09da50b 100644
--- a/gas/testsuite/gas/mips/mips.exp
+++ b/gas/testsuite/gas/mips/mips.exp
@@ -727,7 +727,17 @@ if { [istarget mips*-*-*] } then {
run_dump_test "hwr-names-mips64r2"
run_dump_test "ldstla-32"
+ run_dump_test "ldstla-32-mips3"
run_dump_test "ldstla-32-shared"
+ run_dump_test "ldstla-32-mips3-shared"
+ run_list_test "ldstla-32-1" "-mabi=32" \
+ "MIPS ld-st-la bad constants (ABI o32)"
+ run_list_test "ldstla-32-mips3-1" "-mabi=32" \
+ "MIPS ld-st-la bad constants (ABI o32, mips3)"
+ run_list_test "ldstla-32-1" "-KPIC -mabi=32" \
+ "MIPS ld-st-la bad constants (ABI o32, shared)"
+ run_list_test "ldstla-32-mips3-1" "-KPIC -mabi=32" \
+ "MIPS ld-st-la bad constants (ABI o32, mips3, shared)"
run_dump_test "ldstla-eabi64"
if $has_newabi {
run_dump_test "ldstla-n64"