MIPS/GAS/testsuite: Add tests for coprocessor access instructions
authorMaciej W. Rozycki <macro@orcam.me.uk>
Sat, 29 May 2021 01:26:32 +0000 (03:26 +0200)
committerMaciej W. Rozycki <macro@orcam.me.uk>
Sat, 29 May 2021 01:26:32 +0000 (03:26 +0200)
Cover basic CP0, CP2, CP3 move, load and store instructions across the
relevant ISA levels.  Omit CP0 move and CP1 instructions as they are
covered elsewhere.

gas/
* testsuite/gas/mips/cp0c.d: New test.
* testsuite/gas/mips/cp0m.d: New test.
* testsuite/gas/mips/r3900@cp0m.d: New test.
* testsuite/gas/mips/cp2.d: New test.
* testsuite/gas/mips/micromips@cp2.d: New test.
* testsuite/gas/mips/cp2m.d: New test.
* testsuite/gas/mips/mipsr6@cp2m.d: New test.
* testsuite/gas/mips/micromips@cp2m.d: New test.
* testsuite/gas/mips/cp2d.d: New test.
* testsuite/gas/mips/mipsr6@cp2d.d: New test.
* testsuite/gas/mips/micromips@cp2d.d: New test.
* testsuite/gas/mips/cp2-64.d: New test.
* testsuite/gas/mips/micromips@cp2-64.d: New test.
* testsuite/gas/mips/cp3.d: New test.
* testsuite/gas/mips/cp3m.d: New test.
* testsuite/gas/mips/cp3d.d: New test.
* testsuite/gas/mips/cp0c.s: New test source.
* testsuite/gas/mips/cp0m.s: New test source.
* testsuite/gas/mips/cp2.s: New test source.
* testsuite/gas/mips/cp2m.s: New test source.
* testsuite/gas/mips/cp2d.s: New test source.
* testsuite/gas/mips/cp2-64.s: New test source.
* testsuite/gas/mips/cp3.s: New test source.
* testsuite/gas/mips/cp3m.s: New test source.
* testsuite/gas/mips/cp3d.s: New test source.
* testsuite/gas/mips/mips.exp: Run the new tests.

27 files changed:
gas/ChangeLog
gas/testsuite/gas/mips/cp0c.d [new file with mode: 0644]
gas/testsuite/gas/mips/cp0c.s [new file with mode: 0644]
gas/testsuite/gas/mips/cp0m.d [new file with mode: 0644]
gas/testsuite/gas/mips/cp0m.s [new file with mode: 0644]
gas/testsuite/gas/mips/cp2-64.d [new file with mode: 0644]
gas/testsuite/gas/mips/cp2-64.s [new file with mode: 0644]
gas/testsuite/gas/mips/cp2.d [new file with mode: 0644]
gas/testsuite/gas/mips/cp2.s [new file with mode: 0644]
gas/testsuite/gas/mips/cp2d.d [new file with mode: 0644]
gas/testsuite/gas/mips/cp2d.s [new file with mode: 0644]
gas/testsuite/gas/mips/cp2m.d [new file with mode: 0644]
gas/testsuite/gas/mips/cp2m.s [new file with mode: 0644]
gas/testsuite/gas/mips/cp3.d [new file with mode: 0644]
gas/testsuite/gas/mips/cp3.s [new file with mode: 0644]
gas/testsuite/gas/mips/cp3d.d [new file with mode: 0644]
gas/testsuite/gas/mips/cp3d.s [new file with mode: 0644]
gas/testsuite/gas/mips/cp3m.d [new file with mode: 0644]
gas/testsuite/gas/mips/cp3m.s [new file with mode: 0644]
gas/testsuite/gas/mips/micromips@cp2-64.d [new file with mode: 0644]
gas/testsuite/gas/mips/micromips@cp2.d [new file with mode: 0644]
gas/testsuite/gas/mips/micromips@cp2d.d [new file with mode: 0644]
gas/testsuite/gas/mips/micromips@cp2m.d [new file with mode: 0644]
gas/testsuite/gas/mips/mips.exp
gas/testsuite/gas/mips/mipsr6@cp2d.d [new file with mode: 0644]
gas/testsuite/gas/mips/mipsr6@cp2m.d [new file with mode: 0644]
gas/testsuite/gas/mips/r3900@cp0m.d [new file with mode: 0644]

index 0d5f7a85a961f97f645d1d56e7855224e3a2b220..77dd8f740a6ebc69f37470c0d39e799007a72853 100644 (file)
@@ -1,3 +1,32 @@
+2021-05-29  Maciej W. Rozycki  <macro@orcam.me.uk>
+
+       * testsuite/gas/mips/cp0c.d: New test.
+       * testsuite/gas/mips/cp0m.d: New test.
+       * testsuite/gas/mips/r3900@cp0m.d: New test.
+       * testsuite/gas/mips/cp2.d: New test.
+       * testsuite/gas/mips/micromips@cp2.d: New test.
+       * testsuite/gas/mips/cp2m.d: New test.
+       * testsuite/gas/mips/mipsr6@cp2m.d: New test.
+       * testsuite/gas/mips/micromips@cp2m.d: New test.
+       * testsuite/gas/mips/cp2d.d: New test.
+       * testsuite/gas/mips/mipsr6@cp2d.d: New test.
+       * testsuite/gas/mips/micromips@cp2d.d: New test.
+       * testsuite/gas/mips/cp2-64.d: New test.
+       * testsuite/gas/mips/micromips@cp2-64.d: New test.
+       * testsuite/gas/mips/cp3.d: New test.
+       * testsuite/gas/mips/cp3m.d: New test.
+       * testsuite/gas/mips/cp3d.d: New test.
+       * testsuite/gas/mips/cp0c.s: New test source.
+       * testsuite/gas/mips/cp0m.s: New test source.
+       * testsuite/gas/mips/cp2.s: New test source.
+       * testsuite/gas/mips/cp2m.s: New test source.
+       * testsuite/gas/mips/cp2d.s: New test source.
+       * testsuite/gas/mips/cp2-64.s: New test source.
+       * testsuite/gas/mips/cp3.s: New test source.
+       * testsuite/gas/mips/cp3m.s: New test source.
+       * testsuite/gas/mips/cp3d.s: New test source.
+       * testsuite/gas/mips/mips.exp: Run the new tests.
+
 2021-05-29  Maciej W. Rozycki  <macro@orcam.me.uk>
 
        * tc-mips.c (convert_reg_type) <OP_REG_CONTROL>: New case.
diff --git a/gas/testsuite/gas/mips/cp0c.d b/gas/testsuite/gas/mips/cp0c.d
new file mode 100644 (file)
index 0000000..1432ed9
--- /dev/null
@@ -0,0 +1,72 @@
+#objdump: -d --prefix-addresses --show-raw-insn
+#name: MIPS CP0 control register move instructions
+#as: -32
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> 40c00000     ctc0    zero,\$0
+[0-9a-f]+ <[^>]*> 40c00800     ctc0    zero,\$1
+[0-9a-f]+ <[^>]*> 40c01000     ctc0    zero,\$2
+[0-9a-f]+ <[^>]*> 40c01800     ctc0    zero,\$3
+[0-9a-f]+ <[^>]*> 40c02000     ctc0    zero,\$4
+[0-9a-f]+ <[^>]*> 40c02800     ctc0    zero,\$5
+[0-9a-f]+ <[^>]*> 40c03000     ctc0    zero,\$6
+[0-9a-f]+ <[^>]*> 40c03800     ctc0    zero,\$7
+[0-9a-f]+ <[^>]*> 40c04000     ctc0    zero,\$8
+[0-9a-f]+ <[^>]*> 40c04800     ctc0    zero,\$9
+[0-9a-f]+ <[^>]*> 40c05000     ctc0    zero,\$10
+[0-9a-f]+ <[^>]*> 40c05800     ctc0    zero,\$11
+[0-9a-f]+ <[^>]*> 40c06000     ctc0    zero,\$12
+[0-9a-f]+ <[^>]*> 40c06800     ctc0    zero,\$13
+[0-9a-f]+ <[^>]*> 40c07000     ctc0    zero,\$14
+[0-9a-f]+ <[^>]*> 40c07800     ctc0    zero,\$15
+[0-9a-f]+ <[^>]*> 40c08000     ctc0    zero,\$16
+[0-9a-f]+ <[^>]*> 40c08800     ctc0    zero,\$17
+[0-9a-f]+ <[^>]*> 40c09000     ctc0    zero,\$18
+[0-9a-f]+ <[^>]*> 40c09800     ctc0    zero,\$19
+[0-9a-f]+ <[^>]*> 40c0a000     ctc0    zero,\$20
+[0-9a-f]+ <[^>]*> 40c0a800     ctc0    zero,\$21
+[0-9a-f]+ <[^>]*> 40c0b000     ctc0    zero,\$22
+[0-9a-f]+ <[^>]*> 40c0b800     ctc0    zero,\$23
+[0-9a-f]+ <[^>]*> 40c0c000     ctc0    zero,\$24
+[0-9a-f]+ <[^>]*> 40c0c800     ctc0    zero,\$25
+[0-9a-f]+ <[^>]*> 40c0d000     ctc0    zero,\$26
+[0-9a-f]+ <[^>]*> 40c0d800     ctc0    zero,\$27
+[0-9a-f]+ <[^>]*> 40c0e000     ctc0    zero,\$28
+[0-9a-f]+ <[^>]*> 40c0e800     ctc0    zero,\$29
+[0-9a-f]+ <[^>]*> 40c0f000     ctc0    zero,\$30
+[0-9a-f]+ <[^>]*> 40c0f800     ctc0    zero,\$31
+[0-9a-f]+ <[^>]*> 40400000     cfc0    zero,\$0
+[0-9a-f]+ <[^>]*> 40400800     cfc0    zero,\$1
+[0-9a-f]+ <[^>]*> 40401000     cfc0    zero,\$2
+[0-9a-f]+ <[^>]*> 40401800     cfc0    zero,\$3
+[0-9a-f]+ <[^>]*> 40402000     cfc0    zero,\$4
+[0-9a-f]+ <[^>]*> 40402800     cfc0    zero,\$5
+[0-9a-f]+ <[^>]*> 40403000     cfc0    zero,\$6
+[0-9a-f]+ <[^>]*> 40403800     cfc0    zero,\$7
+[0-9a-f]+ <[^>]*> 40404000     cfc0    zero,\$8
+[0-9a-f]+ <[^>]*> 40404800     cfc0    zero,\$9
+[0-9a-f]+ <[^>]*> 40405000     cfc0    zero,\$10
+[0-9a-f]+ <[^>]*> 40405800     cfc0    zero,\$11
+[0-9a-f]+ <[^>]*> 40406000     cfc0    zero,\$12
+[0-9a-f]+ <[^>]*> 40406800     cfc0    zero,\$13
+[0-9a-f]+ <[^>]*> 40407000     cfc0    zero,\$14
+[0-9a-f]+ <[^>]*> 40407800     cfc0    zero,\$15
+[0-9a-f]+ <[^>]*> 40408000     cfc0    zero,\$16
+[0-9a-f]+ <[^>]*> 40408800     cfc0    zero,\$17
+[0-9a-f]+ <[^>]*> 40409000     cfc0    zero,\$18
+[0-9a-f]+ <[^>]*> 40409800     cfc0    zero,\$19
+[0-9a-f]+ <[^>]*> 4040a000     cfc0    zero,\$20
+[0-9a-f]+ <[^>]*> 4040a800     cfc0    zero,\$21
+[0-9a-f]+ <[^>]*> 4040b000     cfc0    zero,\$22
+[0-9a-f]+ <[^>]*> 4040b800     cfc0    zero,\$23
+[0-9a-f]+ <[^>]*> 4040c000     cfc0    zero,\$24
+[0-9a-f]+ <[^>]*> 4040c800     cfc0    zero,\$25
+[0-9a-f]+ <[^>]*> 4040d000     cfc0    zero,\$26
+[0-9a-f]+ <[^>]*> 4040d800     cfc0    zero,\$27
+[0-9a-f]+ <[^>]*> 4040e000     cfc0    zero,\$28
+[0-9a-f]+ <[^>]*> 4040e800     cfc0    zero,\$29
+[0-9a-f]+ <[^>]*> 4040f000     cfc0    zero,\$30
+[0-9a-f]+ <[^>]*> 4040f800     cfc0    zero,\$31
+       \.\.\.
diff --git a/gas/testsuite/gas/mips/cp0c.s b/gas/testsuite/gas/mips/cp0c.s
new file mode 100644 (file)
index 0000000..ec67ee5
--- /dev/null
@@ -0,0 +1,72 @@
+       .text
+       .set    noreorder
+foo:
+       ctc0    $0, $0
+       ctc0    $0, $1
+       ctc0    $0, $2
+       ctc0    $0, $3
+       ctc0    $0, $4
+       ctc0    $0, $5
+       ctc0    $0, $6
+       ctc0    $0, $7
+       ctc0    $0, $8
+       ctc0    $0, $9
+       ctc0    $0, $10
+       ctc0    $0, $11
+       ctc0    $0, $12
+       ctc0    $0, $13
+       ctc0    $0, $14
+       ctc0    $0, $15
+       ctc0    $0, $16
+       ctc0    $0, $17
+       ctc0    $0, $18
+       ctc0    $0, $19
+       ctc0    $0, $20
+       ctc0    $0, $21
+       ctc0    $0, $22
+       ctc0    $0, $23
+       ctc0    $0, $24
+       ctc0    $0, $25
+       ctc0    $0, $26
+       ctc0    $0, $27
+       ctc0    $0, $28
+       ctc0    $0, $29
+       ctc0    $0, $30
+       ctc0    $0, $31
+
+       cfc0    $0, $0
+       cfc0    $0, $1
+       cfc0    $0, $2
+       cfc0    $0, $3
+       cfc0    $0, $4
+       cfc0    $0, $5
+       cfc0    $0, $6
+       cfc0    $0, $7
+       cfc0    $0, $8
+       cfc0    $0, $9
+       cfc0    $0, $10
+       cfc0    $0, $11
+       cfc0    $0, $12
+       cfc0    $0, $13
+       cfc0    $0, $14
+       cfc0    $0, $15
+       cfc0    $0, $16
+       cfc0    $0, $17
+       cfc0    $0, $18
+       cfc0    $0, $19
+       cfc0    $0, $20
+       cfc0    $0, $21
+       cfc0    $0, $22
+       cfc0    $0, $23
+       cfc0    $0, $24
+       cfc0    $0, $25
+       cfc0    $0, $26
+       cfc0    $0, $27
+       cfc0    $0, $28
+       cfc0    $0, $29
+       cfc0    $0, $30
+       cfc0    $0, $31
+
+# Force some (non-delay-slot) zero bytes, to make 'objdump' print ...
+       .align  4, 0
+       .space  16
diff --git a/gas/testsuite/gas/mips/cp0m.d b/gas/testsuite/gas/mips/cp0m.d
new file mode 100644 (file)
index 0000000..9eb8f0f
--- /dev/null
@@ -0,0 +1,72 @@
+#objdump: -d --prefix-addresses --show-raw-insn
+#name: MIPS CP0 memory access instructions
+#as: -32
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> c0000000     lwc0    c0_index,0\(zero\)
+[0-9a-f]+ <[^>]*> c0010000     lwc0    c0_random,0\(zero\)
+[0-9a-f]+ <[^>]*> c0020000     lwc0    c0_entrylo,0\(zero\)
+[0-9a-f]+ <[^>]*> c0030000     lwc0    \$3,0\(zero\)
+[0-9a-f]+ <[^>]*> c0040000     lwc0    c0_context,0\(zero\)
+[0-9a-f]+ <[^>]*> c0050000     lwc0    \$5,0\(zero\)
+[0-9a-f]+ <[^>]*> c0060000     lwc0    \$6,0\(zero\)
+[0-9a-f]+ <[^>]*> c0070000     lwc0    \$7,0\(zero\)
+[0-9a-f]+ <[^>]*> c0080000     lwc0    c0_badvaddr,0\(zero\)
+[0-9a-f]+ <[^>]*> c0090000     lwc0    \$9,0\(zero\)
+[0-9a-f]+ <[^>]*> c00a0000     lwc0    c0_entryhi,0\(zero\)
+[0-9a-f]+ <[^>]*> c00b0000     lwc0    \$11,0\(zero\)
+[0-9a-f]+ <[^>]*> c00c0000     lwc0    c0_sr,0\(zero\)
+[0-9a-f]+ <[^>]*> c00d0000     lwc0    c0_cause,0\(zero\)
+[0-9a-f]+ <[^>]*> c00e0000     lwc0    c0_epc,0\(zero\)
+[0-9a-f]+ <[^>]*> c00f0000     lwc0    c0_prid,0\(zero\)
+[0-9a-f]+ <[^>]*> c0100000     lwc0    \$16,0\(zero\)
+[0-9a-f]+ <[^>]*> c0110000     lwc0    \$17,0\(zero\)
+[0-9a-f]+ <[^>]*> c0120000     lwc0    \$18,0\(zero\)
+[0-9a-f]+ <[^>]*> c0130000     lwc0    \$19,0\(zero\)
+[0-9a-f]+ <[^>]*> c0140000     lwc0    \$20,0\(zero\)
+[0-9a-f]+ <[^>]*> c0150000     lwc0    \$21,0\(zero\)
+[0-9a-f]+ <[^>]*> c0160000     lwc0    \$22,0\(zero\)
+[0-9a-f]+ <[^>]*> c0170000     lwc0    \$23,0\(zero\)
+[0-9a-f]+ <[^>]*> c0180000     lwc0    \$24,0\(zero\)
+[0-9a-f]+ <[^>]*> c0190000     lwc0    \$25,0\(zero\)
+[0-9a-f]+ <[^>]*> c01a0000     lwc0    \$26,0\(zero\)
+[0-9a-f]+ <[^>]*> c01b0000     lwc0    \$27,0\(zero\)
+[0-9a-f]+ <[^>]*> c01c0000     lwc0    \$28,0\(zero\)
+[0-9a-f]+ <[^>]*> c01d0000     lwc0    \$29,0\(zero\)
+[0-9a-f]+ <[^>]*> c01e0000     lwc0    \$30,0\(zero\)
+[0-9a-f]+ <[^>]*> c01f0000     lwc0    \$31,0\(zero\)
+[0-9a-f]+ <[^>]*> e0000000     swc0    c0_index,0\(zero\)
+[0-9a-f]+ <[^>]*> e0010000     swc0    c0_random,0\(zero\)
+[0-9a-f]+ <[^>]*> e0020000     swc0    c0_entrylo,0\(zero\)
+[0-9a-f]+ <[^>]*> e0030000     swc0    \$3,0\(zero\)
+[0-9a-f]+ <[^>]*> e0040000     swc0    c0_context,0\(zero\)
+[0-9a-f]+ <[^>]*> e0050000     swc0    \$5,0\(zero\)
+[0-9a-f]+ <[^>]*> e0060000     swc0    \$6,0\(zero\)
+[0-9a-f]+ <[^>]*> e0070000     swc0    \$7,0\(zero\)
+[0-9a-f]+ <[^>]*> e0080000     swc0    c0_badvaddr,0\(zero\)
+[0-9a-f]+ <[^>]*> e0090000     swc0    \$9,0\(zero\)
+[0-9a-f]+ <[^>]*> e00a0000     swc0    c0_entryhi,0\(zero\)
+[0-9a-f]+ <[^>]*> e00b0000     swc0    \$11,0\(zero\)
+[0-9a-f]+ <[^>]*> e00c0000     swc0    c0_sr,0\(zero\)
+[0-9a-f]+ <[^>]*> e00d0000     swc0    c0_cause,0\(zero\)
+[0-9a-f]+ <[^>]*> e00e0000     swc0    c0_epc,0\(zero\)
+[0-9a-f]+ <[^>]*> e00f0000     swc0    c0_prid,0\(zero\)
+[0-9a-f]+ <[^>]*> e0100000     swc0    \$16,0\(zero\)
+[0-9a-f]+ <[^>]*> e0110000     swc0    \$17,0\(zero\)
+[0-9a-f]+ <[^>]*> e0120000     swc0    \$18,0\(zero\)
+[0-9a-f]+ <[^>]*> e0130000     swc0    \$19,0\(zero\)
+[0-9a-f]+ <[^>]*> e0140000     swc0    \$20,0\(zero\)
+[0-9a-f]+ <[^>]*> e0150000     swc0    \$21,0\(zero\)
+[0-9a-f]+ <[^>]*> e0160000     swc0    \$22,0\(zero\)
+[0-9a-f]+ <[^>]*> e0170000     swc0    \$23,0\(zero\)
+[0-9a-f]+ <[^>]*> e0180000     swc0    \$24,0\(zero\)
+[0-9a-f]+ <[^>]*> e0190000     swc0    \$25,0\(zero\)
+[0-9a-f]+ <[^>]*> e01a0000     swc0    \$26,0\(zero\)
+[0-9a-f]+ <[^>]*> e01b0000     swc0    \$27,0\(zero\)
+[0-9a-f]+ <[^>]*> e01c0000     swc0    \$28,0\(zero\)
+[0-9a-f]+ <[^>]*> e01d0000     swc0    \$29,0\(zero\)
+[0-9a-f]+ <[^>]*> e01e0000     swc0    \$30,0\(zero\)
+[0-9a-f]+ <[^>]*> e01f0000     swc0    \$31,0\(zero\)
+       \.\.\.
diff --git a/gas/testsuite/gas/mips/cp0m.s b/gas/testsuite/gas/mips/cp0m.s
new file mode 100644 (file)
index 0000000..15603dd
--- /dev/null
@@ -0,0 +1,72 @@
+       .text
+       .set    noreorder
+foo:
+       lwc0    $0, 0($0)
+       lwc0    $1, 0($0)
+       lwc0    $2, 0($0)
+       lwc0    $3, 0($0)
+       lwc0    $4, 0($0)
+       lwc0    $5, 0($0)
+       lwc0    $6, 0($0)
+       lwc0    $7, 0($0)
+       lwc0    $8, 0($0)
+       lwc0    $9, 0($0)
+       lwc0    $10, 0($0)
+       lwc0    $11, 0($0)
+       lwc0    $12, 0($0)
+       lwc0    $13, 0($0)
+       lwc0    $14, 0($0)
+       lwc0    $15, 0($0)
+       lwc0    $16, 0($0)
+       lwc0    $17, 0($0)
+       lwc0    $18, 0($0)
+       lwc0    $19, 0($0)
+       lwc0    $20, 0($0)
+       lwc0    $21, 0($0)
+       lwc0    $22, 0($0)
+       lwc0    $23, 0($0)
+       lwc0    $24, 0($0)
+       lwc0    $25, 0($0)
+       lwc0    $26, 0($0)
+       lwc0    $27, 0($0)
+       lwc0    $28, 0($0)
+       lwc0    $29, 0($0)
+       lwc0    $30, 0($0)
+       lwc0    $31, 0($0)
+
+       swc0    $0, 0($0)
+       swc0    $1, 0($0)
+       swc0    $2, 0($0)
+       swc0    $3, 0($0)
+       swc0    $4, 0($0)
+       swc0    $5, 0($0)
+       swc0    $6, 0($0)
+       swc0    $7, 0($0)
+       swc0    $8, 0($0)
+       swc0    $9, 0($0)
+       swc0    $10, 0($0)
+       swc0    $11, 0($0)
+       swc0    $12, 0($0)
+       swc0    $13, 0($0)
+       swc0    $14, 0($0)
+       swc0    $15, 0($0)
+       swc0    $16, 0($0)
+       swc0    $17, 0($0)
+       swc0    $18, 0($0)
+       swc0    $19, 0($0)
+       swc0    $20, 0($0)
+       swc0    $21, 0($0)
+       swc0    $22, 0($0)
+       swc0    $23, 0($0)
+       swc0    $24, 0($0)
+       swc0    $25, 0($0)
+       swc0    $26, 0($0)
+       swc0    $27, 0($0)
+       swc0    $28, 0($0)
+       swc0    $29, 0($0)
+       swc0    $30, 0($0)
+       swc0    $31, 0($0)
+
+# Force some (non-delay-slot) zero bytes, to make 'objdump' print ...
+       .align  4, 0
+       .space  16
diff --git a/gas/testsuite/gas/mips/cp2-64.d b/gas/testsuite/gas/mips/cp2-64.d
new file mode 100644 (file)
index 0000000..57fa131
--- /dev/null
@@ -0,0 +1,72 @@
+#objdump: -d --prefix-addresses --show-raw-insn
+#name: MIPS CP2 64-bit move instructions
+#as: -32
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> 48a00000     dmtc2   zero,\$0
+[0-9a-f]+ <[^>]*> 48a00800     dmtc2   zero,\$1
+[0-9a-f]+ <[^>]*> 48a01000     dmtc2   zero,\$2
+[0-9a-f]+ <[^>]*> 48a01800     dmtc2   zero,\$3
+[0-9a-f]+ <[^>]*> 48a02000     dmtc2   zero,\$4
+[0-9a-f]+ <[^>]*> 48a02800     dmtc2   zero,\$5
+[0-9a-f]+ <[^>]*> 48a03000     dmtc2   zero,\$6
+[0-9a-f]+ <[^>]*> 48a03800     dmtc2   zero,\$7
+[0-9a-f]+ <[^>]*> 48a04000     dmtc2   zero,\$8
+[0-9a-f]+ <[^>]*> 48a04800     dmtc2   zero,\$9
+[0-9a-f]+ <[^>]*> 48a05000     dmtc2   zero,\$10
+[0-9a-f]+ <[^>]*> 48a05800     dmtc2   zero,\$11
+[0-9a-f]+ <[^>]*> 48a06000     dmtc2   zero,\$12
+[0-9a-f]+ <[^>]*> 48a06800     dmtc2   zero,\$13
+[0-9a-f]+ <[^>]*> 48a07000     dmtc2   zero,\$14
+[0-9a-f]+ <[^>]*> 48a07800     dmtc2   zero,\$15
+[0-9a-f]+ <[^>]*> 48a08000     dmtc2   zero,\$16
+[0-9a-f]+ <[^>]*> 48a08800     dmtc2   zero,\$17
+[0-9a-f]+ <[^>]*> 48a09000     dmtc2   zero,\$18
+[0-9a-f]+ <[^>]*> 48a09800     dmtc2   zero,\$19
+[0-9a-f]+ <[^>]*> 48a0a000     dmtc2   zero,\$20
+[0-9a-f]+ <[^>]*> 48a0a800     dmtc2   zero,\$21
+[0-9a-f]+ <[^>]*> 48a0b000     dmtc2   zero,\$22
+[0-9a-f]+ <[^>]*> 48a0b800     dmtc2   zero,\$23
+[0-9a-f]+ <[^>]*> 48a0c000     dmtc2   zero,\$24
+[0-9a-f]+ <[^>]*> 48a0c800     dmtc2   zero,\$25
+[0-9a-f]+ <[^>]*> 48a0d000     dmtc2   zero,\$26
+[0-9a-f]+ <[^>]*> 48a0d800     dmtc2   zero,\$27
+[0-9a-f]+ <[^>]*> 48a0e000     dmtc2   zero,\$28
+[0-9a-f]+ <[^>]*> 48a0e800     dmtc2   zero,\$29
+[0-9a-f]+ <[^>]*> 48a0f000     dmtc2   zero,\$30
+[0-9a-f]+ <[^>]*> 48a0f800     dmtc2   zero,\$31
+[0-9a-f]+ <[^>]*> 48200000     dmfc2   zero,\$0
+[0-9a-f]+ <[^>]*> 48200800     dmfc2   zero,\$1
+[0-9a-f]+ <[^>]*> 48201000     dmfc2   zero,\$2
+[0-9a-f]+ <[^>]*> 48201800     dmfc2   zero,\$3
+[0-9a-f]+ <[^>]*> 48202000     dmfc2   zero,\$4
+[0-9a-f]+ <[^>]*> 48202800     dmfc2   zero,\$5
+[0-9a-f]+ <[^>]*> 48203000     dmfc2   zero,\$6
+[0-9a-f]+ <[^>]*> 48203800     dmfc2   zero,\$7
+[0-9a-f]+ <[^>]*> 48204000     dmfc2   zero,\$8
+[0-9a-f]+ <[^>]*> 48204800     dmfc2   zero,\$9
+[0-9a-f]+ <[^>]*> 48205000     dmfc2   zero,\$10
+[0-9a-f]+ <[^>]*> 48205800     dmfc2   zero,\$11
+[0-9a-f]+ <[^>]*> 48206000     dmfc2   zero,\$12
+[0-9a-f]+ <[^>]*> 48206800     dmfc2   zero,\$13
+[0-9a-f]+ <[^>]*> 48207000     dmfc2   zero,\$14
+[0-9a-f]+ <[^>]*> 48207800     dmfc2   zero,\$15
+[0-9a-f]+ <[^>]*> 48208000     dmfc2   zero,\$16
+[0-9a-f]+ <[^>]*> 48208800     dmfc2   zero,\$17
+[0-9a-f]+ <[^>]*> 48209000     dmfc2   zero,\$18
+[0-9a-f]+ <[^>]*> 48209800     dmfc2   zero,\$19
+[0-9a-f]+ <[^>]*> 4820a000     dmfc2   zero,\$20
+[0-9a-f]+ <[^>]*> 4820a800     dmfc2   zero,\$21
+[0-9a-f]+ <[^>]*> 4820b000     dmfc2   zero,\$22
+[0-9a-f]+ <[^>]*> 4820b800     dmfc2   zero,\$23
+[0-9a-f]+ <[^>]*> 4820c000     dmfc2   zero,\$24
+[0-9a-f]+ <[^>]*> 4820c800     dmfc2   zero,\$25
+[0-9a-f]+ <[^>]*> 4820d000     dmfc2   zero,\$26
+[0-9a-f]+ <[^>]*> 4820d800     dmfc2   zero,\$27
+[0-9a-f]+ <[^>]*> 4820e000     dmfc2   zero,\$28
+[0-9a-f]+ <[^>]*> 4820e800     dmfc2   zero,\$29
+[0-9a-f]+ <[^>]*> 4820f000     dmfc2   zero,\$30
+[0-9a-f]+ <[^>]*> 4820f800     dmfc2   zero,\$31
+       \.\.\.
diff --git a/gas/testsuite/gas/mips/cp2-64.s b/gas/testsuite/gas/mips/cp2-64.s
new file mode 100644 (file)
index 0000000..5d67483
--- /dev/null
@@ -0,0 +1,72 @@
+       .text
+       .set    noreorder
+foo:
+       dmtc2   $0, $0
+       dmtc2   $0, $1
+       dmtc2   $0, $2
+       dmtc2   $0, $3
+       dmtc2   $0, $4
+       dmtc2   $0, $5
+       dmtc2   $0, $6
+       dmtc2   $0, $7
+       dmtc2   $0, $8
+       dmtc2   $0, $9
+       dmtc2   $0, $10
+       dmtc2   $0, $11
+       dmtc2   $0, $12
+       dmtc2   $0, $13
+       dmtc2   $0, $14
+       dmtc2   $0, $15
+       dmtc2   $0, $16
+       dmtc2   $0, $17
+       dmtc2   $0, $18
+       dmtc2   $0, $19
+       dmtc2   $0, $20
+       dmtc2   $0, $21
+       dmtc2   $0, $22
+       dmtc2   $0, $23
+       dmtc2   $0, $24
+       dmtc2   $0, $25
+       dmtc2   $0, $26
+       dmtc2   $0, $27
+       dmtc2   $0, $28
+       dmtc2   $0, $29
+       dmtc2   $0, $30
+       dmtc2   $0, $31
+
+       dmfc2   $0, $0
+       dmfc2   $0, $1
+       dmfc2   $0, $2
+       dmfc2   $0, $3
+       dmfc2   $0, $4
+       dmfc2   $0, $5
+       dmfc2   $0, $6
+       dmfc2   $0, $7
+       dmfc2   $0, $8
+       dmfc2   $0, $9
+       dmfc2   $0, $10
+       dmfc2   $0, $11
+       dmfc2   $0, $12
+       dmfc2   $0, $13
+       dmfc2   $0, $14
+       dmfc2   $0, $15
+       dmfc2   $0, $16
+       dmfc2   $0, $17
+       dmfc2   $0, $18
+       dmfc2   $0, $19
+       dmfc2   $0, $20
+       dmfc2   $0, $21
+       dmfc2   $0, $22
+       dmfc2   $0, $23
+       dmfc2   $0, $24
+       dmfc2   $0, $25
+       dmfc2   $0, $26
+       dmfc2   $0, $27
+       dmfc2   $0, $28
+       dmfc2   $0, $29
+       dmfc2   $0, $30
+       dmfc2   $0, $31
+
+# Force some (non-delay-slot) zero bytes, to make 'objdump' print ...
+       .align  4, 0
+       .space  16
diff --git a/gas/testsuite/gas/mips/cp2.d b/gas/testsuite/gas/mips/cp2.d
new file mode 100644 (file)
index 0000000..9518953
--- /dev/null
@@ -0,0 +1,136 @@
+#objdump: -d --prefix-addresses --show-raw-insn
+#name: MIPS CP2 register move instructions
+#as: -32
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> 48800000     mtc2    zero,\$0
+[0-9a-f]+ <[^>]*> 48800800     mtc2    zero,\$1
+[0-9a-f]+ <[^>]*> 48801000     mtc2    zero,\$2
+[0-9a-f]+ <[^>]*> 48801800     mtc2    zero,\$3
+[0-9a-f]+ <[^>]*> 48802000     mtc2    zero,\$4
+[0-9a-f]+ <[^>]*> 48802800     mtc2    zero,\$5
+[0-9a-f]+ <[^>]*> 48803000     mtc2    zero,\$6
+[0-9a-f]+ <[^>]*> 48803800     mtc2    zero,\$7
+[0-9a-f]+ <[^>]*> 48804000     mtc2    zero,\$8
+[0-9a-f]+ <[^>]*> 48804800     mtc2    zero,\$9
+[0-9a-f]+ <[^>]*> 48805000     mtc2    zero,\$10
+[0-9a-f]+ <[^>]*> 48805800     mtc2    zero,\$11
+[0-9a-f]+ <[^>]*> 48806000     mtc2    zero,\$12
+[0-9a-f]+ <[^>]*> 48806800     mtc2    zero,\$13
+[0-9a-f]+ <[^>]*> 48807000     mtc2    zero,\$14
+[0-9a-f]+ <[^>]*> 48807800     mtc2    zero,\$15
+[0-9a-f]+ <[^>]*> 48808000     mtc2    zero,\$16
+[0-9a-f]+ <[^>]*> 48808800     mtc2    zero,\$17
+[0-9a-f]+ <[^>]*> 48809000     mtc2    zero,\$18
+[0-9a-f]+ <[^>]*> 48809800     mtc2    zero,\$19
+[0-9a-f]+ <[^>]*> 4880a000     mtc2    zero,\$20
+[0-9a-f]+ <[^>]*> 4880a800     mtc2    zero,\$21
+[0-9a-f]+ <[^>]*> 4880b000     mtc2    zero,\$22
+[0-9a-f]+ <[^>]*> 4880b800     mtc2    zero,\$23
+[0-9a-f]+ <[^>]*> 4880c000     mtc2    zero,\$24
+[0-9a-f]+ <[^>]*> 4880c800     mtc2    zero,\$25
+[0-9a-f]+ <[^>]*> 4880d000     mtc2    zero,\$26
+[0-9a-f]+ <[^>]*> 4880d800     mtc2    zero,\$27
+[0-9a-f]+ <[^>]*> 4880e000     mtc2    zero,\$28
+[0-9a-f]+ <[^>]*> 4880e800     mtc2    zero,\$29
+[0-9a-f]+ <[^>]*> 4880f000     mtc2    zero,\$30
+[0-9a-f]+ <[^>]*> 4880f800     mtc2    zero,\$31
+[0-9a-f]+ <[^>]*> 48000000     mfc2    zero,\$0
+[0-9a-f]+ <[^>]*> 48000800     mfc2    zero,\$1
+[0-9a-f]+ <[^>]*> 48001000     mfc2    zero,\$2
+[0-9a-f]+ <[^>]*> 48001800     mfc2    zero,\$3
+[0-9a-f]+ <[^>]*> 48002000     mfc2    zero,\$4
+[0-9a-f]+ <[^>]*> 48002800     mfc2    zero,\$5
+[0-9a-f]+ <[^>]*> 48003000     mfc2    zero,\$6
+[0-9a-f]+ <[^>]*> 48003800     mfc2    zero,\$7
+[0-9a-f]+ <[^>]*> 48004000     mfc2    zero,\$8
+[0-9a-f]+ <[^>]*> 48004800     mfc2    zero,\$9
+[0-9a-f]+ <[^>]*> 48005000     mfc2    zero,\$10
+[0-9a-f]+ <[^>]*> 48005800     mfc2    zero,\$11
+[0-9a-f]+ <[^>]*> 48006000     mfc2    zero,\$12
+[0-9a-f]+ <[^>]*> 48006800     mfc2    zero,\$13
+[0-9a-f]+ <[^>]*> 48007000     mfc2    zero,\$14
+[0-9a-f]+ <[^>]*> 48007800     mfc2    zero,\$15
+[0-9a-f]+ <[^>]*> 48008000     mfc2    zero,\$16
+[0-9a-f]+ <[^>]*> 48008800     mfc2    zero,\$17
+[0-9a-f]+ <[^>]*> 48009000     mfc2    zero,\$18
+[0-9a-f]+ <[^>]*> 48009800     mfc2    zero,\$19
+[0-9a-f]+ <[^>]*> 4800a000     mfc2    zero,\$20
+[0-9a-f]+ <[^>]*> 4800a800     mfc2    zero,\$21
+[0-9a-f]+ <[^>]*> 4800b000     mfc2    zero,\$22
+[0-9a-f]+ <[^>]*> 4800b800     mfc2    zero,\$23
+[0-9a-f]+ <[^>]*> 4800c000     mfc2    zero,\$24
+[0-9a-f]+ <[^>]*> 4800c800     mfc2    zero,\$25
+[0-9a-f]+ <[^>]*> 4800d000     mfc2    zero,\$26
+[0-9a-f]+ <[^>]*> 4800d800     mfc2    zero,\$27
+[0-9a-f]+ <[^>]*> 4800e000     mfc2    zero,\$28
+[0-9a-f]+ <[^>]*> 4800e800     mfc2    zero,\$29
+[0-9a-f]+ <[^>]*> 4800f000     mfc2    zero,\$30
+[0-9a-f]+ <[^>]*> 4800f800     mfc2    zero,\$31
+[0-9a-f]+ <[^>]*> 48c00000     ctc2    zero,\$0
+[0-9a-f]+ <[^>]*> 48c00800     ctc2    zero,\$1
+[0-9a-f]+ <[^>]*> 48c01000     ctc2    zero,\$2
+[0-9a-f]+ <[^>]*> 48c01800     ctc2    zero,\$3
+[0-9a-f]+ <[^>]*> 48c02000     ctc2    zero,\$4
+[0-9a-f]+ <[^>]*> 48c02800     ctc2    zero,\$5
+[0-9a-f]+ <[^>]*> 48c03000     ctc2    zero,\$6
+[0-9a-f]+ <[^>]*> 48c03800     ctc2    zero,\$7
+[0-9a-f]+ <[^>]*> 48c04000     ctc2    zero,\$8
+[0-9a-f]+ <[^>]*> 48c04800     ctc2    zero,\$9
+[0-9a-f]+ <[^>]*> 48c05000     ctc2    zero,\$10
+[0-9a-f]+ <[^>]*> 48c05800     ctc2    zero,\$11
+[0-9a-f]+ <[^>]*> 48c06000     ctc2    zero,\$12
+[0-9a-f]+ <[^>]*> 48c06800     ctc2    zero,\$13
+[0-9a-f]+ <[^>]*> 48c07000     ctc2    zero,\$14
+[0-9a-f]+ <[^>]*> 48c07800     ctc2    zero,\$15
+[0-9a-f]+ <[^>]*> 48c08000     ctc2    zero,\$16
+[0-9a-f]+ <[^>]*> 48c08800     ctc2    zero,\$17
+[0-9a-f]+ <[^>]*> 48c09000     ctc2    zero,\$18
+[0-9a-f]+ <[^>]*> 48c09800     ctc2    zero,\$19
+[0-9a-f]+ <[^>]*> 48c0a000     ctc2    zero,\$20
+[0-9a-f]+ <[^>]*> 48c0a800     ctc2    zero,\$21
+[0-9a-f]+ <[^>]*> 48c0b000     ctc2    zero,\$22
+[0-9a-f]+ <[^>]*> 48c0b800     ctc2    zero,\$23
+[0-9a-f]+ <[^>]*> 48c0c000     ctc2    zero,\$24
+[0-9a-f]+ <[^>]*> 48c0c800     ctc2    zero,\$25
+[0-9a-f]+ <[^>]*> 48c0d000     ctc2    zero,\$26
+[0-9a-f]+ <[^>]*> 48c0d800     ctc2    zero,\$27
+[0-9a-f]+ <[^>]*> 48c0e000     ctc2    zero,\$28
+[0-9a-f]+ <[^>]*> 48c0e800     ctc2    zero,\$29
+[0-9a-f]+ <[^>]*> 48c0f000     ctc2    zero,\$30
+[0-9a-f]+ <[^>]*> 48c0f800     ctc2    zero,\$31
+[0-9a-f]+ <[^>]*> 48400000     cfc2    zero,\$0
+[0-9a-f]+ <[^>]*> 48400800     cfc2    zero,\$1
+[0-9a-f]+ <[^>]*> 48401000     cfc2    zero,\$2
+[0-9a-f]+ <[^>]*> 48401800     cfc2    zero,\$3
+[0-9a-f]+ <[^>]*> 48402000     cfc2    zero,\$4
+[0-9a-f]+ <[^>]*> 48402800     cfc2    zero,\$5
+[0-9a-f]+ <[^>]*> 48403000     cfc2    zero,\$6
+[0-9a-f]+ <[^>]*> 48403800     cfc2    zero,\$7
+[0-9a-f]+ <[^>]*> 48404000     cfc2    zero,\$8
+[0-9a-f]+ <[^>]*> 48404800     cfc2    zero,\$9
+[0-9a-f]+ <[^>]*> 48405000     cfc2    zero,\$10
+[0-9a-f]+ <[^>]*> 48405800     cfc2    zero,\$11
+[0-9a-f]+ <[^>]*> 48406000     cfc2    zero,\$12
+[0-9a-f]+ <[^>]*> 48406800     cfc2    zero,\$13
+[0-9a-f]+ <[^>]*> 48407000     cfc2    zero,\$14
+[0-9a-f]+ <[^>]*> 48407800     cfc2    zero,\$15
+[0-9a-f]+ <[^>]*> 48408000     cfc2    zero,\$16
+[0-9a-f]+ <[^>]*> 48408800     cfc2    zero,\$17
+[0-9a-f]+ <[^>]*> 48409000     cfc2    zero,\$18
+[0-9a-f]+ <[^>]*> 48409800     cfc2    zero,\$19
+[0-9a-f]+ <[^>]*> 4840a000     cfc2    zero,\$20
+[0-9a-f]+ <[^>]*> 4840a800     cfc2    zero,\$21
+[0-9a-f]+ <[^>]*> 4840b000     cfc2    zero,\$22
+[0-9a-f]+ <[^>]*> 4840b800     cfc2    zero,\$23
+[0-9a-f]+ <[^>]*> 4840c000     cfc2    zero,\$24
+[0-9a-f]+ <[^>]*> 4840c800     cfc2    zero,\$25
+[0-9a-f]+ <[^>]*> 4840d000     cfc2    zero,\$26
+[0-9a-f]+ <[^>]*> 4840d800     cfc2    zero,\$27
+[0-9a-f]+ <[^>]*> 4840e000     cfc2    zero,\$28
+[0-9a-f]+ <[^>]*> 4840e800     cfc2    zero,\$29
+[0-9a-f]+ <[^>]*> 4840f000     cfc2    zero,\$30
+[0-9a-f]+ <[^>]*> 4840f800     cfc2    zero,\$31
+       \.\.\.
diff --git a/gas/testsuite/gas/mips/cp2.s b/gas/testsuite/gas/mips/cp2.s
new file mode 100644 (file)
index 0000000..35a9b66
--- /dev/null
@@ -0,0 +1,138 @@
+       .text
+       .set    noreorder
+foo:
+       mtc2    $0, $0
+       mtc2    $0, $1
+       mtc2    $0, $2
+       mtc2    $0, $3
+       mtc2    $0, $4
+       mtc2    $0, $5
+       mtc2    $0, $6
+       mtc2    $0, $7
+       mtc2    $0, $8
+       mtc2    $0, $9
+       mtc2    $0, $10
+       mtc2    $0, $11
+       mtc2    $0, $12
+       mtc2    $0, $13
+       mtc2    $0, $14
+       mtc2    $0, $15
+       mtc2    $0, $16
+       mtc2    $0, $17
+       mtc2    $0, $18
+       mtc2    $0, $19
+       mtc2    $0, $20
+       mtc2    $0, $21
+       mtc2    $0, $22
+       mtc2    $0, $23
+       mtc2    $0, $24
+       mtc2    $0, $25
+       mtc2    $0, $26
+       mtc2    $0, $27
+       mtc2    $0, $28
+       mtc2    $0, $29
+       mtc2    $0, $30
+       mtc2    $0, $31
+
+       mfc2    $0, $0
+       mfc2    $0, $1
+       mfc2    $0, $2
+       mfc2    $0, $3
+       mfc2    $0, $4
+       mfc2    $0, $5
+       mfc2    $0, $6
+       mfc2    $0, $7
+       mfc2    $0, $8
+       mfc2    $0, $9
+       mfc2    $0, $10
+       mfc2    $0, $11
+       mfc2    $0, $12
+       mfc2    $0, $13
+       mfc2    $0, $14
+       mfc2    $0, $15
+       mfc2    $0, $16
+       mfc2    $0, $17
+       mfc2    $0, $18
+       mfc2    $0, $19
+       mfc2    $0, $20
+       mfc2    $0, $21
+       mfc2    $0, $22
+       mfc2    $0, $23
+       mfc2    $0, $24
+       mfc2    $0, $25
+       mfc2    $0, $26
+       mfc2    $0, $27
+       mfc2    $0, $28
+       mfc2    $0, $29
+       mfc2    $0, $30
+       mfc2    $0, $31
+
+       ctc2    $0, $0
+       ctc2    $0, $1
+       ctc2    $0, $2
+       ctc2    $0, $3
+       ctc2    $0, $4
+       ctc2    $0, $5
+       ctc2    $0, $6
+       ctc2    $0, $7
+       ctc2    $0, $8
+       ctc2    $0, $9
+       ctc2    $0, $10
+       ctc2    $0, $11
+       ctc2    $0, $12
+       ctc2    $0, $13
+       ctc2    $0, $14
+       ctc2    $0, $15
+       ctc2    $0, $16
+       ctc2    $0, $17
+       ctc2    $0, $18
+       ctc2    $0, $19
+       ctc2    $0, $20
+       ctc2    $0, $21
+       ctc2    $0, $22
+       ctc2    $0, $23
+       ctc2    $0, $24
+       ctc2    $0, $25
+       ctc2    $0, $26
+       ctc2    $0, $27
+       ctc2    $0, $28
+       ctc2    $0, $29
+       ctc2    $0, $30
+       ctc2    $0, $31
+
+       cfc2    $0, $0
+       cfc2    $0, $1
+       cfc2    $0, $2
+       cfc2    $0, $3
+       cfc2    $0, $4
+       cfc2    $0, $5
+       cfc2    $0, $6
+       cfc2    $0, $7
+       cfc2    $0, $8
+       cfc2    $0, $9
+       cfc2    $0, $10
+       cfc2    $0, $11
+       cfc2    $0, $12
+       cfc2    $0, $13
+       cfc2    $0, $14
+       cfc2    $0, $15
+       cfc2    $0, $16
+       cfc2    $0, $17
+       cfc2    $0, $18
+       cfc2    $0, $19
+       cfc2    $0, $20
+       cfc2    $0, $21
+       cfc2    $0, $22
+       cfc2    $0, $23
+       cfc2    $0, $24
+       cfc2    $0, $25
+       cfc2    $0, $26
+       cfc2    $0, $27
+       cfc2    $0, $28
+       cfc2    $0, $29
+       cfc2    $0, $30
+       cfc2    $0, $31
+
+# Force some (non-delay-slot) zero bytes, to make 'objdump' print ...
+       .align  4, 0
+       .space  16
diff --git a/gas/testsuite/gas/mips/cp2d.d b/gas/testsuite/gas/mips/cp2d.d
new file mode 100644 (file)
index 0000000..034211b
--- /dev/null
@@ -0,0 +1,72 @@
+#objdump: -d --prefix-addresses --show-raw-insn
+#name: MIPS CP2 doubleword memory access instructions
+#as: -32
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> d8000000     ldc2    \$0,0\(zero\)
+[0-9a-f]+ <[^>]*> d8010000     ldc2    \$1,0\(zero\)
+[0-9a-f]+ <[^>]*> d8020000     ldc2    \$2,0\(zero\)
+[0-9a-f]+ <[^>]*> d8030000     ldc2    \$3,0\(zero\)
+[0-9a-f]+ <[^>]*> d8040000     ldc2    \$4,0\(zero\)
+[0-9a-f]+ <[^>]*> d8050000     ldc2    \$5,0\(zero\)
+[0-9a-f]+ <[^>]*> d8060000     ldc2    \$6,0\(zero\)
+[0-9a-f]+ <[^>]*> d8070000     ldc2    \$7,0\(zero\)
+[0-9a-f]+ <[^>]*> d8080000     ldc2    \$8,0\(zero\)
+[0-9a-f]+ <[^>]*> d8090000     ldc2    \$9,0\(zero\)
+[0-9a-f]+ <[^>]*> d80a0000     ldc2    \$10,0\(zero\)
+[0-9a-f]+ <[^>]*> d80b0000     ldc2    \$11,0\(zero\)
+[0-9a-f]+ <[^>]*> d80c0000     ldc2    \$12,0\(zero\)
+[0-9a-f]+ <[^>]*> d80d0000     ldc2    \$13,0\(zero\)
+[0-9a-f]+ <[^>]*> d80e0000     ldc2    \$14,0\(zero\)
+[0-9a-f]+ <[^>]*> d80f0000     ldc2    \$15,0\(zero\)
+[0-9a-f]+ <[^>]*> d8100000     ldc2    \$16,0\(zero\)
+[0-9a-f]+ <[^>]*> d8110000     ldc2    \$17,0\(zero\)
+[0-9a-f]+ <[^>]*> d8120000     ldc2    \$18,0\(zero\)
+[0-9a-f]+ <[^>]*> d8130000     ldc2    \$19,0\(zero\)
+[0-9a-f]+ <[^>]*> d8140000     ldc2    \$20,0\(zero\)
+[0-9a-f]+ <[^>]*> d8150000     ldc2    \$21,0\(zero\)
+[0-9a-f]+ <[^>]*> d8160000     ldc2    \$22,0\(zero\)
+[0-9a-f]+ <[^>]*> d8170000     ldc2    \$23,0\(zero\)
+[0-9a-f]+ <[^>]*> d8180000     ldc2    \$24,0\(zero\)
+[0-9a-f]+ <[^>]*> d8190000     ldc2    \$25,0\(zero\)
+[0-9a-f]+ <[^>]*> d81a0000     ldc2    \$26,0\(zero\)
+[0-9a-f]+ <[^>]*> d81b0000     ldc2    \$27,0\(zero\)
+[0-9a-f]+ <[^>]*> d81c0000     ldc2    \$28,0\(zero\)
+[0-9a-f]+ <[^>]*> d81d0000     ldc2    \$29,0\(zero\)
+[0-9a-f]+ <[^>]*> d81e0000     ldc2    \$30,0\(zero\)
+[0-9a-f]+ <[^>]*> d81f0000     ldc2    \$31,0\(zero\)
+[0-9a-f]+ <[^>]*> f8000000     sdc2    \$0,0\(zero\)
+[0-9a-f]+ <[^>]*> f8010000     sdc2    \$1,0\(zero\)
+[0-9a-f]+ <[^>]*> f8020000     sdc2    \$2,0\(zero\)
+[0-9a-f]+ <[^>]*> f8030000     sdc2    \$3,0\(zero\)
+[0-9a-f]+ <[^>]*> f8040000     sdc2    \$4,0\(zero\)
+[0-9a-f]+ <[^>]*> f8050000     sdc2    \$5,0\(zero\)
+[0-9a-f]+ <[^>]*> f8060000     sdc2    \$6,0\(zero\)
+[0-9a-f]+ <[^>]*> f8070000     sdc2    \$7,0\(zero\)
+[0-9a-f]+ <[^>]*> f8080000     sdc2    \$8,0\(zero\)
+[0-9a-f]+ <[^>]*> f8090000     sdc2    \$9,0\(zero\)
+[0-9a-f]+ <[^>]*> f80a0000     sdc2    \$10,0\(zero\)
+[0-9a-f]+ <[^>]*> f80b0000     sdc2    \$11,0\(zero\)
+[0-9a-f]+ <[^>]*> f80c0000     sdc2    \$12,0\(zero\)
+[0-9a-f]+ <[^>]*> f80d0000     sdc2    \$13,0\(zero\)
+[0-9a-f]+ <[^>]*> f80e0000     sdc2    \$14,0\(zero\)
+[0-9a-f]+ <[^>]*> f80f0000     sdc2    \$15,0\(zero\)
+[0-9a-f]+ <[^>]*> f8100000     sdc2    \$16,0\(zero\)
+[0-9a-f]+ <[^>]*> f8110000     sdc2    \$17,0\(zero\)
+[0-9a-f]+ <[^>]*> f8120000     sdc2    \$18,0\(zero\)
+[0-9a-f]+ <[^>]*> f8130000     sdc2    \$19,0\(zero\)
+[0-9a-f]+ <[^>]*> f8140000     sdc2    \$20,0\(zero\)
+[0-9a-f]+ <[^>]*> f8150000     sdc2    \$21,0\(zero\)
+[0-9a-f]+ <[^>]*> f8160000     sdc2    \$22,0\(zero\)
+[0-9a-f]+ <[^>]*> f8170000     sdc2    \$23,0\(zero\)
+[0-9a-f]+ <[^>]*> f8180000     sdc2    \$24,0\(zero\)
+[0-9a-f]+ <[^>]*> f8190000     sdc2    \$25,0\(zero\)
+[0-9a-f]+ <[^>]*> f81a0000     sdc2    \$26,0\(zero\)
+[0-9a-f]+ <[^>]*> f81b0000     sdc2    \$27,0\(zero\)
+[0-9a-f]+ <[^>]*> f81c0000     sdc2    \$28,0\(zero\)
+[0-9a-f]+ <[^>]*> f81d0000     sdc2    \$29,0\(zero\)
+[0-9a-f]+ <[^>]*> f81e0000     sdc2    \$30,0\(zero\)
+[0-9a-f]+ <[^>]*> f81f0000     sdc2    \$31,0\(zero\)
+       \.\.\.
diff --git a/gas/testsuite/gas/mips/cp2d.s b/gas/testsuite/gas/mips/cp2d.s
new file mode 100644 (file)
index 0000000..c6cca98
--- /dev/null
@@ -0,0 +1,71 @@
+       .text
+foo:
+       ldc2    $0, 0($0)
+       ldc2    $1, 0($0)
+       ldc2    $2, 0($0)
+       ldc2    $3, 0($0)
+       ldc2    $4, 0($0)
+       ldc2    $5, 0($0)
+       ldc2    $6, 0($0)
+       ldc2    $7, 0($0)
+       ldc2    $8, 0($0)
+       ldc2    $9, 0($0)
+       ldc2    $10, 0($0)
+       ldc2    $11, 0($0)
+       ldc2    $12, 0($0)
+       ldc2    $13, 0($0)
+       ldc2    $14, 0($0)
+       ldc2    $15, 0($0)
+       ldc2    $16, 0($0)
+       ldc2    $17, 0($0)
+       ldc2    $18, 0($0)
+       ldc2    $19, 0($0)
+       ldc2    $20, 0($0)
+       ldc2    $21, 0($0)
+       ldc2    $22, 0($0)
+       ldc2    $23, 0($0)
+       ldc2    $24, 0($0)
+       ldc2    $25, 0($0)
+       ldc2    $26, 0($0)
+       ldc2    $27, 0($0)
+       ldc2    $28, 0($0)
+       ldc2    $29, 0($0)
+       ldc2    $30, 0($0)
+       ldc2    $31, 0($0)
+
+       sdc2    $0, 0($0)
+       sdc2    $1, 0($0)
+       sdc2    $2, 0($0)
+       sdc2    $3, 0($0)
+       sdc2    $4, 0($0)
+       sdc2    $5, 0($0)
+       sdc2    $6, 0($0)
+       sdc2    $7, 0($0)
+       sdc2    $8, 0($0)
+       sdc2    $9, 0($0)
+       sdc2    $10, 0($0)
+       sdc2    $11, 0($0)
+       sdc2    $12, 0($0)
+       sdc2    $13, 0($0)
+       sdc2    $14, 0($0)
+       sdc2    $15, 0($0)
+       sdc2    $16, 0($0)
+       sdc2    $17, 0($0)
+       sdc2    $18, 0($0)
+       sdc2    $19, 0($0)
+       sdc2    $20, 0($0)
+       sdc2    $21, 0($0)
+       sdc2    $22, 0($0)
+       sdc2    $23, 0($0)
+       sdc2    $24, 0($0)
+       sdc2    $25, 0($0)
+       sdc2    $26, 0($0)
+       sdc2    $27, 0($0)
+       sdc2    $28, 0($0)
+       sdc2    $29, 0($0)
+       sdc2    $30, 0($0)
+       sdc2    $31, 0($0)
+
+# Force some (non-delay-slot) zero bytes, to make 'objdump' print ...
+       .align  4, 0
+       .space  16
diff --git a/gas/testsuite/gas/mips/cp2m.d b/gas/testsuite/gas/mips/cp2m.d
new file mode 100644 (file)
index 0000000..9147fb0
--- /dev/null
@@ -0,0 +1,72 @@
+#objdump: -d --prefix-addresses --show-raw-insn
+#name: MIPS CP2 memory access instructions
+#as: -32
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> c8000000     lwc2    \$0,0\(zero\)
+[0-9a-f]+ <[^>]*> c8010000     lwc2    \$1,0\(zero\)
+[0-9a-f]+ <[^>]*> c8020000     lwc2    \$2,0\(zero\)
+[0-9a-f]+ <[^>]*> c8030000     lwc2    \$3,0\(zero\)
+[0-9a-f]+ <[^>]*> c8040000     lwc2    \$4,0\(zero\)
+[0-9a-f]+ <[^>]*> c8050000     lwc2    \$5,0\(zero\)
+[0-9a-f]+ <[^>]*> c8060000     lwc2    \$6,0\(zero\)
+[0-9a-f]+ <[^>]*> c8070000     lwc2    \$7,0\(zero\)
+[0-9a-f]+ <[^>]*> c8080000     lwc2    \$8,0\(zero\)
+[0-9a-f]+ <[^>]*> c8090000     lwc2    \$9,0\(zero\)
+[0-9a-f]+ <[^>]*> c80a0000     lwc2    \$10,0\(zero\)
+[0-9a-f]+ <[^>]*> c80b0000     lwc2    \$11,0\(zero\)
+[0-9a-f]+ <[^>]*> c80c0000     lwc2    \$12,0\(zero\)
+[0-9a-f]+ <[^>]*> c80d0000     lwc2    \$13,0\(zero\)
+[0-9a-f]+ <[^>]*> c80e0000     lwc2    \$14,0\(zero\)
+[0-9a-f]+ <[^>]*> c80f0000     lwc2    \$15,0\(zero\)
+[0-9a-f]+ <[^>]*> c8100000     lwc2    \$16,0\(zero\)
+[0-9a-f]+ <[^>]*> c8110000     lwc2    \$17,0\(zero\)
+[0-9a-f]+ <[^>]*> c8120000     lwc2    \$18,0\(zero\)
+[0-9a-f]+ <[^>]*> c8130000     lwc2    \$19,0\(zero\)
+[0-9a-f]+ <[^>]*> c8140000     lwc2    \$20,0\(zero\)
+[0-9a-f]+ <[^>]*> c8150000     lwc2    \$21,0\(zero\)
+[0-9a-f]+ <[^>]*> c8160000     lwc2    \$22,0\(zero\)
+[0-9a-f]+ <[^>]*> c8170000     lwc2    \$23,0\(zero\)
+[0-9a-f]+ <[^>]*> c8180000     lwc2    \$24,0\(zero\)
+[0-9a-f]+ <[^>]*> c8190000     lwc2    \$25,0\(zero\)
+[0-9a-f]+ <[^>]*> c81a0000     lwc2    \$26,0\(zero\)
+[0-9a-f]+ <[^>]*> c81b0000     lwc2    \$27,0\(zero\)
+[0-9a-f]+ <[^>]*> c81c0000     lwc2    \$28,0\(zero\)
+[0-9a-f]+ <[^>]*> c81d0000     lwc2    \$29,0\(zero\)
+[0-9a-f]+ <[^>]*> c81e0000     lwc2    \$30,0\(zero\)
+[0-9a-f]+ <[^>]*> c81f0000     lwc2    \$31,0\(zero\)
+[0-9a-f]+ <[^>]*> e8000000     swc2    \$0,0\(zero\)
+[0-9a-f]+ <[^>]*> e8010000     swc2    \$1,0\(zero\)
+[0-9a-f]+ <[^>]*> e8020000     swc2    \$2,0\(zero\)
+[0-9a-f]+ <[^>]*> e8030000     swc2    \$3,0\(zero\)
+[0-9a-f]+ <[^>]*> e8040000     swc2    \$4,0\(zero\)
+[0-9a-f]+ <[^>]*> e8050000     swc2    \$5,0\(zero\)
+[0-9a-f]+ <[^>]*> e8060000     swc2    \$6,0\(zero\)
+[0-9a-f]+ <[^>]*> e8070000     swc2    \$7,0\(zero\)
+[0-9a-f]+ <[^>]*> e8080000     swc2    \$8,0\(zero\)
+[0-9a-f]+ <[^>]*> e8090000     swc2    \$9,0\(zero\)
+[0-9a-f]+ <[^>]*> e80a0000     swc2    \$10,0\(zero\)
+[0-9a-f]+ <[^>]*> e80b0000     swc2    \$11,0\(zero\)
+[0-9a-f]+ <[^>]*> e80c0000     swc2    \$12,0\(zero\)
+[0-9a-f]+ <[^>]*> e80d0000     swc2    \$13,0\(zero\)
+[0-9a-f]+ <[^>]*> e80e0000     swc2    \$14,0\(zero\)
+[0-9a-f]+ <[^>]*> e80f0000     swc2    \$15,0\(zero\)
+[0-9a-f]+ <[^>]*> e8100000     swc2    \$16,0\(zero\)
+[0-9a-f]+ <[^>]*> e8110000     swc2    \$17,0\(zero\)
+[0-9a-f]+ <[^>]*> e8120000     swc2    \$18,0\(zero\)
+[0-9a-f]+ <[^>]*> e8130000     swc2    \$19,0\(zero\)
+[0-9a-f]+ <[^>]*> e8140000     swc2    \$20,0\(zero\)
+[0-9a-f]+ <[^>]*> e8150000     swc2    \$21,0\(zero\)
+[0-9a-f]+ <[^>]*> e8160000     swc2    \$22,0\(zero\)
+[0-9a-f]+ <[^>]*> e8170000     swc2    \$23,0\(zero\)
+[0-9a-f]+ <[^>]*> e8180000     swc2    \$24,0\(zero\)
+[0-9a-f]+ <[^>]*> e8190000     swc2    \$25,0\(zero\)
+[0-9a-f]+ <[^>]*> e81a0000     swc2    \$26,0\(zero\)
+[0-9a-f]+ <[^>]*> e81b0000     swc2    \$27,0\(zero\)
+[0-9a-f]+ <[^>]*> e81c0000     swc2    \$28,0\(zero\)
+[0-9a-f]+ <[^>]*> e81d0000     swc2    \$29,0\(zero\)
+[0-9a-f]+ <[^>]*> e81e0000     swc2    \$30,0\(zero\)
+[0-9a-f]+ <[^>]*> e81f0000     swc2    \$31,0\(zero\)
+       \.\.\.
diff --git a/gas/testsuite/gas/mips/cp2m.s b/gas/testsuite/gas/mips/cp2m.s
new file mode 100644 (file)
index 0000000..f540543
--- /dev/null
@@ -0,0 +1,72 @@
+       .text
+       .set    noreorder
+foo:
+       lwc2    $0, 0($0)
+       lwc2    $1, 0($0)
+       lwc2    $2, 0($0)
+       lwc2    $3, 0($0)
+       lwc2    $4, 0($0)
+       lwc2    $5, 0($0)
+       lwc2    $6, 0($0)
+       lwc2    $7, 0($0)
+       lwc2    $8, 0($0)
+       lwc2    $9, 0($0)
+       lwc2    $10, 0($0)
+       lwc2    $11, 0($0)
+       lwc2    $12, 0($0)
+       lwc2    $13, 0($0)
+       lwc2    $14, 0($0)
+       lwc2    $15, 0($0)
+       lwc2    $16, 0($0)
+       lwc2    $17, 0($0)
+       lwc2    $18, 0($0)
+       lwc2    $19, 0($0)
+       lwc2    $20, 0($0)
+       lwc2    $21, 0($0)
+       lwc2    $22, 0($0)
+       lwc2    $23, 0($0)
+       lwc2    $24, 0($0)
+       lwc2    $25, 0($0)
+       lwc2    $26, 0($0)
+       lwc2    $27, 0($0)
+       lwc2    $28, 0($0)
+       lwc2    $29, 0($0)
+       lwc2    $30, 0($0)
+       lwc2    $31, 0($0)
+
+       swc2    $0, 0($0)
+       swc2    $1, 0($0)
+       swc2    $2, 0($0)
+       swc2    $3, 0($0)
+       swc2    $4, 0($0)
+       swc2    $5, 0($0)
+       swc2    $6, 0($0)
+       swc2    $7, 0($0)
+       swc2    $8, 0($0)
+       swc2    $9, 0($0)
+       swc2    $10, 0($0)
+       swc2    $11, 0($0)
+       swc2    $12, 0($0)
+       swc2    $13, 0($0)
+       swc2    $14, 0($0)
+       swc2    $15, 0($0)
+       swc2    $16, 0($0)
+       swc2    $17, 0($0)
+       swc2    $18, 0($0)
+       swc2    $19, 0($0)
+       swc2    $20, 0($0)
+       swc2    $21, 0($0)
+       swc2    $22, 0($0)
+       swc2    $23, 0($0)
+       swc2    $24, 0($0)
+       swc2    $25, 0($0)
+       swc2    $26, 0($0)
+       swc2    $27, 0($0)
+       swc2    $28, 0($0)
+       swc2    $29, 0($0)
+       swc2    $30, 0($0)
+       swc2    $31, 0($0)
+
+# Force some (non-delay-slot) zero bytes, to make 'objdump' print ...
+       .align  4, 0
+       .space  16
diff --git a/gas/testsuite/gas/mips/cp3.d b/gas/testsuite/gas/mips/cp3.d
new file mode 100644 (file)
index 0000000..827c92d
--- /dev/null
@@ -0,0 +1,136 @@
+#objdump: -d --prefix-addresses --show-raw-insn
+#name: MIPS CP3 register move instructions
+#as: -32
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> 4c800000     mtc3    zero,\$0
+[0-9a-f]+ <[^>]*> 4c800800     mtc3    zero,\$1
+[0-9a-f]+ <[^>]*> 4c801000     mtc3    zero,\$2
+[0-9a-f]+ <[^>]*> 4c801800     mtc3    zero,\$3
+[0-9a-f]+ <[^>]*> 4c802000     mtc3    zero,\$4
+[0-9a-f]+ <[^>]*> 4c802800     mtc3    zero,\$5
+[0-9a-f]+ <[^>]*> 4c803000     mtc3    zero,\$6
+[0-9a-f]+ <[^>]*> 4c803800     mtc3    zero,\$7
+[0-9a-f]+ <[^>]*> 4c804000     mtc3    zero,\$8
+[0-9a-f]+ <[^>]*> 4c804800     mtc3    zero,\$9
+[0-9a-f]+ <[^>]*> 4c805000     mtc3    zero,\$10
+[0-9a-f]+ <[^>]*> 4c805800     mtc3    zero,\$11
+[0-9a-f]+ <[^>]*> 4c806000     mtc3    zero,\$12
+[0-9a-f]+ <[^>]*> 4c806800     mtc3    zero,\$13
+[0-9a-f]+ <[^>]*> 4c807000     mtc3    zero,\$14
+[0-9a-f]+ <[^>]*> 4c807800     mtc3    zero,\$15
+[0-9a-f]+ <[^>]*> 4c808000     mtc3    zero,\$16
+[0-9a-f]+ <[^>]*> 4c808800     mtc3    zero,\$17
+[0-9a-f]+ <[^>]*> 4c809000     mtc3    zero,\$18
+[0-9a-f]+ <[^>]*> 4c809800     mtc3    zero,\$19
+[0-9a-f]+ <[^>]*> 4c80a000     mtc3    zero,\$20
+[0-9a-f]+ <[^>]*> 4c80a800     mtc3    zero,\$21
+[0-9a-f]+ <[^>]*> 4c80b000     mtc3    zero,\$22
+[0-9a-f]+ <[^>]*> 4c80b800     mtc3    zero,\$23
+[0-9a-f]+ <[^>]*> 4c80c000     mtc3    zero,\$24
+[0-9a-f]+ <[^>]*> 4c80c800     mtc3    zero,\$25
+[0-9a-f]+ <[^>]*> 4c80d000     mtc3    zero,\$26
+[0-9a-f]+ <[^>]*> 4c80d800     mtc3    zero,\$27
+[0-9a-f]+ <[^>]*> 4c80e000     mtc3    zero,\$28
+[0-9a-f]+ <[^>]*> 4c80e800     mtc3    zero,\$29
+[0-9a-f]+ <[^>]*> 4c80f000     mtc3    zero,\$30
+[0-9a-f]+ <[^>]*> 4c80f800     mtc3    zero,\$31
+[0-9a-f]+ <[^>]*> 4c000000     mfc3    zero,\$0
+[0-9a-f]+ <[^>]*> 4c000800     mfc3    zero,\$1
+[0-9a-f]+ <[^>]*> 4c001000     mfc3    zero,\$2
+[0-9a-f]+ <[^>]*> 4c001800     mfc3    zero,\$3
+[0-9a-f]+ <[^>]*> 4c002000     mfc3    zero,\$4
+[0-9a-f]+ <[^>]*> 4c002800     mfc3    zero,\$5
+[0-9a-f]+ <[^>]*> 4c003000     mfc3    zero,\$6
+[0-9a-f]+ <[^>]*> 4c003800     mfc3    zero,\$7
+[0-9a-f]+ <[^>]*> 4c004000     mfc3    zero,\$8
+[0-9a-f]+ <[^>]*> 4c004800     mfc3    zero,\$9
+[0-9a-f]+ <[^>]*> 4c005000     mfc3    zero,\$10
+[0-9a-f]+ <[^>]*> 4c005800     mfc3    zero,\$11
+[0-9a-f]+ <[^>]*> 4c006000     mfc3    zero,\$12
+[0-9a-f]+ <[^>]*> 4c006800     mfc3    zero,\$13
+[0-9a-f]+ <[^>]*> 4c007000     mfc3    zero,\$14
+[0-9a-f]+ <[^>]*> 4c007800     mfc3    zero,\$15
+[0-9a-f]+ <[^>]*> 4c008000     mfc3    zero,\$16
+[0-9a-f]+ <[^>]*> 4c008800     mfc3    zero,\$17
+[0-9a-f]+ <[^>]*> 4c009000     mfc3    zero,\$18
+[0-9a-f]+ <[^>]*> 4c009800     mfc3    zero,\$19
+[0-9a-f]+ <[^>]*> 4c00a000     mfc3    zero,\$20
+[0-9a-f]+ <[^>]*> 4c00a800     mfc3    zero,\$21
+[0-9a-f]+ <[^>]*> 4c00b000     mfc3    zero,\$22
+[0-9a-f]+ <[^>]*> 4c00b800     mfc3    zero,\$23
+[0-9a-f]+ <[^>]*> 4c00c000     mfc3    zero,\$24
+[0-9a-f]+ <[^>]*> 4c00c800     mfc3    zero,\$25
+[0-9a-f]+ <[^>]*> 4c00d000     mfc3    zero,\$26
+[0-9a-f]+ <[^>]*> 4c00d800     mfc3    zero,\$27
+[0-9a-f]+ <[^>]*> 4c00e000     mfc3    zero,\$28
+[0-9a-f]+ <[^>]*> 4c00e800     mfc3    zero,\$29
+[0-9a-f]+ <[^>]*> 4c00f000     mfc3    zero,\$30
+[0-9a-f]+ <[^>]*> 4c00f800     mfc3    zero,\$31
+[0-9a-f]+ <[^>]*> 4cc00000     ctc3    zero,\$0
+[0-9a-f]+ <[^>]*> 4cc00800     ctc3    zero,\$1
+[0-9a-f]+ <[^>]*> 4cc01000     ctc3    zero,\$2
+[0-9a-f]+ <[^>]*> 4cc01800     ctc3    zero,\$3
+[0-9a-f]+ <[^>]*> 4cc02000     ctc3    zero,\$4
+[0-9a-f]+ <[^>]*> 4cc02800     ctc3    zero,\$5
+[0-9a-f]+ <[^>]*> 4cc03000     ctc3    zero,\$6
+[0-9a-f]+ <[^>]*> 4cc03800     ctc3    zero,\$7
+[0-9a-f]+ <[^>]*> 4cc04000     ctc3    zero,\$8
+[0-9a-f]+ <[^>]*> 4cc04800     ctc3    zero,\$9
+[0-9a-f]+ <[^>]*> 4cc05000     ctc3    zero,\$10
+[0-9a-f]+ <[^>]*> 4cc05800     ctc3    zero,\$11
+[0-9a-f]+ <[^>]*> 4cc06000     ctc3    zero,\$12
+[0-9a-f]+ <[^>]*> 4cc06800     ctc3    zero,\$13
+[0-9a-f]+ <[^>]*> 4cc07000     ctc3    zero,\$14
+[0-9a-f]+ <[^>]*> 4cc07800     ctc3    zero,\$15
+[0-9a-f]+ <[^>]*> 4cc08000     ctc3    zero,\$16
+[0-9a-f]+ <[^>]*> 4cc08800     ctc3    zero,\$17
+[0-9a-f]+ <[^>]*> 4cc09000     ctc3    zero,\$18
+[0-9a-f]+ <[^>]*> 4cc09800     ctc3    zero,\$19
+[0-9a-f]+ <[^>]*> 4cc0a000     ctc3    zero,\$20
+[0-9a-f]+ <[^>]*> 4cc0a800     ctc3    zero,\$21
+[0-9a-f]+ <[^>]*> 4cc0b000     ctc3    zero,\$22
+[0-9a-f]+ <[^>]*> 4cc0b800     ctc3    zero,\$23
+[0-9a-f]+ <[^>]*> 4cc0c000     ctc3    zero,\$24
+[0-9a-f]+ <[^>]*> 4cc0c800     ctc3    zero,\$25
+[0-9a-f]+ <[^>]*> 4cc0d000     ctc3    zero,\$26
+[0-9a-f]+ <[^>]*> 4cc0d800     ctc3    zero,\$27
+[0-9a-f]+ <[^>]*> 4cc0e000     ctc3    zero,\$28
+[0-9a-f]+ <[^>]*> 4cc0e800     ctc3    zero,\$29
+[0-9a-f]+ <[^>]*> 4cc0f000     ctc3    zero,\$30
+[0-9a-f]+ <[^>]*> 4cc0f800     ctc3    zero,\$31
+[0-9a-f]+ <[^>]*> 4c400000     cfc3    zero,\$0
+[0-9a-f]+ <[^>]*> 4c400800     cfc3    zero,\$1
+[0-9a-f]+ <[^>]*> 4c401000     cfc3    zero,\$2
+[0-9a-f]+ <[^>]*> 4c401800     cfc3    zero,\$3
+[0-9a-f]+ <[^>]*> 4c402000     cfc3    zero,\$4
+[0-9a-f]+ <[^>]*> 4c402800     cfc3    zero,\$5
+[0-9a-f]+ <[^>]*> 4c403000     cfc3    zero,\$6
+[0-9a-f]+ <[^>]*> 4c403800     cfc3    zero,\$7
+[0-9a-f]+ <[^>]*> 4c404000     cfc3    zero,\$8
+[0-9a-f]+ <[^>]*> 4c404800     cfc3    zero,\$9
+[0-9a-f]+ <[^>]*> 4c405000     cfc3    zero,\$10
+[0-9a-f]+ <[^>]*> 4c405800     cfc3    zero,\$11
+[0-9a-f]+ <[^>]*> 4c406000     cfc3    zero,\$12
+[0-9a-f]+ <[^>]*> 4c406800     cfc3    zero,\$13
+[0-9a-f]+ <[^>]*> 4c407000     cfc3    zero,\$14
+[0-9a-f]+ <[^>]*> 4c407800     cfc3    zero,\$15
+[0-9a-f]+ <[^>]*> 4c408000     cfc3    zero,\$16
+[0-9a-f]+ <[^>]*> 4c408800     cfc3    zero,\$17
+[0-9a-f]+ <[^>]*> 4c409000     cfc3    zero,\$18
+[0-9a-f]+ <[^>]*> 4c409800     cfc3    zero,\$19
+[0-9a-f]+ <[^>]*> 4c40a000     cfc3    zero,\$20
+[0-9a-f]+ <[^>]*> 4c40a800     cfc3    zero,\$21
+[0-9a-f]+ <[^>]*> 4c40b000     cfc3    zero,\$22
+[0-9a-f]+ <[^>]*> 4c40b800     cfc3    zero,\$23
+[0-9a-f]+ <[^>]*> 4c40c000     cfc3    zero,\$24
+[0-9a-f]+ <[^>]*> 4c40c800     cfc3    zero,\$25
+[0-9a-f]+ <[^>]*> 4c40d000     cfc3    zero,\$26
+[0-9a-f]+ <[^>]*> 4c40d800     cfc3    zero,\$27
+[0-9a-f]+ <[^>]*> 4c40e000     cfc3    zero,\$28
+[0-9a-f]+ <[^>]*> 4c40e800     cfc3    zero,\$29
+[0-9a-f]+ <[^>]*> 4c40f000     cfc3    zero,\$30
+[0-9a-f]+ <[^>]*> 4c40f800     cfc3    zero,\$31
+       \.\.\.
diff --git a/gas/testsuite/gas/mips/cp3.s b/gas/testsuite/gas/mips/cp3.s
new file mode 100644 (file)
index 0000000..5fa8504
--- /dev/null
@@ -0,0 +1,138 @@
+       .text
+       .set    noreorder
+foo:
+       mtc3    $0, $0
+       mtc3    $0, $1
+       mtc3    $0, $2
+       mtc3    $0, $3
+       mtc3    $0, $4
+       mtc3    $0, $5
+       mtc3    $0, $6
+       mtc3    $0, $7
+       mtc3    $0, $8
+       mtc3    $0, $9
+       mtc3    $0, $10
+       mtc3    $0, $11
+       mtc3    $0, $12
+       mtc3    $0, $13
+       mtc3    $0, $14
+       mtc3    $0, $15
+       mtc3    $0, $16
+       mtc3    $0, $17
+       mtc3    $0, $18
+       mtc3    $0, $19
+       mtc3    $0, $20
+       mtc3    $0, $21
+       mtc3    $0, $22
+       mtc3    $0, $23
+       mtc3    $0, $24
+       mtc3    $0, $25
+       mtc3    $0, $26
+       mtc3    $0, $27
+       mtc3    $0, $28
+       mtc3    $0, $29
+       mtc3    $0, $30
+       mtc3    $0, $31
+
+       mfc3    $0, $0
+       mfc3    $0, $1
+       mfc3    $0, $2
+       mfc3    $0, $3
+       mfc3    $0, $4
+       mfc3    $0, $5
+       mfc3    $0, $6
+       mfc3    $0, $7
+       mfc3    $0, $8
+       mfc3    $0, $9
+       mfc3    $0, $10
+       mfc3    $0, $11
+       mfc3    $0, $12
+       mfc3    $0, $13
+       mfc3    $0, $14
+       mfc3    $0, $15
+       mfc3    $0, $16
+       mfc3    $0, $17
+       mfc3    $0, $18
+       mfc3    $0, $19
+       mfc3    $0, $20
+       mfc3    $0, $21
+       mfc3    $0, $22
+       mfc3    $0, $23
+       mfc3    $0, $24
+       mfc3    $0, $25
+       mfc3    $0, $26
+       mfc3    $0, $27
+       mfc3    $0, $28
+       mfc3    $0, $29
+       mfc3    $0, $30
+       mfc3    $0, $31
+
+       ctc3    $0, $0
+       ctc3    $0, $1
+       ctc3    $0, $2
+       ctc3    $0, $3
+       ctc3    $0, $4
+       ctc3    $0, $5
+       ctc3    $0, $6
+       ctc3    $0, $7
+       ctc3    $0, $8
+       ctc3    $0, $9
+       ctc3    $0, $10
+       ctc3    $0, $11
+       ctc3    $0, $12
+       ctc3    $0, $13
+       ctc3    $0, $14
+       ctc3    $0, $15
+       ctc3    $0, $16
+       ctc3    $0, $17
+       ctc3    $0, $18
+       ctc3    $0, $19
+       ctc3    $0, $20
+       ctc3    $0, $21
+       ctc3    $0, $22
+       ctc3    $0, $23
+       ctc3    $0, $24
+       ctc3    $0, $25
+       ctc3    $0, $26
+       ctc3    $0, $27
+       ctc3    $0, $28
+       ctc3    $0, $29
+       ctc3    $0, $30
+       ctc3    $0, $31
+
+       cfc3    $0, $0
+       cfc3    $0, $1
+       cfc3    $0, $2
+       cfc3    $0, $3
+       cfc3    $0, $4
+       cfc3    $0, $5
+       cfc3    $0, $6
+       cfc3    $0, $7
+       cfc3    $0, $8
+       cfc3    $0, $9
+       cfc3    $0, $10
+       cfc3    $0, $11
+       cfc3    $0, $12
+       cfc3    $0, $13
+       cfc3    $0, $14
+       cfc3    $0, $15
+       cfc3    $0, $16
+       cfc3    $0, $17
+       cfc3    $0, $18
+       cfc3    $0, $19
+       cfc3    $0, $20
+       cfc3    $0, $21
+       cfc3    $0, $22
+       cfc3    $0, $23
+       cfc3    $0, $24
+       cfc3    $0, $25
+       cfc3    $0, $26
+       cfc3    $0, $27
+       cfc3    $0, $28
+       cfc3    $0, $29
+       cfc3    $0, $30
+       cfc3    $0, $31
+
+# Force some (non-delay-slot) zero bytes, to make 'objdump' print ...
+       .align  4, 0
+       .space  16
diff --git a/gas/testsuite/gas/mips/cp3d.d b/gas/testsuite/gas/mips/cp3d.d
new file mode 100644 (file)
index 0000000..7c93093
--- /dev/null
@@ -0,0 +1,72 @@
+#objdump: -d --prefix-addresses --show-raw-insn
+#name: MIPS CP3 doubleword memory access instructions
+#as: -32
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> dc000000     ldc3    \$0,0\(zero\)
+[0-9a-f]+ <[^>]*> dc010000     ldc3    \$1,0\(zero\)
+[0-9a-f]+ <[^>]*> dc020000     ldc3    \$2,0\(zero\)
+[0-9a-f]+ <[^>]*> dc030000     ldc3    \$3,0\(zero\)
+[0-9a-f]+ <[^>]*> dc040000     ldc3    \$4,0\(zero\)
+[0-9a-f]+ <[^>]*> dc050000     ldc3    \$5,0\(zero\)
+[0-9a-f]+ <[^>]*> dc060000     ldc3    \$6,0\(zero\)
+[0-9a-f]+ <[^>]*> dc070000     ldc3    \$7,0\(zero\)
+[0-9a-f]+ <[^>]*> dc080000     ldc3    \$8,0\(zero\)
+[0-9a-f]+ <[^>]*> dc090000     ldc3    \$9,0\(zero\)
+[0-9a-f]+ <[^>]*> dc0a0000     ldc3    \$10,0\(zero\)
+[0-9a-f]+ <[^>]*> dc0b0000     ldc3    \$11,0\(zero\)
+[0-9a-f]+ <[^>]*> dc0c0000     ldc3    \$12,0\(zero\)
+[0-9a-f]+ <[^>]*> dc0d0000     ldc3    \$13,0\(zero\)
+[0-9a-f]+ <[^>]*> dc0e0000     ldc3    \$14,0\(zero\)
+[0-9a-f]+ <[^>]*> dc0f0000     ldc3    \$15,0\(zero\)
+[0-9a-f]+ <[^>]*> dc100000     ldc3    \$16,0\(zero\)
+[0-9a-f]+ <[^>]*> dc110000     ldc3    \$17,0\(zero\)
+[0-9a-f]+ <[^>]*> dc120000     ldc3    \$18,0\(zero\)
+[0-9a-f]+ <[^>]*> dc130000     ldc3    \$19,0\(zero\)
+[0-9a-f]+ <[^>]*> dc140000     ldc3    \$20,0\(zero\)
+[0-9a-f]+ <[^>]*> dc150000     ldc3    \$21,0\(zero\)
+[0-9a-f]+ <[^>]*> dc160000     ldc3    \$22,0\(zero\)
+[0-9a-f]+ <[^>]*> dc170000     ldc3    \$23,0\(zero\)
+[0-9a-f]+ <[^>]*> dc180000     ldc3    \$24,0\(zero\)
+[0-9a-f]+ <[^>]*> dc190000     ldc3    \$25,0\(zero\)
+[0-9a-f]+ <[^>]*> dc1a0000     ldc3    \$26,0\(zero\)
+[0-9a-f]+ <[^>]*> dc1b0000     ldc3    \$27,0\(zero\)
+[0-9a-f]+ <[^>]*> dc1c0000     ldc3    \$28,0\(zero\)
+[0-9a-f]+ <[^>]*> dc1d0000     ldc3    \$29,0\(zero\)
+[0-9a-f]+ <[^>]*> dc1e0000     ldc3    \$30,0\(zero\)
+[0-9a-f]+ <[^>]*> dc1f0000     ldc3    \$31,0\(zero\)
+[0-9a-f]+ <[^>]*> fc000000     sdc3    \$0,0\(zero\)
+[0-9a-f]+ <[^>]*> fc010000     sdc3    \$1,0\(zero\)
+[0-9a-f]+ <[^>]*> fc020000     sdc3    \$2,0\(zero\)
+[0-9a-f]+ <[^>]*> fc030000     sdc3    \$3,0\(zero\)
+[0-9a-f]+ <[^>]*> fc040000     sdc3    \$4,0\(zero\)
+[0-9a-f]+ <[^>]*> fc050000     sdc3    \$5,0\(zero\)
+[0-9a-f]+ <[^>]*> fc060000     sdc3    \$6,0\(zero\)
+[0-9a-f]+ <[^>]*> fc070000     sdc3    \$7,0\(zero\)
+[0-9a-f]+ <[^>]*> fc080000     sdc3    \$8,0\(zero\)
+[0-9a-f]+ <[^>]*> fc090000     sdc3    \$9,0\(zero\)
+[0-9a-f]+ <[^>]*> fc0a0000     sdc3    \$10,0\(zero\)
+[0-9a-f]+ <[^>]*> fc0b0000     sdc3    \$11,0\(zero\)
+[0-9a-f]+ <[^>]*> fc0c0000     sdc3    \$12,0\(zero\)
+[0-9a-f]+ <[^>]*> fc0d0000     sdc3    \$13,0\(zero\)
+[0-9a-f]+ <[^>]*> fc0e0000     sdc3    \$14,0\(zero\)
+[0-9a-f]+ <[^>]*> fc0f0000     sdc3    \$15,0\(zero\)
+[0-9a-f]+ <[^>]*> fc100000     sdc3    \$16,0\(zero\)
+[0-9a-f]+ <[^>]*> fc110000     sdc3    \$17,0\(zero\)
+[0-9a-f]+ <[^>]*> fc120000     sdc3    \$18,0\(zero\)
+[0-9a-f]+ <[^>]*> fc130000     sdc3    \$19,0\(zero\)
+[0-9a-f]+ <[^>]*> fc140000     sdc3    \$20,0\(zero\)
+[0-9a-f]+ <[^>]*> fc150000     sdc3    \$21,0\(zero\)
+[0-9a-f]+ <[^>]*> fc160000     sdc3    \$22,0\(zero\)
+[0-9a-f]+ <[^>]*> fc170000     sdc3    \$23,0\(zero\)
+[0-9a-f]+ <[^>]*> fc180000     sdc3    \$24,0\(zero\)
+[0-9a-f]+ <[^>]*> fc190000     sdc3    \$25,0\(zero\)
+[0-9a-f]+ <[^>]*> fc1a0000     sdc3    \$26,0\(zero\)
+[0-9a-f]+ <[^>]*> fc1b0000     sdc3    \$27,0\(zero\)
+[0-9a-f]+ <[^>]*> fc1c0000     sdc3    \$28,0\(zero\)
+[0-9a-f]+ <[^>]*> fc1d0000     sdc3    \$29,0\(zero\)
+[0-9a-f]+ <[^>]*> fc1e0000     sdc3    \$30,0\(zero\)
+[0-9a-f]+ <[^>]*> fc1f0000     sdc3    \$31,0\(zero\)
+       \.\.\.
diff --git a/gas/testsuite/gas/mips/cp3d.s b/gas/testsuite/gas/mips/cp3d.s
new file mode 100644 (file)
index 0000000..f4816ca
--- /dev/null
@@ -0,0 +1,72 @@
+       .text
+       .set    noreorder
+foo:
+       ldc3    $0, 0($0)
+       ldc3    $1, 0($0)
+       ldc3    $2, 0($0)
+       ldc3    $3, 0($0)
+       ldc3    $4, 0($0)
+       ldc3    $5, 0($0)
+       ldc3    $6, 0($0)
+       ldc3    $7, 0($0)
+       ldc3    $8, 0($0)
+       ldc3    $9, 0($0)
+       ldc3    $10, 0($0)
+       ldc3    $11, 0($0)
+       ldc3    $12, 0($0)
+       ldc3    $13, 0($0)
+       ldc3    $14, 0($0)
+       ldc3    $15, 0($0)
+       ldc3    $16, 0($0)
+       ldc3    $17, 0($0)
+       ldc3    $18, 0($0)
+       ldc3    $19, 0($0)
+       ldc3    $20, 0($0)
+       ldc3    $21, 0($0)
+       ldc3    $22, 0($0)
+       ldc3    $23, 0($0)
+       ldc3    $24, 0($0)
+       ldc3    $25, 0($0)
+       ldc3    $26, 0($0)
+       ldc3    $27, 0($0)
+       ldc3    $28, 0($0)
+       ldc3    $29, 0($0)
+       ldc3    $30, 0($0)
+       ldc3    $31, 0($0)
+
+       sdc3    $0, 0($0)
+       sdc3    $1, 0($0)
+       sdc3    $2, 0($0)
+       sdc3    $3, 0($0)
+       sdc3    $4, 0($0)
+       sdc3    $5, 0($0)
+       sdc3    $6, 0($0)
+       sdc3    $7, 0($0)
+       sdc3    $8, 0($0)
+       sdc3    $9, 0($0)
+       sdc3    $10, 0($0)
+       sdc3    $11, 0($0)
+       sdc3    $12, 0($0)
+       sdc3    $13, 0($0)
+       sdc3    $14, 0($0)
+       sdc3    $15, 0($0)
+       sdc3    $16, 0($0)
+       sdc3    $17, 0($0)
+       sdc3    $18, 0($0)
+       sdc3    $19, 0($0)
+       sdc3    $20, 0($0)
+       sdc3    $21, 0($0)
+       sdc3    $22, 0($0)
+       sdc3    $23, 0($0)
+       sdc3    $24, 0($0)
+       sdc3    $25, 0($0)
+       sdc3    $26, 0($0)
+       sdc3    $27, 0($0)
+       sdc3    $28, 0($0)
+       sdc3    $29, 0($0)
+       sdc3    $30, 0($0)
+       sdc3    $31, 0($0)
+
+# Force some (non-delay-slot) zero bytes, to make 'objdump' print ...
+       .align  4, 0
+       .space  16
diff --git a/gas/testsuite/gas/mips/cp3m.d b/gas/testsuite/gas/mips/cp3m.d
new file mode 100644 (file)
index 0000000..094d6f6
--- /dev/null
@@ -0,0 +1,72 @@
+#objdump: -d --prefix-addresses --show-raw-insn
+#name: MIPS CP3 memory access instructions
+#as: -32
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> cc000000     lwc3    \$0,0\(zero\)
+[0-9a-f]+ <[^>]*> cc010000     lwc3    \$1,0\(zero\)
+[0-9a-f]+ <[^>]*> cc020000     lwc3    \$2,0\(zero\)
+[0-9a-f]+ <[^>]*> cc030000     lwc3    \$3,0\(zero\)
+[0-9a-f]+ <[^>]*> cc040000     lwc3    \$4,0\(zero\)
+[0-9a-f]+ <[^>]*> cc050000     lwc3    \$5,0\(zero\)
+[0-9a-f]+ <[^>]*> cc060000     lwc3    \$6,0\(zero\)
+[0-9a-f]+ <[^>]*> cc070000     lwc3    \$7,0\(zero\)
+[0-9a-f]+ <[^>]*> cc080000     lwc3    \$8,0\(zero\)
+[0-9a-f]+ <[^>]*> cc090000     lwc3    \$9,0\(zero\)
+[0-9a-f]+ <[^>]*> cc0a0000     lwc3    \$10,0\(zero\)
+[0-9a-f]+ <[^>]*> cc0b0000     lwc3    \$11,0\(zero\)
+[0-9a-f]+ <[^>]*> cc0c0000     lwc3    \$12,0\(zero\)
+[0-9a-f]+ <[^>]*> cc0d0000     lwc3    \$13,0\(zero\)
+[0-9a-f]+ <[^>]*> cc0e0000     lwc3    \$14,0\(zero\)
+[0-9a-f]+ <[^>]*> cc0f0000     lwc3    \$15,0\(zero\)
+[0-9a-f]+ <[^>]*> cc100000     lwc3    \$16,0\(zero\)
+[0-9a-f]+ <[^>]*> cc110000     lwc3    \$17,0\(zero\)
+[0-9a-f]+ <[^>]*> cc120000     lwc3    \$18,0\(zero\)
+[0-9a-f]+ <[^>]*> cc130000     lwc3    \$19,0\(zero\)
+[0-9a-f]+ <[^>]*> cc140000     lwc3    \$20,0\(zero\)
+[0-9a-f]+ <[^>]*> cc150000     lwc3    \$21,0\(zero\)
+[0-9a-f]+ <[^>]*> cc160000     lwc3    \$22,0\(zero\)
+[0-9a-f]+ <[^>]*> cc170000     lwc3    \$23,0\(zero\)
+[0-9a-f]+ <[^>]*> cc180000     lwc3    \$24,0\(zero\)
+[0-9a-f]+ <[^>]*> cc190000     lwc3    \$25,0\(zero\)
+[0-9a-f]+ <[^>]*> cc1a0000     lwc3    \$26,0\(zero\)
+[0-9a-f]+ <[^>]*> cc1b0000     lwc3    \$27,0\(zero\)
+[0-9a-f]+ <[^>]*> cc1c0000     lwc3    \$28,0\(zero\)
+[0-9a-f]+ <[^>]*> cc1d0000     lwc3    \$29,0\(zero\)
+[0-9a-f]+ <[^>]*> cc1e0000     lwc3    \$30,0\(zero\)
+[0-9a-f]+ <[^>]*> cc1f0000     lwc3    \$31,0\(zero\)
+[0-9a-f]+ <[^>]*> ec000000     swc3    \$0,0\(zero\)
+[0-9a-f]+ <[^>]*> ec010000     swc3    \$1,0\(zero\)
+[0-9a-f]+ <[^>]*> ec020000     swc3    \$2,0\(zero\)
+[0-9a-f]+ <[^>]*> ec030000     swc3    \$3,0\(zero\)
+[0-9a-f]+ <[^>]*> ec040000     swc3    \$4,0\(zero\)
+[0-9a-f]+ <[^>]*> ec050000     swc3    \$5,0\(zero\)
+[0-9a-f]+ <[^>]*> ec060000     swc3    \$6,0\(zero\)
+[0-9a-f]+ <[^>]*> ec070000     swc3    \$7,0\(zero\)
+[0-9a-f]+ <[^>]*> ec080000     swc3    \$8,0\(zero\)
+[0-9a-f]+ <[^>]*> ec090000     swc3    \$9,0\(zero\)
+[0-9a-f]+ <[^>]*> ec0a0000     swc3    \$10,0\(zero\)
+[0-9a-f]+ <[^>]*> ec0b0000     swc3    \$11,0\(zero\)
+[0-9a-f]+ <[^>]*> ec0c0000     swc3    \$12,0\(zero\)
+[0-9a-f]+ <[^>]*> ec0d0000     swc3    \$13,0\(zero\)
+[0-9a-f]+ <[^>]*> ec0e0000     swc3    \$14,0\(zero\)
+[0-9a-f]+ <[^>]*> ec0f0000     swc3    \$15,0\(zero\)
+[0-9a-f]+ <[^>]*> ec100000     swc3    \$16,0\(zero\)
+[0-9a-f]+ <[^>]*> ec110000     swc3    \$17,0\(zero\)
+[0-9a-f]+ <[^>]*> ec120000     swc3    \$18,0\(zero\)
+[0-9a-f]+ <[^>]*> ec130000     swc3    \$19,0\(zero\)
+[0-9a-f]+ <[^>]*> ec140000     swc3    \$20,0\(zero\)
+[0-9a-f]+ <[^>]*> ec150000     swc3    \$21,0\(zero\)
+[0-9a-f]+ <[^>]*> ec160000     swc3    \$22,0\(zero\)
+[0-9a-f]+ <[^>]*> ec170000     swc3    \$23,0\(zero\)
+[0-9a-f]+ <[^>]*> ec180000     swc3    \$24,0\(zero\)
+[0-9a-f]+ <[^>]*> ec190000     swc3    \$25,0\(zero\)
+[0-9a-f]+ <[^>]*> ec1a0000     swc3    \$26,0\(zero\)
+[0-9a-f]+ <[^>]*> ec1b0000     swc3    \$27,0\(zero\)
+[0-9a-f]+ <[^>]*> ec1c0000     swc3    \$28,0\(zero\)
+[0-9a-f]+ <[^>]*> ec1d0000     swc3    \$29,0\(zero\)
+[0-9a-f]+ <[^>]*> ec1e0000     swc3    \$30,0\(zero\)
+[0-9a-f]+ <[^>]*> ec1f0000     swc3    \$31,0\(zero\)
+       \.\.\.
diff --git a/gas/testsuite/gas/mips/cp3m.s b/gas/testsuite/gas/mips/cp3m.s
new file mode 100644 (file)
index 0000000..0b23db7
--- /dev/null
@@ -0,0 +1,72 @@
+       .text
+       .set    noreorder
+foo:
+       lwc3    $0, 0($0)
+       lwc3    $1, 0($0)
+       lwc3    $2, 0($0)
+       lwc3    $3, 0($0)
+       lwc3    $4, 0($0)
+       lwc3    $5, 0($0)
+       lwc3    $6, 0($0)
+       lwc3    $7, 0($0)
+       lwc3    $8, 0($0)
+       lwc3    $9, 0($0)
+       lwc3    $10, 0($0)
+       lwc3    $11, 0($0)
+       lwc3    $12, 0($0)
+       lwc3    $13, 0($0)
+       lwc3    $14, 0($0)
+       lwc3    $15, 0($0)
+       lwc3    $16, 0($0)
+       lwc3    $17, 0($0)
+       lwc3    $18, 0($0)
+       lwc3    $19, 0($0)
+       lwc3    $20, 0($0)
+       lwc3    $21, 0($0)
+       lwc3    $22, 0($0)
+       lwc3    $23, 0($0)
+       lwc3    $24, 0($0)
+       lwc3    $25, 0($0)
+       lwc3    $26, 0($0)
+       lwc3    $27, 0($0)
+       lwc3    $28, 0($0)
+       lwc3    $29, 0($0)
+       lwc3    $30, 0($0)
+       lwc3    $31, 0($0)
+
+       swc3    $0, 0($0)
+       swc3    $1, 0($0)
+       swc3    $2, 0($0)
+       swc3    $3, 0($0)
+       swc3    $4, 0($0)
+       swc3    $5, 0($0)
+       swc3    $6, 0($0)
+       swc3    $7, 0($0)
+       swc3    $8, 0($0)
+       swc3    $9, 0($0)
+       swc3    $10, 0($0)
+       swc3    $11, 0($0)
+       swc3    $12, 0($0)
+       swc3    $13, 0($0)
+       swc3    $14, 0($0)
+       swc3    $15, 0($0)
+       swc3    $16, 0($0)
+       swc3    $17, 0($0)
+       swc3    $18, 0($0)
+       swc3    $19, 0($0)
+       swc3    $20, 0($0)
+       swc3    $21, 0($0)
+       swc3    $22, 0($0)
+       swc3    $23, 0($0)
+       swc3    $24, 0($0)
+       swc3    $25, 0($0)
+       swc3    $26, 0($0)
+       swc3    $27, 0($0)
+       swc3    $28, 0($0)
+       swc3    $29, 0($0)
+       swc3    $30, 0($0)
+       swc3    $31, 0($0)
+
+# Force some (non-delay-slot) zero bytes, to make 'objdump' print ...
+       .align  4, 0
+       .space  16
diff --git a/gas/testsuite/gas/mips/micromips@cp2-64.d b/gas/testsuite/gas/mips/micromips@cp2-64.d
new file mode 100644 (file)
index 0000000..133883e
--- /dev/null
@@ -0,0 +1,73 @@
+#objdump: -d --prefix-addresses --show-raw-insn
+#name: MIPS CP2 64-bit move instructions
+#as: -32
+#source: cp2-64\.s
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> 0000 7d3c    dmtc2   zero,\$0
+[0-9a-f]+ <[^>]*> 0001 7d3c    dmtc2   zero,\$1
+[0-9a-f]+ <[^>]*> 0002 7d3c    dmtc2   zero,\$2
+[0-9a-f]+ <[^>]*> 0003 7d3c    dmtc2   zero,\$3
+[0-9a-f]+ <[^>]*> 0004 7d3c    dmtc2   zero,\$4
+[0-9a-f]+ <[^>]*> 0005 7d3c    dmtc2   zero,\$5
+[0-9a-f]+ <[^>]*> 0006 7d3c    dmtc2   zero,\$6
+[0-9a-f]+ <[^>]*> 0007 7d3c    dmtc2   zero,\$7
+[0-9a-f]+ <[^>]*> 0008 7d3c    dmtc2   zero,\$8
+[0-9a-f]+ <[^>]*> 0009 7d3c    dmtc2   zero,\$9
+[0-9a-f]+ <[^>]*> 000a 7d3c    dmtc2   zero,\$10
+[0-9a-f]+ <[^>]*> 000b 7d3c    dmtc2   zero,\$11
+[0-9a-f]+ <[^>]*> 000c 7d3c    dmtc2   zero,\$12
+[0-9a-f]+ <[^>]*> 000d 7d3c    dmtc2   zero,\$13
+[0-9a-f]+ <[^>]*> 000e 7d3c    dmtc2   zero,\$14
+[0-9a-f]+ <[^>]*> 000f 7d3c    dmtc2   zero,\$15
+[0-9a-f]+ <[^>]*> 0010 7d3c    dmtc2   zero,\$16
+[0-9a-f]+ <[^>]*> 0011 7d3c    dmtc2   zero,\$17
+[0-9a-f]+ <[^>]*> 0012 7d3c    dmtc2   zero,\$18
+[0-9a-f]+ <[^>]*> 0013 7d3c    dmtc2   zero,\$19
+[0-9a-f]+ <[^>]*> 0014 7d3c    dmtc2   zero,\$20
+[0-9a-f]+ <[^>]*> 0015 7d3c    dmtc2   zero,\$21
+[0-9a-f]+ <[^>]*> 0016 7d3c    dmtc2   zero,\$22
+[0-9a-f]+ <[^>]*> 0017 7d3c    dmtc2   zero,\$23
+[0-9a-f]+ <[^>]*> 0018 7d3c    dmtc2   zero,\$24
+[0-9a-f]+ <[^>]*> 0019 7d3c    dmtc2   zero,\$25
+[0-9a-f]+ <[^>]*> 001a 7d3c    dmtc2   zero,\$26
+[0-9a-f]+ <[^>]*> 001b 7d3c    dmtc2   zero,\$27
+[0-9a-f]+ <[^>]*> 001c 7d3c    dmtc2   zero,\$28
+[0-9a-f]+ <[^>]*> 001d 7d3c    dmtc2   zero,\$29
+[0-9a-f]+ <[^>]*> 001e 7d3c    dmtc2   zero,\$30
+[0-9a-f]+ <[^>]*> 001f 7d3c    dmtc2   zero,\$31
+[0-9a-f]+ <[^>]*> 0000 6d3c    dmfc2   zero,\$0
+[0-9a-f]+ <[^>]*> 0001 6d3c    dmfc2   zero,\$1
+[0-9a-f]+ <[^>]*> 0002 6d3c    dmfc2   zero,\$2
+[0-9a-f]+ <[^>]*> 0003 6d3c    dmfc2   zero,\$3
+[0-9a-f]+ <[^>]*> 0004 6d3c    dmfc2   zero,\$4
+[0-9a-f]+ <[^>]*> 0005 6d3c    dmfc2   zero,\$5
+[0-9a-f]+ <[^>]*> 0006 6d3c    dmfc2   zero,\$6
+[0-9a-f]+ <[^>]*> 0007 6d3c    dmfc2   zero,\$7
+[0-9a-f]+ <[^>]*> 0008 6d3c    dmfc2   zero,\$8
+[0-9a-f]+ <[^>]*> 0009 6d3c    dmfc2   zero,\$9
+[0-9a-f]+ <[^>]*> 000a 6d3c    dmfc2   zero,\$10
+[0-9a-f]+ <[^>]*> 000b 6d3c    dmfc2   zero,\$11
+[0-9a-f]+ <[^>]*> 000c 6d3c    dmfc2   zero,\$12
+[0-9a-f]+ <[^>]*> 000d 6d3c    dmfc2   zero,\$13
+[0-9a-f]+ <[^>]*> 000e 6d3c    dmfc2   zero,\$14
+[0-9a-f]+ <[^>]*> 000f 6d3c    dmfc2   zero,\$15
+[0-9a-f]+ <[^>]*> 0010 6d3c    dmfc2   zero,\$16
+[0-9a-f]+ <[^>]*> 0011 6d3c    dmfc2   zero,\$17
+[0-9a-f]+ <[^>]*> 0012 6d3c    dmfc2   zero,\$18
+[0-9a-f]+ <[^>]*> 0013 6d3c    dmfc2   zero,\$19
+[0-9a-f]+ <[^>]*> 0014 6d3c    dmfc2   zero,\$20
+[0-9a-f]+ <[^>]*> 0015 6d3c    dmfc2   zero,\$21
+[0-9a-f]+ <[^>]*> 0016 6d3c    dmfc2   zero,\$22
+[0-9a-f]+ <[^>]*> 0017 6d3c    dmfc2   zero,\$23
+[0-9a-f]+ <[^>]*> 0018 6d3c    dmfc2   zero,\$24
+[0-9a-f]+ <[^>]*> 0019 6d3c    dmfc2   zero,\$25
+[0-9a-f]+ <[^>]*> 001a 6d3c    dmfc2   zero,\$26
+[0-9a-f]+ <[^>]*> 001b 6d3c    dmfc2   zero,\$27
+[0-9a-f]+ <[^>]*> 001c 6d3c    dmfc2   zero,\$28
+[0-9a-f]+ <[^>]*> 001d 6d3c    dmfc2   zero,\$29
+[0-9a-f]+ <[^>]*> 001e 6d3c    dmfc2   zero,\$30
+[0-9a-f]+ <[^>]*> 001f 6d3c    dmfc2   zero,\$31
+       \.\.\.
diff --git a/gas/testsuite/gas/mips/micromips@cp2.d b/gas/testsuite/gas/mips/micromips@cp2.d
new file mode 100644 (file)
index 0000000..b43787e
--- /dev/null
@@ -0,0 +1,137 @@
+#objdump: -d --prefix-addresses --show-raw-insn
+#name: MIPS CP2 register move instructions
+#as: -32
+#source: cp2.s
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> 0000 5d3c    mtc2    zero,\$0
+[0-9a-f]+ <[^>]*> 0001 5d3c    mtc2    zero,\$1
+[0-9a-f]+ <[^>]*> 0002 5d3c    mtc2    zero,\$2
+[0-9a-f]+ <[^>]*> 0003 5d3c    mtc2    zero,\$3
+[0-9a-f]+ <[^>]*> 0004 5d3c    mtc2    zero,\$4
+[0-9a-f]+ <[^>]*> 0005 5d3c    mtc2    zero,\$5
+[0-9a-f]+ <[^>]*> 0006 5d3c    mtc2    zero,\$6
+[0-9a-f]+ <[^>]*> 0007 5d3c    mtc2    zero,\$7
+[0-9a-f]+ <[^>]*> 0008 5d3c    mtc2    zero,\$8
+[0-9a-f]+ <[^>]*> 0009 5d3c    mtc2    zero,\$9
+[0-9a-f]+ <[^>]*> 000a 5d3c    mtc2    zero,\$10
+[0-9a-f]+ <[^>]*> 000b 5d3c    mtc2    zero,\$11
+[0-9a-f]+ <[^>]*> 000c 5d3c    mtc2    zero,\$12
+[0-9a-f]+ <[^>]*> 000d 5d3c    mtc2    zero,\$13
+[0-9a-f]+ <[^>]*> 000e 5d3c    mtc2    zero,\$14
+[0-9a-f]+ <[^>]*> 000f 5d3c    mtc2    zero,\$15
+[0-9a-f]+ <[^>]*> 0010 5d3c    mtc2    zero,\$16
+[0-9a-f]+ <[^>]*> 0011 5d3c    mtc2    zero,\$17
+[0-9a-f]+ <[^>]*> 0012 5d3c    mtc2    zero,\$18
+[0-9a-f]+ <[^>]*> 0013 5d3c    mtc2    zero,\$19
+[0-9a-f]+ <[^>]*> 0014 5d3c    mtc2    zero,\$20
+[0-9a-f]+ <[^>]*> 0015 5d3c    mtc2    zero,\$21
+[0-9a-f]+ <[^>]*> 0016 5d3c    mtc2    zero,\$22
+[0-9a-f]+ <[^>]*> 0017 5d3c    mtc2    zero,\$23
+[0-9a-f]+ <[^>]*> 0018 5d3c    mtc2    zero,\$24
+[0-9a-f]+ <[^>]*> 0019 5d3c    mtc2    zero,\$25
+[0-9a-f]+ <[^>]*> 001a 5d3c    mtc2    zero,\$26
+[0-9a-f]+ <[^>]*> 001b 5d3c    mtc2    zero,\$27
+[0-9a-f]+ <[^>]*> 001c 5d3c    mtc2    zero,\$28
+[0-9a-f]+ <[^>]*> 001d 5d3c    mtc2    zero,\$29
+[0-9a-f]+ <[^>]*> 001e 5d3c    mtc2    zero,\$30
+[0-9a-f]+ <[^>]*> 001f 5d3c    mtc2    zero,\$31
+[0-9a-f]+ <[^>]*> 0000 4d3c    mfc2    zero,\$0
+[0-9a-f]+ <[^>]*> 0001 4d3c    mfc2    zero,\$1
+[0-9a-f]+ <[^>]*> 0002 4d3c    mfc2    zero,\$2
+[0-9a-f]+ <[^>]*> 0003 4d3c    mfc2    zero,\$3
+[0-9a-f]+ <[^>]*> 0004 4d3c    mfc2    zero,\$4
+[0-9a-f]+ <[^>]*> 0005 4d3c    mfc2    zero,\$5
+[0-9a-f]+ <[^>]*> 0006 4d3c    mfc2    zero,\$6
+[0-9a-f]+ <[^>]*> 0007 4d3c    mfc2    zero,\$7
+[0-9a-f]+ <[^>]*> 0008 4d3c    mfc2    zero,\$8
+[0-9a-f]+ <[^>]*> 0009 4d3c    mfc2    zero,\$9
+[0-9a-f]+ <[^>]*> 000a 4d3c    mfc2    zero,\$10
+[0-9a-f]+ <[^>]*> 000b 4d3c    mfc2    zero,\$11
+[0-9a-f]+ <[^>]*> 000c 4d3c    mfc2    zero,\$12
+[0-9a-f]+ <[^>]*> 000d 4d3c    mfc2    zero,\$13
+[0-9a-f]+ <[^>]*> 000e 4d3c    mfc2    zero,\$14
+[0-9a-f]+ <[^>]*> 000f 4d3c    mfc2    zero,\$15
+[0-9a-f]+ <[^>]*> 0010 4d3c    mfc2    zero,\$16
+[0-9a-f]+ <[^>]*> 0011 4d3c    mfc2    zero,\$17
+[0-9a-f]+ <[^>]*> 0012 4d3c    mfc2    zero,\$18
+[0-9a-f]+ <[^>]*> 0013 4d3c    mfc2    zero,\$19
+[0-9a-f]+ <[^>]*> 0014 4d3c    mfc2    zero,\$20
+[0-9a-f]+ <[^>]*> 0015 4d3c    mfc2    zero,\$21
+[0-9a-f]+ <[^>]*> 0016 4d3c    mfc2    zero,\$22
+[0-9a-f]+ <[^>]*> 0017 4d3c    mfc2    zero,\$23
+[0-9a-f]+ <[^>]*> 0018 4d3c    mfc2    zero,\$24
+[0-9a-f]+ <[^>]*> 0019 4d3c    mfc2    zero,\$25
+[0-9a-f]+ <[^>]*> 001a 4d3c    mfc2    zero,\$26
+[0-9a-f]+ <[^>]*> 001b 4d3c    mfc2    zero,\$27
+[0-9a-f]+ <[^>]*> 001c 4d3c    mfc2    zero,\$28
+[0-9a-f]+ <[^>]*> 001d 4d3c    mfc2    zero,\$29
+[0-9a-f]+ <[^>]*> 001e 4d3c    mfc2    zero,\$30
+[0-9a-f]+ <[^>]*> 001f 4d3c    mfc2    zero,\$31
+[0-9a-f]+ <[^>]*> 0000 dd3c    ctc2    zero,\$0
+[0-9a-f]+ <[^>]*> 0001 dd3c    ctc2    zero,\$1
+[0-9a-f]+ <[^>]*> 0002 dd3c    ctc2    zero,\$2
+[0-9a-f]+ <[^>]*> 0003 dd3c    ctc2    zero,\$3
+[0-9a-f]+ <[^>]*> 0004 dd3c    ctc2    zero,\$4
+[0-9a-f]+ <[^>]*> 0005 dd3c    ctc2    zero,\$5
+[0-9a-f]+ <[^>]*> 0006 dd3c    ctc2    zero,\$6
+[0-9a-f]+ <[^>]*> 0007 dd3c    ctc2    zero,\$7
+[0-9a-f]+ <[^>]*> 0008 dd3c    ctc2    zero,\$8
+[0-9a-f]+ <[^>]*> 0009 dd3c    ctc2    zero,\$9
+[0-9a-f]+ <[^>]*> 000a dd3c    ctc2    zero,\$10
+[0-9a-f]+ <[^>]*> 000b dd3c    ctc2    zero,\$11
+[0-9a-f]+ <[^>]*> 000c dd3c    ctc2    zero,\$12
+[0-9a-f]+ <[^>]*> 000d dd3c    ctc2    zero,\$13
+[0-9a-f]+ <[^>]*> 000e dd3c    ctc2    zero,\$14
+[0-9a-f]+ <[^>]*> 000f dd3c    ctc2    zero,\$15
+[0-9a-f]+ <[^>]*> 0010 dd3c    ctc2    zero,\$16
+[0-9a-f]+ <[^>]*> 0011 dd3c    ctc2    zero,\$17
+[0-9a-f]+ <[^>]*> 0012 dd3c    ctc2    zero,\$18
+[0-9a-f]+ <[^>]*> 0013 dd3c    ctc2    zero,\$19
+[0-9a-f]+ <[^>]*> 0014 dd3c    ctc2    zero,\$20
+[0-9a-f]+ <[^>]*> 0015 dd3c    ctc2    zero,\$21
+[0-9a-f]+ <[^>]*> 0016 dd3c    ctc2    zero,\$22
+[0-9a-f]+ <[^>]*> 0017 dd3c    ctc2    zero,\$23
+[0-9a-f]+ <[^>]*> 0018 dd3c    ctc2    zero,\$24
+[0-9a-f]+ <[^>]*> 0019 dd3c    ctc2    zero,\$25
+[0-9a-f]+ <[^>]*> 001a dd3c    ctc2    zero,\$26
+[0-9a-f]+ <[^>]*> 001b dd3c    ctc2    zero,\$27
+[0-9a-f]+ <[^>]*> 001c dd3c    ctc2    zero,\$28
+[0-9a-f]+ <[^>]*> 001d dd3c    ctc2    zero,\$29
+[0-9a-f]+ <[^>]*> 001e dd3c    ctc2    zero,\$30
+[0-9a-f]+ <[^>]*> 001f dd3c    ctc2    zero,\$31
+[0-9a-f]+ <[^>]*> 0000 cd3c    cfc2    zero,\$0
+[0-9a-f]+ <[^>]*> 0001 cd3c    cfc2    zero,\$1
+[0-9a-f]+ <[^>]*> 0002 cd3c    cfc2    zero,\$2
+[0-9a-f]+ <[^>]*> 0003 cd3c    cfc2    zero,\$3
+[0-9a-f]+ <[^>]*> 0004 cd3c    cfc2    zero,\$4
+[0-9a-f]+ <[^>]*> 0005 cd3c    cfc2    zero,\$5
+[0-9a-f]+ <[^>]*> 0006 cd3c    cfc2    zero,\$6
+[0-9a-f]+ <[^>]*> 0007 cd3c    cfc2    zero,\$7
+[0-9a-f]+ <[^>]*> 0008 cd3c    cfc2    zero,\$8
+[0-9a-f]+ <[^>]*> 0009 cd3c    cfc2    zero,\$9
+[0-9a-f]+ <[^>]*> 000a cd3c    cfc2    zero,\$10
+[0-9a-f]+ <[^>]*> 000b cd3c    cfc2    zero,\$11
+[0-9a-f]+ <[^>]*> 000c cd3c    cfc2    zero,\$12
+[0-9a-f]+ <[^>]*> 000d cd3c    cfc2    zero,\$13
+[0-9a-f]+ <[^>]*> 000e cd3c    cfc2    zero,\$14
+[0-9a-f]+ <[^>]*> 000f cd3c    cfc2    zero,\$15
+[0-9a-f]+ <[^>]*> 0010 cd3c    cfc2    zero,\$16
+[0-9a-f]+ <[^>]*> 0011 cd3c    cfc2    zero,\$17
+[0-9a-f]+ <[^>]*> 0012 cd3c    cfc2    zero,\$18
+[0-9a-f]+ <[^>]*> 0013 cd3c    cfc2    zero,\$19
+[0-9a-f]+ <[^>]*> 0014 cd3c    cfc2    zero,\$20
+[0-9a-f]+ <[^>]*> 0015 cd3c    cfc2    zero,\$21
+[0-9a-f]+ <[^>]*> 0016 cd3c    cfc2    zero,\$22
+[0-9a-f]+ <[^>]*> 0017 cd3c    cfc2    zero,\$23
+[0-9a-f]+ <[^>]*> 0018 cd3c    cfc2    zero,\$24
+[0-9a-f]+ <[^>]*> 0019 cd3c    cfc2    zero,\$25
+[0-9a-f]+ <[^>]*> 001a cd3c    cfc2    zero,\$26
+[0-9a-f]+ <[^>]*> 001b cd3c    cfc2    zero,\$27
+[0-9a-f]+ <[^>]*> 001c cd3c    cfc2    zero,\$28
+[0-9a-f]+ <[^>]*> 001d cd3c    cfc2    zero,\$29
+[0-9a-f]+ <[^>]*> 001e cd3c    cfc2    zero,\$30
+[0-9a-f]+ <[^>]*> 001f cd3c    cfc2    zero,\$31
+       \.\.\.
diff --git a/gas/testsuite/gas/mips/micromips@cp2d.d b/gas/testsuite/gas/mips/micromips@cp2d.d
new file mode 100644 (file)
index 0000000..30af12b
--- /dev/null
@@ -0,0 +1,73 @@
+#objdump: -d --prefix-addresses --show-raw-insn
+#name: MIPS CP2 doubleword memory access instructions
+#as: -32
+#source: cp2d\.s
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> 2000 2000    ldc2    \$0,0\(zero\)
+[0-9a-f]+ <[^>]*> 2020 2000    ldc2    \$1,0\(zero\)
+[0-9a-f]+ <[^>]*> 2040 2000    ldc2    \$2,0\(zero\)
+[0-9a-f]+ <[^>]*> 2060 2000    ldc2    \$3,0\(zero\)
+[0-9a-f]+ <[^>]*> 2080 2000    ldc2    \$4,0\(zero\)
+[0-9a-f]+ <[^>]*> 20a0 2000    ldc2    \$5,0\(zero\)
+[0-9a-f]+ <[^>]*> 20c0 2000    ldc2    \$6,0\(zero\)
+[0-9a-f]+ <[^>]*> 20e0 2000    ldc2    \$7,0\(zero\)
+[0-9a-f]+ <[^>]*> 2100 2000    ldc2    \$8,0\(zero\)
+[0-9a-f]+ <[^>]*> 2120 2000    ldc2    \$9,0\(zero\)
+[0-9a-f]+ <[^>]*> 2140 2000    ldc2    \$10,0\(zero\)
+[0-9a-f]+ <[^>]*> 2160 2000    ldc2    \$11,0\(zero\)
+[0-9a-f]+ <[^>]*> 2180 2000    ldc2    \$12,0\(zero\)
+[0-9a-f]+ <[^>]*> 21a0 2000    ldc2    \$13,0\(zero\)
+[0-9a-f]+ <[^>]*> 21c0 2000    ldc2    \$14,0\(zero\)
+[0-9a-f]+ <[^>]*> 21e0 2000    ldc2    \$15,0\(zero\)
+[0-9a-f]+ <[^>]*> 2200 2000    ldc2    \$16,0\(zero\)
+[0-9a-f]+ <[^>]*> 2220 2000    ldc2    \$17,0\(zero\)
+[0-9a-f]+ <[^>]*> 2240 2000    ldc2    \$18,0\(zero\)
+[0-9a-f]+ <[^>]*> 2260 2000    ldc2    \$19,0\(zero\)
+[0-9a-f]+ <[^>]*> 2280 2000    ldc2    \$20,0\(zero\)
+[0-9a-f]+ <[^>]*> 22a0 2000    ldc2    \$21,0\(zero\)
+[0-9a-f]+ <[^>]*> 22c0 2000    ldc2    \$22,0\(zero\)
+[0-9a-f]+ <[^>]*> 22e0 2000    ldc2    \$23,0\(zero\)
+[0-9a-f]+ <[^>]*> 2300 2000    ldc2    \$24,0\(zero\)
+[0-9a-f]+ <[^>]*> 2320 2000    ldc2    \$25,0\(zero\)
+[0-9a-f]+ <[^>]*> 2340 2000    ldc2    \$26,0\(zero\)
+[0-9a-f]+ <[^>]*> 2360 2000    ldc2    \$27,0\(zero\)
+[0-9a-f]+ <[^>]*> 2380 2000    ldc2    \$28,0\(zero\)
+[0-9a-f]+ <[^>]*> 23a0 2000    ldc2    \$29,0\(zero\)
+[0-9a-f]+ <[^>]*> 23c0 2000    ldc2    \$30,0\(zero\)
+[0-9a-f]+ <[^>]*> 23e0 2000    ldc2    \$31,0\(zero\)
+[0-9a-f]+ <[^>]*> 2000 a000    sdc2    \$0,0\(zero\)
+[0-9a-f]+ <[^>]*> 2020 a000    sdc2    \$1,0\(zero\)
+[0-9a-f]+ <[^>]*> 2040 a000    sdc2    \$2,0\(zero\)
+[0-9a-f]+ <[^>]*> 2060 a000    sdc2    \$3,0\(zero\)
+[0-9a-f]+ <[^>]*> 2080 a000    sdc2    \$4,0\(zero\)
+[0-9a-f]+ <[^>]*> 20a0 a000    sdc2    \$5,0\(zero\)
+[0-9a-f]+ <[^>]*> 20c0 a000    sdc2    \$6,0\(zero\)
+[0-9a-f]+ <[^>]*> 20e0 a000    sdc2    \$7,0\(zero\)
+[0-9a-f]+ <[^>]*> 2100 a000    sdc2    \$8,0\(zero\)
+[0-9a-f]+ <[^>]*> 2120 a000    sdc2    \$9,0\(zero\)
+[0-9a-f]+ <[^>]*> 2140 a000    sdc2    \$10,0\(zero\)
+[0-9a-f]+ <[^>]*> 2160 a000    sdc2    \$11,0\(zero\)
+[0-9a-f]+ <[^>]*> 2180 a000    sdc2    \$12,0\(zero\)
+[0-9a-f]+ <[^>]*> 21a0 a000    sdc2    \$13,0\(zero\)
+[0-9a-f]+ <[^>]*> 21c0 a000    sdc2    \$14,0\(zero\)
+[0-9a-f]+ <[^>]*> 21e0 a000    sdc2    \$15,0\(zero\)
+[0-9a-f]+ <[^>]*> 2200 a000    sdc2    \$16,0\(zero\)
+[0-9a-f]+ <[^>]*> 2220 a000    sdc2    \$17,0\(zero\)
+[0-9a-f]+ <[^>]*> 2240 a000    sdc2    \$18,0\(zero\)
+[0-9a-f]+ <[^>]*> 2260 a000    sdc2    \$19,0\(zero\)
+[0-9a-f]+ <[^>]*> 2280 a000    sdc2    \$20,0\(zero\)
+[0-9a-f]+ <[^>]*> 22a0 a000    sdc2    \$21,0\(zero\)
+[0-9a-f]+ <[^>]*> 22c0 a000    sdc2    \$22,0\(zero\)
+[0-9a-f]+ <[^>]*> 22e0 a000    sdc2    \$23,0\(zero\)
+[0-9a-f]+ <[^>]*> 2300 a000    sdc2    \$24,0\(zero\)
+[0-9a-f]+ <[^>]*> 2320 a000    sdc2    \$25,0\(zero\)
+[0-9a-f]+ <[^>]*> 2340 a000    sdc2    \$26,0\(zero\)
+[0-9a-f]+ <[^>]*> 2360 a000    sdc2    \$27,0\(zero\)
+[0-9a-f]+ <[^>]*> 2380 a000    sdc2    \$28,0\(zero\)
+[0-9a-f]+ <[^>]*> 23a0 a000    sdc2    \$29,0\(zero\)
+[0-9a-f]+ <[^>]*> 23c0 a000    sdc2    \$30,0\(zero\)
+[0-9a-f]+ <[^>]*> 23e0 a000    sdc2    \$31,0\(zero\)
+       \.\.\.
diff --git a/gas/testsuite/gas/mips/micromips@cp2m.d b/gas/testsuite/gas/mips/micromips@cp2m.d
new file mode 100644 (file)
index 0000000..0ea78e2
--- /dev/null
@@ -0,0 +1,73 @@
+#objdump: -d --prefix-addresses --show-raw-insn
+#name: MIPS CP2 memory access instructions
+#as: -32
+#source: cp2m.s
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> 2000 0000    lwc2    \$0,0\(zero\)
+[0-9a-f]+ <[^>]*> 2020 0000    lwc2    \$1,0\(zero\)
+[0-9a-f]+ <[^>]*> 2040 0000    lwc2    \$2,0\(zero\)
+[0-9a-f]+ <[^>]*> 2060 0000    lwc2    \$3,0\(zero\)
+[0-9a-f]+ <[^>]*> 2080 0000    lwc2    \$4,0\(zero\)
+[0-9a-f]+ <[^>]*> 20a0 0000    lwc2    \$5,0\(zero\)
+[0-9a-f]+ <[^>]*> 20c0 0000    lwc2    \$6,0\(zero\)
+[0-9a-f]+ <[^>]*> 20e0 0000    lwc2    \$7,0\(zero\)
+[0-9a-f]+ <[^>]*> 2100 0000    lwc2    \$8,0\(zero\)
+[0-9a-f]+ <[^>]*> 2120 0000    lwc2    \$9,0\(zero\)
+[0-9a-f]+ <[^>]*> 2140 0000    lwc2    \$10,0\(zero\)
+[0-9a-f]+ <[^>]*> 2160 0000    lwc2    \$11,0\(zero\)
+[0-9a-f]+ <[^>]*> 2180 0000    lwc2    \$12,0\(zero\)
+[0-9a-f]+ <[^>]*> 21a0 0000    lwc2    \$13,0\(zero\)
+[0-9a-f]+ <[^>]*> 21c0 0000    lwc2    \$14,0\(zero\)
+[0-9a-f]+ <[^>]*> 21e0 0000    lwc2    \$15,0\(zero\)
+[0-9a-f]+ <[^>]*> 2200 0000    lwc2    \$16,0\(zero\)
+[0-9a-f]+ <[^>]*> 2220 0000    lwc2    \$17,0\(zero\)
+[0-9a-f]+ <[^>]*> 2240 0000    lwc2    \$18,0\(zero\)
+[0-9a-f]+ <[^>]*> 2260 0000    lwc2    \$19,0\(zero\)
+[0-9a-f]+ <[^>]*> 2280 0000    lwc2    \$20,0\(zero\)
+[0-9a-f]+ <[^>]*> 22a0 0000    lwc2    \$21,0\(zero\)
+[0-9a-f]+ <[^>]*> 22c0 0000    lwc2    \$22,0\(zero\)
+[0-9a-f]+ <[^>]*> 22e0 0000    lwc2    \$23,0\(zero\)
+[0-9a-f]+ <[^>]*> 2300 0000    lwc2    \$24,0\(zero\)
+[0-9a-f]+ <[^>]*> 2320 0000    lwc2    \$25,0\(zero\)
+[0-9a-f]+ <[^>]*> 2340 0000    lwc2    \$26,0\(zero\)
+[0-9a-f]+ <[^>]*> 2360 0000    lwc2    \$27,0\(zero\)
+[0-9a-f]+ <[^>]*> 2380 0000    lwc2    \$28,0\(zero\)
+[0-9a-f]+ <[^>]*> 23a0 0000    lwc2    \$29,0\(zero\)
+[0-9a-f]+ <[^>]*> 23c0 0000    lwc2    \$30,0\(zero\)
+[0-9a-f]+ <[^>]*> 23e0 0000    lwc2    \$31,0\(zero\)
+[0-9a-f]+ <[^>]*> 2000 8000    swc2    \$0,0\(zero\)
+[0-9a-f]+ <[^>]*> 2020 8000    swc2    \$1,0\(zero\)
+[0-9a-f]+ <[^>]*> 2040 8000    swc2    \$2,0\(zero\)
+[0-9a-f]+ <[^>]*> 2060 8000    swc2    \$3,0\(zero\)
+[0-9a-f]+ <[^>]*> 2080 8000    swc2    \$4,0\(zero\)
+[0-9a-f]+ <[^>]*> 20a0 8000    swc2    \$5,0\(zero\)
+[0-9a-f]+ <[^>]*> 20c0 8000    swc2    \$6,0\(zero\)
+[0-9a-f]+ <[^>]*> 20e0 8000    swc2    \$7,0\(zero\)
+[0-9a-f]+ <[^>]*> 2100 8000    swc2    \$8,0\(zero\)
+[0-9a-f]+ <[^>]*> 2120 8000    swc2    \$9,0\(zero\)
+[0-9a-f]+ <[^>]*> 2140 8000    swc2    \$10,0\(zero\)
+[0-9a-f]+ <[^>]*> 2160 8000    swc2    \$11,0\(zero\)
+[0-9a-f]+ <[^>]*> 2180 8000    swc2    \$12,0\(zero\)
+[0-9a-f]+ <[^>]*> 21a0 8000    swc2    \$13,0\(zero\)
+[0-9a-f]+ <[^>]*> 21c0 8000    swc2    \$14,0\(zero\)
+[0-9a-f]+ <[^>]*> 21e0 8000    swc2    \$15,0\(zero\)
+[0-9a-f]+ <[^>]*> 2200 8000    swc2    \$16,0\(zero\)
+[0-9a-f]+ <[^>]*> 2220 8000    swc2    \$17,0\(zero\)
+[0-9a-f]+ <[^>]*> 2240 8000    swc2    \$18,0\(zero\)
+[0-9a-f]+ <[^>]*> 2260 8000    swc2    \$19,0\(zero\)
+[0-9a-f]+ <[^>]*> 2280 8000    swc2    \$20,0\(zero\)
+[0-9a-f]+ <[^>]*> 22a0 8000    swc2    \$21,0\(zero\)
+[0-9a-f]+ <[^>]*> 22c0 8000    swc2    \$22,0\(zero\)
+[0-9a-f]+ <[^>]*> 22e0 8000    swc2    \$23,0\(zero\)
+[0-9a-f]+ <[^>]*> 2300 8000    swc2    \$24,0\(zero\)
+[0-9a-f]+ <[^>]*> 2320 8000    swc2    \$25,0\(zero\)
+[0-9a-f]+ <[^>]*> 2340 8000    swc2    \$26,0\(zero\)
+[0-9a-f]+ <[^>]*> 2360 8000    swc2    \$27,0\(zero\)
+[0-9a-f]+ <[^>]*> 2380 8000    swc2    \$28,0\(zero\)
+[0-9a-f]+ <[^>]*> 23a0 8000    swc2    \$29,0\(zero\)
+[0-9a-f]+ <[^>]*> 23c0 8000    swc2    \$30,0\(zero\)
+[0-9a-f]+ <[^>]*> 23e0 8000    swc2    \$31,0\(zero\)
+       \.\.\.
index 8f3c7d9b90755d12896b80dd38deca92d0577aad..5bbd7617306a3e958fae608887a11a5c614cf028 100644 (file)
@@ -1333,6 +1333,11 @@ if { [istarget mips*-*-vxworks*] } {
     run_dump_test "cp0sel-names-mips64r2"
     run_dump_test "cp0sel-names-sb1"
 
+    run_dump_test_arches "cp0c"                [mips_arch_list_matching mips1 \
+                                           !mips32 !micromips]
+    run_dump_test_arches "cp0m"                [mips_arch_list_matching mips1 \
+                                           !mips2 !micromips]
+
     run_dump_test "cp1-names-numeric"
     run_dump_test "cp1-names-r3000"
     run_dump_test "cp1-names-r4000" \
@@ -1345,6 +1350,22 @@ if { [istarget mips*-*-vxworks*] } {
     run_dump_test "cp1-names-mips64r2"
     run_dump_test "cp1-names-sb1"
 
+    run_dump_test_arches "cp2"         [mips_arch_list_matching mips1 \
+                                           !vr5400 !r5900 !octeon]
+    run_dump_test_arches "cp2-64"      [mips_arch_list_matching mips3 \
+                                           !vr5400 !r5900 !octeon]
+    run_dump_test_arches "cp2m"                [mips_arch_list_matching mips1 \
+                                           !vr5400 !r5900 !octeon]
+    run_dump_test_arches "cp2d"                [mips_arch_list_matching mips2 \
+                                           !vr5400 !r5900 !octeon]
+
+    run_dump_test_arches "cp3"         [mips_arch_list_matching mips1 \
+                                           !mips3 !mips32r2 !micromips]
+    run_dump_test_arches "cp3m"                [mips_arch_list_matching mips1 \
+                                           !mips3 !mips32 !micromips]
+    run_dump_test_arches "cp3d"                [mips_arch_list_matching mips2 \
+                                           !mips3 !mips32 !micromips]
+
     run_dump_test "hwr-names-numeric"
     run_dump_test "hwr-names-mips32r2"
     run_dump_test "hwr-names-mips64r2"
diff --git a/gas/testsuite/gas/mips/mipsr6@cp2d.d b/gas/testsuite/gas/mips/mipsr6@cp2d.d
new file mode 100644 (file)
index 0000000..1c6191b
--- /dev/null
@@ -0,0 +1,73 @@
+#objdump: -d --prefix-addresses --show-raw-insn
+#name: MIPS CP2 doubleword memory access instructions
+#as: -32
+#source: cp2d\.s
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> 49c00000     ldc2    \$0,0\(zero\)
+[0-9a-f]+ <[^>]*> 49c10000     ldc2    \$1,0\(zero\)
+[0-9a-f]+ <[^>]*> 49c20000     ldc2    \$2,0\(zero\)
+[0-9a-f]+ <[^>]*> 49c30000     ldc2    \$3,0\(zero\)
+[0-9a-f]+ <[^>]*> 49c40000     ldc2    \$4,0\(zero\)
+[0-9a-f]+ <[^>]*> 49c50000     ldc2    \$5,0\(zero\)
+[0-9a-f]+ <[^>]*> 49c60000     ldc2    \$6,0\(zero\)
+[0-9a-f]+ <[^>]*> 49c70000     ldc2    \$7,0\(zero\)
+[0-9a-f]+ <[^>]*> 49c80000     ldc2    \$8,0\(zero\)
+[0-9a-f]+ <[^>]*> 49c90000     ldc2    \$9,0\(zero\)
+[0-9a-f]+ <[^>]*> 49ca0000     ldc2    \$10,0\(zero\)
+[0-9a-f]+ <[^>]*> 49cb0000     ldc2    \$11,0\(zero\)
+[0-9a-f]+ <[^>]*> 49cc0000     ldc2    \$12,0\(zero\)
+[0-9a-f]+ <[^>]*> 49cd0000     ldc2    \$13,0\(zero\)
+[0-9a-f]+ <[^>]*> 49ce0000     ldc2    \$14,0\(zero\)
+[0-9a-f]+ <[^>]*> 49cf0000     ldc2    \$15,0\(zero\)
+[0-9a-f]+ <[^>]*> 49d00000     ldc2    \$16,0\(zero\)
+[0-9a-f]+ <[^>]*> 49d10000     ldc2    \$17,0\(zero\)
+[0-9a-f]+ <[^>]*> 49d20000     ldc2    \$18,0\(zero\)
+[0-9a-f]+ <[^>]*> 49d30000     ldc2    \$19,0\(zero\)
+[0-9a-f]+ <[^>]*> 49d40000     ldc2    \$20,0\(zero\)
+[0-9a-f]+ <[^>]*> 49d50000     ldc2    \$21,0\(zero\)
+[0-9a-f]+ <[^>]*> 49d60000     ldc2    \$22,0\(zero\)
+[0-9a-f]+ <[^>]*> 49d70000     ldc2    \$23,0\(zero\)
+[0-9a-f]+ <[^>]*> 49d80000     ldc2    \$24,0\(zero\)
+[0-9a-f]+ <[^>]*> 49d90000     ldc2    \$25,0\(zero\)
+[0-9a-f]+ <[^>]*> 49da0000     ldc2    \$26,0\(zero\)
+[0-9a-f]+ <[^>]*> 49db0000     ldc2    \$27,0\(zero\)
+[0-9a-f]+ <[^>]*> 49dc0000     ldc2    \$28,0\(zero\)
+[0-9a-f]+ <[^>]*> 49dd0000     ldc2    \$29,0\(zero\)
+[0-9a-f]+ <[^>]*> 49de0000     ldc2    \$30,0\(zero\)
+[0-9a-f]+ <[^>]*> 49df0000     ldc2    \$31,0\(zero\)
+[0-9a-f]+ <[^>]*> 49e00000     sdc2    \$0,0\(zero\)
+[0-9a-f]+ <[^>]*> 49e10000     sdc2    \$1,0\(zero\)
+[0-9a-f]+ <[^>]*> 49e20000     sdc2    \$2,0\(zero\)
+[0-9a-f]+ <[^>]*> 49e30000     sdc2    \$3,0\(zero\)
+[0-9a-f]+ <[^>]*> 49e40000     sdc2    \$4,0\(zero\)
+[0-9a-f]+ <[^>]*> 49e50000     sdc2    \$5,0\(zero\)
+[0-9a-f]+ <[^>]*> 49e60000     sdc2    \$6,0\(zero\)
+[0-9a-f]+ <[^>]*> 49e70000     sdc2    \$7,0\(zero\)
+[0-9a-f]+ <[^>]*> 49e80000     sdc2    \$8,0\(zero\)
+[0-9a-f]+ <[^>]*> 49e90000     sdc2    \$9,0\(zero\)
+[0-9a-f]+ <[^>]*> 49ea0000     sdc2    \$10,0\(zero\)
+[0-9a-f]+ <[^>]*> 49eb0000     sdc2    \$11,0\(zero\)
+[0-9a-f]+ <[^>]*> 49ec0000     sdc2    \$12,0\(zero\)
+[0-9a-f]+ <[^>]*> 49ed0000     sdc2    \$13,0\(zero\)
+[0-9a-f]+ <[^>]*> 49ee0000     sdc2    \$14,0\(zero\)
+[0-9a-f]+ <[^>]*> 49ef0000     sdc2    \$15,0\(zero\)
+[0-9a-f]+ <[^>]*> 49f00000     sdc2    \$16,0\(zero\)
+[0-9a-f]+ <[^>]*> 49f10000     sdc2    \$17,0\(zero\)
+[0-9a-f]+ <[^>]*> 49f20000     sdc2    \$18,0\(zero\)
+[0-9a-f]+ <[^>]*> 49f30000     sdc2    \$19,0\(zero\)
+[0-9a-f]+ <[^>]*> 49f40000     sdc2    \$20,0\(zero\)
+[0-9a-f]+ <[^>]*> 49f50000     sdc2    \$21,0\(zero\)
+[0-9a-f]+ <[^>]*> 49f60000     sdc2    \$22,0\(zero\)
+[0-9a-f]+ <[^>]*> 49f70000     sdc2    \$23,0\(zero\)
+[0-9a-f]+ <[^>]*> 49f80000     sdc2    \$24,0\(zero\)
+[0-9a-f]+ <[^>]*> 49f90000     sdc2    \$25,0\(zero\)
+[0-9a-f]+ <[^>]*> 49fa0000     sdc2    \$26,0\(zero\)
+[0-9a-f]+ <[^>]*> 49fb0000     sdc2    \$27,0\(zero\)
+[0-9a-f]+ <[^>]*> 49fc0000     sdc2    \$28,0\(zero\)
+[0-9a-f]+ <[^>]*> 49fd0000     sdc2    \$29,0\(zero\)
+[0-9a-f]+ <[^>]*> 49fe0000     sdc2    \$30,0\(zero\)
+[0-9a-f]+ <[^>]*> 49ff0000     sdc2    \$31,0\(zero\)
+       \.\.\.
diff --git a/gas/testsuite/gas/mips/mipsr6@cp2m.d b/gas/testsuite/gas/mips/mipsr6@cp2m.d
new file mode 100644 (file)
index 0000000..c0be322
--- /dev/null
@@ -0,0 +1,73 @@
+#objdump: -d --prefix-addresses --show-raw-insn
+#name: MIPS CP2 memory access instructions
+#as: -32
+#source: cp2m.s
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> 49400000     lwc2    \$0,0\(zero\)
+[0-9a-f]+ <[^>]*> 49410000     lwc2    \$1,0\(zero\)
+[0-9a-f]+ <[^>]*> 49420000     lwc2    \$2,0\(zero\)
+[0-9a-f]+ <[^>]*> 49430000     lwc2    \$3,0\(zero\)
+[0-9a-f]+ <[^>]*> 49440000     lwc2    \$4,0\(zero\)
+[0-9a-f]+ <[^>]*> 49450000     lwc2    \$5,0\(zero\)
+[0-9a-f]+ <[^>]*> 49460000     lwc2    \$6,0\(zero\)
+[0-9a-f]+ <[^>]*> 49470000     lwc2    \$7,0\(zero\)
+[0-9a-f]+ <[^>]*> 49480000     lwc2    \$8,0\(zero\)
+[0-9a-f]+ <[^>]*> 49490000     lwc2    \$9,0\(zero\)
+[0-9a-f]+ <[^>]*> 494a0000     lwc2    \$10,0\(zero\)
+[0-9a-f]+ <[^>]*> 494b0000     lwc2    \$11,0\(zero\)
+[0-9a-f]+ <[^>]*> 494c0000     lwc2    \$12,0\(zero\)
+[0-9a-f]+ <[^>]*> 494d0000     lwc2    \$13,0\(zero\)
+[0-9a-f]+ <[^>]*> 494e0000     lwc2    \$14,0\(zero\)
+[0-9a-f]+ <[^>]*> 494f0000     lwc2    \$15,0\(zero\)
+[0-9a-f]+ <[^>]*> 49500000     lwc2    \$16,0\(zero\)
+[0-9a-f]+ <[^>]*> 49510000     lwc2    \$17,0\(zero\)
+[0-9a-f]+ <[^>]*> 49520000     lwc2    \$18,0\(zero\)
+[0-9a-f]+ <[^>]*> 49530000     lwc2    \$19,0\(zero\)
+[0-9a-f]+ <[^>]*> 49540000     lwc2    \$20,0\(zero\)
+[0-9a-f]+ <[^>]*> 49550000     lwc2    \$21,0\(zero\)
+[0-9a-f]+ <[^>]*> 49560000     lwc2    \$22,0\(zero\)
+[0-9a-f]+ <[^>]*> 49570000     lwc2    \$23,0\(zero\)
+[0-9a-f]+ <[^>]*> 49580000     lwc2    \$24,0\(zero\)
+[0-9a-f]+ <[^>]*> 49590000     lwc2    \$25,0\(zero\)
+[0-9a-f]+ <[^>]*> 495a0000     lwc2    \$26,0\(zero\)
+[0-9a-f]+ <[^>]*> 495b0000     lwc2    \$27,0\(zero\)
+[0-9a-f]+ <[^>]*> 495c0000     lwc2    \$28,0\(zero\)
+[0-9a-f]+ <[^>]*> 495d0000     lwc2    \$29,0\(zero\)
+[0-9a-f]+ <[^>]*> 495e0000     lwc2    \$30,0\(zero\)
+[0-9a-f]+ <[^>]*> 495f0000     lwc2    \$31,0\(zero\)
+[0-9a-f]+ <[^>]*> 49600000     swc2    \$0,0\(zero\)
+[0-9a-f]+ <[^>]*> 49610000     swc2    \$1,0\(zero\)
+[0-9a-f]+ <[^>]*> 49620000     swc2    \$2,0\(zero\)
+[0-9a-f]+ <[^>]*> 49630000     swc2    \$3,0\(zero\)
+[0-9a-f]+ <[^>]*> 49640000     swc2    \$4,0\(zero\)
+[0-9a-f]+ <[^>]*> 49650000     swc2    \$5,0\(zero\)
+[0-9a-f]+ <[^>]*> 49660000     swc2    \$6,0\(zero\)
+[0-9a-f]+ <[^>]*> 49670000     swc2    \$7,0\(zero\)
+[0-9a-f]+ <[^>]*> 49680000     swc2    \$8,0\(zero\)
+[0-9a-f]+ <[^>]*> 49690000     swc2    \$9,0\(zero\)
+[0-9a-f]+ <[^>]*> 496a0000     swc2    \$10,0\(zero\)
+[0-9a-f]+ <[^>]*> 496b0000     swc2    \$11,0\(zero\)
+[0-9a-f]+ <[^>]*> 496c0000     swc2    \$12,0\(zero\)
+[0-9a-f]+ <[^>]*> 496d0000     swc2    \$13,0\(zero\)
+[0-9a-f]+ <[^>]*> 496e0000     swc2    \$14,0\(zero\)
+[0-9a-f]+ <[^>]*> 496f0000     swc2    \$15,0\(zero\)
+[0-9a-f]+ <[^>]*> 49700000     swc2    \$16,0\(zero\)
+[0-9a-f]+ <[^>]*> 49710000     swc2    \$17,0\(zero\)
+[0-9a-f]+ <[^>]*> 49720000     swc2    \$18,0\(zero\)
+[0-9a-f]+ <[^>]*> 49730000     swc2    \$19,0\(zero\)
+[0-9a-f]+ <[^>]*> 49740000     swc2    \$20,0\(zero\)
+[0-9a-f]+ <[^>]*> 49750000     swc2    \$21,0\(zero\)
+[0-9a-f]+ <[^>]*> 49760000     swc2    \$22,0\(zero\)
+[0-9a-f]+ <[^>]*> 49770000     swc2    \$23,0\(zero\)
+[0-9a-f]+ <[^>]*> 49780000     swc2    \$24,0\(zero\)
+[0-9a-f]+ <[^>]*> 49790000     swc2    \$25,0\(zero\)
+[0-9a-f]+ <[^>]*> 497a0000     swc2    \$26,0\(zero\)
+[0-9a-f]+ <[^>]*> 497b0000     swc2    \$27,0\(zero\)
+[0-9a-f]+ <[^>]*> 497c0000     swc2    \$28,0\(zero\)
+[0-9a-f]+ <[^>]*> 497d0000     swc2    \$29,0\(zero\)
+[0-9a-f]+ <[^>]*> 497e0000     swc2    \$30,0\(zero\)
+[0-9a-f]+ <[^>]*> 497f0000     swc2    \$31,0\(zero\)
+       \.\.\.
diff --git a/gas/testsuite/gas/mips/r3900@cp0m.d b/gas/testsuite/gas/mips/r3900@cp0m.d
new file mode 100644 (file)
index 0000000..bfd6cf6
--- /dev/null
@@ -0,0 +1,73 @@
+#objdump: -d --prefix-addresses --show-raw-insn
+#name: MIPS CP0 memory access instructions
+#as: -32
+#source: cp0m.s
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> c0000000     lwc0    \$0,0\(zero\)
+[0-9a-f]+ <[^>]*> c0010000     lwc0    \$1,0\(zero\)
+[0-9a-f]+ <[^>]*> c0020000     lwc0    \$2,0\(zero\)
+[0-9a-f]+ <[^>]*> c0030000     lwc0    c0_config,0\(zero\)
+[0-9a-f]+ <[^>]*> c0040000     lwc0    \$4,0\(zero\)
+[0-9a-f]+ <[^>]*> c0050000     lwc0    \$5,0\(zero\)
+[0-9a-f]+ <[^>]*> c0060000     lwc0    \$6,0\(zero\)
+[0-9a-f]+ <[^>]*> c0070000     lwc0    c0_cache,0\(zero\)
+[0-9a-f]+ <[^>]*> c0080000     lwc0    c0_badvaddr,0\(zero\)
+[0-9a-f]+ <[^>]*> c0090000     lwc0    \$9,0\(zero\)
+[0-9a-f]+ <[^>]*> c00a0000     lwc0    \$10,0\(zero\)
+[0-9a-f]+ <[^>]*> c00b0000     lwc0    \$11,0\(zero\)
+[0-9a-f]+ <[^>]*> c00c0000     lwc0    c0_sr,0\(zero\)
+[0-9a-f]+ <[^>]*> c00d0000     lwc0    c0_cause,0\(zero\)
+[0-9a-f]+ <[^>]*> c00e0000     lwc0    c0_epc,0\(zero\)
+[0-9a-f]+ <[^>]*> c00f0000     lwc0    c0_prid,0\(zero\)
+[0-9a-f]+ <[^>]*> c0100000     lwc0    c0_debug,0\(zero\)
+[0-9a-f]+ <[^>]*> c0110000     lwc0    c0_depc,0\(zero\)
+[0-9a-f]+ <[^>]*> c0120000     lwc0    \$18,0\(zero\)
+[0-9a-f]+ <[^>]*> c0130000     lwc0    \$19,0\(zero\)
+[0-9a-f]+ <[^>]*> c0140000     lwc0    \$20,0\(zero\)
+[0-9a-f]+ <[^>]*> c0150000     lwc0    \$21,0\(zero\)
+[0-9a-f]+ <[^>]*> c0160000     lwc0    \$22,0\(zero\)
+[0-9a-f]+ <[^>]*> c0170000     lwc0    \$23,0\(zero\)
+[0-9a-f]+ <[^>]*> c0180000     lwc0    \$24,0\(zero\)
+[0-9a-f]+ <[^>]*> c0190000     lwc0    \$25,0\(zero\)
+[0-9a-f]+ <[^>]*> c01a0000     lwc0    \$26,0\(zero\)
+[0-9a-f]+ <[^>]*> c01b0000     lwc0    \$27,0\(zero\)
+[0-9a-f]+ <[^>]*> c01c0000     lwc0    \$28,0\(zero\)
+[0-9a-f]+ <[^>]*> c01d0000     lwc0    \$29,0\(zero\)
+[0-9a-f]+ <[^>]*> c01e0000     lwc0    \$30,0\(zero\)
+[0-9a-f]+ <[^>]*> c01f0000     lwc0    \$31,0\(zero\)
+[0-9a-f]+ <[^>]*> e0000000     swc0    \$0,0\(zero\)
+[0-9a-f]+ <[^>]*> e0010000     swc0    \$1,0\(zero\)
+[0-9a-f]+ <[^>]*> e0020000     swc0    \$2,0\(zero\)
+[0-9a-f]+ <[^>]*> e0030000     swc0    c0_config,0\(zero\)
+[0-9a-f]+ <[^>]*> e0040000     swc0    \$4,0\(zero\)
+[0-9a-f]+ <[^>]*> e0050000     swc0    \$5,0\(zero\)
+[0-9a-f]+ <[^>]*> e0060000     swc0    \$6,0\(zero\)
+[0-9a-f]+ <[^>]*> e0070000     swc0    c0_cache,0\(zero\)
+[0-9a-f]+ <[^>]*> e0080000     swc0    c0_badvaddr,0\(zero\)
+[0-9a-f]+ <[^>]*> e0090000     swc0    \$9,0\(zero\)
+[0-9a-f]+ <[^>]*> e00a0000     swc0    \$10,0\(zero\)
+[0-9a-f]+ <[^>]*> e00b0000     swc0    \$11,0\(zero\)
+[0-9a-f]+ <[^>]*> e00c0000     swc0    c0_sr,0\(zero\)
+[0-9a-f]+ <[^>]*> e00d0000     swc0    c0_cause,0\(zero\)
+[0-9a-f]+ <[^>]*> e00e0000     swc0    c0_epc,0\(zero\)
+[0-9a-f]+ <[^>]*> e00f0000     swc0    c0_prid,0\(zero\)
+[0-9a-f]+ <[^>]*> e0100000     swc0    c0_debug,0\(zero\)
+[0-9a-f]+ <[^>]*> e0110000     swc0    c0_depc,0\(zero\)
+[0-9a-f]+ <[^>]*> e0120000     swc0    \$18,0\(zero\)
+[0-9a-f]+ <[^>]*> e0130000     swc0    \$19,0\(zero\)
+[0-9a-f]+ <[^>]*> e0140000     swc0    \$20,0\(zero\)
+[0-9a-f]+ <[^>]*> e0150000     swc0    \$21,0\(zero\)
+[0-9a-f]+ <[^>]*> e0160000     swc0    \$22,0\(zero\)
+[0-9a-f]+ <[^>]*> e0170000     swc0    \$23,0\(zero\)
+[0-9a-f]+ <[^>]*> e0180000     swc0    \$24,0\(zero\)
+[0-9a-f]+ <[^>]*> e0190000     swc0    \$25,0\(zero\)
+[0-9a-f]+ <[^>]*> e01a0000     swc0    \$26,0\(zero\)
+[0-9a-f]+ <[^>]*> e01b0000     swc0    \$27,0\(zero\)
+[0-9a-f]+ <[^>]*> e01c0000     swc0    \$28,0\(zero\)
+[0-9a-f]+ <[^>]*> e01d0000     swc0    \$29,0\(zero\)
+[0-9a-f]+ <[^>]*> e01e0000     swc0    \$30,0\(zero\)
+[0-9a-f]+ <[^>]*> e01f0000     swc0    \$31,0\(zero\)
+       \.\.\.