summaryrefslogtreecommitdiff
path: root/gas/testsuite
diff options
context:
space:
mode:
authorPeter Bergner <bergner@linux.ibm.com>2022-10-08 16:19:51 -0500
committerPeter Bergner <bergner@linux.ibm.com>2022-10-27 19:23:00 -0500
commitbb98553cad4e017f1851153fa5de91f2cee98fb2 (patch)
tree93a55dc653e7a3ecc0854dc2ae06cd1219e825af /gas/testsuite
parent79e24d0a6c067a29150cf72ef8512b425e573e21 (diff)
downloadbinutils-gdb-bb98553cad4e017f1851153fa5de91f2cee98fb2.tar.gz
PowerPC: Add support for RFC02658 - MMA+ Outer-Product Instructions
gas/ * config/tc-ppc.c (md_assemble): Only check for prefix opcodes. * testsuite/gas/ppc/rfc02658.s: New test. * testsuite/gas/ppc/rfc02658.d: Likewise. * testsuite/gas/ppc/ppc.exp: Run it. opcodes/ * ppc-opc.c (XMSK8, P_GERX4_MASK, P_GERX2_MASK, XX3GERX_MASK): New. (powerpc_opcodes): Add dmxvi8gerx4pp, dmxvi8gerx4, dmxvf16gerx2pp, dmxvf16gerx2, dmxvbf16gerx2pp, dmxvf16gerx2np, dmxvbf16gerx2, dmxvi8gerx4spp, dmxvbf16gerx2np, dmxvf16gerx2pn, dmxvbf16gerx2pn, dmxvf16gerx2nn, dmxvbf16gerx2nn, pmdmxvi8gerx4pp, pmdmxvi8gerx4, pmdmxvf16gerx2pp, pmdmxvf16gerx2, pmdmxvbf16gerx2pp, pmdmxvf16gerx2np, pmdmxvbf16gerx2, pmdmxvi8gerx4spp, pmdmxvbf16gerx2np, pmdmxvf16gerx2pn, pmdmxvbf16gerx2pn, pmdmxvf16gerx2nn, pmdmxvbf16gerx2nn.
Diffstat (limited to 'gas/testsuite')
-rw-r--r--gas/testsuite/gas/ppc/ppc.exp1
-rw-r--r--gas/testsuite/gas/ppc/rfc02658.d51
-rw-r--r--gas/testsuite/gas/ppc/rfc02658.s28
3 files changed, 80 insertions, 0 deletions
diff --git a/gas/testsuite/gas/ppc/ppc.exp b/gas/testsuite/gas/ppc/ppc.exp
index f27a79cfd73..500738a06ab 100644
--- a/gas/testsuite/gas/ppc/ppc.exp
+++ b/gas/testsuite/gas/ppc/ppc.exp
@@ -146,6 +146,7 @@ run_dump_test "scalarquad"
run_dump_test "rop"
run_dump_test "rop-checks"
run_dump_test "rfc02653"
+run_dump_test "rfc02658"
run_dump_test "dcbt"
run_dump_test "pr27676"
diff --git a/gas/testsuite/gas/ppc/rfc02658.d b/gas/testsuite/gas/ppc/rfc02658.d
new file mode 100644
index 00000000000..7af7b861217
--- /dev/null
+++ b/gas/testsuite/gas/ppc/rfc02658.d
@@ -0,0 +1,51 @@
+#as: -mfuture
+#objdump: -dr -Mfuture
+#name: RFC02658 tests
+
+.*
+
+
+Disassembly of section \.text:
+
+0+0 <_start>:
+.*: (d8 12 00 ec|ec 00 12 d8) dmxvbf16gerx2 dm0,vs0,vs2
+.*: (50 67 8a ec|ec 8a 67 50) dmxvbf16gerx2nn dm1,vs10,vs12
+.*: (98 b3 14 ed|ed 14 b3 98) dmxvbf16gerx2np dm2,vs20,vs22
+.*: (9a 05 9e ed|ed 9e 05 9a) dmxvbf16gerx2pn dm3,vs30,vs32
+.*: (56 52 08 ee|ee 08 52 56) dmxvbf16gerx2pp dm4,vs40,vs42
+.*: (1e a2 92 ee|ee 92 a2 1e) dmxvf16gerx2 dm5,vs50,vs52
+.*: (56 f6 1c ef|ef 1c f6 56) dmxvf16gerx2nn dm6,vs60,vs62
+.*: (98 72 8c ef|ef 8c 72 98) dmxvf16gerx2np dm7,vs12,vs14
+.*: (98 84 0e ec|ec 0e 84 98) dmxvf16gerx2pn dm0,vs14,vs16
+.*: (10 92 90 ec|ec 90 92 10) dmxvf16gerx2pp dm1,vs16,vs18
+.*: (58 a0 12 ed|ed 12 a0 58) dmxvi8gerx4 dm2,vs18,vs20
+.*: (50 c0 96 ed|ed 96 c0 50) dmxvi8gerx4pp dm3,vs22,vs24
+.*: (10 d3 18 ee|ee 18 d3 10) dmxvi8gerx4spp dm4,vs24,vs26
+.*: (ff cf 90 07|07 90 cf ff) pmdmxvbf16gerx2nn dm0,vs0,vs2,255,15,3
+.*: (50 17 00 ec|ec 00 17 50)
+.*: (00 00 00 60|60 00 00 00) nop
+.*: (ff cf 90 07|07 90 cf ff) pmdmxvbf16gerx2np dm1,vs10,vs12,255,15,3
+.*: (98 63 8a ec|ec 8a 63 98)
+.*: (ff cf 90 07|07 90 cf ff) pmdmxvbf16gerx2 dm2,vs20,vs22,255,15,3
+.*: (d8 b2 14 ed|ed 14 b2 d8)
+.*: (ff cf 90 07|07 90 cf ff) pmdmxvbf16gerx2pn dm3,vs30,vs32,255,15,3
+.*: (9a 05 9e ed|ed 9e 05 9a)
+.*: (ff cf 90 07|07 90 cf ff) pmdmxvbf16gerx2pp dm4,vs40,vs42,255,15,3
+.*: (56 52 08 ee|ee 08 52 56)
+.*: (ff cf 90 07|07 90 cf ff) pmdmxvf16gerx2nn dm5,vs50,vs52,255,15,3
+.*: (56 a6 92 ee|ee 92 a6 56)
+.*: (ff cf 90 07|07 90 cf ff) pmdmxvf16gerx2np dm6,vs60,vs62,255,15,3
+.*: (9e f2 1c ef|ef 1c f2 9e)
+.*: (ff cf 90 07|07 90 cf ff) pmdmxvf16gerx2 dm7,vs12,vs14,255,15,3
+.*: (18 72 8c ef|ef 8c 72 18)
+.*: (ff cf 90 07|07 90 cf ff) pmdmxvf16gerx2pn dm0,vs14,vs16,255,15,3
+.*: (98 84 0e ec|ec 0e 84 98)
+.*: (ff cf 90 07|07 90 cf ff) pmdmxvf16gerx2pp dm1,vs16,vs18,255,15,3
+.*: (10 92 90 ec|ec 90 92 10)
+.*: (ff ff 90 07|07 90 ff ff) pmdmxvi8gerx4 dm2,vs18,vs20,255,15,15
+.*: (58 a0 12 ed|ed 12 a0 58)
+.*: (ff ff 90 07|07 90 ff ff) pmdmxvi8gerx4pp dm3,vs22,vs24,255,15,15
+.*: (50 c0 96 ed|ed 96 c0 50)
+.*: (ff ff 90 07|07 90 ff ff) pmdmxvi8gerx4spp dm4,vs24,vs26,255,15,15
+.*: (10 d3 18 ee|ee 18 d3 10)
+#pass
diff --git a/gas/testsuite/gas/ppc/rfc02658.s b/gas/testsuite/gas/ppc/rfc02658.s
new file mode 100644
index 00000000000..b15fb5fafc6
--- /dev/null
+++ b/gas/testsuite/gas/ppc/rfc02658.s
@@ -0,0 +1,28 @@
+ .text
+_start:
+ dmxvbf16gerx2 0,0,2
+ dmxvbf16gerx2nn 1,10,12
+ dmxvbf16gerx2np 2,20,22
+ dmxvbf16gerx2pn 3,30,32
+ dmxvbf16gerx2pp 4,40,42
+ dmxvf16gerx2 5,50,52
+ dmxvf16gerx2nn 6,60,62
+ dmxvf16gerx2np 7,12,14
+ dmxvf16gerx2pn 0,14,16
+ dmxvf16gerx2pp 1,16,18
+ dmxvi8gerx4 2,18,20
+ dmxvi8gerx4pp 3,22,24
+ dmxvi8gerx4spp 4,24,26
+ pmdmxvbf16gerx2nn 0,0,2,0xff,0xf,0x3
+ pmdmxvbf16gerx2np 1,10,12,0xff,0xf,0x3
+ pmdmxvbf16gerx2 2,20,22,0xff,0xf,0x3
+ pmdmxvbf16gerx2pn 3,30,32,0xff,0xf,0x3
+ pmdmxvbf16gerx2pp 4,40,42,0xff,0xf,0x3
+ pmdmxvf16gerx2nn 5,50,52,0xff,0xf,0x3
+ pmdmxvf16gerx2np 6,60,62,0xff,0xf,0x3
+ pmdmxvf16gerx2 7,12,14,0xff,0xf,0x3
+ pmdmxvf16gerx2pn 0,14,16,0xff,0xf,0x3
+ pmdmxvf16gerx2pp 1,16,18,0xff,0xf,0x3
+ pmdmxvi8gerx4 2,18,20,0xff,0xf,0xf
+ pmdmxvi8gerx4pp 3,22,24,0xff,0xf,0xf
+ pmdmxvi8gerx4spp 4,24,26,0xff,0xf,0xf