2011-04-20 Catherine Moore <clm@codesourcery.com>
authorCatherine Moore <clm@redhat.com>
Wed, 20 Apr 2011 16:44:28 +0000 (16:44 +0000)
committerCatherine Moore <clm@redhat.com>
Wed, 20 Apr 2011 16:44:28 +0000 (16:44 +0000)
            David Ung <davidu@mips.com>

* gas/mips/24k-branch-delay-1.d: New.
* gas/mips/24k-branch-delay-1.s: New.
* gas/mips/24k-triple-stores-1.d: New.
* gas/mips/24k-triple-stores-1.s: New.
* gas/mips/24k-triple-stores-2.d: New.
* gas/mips/24k-triple-stores-2.s: New.
* gas/mips/24k-triple-stores-3.d: New.
* gas/mips/24k-triple-stores-3.s: New.
* gas/mips/24k-triple-stores-4.s: New.
* gas/mips/24k-triple-stores-4.d: New.
* gas/mips/24k-triple-stores-5.d: New.
* gas/mips/24k-triple-stores-5.s: New.
* gas/mips/24k-triple-stores-6.d: New.
* gas/mips/24k-triple-stores-6.s: New.
* gas/mips/24k-triple-stores-7.d: New.
* gas/mips/24k-triple-stores-7.s: New.
* gas/mips/24k-triple-stores-8.d: New.
* gas/mips/24k-triple-stores-8.s: New.
* gas/mips/24k-triple-stores-9.d: New.
* gas/mips/24k-triple-stores-9.s: New.
* gas/mips/24k-triple-stores-10.d: New.
* gas/mips/24k-triple-stores-10.s: New.
* gas/mips/24k-triple-stores-11.d: New.
* gas/mips/24k-triple-stores-11.s: New.
* gas/mips/mips.exp: Invoke new tests.

26 files changed:
gas/testsuite/ChangeLog
gas/testsuite/gas/mips/24k-branch-delay-1.d [new file with mode: 0644]
gas/testsuite/gas/mips/24k-branch-delay-1.s [new file with mode: 0644]
gas/testsuite/gas/mips/24k-triple-stores-1.d [new file with mode: 0644]
gas/testsuite/gas/mips/24k-triple-stores-1.s [new file with mode: 0644]
gas/testsuite/gas/mips/24k-triple-stores-10.d [new file with mode: 0644]
gas/testsuite/gas/mips/24k-triple-stores-10.s [new file with mode: 0644]
gas/testsuite/gas/mips/24k-triple-stores-11.d [new file with mode: 0644]
gas/testsuite/gas/mips/24k-triple-stores-11.s [new file with mode: 0644]
gas/testsuite/gas/mips/24k-triple-stores-2.d [new file with mode: 0644]
gas/testsuite/gas/mips/24k-triple-stores-2.s [new file with mode: 0644]
gas/testsuite/gas/mips/24k-triple-stores-3.d [new file with mode: 0644]
gas/testsuite/gas/mips/24k-triple-stores-3.s [new file with mode: 0644]
gas/testsuite/gas/mips/24k-triple-stores-4.d [new file with mode: 0644]
gas/testsuite/gas/mips/24k-triple-stores-4.s [new file with mode: 0644]
gas/testsuite/gas/mips/24k-triple-stores-5.d [new file with mode: 0644]
gas/testsuite/gas/mips/24k-triple-stores-5.s [new file with mode: 0644]
gas/testsuite/gas/mips/24k-triple-stores-6.d [new file with mode: 0644]
gas/testsuite/gas/mips/24k-triple-stores-6.s [new file with mode: 0644]
gas/testsuite/gas/mips/24k-triple-stores-7.d [new file with mode: 0644]
gas/testsuite/gas/mips/24k-triple-stores-7.s [new file with mode: 0644]
gas/testsuite/gas/mips/24k-triple-stores-8.d [new file with mode: 0644]
gas/testsuite/gas/mips/24k-triple-stores-8.s [new file with mode: 0644]
gas/testsuite/gas/mips/24k-triple-stores-9.d [new file with mode: 0644]
gas/testsuite/gas/mips/24k-triple-stores-9.s [new file with mode: 0644]
gas/testsuite/gas/mips/mips.exp

index e1bb02e..6e93dfc 100644 (file)
@@ -1,3 +1,32 @@
+2011-04-20  Catherine Moore  <clm@codesourcery.com>
+            David Ung <davidu@mips.com>
+
+       * gas/mips/24k-branch-delay-1.d: New.
+       * gas/mips/24k-branch-delay-1.s: New.
+       * gas/mips/24k-triple-stores-1.d: New.
+       * gas/mips/24k-triple-stores-1.s: New.
+       * gas/mips/24k-triple-stores-2.d: New.
+       * gas/mips/24k-triple-stores-2.s: New.
+       * gas/mips/24k-triple-stores-3.d: New.
+       * gas/mips/24k-triple-stores-3.s: New.
+       * gas/mips/24k-triple-stores-4.s: New.
+       * gas/mips/24k-triple-stores-4.d: New.
+       * gas/mips/24k-triple-stores-5.d: New.
+       * gas/mips/24k-triple-stores-5.s: New.
+       * gas/mips/24k-triple-stores-6.d: New.
+       * gas/mips/24k-triple-stores-6.s: New.
+       * gas/mips/24k-triple-stores-7.d: New.
+       * gas/mips/24k-triple-stores-7.s: New.
+       * gas/mips/24k-triple-stores-8.d: New.
+       * gas/mips/24k-triple-stores-8.s: New.
+       * gas/mips/24k-triple-stores-9.d: New.
+       * gas/mips/24k-triple-stores-9.s: New.
+       * gas/mips/24k-triple-stores-10.d: New.
+       * gas/mips/24k-triple-stores-10.s: New.
+       * gas/mips/24k-triple-stores-11.d: New.
+       * gas/mips/24k-triple-stores-11.s: New.
+       * gas/mips/mips.exp: Invoke new tests.
+
 2011-04-19  Nick Clifton  <nickc@redhat.com>
 
        * gas/arm/mrs-msr-thumb-v7e-m.s: Restore name of basepri_max
diff --git a/gas/testsuite/gas/mips/24k-branch-delay-1.d b/gas/testsuite/gas/mips/24k-branch-delay-1.d
new file mode 100644 (file)
index 0000000..d6c86b3
--- /dev/null
@@ -0,0 +1,18 @@
+#objdump: -dr 
+#as: -mfix-24k
+#name: 24K: Delay slot filling
+
+.*: +file format .*mips.*
+
+Disassembly of section .text:
+00000000 <func>:
+   0:  24620005        addiu   v0,v1,5
+   4:  8c440000        lw      a0,0\(v0\)
+   8:  ac430000        sw      v1,0\(v0\)
+   c:  ac430008        sw      v1,8\(v0\)
+  10:  00000000        nop
+  14:  10600002        beqz    v1,20 <func\+0x20>
+  18:  ac430010        sw      v1,16\(v0\)
+  1c:  8c430008        lw      v1,8\(v0\)
+  20:  8c450010        lw      a1,16\(v0\)
+       ...
diff --git a/gas/testsuite/gas/mips/24k-branch-delay-1.s b/gas/testsuite/gas/mips/24k-branch-delay-1.s
new file mode 100644 (file)
index 0000000..bae2be0
--- /dev/null
@@ -0,0 +1,14 @@
+# Test that we don't move store into delay slots
+
+       .text
+func:
+       addiu   $2,$3,5        
+       lw      $4,0($2)
+       sw      $3,0($2)
+       sw      $3,8($2)
+       sw      $3,16($2)
+       beq     $3,0,.L1
+       lw      $3,8($2)
+.L1:
+       lw      $5,16($2)
+       .p2align        4
diff --git a/gas/testsuite/gas/mips/24k-triple-stores-1.d b/gas/testsuite/gas/mips/24k-triple-stores-1.d
new file mode 100644 (file)
index 0000000..d97c688
--- /dev/null
@@ -0,0 +1,101 @@
+#objdump: -dr 
+#as: -mfix-24k
+#name: 24K: Triple Store (Opcode Check)
+
+.*: +file format .*mips.*
+
+Disassembly of section .text:
+00000000 <.text>:
+   0:  a3a20000        sb      v0,0\(sp\)
+   4:  00000000        nop
+   8:  a3a30008        sb      v1,8\(sp\)
+   c:  a3a40010        sb      a0,16\(sp\)
+  10:  00000000        nop
+  14:  a3a50018        sb      a1,24\(sp\)
+  18:  a3a60020        sb      a2,32\(sp\)
+  1c:  a7a20000        sh      v0,0\(sp\)
+  20:  a7a30008        sh      v1,8\(sp\)
+  24:  00000000        nop
+  28:  a7a40010        sh      a0,16\(sp\)
+  2c:  a7a50018        sh      a1,24\(sp\)
+  30:  00000000        nop
+  34:  a7a60020        sh      a2,32\(sp\)
+  38:  afa20000        sw      v0,0\(sp\)
+  3c:  afa30008        sw      v1,8\(sp\)
+  40:  00000000        nop
+  44:  afa40010        sw      a0,16\(sp\)
+  48:  afa50018        sw      a1,24\(sp\)
+  4c:  00000000        nop
+  50:  afa60020        sw      a2,32\(sp\)
+  54:  bba20000        swr     v0,0\(sp\)
+  58:  bba30008        swr     v1,8\(sp\)
+  5c:  00000000        nop
+  60:  bba40010        swr     a0,16\(sp\)
+  64:  bba50018        swr     a1,24\(sp\)
+  68:  00000000        nop
+  6c:  bba60020        swr     a2,32\(sp\)
+  70:  aba20000        swl     v0,0\(sp\)
+  74:  aba30008        swl     v1,8\(sp\)
+  78:  00000000        nop
+  7c:  aba40010        swl     a0,16\(sp\)
+  80:  aba50018        swl     a1,24\(sp\)
+  84:  00000000        nop
+  88:  aba60020        swl     a2,32\(sp\)
+  8c:  e3a20000        sc      v0,0\(sp\)
+  90:  e3a30008        sc      v1,8\(sp\)
+  94:  00000000        nop
+  98:  e3a40010        sc      a0,16\(sp\)
+  9c:  e3a50018        sc      a1,24\(sp\)
+  a0:  00000000        nop
+  a4:  e3a60020        sc      a2,32\(sp\)
+  a8:  e7a20000        swc1    \$f2,0\(sp\)
+  ac:  e7a30008        swc1    \$f3,8\(sp\)
+  b0:  00000000        nop
+  b4:  e7a40010        swc1    \$f4,16\(sp\)
+  b8:  e7a50018        swc1    \$f5,24\(sp\)
+  bc:  00000000        nop
+  c0:  e7a60020        swc1    \$f6,32\(sp\)
+  c4:  eba20000        swc2    \$2,0\(sp\)
+  c8:  eba30008        swc2    \$3,8\(sp\)
+  cc:  00000000        nop
+  d0:  eba40010        swc2    \$4,16\(sp\)
+  d4:  eba50018        swc2    \$5,24\(sp\)
+  d8:  00000000        nop
+  dc:  eba60020        swc2    \$6,32\(sp\)
+  e0:  f7a20000        sdc1    \$f2,0\(sp\)
+  e4:  f7a30008        sdc1    \$f3,8\(sp\)
+  e8:  00000000        nop
+  ec:  f7a40010        sdc1    \$f4,16\(sp\)
+  f0:  f7a50018        sdc1    \$f5,24\(sp\)
+  f4:  00000000        nop
+  f8:  f7a60020        sdc1    \$f6,32\(sp\)
+  fc:  fba20000        sdc2    \$2,0\(sp\)
+ 100:  fba30008        sdc2    \$3,8\(sp\)
+ 104:  00000000        nop
+ 108:  fba40010        sdc2    \$4,16\(sp\)
+ 10c:  fba50018        sdc2    \$5,24\(sp\)
+ 110:  00000000        nop
+ 114:  fba60020        sdc2    \$6,32\(sp\)
+ 118:  4d090008        swxc1   \$f0,t1\(t0\)
+ 11c:  00000000        nop
+ 120:  4d0a0808        swxc1   \$f1,t2\(t0\)
+ 124:  4d0b1008        swxc1   \$f2,t3\(t0\)
+ 128:  00000000        nop
+ 12c:  4d0c1808        swxc1   \$f3,t4\(t0\)
+ 130:  4d0d2008        swxc1   \$f4,t5\(t0\)
+ 134:  00000000        nop
+ 138:  4d090009        sdxc1   \$f0,t1\(t0\)
+ 13c:  4d0a1009        sdxc1   \$f2,t2\(t0\)
+ 140:  00000000        nop
+ 144:  4d0b2009        sdxc1   \$f4,t3\(t0\)
+ 148:  4d0c3009        sdxc1   \$f6,t4\(t0\)
+ 14c:  00000000        nop
+ 150:  4d0d4009        sdxc1   \$f8,t5\(t0\)
+ 154:  4d09000d        suxc1   \$f0,t1\(t0\)
+ 158:  00000000        nop
+ 15c:  4d0a100d        suxc1   \$f2,t2\(t0\)
+ 160:  4d0b200d        suxc1   \$f4,t3\(t0\)
+ 164:  00000000        nop
+ 168:  4d0c300d        suxc1   \$f6,t4\(t0\)
+ 16c:  4d0d400d        suxc1   \$f8,t5\(t0\)
+       ...
diff --git a/gas/testsuite/gas/mips/24k-triple-stores-1.s b/gas/testsuite/gas/mips/24k-triple-stores-1.s
new file mode 100644 (file)
index 0000000..8e26544
--- /dev/null
@@ -0,0 +1,85 @@
+# integer stores
+
+       sb      $2,0($sp)
+       sb      $3,8($sp)
+       sb      $4,16($sp)
+       sb      $5,24($sp)
+       sb      $6,32($sp)
+
+       sh      $2,0($sp)
+       sh      $3,8($sp)
+       sh      $4,16($sp)
+       sh      $5,24($sp)
+       sh      $6,32($sp)
+
+       sw      $2,0($sp)
+       sw      $3,8($sp)
+       sw      $4,16($sp)
+       sw      $5,24($sp)
+       sw      $6,32($sp)
+
+       swr     $2,0($sp)
+       swr     $3,8($sp)
+       swr     $4,16($sp)
+       swr     $5,24($sp)
+       swr     $6,32($sp)
+
+       swl     $2,0($sp)
+       swl     $3,8($sp)
+       swl     $4,16($sp)
+       swl     $5,24($sp)
+       swl     $6,32($sp)
+
+       sc      $2,0($sp)
+       sc      $3,8($sp)
+       sc      $4,16($sp)
+       sc      $5,24($sp)
+       sc      $6,32($sp)
+
+# floating point stores
+
+       swc1    $2,0($sp)
+       swc1    $3,8($sp)
+       swc1    $4,16($sp)
+       swc1    $5,24($sp)
+       swc1    $6,32($sp)
+
+       swc2    $2,0($sp)
+       swc2    $3,8($sp)
+       swc2    $4,16($sp)
+       swc2    $5,24($sp)
+       swc2    $6,32($sp)
+
+       sdc1    $2,0($sp)
+       sdc1    $3,8($sp)
+       sdc1    $4,16($sp)
+       sdc1    $5,24($sp)
+       sdc1    $6,32($sp)
+
+       sdc2    $2,0($sp)
+       sdc2    $3,8($sp)
+       sdc2    $4,16($sp)
+       sdc2    $5,24($sp)
+       sdc2    $6,32($sp)
+
+       swxc1   $f0,$9($8)
+       swxc1   $f1,$10($8)
+       swxc1   $f2,$11($8)
+       swxc1   $f3,$12($8)
+       swxc1   $f4,$13($8)
+
+       sdxc1   $f0,$9($8)
+       sdxc1   $f2,$10($8)
+       sdxc1   $f4,$11($8)
+       sdxc1   $f6,$12($8)
+       sdxc1   $f8,$13($8)
+
+       suxc1   $f0,$9($8)
+       suxc1   $f2,$10($8)
+       suxc1   $f4,$11($8)
+       suxc1   $f6,$12($8)
+       suxc1   $f8,$13($8)
+
+# Force at least 8 (non-delay-slot) zero bytes,to make 'objdump' print ...
+       .align  2
+       .space  8
diff --git a/gas/testsuite/gas/mips/24k-triple-stores-10.d b/gas/testsuite/gas/mips/24k-triple-stores-10.d
new file mode 100644 (file)
index 0000000..a17c355
--- /dev/null
@@ -0,0 +1,12 @@
+#objdump: -dr
+#as: -mfix-24k
+#name: 24K: Triple Store (Intervening data #2)
+
+.*: +file format .*mips.*
+
+Disassembly of section .text:
+00000000 <.text>:
+   0:  a1020000        sb      v0,0\(t0\)
+   4:  00000000        nop
+   8:  a1030008        sb      v1,8\(t0\)
+   c:  a1040010        sb      a0,16\(t0\)
diff --git a/gas/testsuite/gas/mips/24k-triple-stores-10.s b/gas/testsuite/gas/mips/24k-triple-stores-10.s
new file mode 100644 (file)
index 0000000..43809d6
--- /dev/null
@@ -0,0 +1,8 @@
+       .text
+       sb $2,0($8)
+       sb $3,8($8)
+       .data
+       .word 1
+       .text
+       sb $4,16($8)
+       .data
diff --git a/gas/testsuite/gas/mips/24k-triple-stores-11.d b/gas/testsuite/gas/mips/24k-triple-stores-11.d
new file mode 100644 (file)
index 0000000..cd2d327
--- /dev/null
@@ -0,0 +1,17 @@
+#objdump: -d
+#as: -mfix-24k
+#name: 24K: Triple Store (gprel relocs)
+
+.*: +file format .*mips.*
+
+Disassembly of section .text:
+00000000 <.text>:
+   0:  00842020        add     a0,a0,a0
+   4:  00842020        add     a0,a0,a0
+   8:  00842020        add     a0,a0,a0
+   c:  00842020        add     a0,a0,a0
+  10:  af820000        sw      v0,0\(gp\)
+  14:  af830000        sw      v1,0\(gp\)
+  18:  00000000        nop
+  1c:  af840000        sw      a0,0\(gp\)
+
diff --git a/gas/testsuite/gas/mips/24k-triple-stores-11.s b/gas/testsuite/gas/mips/24k-triple-stores-11.s
new file mode 100644 (file)
index 0000000..05aeb94
--- /dev/null
@@ -0,0 +1,8 @@
+       .text
+       add   $4,$4,$4
+       add   $4,$4,$4
+       add   $4,$4,$4
+       add   $4,$4,$4
+       sw    $2,%gp_rel(sym1)($28)
+       sw    $3,%gp_rel(sym2)($28)
+       sw    $4,%gp_rel(sym3)($28)
diff --git a/gas/testsuite/gas/mips/24k-triple-stores-2.d b/gas/testsuite/gas/mips/24k-triple-stores-2.d
new file mode 100644 (file)
index 0000000..1ab9217
--- /dev/null
@@ -0,0 +1,41 @@
+#objdump: -dr
+#as: -mfix-24k
+#name: 24K: Triple Store (Range Check)
+
+.*: +file format .*mips.*
+
+Disassembly of section .text:
+00000000 <.text>:
+   0:  a3a20000        sb      v0,0\(sp\)
+   4:  00000000        nop
+   8:  a3a3000a        sb      v1,10\(sp\)
+   c:  a3a4001f        sb      a0,31\(sp\)
+  10:  0000000d        break
+  14:  a7a20000        sh      v0,0\(sp\)
+  18:  a7a3fff0        sh      v1,-16\(sp\)
+  1c:  a7a4ffe0        sh      a0,-32\(sp\)
+  20:  0000000d        break
+  24:  afa20000        sw      v0,0\(sp\)
+  28:  afa3fff8        sw      v1,-8\(sp\)
+  2c:  00000000        nop
+  30:  afa40008        sw      a0,8\(sp\)
+  34:  0000000d        break
+  38:  bba20000        swr     v0,0\(sp\)
+  3c:  bba3fff0        swr     v1,-16\(sp\)
+  40:  bba40010        swr     a0,16\(sp\)
+  44:  0000000d        break
+  48:  aba20000        swl     v0,0\(sp\)
+  4c:  aba30008        swl     v1,8\(sp\)
+  50:  00000000        nop
+  54:  aba40010        swl     a0,16\(sp\)
+  58:  aba50018        swl     a1,24\(sp\)
+  5c:  00000000        nop
+  60:  aba60000        swl     a2,0\(sp\)
+  64:  0000000d        break
+  68:  e3a20020        sc      v0,32\(sp\)
+  6c:  e3a30008        sc      v1,8\(sp\)
+  70:  e3a4fff8        sc      a0,-8\(sp\)
+  74:  00000000        nop
+  78:  e3a50000        sc      a1,0\(sp\)
+  7c:  e3a60020        sc      a2,32\(sp\)
+       \.\.\.
diff --git a/gas/testsuite/gas/mips/24k-triple-stores-2.s b/gas/testsuite/gas/mips/24k-triple-stores-2.s
new file mode 100644 (file)
index 0000000..2984d1f
--- /dev/null
@@ -0,0 +1,38 @@
+# Check for range
+
+       sb      $2,0($sp)
+       sb      $3,10($sp)
+       sb      $4,31($sp)
+       break
+
+       sh      $2,0($sp)
+       sh      $3,-16($sp)
+       sh      $4,-32($sp)
+       break
+
+       sw      $2,0($sp)
+       sw      $3,-8($sp)
+       sw      $4,8($sp)
+       break
+
+       swr      $2,0($sp)
+       swr      $3,-16($sp)
+       swr      $4,16($sp)
+       break
+
+       swl      $2,0($sp)
+       swl      $3,8($sp)
+       swl      $4,16($sp)
+       swl      $5,24($sp)
+       swl      $6,0($sp)
+       break
+
+       sc      $2,32($sp)
+       sc      $3,8($sp)
+       sc      $4,-8($sp)
+       sc      $5,0($sp)
+       sc      $6,32($sp)
+
+# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...
+       .align  2
+       .space  8
diff --git a/gas/testsuite/gas/mips/24k-triple-stores-3.d b/gas/testsuite/gas/mips/24k-triple-stores-3.d
new file mode 100644 (file)
index 0000000..f6bf5ce
--- /dev/null
@@ -0,0 +1,87 @@
+#objdump: -dr
+#as: -mfix-24k
+#name: 24K: Triple Store (Double-word Check)
+
+.*: +file format .*mips.*
+
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:  a3a2000b        sb      v0,11\(sp\)
+   4:  00000000        nop
+   8:  a3a3000b        sb      v1,11\(sp\)
+   c:  a3a40004        sb      a0,4\(sp\)
+  10:  0000000d        break
+  14:  a3a20000        sb      v0,0\(sp\)
+  18:  a3a3000b        sb      v1,11\(sp\)
+  1c:  a3a40005        sb      a0,5\(sp\)
+  20:  0000000d        break
+  24:  a3a20007        sb      v0,7\(sp\)
+  28:  a3a3000b        sb      v1,11\(sp\)
+  2c:  00000000        nop
+  30:  a3a40010        sb      a0,16\(sp\)
+  34:  0000000d        break
+  38:  a1020000        sb      v0,0\(t0\)
+  3c:  a1030008        sb      v1,8\(t0\)
+  40:  00000000        nop
+  44:  a1040009        sb      a0,9\(t0\)
+  48:  0000000d        break
+  4c:  a7a20000        sh      v0,0\(sp\)
+  50:  a7a3ffe1        sh      v1,-31\(sp\)
+  54:  a7a4ffe2        sh      a0,-30\(sp\)
+  58:  0000000d        break
+  5c:  a7a20006        sh      v0,6\(sp\)
+  60:  a7a30008        sh      v1,8\(sp\)
+  64:  00000000        nop
+  68:  a7a40010        sh      a0,16\(sp\)
+  6c:  0000000d        break
+  70:  a5020001        sh      v0,1\(t0\)
+  74:  a5030003        sh      v1,3\(t0\)
+  78:  00000000        nop
+  7c:  a504000b        sh      a0,11\(t0\)
+  80:  0000000d        break
+  84:  afa20008        sw      v0,8\(sp\)
+  88:  afa3fff8        sw      v1,-8\(sp\)
+  8c:  afa40008        sw      a0,8\(sp\)
+  90:  0000000d        break
+  94:  afa20004        sw      v0,4\(sp\)
+  98:  afa30008        sw      v1,8\(sp\)
+  9c:  00000000        nop
+  a0:  afa40010        sw      a0,16\(sp\)
+  a4:  0000000d        break
+  a8:  ad020003        sw      v0,3\(t0\)
+  ac:  ad030007        sw      v1,7\(t0\)
+  b0:  00000000        nop
+  b4:  ad04000f        sw      a0,15\(t0\)
+  b8:  0000000d        break
+  bc:  aba20004        swl     v0,4\(sp\)
+  c0:  aba3000a        swl     v1,10\(sp\)
+  c4:  00000000        nop
+  c8:  aba40011        swl     a0,17\(sp\)
+  cc:  0000000d        break
+  d0:  aba20007        swl     v0,7\(sp\)
+  d4:  aba3000c        swl     v1,12\(sp\)
+  d8:  00000000        nop
+  dc:  aba40010        swl     a0,16\(sp\)
+  e0:  0000000d        break
+  e4:  aba20000        swl     v0,0\(sp\)
+  e8:  aba3000c        swl     v1,12\(sp\)
+  ec:  00000000        nop
+  f0:  aba40017        swl     a0,23\(sp\)
+  f4:  0000000d        break
+  f8:  a9020003        swl     v0,3\(t0\)
+  fc:  a9030008        swl     v1,8\(t0\)
+ 100:  00000000        nop
+ 104:  a904000c        swl     a0,12\(t0\)
+ 108:  0000000d        break
+ 10c:  aba20000        swl     v0,0\(sp\)
+ 110:  aba3000c        swl     v1,12\(sp\)
+ 114:  00000000        nop
+ 118:  bba40017        swr     a0,23\(sp\)
+ 11c:  0000000d        break
+ 120:  a9020005        swl     v0,5\(t0\)
+ 124:  a9030011        swl     v1,17\(t0\)
+ 128:  00000000        nop
+ 12c:  b904001c        swr     a0,28\(t0\)
+ 130:  0000000d        break
+       \.\.\.
diff --git a/gas/testsuite/gas/mips/24k-triple-stores-3.s b/gas/testsuite/gas/mips/24k-triple-stores-3.s
new file mode 100644 (file)
index 0000000..8914ebc
--- /dev/null
@@ -0,0 +1,99 @@
+# Assume to be on the same line (within 32bytes)
+# Check for individual different double words
+
+       # safe
+       sb      $2,11($sp)
+       sb      $3,11($sp)
+       sb      $4,4($sp)
+       break
+
+       # safe
+       sb      $2,0($sp)
+       sb      $3,11($sp)
+       sb      $4,5($sp)
+       break
+       
+       # edge case
+       sb      $2,7($sp)
+       sb      $3,11($sp)
+       sb      $4,16($sp)
+       break
+
+       # edge case (unaligned)
+       sb      $2,0($8)
+       sb      $3,8($8)
+       sb      $4,9($8)        
+       break
+
+       sh      $2,0($sp)
+       sh      $3,-31($sp)
+       sh      $4,-30($sp)
+       break
+
+       # edge case
+       sh      $2,6($sp)
+       sh      $3,8($sp)
+       sh      $4,16($sp)
+       break
+
+       # edge case (unaligned)
+       sh      $2,1($8)
+       sh      $3,3($8)
+       sh      $4,11($8)       
+       break
+
+       sw      $2,8($sp)
+       sw      $3,-8($sp)
+       sw      $4,8($sp)
+       break
+
+       # edge case
+       sw      $2,4($sp)
+       sw      $3,8($sp)
+       sw      $4,16($sp)
+       break
+
+       # edge case (unaligned)
+       sw      $2,3($8)
+       sw      $3,7($8)
+       sw      $4,15($8)       
+       break
+
+       swl      $2,4($sp)
+       swl      $3,10($sp)
+       swl      $4,17($sp)
+       break
+
+       # edge case
+       swl      $2,7($sp)
+       swl      $3,12($sp)
+       swl      $4,16($sp)
+       break
+
+       # edge case
+       swl      $2,0($sp)
+       swl      $3,12($sp)
+       swl      $4,23($sp)
+       break
+
+       # edge case (unaligned)
+       swl      $2,3($8)
+       swl      $3,8($8)
+       swl      $4,12($8)
+       break
+
+       # mix swl & swr
+       swl      $2,0($sp)
+       swl      $3,12($sp)
+       swr      $4,23($sp)
+       break
+
+       # mix swl & swr
+       swl      $2,5($8)
+       swl      $3,17($8)
+       swr      $4,28($8)
+       break           
+
+# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...
+       .align  2
+       .space  8
diff --git a/gas/testsuite/gas/mips/24k-triple-stores-4.d b/gas/testsuite/gas/mips/24k-triple-stores-4.d
new file mode 100644 (file)
index 0000000..ba88ac8
--- /dev/null
@@ -0,0 +1,63 @@
+#objdump: -dr
+#as: -mfix-24k
+#name: 24K: Triple Store (Range Check >= 32)
+
+.*: +file format .*mips.*
+
+Disassembly of section .text:
+00000000 <.text>:
+   0:  a113000a        sb      s3,10\(t0\)
+   4:  00000000        nop
+   8:  a5130001        sh      s3,1\(t0\)
+   c:  a1130020        sb      s3,32\(t0\)
+  10:  0000000d        break
+  14:  a113000a        sb      s3,10\(t0\)
+  18:  a1130001        sb      s3,1\(t0\)
+  1c:  a5130020        sh      s3,32\(t0\)
+  20:  0000000d        break
+  24:  a1130021        sb      s3,33\(t0\)
+  28:  a5130037        sh      s3,55\(t0\)
+  2c:  00000000        nop
+  30:  a1130040        sb      s3,64\(t0\)
+  34:  0000000d        break
+  38:  a1130021        sb      s3,33\(t0\)
+  3c:  a1130037        sb      s3,55\(t0\)
+  40:  a5130040        sh      s3,64\(t0\)
+  44:  0000000d        break
+  48:  a113000c        sb      s3,12\(t0\)
+  4c:  ad130001        sw      s3,1\(t0\)
+  50:  00000000        nop
+  54:  a1130020        sb      s3,32\(t0\)
+  58:  0000000d        break
+  5c:  a113000c        sb      s3,12\(t0\)
+  60:  a1130001        sb      s3,1\(t0\)
+  64:  ad130020        sw      s3,32\(t0\)
+  68:  0000000d        break
+  6c:  a1130023        sb      s3,35\(t0\)
+  70:  ad130037        sw      s3,55\(t0\)
+  74:  00000000        nop
+  78:  a1130040        sb      s3,64\(t0\)
+  7c:  0000000d        break
+  80:  a1130023        sb      s3,35\(t0\)
+  84:  a1130037        sb      s3,55\(t0\)
+  88:  ad130040        sw      s3,64\(t0\)
+  8c:  0000000d        break
+  90:  a1130010        sb      s3,16\(t0\)
+  94:  f5000001        sdc1    \$f0,1\(t0\)
+  98:  00000000        nop
+  9c:  a1130020        sb      s3,32\(t0\)
+  a0:  0000000d        break
+  a4:  a1130010        sb      s3,16\(t0\)
+  a8:  a1130001        sb      s3,1\(t0\)
+  ac:  f5000020        sdc1    \$f0,32\(t0\)
+  b0:  0000000d        break
+  b4:  a1130027        sb      s3,39\(t0\)
+  b8:  f5000037        sdc1    \$f0,55\(t0\)
+  bc:  00000000        nop
+  c0:  a1130040        sb      s3,64\(t0\)
+  c4:  0000000d        break
+  c8:  a1130027        sb      s3,39\(t0\)
+  cc:  a1130037        sb      s3,55\(t0\)
+  d0:  f5000040        sdc1    \$f0,64\(t0\)
+  d4:  0000000d        break
+       ...
diff --git a/gas/testsuite/gas/mips/24k-triple-stores-4.s b/gas/testsuite/gas/mips/24k-triple-stores-4.s
new file mode 100644 (file)
index 0000000..56127ed
--- /dev/null
@@ -0,0 +1,56 @@
+       # Range check for safe case after alignment its range >= 32.
+       
+       sb       $s3,10($t0)
+       sh       $s3,1($t0)
+       sb       $s3,32($t0)
+       break
+       sb       $s3,10($t0)
+       sb       $s3,1($t0)
+       sh       $s3,32($t0)
+       break
+       sb       $s3,33($t0)
+       sh       $s3,55($t0)
+       sb       $s3,64($t0)
+       break
+       sb       $s3,33($t0)
+       sb       $s3,55($t0)
+       sh       $s3,64($t0)
+       break
+       
+       sb       $s3,12($t0)
+       sw       $s3,1($t0)
+       sb       $s3,32($t0)
+       break
+       sb       $s3,12($t0)
+       sb       $s3,1($t0)
+       sw       $s3,32($t0)
+       break
+       sb       $s3,35($t0)
+       sw       $s3,55($t0)
+       sb       $s3,64($t0)
+       break
+       sb       $s3,35($t0)
+       sb       $s3,55($t0)
+       sw       $s3,64($t0)
+       break
+       
+       sb       $s3,16($t0)
+       sdc1     $f0,1($t0)
+       sb       $s3,32($t0)
+       break
+       sb       $s3,16($t0)
+       sb       $s3,1($t0)
+       sdc1     $f0,32($t0)
+       break
+       sb       $s3,39($t0)
+       sdc1     $f0,55($t0)
+       sb       $s3,64($t0)
+       break
+       sb       $s3,39($t0)
+       sb       $s3,55($t0)
+       sdc1     $f0,64($t0)
+       break
+
+# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...
+       .align  2
+       .space  8
diff --git a/gas/testsuite/gas/mips/24k-triple-stores-5.d b/gas/testsuite/gas/mips/24k-triple-stores-5.d
new file mode 100644 (file)
index 0000000..9749003
--- /dev/null
@@ -0,0 +1,37 @@
+#objdump: -dr
+#as: -mfix-24k
+#name: 24K: Triple Store (Mix byte/half/word size check)
+
+.*: +file format .*mips.*
+
+Disassembly of section .text:
+00000000 <.text>:
+   0:  a5020007        sh      v0,7\(t0\)
+   4:  00000000        nop
+   8:  a1030000        sb      v1,0\(t0\)
+   c:  ad040001        sw      a0,1\(t0\)
+  10:  0000000d        break
+  14:  a5020016        sh      v0,22\(t0\)
+  18:  a103000f        sb      v1,15\(t0\)
+  1c:  00000000        nop
+  20:  ad040018        sw      a0,24\(t0\)
+  24:  0000000d        break
+  28:  a5020000        sh      v0,0\(t0\)
+  2c:  a1030009        sb      v1,9\(t0\)
+  30:  ad040002        sw      a0,2\(t0\)
+  34:  0000000d        break
+  38:  a5020006        sh      v0,6\(t0\)
+  3c:  a1030010        sb      v1,16\(t0\)
+  40:  00000000        nop
+  44:  ad04000c        sw      a0,12\(t0\)
+  48:  0000000d        break
+  4c:  a502000a        sh      v0,10\(t0\)
+  50:  a103000f        sb      v1,15\(t0\)
+  54:  ad040004        sw      a0,4\(t0\)
+  58:  0000000d        break
+  5c:  a502000a        sh      v0,10\(t0\)
+  60:  a1030010        sb      v1,16\(t0\)
+  64:  00000000        nop
+  68:  ad040004        sw      a0,4\(t0\)
+  6c:  0000000d        break
+       \.\.\.
diff --git a/gas/testsuite/gas/mips/24k-triple-stores-5.s b/gas/testsuite/gas/mips/24k-triple-stores-5.s
new file mode 100644 (file)
index 0000000..bb260d4
--- /dev/null
@@ -0,0 +1,41 @@
+# Mix byte/half/word sizes with arbitary base register.
+
+       # safe
+       sh      $2,7($8)
+       sb      $3,0($8)
+       sw      $4,1($8)
+       break
+
+       # nop
+       sh      $2,22($8)
+       sb      $3,15($8)
+       sw      $4,24($8)
+       break
+
+       # safe
+       sh      $2,0($8)
+       sb      $3,9($8)
+       sw      $4,2($8)
+       break
+
+       # nop
+       sh      $2,6($8)
+       sb      $3,16($8)
+       sw      $4,12($8)
+       break
+
+       # safe
+       sh      $2,10($8)
+       sb      $3,15($8)
+       sw      $4,4($8)
+       break
+
+       # nop
+       sh      $2,10($8)
+       sb      $3,16($8)
+       sw      $4,4($8)
+       break
+
+# Force at least 8 (non-delay-slot) zero bytes,to make 'objdump' print ...
+       .align  2
+       .space  8
diff --git a/gas/testsuite/gas/mips/24k-triple-stores-6.d b/gas/testsuite/gas/mips/24k-triple-stores-6.d
new file mode 100644 (file)
index 0000000..195a8b4
--- /dev/null
@@ -0,0 +1,37 @@
+#objdump: -dr
+#as: -mfix-24k
+#name: 24K: Triple Store (Store Macro Check)
+
+.*: +file format .*mips.*
+
+Disassembly of section .text:
+00000000 <.text>:
+   0:  abbf0050        swl     ra,80\(sp\)
+   4:  00000000        nop
+   8:  bbbf0053        swr     ra,83\(sp\)
+   c:  abb30058        swl     s3,88\(sp\)
+  10:  bbb3005b        swr     s3,91\(sp\)
+  14:  abbe0060        swl     s8,96\(sp\)
+  18:  bbbe0063        swr     s8,99\(sp\)
+  1c:  0000000d        break
+  20:  a3bf0051        sb      ra,81\(sp\)
+  24:  001f0a02        srl     at,ra,0x8
+  28:  a3a10050        sb      at,80\(sp\)
+  2c:  a3b30059        sb      s3,89\(sp\)
+  30:  00130a02        srl     at,s3,0x8
+  34:  a3a10058        sb      at,88\(sp\)
+  38:  a3be0061        sb      s8,97\(sp\)
+  3c:  001e0a02        srl     at,s8,0x8
+  40:  a3a10060        sb      at,96\(sp\)
+  44:  0000000d        break
+  48:  e7a00050        swc1    \$f0,80\(sp\)
+  4c:  e7a20058        swc1    \$f2,88\(sp\)
+  50:  00000000        nop
+  54:  e7a40060        swc1    \$f4,96\(sp\)
+  58:  0000000d        break
+  5c:  f7a00050        sdc1    \$f0,80\(sp\)
+  60:  f7a20058        sdc1    \$f2,88\(sp\)
+  64:  00000000        nop
+  68:  f7a40060        sdc1    \$f4,96\(sp\)
+  6c:  0000000d        break
+       \.\.\.
diff --git a/gas/testsuite/gas/mips/24k-triple-stores-6.s b/gas/testsuite/gas/mips/24k-triple-stores-6.s
new file mode 100644 (file)
index 0000000..5db0fba
--- /dev/null
@@ -0,0 +1,27 @@
+       # Store macros
+
+       usw      $ra,80($sp)
+       usw      $s3,88($sp)
+       usw      $s8,96($sp)
+       break
+
+       ush      $ra,80($sp)
+       ush      $s3,88($sp)
+       ush      $s8,96($sp)
+       break
+
+       # swc1 macro
+       s.s      $f0,80($sp)
+       s.s      $f2,88($sp)
+       s.s      $f4,96($sp)
+       break
+
+        # sdc1 macro
+       s.d      $f0,80($sp)
+       s.d      $f2,88($sp)
+       s.d      $f4,96($sp)
+break
+
+# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...
+       .align  2
+       .space  8
diff --git a/gas/testsuite/gas/mips/24k-triple-stores-7.d b/gas/testsuite/gas/mips/24k-triple-stores-7.d
new file mode 100644 (file)
index 0000000..84c22e8
--- /dev/null
@@ -0,0 +1,81 @@
+#objdump: -dr
+#as: -mfix-24k
+#name: 24K: Triple Store (Extended Range Check)
+
+.*: +file format .*mips.*
+
+Disassembly of section .text:
+00000000 <.text>:
+   0:  a1130004        sb      s3,4\(t0\)
+   4:  00000000        nop
+   8:  ad130008        sw      s3,8\(t0\)
+   c:  a113000f        sb      s3,15\(t0\)
+  10:  0000000d        break
+  14:  a1130003        sb      s3,3\(t0\)
+  18:  ad130008        sw      s3,8\(t0\)
+  1c:  00000000        nop
+  20:  a113000f        sb      s3,15\(t0\)
+  24:  0000000d        break
+  28:  ad13001c        sw      s3,28\(t0\)
+  2c:  ad130008        sw      s3,8\(t0\)
+  30:  a113001f        sb      s3,31\(t0\)
+  34:  0000000d        break
+  38:  a1130005        sb      s3,5\(t0\)
+  3c:  ad130009        sw      s3,9\(t0\)
+  40:  a1130010        sb      s3,16\(t0\)
+  44:  0000000d        break
+  48:  a1130004        sb      s3,4\(t0\)
+  4c:  ad130009        sw      s3,9\(t0\)
+  50:  00000000        nop
+  54:  a1130010        sb      s3,16\(t0\)
+  58:  0000000d        break
+  5c:  a1130006        sb      s3,6\(t0\)
+  60:  a5130008        sh      s3,8\(t0\)
+  64:  a113000f        sb      s3,15\(t0\)
+  68:  0000000d        break
+  6c:  a1130005        sb      s3,5\(t0\)
+  70:  a5130008        sh      s3,8\(t0\)
+  74:  00000000        nop
+  78:  a113000f        sb      s3,15\(t0\)
+  7c:  0000000d        break
+  80:  a513001e        sh      s3,30\(t0\)
+  84:  a5130008        sh      s3,8\(t0\)
+  88:  a113001f        sb      s3,31\(t0\)
+  8c:  0000000d        break
+  90:  a1130007        sb      s3,7\(t0\)
+  94:  a5130009        sh      s3,9\(t0\)
+  98:  a1130010        sb      s3,16\(t0\)
+  9c:  0000000d        break
+  a0:  a1130006        sb      s3,6\(t0\)
+  a4:  a5130009        sh      s3,9\(t0\)
+  a8:  00000000        nop
+  ac:  a1130010        sb      s3,16\(t0\)
+  b0:  0000000d        break
+  b4:  a1130007        sb      s3,7\(t0\)
+  b8:  f5000008        sdc1    \$f0,8\(t0\)
+  bc:  a113000f        sb      s3,15\(t0\)
+  c0:  0000000d        break
+  c4:  a1130007        sb      s3,7\(t0\)
+  c8:  f5000008        sdc1    \$f0,8\(t0\)
+  cc:  00000000        nop
+  d0:  a1130010        sb      s3,16\(t0\)
+  d4:  0000000d        break
+  d8:  a1130010        sb      s3,16\(t0\)
+  dc:  f5000008        sdc1    \$f0,8\(t0\)
+  e0:  a1130017        sb      s3,23\(t0\)
+  e4:  0000000d        break
+  e8:  a1130010        sb      s3,16\(t0\)
+  ec:  f5000008        sdc1    \$f0,8\(t0\)
+  f0:  00000000        nop
+  f4:  a1130018        sb      s3,24\(t0\)
+  f8:  0000000d        break
+  fc:  a1130008        sb      s3,8\(t0\)
+ 100:  f5000009        sdc1    \$f0,9\(t0\)
+ 104:  a1130010        sb      s3,16\(t0\)
+ 108:  0000000d        break
+ 10c:  a113fffd        sb      s3,-3\(t0\)
+ 110:  f500fffe        sdc1    \$f0,-2\(t0\)
+ 114:  00000000        nop
+ 118:  a1130006        sb      s3,6\(t0\)
+ 11c:  0000000d        break
+       ...
diff --git a/gas/testsuite/gas/mips/24k-triple-stores-7.s b/gas/testsuite/gas/mips/24k-triple-stores-7.s
new file mode 100644 (file)
index 0000000..3e0dc6a
--- /dev/null
@@ -0,0 +1,92 @@
+       # range check
+       sb       $s3,4($t0)
+       sw       $s3,8($t0)
+       sb       $s3,15($t0)
+       break
+
+       sb       $s3,3($t0)
+       sw       $s3,8($t0)
+       sb       $s3,15($t0)
+       break
+
+       # overlap (same word)
+       sw       $s3,28($t0)
+       sw       $s3,8($t0)
+       sb       $s3,31($t0)
+       break
+
+       # unaligned
+       sb       $s3,5($t0)
+       sw       $s3,9($t0)
+       sb       $s3,16($t0)
+       break
+
+       sb       $s3,4($t0)
+       sw       $s3,9($t0)
+       sb       $s3,16($t0)
+       break
+       
+       # range check
+       sb       $s3,6($t0)
+       sh       $s3,8($t0)
+       sb       $s3,15($t0)
+       break
+
+       sb       $s3,5($t0)
+       sh       $s3,8($t0)
+       sb       $s3,15($t0)
+       break
+
+       # overlap (same hword)
+       sh       $s3,30($t0)
+       sh       $s3,8($t0)
+       sb       $s3,31($t0)
+       break
+
+       # unaligned
+       sb       $s3,7($t0)
+       sh       $s3,9($t0)
+       sb       $s3,16($t0)
+       break
+
+       sb       $s3,6($t0)
+       sh       $s3,9($t0)
+       sb       $s3,16($t0)
+       break
+       
+       # range check
+       sb       $s3,7($t0)
+       sdc1     $f0,8($t0)
+       sb       $s3,15($t0)
+       break
+
+       sb       $s3,7($t0)
+       sdc1     $f0,8($t0)
+       sb       $s3,16($t0)
+       break
+
+       # overlap (same dword)
+       sb       $s3,16($t0)
+       sdc1     $f0,8($t0)
+       sb       $s3,23($t0)
+       break
+
+       sb       $s3,16($t0)
+       sdc1     $f0,8($t0)
+       sb       $s3,24($t0)
+       break
+
+       # unaligned
+       sb       $s3,8($t0)
+       sdc1     $f0,9($t0)
+       sb       $s3,16($t0)
+       break
+
+       sb       $s3,-3($t0)
+       sdc1     $f0,-2($t0)
+       sb       $s3,6($t0)
+       break
+
+# Force at least 8 (non-delay-slot) zero bytes,to make 'objdump' print ...
+       .align  2
+       .space  8
diff --git a/gas/testsuite/gas/mips/24k-triple-stores-8.d b/gas/testsuite/gas/mips/24k-triple-stores-8.d
new file mode 100644 (file)
index 0000000..cea15bf
--- /dev/null
@@ -0,0 +1,61 @@
+#objdump: -dr
+#as: -mfix-24k
+#name: 24K: Triple Store (Range Check >= 24)
+
+.*: +file format .*mips.*
+
+Disassembly of section .text:
+00000000 <.text>:
+   0:  a1130000        sb      s3,0\(t0\)
+   4:  00000000        nop
+   8:  a1130001        sb      s3,1\(t0\)
+   c:  a1130018        sb      s3,24\(t0\)
+  10:  0000000d        break
+  14:  a1130000        sb      s3,0\(t0\)
+  18:  a1130001        sb      s3,1\(t0\)
+  1c:  a1130019        sb      s3,25\(t0\)
+  20:  0000000d        break
+  24:  a1130001        sb      s3,1\(t0\)
+  28:  a1130019        sb      s3,25\(t0\)
+  2c:  a113001a        sb      s3,26\(t0\)
+  30:  0000000d        break
+  34:  a1130000        sb      s3,0\(t0\)
+  38:  a5130003        sh      s3,3\(t0\)
+  3c:  00000000        nop
+  40:  a113001a        sb      s3,26\(t0\)
+  44:  0000000d        break
+  48:  a5130000        sh      s3,0\(t0\)
+  4c:  a1130003        sb      s3,3\(t0\)
+  50:  a113001a        sb      s3,26\(t0\)
+  54:  0000000d        break
+  58:  a1130023        sb      s3,35\(t0\)
+  5c:  a5130020        sh      s3,32\(t0\)
+  60:  a1130009        sb      s3,9\(t0\)
+  64:  0000000d        break
+  68:  a1130001        sb      s3,1\(t0\)
+  6c:  a5130019        sh      s3,25\(t0\)
+  70:  a113001b        sb      s3,27\(t0\)
+  74:  0000000d        break
+  78:  a1130000        sb      s3,0\(t0\)
+  7c:  ad130007        sw      s3,7\(t0\)
+  80:  00000000        nop
+  84:  a113001c        sb      s3,28\(t0\)
+  88:  0000000d        break
+  8c:  a1130000        sb      s3,0\(t0\)
+  90:  a1130007        sb      s3,7\(t0\)
+  94:  ad13001c        sw      s3,28\(t0\)
+  98:  0000000d        break
+  9c:  a1130040        sb      s3,64\(t0\)
+  a0:  ad13003b        sw      s3,59\(t0\)
+  a4:  00000000        nop
+  a8:  ad130025        sw      s3,37\(t0\)
+  ac:  0000000d        break
+  b0:  ad130040        sw      s3,64\(t0\)
+  b4:  a113003d        sb      s3,61\(t0\)
+  b8:  a1130027        sb      s3,39\(t0\)
+  bc:  0000000d        break
+  c0:  a1130001        sb      s3,1\(t0\)
+  c4:  ad130019        sw      s3,25\(t0\)
+  c8:  a113001d        sb      s3,29\(t0\)
+  cc:  0000000d        break
+       \.\.\.
diff --git a/gas/testsuite/gas/mips/24k-triple-stores-8.s b/gas/testsuite/gas/mips/24k-triple-stores-8.s
new file mode 100644 (file)
index 0000000..386b333
--- /dev/null
@@ -0,0 +1,56 @@
+       # Range check after alignment between adjacent offsets >= 24 ??
+       
+       sb       $s3,0($t0)
+       sb       $s3,1($t0)
+       sb       $s3,24($t0)
+       break
+       sb       $s3,0($t0)
+       sb       $s3,1($t0)
+       sb       $s3,25($t0)
+       break
+       sb       $s3,1($t0)
+       sb       $s3,25($t0)
+       sb       $s3,26($t0)
+       break
+       
+       sb       $s3,0($t0)
+       sh       $s3,3($t0)
+       sb       $s3,26($t0)
+       break
+       sh       $s3,0($t0)
+       sb       $s3,3($t0)
+       sb       $s3,26($t0)
+       break
+       sb       $s3,35($t0)
+       sh       $s3,32($t0)
+       sb       $s3,9($t0)
+       break
+       sb       $s3,1($t0)
+       sh       $s3,25($t0)
+       sb       $s3,27($t0)
+       break
+       
+       sb       $s3,0($t0)
+       sw       $s3,7($t0)
+       sb       $s3,28($t0)
+       break
+       sb       $s3,0($t0)
+       sb       $s3,7($t0)
+       sw       $s3,28($t0)
+       break
+       sb       $s3,64($t0)
+       sw       $s3,59($t0)
+       sw       $s3,37($t0)
+       break
+       sw       $s3,64($t0)
+       sb       $s3,61($t0)
+       sb       $s3,39($t0)
+       break
+       sb       $s3,1($t0)
+       sw       $s3,25($t0)
+       sb       $s3,29($t0)
+       break
+
+# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...
+       .align  2
+       .space  8
diff --git a/gas/testsuite/gas/mips/24k-triple-stores-9.d b/gas/testsuite/gas/mips/24k-triple-stores-9.d
new file mode 100644 (file)
index 0000000..7768da0
--- /dev/null
@@ -0,0 +1,13 @@
+#objdump: -dr
+#as: -mfix-24k
+#name: 24K: Triple store (Intervening data #1)
+
+.*: +file format .*mips.*
+
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:  a1020000        sb      v0,0\(t0\)
+   4:  00000000        nop
+   8:  a1030008        sb      v1,8\(t0\)
+   c:  a1040010        sb      a0,16\(t0\)
diff --git a/gas/testsuite/gas/mips/24k-triple-stores-9.s b/gas/testsuite/gas/mips/24k-triple-stores-9.s
new file mode 100644 (file)
index 0000000..e985569
--- /dev/null
@@ -0,0 +1,10 @@
+       .text
+       sb $2,0($8)
+       .data
+       .word 1
+       .text
+       sb $3,8($8)
+       .data
+       .word 1
+       .text
+       sb $4,16($8)
index f143ac3..6e721bd 100644 (file)
@@ -479,6 +479,19 @@ if { [istarget mips*-*-vxworks*] } {
     run_dump_test "eret-1"
     run_dump_test "eret-2"
     run_dump_test "eret-3"
+    run_dump_test_arches "24k-branch-delay-1" [mips_arch_list_matching mips1]
+    run_dump_test_arches "24k-triple-stores-1" \
+                                   [mips_arch_list_matching mips32r2 !octeon]
+    run_dump_test_arches "24k-triple-stores-2" [mips_arch_list_matching mips2]
+    run_dump_test_arches "24k-triple-stores-3" [mips_arch_list_matching mips3]
+    run_dump_test_arches "24k-triple-stores-4" [mips_arch_list_matching mips2]
+    run_dump_test_arches "24k-triple-stores-5" [mips_arch_list_matching mips1]
+    run_dump_test_arches "24k-triple-stores-6" [mips_arch_list_matching mips2]
+    run_dump_test_arches "24k-triple-stores-7" [mips_arch_list_matching mips2]
+    run_dump_test_arches "24k-triple-stores-8" [mips_arch_list_matching mips1]
+    run_dump_test_arches "24k-triple-stores-9" [mips_arch_list_matching mips1]
+    run_dump_test_arches "24k-triple-stores-10" [mips_arch_list_matching mips1]
+    run_dump_test_arches "24k-triple-stores-11" [mips_arch_list_matching mips1]
 
     if $elf {
        run_dump_test_arches "jal-svr4pic" \