diff options
author | Alan Modra <amodra@gmail.com> | 2020-05-11 09:34:49 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2020-05-11 21:08:37 +0930 |
commit | 94ba9882d5acfdc38267a8a822a8b0b8eb3e44ef (patch) | |
tree | 007e183baea4230be47a5fe232d7dee4e4fc9ac6 /bfd/elf64-ppc.c | |
parent | f4791f1afad449b81804cb6b62ed238603592d1b (diff) | |
download | binutils-gdb-94ba9882d5acfdc38267a8a822a8b0b8eb3e44ef.tar.gz |
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 'bfd/elf64-ppc.c')
-rw-r--r-- | bfd/elf64-ppc.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c index ae4a4ba59ba..da4a8c73777 100644 --- a/bfd/elf64-ppc.c +++ b/bfd/elf64-ppc.c @@ -8605,6 +8605,15 @@ xlate_pcrel_opt (uint64_t *pinsn1, uint64_t *pinsn2, bfd_signed_vma *poff) off = insn2 & 0xffff; break; + case 6: /* lxvp, stxvp */ + if ((insn2 & 0xe) != 0) + return FALSE; + insn1 = ((1ULL << 58) | (1ULL << 52) + | ((insn2 & 1) == 0 ? 58ULL << 26 : 62ULL << 26) + | (insn2 & (31ULL << 21))); + off = insn2 & 0xfff0; + break; + case 62: /* std, stq */ if ((insn2 & 1) != 0) return FALSE; |