aboutsummaryrefslogtreecommitdiff
path: root/ld
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 /ld
parentf4791f1afad449b81804cb6b62ed238603592d1b (diff)
downloadfsf-binutils-gdb-94ba9882d5acfdc38267a8a822a8b0b8eb3e44ef.zip
fsf-binutils-gdb-94ba9882d5acfdc38267a8a822a8b0b8eb3e44ef.tar.gz
fsf-binutils-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 'ld')
-rw-r--r--ld/ChangeLog5
-rw-r--r--ld/testsuite/ld-powerpc/pcrelopt.d12
-rw-r--r--ld/testsuite/ld-powerpc/pcrelopt.s16
3 files changed, 33 insertions, 0 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 306d1ed..9ad0996 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,5 +1,10 @@
2020-05-11 Alan Modra <amodra@gmail.com>
+ * testsuite/ld-powerpc/pcrelopt.s: Add lxvp and stxvp.
+ * testsuite/ld-powerpc/pcrelopt.d: Update.
+
+2020-05-11 Alan Modra <amodra@gmail.com>
+
* testsuite/ld-powerpc/callstub-1.d: Use -mpower10/-Mpower10 in
place of -mfuture/-Mfuture.
* testsuite/ld-powerpc/notoc2.d: Likewise.
diff --git a/ld/testsuite/ld-powerpc/pcrelopt.d b/ld/testsuite/ld-powerpc/pcrelopt.d
index aeaa0cd..00c8167 100644
--- a/ld/testsuite/ld-powerpc/pcrelopt.d
+++ b/ld/testsuite/ld-powerpc/pcrelopt.d
@@ -94,3 +94,15 @@ Disassembly of section \.text:
.*: (06 10 00 01|01 00 10 06) pla r7,65972
.*: (38 e0 01 b4|b4 01 e0 38)
.*: (88 c7 00 00|00 00 c7 88) lbz r6,0\(r7\)
+.*: (04 10 00 01|01 00 10 04) plxvp vs62,65960
+.*: (eb e0 01 a8|a8 01 e0 eb)
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (04 10 00 01|01 00 10 04) plxvp vs0,65948
+.*: (e8 00 01 9c|9c 01 00 e8)
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (04 10 00 01|01 00 10 04) pstxvp vs62,65936
+.*: (fb e0 01 90|90 01 e0 fb)
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (04 10 00 01|01 00 10 04) pstxvp vs0,65924
+.*: (f8 00 01 84|84 01 00 f8)
+.*: (60 00 00 00|00 00 00 60) nop
diff --git a/ld/testsuite/ld-powerpc/pcrelopt.s b/ld/testsuite/ld-powerpc/pcrelopt.s
index 715a52b..4b41436 100644
--- a/ld/testsuite/ld-powerpc/pcrelopt.s
+++ b/ld/testsuite/ld-powerpc/pcrelopt.s
@@ -127,5 +127,21 @@ _start:
pld 7,sym@got@pcrel
lbz 6,0(7)
+ pld 9,sym@got@pcrel
+ .reloc .-8,R_PPC64_PCREL_OPT,0f-(.-8)
+0: lxvp 62,0(9)
+
+ pld 9,sym@got@pcrel
+ .reloc .-8,R_PPC64_PCREL_OPT,0f-(.-8)
+0: lxvp 0,0(9)
+
+ pld 9,sym@got@pcrel
+ .reloc .-8,R_PPC64_PCREL_OPT,0f-(.-8)
+0: stxvp 62,0(9)
+
+ pld 9,sym@got@pcrel
+ .reloc .-8,R_PPC64_PCREL_OPT,0f-(.-8)
+0: stxvp 0,0(9)
+
.data
sym: .space 32