* config/tc-mips.c (macro_build_ldst_constoffset): Fix sign extension
authorThiemo Seufer <ths@networkno.de>
Wed, 1 Oct 2003 02:07:48 +0000 (02:07 +0000)
committerThiemo Seufer <ths@networkno.de>
Wed, 1 Oct 2003 02:07:48 +0000 (02:07 +0000)
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.

13 files changed:
gas/ChangeLog
gas/config/tc-mips.c
gas/testsuite/ChangeLog
gas/testsuite/gas/mips/ldstla-32-shared.d [new file with mode: 0644]
gas/testsuite/gas/mips/ldstla-32.d [new file with mode: 0644]
gas/testsuite/gas/mips/ldstla-32.s [new file with mode: 0644]
gas/testsuite/gas/mips/ldstla-n32-shared.d [new file with mode: 0644]
gas/testsuite/gas/mips/ldstla-n32.d [new file with mode: 0644]
gas/testsuite/gas/mips/ldstla-n32.s [new file with mode: 0644]
gas/testsuite/gas/mips/ldstla-n64-shared.d [new file with mode: 0644]
gas/testsuite/gas/mips/ldstla-n64.d [new file with mode: 0644]
gas/testsuite/gas/mips/ldstla-n64.s [new file with mode: 0644]
gas/testsuite/gas/mips/mips.exp

index 3c05999..761b259 100644 (file)
@@ -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
index a1f2d38..18cb24b 100644 (file)
@@ -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)
index 677a75d..82caa44 100644 (file)
@@ -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 (file)
index 0000000..bcb6bd6
--- /dev/null
@@ -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 (file)
index 0000000..989cd7e
--- /dev/null
@@ -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 (file)
index 0000000..0f36327
--- /dev/null
@@ -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 (file)
index 0000000..0d4655b
--- /dev/null
@@ -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 (file)
index 0000000..9245da4
--- /dev/null
@@ -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 (file)
index 0000000..1b5d863
--- /dev/null
@@ -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 (file)
index 0000000..2f3b7a7
--- /dev/null
@@ -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 (file)
index 0000000..ae465d5
--- /dev/null
@@ -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 (file)
index 0000000..4d229a6
--- /dev/null
@@ -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
index 12aeaeb..865b580 100644 (file)
@@ -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"
+    }
 }