aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorAndrew Burgess <aburgess@redhat.com>2023-01-30 11:47:31 +0000
committerAndrew Burgess <aburgess@redhat.com>2023-01-31 09:33:33 +0000
commit0fcf99b8ab5ccbde30fa7d36742e670cd4df48ef (patch)
tree1a070f9509f4fc2b435e63576afb8104fd01cff0 /gas
parenta3c2d248683e13aafa7362e3da278080a5bb5954 (diff)
downloadgdb-0fcf99b8ab5ccbde30fa7d36742e670cd4df48ef.zip
gdb-0fcf99b8ab5ccbde30fa7d36742e670cd4df48ef.tar.gz
gdb-0fcf99b8ab5ccbde30fa7d36742e670cd4df48ef.tar.bz2
gas/ppc: Additional tests for DFP instructions
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.
Diffstat (limited to 'gas')
-rw-r--r--gas/testsuite/gas/ppc/power6-dfp.d95
-rw-r--r--gas/testsuite/gas/ppc/power6-dfp.s90
-rw-r--r--gas/testsuite/gas/ppc/ppc.exp1
3 files changed, 186 insertions, 0 deletions
diff --git a/gas/testsuite/gas/ppc/power6-dfp.d b/gas/testsuite/gas/ppc/power6-dfp.d
new file mode 100644
index 0000000..d3594b6
--- /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 0000000..e3432e5
--- /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 2041429..689503d 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"