diff options
author | Peter Bergner <bergner@linux.ibm.com> | 2022-10-08 16:19:51 -0500 |
---|---|---|
committer | Peter Bergner <bergner@linux.ibm.com> | 2022-10-27 19:23:00 -0500 |
commit | bb98553cad4e017f1851153fa5de91f2cee98fb2 (patch) | |
tree | 93a55dc653e7a3ecc0854dc2ae06cd1219e825af /gas/testsuite | |
parent | 79e24d0a6c067a29150cf72ef8512b425e573e21 (diff) | |
download | binutils-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.exp | 1 | ||||
-rw-r--r-- | gas/testsuite/gas/ppc/rfc02658.d | 51 | ||||
-rw-r--r-- | gas/testsuite/gas/ppc/rfc02658.s | 28 |
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 |