aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorThiemo Seufer <ths@networkno.de>2003-10-01 02:07:48 +0000
committerThiemo Seufer <ths@networkno.de>2003-10-01 02:07:48 +0000
commitecd13cd3ed9a3fcc6b539db7675807eb1f35f114 (patch)
tree1564b033ba9c44d18d688ea5f8969e9d212bf81e /gas
parent118fecd30767bc6fdd71e8d29304d65d061e12c1 (diff)
downloadgdb-ecd13cd3ed9a3fcc6b539db7675807eb1f35f114.zip
gdb-ecd13cd3ed9a3fcc6b539db7675807eb1f35f114.tar.gz
gdb-ecd13cd3ed9a3fcc6b539db7675807eb1f35f114.tar.bz2
* config/tc-mips.c (macro_build_ldst_constoffset): Fix sign extension
tests. (load_register): Likewise. (macro): Likewise. * gas/mips/ldstla-32-shared.d: New file. * gas/mips/ldstla-32.d: New file. * gas/mips/ldstla-32.s: New file. * gas/mips/ldstla-n32-shared.d: New file. * gas/mips/ldstla-n32.d: New file. * gas/mips/ldstla-n32.s: New file. * gas/mips/ldstla-n64-shared.d: New file. * gas/mips/ldstla-n64.d: New file. * gas/mips/ldstla-n64.s: New file. * gas/mips/mips.exp: Add ld-st-la tests.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog7
-rw-r--r--gas/config/tc-mips.c20
-rw-r--r--gas/testsuite/ChangeLog13
-rw-r--r--gas/testsuite/gas/mips/ldstla-32-shared.d80
-rw-r--r--gas/testsuite/gas/mips/ldstla-32.d80
-rw-r--r--gas/testsuite/gas/mips/ldstla-32.s26
-rw-r--r--gas/testsuite/gas/mips/ldstla-n32-shared.d154
-rw-r--r--gas/testsuite/gas/mips/ldstla-n32.d154
-rw-r--r--gas/testsuite/gas/mips/ldstla-n32.s35
-rw-r--r--gas/testsuite/gas/mips/ldstla-n64-shared.d181
-rw-r--r--gas/testsuite/gas/mips/ldstla-n64.d181
-rw-r--r--gas/testsuite/gas/mips/ldstla-n64.s42
-rw-r--r--gas/testsuite/gas/mips/mips.exp9
13 files changed, 972 insertions, 10 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 3c05999..761b259 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,10 @@
+2003-10-01 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
+
+ * config/tc-mips.c (macro_build_ldst_constoffset): Fix sign extension
+ tests.
+ (load_register): Likewise.
+ (macro): Likewise.
+
2003-09-30 Chris Demetriou <cgd@broadcom.com>
* config/tc-mips.c (mips_ip): Capitalize first word of
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
index a1f2d38..18cb24b 100644
--- a/gas/config/tc-mips.c
+++ b/gas/config/tc-mips.c
@@ -3269,8 +3269,8 @@ macro_build_ldst_constoffset (char *place, int *counter, expressionS *ep,
/* Sign-extending 32-bit constants makes their handling easier. */
if (! dbl)
{
- if (ep->X_add_number & ~((bfd_vma) 0xffffffff)
- && ~(ep->X_add_number | 0xffffffff))
+ if (ep->X_add_number & ~((bfd_vma) 0x7fffffff)
+ && ~(ep->X_add_number | 0x7fffffff))
as_bad (_("too large constant specified"));
ep->X_add_number = (((ep->X_add_number & 0xffffffff) ^ 0x80000000)
@@ -3278,7 +3278,7 @@ macro_build_ldst_constoffset (char *place, int *counter, expressionS *ep,
}
/* Right now, this routine can only handle signed 32-bit contants. */
- if (! IS_SEXT_32BIT_NUM(ep->X_add_number))
+ if (! IS_SEXT_32BIT_NUM(ep->X_add_number + 0x8000))
as_warn (_("operand overflow"));
if (IS_SEXT_16BIT_NUM(ep->X_add_number))
@@ -3433,8 +3433,8 @@ load_register (int *counter, int reg, expressionS *ep, int dbl)
/* Sign-extending 32-bit constants makes their handling easier. */
if (! dbl)
{
- if (ep->X_add_number & ~((bfd_vma) 0xffffffff)
- && ~(ep->X_add_number | 0xffffffff))
+ if (ep->X_add_number & ~((bfd_vma) 0x7fffffff)
+ && ~(ep->X_add_number | 0x7fffffff))
as_bad (_("too large constant specified"));
ep->X_add_number = (((ep->X_add_number & 0xffffffff) ^ 0x80000000)
@@ -5113,7 +5113,7 @@ macro (struct mips_cl_insn *ip)
RELAX_ENCODE (8, 4, 0, 0, 0, 0),
offset_expr.X_add_symbol, 0, NULL);
}
- else if (IS_SEXT_32BIT_NUM (expr1.X_add_number))
+ else if (IS_SEXT_32BIT_NUM (expr1.X_add_number + 0x8000))
{
int dreg;
@@ -5461,7 +5461,7 @@ macro (struct mips_cl_insn *ip)
mips_opts.warn_about_macros),
offset_expr.X_add_symbol, 0, NULL);
}
- else if (IS_SEXT_32BIT_NUM (expr1.X_add_number))
+ else if (IS_SEXT_32BIT_NUM (expr1.X_add_number + 0x8000))
{
int dreg;
@@ -5943,8 +5943,8 @@ macro (struct mips_cl_insn *ip)
&& (! HAVE_64BIT_GPRS && offset_expr.X_op == O_constant))
&& (offset_expr.X_op == O_constant))
{
- if (offset_expr.X_add_number & ~((bfd_vma) 0xffffffff)
- && ~(offset_expr.X_add_number | 0xffffffff))
+ if (offset_expr.X_add_number & ~((bfd_vma) 0x7fffffff)
+ && ~(offset_expr.X_add_number | 0x7fffffff))
as_bad (_("too large constant specified"));
offset_expr.X_add_number = (((offset_expr.X_add_number & 0xffffffff)
@@ -6137,7 +6137,7 @@ macro (struct mips_cl_insn *ip)
}
if (offset_expr.X_op == O_constant
- && ! IS_SEXT_32BIT_NUM (offset_expr.X_add_number))
+ && ! IS_SEXT_32BIT_NUM (offset_expr.X_add_number + 0x8000))
as_bad (_("load/store address overflow (max 32 bits)"));
if (breg == 0)
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 677a75d..82caa44 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,16 @@
+2003-10-01 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
+
+ * gas/mips/ldstla-32-shared.d: New file.
+ * gas/mips/ldstla-32.d: New file.
+ * gas/mips/ldstla-32.s: New file.
+ * gas/mips/ldstla-n32-shared.d: New file.
+ * gas/mips/ldstla-n32.d: New file.
+ * gas/mips/ldstla-n32.s: New file.
+ * gas/mips/ldstla-n64-shared.d: New file.
+ * gas/mips/ldstla-n64.d: New file.
+ * gas/mips/ldstla-n64.s: New file.
+ * gas/mips/mips.exp: Add ld-st-la tests.
+
2003-09-30 Chris Demetriou <cgd@broadcom.com>
* lib/gas-defs.exp (run_dump_test): If stderr file is specified
diff --git a/gas/testsuite/gas/mips/ldstla-32-shared.d b/gas/testsuite/gas/mips/ldstla-32-shared.d
new file mode 100644
index 0000000..bcb6bd6
--- /dev/null
+++ b/gas/testsuite/gas/mips/ldstla-32-shared.d
@@ -0,0 +1,80 @@
+#objdump: -d
+#as: -KPIC -32
+#name: MIPS ld-st-la constants (ABI o32, shared)
+#source: ldstla-32.s
+
+.*: +file format elf32-.*mips
+
+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
+ \.\.\.
diff --git a/gas/testsuite/gas/mips/ldstla-32.d b/gas/testsuite/gas/mips/ldstla-32.d
new file mode 100644
index 0000000..989cd7e
--- /dev/null
+++ b/gas/testsuite/gas/mips/ldstla-32.d
@@ -0,0 +1,80 @@
+#objdump: -d
+#as: -32
+#name: MIPS ld-st-la constants (ABI o32)
+#source: ldstla-32.s
+
+.*: +file format elf32-.*mips
+
+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
+ \.\.\.
diff --git a/gas/testsuite/gas/mips/ldstla-32.s b/gas/testsuite/gas/mips/ldstla-32.s
new file mode 100644
index 0000000..0f36327
--- /dev/null
+++ b/gas/testsuite/gas/mips/ldstla-32.s
@@ -0,0 +1,26 @@
+ .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)
+
+ la $2, 0x7fffffff
+ la $2, 0x01234567
+
+ .space 8
diff --git a/gas/testsuite/gas/mips/ldstla-n32-shared.d b/gas/testsuite/gas/mips/ldstla-n32-shared.d
new file mode 100644
index 0000000..0d4655b
--- /dev/null
+++ b/gas/testsuite/gas/mips/ldstla-n32-shared.d
@@ -0,0 +1,154 @@
+#objdump: -d
+#as: -KPIC -n32
+#name: MIPS ld-st-la constants (ABI n32, shared)
+#source: ldstla-n32.s
+
+.*: +file format elf32-n.*mips
+
+Disassembly of section \.text:
+
+00000000 <\.text>:
+ 0: 3c020123 lui v0,0x123
+ 4: 3c0189ac lui at,0x89ac
+ 8: 64424568 daddiu v0,v0,17768
+ c: 0023082d daddu at,at,v1
+ 10: 0002103c dsll32 v0,v0,0x0
+ 14: 0041102d daddu v0,v0,at
+ 18: dc42cdef ld v0,-12817\(v0\)
+ 1c: 3c02abce lui v0,0xabce
+ 20: 3c012345 lui at,0x2345
+ 24: 6442ef01 daddiu v0,v0,-4351
+ 28: 0023082d daddu at,at,v1
+ 2c: 0002103c dsll32 v0,v0,0x0
+ 30: 0041102d daddu v0,v0,at
+ 34: dc426789 ld v0,26505\(v0\)
+ 38: 3c028000 lui v0,0x8000
+ 3c: 00431021 addu v0,v0,v1
+ 40: dc420000 ld v0,0\(v0\)
+ 44: 3c020000 lui v0,0x0
+ 48: 3c010000 lui at,0x0
+ 4c: 6442ffff daddiu v0,v0,-1
+ 50: 0023082d daddu at,at,v1
+ 54: 0002103c dsll32 v0,v0,0x0
+ 58: 0041102d daddu v0,v0,at
+ 5c: dc420000 ld v0,0\(v0\)
+ 60: 3c020000 lui v0,0x0
+ 64: 3c01abce lui at,0xabce
+ 68: 64420001 daddiu v0,v0,1
+ 6c: 0023082d daddu at,at,v1
+ 70: 0002103c dsll32 v0,v0,0x0
+ 74: 0041102d daddu v0,v0,at
+ 78: dc42ef01 ld v0,-4351\(v0\)
+ 7c: 3c020123 lui v0,0x123
+ 80: 00431021 addu v0,v0,v1
+ 84: dc424567 ld v0,17767\(v0\)
+ 88: 3c010123 lui at,0x123
+ 8c: 64214568 daddiu at,at,17768
+ 90: 00010c38 dsll at,at,0x10
+ 94: 642189ac daddiu at,at,-30292
+ 98: 00010c38 dsll at,at,0x10
+ 9c: 0023082d daddu at,at,v1
+ a0: fc22cdef sd v0,-12817\(at\)
+ a4: 3c01abce lui at,0xabce
+ a8: 6421ef01 daddiu at,at,-4351
+ ac: 00010c38 dsll at,at,0x10
+ b0: 64212345 daddiu at,at,9029
+ b4: 00010c38 dsll at,at,0x10
+ b8: 0023082d daddu at,at,v1
+ bc: fc226789 sd v0,26505\(at\)
+ c0: 3c018000 lui at,0x8000
+ c4: 00230821 addu at,at,v1
+ c8: fc220000 sd v0,0\(at\)
+ cc: 3c010000 lui at,0x0
+ d0: 6421ffff daddiu at,at,-1
+ d4: 00010c38 dsll at,at,0x10
+ d8: 64210000 daddiu at,at,0
+ dc: 00010c38 dsll at,at,0x10
+ e0: 0023082d daddu at,at,v1
+ e4: fc220000 sd v0,0\(at\)
+ e8: 3c010000 lui at,0x0
+ ec: 64210001 daddiu at,at,1
+ f0: 00010c38 dsll at,at,0x10
+ f4: 6421abce daddiu at,at,-21554
+ f8: 00010c38 dsll at,at,0x10
+ fc: 0023082d daddu at,at,v1
+ 100: fc22ef01 sd v0,-4351\(at\)
+ 104: 3c010123 lui at,0x123
+ 108: 00230821 addu at,at,v1
+ 10c: fc224567 sd v0,17767\(at\)
+ 110: 3c020123 lui v0,0x123
+ 114: 3c0189ac lui at,0x89ac
+ 118: 64424568 daddiu v0,v0,17768
+ 11c: 0023082d daddu at,at,v1
+ 120: 0002103c dsll32 v0,v0,0x0
+ 124: 0041102d daddu v0,v0,at
+ 128: 8c42cdef lw v0,-12817\(v0\)
+ 12c: 3c02abce lui v0,0xabce
+ 130: 3c012345 lui at,0x2345
+ 134: 6442ef01 daddiu v0,v0,-4351
+ 138: 0023082d daddu at,at,v1
+ 13c: 0002103c dsll32 v0,v0,0x0
+ 140: 0041102d daddu v0,v0,at
+ 144: 8c426789 lw v0,26505\(v0\)
+ 148: 3c028000 lui v0,0x8000
+ 14c: 00431021 addu v0,v0,v1
+ 150: 8c420000 lw v0,0\(v0\)
+ 154: 3c020000 lui v0,0x0
+ 158: 3c010000 lui at,0x0
+ 15c: 6442ffff daddiu v0,v0,-1
+ 160: 0023082d daddu at,at,v1
+ 164: 0002103c dsll32 v0,v0,0x0
+ 168: 0041102d daddu v0,v0,at
+ 16c: 8c420000 lw v0,0\(v0\)
+ 170: 3c020000 lui v0,0x0
+ 174: 3c01abce lui at,0xabce
+ 178: 64420001 daddiu v0,v0,1
+ 17c: 0023082d daddu at,at,v1
+ 180: 0002103c dsll32 v0,v0,0x0
+ 184: 0041102d daddu v0,v0,at
+ 188: 8c42ef01 lw v0,-4351\(v0\)
+ 18c: 3c020123 lui v0,0x123
+ 190: 00431021 addu v0,v0,v1
+ 194: 8c424567 lw v0,17767\(v0\)
+ 198: 3c010123 lui at,0x123
+ 19c: 64214568 daddiu at,at,17768
+ 1a0: 00010c38 dsll at,at,0x10
+ 1a4: 642189ac daddiu at,at,-30292
+ 1a8: 00010c38 dsll at,at,0x10
+ 1ac: 0023082d daddu at,at,v1
+ 1b0: ac22cdef sw v0,-12817\(at\)
+ 1b4: 3c01abce lui at,0xabce
+ 1b8: 6421ef01 daddiu at,at,-4351
+ 1bc: 00010c38 dsll at,at,0x10
+ 1c0: 64212345 daddiu at,at,9029
+ 1c4: 00010c38 dsll at,at,0x10
+ 1c8: 0023082d daddu at,at,v1
+ 1cc: ac226789 sw v0,26505\(at\)
+ 1d0: 3c018000 lui at,0x8000
+ 1d4: 00230821 addu at,at,v1
+ 1d8: ac220000 sw v0,0\(at\)
+ 1dc: 3c010000 lui at,0x0
+ 1e0: 6421ffff daddiu at,at,-1
+ 1e4: 00010c38 dsll at,at,0x10
+ 1e8: 64210000 daddiu at,at,0
+ 1ec: 00010c38 dsll at,at,0x10
+ 1f0: 0023082d daddu at,at,v1
+ 1f4: ac220000 sw v0,0\(at\)
+ 1f8: 3c010000 lui at,0x0
+ 1fc: 64210001 daddiu at,at,1
+ 200: 00010c38 dsll at,at,0x10
+ 204: 6421abce daddiu at,at,-21554
+ 208: 00010c38 dsll at,at,0x10
+ 20c: 0023082d daddu at,at,v1
+ 210: ac22ef01 sw v0,-4351\(at\)
+ 214: 3c010123 lui at,0x123
+ 218: 00230821 addu at,at,v1
+ 21c: ac224567 sw v0,17767\(at\)
+ 220: 3c028000 lui v0,0x8000
+ 224: 3c020123 lui v0,0x123
+ 228: 34424567 ori v0,v0,0x4567
+ 22c: 3c027fff lui v0,0x7fff
+ 230: 3442ffff ori v0,v0,0xffff
+ 234: 3c020123 lui v0,0x123
+ 238: 34424567 ori v0,v0,0x4567
+ \.\.\.
diff --git a/gas/testsuite/gas/mips/ldstla-n32.d b/gas/testsuite/gas/mips/ldstla-n32.d
new file mode 100644
index 0000000..9245da4
--- /dev/null
+++ b/gas/testsuite/gas/mips/ldstla-n32.d
@@ -0,0 +1,154 @@
+#objdump: -d
+#as: -n32
+#name: MIPS ld-st-la constants (ABI n32)
+#source: ldstla-n32.s
+
+.*: +file format elf32-n.*mips
+
+Disassembly of section \.text:
+
+00000000 <\.text>:
+ 0: 3c020123 lui v0,0x123
+ 4: 3c0189ac lui at,0x89ac
+ 8: 64424568 daddiu v0,v0,17768
+ c: 0023082d daddu at,at,v1
+ 10: 0002103c dsll32 v0,v0,0x0
+ 14: 0041102d daddu v0,v0,at
+ 18: dc42cdef ld v0,-12817\(v0\)
+ 1c: 3c02abce lui v0,0xabce
+ 20: 3c012345 lui at,0x2345
+ 24: 6442ef01 daddiu v0,v0,-4351
+ 28: 0023082d daddu at,at,v1
+ 2c: 0002103c dsll32 v0,v0,0x0
+ 30: 0041102d daddu v0,v0,at
+ 34: dc426789 ld v0,26505\(v0\)
+ 38: 3c028000 lui v0,0x8000
+ 3c: 00431021 addu v0,v0,v1
+ 40: dc420000 ld v0,0\(v0\)
+ 44: 3c020000 lui v0,0x0
+ 48: 3c010000 lui at,0x0
+ 4c: 6442ffff daddiu v0,v0,-1
+ 50: 0023082d daddu at,at,v1
+ 54: 0002103c dsll32 v0,v0,0x0
+ 58: 0041102d daddu v0,v0,at
+ 5c: dc420000 ld v0,0\(v0\)
+ 60: 3c020000 lui v0,0x0
+ 64: 3c01abce lui at,0xabce
+ 68: 64420001 daddiu v0,v0,1
+ 6c: 0023082d daddu at,at,v1
+ 70: 0002103c dsll32 v0,v0,0x0
+ 74: 0041102d daddu v0,v0,at
+ 78: dc42ef01 ld v0,-4351\(v0\)
+ 7c: 3c020123 lui v0,0x123
+ 80: 00431021 addu v0,v0,v1
+ 84: dc424567 ld v0,17767\(v0\)
+ 88: 3c010123 lui at,0x123
+ 8c: 64214568 daddiu at,at,17768
+ 90: 00010c38 dsll at,at,0x10
+ 94: 642189ac daddiu at,at,-30292
+ 98: 00010c38 dsll at,at,0x10
+ 9c: 0023082d daddu at,at,v1
+ a0: fc22cdef sd v0,-12817\(at\)
+ a4: 3c01abce lui at,0xabce
+ a8: 6421ef01 daddiu at,at,-4351
+ ac: 00010c38 dsll at,at,0x10
+ b0: 64212345 daddiu at,at,9029
+ b4: 00010c38 dsll at,at,0x10
+ b8: 0023082d daddu at,at,v1
+ bc: fc226789 sd v0,26505\(at\)
+ c0: 3c018000 lui at,0x8000
+ c4: 00230821 addu at,at,v1
+ c8: fc220000 sd v0,0\(at\)
+ cc: 3c010000 lui at,0x0
+ d0: 6421ffff daddiu at,at,-1
+ d4: 00010c38 dsll at,at,0x10
+ d8: 64210000 daddiu at,at,0
+ dc: 00010c38 dsll at,at,0x10
+ e0: 0023082d daddu at,at,v1
+ e4: fc220000 sd v0,0\(at\)
+ e8: 3c010000 lui at,0x0
+ ec: 64210001 daddiu at,at,1
+ f0: 00010c38 dsll at,at,0x10
+ f4: 6421abce daddiu at,at,-21554
+ f8: 00010c38 dsll at,at,0x10
+ fc: 0023082d daddu at,at,v1
+ 100: fc22ef01 sd v0,-4351\(at\)
+ 104: 3c010123 lui at,0x123
+ 108: 00230821 addu at,at,v1
+ 10c: fc224567 sd v0,17767\(at\)
+ 110: 3c020123 lui v0,0x123
+ 114: 3c0189ac lui at,0x89ac
+ 118: 64424568 daddiu v0,v0,17768
+ 11c: 0023082d daddu at,at,v1
+ 120: 0002103c dsll32 v0,v0,0x0
+ 124: 0041102d daddu v0,v0,at
+ 128: 8c42cdef lw v0,-12817\(v0\)
+ 12c: 3c02abce lui v0,0xabce
+ 130: 3c012345 lui at,0x2345
+ 134: 6442ef01 daddiu v0,v0,-4351
+ 138: 0023082d daddu at,at,v1
+ 13c: 0002103c dsll32 v0,v0,0x0
+ 140: 0041102d daddu v0,v0,at
+ 144: 8c426789 lw v0,26505\(v0\)
+ 148: 3c028000 lui v0,0x8000
+ 14c: 00431021 addu v0,v0,v1
+ 150: 8c420000 lw v0,0\(v0\)
+ 154: 3c020000 lui v0,0x0
+ 158: 3c010000 lui at,0x0
+ 15c: 6442ffff daddiu v0,v0,-1
+ 160: 0023082d daddu at,at,v1
+ 164: 0002103c dsll32 v0,v0,0x0
+ 168: 0041102d daddu v0,v0,at
+ 16c: 8c420000 lw v0,0\(v0\)
+ 170: 3c020000 lui v0,0x0
+ 174: 3c01abce lui at,0xabce
+ 178: 64420001 daddiu v0,v0,1
+ 17c: 0023082d daddu at,at,v1
+ 180: 0002103c dsll32 v0,v0,0x0
+ 184: 0041102d daddu v0,v0,at
+ 188: 8c42ef01 lw v0,-4351\(v0\)
+ 18c: 3c020123 lui v0,0x123
+ 190: 00431021 addu v0,v0,v1
+ 194: 8c424567 lw v0,17767\(v0\)
+ 198: 3c010123 lui at,0x123
+ 19c: 64214568 daddiu at,at,17768
+ 1a0: 00010c38 dsll at,at,0x10
+ 1a4: 642189ac daddiu at,at,-30292
+ 1a8: 00010c38 dsll at,at,0x10
+ 1ac: 0023082d daddu at,at,v1
+ 1b0: ac22cdef sw v0,-12817\(at\)
+ 1b4: 3c01abce lui at,0xabce
+ 1b8: 6421ef01 daddiu at,at,-4351
+ 1bc: 00010c38 dsll at,at,0x10
+ 1c0: 64212345 daddiu at,at,9029
+ 1c4: 00010c38 dsll at,at,0x10
+ 1c8: 0023082d daddu at,at,v1
+ 1cc: ac226789 sw v0,26505\(at\)
+ 1d0: 3c018000 lui at,0x8000
+ 1d4: 00230821 addu at,at,v1
+ 1d8: ac220000 sw v0,0\(at\)
+ 1dc: 3c010000 lui at,0x0
+ 1e0: 6421ffff daddiu at,at,-1
+ 1e4: 00010c38 dsll at,at,0x10
+ 1e8: 64210000 daddiu at,at,0
+ 1ec: 00010c38 dsll at,at,0x10
+ 1f0: 0023082d daddu at,at,v1
+ 1f4: ac220000 sw v0,0\(at\)
+ 1f8: 3c010000 lui at,0x0
+ 1fc: 64210001 daddiu at,at,1
+ 200: 00010c38 dsll at,at,0x10
+ 204: 6421abce daddiu at,at,-21554
+ 208: 00010c38 dsll at,at,0x10
+ 20c: 0023082d daddu at,at,v1
+ 210: ac22ef01 sw v0,-4351\(at\)
+ 214: 3c010123 lui at,0x123
+ 218: 00230821 addu at,at,v1
+ 21c: ac224567 sw v0,17767\(at\)
+ 220: 3c028000 lui v0,0x8000
+ 224: 3c020123 lui v0,0x123
+ 228: 34424567 ori v0,v0,0x4567
+ 22c: 3c027fff lui v0,0x7fff
+ 230: 3442ffff ori v0,v0,0xffff
+ 234: 3c020123 lui v0,0x123
+ 238: 34424567 ori v0,v0,0x4567
+ \.\.\.
diff --git a/gas/testsuite/gas/mips/ldstla-n32.s b/gas/testsuite/gas/mips/ldstla-n32.s
new file mode 100644
index 0000000..1b5d863
--- /dev/null
+++ b/gas/testsuite/gas/mips/ldstla-n32.s
@@ -0,0 +1,35 @@
+ .text
+ ld $2, 0x0123456789abcdef($3)
+ ld $2, 0xabcdef0123456789($3)
+ ld $2, 0xffffffff80000000($3)
+ ld $2, 0xffffffff00000000($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, 0xabcdef01($3)
+ sd $2, 0x01234567($3)
+
+ lw $2, 0x0123456789abcdef($3)
+ lw $2, 0xabcdef0123456789($3)
+ lw $2, 0xffffffff80000000($3)
+ lw $2, 0xffffffff00000000($3)
+ lw $2, 0xabcdef01($3)
+ lw $2, 0x01234567($3)
+
+ sw $2, 0x0123456789abcdef($3)
+ sw $2, 0xabcdef0123456789($3)
+ sw $2, 0xffffffff80000000($3)
+ sw $2, 0xffffffff00000000($3)
+ sw $2, 0xabcdef01($3)
+ sw $2, 0x01234567($3)
+
+ dla $2, 0xffffffff80000000
+ dla $2, 0x01234567
+ la $2, 0x7fffffff
+ la $2, 0x01234567
+
+ .space 8
diff --git a/gas/testsuite/gas/mips/ldstla-n64-shared.d b/gas/testsuite/gas/mips/ldstla-n64-shared.d
new file mode 100644
index 0000000..2f3b7a7
--- /dev/null
+++ b/gas/testsuite/gas/mips/ldstla-n64-shared.d
@@ -0,0 +1,181 @@
+#objdump: -d
+#as: -KPIC -n64
+#name: MIPS ld-st-la constants (ABI n64, shared)
+#source: ldstla-n64.s
+
+.*: +file format elf64-.*mips
+
+Disassembly of section \.text:
+
+0000000000000000 <\.text>:
+ 0: 3c020123 lui v0,0x123
+ 4: 3c0189ac lui at,0x89ac
+ 8: 64424568 daddiu v0,v0,17768
+ c: 0023082d daddu at,at,v1
+ 10: 0002103c dsll32 v0,v0,0x0
+ 14: 0041102d daddu v0,v0,at
+ 18: dc42cdef ld v0,-12817\(v0\)
+ 1c: 3c02abce lui v0,0xabce
+ 20: 3c012345 lui at,0x2345
+ 24: 6442ef01 daddiu v0,v0,-4351
+ 28: 0023082d daddu at,at,v1
+ 2c: 0002103c dsll32 v0,v0,0x0
+ 30: 0041102d daddu v0,v0,at
+ 34: dc426789 ld v0,26505\(v0\)
+ 38: 3c028000 lui v0,0x8000
+ 3c: 0043102d daddu v0,v0,v1
+ 40: dc420000 ld v0,0\(v0\)
+ 44: 3c020000 lui v0,0x0
+ 48: 3c010000 lui at,0x0
+ 4c: 6442ffff daddiu v0,v0,-1
+ 50: 0023082d daddu at,at,v1
+ 54: 0002103c dsll32 v0,v0,0x0
+ 58: 0041102d daddu v0,v0,at
+ 5c: dc420000 ld v0,0\(v0\)
+ 60: 3c028000 lui v0,0x8000
+ 64: 0043102d daddu v0,v0,v1
+ 68: dc42ffff ld v0,-1\(v0\)
+ 6c: 3c020000 lui v0,0x0
+ 70: 3c01abce lui at,0xabce
+ 74: 64420001 daddiu v0,v0,1
+ 78: 0023082d daddu at,at,v1
+ 7c: 0002103c dsll32 v0,v0,0x0
+ 80: 0041102d daddu v0,v0,at
+ 84: dc42ef01 ld v0,-4351\(v0\)
+ 88: 3c020123 lui v0,0x123
+ 8c: 0043102d daddu v0,v0,v1
+ 90: dc424567 ld v0,17767\(v0\)
+ 94: 3c010123 lui at,0x123
+ 98: 64214568 daddiu at,at,17768
+ 9c: 00010c38 dsll at,at,0x10
+ a0: 642189ac daddiu at,at,-30292
+ a4: 00010c38 dsll at,at,0x10
+ a8: 0023082d daddu at,at,v1
+ ac: fc22cdef sd v0,-12817\(at\)
+ b0: 3c01abce lui at,0xabce
+ b4: 6421ef01 daddiu at,at,-4351
+ b8: 00010c38 dsll at,at,0x10
+ bc: 64212345 daddiu at,at,9029
+ c0: 00010c38 dsll at,at,0x10
+ c4: 0023082d daddu at,at,v1
+ c8: fc226789 sd v0,26505\(at\)
+ cc: 3c018000 lui at,0x8000
+ d0: 0023082d daddu at,at,v1
+ d4: fc220000 sd v0,0\(at\)
+ d8: 3c010000 lui at,0x0
+ dc: 6421ffff daddiu at,at,-1
+ e0: 00010c38 dsll at,at,0x10
+ e4: 64210000 daddiu at,at,0
+ e8: 00010c38 dsll at,at,0x10
+ ec: 0023082d daddu at,at,v1
+ f0: fc220000 sd v0,0\(at\)
+ f4: 3c018000 lui at,0x8000
+ f8: 0023082d daddu at,at,v1
+ fc: fc22ffff sd v0,-1\(at\)
+ 100: 3c010000 lui at,0x0
+ 104: 64210001 daddiu at,at,1
+ 108: 00010c38 dsll at,at,0x10
+ 10c: 6421abce daddiu at,at,-21554
+ 110: 00010c38 dsll at,at,0x10
+ 114: 0023082d daddu at,at,v1
+ 118: fc22ef01 sd v0,-4351\(at\)
+ 11c: 3c010123 lui at,0x123
+ 120: 0023082d daddu at,at,v1
+ 124: fc224567 sd v0,17767\(at\)
+ 128: 3c020123 lui v0,0x123
+ 12c: 3c0189ac lui at,0x89ac
+ 130: 64424568 daddiu v0,v0,17768
+ 134: 0023082d daddu at,at,v1
+ 138: 0002103c dsll32 v0,v0,0x0
+ 13c: 0041102d daddu v0,v0,at
+ 140: 8c42cdef lw v0,-12817\(v0\)
+ 144: 3c02abce lui v0,0xabce
+ 148: 3c012345 lui at,0x2345
+ 14c: 6442ef01 daddiu v0,v0,-4351
+ 150: 0023082d daddu at,at,v1
+ 154: 0002103c dsll32 v0,v0,0x0
+ 158: 0041102d daddu v0,v0,at
+ 15c: 8c426789 lw v0,26505\(v0\)
+ 160: 3c028000 lui v0,0x8000
+ 164: 0043102d daddu v0,v0,v1
+ 168: 8c420000 lw v0,0\(v0\)
+ 16c: 3c020000 lui v0,0x0
+ 170: 3c010000 lui at,0x0
+ 174: 6442ffff daddiu v0,v0,-1
+ 178: 0023082d daddu at,at,v1
+ 17c: 0002103c dsll32 v0,v0,0x0
+ 180: 0041102d daddu v0,v0,at
+ 184: 8c420000 lw v0,0\(v0\)
+ 188: 3c028000 lui v0,0x8000
+ 18c: 0043102d daddu v0,v0,v1
+ 190: 8c42ffff lw v0,-1\(v0\)
+ 194: 3c020000 lui v0,0x0
+ 198: 3c01abce lui at,0xabce
+ 19c: 64420001 daddiu v0,v0,1
+ 1a0: 0023082d daddu at,at,v1
+ 1a4: 0002103c dsll32 v0,v0,0x0
+ 1a8: 0041102d daddu v0,v0,at
+ 1ac: 8c42ef01 lw v0,-4351\(v0\)
+ 1b0: 3c020123 lui v0,0x123
+ 1b4: 0043102d daddu v0,v0,v1
+ 1b8: 8c424567 lw v0,17767\(v0\)
+ 1bc: 3c010123 lui at,0x123
+ 1c0: 64214568 daddiu at,at,17768
+ 1c4: 00010c38 dsll at,at,0x10
+ 1c8: 642189ac daddiu at,at,-30292
+ 1cc: 00010c38 dsll at,at,0x10
+ 1d0: 0023082d daddu at,at,v1
+ 1d4: ac22cdef sw v0,-12817\(at\)
+ 1d8: 3c01abce lui at,0xabce
+ 1dc: 6421ef01 daddiu at,at,-4351
+ 1e0: 00010c38 dsll at,at,0x10
+ 1e4: 64212345 daddiu at,at,9029
+ 1e8: 00010c38 dsll at,at,0x10
+ 1ec: 0023082d daddu at,at,v1
+ 1f0: ac226789 sw v0,26505\(at\)
+ 1f4: 3c018000 lui at,0x8000
+ 1f8: 0023082d daddu at,at,v1
+ 1fc: ac220000 sw v0,0\(at\)
+ 200: 3c010000 lui at,0x0
+ 204: 6421ffff daddiu at,at,-1
+ 208: 00010c38 dsll at,at,0x10
+ 20c: 64210000 daddiu at,at,0
+ 210: 00010c38 dsll at,at,0x10
+ 214: 0023082d daddu at,at,v1
+ 218: ac220000 sw v0,0\(at\)
+ 21c: 3c018000 lui at,0x8000
+ 220: 0023082d daddu at,at,v1
+ 224: ac22ffff sw v0,-1\(at\)
+ 228: 3c010000 lui at,0x0
+ 22c: 64210001 daddiu at,at,1
+ 230: 00010c38 dsll at,at,0x10
+ 234: 6421abce daddiu at,at,-21554
+ 238: 00010c38 dsll at,at,0x10
+ 23c: 0023082d daddu at,at,v1
+ 240: ac22ef01 sw v0,-4351\(at\)
+ 244: 3c010123 lui at,0x123
+ 248: 0023082d daddu at,at,v1
+ 24c: ac224567 sw v0,17767\(at\)
+ 250: 3c020123 lui v0,0x123
+ 254: 34424567 ori v0,v0,0x4567
+ 258: 00021438 dsll v0,v0,0x10
+ 25c: 344289ab ori v0,v0,0x89ab
+ 260: 00021438 dsll v0,v0,0x10
+ 264: 3442cdef ori v0,v0,0xcdef
+ 268: 3c02abcd lui v0,0xabcd
+ 26c: 3442ef01 ori v0,v0,0xef01
+ 270: 00021438 dsll v0,v0,0x10
+ 274: 34422345 ori v0,v0,0x2345
+ 278: 00021438 dsll v0,v0,0x10
+ 27c: 34426789 ori v0,v0,0x6789
+ 280: 3c028000 lui v0,0x8000
+ 284: 2402ffff li v0,-1
+ 288: 0002103c dsll32 v0,v0,0x0
+ 28c: 3402abcd li v0,0xabcd
+ 290: 00021438 dsll v0,v0,0x10
+ 294: 3442ef01 ori v0,v0,0xef01
+ 298: 3c027fff lui v0,0x7fff
+ 29c: 3442ffff ori v0,v0,0xffff
+ 2a0: 3c020123 lui v0,0x123
+ 2a4: 34424567 ori v0,v0,0x4567
+ \.\.\.
diff --git a/gas/testsuite/gas/mips/ldstla-n64.d b/gas/testsuite/gas/mips/ldstla-n64.d
new file mode 100644
index 0000000..ae465d5
--- /dev/null
+++ b/gas/testsuite/gas/mips/ldstla-n64.d
@@ -0,0 +1,181 @@
+#objdump: -d
+#as: -n64
+#name: MIPS ld-st-la constants (ABI n64)
+#source: ldstla-n64.s
+
+.*: +file format elf64-.*mips
+
+Disassembly of section \.text:
+
+0000000000000000 <\.text>:
+ 0: 3c020123 lui v0,0x123
+ 4: 3c0189ac lui at,0x89ac
+ 8: 64424568 daddiu v0,v0,17768
+ c: 0023082d daddu at,at,v1
+ 10: 0002103c dsll32 v0,v0,0x0
+ 14: 0041102d daddu v0,v0,at
+ 18: dc42cdef ld v0,-12817\(v0\)
+ 1c: 3c02abce lui v0,0xabce
+ 20: 3c012345 lui at,0x2345
+ 24: 6442ef01 daddiu v0,v0,-4351
+ 28: 0023082d daddu at,at,v1
+ 2c: 0002103c dsll32 v0,v0,0x0
+ 30: 0041102d daddu v0,v0,at
+ 34: dc426789 ld v0,26505\(v0\)
+ 38: 3c028000 lui v0,0x8000
+ 3c: 0043102d daddu v0,v0,v1
+ 40: dc420000 ld v0,0\(v0\)
+ 44: 3c020000 lui v0,0x0
+ 48: 3c010000 lui at,0x0
+ 4c: 6442ffff daddiu v0,v0,-1
+ 50: 0023082d daddu at,at,v1
+ 54: 0002103c dsll32 v0,v0,0x0
+ 58: 0041102d daddu v0,v0,at
+ 5c: dc420000 ld v0,0\(v0\)
+ 60: 3c028000 lui v0,0x8000
+ 64: 0043102d daddu v0,v0,v1
+ 68: dc42ffff ld v0,-1\(v0\)
+ 6c: 3c020000 lui v0,0x0
+ 70: 3c01abce lui at,0xabce
+ 74: 64420001 daddiu v0,v0,1
+ 78: 0023082d daddu at,at,v1
+ 7c: 0002103c dsll32 v0,v0,0x0
+ 80: 0041102d daddu v0,v0,at
+ 84: dc42ef01 ld v0,-4351\(v0\)
+ 88: 3c020123 lui v0,0x123
+ 8c: 0043102d daddu v0,v0,v1
+ 90: dc424567 ld v0,17767\(v0\)
+ 94: 3c010123 lui at,0x123
+ 98: 64214568 daddiu at,at,17768
+ 9c: 00010c38 dsll at,at,0x10
+ a0: 642189ac daddiu at,at,-30292
+ a4: 00010c38 dsll at,at,0x10
+ a8: 0023082d daddu at,at,v1
+ ac: fc22cdef sd v0,-12817\(at\)
+ b0: 3c01abce lui at,0xabce
+ b4: 6421ef01 daddiu at,at,-4351
+ b8: 00010c38 dsll at,at,0x10
+ bc: 64212345 daddiu at,at,9029
+ c0: 00010c38 dsll at,at,0x10
+ c4: 0023082d daddu at,at,v1
+ c8: fc226789 sd v0,26505\(at\)
+ cc: 3c018000 lui at,0x8000
+ d0: 0023082d daddu at,at,v1
+ d4: fc220000 sd v0,0\(at\)
+ d8: 3c010000 lui at,0x0
+ dc: 6421ffff daddiu at,at,-1
+ e0: 00010c38 dsll at,at,0x10
+ e4: 64210000 daddiu at,at,0
+ e8: 00010c38 dsll at,at,0x10
+ ec: 0023082d daddu at,at,v1
+ f0: fc220000 sd v0,0\(at\)
+ f4: 3c018000 lui at,0x8000
+ f8: 0023082d daddu at,at,v1
+ fc: fc22ffff sd v0,-1\(at\)
+ 100: 3c010000 lui at,0x0
+ 104: 64210001 daddiu at,at,1
+ 108: 00010c38 dsll at,at,0x10
+ 10c: 6421abce daddiu at,at,-21554
+ 110: 00010c38 dsll at,at,0x10
+ 114: 0023082d daddu at,at,v1
+ 118: fc22ef01 sd v0,-4351\(at\)
+ 11c: 3c010123 lui at,0x123
+ 120: 0023082d daddu at,at,v1
+ 124: fc224567 sd v0,17767\(at\)
+ 128: 3c020123 lui v0,0x123
+ 12c: 3c0189ac lui at,0x89ac
+ 130: 64424568 daddiu v0,v0,17768
+ 134: 0023082d daddu at,at,v1
+ 138: 0002103c dsll32 v0,v0,0x0
+ 13c: 0041102d daddu v0,v0,at
+ 140: 8c42cdef lw v0,-12817\(v0\)
+ 144: 3c02abce lui v0,0xabce
+ 148: 3c012345 lui at,0x2345
+ 14c: 6442ef01 daddiu v0,v0,-4351
+ 150: 0023082d daddu at,at,v1
+ 154: 0002103c dsll32 v0,v0,0x0
+ 158: 0041102d daddu v0,v0,at
+ 15c: 8c426789 lw v0,26505\(v0\)
+ 160: 3c028000 lui v0,0x8000
+ 164: 0043102d daddu v0,v0,v1
+ 168: 8c420000 lw v0,0\(v0\)
+ 16c: 3c020000 lui v0,0x0
+ 170: 3c010000 lui at,0x0
+ 174: 6442ffff daddiu v0,v0,-1
+ 178: 0023082d daddu at,at,v1
+ 17c: 0002103c dsll32 v0,v0,0x0
+ 180: 0041102d daddu v0,v0,at
+ 184: 8c420000 lw v0,0\(v0\)
+ 188: 3c028000 lui v0,0x8000
+ 18c: 0043102d daddu v0,v0,v1
+ 190: 8c42ffff lw v0,-1\(v0\)
+ 194: 3c020000 lui v0,0x0
+ 198: 3c01abce lui at,0xabce
+ 19c: 64420001 daddiu v0,v0,1
+ 1a0: 0023082d daddu at,at,v1
+ 1a4: 0002103c dsll32 v0,v0,0x0
+ 1a8: 0041102d daddu v0,v0,at
+ 1ac: 8c42ef01 lw v0,-4351\(v0\)
+ 1b0: 3c020123 lui v0,0x123
+ 1b4: 0043102d daddu v0,v0,v1
+ 1b8: 8c424567 lw v0,17767\(v0\)
+ 1bc: 3c010123 lui at,0x123
+ 1c0: 64214568 daddiu at,at,17768
+ 1c4: 00010c38 dsll at,at,0x10
+ 1c8: 642189ac daddiu at,at,-30292
+ 1cc: 00010c38 dsll at,at,0x10
+ 1d0: 0023082d daddu at,at,v1
+ 1d4: ac22cdef sw v0,-12817\(at\)
+ 1d8: 3c01abce lui at,0xabce
+ 1dc: 6421ef01 daddiu at,at,-4351
+ 1e0: 00010c38 dsll at,at,0x10
+ 1e4: 64212345 daddiu at,at,9029
+ 1e8: 00010c38 dsll at,at,0x10
+ 1ec: 0023082d daddu at,at,v1
+ 1f0: ac226789 sw v0,26505\(at\)
+ 1f4: 3c018000 lui at,0x8000
+ 1f8: 0023082d daddu at,at,v1
+ 1fc: ac220000 sw v0,0\(at\)
+ 200: 3c010000 lui at,0x0
+ 204: 6421ffff daddiu at,at,-1
+ 208: 00010c38 dsll at,at,0x10
+ 20c: 64210000 daddiu at,at,0
+ 210: 00010c38 dsll at,at,0x10
+ 214: 0023082d daddu at,at,v1
+ 218: ac220000 sw v0,0\(at\)
+ 21c: 3c018000 lui at,0x8000
+ 220: 0023082d daddu at,at,v1
+ 224: ac22ffff sw v0,-1\(at\)
+ 228: 3c010000 lui at,0x0
+ 22c: 64210001 daddiu at,at,1
+ 230: 00010c38 dsll at,at,0x10
+ 234: 6421abce daddiu at,at,-21554
+ 238: 00010c38 dsll at,at,0x10
+ 23c: 0023082d daddu at,at,v1
+ 240: ac22ef01 sw v0,-4351\(at\)
+ 244: 3c010123 lui at,0x123
+ 248: 0023082d daddu at,at,v1
+ 24c: ac224567 sw v0,17767\(at\)
+ 250: 3c020123 lui v0,0x123
+ 254: 34424567 ori v0,v0,0x4567
+ 258: 00021438 dsll v0,v0,0x10
+ 25c: 344289ab ori v0,v0,0x89ab
+ 260: 00021438 dsll v0,v0,0x10
+ 264: 3442cdef ori v0,v0,0xcdef
+ 268: 3c02abcd lui v0,0xabcd
+ 26c: 3442ef01 ori v0,v0,0xef01
+ 270: 00021438 dsll v0,v0,0x10
+ 274: 34422345 ori v0,v0,0x2345
+ 278: 00021438 dsll v0,v0,0x10
+ 27c: 34426789 ori v0,v0,0x6789
+ 280: 3c028000 lui v0,0x8000
+ 284: 2402ffff li v0,-1
+ 288: 0002103c dsll32 v0,v0,0x0
+ 28c: 3402abcd li v0,0xabcd
+ 290: 00021438 dsll v0,v0,0x10
+ 294: 3442ef01 ori v0,v0,0xef01
+ 298: 3c027fff lui v0,0x7fff
+ 29c: 3442ffff ori v0,v0,0xffff
+ 2a0: 3c020123 lui v0,0x123
+ 2a4: 34424567 ori v0,v0,0x4567
+ \.\.\.
diff --git a/gas/testsuite/gas/mips/ldstla-n64.s b/gas/testsuite/gas/mips/ldstla-n64.s
new file mode 100644
index 0000000..4d229a6
--- /dev/null
+++ b/gas/testsuite/gas/mips/ldstla-n64.s
@@ -0,0 +1,42 @@
+ .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, 0x0123456789abcdef($3)
+ lw $2, 0xabcdef0123456789($3)
+ lw $2, 0xffffffff80000000($3)
+ lw $2, 0xffffffff00000000($3)
+ lw $2, 0xffffffff7fffffff($3)
+ lw $2, 0xabcdef01($3)
+ lw $2, 0x01234567($3)
+
+ sw $2, 0x0123456789abcdef($3)
+ sw $2, 0xabcdef0123456789($3)
+ sw $2, 0xffffffff80000000($3)
+ sw $2, 0xffffffff00000000($3)
+ sw $2, 0xffffffff7fffffff($3)
+ sw $2, 0xabcdef01($3)
+ sw $2, 0x01234567($3)
+
+ dla $2, 0x0123456789abcdef
+ dla $2, 0xabcdef0123456789
+ dla $2, 0xffffffff80000000
+ dla $2, 0xffffffff00000000
+ dla $2, 0xabcdef01
+ dla $2, 0x7fffffff
+ dla $2, 0x01234567
+
+ .space 8
diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp
index 12aeaeb..865b580 100644
--- a/gas/testsuite/gas/mips/mips.exp
+++ b/gas/testsuite/gas/mips/mips.exp
@@ -714,4 +714,13 @@ if { [istarget mips*-*-*] } then {
run_dump_test "hwr-names-numeric"
run_dump_test "hwr-names-mips32r2"
run_dump_test "hwr-names-mips64r2"
+
+ run_dump_test "ldstla-32"
+ run_dump_test "ldstla-32-shared"
+ if $has_newabi {
+ run_dump_test "ldstla-n32"
+ run_dump_test "ldstla-n32-shared"
+ run_dump_test "ldstla-n64"
+ run_dump_test "ldstla-n64-shared"
+ }
}