public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] gas/ppc: Additional tests for DFP instructions
@ 2023-01-30 15:11 Andrew Burgess
  2023-01-31  6:41 ` Alan Modra
  0 siblings, 1 reply; 3+ messages in thread
From: Andrew Burgess @ 2023-01-30 15:11 UTC (permalink / raw)
  To: binutils; +Cc: Andrew Burgess

For <reasons> I was reviewing an out of tree GDB patch which added
some PPC specific tests.  The GDB test was testing GDB's ability to
disassemble somewhat random set of PPC DFP instructions.

I was going to drop the GDB patch as instruction disassembly is
usually tested through gas/objdump, but I did a quick check, and it
turns out that most of the instructions covered by this out of tree
patch are not tested in the gas testsuite.  At least, not as far as I
can see.

So this patch just adds some additional PPC assembler tests.

I've checked that the instructions disassemble back to their original
form, but I've made no attempt to validate the actual encoded
instruction form, I'm just assuming that Power6 stuff all works, and
this is just extending the test coverage.

---

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 | 95 ++++++++++++++++++++++++++++++
 gas/testsuite/gas/ppc/power6-dfp.s | 90 ++++++++++++++++++++++++++++
 gas/testsuite/gas/ppc/ppc.exp      |  1 +
 3 files changed, 186 insertions(+)
 create mode 100644 gas/testsuite/gas/ppc/power6-dfp.d
 create mode 100644 gas/testsuite/gas/ppc/power6-dfp.s

diff --git a/gas/testsuite/gas/ppc/power6-dfp.d b/gas/testsuite/gas/ppc/power6-dfp.d
new file mode 100644
index 00000000000..d3594b65e5d
--- /dev/null
+++ b/gas/testsuite/gas/ppc/power6-dfp.d
@@ -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
index 00000000000..e3432e5e555
--- /dev/null
+++ b/gas/testsuite/gas/ppc/power6-dfp.s
@@ -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
diff --git a/gas/testsuite/gas/ppc/ppc.exp b/gas/testsuite/gas/ppc/ppc.exp
index 2041429bd67..689503d7c20 100644
--- a/gas/testsuite/gas/ppc/ppc.exp
+++ b/gas/testsuite/gas/ppc/ppc.exp
@@ -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"

base-commit: fe08c994fa9431909a6e63582b0a7f4c34f6e826
-- 
2.25.4


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] gas/ppc: Additional tests for DFP instructions
  2023-01-30 15:11 [PATCH] gas/ppc: Additional tests for DFP instructions Andrew Burgess
@ 2023-01-31  6:41 ` Alan Modra
  2023-01-31  9:34   ` Andrew Burgess
  0 siblings, 1 reply; 3+ messages in thread
From: Alan Modra @ 2023-01-31  6:41 UTC (permalink / raw)
  To: Andrew Burgess; +Cc: binutils

On Mon, Jan 30, 2023 at 03:11:41PM +0000, Andrew Burgess via Binutils wrote:
> 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.

Thanks for doing this.  Please apply.

-- 
Alan Modra
Australia Development Lab, IBM

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] gas/ppc: Additional tests for DFP instructions
  2023-01-31  6:41 ` Alan Modra
@ 2023-01-31  9:34   ` Andrew Burgess
  0 siblings, 0 replies; 3+ messages in thread
From: Andrew Burgess @ 2023-01-31  9:34 UTC (permalink / raw)
  To: Alan Modra; +Cc: binutils

Alan Modra <amodra@gmail.com> writes:

> On Mon, Jan 30, 2023 at 03:11:41PM +0000, Andrew Burgess via Binutils wrote:
>> 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.
>
> Thanks for doing this.  Please apply.

Pushed.

Thanks,
Andrew


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-01-31  9:34 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-30 15:11 [PATCH] gas/ppc: Additional tests for DFP instructions Andrew Burgess
2023-01-31  6:41 ` Alan Modra
2023-01-31  9:34   ` Andrew Burgess

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).