aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2020-05-11 09:34:49 +0930
committerAlan Modra <amodra@gmail.com>2020-05-11 21:08:37 +0930
commit94ba9882d5acfdc38267a8a822a8b0b8eb3e44ef (patch)
tree007e183baea4230be47a5fe232d7dee4e4fc9ac6 /gas
parentf4791f1afad449b81804cb6b62ed238603592d1b (diff)
downloadgdb-94ba9882d5acfdc38267a8a822a8b0b8eb3e44ef.zip
gdb-94ba9882d5acfdc38267a8a822a8b0b8eb3e44ef.tar.gz
gdb-94ba9882d5acfdc38267a8a822a8b0b8eb3e44ef.tar.bz2
Power10 VSX 32-byte storage access
bfd/ * elf64-ppc.c (xlate_pcrel_opt): Handle lxvp and stxvp. opcodes/ * ppc-opc.c (insert_xtp, extract_xtp): New functions. (XTP, DQXP, DQXP_MASK): Define. (powerpc_opcodes): Add lxvp, stxvp, lxvpx, stxvpx. (prefix_opcodes): Add plxvp and pstxvp. gas/ * testsuite/gas/ppc/vsx_32byte.d, * testsuite/gas/ppc/vsx_32byte.s: New test. * testsuite/gas/ppc/ppc.exp: Run it. ld/ * testsuite/ld-powerpc/pcrelopt.s: Add lxvp and stxvp. * testsuite/ld-powerpc/pcrelopt.d: Update.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/testsuite/gas/ppc/ppc.exp1
-rw-r--r--gas/testsuite/gas/ppc/vsx_32byte.d33
-rw-r--r--gas/testsuite/gas/ppc/vsx_32byte.s17
4 files changed, 57 insertions, 0 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 2c16df2..242d342 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,5 +1,11 @@
2020-05-11 Alan Modra <amodra@gmail.com>
+ * testsuite/gas/ppc/vsx_32byte.d,
+ * testsuite/gas/ppc/vsx_32byte.s: New test.
+ * testsuite/gas/ppc/ppc.exp: Run it.
+
+2020-05-11 Alan Modra <amodra@gmail.com>
+
* testsuite/gas/ppc/vec_mul.s,
* testsuite/gas/ppc/vec_mul.d: New test.
* testsuite/gas/ppc/ppc.exp: Run it.
diff --git a/gas/testsuite/gas/ppc/ppc.exp b/gas/testsuite/gas/ppc/ppc.exp
index ea053fb..aad7b02 100644
--- a/gas/testsuite/gas/ppc/ppc.exp
+++ b/gas/testsuite/gas/ppc/ppc.exp
@@ -133,3 +133,4 @@ if { [supports_ppc64] } then {
}
run_dump_test "byte_rev"
run_dump_test "vec_mul"
+run_dump_test "vsx_32byte"
diff --git a/gas/testsuite/gas/ppc/vsx_32byte.d b/gas/testsuite/gas/ppc/vsx_32byte.d
new file mode 100644
index 0000000..fb51cc2
--- /dev/null
+++ b/gas/testsuite/gas/ppc/vsx_32byte.d
@@ -0,0 +1,33 @@
+#as: -mpower10
+#objdump: -dr -Mpower10
+#name: VSX 32-byte loads and stores
+
+.*
+
+
+Disassembly of section \.text:
+
+0+0 <_start>:
+.*: (18 5f 00 00|00 00 5f 18) lxvp vs2,0\(r31\)
+.*: (1b e0 ff f0|f0 ff e0 1b) lxvp vs62,-16\(0\)
+.*: (04 00 00 00|00 00 00 04) plxvp vs4,1\(r30\)
+.*: (e8 9e 00 01|01 00 9e e8)
+.*: (04 03 ff ff|ff ff 03 04) plxvp vs60,-1\(r9\)
+.*: (eb a9 ff ff|ff ff a9 eb)
+.*: (04 10 12 34|34 12 10 04) plxvp vs6,305419896
+.*: (e8 c0 56 78|78 56 c0 e8)
+.*: (04 13 ff ff|ff ff 13 04) plxvp vs58,-32
+.*: (eb 60 ff e0|e0 ff 60 eb)
+.*: (7f 20 0a 9a|9a 0a 20 7f) lxvpx vs56,0,r1
+.*: (19 1d 00 01|01 00 1d 19) stxvp vs8,0\(r29\)
+.*: (1a e0 ff f1|f1 ff e0 1a) stxvp vs54,-16\(0\)
+.*: (04 00 00 00|00 00 00 04) pstxvp vs10,1\(r28\)
+.*: (f9 5c 00 01|01 00 5c f9)
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (04 03 ff ff|ff ff 03 04) pstxvp vs52,-1\(r8\)
+.*: (fa a8 ff ff|ff ff a8 fa)
+.*: (04 10 12 34|34 12 10 04) pstxvp vs12,305419896
+.*: (f9 80 56 78|78 56 80 f9)
+.*: (04 13 ff ff|ff ff 13 04) pstxvp vs50,-80
+.*: (fa 60 ff b0|b0 ff 60 fa)
+.*: (7e 20 0b 9a|9a 0b 20 7e) stxvpx vs48,0,r1
diff --git a/gas/testsuite/gas/ppc/vsx_32byte.s b/gas/testsuite/gas/ppc/vsx_32byte.s
new file mode 100644
index 0000000..fe26982
--- /dev/null
+++ b/gas/testsuite/gas/ppc/vsx_32byte.s
@@ -0,0 +1,17 @@
+ .text
+_start:
+ lxvp 2,0(31)
+ lxvp 62,-16(0)
+ plxvp 4,1(30)
+ plxvp 60,-1(9)
+ plxvp 6,0x12345678(0),1
+ plxvp 58,_start-.
+ lxvpx 56,0,1
+
+ stxvp 8,0(29)
+ stxvp 54,-16(0)
+ pstxvp 10,1(28)
+ pstxvp 52,-1(8)
+ pstxvp 12,0x12345678(0),1
+ pstxvp 50,_start-.
+ stxvpx 48,0,1