gas/ppc: Additional tests for DFP instructions
authorAndrew Burgess <aburgess@redhat.com>
Mon, 30 Jan 2023 11:47:31 +0000 (11:47 +0000)
committerAndrew Burgess <aburgess@redhat.com>
Tue, 31 Jan 2023 09:33:33 +0000 (09:33 +0000)
I noticed that some of the Power6 DFP instructions were not covered by
the assembler tests.  I've added a new test file which I believe
covers all the DFP Power6 instructions.

The existing gas/testsuite/gas/ppc/power6.d test is called:

  POWER6 tests (includes DFP and Altivec)

And does cover some of the DFP instructions.  But, given the number of
additional instructions I'm adding I opted to add a whole new test
file.  I've left the original power6.d unchanged, so there is now some
overlap, but I don't think that should hurt much.

gas/testsuite/gas/ppc/power6-dfp.d [new file with mode: 0644]
gas/testsuite/gas/ppc/power6-dfp.s [new file with mode: 0644]
gas/testsuite/gas/ppc/ppc.exp

diff --git a/gas/testsuite/gas/ppc/power6-dfp.d b/gas/testsuite/gas/ppc/power6-dfp.d
new file mode 100644 (file)
index 0000000..d3594b6
--- /dev/null
@@ -0,0 +1,95 @@
+#as: -a32 -mpower6
+#objdump: -dr -Mpower6
+#name: POWER6 all DFP instructions
+
+.*
+
+Disassembly of section \.text:
+
+0+00 <start>:
+   0:  (ee 11 90 04|04 90 11 ee)       dadd    f16,f17,f18
+   4:  (ee 11 90 05|05 90 11 ee)       dadd\.   f16,f17,f18
+   8:  (fe 96 c0 04|04 c0 96 fe)       daddq   f20,f22,f24
+   c:  (fe 96 c0 05|05 c0 96 fe)       daddq\.  f20,f22,f24
+  10:  (ee 11 94 04|04 94 11 ee)       dsub    f16,f17,f18
+  14:  (ee 11 94 05|05 94 11 ee)       dsub\.   f16,f17,f18
+  18:  (fe 96 c4 04|04 c4 96 fe)       dsubq   f20,f22,f24
+  1c:  (fe 96 c4 05|05 c4 96 fe)       dsubq\.  f20,f22,f24
+  20:  (ee 11 90 44|44 90 11 ee)       dmul    f16,f17,f18
+  24:  (ee 11 90 45|45 90 11 ee)       dmul\.   f16,f17,f18
+  28:  (fe 96 c0 44|44 c0 96 fe)       dmulq   f20,f22,f24
+  2c:  (fe 96 c0 45|45 c0 96 fe)       dmulq\.  f20,f22,f24
+  30:  (ee 11 94 44|44 94 11 ee)       ddiv    f16,f17,f18
+  34:  (ee 11 94 45|45 94 11 ee)       ddiv\.   f16,f17,f18
+  38:  (fe 96 c4 44|44 c4 96 fe)       ddivq   f20,f22,f24
+  3c:  (fe 96 c4 45|45 c4 96 fe)       ddivq\.  f20,f22,f24
+  40:  (ec 83 29 04|04 29 83 ec)       dcmpo   cr1,f3,f5
+  44:  (fd 86 21 04|04 21 86 fd)       dcmpoq  cr3,f6,f4
+  48:  (ed 03 2d 04|04 2d 03 ed)       dcmpu   cr2,f3,f5
+  4c:  (fd 06 25 04|04 25 06 fd)       dcmpuq  cr2,f6,f4
+  50:  (ec 01 fd 84|84 fd 01 ec)       dtstdc  cr0,f1,63
+  54:  (fc 02 01 84|84 01 02 fc)       dtstdcq cr0,f2,0
+  58:  (ec 03 81 c4|c4 81 03 ec)       dtstdg  cr0,f3,32
+  5c:  (fc 04 05 c4|c4 05 04 fc)       dtstdgq cr0,f4,1
+  60:  (ef 81 29 44|44 29 81 ef)       dtstex  cr7,f1,f5
+  64:  (ff 02 31 44|44 31 02 ff)       dtstexq cr6,f2,f6
+  68:  (ee 83 3d 44|44 3d 83 ee)       dtstsf  cr5,f3,f7
+  6c:  (fe 04 45 44|44 45 04 fe)       dtstsfq cr4,f4,f8
+  70:  (ec 10 22 86|86 22 10 ec)       dquai   -16,f0,f4,1
+  74:  (ec 10 22 87|87 22 10 ec)       dquai\.  -16,f0,f4,1
+  78:  (fc 4f 36 86|86 36 4f fc)       dquaiq  15,f2,f6,3
+  7c:  (fc 4f 36 87|87 36 4f fc)       dquaiq\. 15,f2,f6,3
+  80:  (ec 22 28 06|06 28 22 ec)       dqua    f1,f2,f5,0
+  84:  (ec 64 32 07|07 32 64 ec)       dqua\.   f3,f4,f6,1
+  88:  (fc 46 24 06|06 24 46 fc)       dquaq   f2,f6,f4,2
+  8c:  (fc 88 16 07|07 16 88 fc)       dquaq\.  f4,f8,f2,3
+  90:  (ec 22 1a 46|46 1a 22 ec)       drrnd   f1,f2,f3,1
+  94:  (ec 44 32 47|47 32 44 ec)       drrnd\.  f2,f4,f6,1
+  98:  (fc 02 24 46|46 24 02 fc)       drrndq  f0,f2,f4,2
+  9c:  (fc 86 44 47|47 44 86 fc)       drrndq\. f4,f6,f8,2
+  a0:  (ec 20 10 c6|c6 10 20 ec)       drintx  0,f1,f2,0
+  a4:  (ec 41 0a c7|c7 0a 41 ec)       drintx\. 1,f2,f1,1
+  a8:  (fc 40 24 c6|c6 24 40 fc)       drintxq 0,f2,f4,2
+  ac:  (fc 81 36 c7|c7 36 81 fc)       drintxq\. 1,f4,f6,3
+  b0:  (ec 21 19 c6|c6 19 21 ec)       drintn  1,f1,f3,0
+  b4:  (ec 80 13 c7|c7 13 80 ec)       drintn\. 0,f4,f2,1
+  b8:  (fc 01 15 c6|c6 15 01 fc)       drintnq 1,f0,f2,2
+  bc:  (fc 80 17 c7|c7 17 80 fc)       drintnq\. 0,f4,f2,3
+  c0:  (ec 40 22 04|04 22 40 ec)       dctdp   f2,f4
+  c4:  (ec 40 22 05|05 22 40 ec)       dctdp\.  f2,f4
+  c8:  (fc 40 22 04|04 22 40 fc)       dctqpq  f2,f4
+  cc:  (fc 40 22 05|05 22 40 fc)       dctqpq\. f2,f4
+  d0:  (ec 40 26 04|04 26 40 ec)       drsp    f2,f4
+  d4:  (ec 40 26 05|05 26 40 ec)       drsp\.   f2,f4
+  d8:  (fc 40 26 04|04 26 40 fc)       drdpq   f2,f4
+  dc:  (fc 40 26 05|05 26 40 fc)       drdpq\.  f2,f4
+  e0:  (fc 40 26 44|44 26 40 fc)       dcffixq f2,f4
+  e4:  (fc 40 26 45|45 26 40 fc)       dcffixq\. f2,f4
+  e8:  (ec 40 22 44|44 22 40 ec)       dctfix  f2,f4
+  ec:  (ec 40 22 45|45 22 40 ec)       dctfix\. f2,f4
+  f0:  (fc 40 22 44|44 22 40 fc)       dctfixq f2,f4
+  f4:  (fc 40 22 45|45 22 40 fc)       dctfixq\. f2,f4
+  f8:  (ec 20 12 84|84 12 20 ec)       ddedpd  0,f1,f2
+  fc:  (ec 08 0a 85|85 0a 08 ec)       ddedpd\. 1,f0,f1
+ 100:  (fc 48 22 84|84 22 48 fc)       ddedpdq 1,f2,f4
+ 104:  (fc 80 12 85|85 12 80 fc)       ddedpdq\. 0,f4,f2
+ 108:  (ec 20 16 84|84 16 20 ec)       denbcd  0,f1,f2
+ 10c:  (ec 10 0e 85|85 0e 10 ec)       denbcd\. 1,f0,f1
+ 110:  (fc 10 16 84|84 16 10 fc)       denbcdq 1,f0,f2
+ 114:  (fc 40 26 85|85 26 40 fc)       denbcdq\. 0,f2,f4
+ 118:  (ec 00 0a c4|c4 0a 00 ec)       dxex    f0,f1
+ 11c:  (ec 40 1a c5|c5 1a 40 ec)       dxex\.   f2,f3
+ 120:  (fc 80 32 c4|c4 32 80 fc)       dxexq   f4,f6
+ 124:  (fc 40 02 c5|c5 02 40 fc)       dxexq\.  f2,f0
+ 128:  (ec 01 16 c4|c4 16 01 ec)       diex    f0,f1,f2
+ 12c:  (ec 64 2e c5|c5 2e 64 ec)       diex\.   f3,f4,f5
+ 130:  (fc 02 26 c4|c4 26 02 fc)       diexq   f0,f2,f4
+ 134:  (fc c4 16 c5|c5 16 c4 fc)       diexq\.  f6,f4,f2
+ 138:  (ec 22 00 84|84 00 22 ec)       dscli   f1,f2,0
+ 13c:  (ec 03 fc 85|85 fc 03 ec)       dscli\.  f0,f3,63
+ 140:  (fc 48 04 84|84 04 48 fc)       dscliq  f2,f8,1
+ 144:  (fc 86 80 85|85 80 86 fc)       dscliq\. f4,f6,32
+ 148:  (ec 20 40 c4|c4 40 20 ec)       dscri   f1,f0,16
+ 14c:  (ec 62 3c c5|c5 3c 62 ec)       dscri\.  f3,f2,15
+ 150:  (fd 00 a8 c4|c4 a8 00 fd)       dscriq  f8,f0,42
+ 154:  (fc 86 54 c5|c5 54 86 fc)       dscriq\. f4,f6,21
diff --git a/gas/testsuite/gas/ppc/power6-dfp.s b/gas/testsuite/gas/ppc/power6-dfp.s
new file mode 100644 (file)
index 0000000..e3432e5
--- /dev/null
@@ -0,0 +1,90 @@
+# POWER6 DFP Instructions
+#as: -mpower6
+       .text
+start:
+       dadd     16,17,18
+       dadd.    16,17,18
+       daddq    20,22,24
+       daddq.   20,22,24
+       dsub     16,17,18
+       dsub.    16,17,18
+       dsubq    20,22,24
+       dsubq.   20,22,24
+       dmul     16,17,18
+       dmul.    16,17,18
+       dmulq    20,22,24
+       dmulq.   20,22,24
+       ddiv     16,17,18
+       ddiv.    16,17,18
+       ddivq    20,22,24
+       ddivq.   20,22,24
+       dcmpo    1,3,5
+       dcmpoq   3,6,4
+       dcmpu    2,3,5
+       dcmpuq   2,6,4
+       dtstdc   0,1,0x3f
+       dtstdcq  0,2,0x00
+       dtstdg   0,3,0x20
+       dtstdgq  0,4,0x01
+       dtstex   7,1,5
+       dtstexq  6,2,6
+       dtstsf   5,3,7
+       dtstsfq  4,4,8
+       dquai    -16,0,4,1
+       dquai.   -16,0,4,1
+       dquaiq   15,2,6,3
+       dquaiq.  15,2,6,3
+       dqua     1,2,5,0
+       dqua.    3,4,6,1
+       dquaq    2,6,4,2
+       dquaq.   4,8,2,3
+       drrnd    1,2,3,1
+       drrnd.   2,4,6,1
+       drrndq   0,2,4,2
+       drrndq.  4,6,8,2
+       drintx   0,1,2,0
+       drintx.  1,2,1,1
+       drintxq  0,2,4,2
+       drintxq. 1,4,6,3
+       drintn   1,1,3,0
+       drintn.  0,4,2,1
+       drintnq  1,0,2,2
+       drintnq. 0,4,2,3
+       dctdp    2,4
+       dctdp.   2,4
+       dctqpq   2,4
+       dctqpq.  2,4
+       drsp     2,4
+       drsp.    2,4
+       drdpq    2,4
+       drdpq.   2,4
+       dcffixq  2,4
+       dcffixq. 2,4
+       dctfix   2,4
+       dctfix.  2,4
+       dctfixq  2,4
+       dctfixq. 2,4
+       ddedpd   0,1,2
+       ddedpd.  1,0,1
+       ddedpdq  1,2,4
+       ddedpdq. 0,4,2
+       denbcd   0,1,2
+       denbcd.  1,0,1
+       denbcdq  1,0,2
+       denbcdq. 0,2,4
+       dxex     0,1
+       dxex.    2,3
+       dxexq    4,6
+       dxexq.   2,0
+       diex     0,1,2
+       diex.    3,4,5
+       diexq    0,2,4
+       diexq.   6,4,2
+       dscli    1,2,0x00
+       dscli.   0,3,0x3f
+       dscliq   2,8,0x01
+       dscliq.  4,6,0x20
+       dscri    1,0,0x10
+       dscri.   3,2,0x0f
+       dscriq   8,0,0x2a
+       dscriq.  4,6,0x15
index 2041429bd67ad99141d469e2fc5b414bdd893017..689503d7c20c3806ea03cfd0fd47777a455c80ea 100644 (file)
@@ -114,6 +114,7 @@ run_dump_test "e6500_nop"
 run_dump_test "power4_32"
 run_dump_test "power5"
 run_dump_test "power6"
+run_dump_test "power6-dfp"
 run_dump_test "power7"
 run_dump_test "power8"
 run_dump_test "power9"