binutils/binutils-Power10-fixes.patch
2020-10-08 17:08:25 +01:00

5926 lines
250 KiB
Diff

diff -rup binutils.orig/bfd/elf64-ppc.c binutils-2.35.1/bfd/elf64-ppc.c
--- binutils.orig/bfd/elf64-ppc.c 2020-10-08 13:50:31.429909431 +0100
+++ binutils-2.35.1/bfd/elf64-ppc.c 2020-10-08 13:56:26.045817623 +0100
@@ -114,7 +114,7 @@ static bfd_vma opd_entry_value
#define elf_backend_adjust_dynamic_symbol ppc64_elf_adjust_dynamic_symbol
#define elf_backend_hide_symbol ppc64_elf_hide_symbol
#define elf_backend_maybe_function_sym ppc64_elf_maybe_function_sym
-#define elf_backend_always_size_sections ppc64_elf_func_desc_adjust
+#define elf_backend_always_size_sections ppc64_elf_edit
#define elf_backend_size_dynamic_sections ppc64_elf_size_dynamic_sections
#define elf_backend_hash_symbol ppc64_elf_hash_symbol
#define elf_backend_init_index_section _bfd_elf_init_2_index_sections
@@ -211,9 +211,10 @@ static bfd_vma opd_entry_value
#define PLD_R12_PC 0x04100000e5800000ULL
#define PNOP 0x0700000000000000ULL
-/* __glink_PLTresolve stub instructions. We enter with the index in R0. */
+/* __glink_PLTresolve stub instructions. We enter with the index in
+ R0 for ELFv1, and the address of a glink branch in R12 for ELFv2. */
#define GLINK_PLTRESOLVE_SIZE(htab) \
- (8u + (htab->opd_abi ? 11 * 4 : 14 * 4))
+ (8u + (htab->opd_abi ? 11 * 4 : htab->has_plt_localentry0 ? 14 * 4 : 13 * 4))
/* 0: */
/* .quad plt0-1f */
/* __glink: */
@@ -229,11 +230,14 @@ static bfd_vma opd_entry_value
/* mtctr %12 */
/* ld %11,16(%11) */
/* bctr */
-#define MFLR_R0 0x7c0802a6 /* mflr %r0 */
-#define MTLR_R0 0x7c0803a6 /* mtlr %r0 */
-#define SUB_R12_R12_R11 0x7d8b6050 /* subf %r12,%r11,%r12 */
-#define ADDI_R0_R12 0x380c0000 /* addi %r0,%r12,0 */
-#define SRDI_R0_R0_2 0x7800f082 /* rldicl %r0,%r0,62,2 */
+
+#define MFLR_R0 0x7c0802a6 /* mflr %r0 */
+#define MTLR_R0 0x7c0803a6 /* mtlr %r0 */
+#define SUB_R12_R12_R11 0x7d8b6050 /* subf %r12,%r11,%r12 */
+#define ADDI_R0_R12 0x380c0000 /* addi %r0,%r12,0 */
+#define SRDI_R0_R0_2 0x7800f082 /* rldicl %r0,%r0,62,2 */
+#define LD_R0_0R11 0xe80b0000 /* ld %r0,0(%r11) */
+#define ADD_R11_R0_R11 0x7d605a14 /* add %r11,%r0,%r11 */
/* Pad with this. */
#define NOP 0x60000000
@@ -6338,13 +6342,13 @@ static const struct sfpr_def_parms save_
};
/* Called near the start of bfd_elf_size_dynamic_sections. We use
- this hook to a) provide some gcc support functions, and b) transfer
- dynamic linking information gathered so far on function code symbol
- entries, to their corresponding function descriptor symbol entries. */
+ this hook to a) run the edit functions in this file, b) provide
+ some gcc support functions, and c) transfer dynamic linking
+ information gathered so far on function code symbol entries, to
+ their corresponding function descriptor symbol entries. */
static bfd_boolean
-ppc64_elf_func_desc_adjust (bfd *obfd ATTRIBUTE_UNUSED,
- struct bfd_link_info *info)
+ppc64_elf_edit (bfd *obfd ATTRIBUTE_UNUSED, struct bfd_link_info *info)
{
struct ppc_link_hash_table *htab;
@@ -6352,6 +6356,9 @@ ppc64_elf_func_desc_adjust (bfd *obfd AT
if (htab == NULL)
return FALSE;
+ /* Call back into the linker, which then runs the edit functions. */
+ htab->params->edit ();
+
/* Provide any missing _save* and _rest* functions. */
if (htab->sfpr != NULL)
{
@@ -7692,9 +7699,11 @@ ppc64_elf_inline_plt (struct bfd_link_in
return TRUE;
}
-/* Set htab->tls_get_addr and call the generic ELF tls_setup function. */
+/* Set htab->tls_get_addr and various other info specific to TLS.
+ This needs to run before dynamic symbols are processed in
+ bfd_elf_size_dynamic_sections. */
-asection *
+bfd_boolean
ppc64_elf_tls_setup (struct bfd_link_info *info)
{
struct ppc_link_hash_table *htab;
@@ -7702,7 +7711,7 @@ ppc64_elf_tls_setup (struct bfd_link_inf
htab = ppc_hash_table (info);
if (htab == NULL)
- return NULL;
+ return FALSE;
if (abiversion (info->output_bfd) == 1)
htab->opd_abi = 1;
@@ -7728,6 +7737,19 @@ ppc64_elf_tls_setup (struct bfd_link_inf
--plt-localentry can cause trouble. */
if (htab->params->plt_localentry0 < 0)
htab->params->plt_localentry0 = 0;
+ if (htab->params->plt_localentry0 && htab->has_power10_relocs)
+ {
+ /* The issue is that __glink_PLTresolve saves r2, which is done
+ because glibc ld.so _dl_runtime_resolve restores r2 to support
+ a glibc plt call optimisation where global entry code is
+ skipped on calls that resolve to the same binary. The
+ __glink_PLTresolve save of r2 is incompatible with code
+ making tail calls, because the tail call might go via the
+ resolver and thus overwrite the proper saved r2. */
+ _bfd_error_handler (_("warning: --plt-localentry is incompatible with "
+ "power10 pc-relative code"));
+ htab->params->plt_localentry0 = 0;
+ }
if (htab->params->plt_localentry0
&& elf_link_hash_lookup (&htab->elf, "GLIBC_2.26",
FALSE, FALSE, FALSE) == NULL)
@@ -7824,7 +7846,7 @@ ppc64_elf_tls_setup (struct bfd_link_inf
_bfd_elf_strtab_delref (elf_hash_table (info)->dynstr,
opt_fd->dynstr_index);
if (!bfd_elf_link_record_dynamic_symbol (info, opt_fd))
- return NULL;
+ return FALSE;
}
if (tga_fd != NULL)
{
@@ -7883,7 +7905,7 @@ ppc64_elf_tls_setup (struct bfd_link_inf
&& htab->params->no_tls_get_addr_regsave == -1)
htab->params->no_tls_get_addr_regsave = 0;
- return _bfd_elf_tls_setup (info->output_bfd, info);
+ return TRUE;
}
/* Return TRUE iff REL is a branch reloc with a global symbol matching
@@ -10832,62 +10854,60 @@ eh_advance_size (unsigned int delta)
static inline unsigned int
plt_stub_size (struct ppc_link_hash_table *htab,
struct ppc_stub_hash_entry *stub_entry,
- bfd_vma off)
+ bfd_vma off,
+ unsigned int odd)
{
unsigned size;
if (stub_entry->stub_type >= ppc_stub_plt_call_notoc)
{
if (htab->params->power10_stubs != 0)
- {
- bfd_vma start = (stub_entry->stub_offset
- + stub_entry->group->stub_sec->output_offset
- + stub_entry->group->stub_sec->output_section->vma);
- if (stub_entry->stub_type > ppc_stub_plt_call_notoc)
- start += 4;
- size = 8 + size_power10_offset (off, start & 4);
- }
+ size = 8 + size_power10_offset (off, odd);
else
size = 8 + size_offset (off - 8);
if (stub_entry->stub_type > ppc_stub_plt_call_notoc)
size += 4;
- return size;
}
-
- size = 12;
- if (ALWAYS_EMIT_R2SAVE
- || stub_entry->stub_type == ppc_stub_plt_call_r2save)
- size += 4;
- if (PPC_HA (off) != 0)
- size += 4;
- if (htab->opd_abi)
+ else
{
- size += 4;
- if (htab->params->plt_static_chain)
+ size = 12;
+ if (ALWAYS_EMIT_R2SAVE
+ || stub_entry->stub_type == ppc_stub_plt_call_r2save)
size += 4;
- if (htab->params->plt_thread_safe
- && htab->elf.dynamic_sections_created
- && stub_entry->h != NULL
- && stub_entry->h->elf.dynindx != -1)
- size += 8;
- if (PPC_HA (off + 8 + 8 * htab->params->plt_static_chain) != PPC_HA (off))
+ if (PPC_HA (off) != 0)
size += 4;
+ if (htab->opd_abi)
+ {
+ size += 4;
+ if (htab->params->plt_static_chain)
+ size += 4;
+ if (htab->params->plt_thread_safe
+ && htab->elf.dynamic_sections_created
+ && stub_entry->h != NULL
+ && stub_entry->h->elf.dynindx != -1)
+ size += 8;
+ if (PPC_HA (off + 8 + 8 * htab->params->plt_static_chain)
+ != PPC_HA (off))
+ size += 4;
+ }
}
if (stub_entry->h != NULL
&& is_tls_get_addr (&stub_entry->h->elf, htab)
&& htab->params->tls_get_addr_opt)
{
- if (htab->params->no_tls_get_addr_regsave)
+ if (!htab->params->no_tls_get_addr_regsave)
{
- size += 7 * 4;
- if (stub_entry->stub_type == ppc_stub_plt_call_r2save)
- size += 6 * 4;
+ size += 30 * 4;
+ if (stub_entry->stub_type == ppc_stub_plt_call_r2save
+ || stub_entry->stub_type == ppc_stub_plt_call_both)
+ size += 4;
}
else
{
- size += 30 * 4;
- if (stub_entry->stub_type == ppc_stub_plt_call_r2save)
- size += 4;
+ size += 7 * 4;
+ if (stub_entry->stub_type == ppc_stub_plt_call_r2save
+ || stub_entry->stub_type == ppc_stub_plt_call_both)
+ size += 6 * 4;
}
}
return size;
@@ -10902,7 +10922,8 @@ plt_stub_size (struct ppc_link_hash_tabl
static inline unsigned int
plt_stub_pad (struct ppc_link_hash_table *htab,
struct ppc_stub_hash_entry *stub_entry,
- bfd_vma plt_off)
+ bfd_vma plt_off,
+ unsigned int odd)
{
int stub_align;
unsigned stub_size;
@@ -10917,7 +10938,7 @@ plt_stub_pad (struct ppc_link_hash_table
}
stub_align = 1 << -htab->params->plt_stub_align;
- stub_size = plt_stub_size (htab, stub_entry, plt_off);
+ stub_size = plt_stub_size (htab, stub_entry, plt_off, odd);
if (((stub_off + stub_size - 1) & -stub_align) - (stub_off & -stub_align)
> ((stub_size - 1) & -stub_align))
return stub_align - (stub_off & (stub_align - 1));
@@ -11112,14 +11133,12 @@ build_plt_stub (struct ppc_link_hash_tab
#define MR_R3_R0 0x7c030378
#define BCTRL 0x4e800421
-static inline bfd_byte *
-build_tls_get_addr_stub (struct ppc_link_hash_table *htab,
+static bfd_byte *
+build_tls_get_addr_head (struct ppc_link_hash_table *htab,
struct ppc_stub_hash_entry *stub_entry,
- bfd_byte *p, bfd_vma offset, Elf_Internal_Rela *r)
+ bfd_byte *p)
{
bfd *obfd = htab->params->stub_bfd;
- bfd_byte *loc = p;
- unsigned int i;
bfd_put_32 (obfd, LD_R0_0R3 + 0, p), p += 4;
bfd_put_32 (obfd, LD_R12_0R3 + 8, p), p += 4;
@@ -11128,21 +11147,43 @@ build_tls_get_addr_stub (struct ppc_link
bfd_put_32 (obfd, ADD_R3_R12_R13, p), p += 4;
bfd_put_32 (obfd, BEQLR, p), p += 4;
bfd_put_32 (obfd, MR_R3_R0, p), p += 4;
- if (htab->params->no_tls_get_addr_regsave)
- {
- if (r != NULL)
- r[0].r_offset += 7 * 4;
- if (stub_entry->stub_type != ppc_stub_plt_call_r2save)
- return build_plt_stub (htab, stub_entry, p, offset, r);
+ if (!htab->params->no_tls_get_addr_regsave)
+ p = tls_get_addr_prologue (obfd, p, htab);
+ else if (stub_entry->stub_type == ppc_stub_plt_call_r2save
+ || stub_entry->stub_type == ppc_stub_plt_call_both)
+ {
bfd_put_32 (obfd, MFLR_R0, p);
p += 4;
bfd_put_32 (obfd, STD_R0_0R1 + STK_LINKER (htab), p);
p += 4;
+ }
+ return p;
+}
- if (r != NULL)
- r[0].r_offset += 2 * 4;
- p = build_plt_stub (htab, stub_entry, p, offset, r);
+static bfd_byte *
+build_tls_get_addr_tail (struct ppc_link_hash_table *htab,
+ struct ppc_stub_hash_entry *stub_entry,
+ bfd_byte *p,
+ bfd_byte *loc)
+{
+ bfd *obfd = htab->params->stub_bfd;
+
+ if (!htab->params->no_tls_get_addr_regsave)
+ {
+ bfd_put_32 (obfd, BCTRL, p - 4);
+
+ if (stub_entry->stub_type == ppc_stub_plt_call_r2save
+ || stub_entry->stub_type == ppc_stub_plt_call_both)
+ {
+ bfd_put_32 (obfd, LD_R2_0R1 + STK_TOC (htab), p);
+ p += 4;
+ }
+ p = tls_get_addr_epilogue (obfd, p, htab);
+ }
+ else if (stub_entry->stub_type == ppc_stub_plt_call_r2save
+ || stub_entry->stub_type == ppc_stub_plt_call_both)
+ {
bfd_put_32 (obfd, BCTRL, p - 4);
bfd_put_32 (obfd, LD_R2_0R1 + STK_TOC (htab), p);
@@ -11154,24 +11195,6 @@ build_tls_get_addr_stub (struct ppc_link
bfd_put_32 (obfd, BLR, p);
p += 4;
}
- else
- {
- p = tls_get_addr_prologue (obfd, p, htab);
-
- if (r != NULL)
- r[0].r_offset += 18 * 4;
-
- p = build_plt_stub (htab, stub_entry, p, offset, r);
- bfd_put_32 (obfd, BCTRL, p - 4);
-
- if (stub_entry->stub_type == ppc_stub_plt_call_r2save)
- {
- bfd_put_32 (obfd, LD_R2_0R1 + STK_TOC (htab), p);
- p += 4;
- }
-
- p = tls_get_addr_epilogue (obfd, p, htab);
- }
if (htab->glink_eh_frame != NULL
&& htab->glink_eh_frame->size != 0)
@@ -11180,21 +11203,11 @@ build_tls_get_addr_stub (struct ppc_link
base = htab->glink_eh_frame->contents + stub_entry->group->eh_base + 17;
eh = base + stub_entry->group->eh_size;
- if (htab->params->no_tls_get_addr_regsave)
- {
- unsigned int lr_used, delta;
- lr_used = stub_entry->stub_offset + (p - 20 - loc);
- delta = lr_used - stub_entry->group->lr_restore;
- stub_entry->group->lr_restore = lr_used + 16;
- eh = eh_advance (htab->elf.dynobj, eh, delta);
- *eh++ = DW_CFA_offset_extended_sf;
- *eh++ = 65;
- *eh++ = -(STK_LINKER (htab) / 8) & 0x7f;
- *eh++ = DW_CFA_advance_loc + 4;
- }
- else
+
+ if (!htab->params->no_tls_get_addr_regsave)
{
- unsigned int cfa_updt, delta;
+ unsigned int cfa_updt, delta, i;
+
/* After the bctrl, lr has been modified so we need to emit
.eh_frame info saying the return address is on the stack. In
fact we must put the EH info at or before the call rather
@@ -11233,10 +11246,27 @@ build_tls_get_addr_stub (struct ppc_link
for (i = 4; i < 12; i++)
*eh++ = DW_CFA_restore + i;
*eh++ = DW_CFA_advance_loc + 2;
+ *eh++ = DW_CFA_restore_extended;
+ *eh++ = 65;
+ stub_entry->group->eh_size = eh - base;
+ }
+ else if (stub_entry->stub_type == ppc_stub_plt_call_r2save
+ || stub_entry->stub_type == ppc_stub_plt_call_both)
+ {
+ unsigned int lr_used, delta;
+
+ lr_used = stub_entry->stub_offset + (p - 20 - loc);
+ delta = lr_used - stub_entry->group->lr_restore;
+ stub_entry->group->lr_restore = lr_used + 16;
+ eh = eh_advance (htab->elf.dynobj, eh, delta);
+ *eh++ = DW_CFA_offset_extended_sf;
+ *eh++ = 65;
+ *eh++ = -(STK_LINKER (htab) / 8) & 0x7f;
+ *eh++ = DW_CFA_advance_loc + 4;
+ *eh++ = DW_CFA_restore_extended;
+ *eh++ = 65;
+ stub_entry->group->eh_size = eh - base;
}
- *eh++ = DW_CFA_restore_extended;
- *eh++ = 65;
- stub_entry->group->eh_size = eh - base;
}
return p;
}
@@ -11370,6 +11400,7 @@ ppc_build_one_stub (struct bfd_hash_entr
struct ppc_branch_hash_entry *br_entry;
struct bfd_link_info *info;
struct ppc_link_hash_table *htab;
+ bfd *obfd;
bfd_byte *loc;
bfd_byte *p, *relp;
bfd_vma targ, off;
@@ -11377,6 +11408,7 @@ ppc_build_one_stub (struct bfd_hash_entr
asection *plt;
int num_rel;
int odd;
+ bfd_boolean is_tga;
/* Massage our args to the form they really have. */
stub_entry = (struct ppc_stub_hash_entry *) gen_entry;
@@ -11426,6 +11458,7 @@ ppc_build_one_stub (struct bfd_hash_entr
off = targ - off;
p = loc;
+ obfd = htab->params->stub_bfd;
if (stub_entry->stub_type == ppc_stub_long_branch_r2off)
{
bfd_vma r2off = get_r2off (info, stub_entry);
@@ -11435,23 +11468,21 @@ ppc_build_one_stub (struct bfd_hash_entr
htab->stub_error = TRUE;
return FALSE;
}
- bfd_put_32 (htab->params->stub_bfd, STD_R2_0R1 + STK_TOC (htab), p);
+ bfd_put_32 (obfd, STD_R2_0R1 + STK_TOC (htab), p);
p += 4;
if (PPC_HA (r2off) != 0)
{
- bfd_put_32 (htab->params->stub_bfd,
- ADDIS_R2_R2 | PPC_HA (r2off), p);
+ bfd_put_32 (obfd, ADDIS_R2_R2 | PPC_HA (r2off), p);
p += 4;
}
if (PPC_LO (r2off) != 0)
{
- bfd_put_32 (htab->params->stub_bfd,
- ADDI_R2_R2 | PPC_LO (r2off), p);
+ bfd_put_32 (obfd, ADDI_R2_R2 | PPC_LO (r2off), p);
p += 4;
}
off -= p - loc;
}
- bfd_put_32 (htab->params->stub_bfd, B_DOT | (off & 0x3fffffc), p);
+ bfd_put_32 (obfd, B_DOT | (off & 0x3fffffc), p);
p += 4;
if (off + (1 << 25) >= (bfd_vma) (1 << 26))
@@ -11577,19 +11608,17 @@ ppc_build_one_stub (struct bfd_hash_entr
}
p = loc;
+ obfd = htab->params->stub_bfd;
if (stub_entry->stub_type != ppc_stub_plt_branch_r2off)
{
if (PPC_HA (off) != 0)
{
- bfd_put_32 (htab->params->stub_bfd,
- ADDIS_R12_R2 | PPC_HA (off), p);
+ bfd_put_32 (obfd, ADDIS_R12_R2 | PPC_HA (off), p);
p += 4;
- bfd_put_32 (htab->params->stub_bfd,
- LD_R12_0R12 | PPC_LO (off), p);
+ bfd_put_32 (obfd, LD_R12_0R12 | PPC_LO (off), p);
}
else
- bfd_put_32 (htab->params->stub_bfd,
- LD_R12_0R2 | PPC_LO (off), p);
+ bfd_put_32 (obfd, LD_R12_0R2 | PPC_LO (off), p);
}
else
{
@@ -11601,36 +11630,32 @@ ppc_build_one_stub (struct bfd_hash_entr
return FALSE;
}
- bfd_put_32 (htab->params->stub_bfd, STD_R2_0R1 + STK_TOC (htab), p);
+ bfd_put_32 (obfd, STD_R2_0R1 + STK_TOC (htab), p);
p += 4;
if (PPC_HA (off) != 0)
{
- bfd_put_32 (htab->params->stub_bfd,
- ADDIS_R12_R2 | PPC_HA (off), p);
+ bfd_put_32 (obfd, ADDIS_R12_R2 | PPC_HA (off), p);
p += 4;
- bfd_put_32 (htab->params->stub_bfd,
- LD_R12_0R12 | PPC_LO (off), p);
+ bfd_put_32 (obfd, LD_R12_0R12 | PPC_LO (off), p);
}
else
- bfd_put_32 (htab->params->stub_bfd, LD_R12_0R2 | PPC_LO (off), p);
+ bfd_put_32 (obfd, LD_R12_0R2 | PPC_LO (off), p);
if (PPC_HA (r2off) != 0)
{
p += 4;
- bfd_put_32 (htab->params->stub_bfd,
- ADDIS_R2_R2 | PPC_HA (r2off), p);
+ bfd_put_32 (obfd, ADDIS_R2_R2 | PPC_HA (r2off), p);
}
if (PPC_LO (r2off) != 0)
{
p += 4;
- bfd_put_32 (htab->params->stub_bfd,
- ADDI_R2_R2 | PPC_LO (r2off), p);
+ bfd_put_32 (obfd, ADDI_R2_R2 | PPC_LO (r2off), p);
}
}
p += 4;
- bfd_put_32 (htab->params->stub_bfd, MTCTR_R12, p);
+ bfd_put_32 (obfd, MTCTR_R12, p);
p += 4;
- bfd_put_32 (htab->params->stub_bfd, BCTR, p);
+ bfd_put_32 (obfd, BCTR, p);
p += 4;
break;
@@ -11644,12 +11669,23 @@ ppc_build_one_stub (struct bfd_hash_entr
off = (stub_entry->stub_offset
+ stub_entry->group->stub_sec->output_offset
+ stub_entry->group->stub_sec->output_section->vma);
+ obfd = htab->params->stub_bfd;
+ is_tga = ((stub_entry->stub_type == ppc_stub_plt_call_notoc
+ || stub_entry->stub_type == ppc_stub_plt_call_both)
+ && stub_entry->h != NULL
+ && is_tls_get_addr (&stub_entry->h->elf, htab)
+ && htab->params->tls_get_addr_opt);
+ if (is_tga)
+ {
+ p = build_tls_get_addr_head (htab, stub_entry, p);
+ off += p - loc;
+ }
if (stub_entry->stub_type == ppc_stub_long_branch_both
|| stub_entry->stub_type == ppc_stub_plt_branch_both
|| stub_entry->stub_type == ppc_stub_plt_call_both)
{
off += 4;
- bfd_put_32 (htab->params->stub_bfd, STD_R2_0R1 + STK_TOC (htab), p);
+ bfd_put_32 (obfd, STD_R2_0R1 + STK_TOC (htab), p);
p += 4;
}
if (stub_entry->stub_type >= ppc_stub_plt_call_notoc)
@@ -11682,17 +11718,39 @@ ppc_build_one_stub (struct bfd_hash_entr
if (htab->params->power10_stubs != 0)
{
bfd_boolean load = stub_entry->stub_type >= ppc_stub_plt_call_notoc;
- p = build_power10_offset (htab->params->stub_bfd, p, off, odd, load);
+ p = build_power10_offset (obfd, p, off, odd, load);
}
else
{
+ if (htab->glink_eh_frame != NULL
+ && htab->glink_eh_frame->size != 0)
+ {
+ bfd_byte *base, *eh;
+ unsigned int lr_used, delta;
+
+ base = (htab->glink_eh_frame->contents
+ + stub_entry->group->eh_base + 17);
+ eh = base + stub_entry->group->eh_size;
+ lr_used = stub_entry->stub_offset + (p - loc) + 8;
+ delta = lr_used - stub_entry->group->lr_restore;
+ stub_entry->group->lr_restore = lr_used + 8;
+ eh = eh_advance (htab->elf.dynobj, eh, delta);
+ *eh++ = DW_CFA_register;
+ *eh++ = 65;
+ *eh++ = 12;
+ *eh++ = DW_CFA_advance_loc + 2;
+ *eh++ = DW_CFA_restore_extended;
+ *eh++ = 65;
+ stub_entry->group->eh_size = eh - base;
+ }
+
/* The notoc stubs calculate their target (either a PLT entry or
the global entry point of a function) relative to the PC
returned by the "bcl" two instructions past the start of the
sequence emitted by build_offset. The offset is therefore 8
less than calculated from the start of the sequence. */
off -= 8;
- p = build_offset (htab->params->stub_bfd, p, off,
+ p = build_offset (obfd, p, off,
stub_entry->stub_type >= ppc_stub_plt_call_notoc);
}
@@ -11704,17 +11762,19 @@ ppc_build_one_stub (struct bfd_hash_entr
+ stub_entry->group->stub_sec->output_offset
+ stub_entry->group->stub_sec->output_section->vma
+ (p - loc));
- bfd_put_32 (htab->params->stub_bfd,
- B_DOT | ((targ - from) & 0x3fffffc), p);
+ bfd_put_32 (obfd, B_DOT | ((targ - from) & 0x3fffffc), p);
}
else
{
- bfd_put_32 (htab->params->stub_bfd, MTCTR_R12, p);
+ bfd_put_32 (obfd, MTCTR_R12, p);
p += 4;
- bfd_put_32 (htab->params->stub_bfd, BCTR, p);
+ bfd_put_32 (obfd, BCTR, p);
}
p += 4;
+ if (is_tga)
+ p = build_tls_get_addr_tail (htab, stub_entry, p, loc);
+
if (info->emitrelocations)
{
bfd_vma roff = relp - stub_entry->group->stub_sec->contents;
@@ -11745,33 +11805,6 @@ ppc_build_one_stub (struct bfd_hash_entr
return FALSE;
}
}
-
- if (htab->params->power10_stubs == 0
- && htab->glink_eh_frame != NULL
- && htab->glink_eh_frame->size != 0)
- {
- bfd_byte *base, *eh;
- unsigned int lr_used, delta;
-
- base = (htab->glink_eh_frame->contents
- + stub_entry->group->eh_base + 17);
- eh = base + stub_entry->group->eh_size;
- lr_used = stub_entry->stub_offset + 8;
- if (stub_entry->stub_type == ppc_stub_long_branch_both
- || stub_entry->stub_type == ppc_stub_plt_branch_both
- || stub_entry->stub_type == ppc_stub_plt_call_both)
- lr_used += 4;
- delta = lr_used - stub_entry->group->lr_restore;
- stub_entry->group->lr_restore = lr_used + 8;
- eh = eh_advance (htab->elf.dynobj, eh, delta);
- *eh++ = DW_CFA_register;
- *eh++ = 65;
- *eh++ = 12;
- *eh++ = DW_CFA_advance_loc + 2;
- *eh++ = DW_CFA_restore_extended;
- *eh++ = 65;
- stub_entry->group->eh_size = eh - base;
- }
break;
case ppc_stub_plt_call:
@@ -11840,12 +11873,20 @@ ppc_build_one_stub (struct bfd_hash_entr
r[0].r_offset += 2;
r[0].r_addend = targ;
}
- if (stub_entry->h != NULL
- && is_tls_get_addr (&stub_entry->h->elf, htab)
- && htab->params->tls_get_addr_opt)
- p = build_tls_get_addr_stub (htab, stub_entry, loc, off, r);
- else
- p = build_plt_stub (htab, stub_entry, loc, off, r);
+ p = loc;
+ obfd = htab->params->stub_bfd;
+ is_tga = (stub_entry->h != NULL
+ && is_tls_get_addr (&stub_entry->h->elf, htab)
+ && htab->params->tls_get_addr_opt);
+ if (is_tga)
+ {
+ p = build_tls_get_addr_head (htab, stub_entry, p);
+ if (r != NULL)
+ r[0].r_offset += p - loc;
+ }
+ p = build_plt_stub (htab, stub_entry, p, off, r);
+ if (is_tga)
+ p = build_tls_get_addr_tail (htab, stub_entry, p, loc);
break;
case ppc_stub_save_res:
@@ -12141,11 +12182,19 @@ ppc_size_one_stub (struct bfd_hash_entry
case ppc_stub_plt_call_notoc:
case ppc_stub_plt_call_both:
- off = (stub_entry->stub_offset
- + stub_entry->group->stub_sec->output_offset
- + stub_entry->group->stub_sec->output_section->vma);
+ lr_used = 0;
+ if (stub_entry->h != NULL
+ && is_tls_get_addr (&stub_entry->h->elf, htab)
+ && htab->params->tls_get_addr_opt)
+ {
+ lr_used += 7 * 4;
+ if (!htab->params->no_tls_get_addr_regsave)
+ lr_used += 11 * 4;
+ else if (stub_entry->stub_type == ppc_stub_plt_call_both)
+ lr_used += 2 * 4;
+ }
if (stub_entry->stub_type == ppc_stub_plt_call_both)
- off += 4;
+ lr_used += 4;
targ = stub_entry->plt_ent->plt.offset & ~1;
if (targ >= (bfd_vma) -2)
abort ();
@@ -12161,16 +12210,21 @@ ppc_size_one_stub (struct bfd_hash_entry
plt = htab->pltlocal;
}
targ += plt->output_offset + plt->output_section->vma;
+ off = (stub_entry->stub_offset
+ + stub_entry->group->stub_sec->output_offset
+ + stub_entry->group->stub_sec->output_section->vma
+ + lr_used);
odd = off & 4;
off = targ - off;
if (htab->params->plt_stub_align != 0)
{
- unsigned pad = plt_stub_pad (htab, stub_entry, off);
+ unsigned pad = plt_stub_pad (htab, stub_entry, off, odd);
stub_entry->group->stub_sec->size += pad;
stub_entry->stub_offset = stub_entry->group->stub_sec->size;
off -= pad;
+ odd ^= pad & 4;
}
if (info->emitrelocations)
@@ -12184,15 +12238,13 @@ ppc_size_one_stub (struct bfd_hash_entry
stub_entry->group->stub_sec->flags |= SEC_RELOC;
}
- size = plt_stub_size (htab, stub_entry, off);
+ size = plt_stub_size (htab, stub_entry, off, odd);
if (htab->params->power10_stubs == 0)
{
/* After the bcl, lr has been modified so we need to emit
.eh_frame info saying the return address is in r12. */
- lr_used = stub_entry->stub_offset + 8;
- if (stub_entry->stub_type == ppc_stub_plt_call_both)
- lr_used += 4;
+ lr_used += stub_entry->stub_offset + 8;
/* The eh_frame info will consist of a DW_CFA_advance_loc or
variant, DW_CFA_register, 65, 12, DW_CFA_advance_loc+2,
DW_CFA_restore_extended 65. */
@@ -12200,6 +12252,30 @@ ppc_size_one_stub (struct bfd_hash_entry
stub_entry->group->eh_size += eh_advance_size (delta) + 6;
stub_entry->group->lr_restore = lr_used + 8;
}
+ if ((stub_entry->stub_type == ppc_stub_plt_call_notoc
+ || stub_entry->stub_type == ppc_stub_plt_call_both)
+ && stub_entry->h != NULL
+ && is_tls_get_addr (&stub_entry->h->elf, htab)
+ && htab->params->tls_get_addr_opt)
+ {
+ if (!htab->params->no_tls_get_addr_regsave)
+ {
+ unsigned int cfa_updt = stub_entry->stub_offset + 18 * 4;
+ delta = cfa_updt - stub_entry->group->lr_restore;
+ stub_entry->group->eh_size += eh_advance_size (delta);
+ stub_entry->group->eh_size += htab->opd_abi ? 36 : 35;
+ stub_entry->group->lr_restore
+ = stub_entry->stub_offset + size - 4;
+ }
+ else if (stub_entry->stub_type == ppc_stub_plt_call_both)
+ {
+ lr_used = stub_entry->stub_offset + size - 20;
+ delta = lr_used - stub_entry->group->lr_restore;
+ stub_entry->group->eh_size += eh_advance_size (delta) + 6;
+ stub_entry->group->lr_restore
+ = stub_entry->stub_offset + size - 4;
+ }
+ }
break;
case ppc_stub_plt_call:
@@ -12225,7 +12301,7 @@ ppc_size_one_stub (struct bfd_hash_entry
if (htab->params->plt_stub_align != 0)
{
- unsigned pad = plt_stub_pad (htab, stub_entry, off);
+ unsigned pad = plt_stub_pad (htab, stub_entry, off, 0);
stub_entry->group->stub_sec->size += pad;
stub_entry->stub_offset = stub_entry->group->stub_sec->size;
@@ -12242,14 +12318,22 @@ ppc_size_one_stub (struct bfd_hash_entry
stub_entry->group->stub_sec->flags |= SEC_RELOC;
}
- size = plt_stub_size (htab, stub_entry, off);
+ size = plt_stub_size (htab, stub_entry, off, 0);
if (stub_entry->h != NULL
&& is_tls_get_addr (&stub_entry->h->elf, htab)
&& htab->params->tls_get_addr_opt
&& stub_entry->stub_type == ppc_stub_plt_call_r2save)
{
- if (htab->params->no_tls_get_addr_regsave)
+ if (!htab->params->no_tls_get_addr_regsave)
+ {
+ /* Adjustments to r1 need to be described. */
+ unsigned int cfa_updt = stub_entry->stub_offset + 18 * 4;
+ delta = cfa_updt - stub_entry->group->lr_restore;
+ stub_entry->group->eh_size += eh_advance_size (delta);
+ stub_entry->group->eh_size += htab->opd_abi ? 36 : 35;
+ }
+ else
{
lr_used = stub_entry->stub_offset + size - 20;
/* The eh_frame info will consist of a DW_CFA_advance_loc
@@ -12258,15 +12342,7 @@ ppc_size_one_stub (struct bfd_hash_entry
delta = lr_used - stub_entry->group->lr_restore;
stub_entry->group->eh_size += eh_advance_size (delta) + 6;
}
- else
- {
- /* Adjustments to r1 need to be described. */
- unsigned int cfa_updt = stub_entry->stub_offset + 18 * 4;
- delta = cfa_updt - stub_entry->group->lr_restore;
- stub_entry->group->eh_size += eh_advance_size (delta);
- stub_entry->group->eh_size += htab->opd_abi ? 36 : 35;
- }
- stub_entry->group->lr_restore = size - 4;
+ stub_entry->group->lr_restore = stub_entry->stub_offset + size - 4;
}
break;
@@ -13812,11 +13888,11 @@ ppc64_elf_size_stubs (struct bfd_link_in
/* Augmentation. */
p += 1;
- *p++ = DW_CFA_advance_loc + 1;
+ *p++ = DW_CFA_advance_loc + (htab->has_plt_localentry0 ? 3 : 2);
*p++ = DW_CFA_register;
*p++ = 65;
*p++ = htab->opd_abi ? 12 : 0;
- *p++ = DW_CFA_advance_loc + (htab->opd_abi ? 5 : 7);
+ *p++ = DW_CFA_advance_loc + (htab->opd_abi ? 4 : 2);
*p++ = DW_CFA_restore_extended;
*p++ = 65;
p += ((24 + align - 1) & -align) - 24;
@@ -14412,23 +14488,60 @@ ppc64_elf_build_stubs (struct bfd_link_i
}
else
{
+ unsigned int insn;
+
+ /* 0:
+ . .quad plt0-1f # plt0 entry relative to 1:
+ #
+ # We get here with r12 initially @ a glink branch
+ # Load the address of _dl_runtime_resolve from plt0 and
+ # jump to it, with r0 set to the index of the PLT entry
+ # to be resolved and r11 the link map.
+ __glink_PLTresolve:
+ . std %r2,24(%r1) # optional
+ . mflr %r0
+ . bcl 20,31,1f
+ 1:
+ . mflr %r11
+ . mtlr %r0
+ . ld %r0,(0b-1b)(%r11)
+ . sub %r12,%r12,%r11
+ . add %r11,%r0,%r11
+ . addi %r0,%r12,1b-2f
+ . ld %r12,0(%r11)
+ . srdi %r0,%r0,2
+ . mtctr %r12
+ . ld %r11,8(%r11)
+ . bctr
+ 2:
+ . b __glink_PLTresolve
+ . ...
+ . b __glink_PLTresolve */
+
+ if (htab->has_plt_localentry0)
+ {
+ bfd_put_32 (htab->glink->owner, STD_R2_0R1 + 24, p);
+ p += 4;
+ }
bfd_put_32 (htab->glink->owner, MFLR_R0, p);
p += 4;
bfd_put_32 (htab->glink->owner, BCL_20_31, p);
p += 4;
bfd_put_32 (htab->glink->owner, MFLR_R11, p);
p += 4;
- bfd_put_32 (htab->glink->owner, STD_R2_0R1 + 24, p);
- p += 4;
- bfd_put_32 (htab->glink->owner, LD_R2_0R11 | (-16 & 0xfffc), p);
- p += 4;
bfd_put_32 (htab->glink->owner, MTLR_R0, p);
p += 4;
+ if (htab->has_plt_localentry0)
+ insn = LD_R0_0R11 | (-20 & 0xfffc);
+ else
+ insn = LD_R0_0R11 | (-16 & 0xfffc);
+ bfd_put_32 (htab->glink->owner, insn, p);
+ p += 4;
bfd_put_32 (htab->glink->owner, SUB_R12_R12_R11, p);
p += 4;
- bfd_put_32 (htab->glink->owner, ADD_R11_R2_R11, p);
+ bfd_put_32 (htab->glink->owner, ADD_R11_R0_R11, p);
p += 4;
- bfd_put_32 (htab->glink->owner, ADDI_R0_R12 | (-48 & 0xffff), p);
+ bfd_put_32 (htab->glink->owner, ADDI_R0_R12 | (-44 & 0xffff), p);
p += 4;
bfd_put_32 (htab->glink->owner, LD_R12_0R11, p);
p += 4;
@@ -15878,22 +15991,25 @@ ppc64_elf_relocate_section (bfd *output_
addend = 0;
reloc_dest = DEST_STUB;
- if (((stub_entry->stub_type == ppc_stub_plt_call
- && ALWAYS_EMIT_R2SAVE)
- || stub_entry->stub_type == ppc_stub_plt_call_r2save
- || stub_entry->stub_type == ppc_stub_plt_call_both)
- && !(h != NULL
- && is_tls_get_addr (&h->elf, htab)
- && htab->params->tls_get_addr_opt)
- && rel + 1 < relend
- && rel[1].r_offset == rel->r_offset + 4
- && ELF64_R_TYPE (rel[1].r_info) == R_PPC64_TOCSAVE)
- relocation += 4;
- else if ((stub_entry->stub_type == ppc_stub_long_branch_both
- || stub_entry->stub_type == ppc_stub_plt_branch_both
- || stub_entry->stub_type == ppc_stub_plt_call_both)
- && r_type == R_PPC64_REL24_NOTOC)
- relocation += 4;
+ if ((((stub_entry->stub_type == ppc_stub_plt_call
+ && ALWAYS_EMIT_R2SAVE)
+ || stub_entry->stub_type == ppc_stub_plt_call_r2save
+ || stub_entry->stub_type == ppc_stub_plt_call_both)
+ && rel + 1 < relend
+ && rel[1].r_offset == rel->r_offset + 4
+ && ELF64_R_TYPE (rel[1].r_info) == R_PPC64_TOCSAVE)
+ || ((stub_entry->stub_type == ppc_stub_long_branch_both
+ || stub_entry->stub_type == ppc_stub_plt_branch_both
+ || stub_entry->stub_type == ppc_stub_plt_call_both)
+ && r_type == R_PPC64_REL24_NOTOC))
+ {
+ /* Skip over the r2 store at the start of the stub. */
+ if (!(stub_entry->stub_type >= ppc_stub_plt_call
+ && htab->params->tls_get_addr_opt
+ && h != NULL
+ && is_tls_get_addr (&h->elf, htab)))
+ relocation += 4;
+ }
if (r_type == R_PPC64_REL24_NOTOC
&& (stub_entry->stub_type == ppc_stub_plt_call_notoc
@@ -15942,7 +16058,8 @@ ppc64_elf_relocate_section (bfd *output_
break;
case R_PPC64_GOT16_DS:
- if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC)
+ if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC
+ || !htab->do_toc_opt)
break;
from = TOCstart + htab->sec_info[input_section->id].toc_off;
if (relocation + addend - from + 0x8000 < 0x10000
@@ -15961,7 +16078,8 @@ ppc64_elf_relocate_section (bfd *output_
case R_PPC64_GOT16_LO_DS:
case R_PPC64_GOT16_HA:
- if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC)
+ if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC
+ || !htab->do_toc_opt)
break;
from = TOCstart + htab->sec_info[input_section->id].toc_off;
if (relocation + addend - from + 0x80008000ULL < 0x100000000ULL
@@ -15984,34 +16102,38 @@ ppc64_elf_relocate_section (bfd *output_
break;
case R_PPC64_GOT_PCREL34:
- if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC)
+ if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC
+ || !htab->do_toc_opt)
break;
from = (rel->r_offset
+ input_section->output_section->vma
+ input_section->output_offset);
- if (relocation - from + (1ULL << 33) < 1ULL << 34
- && SYMBOL_REFERENCES_LOCAL (info, &h->elf))
- {
- offset = rel->r_offset;
- pinsn = bfd_get_32 (input_bfd, contents + offset);
- pinsn <<= 32;
- pinsn |= bfd_get_32 (input_bfd, contents + offset + 4);
- if ((pinsn & ((-1ULL << 50) | (63ULL << 26)))
- == ((1ULL << 58) | (1ULL << 52) | (57ULL << 26) /* pld */))
- {
- /* Replace with paddi. */
- pinsn += (2ULL << 56) + (14ULL << 26) - (57ULL << 26);
- r_type = R_PPC64_PCREL34;
- rel->r_info = ELF64_R_INFO (r_symndx, r_type);
- bfd_put_32 (input_bfd, pinsn >> 32, contents + offset);
- bfd_put_32 (input_bfd, pinsn, contents + offset + 4);
- goto pcrelopt;
- }
- }
- break;
+ if (!(relocation - from + (1ULL << 33) < 1ULL << 34
+ && SYMBOL_REFERENCES_LOCAL (info, &h->elf)))
+ break;
+
+ offset = rel->r_offset;
+ pinsn = bfd_get_32 (input_bfd, contents + offset);
+ pinsn <<= 32;
+ pinsn |= bfd_get_32 (input_bfd, contents + offset + 4);
+ if ((pinsn & ((-1ULL << 50) | (63ULL << 26)))
+ != ((1ULL << 58) | (1ULL << 52) | (57ULL << 26) /* pld */))
+ break;
+
+ /* Replace with paddi. */
+ pinsn += (2ULL << 56) + (14ULL << 26) - (57ULL << 26);
+ r_type = R_PPC64_PCREL34;
+ rel->r_info = ELF64_R_INFO (r_symndx, r_type);
+ bfd_put_32 (input_bfd, pinsn >> 32, contents + offset);
+ bfd_put_32 (input_bfd, pinsn, contents + offset + 4);
+ /* Fall through. */
case R_PPC64_PCREL34:
- if (SYMBOL_REFERENCES_LOCAL (info, &h->elf))
+ if (!htab->params->no_pcrel_opt
+ && rel + 1 < relend
+ && rel[1].r_offset == rel->r_offset
+ && rel[1].r_info == ELF64_R_INFO (0, R_PPC64_PCREL_OPT)
+ && SYMBOL_REFERENCES_LOCAL (info, &h->elf))
{
offset = rel->r_offset;
pinsn = bfd_get_32 (input_bfd, contents + offset);
@@ -16021,43 +16143,37 @@ ppc64_elf_relocate_section (bfd *output_
== ((1ULL << 58) | (2ULL << 56) | (1ULL << 52)
| (14ULL << 26) /* paddi */))
{
- pcrelopt:
- if (rel + 1 < relend
- && rel[1].r_offset == offset
- && rel[1].r_info == ELF64_R_INFO (0, R_PPC64_PCREL_OPT))
- {
- bfd_vma off2 = rel[1].r_addend;
- if (off2 == 0)
- /* zero means next insn. */
- off2 = 8;
- off2 += offset;
- if (off2 + 4 <= input_section->size)
+ bfd_vma off2 = rel[1].r_addend;
+ if (off2 == 0)
+ /* zero means next insn. */
+ off2 = 8;
+ off2 += offset;
+ if (off2 + 4 <= input_section->size)
+ {
+ uint64_t pinsn2;
+ bfd_signed_vma addend_off;
+ pinsn2 = bfd_get_32 (input_bfd, contents + off2);
+ pinsn2 <<= 32;
+ if ((pinsn2 & (63ULL << 58)) == 1ULL << 58)
{
- uint64_t pinsn2;
- bfd_signed_vma addend_off;
- pinsn2 = bfd_get_32 (input_bfd, contents + off2);
- pinsn2 <<= 32;
+ if (off2 + 8 > input_section->size)
+ break;
+ pinsn2 |= bfd_get_32 (input_bfd,
+ contents + off2 + 4);
+ }
+ if (xlate_pcrel_opt (&pinsn, &pinsn2, &addend_off))
+ {
+ addend += addend_off;
+ rel->r_addend = addend;
+ bfd_put_32 (input_bfd, pinsn >> 32,
+ contents + offset);
+ bfd_put_32 (input_bfd, pinsn,
+ contents + offset + 4);
+ bfd_put_32 (input_bfd, pinsn2 >> 32,
+ contents + off2);
if ((pinsn2 & (63ULL << 58)) == 1ULL << 58)
- {
- if (off2 + 8 > input_section->size)
- break;
- pinsn2 |= bfd_get_32 (input_bfd,
- contents + off2 + 4);
- }
- if (xlate_pcrel_opt (&pinsn, &pinsn2, &addend_off))
- {
- addend += addend_off;
- rel->r_addend = addend;
- bfd_put_32 (input_bfd, pinsn >> 32,
- contents + offset);
- bfd_put_32 (input_bfd, pinsn,
- contents + offset + 4);
- bfd_put_32 (input_bfd, pinsn2 >> 32,
- contents + off2);
- if ((pinsn2 & (63ULL << 58)) == 1ULL << 58)
- bfd_put_32 (input_bfd, pinsn2,
- contents + off2 + 4);
- }
+ bfd_put_32 (input_bfd, pinsn2,
+ contents + off2 + 4);
}
}
}
diff -rup binutils.orig/bfd/elf64-ppc.h binutils-2.35.1/bfd/elf64-ppc.h
--- binutils.orig/bfd/elf64-ppc.h 2020-10-08 13:50:31.430909427 +0100
+++ binutils-2.35.1/bfd/elf64-ppc.h 2020-10-08 13:55:41.515954725 +0100
@@ -27,6 +27,7 @@ struct ppc64_elf_params
/* Linker call-backs. */
asection * (*add_stub_section) (const char *, asection *);
void (*layout_sections_again) (void);
+ void (*edit) (void);
/* Maximum size of a group of input sections that can be handled by
one stub section. A value of +/-1 indicates the bfd back-end
@@ -57,6 +58,9 @@ struct ppc64_elf_params
/* Whether to use power10 instructions in linkage stubs. */
int power10_stubs;
+ /* Whether R_PPC64_PCREL_OPT should be ignored. */
+ int no_pcrel_opt;
+
/* Whether to canonicalize .opd so that there are no overlapping
.opd entries. */
int non_overlapping_opd;
@@ -77,7 +81,7 @@ bfd_boolean ppc64_elf_edit_opd
(struct bfd_link_info *);
bfd_boolean ppc64_elf_inline_plt
(struct bfd_link_info *);
-asection *ppc64_elf_tls_setup
+bfd_boolean ppc64_elf_tls_setup
(struct bfd_link_info *);
bfd_boolean ppc64_elf_tls_optimize
(struct bfd_link_info *);
diff -rup binutils.orig/gas/config/tc-ppc.c binutils-2.35.1/gas/config/tc-ppc.c
--- binutils.orig/gas/config/tc-ppc.c 2020-10-08 13:50:31.069910539 +0100
+++ binutils-2.35.1/gas/config/tc-ppc.c 2020-10-08 13:51:29.102731857 +0100
@@ -3335,6 +3335,15 @@ md_assemble (char *str)
}
insn = opcode->opcode;
+ if (!target_big_endian
+ && ((insn & ~(1 << 26)) == 46u << 26
+ || (insn & ~(0xc0 << 1)) == (31u << 26 | 533 << 1)))
+ {
+ /* lmw, stmw, lswi, lswx, stswi, stswx */
+ as_bad (_("`%s' invalid when little-endian"), str);
+ ppc_clear_labels ();
+ return;
+ }
str = s;
while (ISSPACE (*str))
diff -rup binutils.orig/gas/testsuite/gas/ppc/476.d binutils-2.35.1/gas/testsuite/gas/ppc/476.d
--- binutils.orig/gas/testsuite/gas/ppc/476.d 2020-10-08 13:50:31.313909788 +0100
+++ binutils-2.35.1/gas/testsuite/gas/ppc/476.d 2020-10-08 13:51:29.102731857 +0100
@@ -7,491 +7,485 @@
Disassembly of section \.text:
0+00 <ppc476>:
- 0: (7c 64 2a 14|14 2a 64 7c) add r3,r4,r5
- 4: (7c 64 2a 15|15 2a 64 7c) add\. r3,r4,r5
- 8: (7c 64 28 14|14 28 64 7c) addc r3,r4,r5
- c: (7c 64 28 15|15 28 64 7c) addc\. r3,r4,r5
- 10: (7c 64 2c 14|14 2c 64 7c) addco r3,r4,r5
- 14: (7c 64 2c 15|15 2c 64 7c) addco\. r3,r4,r5
- 18: (7c 64 29 14|14 29 64 7c) adde r3,r4,r5
- 1c: (7c 64 29 15|15 29 64 7c) adde\. r3,r4,r5
- 20: (7c 64 2d 14|14 2d 64 7c) addeo r3,r4,r5
- 24: (7c 64 2d 15|15 2d 64 7c) addeo\. r3,r4,r5
- 28: (38 64 ff 80|80 ff 64 38) addi r3,r4,-128
- 2c: (30 64 ff 80|80 ff 64 30) addic r3,r4,-128
- 30: (34 64 ff 80|80 ff 64 34) addic\. r3,r4,-128
- 34: (3c 64 ff 80|80 ff 64 3c) addis r3,r4,-128
- 38: (7c 64 01 d4|d4 01 64 7c) addme r3,r4
- 3c: (7c 64 01 d5|d5 01 64 7c) addme\. r3,r4
- 40: (7c 64 05 d4|d4 05 64 7c) addmeo r3,r4
- 44: (7c 64 05 d5|d5 05 64 7c) addmeo\. r3,r4
- 48: (7c 64 2e 14|14 2e 64 7c) addo r3,r4,r5
- 4c: (7c 64 2e 15|15 2e 64 7c) addo\. r3,r4,r5
- 50: (7c 64 01 94|94 01 64 7c) addze r3,r4
- 54: (7c 64 01 95|95 01 64 7c) addze\. r3,r4
- 58: (7c 64 05 94|94 05 64 7c) addzeo r3,r4
- 5c: (7c 64 05 95|95 05 64 7c) addzeo\. r3,r4
- 60: (7c 83 28 38|38 28 83 7c) and r3,r4,r5
- 64: (7c 83 28 39|39 28 83 7c) and\. r3,r4,r5
- 68: (7d cd 78 78|78 78 cd 7d) andc r13,r14,r15
- 6c: (7e 30 90 79|79 90 30 7e) andc\. r16,r17,r18
- 70: (70 83 de ad|ad de 83 70) andi\. r3,r4,57005
- 74: (74 83 de ad|ad de 83 74) andis\. r3,r4,57005
- 78: (48 00 00 02|02 00 00 48) ba 0 <ppc476>
- 7c: (40 01 00 00|00 00 01 40) bdnzf gt,7c <ppc476\+0x7c>
- 80: (40 85 00 02|02 00 85 40) blea cr1,0 <ppc476>
- 84: (4d 80 04 20|20 04 80 4d) bltctr
- 88: (4c 8a 04 20|20 04 8a 4c) bnectr cr2
- 8c: (4c 86 04 20|20 04 86 4c) bnectr cr1
- 90: (4c 86 04 20|20 04 86 4c) bnectr cr1
- 94: (4d 80 04 21|21 04 80 4d) bltctrl
- 98: (4c 8a 04 21|21 04 8a 4c) bnectrl cr2
- 9c: (4c 86 04 21|21 04 86 4c) bnectrl cr1
- a0: (4c 86 04 21|21 04 86 4c) bnectrl cr1
- a4: (40 43 00 01|01 00 43 40) bdzfl so,a4 <ppc476\+0xa4>
- a8: (4d 80 00 20|20 00 80 4d) bltlr
- ac: (4c 8a 00 20|20 00 8a 4c) bnelr cr2
- b0: (4c 86 00 20|20 00 86 4c) bnelr cr1
- b4: (4c 86 00 20|20 00 86 4c) bnelr cr1
- b8: (4d 80 00 21|21 00 80 4d) bltlrl
- bc: (4c 8a 00 21|21 00 8a 4c) bnelrl cr2
- c0: (4c 86 00 21|21 00 86 4c) bnelrl cr1
- c4: (4c 86 00 21|21 00 86 4c) bnelrl cr1
- c8: (48 00 00 00|00 00 00 48) b c8 <ppc476\+0xc8>
- cc: (48 00 00 01|01 00 00 48) bl cc <ppc476\+0xcc>
- d0: (54 83 00 36|36 00 83 54) rlwinm r3,r4,0,0,27
- d4: (7c 03 20 00|00 20 03 7c) cmpw r3,r4
- d8: (7f 83 20 00|00 20 83 7f) cmpw cr7,r3,r4
- dc: (7c 83 2b f8|f8 2b 83 7c) cmpb r3,r4,r5
- e0: (7c 83 2b f8|f8 2b 83 7c) cmpb r3,r4,r5
- e4: (2c 03 ff 59|59 ff 03 2c) cmpwi r3,-167
- e8: (2f 83 ff 59|59 ff 83 2f) cmpwi cr7,r3,-167
- ec: (7c 03 20 40|40 20 03 7c) cmplw r3,r4
- f0: (7f 83 20 40|40 20 83 7f) cmplw cr7,r3,r4
- f4: (28 03 00 a7|a7 00 03 28) cmplwi r3,167
- f8: (2b 83 00 a7|a7 00 83 2b) cmplwi cr7,r3,167
- fc: (7c 03 20 40|40 20 03 7c) cmplw r3,r4
- 100: (28 03 00 a7|a7 00 03 28) cmplwi r3,167
- 104: (7c 03 20 00|00 20 03 7c) cmpw r3,r4
- 108: (2c 03 ff 59|59 ff 03 2c) cmpwi r3,-167
- 10c: (7d 6a 00 34|34 00 6a 7d) cntlzw r10,r11
- 110: (7d 6a 00 35|35 00 6a 7d) cntlzw\. r10,r11
- 114: (4c 85 32 02|02 32 85 4c) crand 4\*cr1\+lt,4\*cr1\+gt,4\*cr1\+eq
- 118: (4c 64 29 02|02 29 64 4c) crandc so,4\*cr1\+lt,4\*cr1\+gt
- 11c: (4c e0 0a 42|42 0a e0 4c) creqv 4\*cr1\+so,lt,gt
- 120: (4c 22 19 c2|c2 19 22 4c) crnand gt,eq,so
- 124: (4c 01 10 42|42 10 01 4c) crnor lt,gt,eq
- 128: (4c a6 3b 82|82 3b a6 4c) cror 4\*cr1\+gt,4\*cr1\+eq,4\*cr1\+so
- 12c: (4c 43 23 42|42 23 43 4c) crorc eq,so,4\*cr1\+lt
- 130: (4c c7 01 82|82 01 c7 4c) crxor 4\*cr1\+eq,4\*cr1\+so,lt
- 134: (7c 09 55 ec|ec 55 09 7c) dcba r9,r10
- 138: (7c 06 38 ac|ac 38 06 7c) dcbf r6,r7
- 13c: (7c 06 38 ac|ac 38 06 7c) dcbf r6,r7
- 140: (7c 06 3b ac|ac 3b 06 7c) dcbi r6,r7
- 144: (7c 85 33 0c|0c 33 85 7c) dcblc 4,r5,r6
- 148: (7c 06 38 6c|6c 38 06 7c) dcbst r6,r7
- 14c: (7c 05 32 2c|2c 32 05 7c) dcbt r5,r6
- 150: (7c 05 32 2c|2c 32 05 7c) dcbt r5,r6
- 154: (7d 05 32 2c|2c 32 05 7d) dcbt 8,r5,r6
- 158: (7c e8 49 4c|4c 49 e8 7c) dcbtls 7,r8,r9
- 15c: (7c 06 39 ec|ec 39 06 7c) dcbtst r6,r7
- 160: (7c 06 39 ec|ec 39 06 7c) dcbtst r6,r7
- 164: (7d 26 39 ec|ec 39 26 7d) dcbtst 9,r6,r7
- 168: (7d 4b 61 0c|0c 61 4b 7d) dcbtstls 10,r11,r12
- 16c: (7c 01 17 ec|ec 17 01 7c) dcbz r1,r2
- 170: (7c 05 37 ec|ec 37 05 7c) dcbz r5,r6
- 174: (7c 00 03 8c|8c 03 00 7c) dccci
- 178: (7c 00 03 8c|8c 03 00 7c) dccci
- 17c: (7c 00 03 8c|8c 03 00 7c) dccci
- 180: (7c 20 03 8c|8c 03 20 7c) dci 1
- 184: (7d 4b 63 d6|d6 63 4b 7d) divw r10,r11,r12
- 188: (7d 6c 6b d7|d7 6b 6c 7d) divw\. r11,r12,r13
- 18c: (7d 4b 67 d6|d6 67 4b 7d) divwo r10,r11,r12
- 190: (7d 6c 6f d7|d7 6f 6c 7d) divwo\. r11,r12,r13
- 194: (7d 4b 63 96|96 63 4b 7d) divwu r10,r11,r12
- 198: (7d 6c 6b 97|97 6b 6c 7d) divwu\. r11,r12,r13
- 19c: (7d 4b 67 96|96 67 4b 7d) divwuo r10,r11,r12
- 1a0: (7d 6c 6f 97|97 6f 6c 7d) divwuo\. r11,r12,r13
- 1a4: (7c 83 28 9c|9c 28 83 7c) dlmzb r3,r4,r5
- 1a8: (7c 83 28 9d|9d 28 83 7c) dlmzb\. r3,r4,r5
- 1ac: (7d 6a 62 38|38 62 6a 7d) eqv r10,r11,r12
- 1b0: (7d 6a 62 39|39 62 6a 7d) eqv\. r10,r11,r12
- 1b4: (54 83 20 26|26 20 83 54) rlwinm r3,r4,4,0,19
- 1b8: (7c 83 07 74|74 07 83 7c) extsb r3,r4
- 1bc: (7c 83 07 75|75 07 83 7c) extsb\. r3,r4
- 1c0: (7c 83 07 34|34 07 83 7c) extsh r3,r4
- 1c4: (7c 83 07 35|35 07 83 7c) extsh\. r3,r4
- 1c8: (fe a0 fa 10|10 fa a0 fe) fabs f21,f31
- 1cc: (fe a0 fa 11|11 fa a0 fe) fabs\. f21,f31
- 1d0: (fd 4b 60 2a|2a 60 4b fd) fadd f10,f11,f12
- 1d4: (fd 4b 60 2b|2b 60 4b fd) fadd\. f10,f11,f12
- 1d8: (ed 4b 60 2a|2a 60 4b ed) fadds f10,f11,f12
- 1dc: (ed 4b 60 2b|2b 60 4b ed) fadds\. f10,f11,f12
- 1e0: (fd 40 5e 9c|9c 5e 40 fd) fcfid f10,f11
- 1e4: (fd 40 5e 9d|9d 5e 40 fd) fcfid\. f10,f11
- 1e8: (fd 8a 58 40|40 58 8a fd) fcmpo cr3,f10,f11
- 1ec: (fd 84 28 00|00 28 84 fd) fcmpu cr3,f4,f5
- 1f0: (fd 4b 60 10|10 60 4b fd) fcpsgn f10,f11,f12
- 1f4: (fd 4b 60 11|11 60 4b fd) fcpsgn\. f10,f11,f12
- 1f8: (fd 40 5e 5c|5c 5e 40 fd) fctid f10,f11
- 1fc: (fd 40 5e 5d|5d 5e 40 fd) fctid\. f10,f11
- 200: (fd 40 5e 5e|5e 5e 40 fd) fctidz f10,f11
- 204: (fd 40 5e 5f|5f 5e 40 fd) fctidz\. f10,f11
- 208: (fd 40 58 1c|1c 58 40 fd) fctiw f10,f11
- 20c: (fd 40 58 1d|1d 58 40 fd) fctiw\. f10,f11
- 210: (fd 40 58 1e|1e 58 40 fd) fctiwz f10,f11
- 214: (fd 40 58 1f|1f 58 40 fd) fctiwz\. f10,f11
- 218: (fd 4b 60 24|24 60 4b fd) fdiv f10,f11,f12
- 21c: (fd 4b 60 25|25 60 4b fd) fdiv\. f10,f11,f12
- 220: (ed 4b 60 24|24 60 4b ed) fdivs f10,f11,f12
- 224: (ed 4b 60 25|25 60 4b ed) fdivs\. f10,f11,f12
- 228: (fd 4b 6b 3a|3a 6b 4b fd) fmadd f10,f11,f12,f13
- 22c: (fd 4b 6b 3b|3b 6b 4b fd) fmadd\. f10,f11,f12,f13
- 230: (ed 4b 6b 3a|3a 6b 4b ed) fmadds f10,f11,f12,f13
- 234: (ed 4b 6b 3b|3b 6b 4b ed) fmadds\. f10,f11,f12,f13
- 238: (fc 60 20 90|90 20 60 fc) fmr f3,f4
- 23c: (fc 60 20 91|91 20 60 fc) fmr\. f3,f4
- 240: (fd 4b 6b 38|38 6b 4b fd) fmsub f10,f11,f12,f13
- 244: (fd 4b 6b 39|39 6b 4b fd) fmsub\. f10,f11,f12,f13
- 248: (ed 4b 6b 38|38 6b 4b ed) fmsubs f10,f11,f12,f13
- 24c: (ed 4b 6b 39|39 6b 4b ed) fmsubs\. f10,f11,f12,f13
- 250: (fd 4b 03 32|32 03 4b fd) fmul f10,f11,f12
- 254: (fd 4b 03 33|33 03 4b fd) fmul\. f10,f11,f12
- 258: (ed 4b 03 32|32 03 4b ed) fmuls f10,f11,f12
- 25c: (ed 4b 03 33|33 03 4b ed) fmuls\. f10,f11,f12
- 260: (fe 80 f1 10|10 f1 80 fe) fnabs f20,f30
- 264: (fe 80 f1 11|11 f1 80 fe) fnabs\. f20,f30
- 268: (fc 60 20 50|50 20 60 fc) fneg f3,f4
- 26c: (fc 60 20 51|51 20 60 fc) fneg\. f3,f4
- 270: (fd 4b 6b 3e|3e 6b 4b fd) fnmadd f10,f11,f12,f13
- 274: (fd 4b 6b 3f|3f 6b 4b fd) fnmadd\. f10,f11,f12,f13
- 278: (ed 4b 6b 3e|3e 6b 4b ed) fnmadds f10,f11,f12,f13
- 27c: (ed 4b 6b 3f|3f 6b 4b ed) fnmadds\. f10,f11,f12,f13
- 280: (fd 4b 6b 3c|3c 6b 4b fd) fnmsub f10,f11,f12,f13
- 284: (fd 4b 6b 3d|3d 6b 4b fd) fnmsub\. f10,f11,f12,f13
- 288: (ed 4b 6b 3c|3c 6b 4b ed) fnmsubs f10,f11,f12,f13
- 28c: (ed 4b 6b 3d|3d 6b 4b ed) fnmsubs\. f10,f11,f12,f13
- 290: (fd c0 78 30|30 78 c0 fd) fre f14,f15
- 294: (fd c0 78 31|31 78 c0 fd) fre\. f14,f15
- 298: (ed c0 78 30|30 78 c0 ed) fres f14,f15
- 29c: (ed c0 78 31|31 78 c0 ed) fres\. f14,f15
- 2a0: (fd 40 5b d0|d0 5b 40 fd) frim f10,f11
- 2a4: (fd 40 5b d1|d1 5b 40 fd) frim\. f10,f11
- 2a8: (fd 40 5b 10|10 5b 40 fd) frin f10,f11
- 2ac: (fd 40 5b 11|11 5b 40 fd) frin\. f10,f11
- 2b0: (fd 40 5b 90|90 5b 40 fd) frip f10,f11
- 2b4: (fd 40 5b 91|91 5b 40 fd) frip\. f10,f11
- 2b8: (fd 40 5b 50|50 5b 40 fd) friz f10,f11
- 2bc: (fd 40 5b 51|51 5b 40 fd) friz\. f10,f11
- 2c0: (fc c0 38 18|18 38 c0 fc) frsp f6,f7
- 2c4: (fd 00 48 19|19 48 00 fd) frsp\. f8,f9
- 2c8: (fd c0 78 34|34 78 c0 fd) frsqrte f14,f15
- 2cc: (fd c0 78 35|35 78 c0 fd) frsqrte\. f14,f15
- 2d0: (ed c0 78 34|34 78 c0 ed) frsqrtes f14,f15
- 2d4: (ed c0 78 35|35 78 c0 ed) frsqrtes\. f14,f15
- 2d8: (fd 4b 6b 2e|2e 6b 4b fd) fsel f10,f11,f12,f13
- 2dc: (fd 4b 6b 2f|2f 6b 4b fd) fsel\. f10,f11,f12,f13
- 2e0: (fd 40 58 2c|2c 58 40 fd) fsqrt f10,f11
- 2e4: (fd 40 58 2d|2d 58 40 fd) fsqrt\. f10,f11
- 2e8: (ed 40 58 2c|2c 58 40 ed) fsqrts f10,f11
- 2ec: (ed 40 58 2d|2d 58 40 ed) fsqrts\. f10,f11
- 2f0: (fd 4b 60 28|28 60 4b fd) fsub f10,f11,f12
- 2f4: (fd 4b 60 29|29 60 4b fd) fsub\. f10,f11,f12
- 2f8: (ed 4b 60 28|28 60 4b ed) fsubs f10,f11,f12
- 2fc: (ed 4b 60 29|29 60 4b ed) fsubs\. f10,f11,f12
- 300: (7c 03 27 ac|ac 27 03 7c) icbi r3,r4
- 304: (7e 11 91 cc|cc 91 11 7e) icblc 16,r17,r18
- 308: (7c a8 48 2c|2c 48 a8 7c) icbt 5,r8,r9
- 30c: (7d ae 7b cc|cc 7b ae 7d) icbtls 13,r14,r15
- 310: (7c 00 07 8c|8c 07 00 7c) iccci
- 314: (7c 00 07 8c|8c 07 00 7c) iccci
- 318: (7c 00 07 8c|8c 07 00 7c) iccci
- 31c: (7c 20 07 8c|8c 07 20 7c) ici 1
- 320: (7c 03 27 cc|cc 27 03 7c) icread r3,r4
- 324: (50 83 65 36|36 65 83 50) rlwimi r3,r4,12,20,27
- 328: (7c 43 27 1e|1e 27 43 7c) isel r2,r3,r4,28
- 32c: (4c 00 01 2c|2c 01 00 4c) isync
- 330: (89 21 00 00|00 00 21 89) lbz r9,0\(r1\)
- 334: (8d 41 00 01|01 00 41 8d) lbzu r10,1\(r1\)
- 338: (7e 95 b0 ee|ee b0 95 7e) lbzux r20,r21,r22
- 33c: (7c 64 28 ae|ae 28 64 7c) lbzx r3,r4,r5
- 340: (ca a1 00 08|08 00 a1 ca) lfd f21,8\(r1\)
- 344: (ce c1 00 10|10 00 c1 ce) lfdu f22,16\(r1\)
- 348: (7e 95 b4 ee|ee b4 95 7e) lfdux f20,r21,r22
- 34c: (7d ae 7c ae|ae 7c ae 7d) lfdx f13,r14,r15
- 350: (7d 43 26 ae|ae 26 43 7d) lfiwax f10,r3,r4
- 354: (c2 61 00 00|00 00 61 c2) lfs f19,0\(r1\)
- 358: (c6 81 00 04|04 00 81 c6) lfsu f20,4\(r1\)
- 35c: (7d 4b 64 6e|6e 64 4b 7d) lfsux f10,r11,r12
- 360: (7d 4b 64 2e|2e 64 4b 7d) lfsx f10,r11,r12
- 364: (a9 e1 00 06|06 00 e1 a9) lha r15,6\(r1\)
- 368: (ae 01 00 08|08 00 01 ae) lhau r16,8\(r1\)
- 36c: (7d 2a 5a ee|ee 5a 2a 7d) lhaux r9,r10,r11
- 370: (7d 2a 5a ae|ae 5a 2a 7d) lhax r9,r10,r11
- 374: (7c 64 2e 2c|2c 2e 64 7c) lhbrx r3,r4,r5
- 378: (a1 a1 00 00|00 00 a1 a1) lhz r13,0\(r1\)
- 37c: (a5 c1 00 02|02 00 c1 a5) lhzu r14,2\(r1\)
- 380: (7e 96 c2 6e|6e c2 96 7e) lhzux r20,r22,r24
- 384: (7e f8 ca 2e|2e ca f8 7e) lhzx r23,r24,r25
- 388: (b8 61 ff f0|f0 ff 61 b8) lmw r3,-16\(r1\)
- 38c: (7c a4 84 aa|aa 84 a4 7c) lswi r5,r4,16
- 390: (7c 64 2c 2a|2a 2c 64 7c) lswx r3,r4,r5
- 394: (7c 64 28 28|28 28 64 7c) lwarx r3,r4,r5
- 398: (7c 64 28 28|28 28 64 7c) lwarx r3,r4,r5
- 39c: (7c 64 28 29|29 28 64 7c) lwarx r3,r4,r5,1
- 3a0: (7c 64 2c 2c|2c 2c 64 7c) lwbrx r3,r4,r5
- 3a4: (80 c7 00 00|00 00 c7 80) lwz r6,0\(r7\)
- 3a8: (84 61 00 10|10 00 61 84) lwzu r3,16\(r1\)
- 3ac: (7c 64 28 6e|6e 28 64 7c) lwzux r3,r4,r5
- 3b0: (7c 64 28 2e|2e 28 64 7c) lwzx r3,r4,r5
- 3b4: (10 64 29 58|58 29 64 10) macchw r3,r4,r5
- 3b8: (10 64 29 59|59 29 64 10) macchw\. r3,r4,r5
- 3bc: (10 64 2d 58|58 2d 64 10) macchwo r3,r4,r5
- 3c0: (10 64 2d 59|59 2d 64 10) macchwo\. r3,r4,r5
- 3c4: (10 64 29 d8|d8 29 64 10) macchws r3,r4,r5
- 3c8: (10 64 29 d9|d9 29 64 10) macchws\. r3,r4,r5
- 3cc: (10 64 2d d8|d8 2d 64 10) macchwso r3,r4,r5
- 3d0: (10 64 2d d9|d9 2d 64 10) macchwso\. r3,r4,r5
- 3d4: (10 64 29 98|98 29 64 10) macchwsu r3,r4,r5
- 3d8: (10 64 29 99|99 29 64 10) macchwsu\. r3,r4,r5
- 3dc: (10 64 2d 98|98 2d 64 10) macchwsuo r3,r4,r5
- 3e0: (10 64 2d 99|99 2d 64 10) macchwsuo\. r3,r4,r5
- 3e4: (10 64 29 18|18 29 64 10) macchwu r3,r4,r5
- 3e8: (10 64 29 19|19 29 64 10) macchwu\. r3,r4,r5
- 3ec: (10 64 2d 18|18 2d 64 10) macchwuo r3,r4,r5
- 3f0: (10 64 2d 19|19 2d 64 10) macchwuo\. r3,r4,r5
- 3f4: (10 64 28 58|58 28 64 10) machhw r3,r4,r5
- 3f8: (10 64 28 59|59 28 64 10) machhw\. r3,r4,r5
- 3fc: (10 64 2c 58|58 2c 64 10) machhwo r3,r4,r5
- 400: (10 64 2c 59|59 2c 64 10) machhwo\. r3,r4,r5
- 404: (10 64 28 d8|d8 28 64 10) machhws r3,r4,r5
- 408: (10 64 28 d9|d9 28 64 10) machhws\. r3,r4,r5
- 40c: (10 64 2c d8|d8 2c 64 10) machhwso r3,r4,r5
- 410: (10 64 2c d9|d9 2c 64 10) machhwso\. r3,r4,r5
- 414: (10 64 28 98|98 28 64 10) machhwsu r3,r4,r5
- 418: (10 64 28 99|99 28 64 10) machhwsu\. r3,r4,r5
- 41c: (10 64 2c 98|98 2c 64 10) machhwsuo r3,r4,r5
- 420: (10 64 2c 99|99 2c 64 10) machhwsuo\. r3,r4,r5
- 424: (10 64 28 18|18 28 64 10) machhwu r3,r4,r5
- 428: (10 64 28 19|19 28 64 10) machhwu\. r3,r4,r5
- 42c: (10 64 2c 18|18 2c 64 10) machhwuo r3,r4,r5
- 430: (10 64 2c 19|19 2c 64 10) machhwuo\. r3,r4,r5
- 434: (10 64 2b 58|58 2b 64 10) maclhw r3,r4,r5
- 438: (10 64 2b 59|59 2b 64 10) maclhw\. r3,r4,r5
- 43c: (10 64 2f 58|58 2f 64 10) maclhwo r3,r4,r5
- 440: (10 64 2f 59|59 2f 64 10) maclhwo\. r3,r4,r5
- 444: (10 64 2b d8|d8 2b 64 10) maclhws r3,r4,r5
- 448: (10 64 2b d9|d9 2b 64 10) maclhws\. r3,r4,r5
- 44c: (10 64 2f d8|d8 2f 64 10) maclhwso r3,r4,r5
- 450: (10 64 2f d9|d9 2f 64 10) maclhwso\. r3,r4,r5
- 454: (10 64 2b 98|98 2b 64 10) maclhwsu r3,r4,r5
- 458: (10 64 2b 99|99 2b 64 10) maclhwsu\. r3,r4,r5
- 45c: (10 64 2f 98|98 2f 64 10) maclhwsuo r3,r4,r5
- 460: (10 64 2f 99|99 2f 64 10) maclhwsuo\. r3,r4,r5
- 464: (10 64 2b 18|18 2b 64 10) maclhwu r3,r4,r5
- 468: (10 64 2b 19|19 2b 64 10) maclhwu\. r3,r4,r5
- 46c: (10 64 2f 18|18 2f 64 10) maclhwuo r3,r4,r5
- 470: (10 64 2f 19|19 2f 64 10) maclhwuo\. r3,r4,r5
- 474: (7c 00 06 ac|ac 06 00 7c) mbar
- 478: (7c 00 06 ac|ac 06 00 7c) mbar
- 47c: (7c 20 06 ac|ac 06 20 7c) mbar 1
- 480: (4c 04 00 00|00 00 04 4c) mcrf cr0,cr1
- 484: (fd 90 00 80|80 00 90 fd) mcrfs cr3,cr4
- 488: (7d 80 04 00|00 04 80 7d) mcrxr cr3
- 48c: (7c 60 00 26|26 00 60 7c) mfcr r3
- 490: (7c 60 00 26|26 00 60 7c) mfcr r3
- 494: (7c aa 3a 86|86 3a aa 7c) mfdcr r5,234
- 498: (7c 64 02 46|46 02 64 7c) mfdcrux r3,r4
- 49c: (7c 85 02 06|06 02 85 7c) mfdcrx r4,r5
- 4a0: (ff c0 04 8e|8e 04 c0 ff) mffs f30
- 4a4: (ff e0 04 8f|8f 04 e0 ff) mffs\. f31
- 4a8: (7e 60 00 a6|a6 00 60 7e) mfmsr r19
- 4ac: (7c 78 00 26|26 00 78 7c) mfocrf r3,128
- 4b0: (7c 60 22 a6|a6 22 60 7c) mfspr r3,128
- 4b4: (7c 6c 42 a6|a6 42 6c 7c) mftb r3
- 4b8: (7c 00 04 ac|ac 04 00 7c) msync
- 4bc: (7c 78 01 20|20 01 78 7c) mtocrf 128,r3
- 4c0: (7c 6f f1 20|20 f1 6f 7c) mtcr r3
- 4c4: (7d 10 6b 86|86 6b 10 7d) mtdcr 432,r8
- 4c8: (7c 83 03 46|46 03 83 7c) mtdcrux r3,r4
- 4cc: (7c e6 03 06|06 03 e6 7c) mtdcrx r6,r7
- 4d0: (fc 60 00 8c|8c 00 60 fc) mtfsb0 3
- 4d4: (fc 60 00 8d|8d 00 60 fc) mtfsb0\. 3
- 4d8: (fc 60 00 4c|4c 00 60 fc) mtfsb1 3
- 4dc: (fc 60 00 4d|4d 00 60 fc) mtfsb1\. 3
- 4e0: (fc 0c 55 8e|8e 55 0c fc) mtfsf 6,f10
- 4e4: (fc 0c 55 8e|8e 55 0c fc) mtfsf 6,f10
- 4e8: (fc 0d 55 8e|8e 55 0d fc) mtfsf 6,f10,0,1
- 4ec: (fe 0c 55 8e|8e 55 0c fe) mtfsf 6,f10,1
- 4f0: (fc 0c 5d 8f|8f 5d 0c fc) mtfsf\. 6,f11
- 4f4: (fc 0c 5d 8f|8f 5d 0c fc) mtfsf\. 6,f11
- 4f8: (fc 0d 5d 8f|8f 5d 0d fc) mtfsf\. 6,f11,0,1
- 4fc: (fe 0c 5d 8f|8f 5d 0c fe) mtfsf\. 6,f11,1
- 500: (ff 00 01 0c|0c 01 00 ff) mtfsfi 6,0
- 504: (ff 00 01 0c|0c 01 00 ff) mtfsfi 6,0
- 508: (ff 00 01 0c|0c 01 00 ff) mtfsfi 6,0
- 50c: (ff 01 01 0c|0c 01 01 ff) mtfsfi 6,0,1
- 510: (ff 00 f1 0d|0d f1 00 ff) mtfsfi\. 6,15
- 514: (ff 00 f1 0d|0d f1 00 ff) mtfsfi\. 6,15
- 518: (ff 00 f1 0d|0d f1 00 ff) mtfsfi\. 6,15
- 51c: (ff 01 f1 0d|0d f1 01 ff) mtfsfi\. 6,15,1
- 520: (7d 40 01 24|24 01 40 7d) mtmsr r10
- 524: (7c 78 01 20|20 01 78 7c) mtocrf 128,r3
- 528: (7c 60 23 a6|a6 23 60 7c) mtspr 128,r3
- 52c: (10 64 29 50|50 29 64 10) mulchw r3,r4,r5
- 530: (10 64 29 51|51 29 64 10) mulchw\. r3,r4,r5
- 534: (10 64 29 10|10 29 64 10) mulchwu r3,r4,r5
- 538: (10 64 29 11|11 29 64 10) mulchwu\. r3,r4,r5
- 53c: (10 64 28 50|50 28 64 10) mulhhw r3,r4,r5
- 540: (10 64 28 51|51 28 64 10) mulhhw\. r3,r4,r5
- 544: (10 64 28 10|10 28 64 10) mulhhwu r3,r4,r5
- 548: (10 64 28 11|11 28 64 10) mulhhwu\. r3,r4,r5
- 54c: (7c 64 28 96|96 28 64 7c) mulhw r3,r4,r5
- 550: (7c 64 28 97|97 28 64 7c) mulhw\. r3,r4,r5
- 554: (7c 64 28 16|16 28 64 7c) mulhwu r3,r4,r5
- 558: (7c 64 28 17|17 28 64 7c) mulhwu\. r3,r4,r5
- 55c: (10 64 2b 50|50 2b 64 10) mullhw r3,r4,r5
- 560: (10 64 2b 51|51 2b 64 10) mullhw\. r3,r4,r5
- 564: (10 64 2b 10|10 2b 64 10) mullhwu r3,r4,r5
- 568: (10 64 2b 11|11 2b 64 10) mullhwu\. r3,r4,r5
- 56c: (1c 64 00 05|05 00 64 1c) mulli r3,r4,5
- 570: (7c 64 29 d6|d6 29 64 7c) mullw r3,r4,r5
- 574: (7c 64 29 d7|d7 29 64 7c) mullw\. r3,r4,r5
- 578: (7c 64 2d d6|d6 2d 64 7c) mullwo r3,r4,r5
- 57c: (7c 64 2d d7|d7 2d 64 7c) mullwo\. r3,r4,r5
- 580: (7f bc f3 b8|b8 f3 bc 7f) nand r28,r29,r30
- 584: (7f bc f3 b9|b9 f3 bc 7f) nand\. r28,r29,r30
- 588: (7c 64 00 d0|d0 00 64 7c) neg r3,r4
- 58c: (7c 64 00 d1|d1 00 64 7c) neg\. r3,r4
- 590: (7e 11 04 d0|d0 04 11 7e) nego r16,r17
- 594: (7e 53 04 d1|d1 04 53 7e) nego\. r18,r19
- 598: (10 64 29 5c|5c 29 64 10) nmacchw r3,r4,r5
- 59c: (10 64 29 5d|5d 29 64 10) nmacchw\. r3,r4,r5
- 5a0: (10 64 2d 5c|5c 2d 64 10) nmacchwo r3,r4,r5
- 5a4: (10 64 2d 5d|5d 2d 64 10) nmacchwo\. r3,r4,r5
- 5a8: (10 64 29 dc|dc 29 64 10) nmacchws r3,r4,r5
- 5ac: (10 64 29 dd|dd 29 64 10) nmacchws\. r3,r4,r5
- 5b0: (10 64 2d dc|dc 2d 64 10) nmacchwso r3,r4,r5
- 5b4: (10 64 2d dd|dd 2d 64 10) nmacchwso\. r3,r4,r5
- 5b8: (10 64 28 5c|5c 28 64 10) nmachhw r3,r4,r5
- 5bc: (10 64 28 5d|5d 28 64 10) nmachhw\. r3,r4,r5
- 5c0: (10 64 2c 5c|5c 2c 64 10) nmachhwo r3,r4,r5
- 5c4: (10 64 2c 5d|5d 2c 64 10) nmachhwo\. r3,r4,r5
- 5c8: (10 64 28 dc|dc 28 64 10) nmachhws r3,r4,r5
- 5cc: (10 64 28 dd|dd 28 64 10) nmachhws\. r3,r4,r5
- 5d0: (10 64 2c dc|dc 2c 64 10) nmachhwso r3,r4,r5
- 5d4: (10 64 2c dd|dd 2c 64 10) nmachhwso\. r3,r4,r5
- 5d8: (10 64 2b 5c|5c 2b 64 10) nmaclhw r3,r4,r5
- 5dc: (10 64 2b 5d|5d 2b 64 10) nmaclhw\. r3,r4,r5
- 5e0: (10 64 2f 5c|5c 2f 64 10) nmaclhwo r3,r4,r5
- 5e4: (10 64 2f 5d|5d 2f 64 10) nmaclhwo\. r3,r4,r5
- 5e8: (10 64 2b dc|dc 2b 64 10) nmaclhws r3,r4,r5
- 5ec: (10 64 2b dd|dd 2b 64 10) nmaclhws\. r3,r4,r5
- 5f0: (10 64 2f dc|dc 2f 64 10) nmaclhwso r3,r4,r5
- 5f4: (10 64 2f dd|dd 2f 64 10) nmaclhwso\. r3,r4,r5
- 5f8: (7e b4 b0 f8|f8 b0 b4 7e) nor r20,r21,r22
- 5fc: (7e b4 b0 f9|f9 b0 b4 7e) nor\. r20,r21,r22
- 600: (7c 40 23 78|78 23 40 7c) or r0,r2,r4
- 604: (7d cc 83 79|79 83 cc 7d) or\. r12,r14,r16
- 608: (7e 0f 8b 38|38 8b 0f 7e) orc r15,r16,r17
- 60c: (7e 72 a3 39|39 a3 72 7e) orc\. r18,r19,r20
- 610: (60 21 00 00|00 00 21 60) ori r1,r1,0
- 614: (64 83 de ad|ad de 83 64) oris r3,r4,57005
- 618: (7c 83 00 f4|f4 00 83 7c) popcntb r3,r4
- 61c: (7c 83 01 34|34 01 83 7c) prtyw r3,r4
- 620: (4c 00 00 66|66 00 00 4c) rfci
- 624: (4c 00 00 64|64 00 00 4c) rfi
- 628: (4c 00 00 4c|4c 00 00 4c) rfmci
- 62c: (50 83 65 36|36 65 83 50) rlwimi r3,r4,12,20,27
- 630: (50 83 65 37|37 65 83 50) rlwimi\. r3,r4,12,20,27
- 634: (54 83 00 36|36 00 83 54) rlwinm r3,r4,0,0,27
- 638: (54 83 d1 be|be d1 83 54) rlwinm r3,r4,26,6,31
- 63c: (54 83 20 26|26 20 83 54) rlwinm r3,r4,4,0,19
- 640: (54 83 00 37|37 00 83 54) rlwinm\. r3,r4,0,0,27
- 644: (5c 83 28 3e|3e 28 83 5c) rotlw r3,r4,r5
- 648: (5c 83 28 3f|3f 28 83 5c) rotlw\. r3,r4,r5
- 64c: (5c 83 28 3e|3e 28 83 5c) rotlw r3,r4,r5
- 650: (5c 83 28 3f|3f 28 83 5c) rotlw\. r3,r4,r5
- 654: (44 00 00 02|02 00 00 44) sc
- 658: (7c 83 28 30|30 28 83 7c) slw r3,r4,r5
- 65c: (7c 83 28 31|31 28 83 7c) slw\. r3,r4,r5
- 660: (7c 83 2e 30|30 2e 83 7c) sraw r3,r4,r5
- 664: (7c 83 2e 31|31 2e 83 7c) sraw\. r3,r4,r5
- 668: (7c 83 86 70|70 86 83 7c) srawi r3,r4,16
- 66c: (7c 83 86 71|71 86 83 7c) srawi\. r3,r4,16
- 670: (7c 83 2c 30|30 2c 83 7c) srw r3,r4,r5
- 674: (7c 83 2c 31|31 2c 83 7c) srw\. r3,r4,r5
- 678: (54 83 d1 be|be d1 83 54) rlwinm r3,r4,26,6,31
- 67c: (99 61 00 02|02 00 61 99) stb r11,2\(r1\)
- 680: (9d 81 00 03|03 00 81 9d) stbu r12,3\(r1\)
- 684: (7d ae 79 ee|ee 79 ae 7d) stbux r13,r14,r15
- 688: (7c 64 29 ae|ae 29 64 7c) stbx r3,r4,r5
- 68c: (db 21 00 20|20 00 21 db) stfd f25,32\(r1\)
- 690: (df 41 00 28|28 00 41 df) stfdu f26,40\(r1\)
- 694: (7c 01 15 ee|ee 15 01 7c) stfdux f0,r1,r2
- 698: (7f be fd ae|ae fd be 7f) stfdx f29,r30,r31
- 69c: (7d 43 27 ae|ae 27 43 7d) stfiwx f10,r3,r4
- 6a0: (d2 e1 00 14|14 00 e1 d2) stfs f23,20\(r1\)
- 6a4: (d7 01 00 18|18 00 01 d7) stfsu f24,24\(r1\)
- 6a8: (7f 5b e5 6e|6e e5 5b 7f) stfsux f26,r27,r28
- 6ac: (7e f8 cd 2e|2e cd f8 7e) stfsx f23,r24,r25
- 6b0: (b2 21 00 0a|0a 00 21 b2) sth r17,10\(r1\)
- 6b4: (7c c7 47 2c|2c 47 c7 7c) sthbrx r6,r7,r8
- 6b8: (b6 41 00 0c|0c 00 41 b6) sthu r18,12\(r1\)
- 6bc: (7e b6 bb 6e|6e bb b6 7e) sthux r21,r22,r23
- 6c0: (7d 8d 73 2e|2e 73 8d 7d) sthx r12,r13,r14
- 6c4: (bc c1 ff f0|f0 ff c1 bc) stmw r6,-16\(r1\)
- 6c8: (7c 64 85 aa|aa 85 64 7c) stswi r3,r4,16
- 6cc: (7c 64 2d 2a|2a 2d 64 7c) stswx r3,r4,r5
- 6d0: (90 c7 ff f0|f0 ff c7 90) stw r6,-16\(r7\)
- 6d4: (7c 64 2d 2c|2c 2d 64 7c) stwbrx r3,r4,r5
- 6d8: (7c 64 29 2d|2d 29 64 7c) stwcx\. r3,r4,r5
- 6dc: (94 61 00 10|10 00 61 94) stwu r3,16\(r1\)
- 6e0: (7c 64 29 6e|6e 29 64 7c) stwux r3,r4,r5
- 6e4: (7c 64 29 2e|2e 29 64 7c) stwx r3,r4,r5
- 6e8: (7c 64 28 50|50 28 64 7c) subf r3,r4,r5
- 6ec: (7c 64 28 51|51 28 64 7c) subf\. r3,r4,r5
- 6f0: (7c 64 28 10|10 28 64 7c) subfc r3,r4,r5
- 6f4: (7c 64 28 11|11 28 64 7c) subfc\. r3,r4,r5
- 6f8: (7c 64 2c 10|10 2c 64 7c) subfco r3,r4,r5
- 6fc: (7c 64 2c 11|11 2c 64 7c) subfco\. r3,r4,r5
- 700: (7c 64 29 10|10 29 64 7c) subfe r3,r4,r5
- 704: (7c 64 29 11|11 29 64 7c) subfe\. r3,r4,r5
- 708: (7c 64 2d 10|10 2d 64 7c) subfeo r3,r4,r5
- 70c: (7c 64 2d 11|11 2d 64 7c) subfeo\. r3,r4,r5
- 710: (20 64 00 05|05 00 64 20) subfic r3,r4,5
- 714: (7c 64 01 d0|d0 01 64 7c) subfme r3,r4
- 718: (7c 64 01 d1|d1 01 64 7c) subfme\. r3,r4
- 71c: (7c 64 05 d0|d0 05 64 7c) subfmeo r3,r4
- 720: (7c 64 05 d1|d1 05 64 7c) subfmeo\. r3,r4
- 724: (7c 64 2c 50|50 2c 64 7c) subfo r3,r4,r5
- 728: (7c 64 2c 51|51 2c 64 7c) subfo\. r3,r4,r5
- 72c: (7c 64 01 90|90 01 64 7c) subfze r3,r4
- 730: (7c 64 01 91|91 01 64 7c) subfze\. r3,r4
- 734: (7c 64 05 90|90 05 64 7c) subfzeo r3,r4
- 738: (7c 64 05 91|91 05 64 7c) subfzeo\. r3,r4
- 73c: (7c 07 46 24|24 46 07 7c) tlbivax r7,r8
- 740: (7c 22 3f 64|64 3f 22 7c) tlbre r1,r2,7
- 744: (7c 0b 67 24|24 67 0b 7c) tlbsx r11,r12
- 748: (7d 8d 77 24|24 77 8d 7d) tlbsx r12,r13,r14
- 74c: (7d 8d 77 25|25 77 8d 7d) tlbsx\. r12,r13,r14
- 750: (7c 00 04 6c|6c 04 00 7c) tlbsync
- 754: (7c 00 07 a4|a4 07 00 7c) tlbwe
- 758: (7c 00 07 a4|a4 07 00 7c) tlbwe
- 75c: (7c 21 0f a4|a4 0f 21 7c) tlbwe r1,r1,1
- 760: (7f e0 00 08|08 00 e0 7f) trap
- 764: (7f e0 00 08|08 00 e0 7f) trap
- 768: (7c 83 20 08|08 20 83 7c) tweq r3,r4
- 76c: (7c a3 20 08|08 20 a3 7c) twlge r3,r4
- 770: (7c 83 20 08|08 20 83 7c) tweq r3,r4
- 774: (0d 03 00 0f|0f 00 03 0d) twgti r3,15
- 778: (0c c3 00 0f|0f 00 c3 0c) twllei r3,15
- 77c: (0d 03 00 0f|0f 00 03 0d) twgti r3,15
- 780: (7c a3 20 08|08 20 a3 7c) twlge r3,r4
- 784: (0c c3 00 0f|0f 00 c3 0c) twllei r3,15
- 788: (7c 60 01 06|06 01 60 7c) wrtee r3
- 78c: (7c 00 81 46|46 81 00 7c) wrteei 1
- 790: (7f dd fa 78|78 fa dd 7f) xor r29,r30,r31
- 794: (7f dd fa 79|79 fa dd 7f) xor\. r29,r30,r31
- 798: (68 83 de ad|ad de 83 68) xori r3,r4,57005
- 79c: (6c 83 de ad|ad de 83 6c) xoris r3,r4,57005
+.*: (7c 64 2a 14|14 2a 64 7c) add r3,r4,r5
+.*: (7c 64 2a 15|15 2a 64 7c) add\. r3,r4,r5
+.*: (7c 64 28 14|14 28 64 7c) addc r3,r4,r5
+.*: (7c 64 28 15|15 28 64 7c) addc\. r3,r4,r5
+.*: (7c 64 2c 14|14 2c 64 7c) addco r3,r4,r5
+.*: (7c 64 2c 15|15 2c 64 7c) addco\. r3,r4,r5
+.*: (7c 64 29 14|14 29 64 7c) adde r3,r4,r5
+.*: (7c 64 29 15|15 29 64 7c) adde\. r3,r4,r5
+.*: (7c 64 2d 14|14 2d 64 7c) addeo r3,r4,r5
+.*: (7c 64 2d 15|15 2d 64 7c) addeo\. r3,r4,r5
+.*: (38 64 ff 80|80 ff 64 38) addi r3,r4,-128
+.*: (30 64 ff 80|80 ff 64 30) addic r3,r4,-128
+.*: (34 64 ff 80|80 ff 64 34) addic\. r3,r4,-128
+.*: (3c 64 ff 80|80 ff 64 3c) addis r3,r4,-128
+.*: (7c 64 01 d4|d4 01 64 7c) addme r3,r4
+.*: (7c 64 01 d5|d5 01 64 7c) addme\. r3,r4
+.*: (7c 64 05 d4|d4 05 64 7c) addmeo r3,r4
+.*: (7c 64 05 d5|d5 05 64 7c) addmeo\. r3,r4
+.*: (7c 64 2e 14|14 2e 64 7c) addo r3,r4,r5
+.*: (7c 64 2e 15|15 2e 64 7c) addo\. r3,r4,r5
+.*: (7c 64 01 94|94 01 64 7c) addze r3,r4
+.*: (7c 64 01 95|95 01 64 7c) addze\. r3,r4
+.*: (7c 64 05 94|94 05 64 7c) addzeo r3,r4
+.*: (7c 64 05 95|95 05 64 7c) addzeo\. r3,r4
+.*: (7c 83 28 38|38 28 83 7c) and r3,r4,r5
+.*: (7c 83 28 39|39 28 83 7c) and\. r3,r4,r5
+.*: (7d cd 78 78|78 78 cd 7d) andc r13,r14,r15
+.*: (7e 30 90 79|79 90 30 7e) andc\. r16,r17,r18
+.*: (70 83 de ad|ad de 83 70) andi\. r3,r4,57005
+.*: (74 83 de ad|ad de 83 74) andis\. r3,r4,57005
+.*: (48 00 00 02|02 00 00 48) ba 0 <ppc476>
+.*: (40 01 00 00|00 00 01 40) bdnzf gt,7c <ppc476\+0x7c>
+.*: (40 85 00 02|02 00 85 40) blea cr1,0 <ppc476>
+.*: (4d 80 04 20|20 04 80 4d) bltctr
+.*: (4c 8a 04 20|20 04 8a 4c) bnectr cr2
+.*: (4c 86 04 20|20 04 86 4c) bnectr cr1
+.*: (4c 86 04 20|20 04 86 4c) bnectr cr1
+.*: (4d 80 04 21|21 04 80 4d) bltctrl
+.*: (4c 8a 04 21|21 04 8a 4c) bnectrl cr2
+.*: (4c 86 04 21|21 04 86 4c) bnectrl cr1
+.*: (4c 86 04 21|21 04 86 4c) bnectrl cr1
+.*: (40 43 00 01|01 00 43 40) bdzfl so,a4 <ppc476\+0xa4>
+.*: (4d 80 00 20|20 00 80 4d) bltlr
+.*: (4c 8a 00 20|20 00 8a 4c) bnelr cr2
+.*: (4c 86 00 20|20 00 86 4c) bnelr cr1
+.*: (4c 86 00 20|20 00 86 4c) bnelr cr1
+.*: (4d 80 00 21|21 00 80 4d) bltlrl
+.*: (4c 8a 00 21|21 00 8a 4c) bnelrl cr2
+.*: (4c 86 00 21|21 00 86 4c) bnelrl cr1
+.*: (4c 86 00 21|21 00 86 4c) bnelrl cr1
+.*: (48 00 00 00|00 00 00 48) b c8 <ppc476\+0xc8>
+.*: (48 00 00 01|01 00 00 48) bl cc <ppc476\+0xcc>
+.*: (54 83 00 36|36 00 83 54) rlwinm r3,r4,0,0,27
+.*: (7c 03 20 00|00 20 03 7c) cmpw r3,r4
+.*: (7f 83 20 00|00 20 83 7f) cmpw cr7,r3,r4
+.*: (7c 83 2b f8|f8 2b 83 7c) cmpb r3,r4,r5
+.*: (7c 83 2b f8|f8 2b 83 7c) cmpb r3,r4,r5
+.*: (2c 03 ff 59|59 ff 03 2c) cmpwi r3,-167
+.*: (2f 83 ff 59|59 ff 83 2f) cmpwi cr7,r3,-167
+.*: (7c 03 20 40|40 20 03 7c) cmplw r3,r4
+.*: (7f 83 20 40|40 20 83 7f) cmplw cr7,r3,r4
+.*: (28 03 00 a7|a7 00 03 28) cmplwi r3,167
+.*: (2b 83 00 a7|a7 00 83 2b) cmplwi cr7,r3,167
+.*: (7c 03 20 40|40 20 03 7c) cmplw r3,r4
+.*: (28 03 00 a7|a7 00 03 28) cmplwi r3,167
+.*: (7c 03 20 00|00 20 03 7c) cmpw r3,r4
+.*: (2c 03 ff 59|59 ff 03 2c) cmpwi r3,-167
+.*: (7d 6a 00 34|34 00 6a 7d) cntlzw r10,r11
+.*: (7d 6a 00 35|35 00 6a 7d) cntlzw\. r10,r11
+.*: (4c 85 32 02|02 32 85 4c) crand 4\*cr1\+lt,4\*cr1\+gt,4\*cr1\+eq
+.*: (4c 64 29 02|02 29 64 4c) crandc so,4\*cr1\+lt,4\*cr1\+gt
+.*: (4c e0 0a 42|42 0a e0 4c) creqv 4\*cr1\+so,lt,gt
+.*: (4c 22 19 c2|c2 19 22 4c) crnand gt,eq,so
+.*: (4c 01 10 42|42 10 01 4c) crnor lt,gt,eq
+.*: (4c a6 3b 82|82 3b a6 4c) cror 4\*cr1\+gt,4\*cr1\+eq,4\*cr1\+so
+.*: (4c 43 23 42|42 23 43 4c) crorc eq,so,4\*cr1\+lt
+.*: (4c c7 01 82|82 01 c7 4c) crxor 4\*cr1\+eq,4\*cr1\+so,lt
+.*: (7c 09 55 ec|ec 55 09 7c) dcba r9,r10
+.*: (7c 06 38 ac|ac 38 06 7c) dcbf r6,r7
+.*: (7c 06 38 ac|ac 38 06 7c) dcbf r6,r7
+.*: (7c 06 3b ac|ac 3b 06 7c) dcbi r6,r7
+.*: (7c 85 33 0c|0c 33 85 7c) dcblc 4,r5,r6
+.*: (7c 06 38 6c|6c 38 06 7c) dcbst r6,r7
+.*: (7c 05 32 2c|2c 32 05 7c) dcbt r5,r6
+.*: (7c 05 32 2c|2c 32 05 7c) dcbt r5,r6
+.*: (7d 05 32 2c|2c 32 05 7d) dcbt 8,r5,r6
+.*: (7c e8 49 4c|4c 49 e8 7c) dcbtls 7,r8,r9
+.*: (7c 06 39 ec|ec 39 06 7c) dcbtst r6,r7
+.*: (7c 06 39 ec|ec 39 06 7c) dcbtst r6,r7
+.*: (7d 26 39 ec|ec 39 26 7d) dcbtst 9,r6,r7
+.*: (7d 4b 61 0c|0c 61 4b 7d) dcbtstls 10,r11,r12
+.*: (7c 01 17 ec|ec 17 01 7c) dcbz r1,r2
+.*: (7c 05 37 ec|ec 37 05 7c) dcbz r5,r6
+.*: (7c 00 03 8c|8c 03 00 7c) dccci
+.*: (7c 00 03 8c|8c 03 00 7c) dccci
+.*: (7c 00 03 8c|8c 03 00 7c) dccci
+.*: (7c 20 03 8c|8c 03 20 7c) dci 1
+.*: (7d 4b 63 d6|d6 63 4b 7d) divw r10,r11,r12
+.*: (7d 6c 6b d7|d7 6b 6c 7d) divw\. r11,r12,r13
+.*: (7d 4b 67 d6|d6 67 4b 7d) divwo r10,r11,r12
+.*: (7d 6c 6f d7|d7 6f 6c 7d) divwo\. r11,r12,r13
+.*: (7d 4b 63 96|96 63 4b 7d) divwu r10,r11,r12
+.*: (7d 6c 6b 97|97 6b 6c 7d) divwu\. r11,r12,r13
+.*: (7d 4b 67 96|96 67 4b 7d) divwuo r10,r11,r12
+.*: (7d 6c 6f 97|97 6f 6c 7d) divwuo\. r11,r12,r13
+.*: (7c 83 28 9c|9c 28 83 7c) dlmzb r3,r4,r5
+.*: (7c 83 28 9d|9d 28 83 7c) dlmzb\. r3,r4,r5
+.*: (7d 6a 62 38|38 62 6a 7d) eqv r10,r11,r12
+.*: (7d 6a 62 39|39 62 6a 7d) eqv\. r10,r11,r12
+.*: (54 83 20 26|26 20 83 54) rlwinm r3,r4,4,0,19
+.*: (7c 83 07 74|74 07 83 7c) extsb r3,r4
+.*: (7c 83 07 75|75 07 83 7c) extsb\. r3,r4
+.*: (7c 83 07 34|34 07 83 7c) extsh r3,r4
+.*: (7c 83 07 35|35 07 83 7c) extsh\. r3,r4
+.*: (fe a0 fa 10|10 fa a0 fe) fabs f21,f31
+.*: (fe a0 fa 11|11 fa a0 fe) fabs\. f21,f31
+.*: (fd 4b 60 2a|2a 60 4b fd) fadd f10,f11,f12
+.*: (fd 4b 60 2b|2b 60 4b fd) fadd\. f10,f11,f12
+.*: (ed 4b 60 2a|2a 60 4b ed) fadds f10,f11,f12
+.*: (ed 4b 60 2b|2b 60 4b ed) fadds\. f10,f11,f12
+.*: (fd 40 5e 9c|9c 5e 40 fd) fcfid f10,f11
+.*: (fd 40 5e 9d|9d 5e 40 fd) fcfid\. f10,f11
+.*: (fd 8a 58 40|40 58 8a fd) fcmpo cr3,f10,f11
+.*: (fd 84 28 00|00 28 84 fd) fcmpu cr3,f4,f5
+.*: (fd 4b 60 10|10 60 4b fd) fcpsgn f10,f11,f12
+.*: (fd 4b 60 11|11 60 4b fd) fcpsgn\. f10,f11,f12
+.*: (fd 40 5e 5c|5c 5e 40 fd) fctid f10,f11
+.*: (fd 40 5e 5d|5d 5e 40 fd) fctid\. f10,f11
+.*: (fd 40 5e 5e|5e 5e 40 fd) fctidz f10,f11
+.*: (fd 40 5e 5f|5f 5e 40 fd) fctidz\. f10,f11
+.*: (fd 40 58 1c|1c 58 40 fd) fctiw f10,f11
+.*: (fd 40 58 1d|1d 58 40 fd) fctiw\. f10,f11
+.*: (fd 40 58 1e|1e 58 40 fd) fctiwz f10,f11
+.*: (fd 40 58 1f|1f 58 40 fd) fctiwz\. f10,f11
+.*: (fd 4b 60 24|24 60 4b fd) fdiv f10,f11,f12
+.*: (fd 4b 60 25|25 60 4b fd) fdiv\. f10,f11,f12
+.*: (ed 4b 60 24|24 60 4b ed) fdivs f10,f11,f12
+.*: (ed 4b 60 25|25 60 4b ed) fdivs\. f10,f11,f12
+.*: (fd 4b 6b 3a|3a 6b 4b fd) fmadd f10,f11,f12,f13
+.*: (fd 4b 6b 3b|3b 6b 4b fd) fmadd\. f10,f11,f12,f13
+.*: (ed 4b 6b 3a|3a 6b 4b ed) fmadds f10,f11,f12,f13
+.*: (ed 4b 6b 3b|3b 6b 4b ed) fmadds\. f10,f11,f12,f13
+.*: (fc 60 20 90|90 20 60 fc) fmr f3,f4
+.*: (fc 60 20 91|91 20 60 fc) fmr\. f3,f4
+.*: (fd 4b 6b 38|38 6b 4b fd) fmsub f10,f11,f12,f13
+.*: (fd 4b 6b 39|39 6b 4b fd) fmsub\. f10,f11,f12,f13
+.*: (ed 4b 6b 38|38 6b 4b ed) fmsubs f10,f11,f12,f13
+.*: (ed 4b 6b 39|39 6b 4b ed) fmsubs\. f10,f11,f12,f13
+.*: (fd 4b 03 32|32 03 4b fd) fmul f10,f11,f12
+.*: (fd 4b 03 33|33 03 4b fd) fmul\. f10,f11,f12
+.*: (ed 4b 03 32|32 03 4b ed) fmuls f10,f11,f12
+.*: (ed 4b 03 33|33 03 4b ed) fmuls\. f10,f11,f12
+.*: (fe 80 f1 10|10 f1 80 fe) fnabs f20,f30
+.*: (fe 80 f1 11|11 f1 80 fe) fnabs\. f20,f30
+.*: (fc 60 20 50|50 20 60 fc) fneg f3,f4
+.*: (fc 60 20 51|51 20 60 fc) fneg\. f3,f4
+.*: (fd 4b 6b 3e|3e 6b 4b fd) fnmadd f10,f11,f12,f13
+.*: (fd 4b 6b 3f|3f 6b 4b fd) fnmadd\. f10,f11,f12,f13
+.*: (ed 4b 6b 3e|3e 6b 4b ed) fnmadds f10,f11,f12,f13
+.*: (ed 4b 6b 3f|3f 6b 4b ed) fnmadds\. f10,f11,f12,f13
+.*: (fd 4b 6b 3c|3c 6b 4b fd) fnmsub f10,f11,f12,f13
+.*: (fd 4b 6b 3d|3d 6b 4b fd) fnmsub\. f10,f11,f12,f13
+.*: (ed 4b 6b 3c|3c 6b 4b ed) fnmsubs f10,f11,f12,f13
+.*: (ed 4b 6b 3d|3d 6b 4b ed) fnmsubs\. f10,f11,f12,f13
+.*: (fd c0 78 30|30 78 c0 fd) fre f14,f15
+.*: (fd c0 78 31|31 78 c0 fd) fre\. f14,f15
+.*: (ed c0 78 30|30 78 c0 ed) fres f14,f15
+.*: (ed c0 78 31|31 78 c0 ed) fres\. f14,f15
+.*: (fd 40 5b d0|d0 5b 40 fd) frim f10,f11
+.*: (fd 40 5b d1|d1 5b 40 fd) frim\. f10,f11
+.*: (fd 40 5b 10|10 5b 40 fd) frin f10,f11
+.*: (fd 40 5b 11|11 5b 40 fd) frin\. f10,f11
+.*: (fd 40 5b 90|90 5b 40 fd) frip f10,f11
+.*: (fd 40 5b 91|91 5b 40 fd) frip\. f10,f11
+.*: (fd 40 5b 50|50 5b 40 fd) friz f10,f11
+.*: (fd 40 5b 51|51 5b 40 fd) friz\. f10,f11
+.*: (fc c0 38 18|18 38 c0 fc) frsp f6,f7
+.*: (fd 00 48 19|19 48 00 fd) frsp\. f8,f9
+.*: (fd c0 78 34|34 78 c0 fd) frsqrte f14,f15
+.*: (fd c0 78 35|35 78 c0 fd) frsqrte\. f14,f15
+.*: (ed c0 78 34|34 78 c0 ed) frsqrtes f14,f15
+.*: (ed c0 78 35|35 78 c0 ed) frsqrtes\. f14,f15
+.*: (fd 4b 6b 2e|2e 6b 4b fd) fsel f10,f11,f12,f13
+.*: (fd 4b 6b 2f|2f 6b 4b fd) fsel\. f10,f11,f12,f13
+.*: (fd 40 58 2c|2c 58 40 fd) fsqrt f10,f11
+.*: (fd 40 58 2d|2d 58 40 fd) fsqrt\. f10,f11
+.*: (ed 40 58 2c|2c 58 40 ed) fsqrts f10,f11
+.*: (ed 40 58 2d|2d 58 40 ed) fsqrts\. f10,f11
+.*: (fd 4b 60 28|28 60 4b fd) fsub f10,f11,f12
+.*: (fd 4b 60 29|29 60 4b fd) fsub\. f10,f11,f12
+.*: (ed 4b 60 28|28 60 4b ed) fsubs f10,f11,f12
+.*: (ed 4b 60 29|29 60 4b ed) fsubs\. f10,f11,f12
+.*: (7c 03 27 ac|ac 27 03 7c) icbi r3,r4
+.*: (7e 11 91 cc|cc 91 11 7e) icblc 16,r17,r18
+.*: (7c a8 48 2c|2c 48 a8 7c) icbt 5,r8,r9
+.*: (7d ae 7b cc|cc 7b ae 7d) icbtls 13,r14,r15
+.*: (7c 00 07 8c|8c 07 00 7c) iccci
+.*: (7c 00 07 8c|8c 07 00 7c) iccci
+.*: (7c 00 07 8c|8c 07 00 7c) iccci
+.*: (7c 20 07 8c|8c 07 20 7c) ici 1
+.*: (7c 03 27 cc|cc 27 03 7c) icread r3,r4
+.*: (50 83 65 36|36 65 83 50) rlwimi r3,r4,12,20,27
+.*: (7c 43 27 1e|1e 27 43 7c) isel r2,r3,r4,28
+.*: (4c 00 01 2c|2c 01 00 4c) isync
+.*: (89 21 00 00|00 00 21 89) lbz r9,0\(r1\)
+.*: (8d 41 00 01|01 00 41 8d) lbzu r10,1\(r1\)
+.*: (7e 95 b0 ee|ee b0 95 7e) lbzux r20,r21,r22
+.*: (7c 64 28 ae|ae 28 64 7c) lbzx r3,r4,r5
+.*: (ca a1 00 08|08 00 a1 ca) lfd f21,8\(r1\)
+.*: (ce c1 00 10|10 00 c1 ce) lfdu f22,16\(r1\)
+.*: (7e 95 b4 ee|ee b4 95 7e) lfdux f20,r21,r22
+.*: (7d ae 7c ae|ae 7c ae 7d) lfdx f13,r14,r15
+.*: (7d 43 26 ae|ae 26 43 7d) lfiwax f10,r3,r4
+.*: (c2 61 00 00|00 00 61 c2) lfs f19,0\(r1\)
+.*: (c6 81 00 04|04 00 81 c6) lfsu f20,4\(r1\)
+.*: (7d 4b 64 6e|6e 64 4b 7d) lfsux f10,r11,r12
+.*: (7d 4b 64 2e|2e 64 4b 7d) lfsx f10,r11,r12
+.*: (a9 e1 00 06|06 00 e1 a9) lha r15,6\(r1\)
+.*: (ae 01 00 08|08 00 01 ae) lhau r16,8\(r1\)
+.*: (7d 2a 5a ee|ee 5a 2a 7d) lhaux r9,r10,r11
+.*: (7d 2a 5a ae|ae 5a 2a 7d) lhax r9,r10,r11
+.*: (7c 64 2e 2c|2c 2e 64 7c) lhbrx r3,r4,r5
+.*: (a1 a1 00 00|00 00 a1 a1) lhz r13,0\(r1\)
+.*: (a5 c1 00 02|02 00 c1 a5) lhzu r14,2\(r1\)
+.*: (7e 96 c2 6e|6e c2 96 7e) lhzux r20,r22,r24
+.*: (7e f8 ca 2e|2e ca f8 7e) lhzx r23,r24,r25
+.*: (7c 64 28 28|28 28 64 7c) lwarx r3,r4,r5
+.*: (7c 64 28 28|28 28 64 7c) lwarx r3,r4,r5
+.*: (7c 64 28 29|29 28 64 7c) lwarx r3,r4,r5,1
+.*: (7c 64 2c 2c|2c 2c 64 7c) lwbrx r3,r4,r5
+.*: (80 c7 00 00|00 00 c7 80) lwz r6,0\(r7\)
+.*: (84 61 00 10|10 00 61 84) lwzu r3,16\(r1\)
+.*: (7c 64 28 6e|6e 28 64 7c) lwzux r3,r4,r5
+.*: (7c 64 28 2e|2e 28 64 7c) lwzx r3,r4,r5
+.*: (10 64 29 58|58 29 64 10) macchw r3,r4,r5
+.*: (10 64 29 59|59 29 64 10) macchw\. r3,r4,r5
+.*: (10 64 2d 58|58 2d 64 10) macchwo r3,r4,r5
+.*: (10 64 2d 59|59 2d 64 10) macchwo\. r3,r4,r5
+.*: (10 64 29 d8|d8 29 64 10) macchws r3,r4,r5
+.*: (10 64 29 d9|d9 29 64 10) macchws\. r3,r4,r5
+.*: (10 64 2d d8|d8 2d 64 10) macchwso r3,r4,r5
+.*: (10 64 2d d9|d9 2d 64 10) macchwso\. r3,r4,r5
+.*: (10 64 29 98|98 29 64 10) macchwsu r3,r4,r5
+.*: (10 64 29 99|99 29 64 10) macchwsu\. r3,r4,r5
+.*: (10 64 2d 98|98 2d 64 10) macchwsuo r3,r4,r5
+.*: (10 64 2d 99|99 2d 64 10) macchwsuo\. r3,r4,r5
+.*: (10 64 29 18|18 29 64 10) macchwu r3,r4,r5
+.*: (10 64 29 19|19 29 64 10) macchwu\. r3,r4,r5
+.*: (10 64 2d 18|18 2d 64 10) macchwuo r3,r4,r5
+.*: (10 64 2d 19|19 2d 64 10) macchwuo\. r3,r4,r5
+.*: (10 64 28 58|58 28 64 10) machhw r3,r4,r5
+.*: (10 64 28 59|59 28 64 10) machhw\. r3,r4,r5
+.*: (10 64 2c 58|58 2c 64 10) machhwo r3,r4,r5
+.*: (10 64 2c 59|59 2c 64 10) machhwo\. r3,r4,r5
+.*: (10 64 28 d8|d8 28 64 10) machhws r3,r4,r5
+.*: (10 64 28 d9|d9 28 64 10) machhws\. r3,r4,r5
+.*: (10 64 2c d8|d8 2c 64 10) machhwso r3,r4,r5
+.*: (10 64 2c d9|d9 2c 64 10) machhwso\. r3,r4,r5
+.*: (10 64 28 98|98 28 64 10) machhwsu r3,r4,r5
+.*: (10 64 28 99|99 28 64 10) machhwsu\. r3,r4,r5
+.*: (10 64 2c 98|98 2c 64 10) machhwsuo r3,r4,r5
+.*: (10 64 2c 99|99 2c 64 10) machhwsuo\. r3,r4,r5
+.*: (10 64 28 18|18 28 64 10) machhwu r3,r4,r5
+.*: (10 64 28 19|19 28 64 10) machhwu\. r3,r4,r5
+.*: (10 64 2c 18|18 2c 64 10) machhwuo r3,r4,r5
+.*: (10 64 2c 19|19 2c 64 10) machhwuo\. r3,r4,r5
+.*: (10 64 2b 58|58 2b 64 10) maclhw r3,r4,r5
+.*: (10 64 2b 59|59 2b 64 10) maclhw\. r3,r4,r5
+.*: (10 64 2f 58|58 2f 64 10) maclhwo r3,r4,r5
+.*: (10 64 2f 59|59 2f 64 10) maclhwo\. r3,r4,r5
+.*: (10 64 2b d8|d8 2b 64 10) maclhws r3,r4,r5
+.*: (10 64 2b d9|d9 2b 64 10) maclhws\. r3,r4,r5
+.*: (10 64 2f d8|d8 2f 64 10) maclhwso r3,r4,r5
+.*: (10 64 2f d9|d9 2f 64 10) maclhwso\. r3,r4,r5
+.*: (10 64 2b 98|98 2b 64 10) maclhwsu r3,r4,r5
+.*: (10 64 2b 99|99 2b 64 10) maclhwsu\. r3,r4,r5
+.*: (10 64 2f 98|98 2f 64 10) maclhwsuo r3,r4,r5
+.*: (10 64 2f 99|99 2f 64 10) maclhwsuo\. r3,r4,r5
+.*: (10 64 2b 18|18 2b 64 10) maclhwu r3,r4,r5
+.*: (10 64 2b 19|19 2b 64 10) maclhwu\. r3,r4,r5
+.*: (10 64 2f 18|18 2f 64 10) maclhwuo r3,r4,r5
+.*: (10 64 2f 19|19 2f 64 10) maclhwuo\. r3,r4,r5
+.*: (7c 00 06 ac|ac 06 00 7c) mbar
+.*: (7c 00 06 ac|ac 06 00 7c) mbar
+.*: (7c 20 06 ac|ac 06 20 7c) mbar 1
+.*: (4c 04 00 00|00 00 04 4c) mcrf cr0,cr1
+.*: (fd 90 00 80|80 00 90 fd) mcrfs cr3,cr4
+.*: (7d 80 04 00|00 04 80 7d) mcrxr cr3
+.*: (7c 60 00 26|26 00 60 7c) mfcr r3
+.*: (7c 60 00 26|26 00 60 7c) mfcr r3
+.*: (7c aa 3a 86|86 3a aa 7c) mfdcr r5,234
+.*: (7c 64 02 46|46 02 64 7c) mfdcrux r3,r4
+.*: (7c 85 02 06|06 02 85 7c) mfdcrx r4,r5
+.*: (ff c0 04 8e|8e 04 c0 ff) mffs f30
+.*: (ff e0 04 8f|8f 04 e0 ff) mffs\. f31
+.*: (7e 60 00 a6|a6 00 60 7e) mfmsr r19
+.*: (7c 78 00 26|26 00 78 7c) mfocrf r3,128
+.*: (7c 60 22 a6|a6 22 60 7c) mfspr r3,128
+.*: (7c 6c 42 a6|a6 42 6c 7c) mftb r3
+.*: (7c 00 04 ac|ac 04 00 7c) msync
+.*: (7c 78 01 20|20 01 78 7c) mtocrf 128,r3
+.*: (7c 6f f1 20|20 f1 6f 7c) mtcr r3
+.*: (7d 10 6b 86|86 6b 10 7d) mtdcr 432,r8
+.*: (7c 83 03 46|46 03 83 7c) mtdcrux r3,r4
+.*: (7c e6 03 06|06 03 e6 7c) mtdcrx r6,r7
+.*: (fc 60 00 8c|8c 00 60 fc) mtfsb0 3
+.*: (fc 60 00 8d|8d 00 60 fc) mtfsb0\. 3
+.*: (fc 60 00 4c|4c 00 60 fc) mtfsb1 3
+.*: (fc 60 00 4d|4d 00 60 fc) mtfsb1\. 3
+.*: (fc 0c 55 8e|8e 55 0c fc) mtfsf 6,f10
+.*: (fc 0c 55 8e|8e 55 0c fc) mtfsf 6,f10
+.*: (fc 0d 55 8e|8e 55 0d fc) mtfsf 6,f10,0,1
+.*: (fe 0c 55 8e|8e 55 0c fe) mtfsf 6,f10,1
+.*: (fc 0c 5d 8f|8f 5d 0c fc) mtfsf\. 6,f11
+.*: (fc 0c 5d 8f|8f 5d 0c fc) mtfsf\. 6,f11
+.*: (fc 0d 5d 8f|8f 5d 0d fc) mtfsf\. 6,f11,0,1
+.*: (fe 0c 5d 8f|8f 5d 0c fe) mtfsf\. 6,f11,1
+.*: (ff 00 01 0c|0c 01 00 ff) mtfsfi 6,0
+.*: (ff 00 01 0c|0c 01 00 ff) mtfsfi 6,0
+.*: (ff 00 01 0c|0c 01 00 ff) mtfsfi 6,0
+.*: (ff 01 01 0c|0c 01 01 ff) mtfsfi 6,0,1
+.*: (ff 00 f1 0d|0d f1 00 ff) mtfsfi\. 6,15
+.*: (ff 00 f1 0d|0d f1 00 ff) mtfsfi\. 6,15
+.*: (ff 00 f1 0d|0d f1 00 ff) mtfsfi\. 6,15
+.*: (ff 01 f1 0d|0d f1 01 ff) mtfsfi\. 6,15,1
+.*: (7d 40 01 24|24 01 40 7d) mtmsr r10
+.*: (7c 78 01 20|20 01 78 7c) mtocrf 128,r3
+.*: (7c 60 23 a6|a6 23 60 7c) mtspr 128,r3
+.*: (10 64 29 50|50 29 64 10) mulchw r3,r4,r5
+.*: (10 64 29 51|51 29 64 10) mulchw\. r3,r4,r5
+.*: (10 64 29 10|10 29 64 10) mulchwu r3,r4,r5
+.*: (10 64 29 11|11 29 64 10) mulchwu\. r3,r4,r5
+.*: (10 64 28 50|50 28 64 10) mulhhw r3,r4,r5
+.*: (10 64 28 51|51 28 64 10) mulhhw\. r3,r4,r5
+.*: (10 64 28 10|10 28 64 10) mulhhwu r3,r4,r5
+.*: (10 64 28 11|11 28 64 10) mulhhwu\. r3,r4,r5
+.*: (7c 64 28 96|96 28 64 7c) mulhw r3,r4,r5
+.*: (7c 64 28 97|97 28 64 7c) mulhw\. r3,r4,r5
+.*: (7c 64 28 16|16 28 64 7c) mulhwu r3,r4,r5
+.*: (7c 64 28 17|17 28 64 7c) mulhwu\. r3,r4,r5
+.*: (10 64 2b 50|50 2b 64 10) mullhw r3,r4,r5
+.*: (10 64 2b 51|51 2b 64 10) mullhw\. r3,r4,r5
+.*: (10 64 2b 10|10 2b 64 10) mullhwu r3,r4,r5
+.*: (10 64 2b 11|11 2b 64 10) mullhwu\. r3,r4,r5
+.*: (1c 64 00 05|05 00 64 1c) mulli r3,r4,5
+.*: (7c 64 29 d6|d6 29 64 7c) mullw r3,r4,r5
+.*: (7c 64 29 d7|d7 29 64 7c) mullw\. r3,r4,r5
+.*: (7c 64 2d d6|d6 2d 64 7c) mullwo r3,r4,r5
+.*: (7c 64 2d d7|d7 2d 64 7c) mullwo\. r3,r4,r5
+.*: (7f bc f3 b8|b8 f3 bc 7f) nand r28,r29,r30
+.*: (7f bc f3 b9|b9 f3 bc 7f) nand\. r28,r29,r30
+.*: (7c 64 00 d0|d0 00 64 7c) neg r3,r4
+.*: (7c 64 00 d1|d1 00 64 7c) neg\. r3,r4
+.*: (7e 11 04 d0|d0 04 11 7e) nego r16,r17
+.*: (7e 53 04 d1|d1 04 53 7e) nego\. r18,r19
+.*: (10 64 29 5c|5c 29 64 10) nmacchw r3,r4,r5
+.*: (10 64 29 5d|5d 29 64 10) nmacchw\. r3,r4,r5
+.*: (10 64 2d 5c|5c 2d 64 10) nmacchwo r3,r4,r5
+.*: (10 64 2d 5d|5d 2d 64 10) nmacchwo\. r3,r4,r5
+.*: (10 64 29 dc|dc 29 64 10) nmacchws r3,r4,r5
+.*: (10 64 29 dd|dd 29 64 10) nmacchws\. r3,r4,r5
+.*: (10 64 2d dc|dc 2d 64 10) nmacchwso r3,r4,r5
+.*: (10 64 2d dd|dd 2d 64 10) nmacchwso\. r3,r4,r5
+.*: (10 64 28 5c|5c 28 64 10) nmachhw r3,r4,r5
+.*: (10 64 28 5d|5d 28 64 10) nmachhw\. r3,r4,r5
+.*: (10 64 2c 5c|5c 2c 64 10) nmachhwo r3,r4,r5
+.*: (10 64 2c 5d|5d 2c 64 10) nmachhwo\. r3,r4,r5
+.*: (10 64 28 dc|dc 28 64 10) nmachhws r3,r4,r5
+.*: (10 64 28 dd|dd 28 64 10) nmachhws\. r3,r4,r5
+.*: (10 64 2c dc|dc 2c 64 10) nmachhwso r3,r4,r5
+.*: (10 64 2c dd|dd 2c 64 10) nmachhwso\. r3,r4,r5
+.*: (10 64 2b 5c|5c 2b 64 10) nmaclhw r3,r4,r5
+.*: (10 64 2b 5d|5d 2b 64 10) nmaclhw\. r3,r4,r5
+.*: (10 64 2f 5c|5c 2f 64 10) nmaclhwo r3,r4,r5
+.*: (10 64 2f 5d|5d 2f 64 10) nmaclhwo\. r3,r4,r5
+.*: (10 64 2b dc|dc 2b 64 10) nmaclhws r3,r4,r5
+.*: (10 64 2b dd|dd 2b 64 10) nmaclhws\. r3,r4,r5
+.*: (10 64 2f dc|dc 2f 64 10) nmaclhwso r3,r4,r5
+.*: (10 64 2f dd|dd 2f 64 10) nmaclhwso\. r3,r4,r5
+.*: (7e b4 b0 f8|f8 b0 b4 7e) nor r20,r21,r22
+.*: (7e b4 b0 f9|f9 b0 b4 7e) nor\. r20,r21,r22
+.*: (7c 40 23 78|78 23 40 7c) or r0,r2,r4
+.*: (7d cc 83 79|79 83 cc 7d) or\. r12,r14,r16
+.*: (7e 0f 8b 38|38 8b 0f 7e) orc r15,r16,r17
+.*: (7e 72 a3 39|39 a3 72 7e) orc\. r18,r19,r20
+.*: (60 21 00 00|00 00 21 60) ori r1,r1,0
+.*: (64 83 de ad|ad de 83 64) oris r3,r4,57005
+.*: (7c 83 00 f4|f4 00 83 7c) popcntb r3,r4
+.*: (7c 83 01 34|34 01 83 7c) prtyw r3,r4
+.*: (4c 00 00 66|66 00 00 4c) rfci
+.*: (4c 00 00 64|64 00 00 4c) rfi
+.*: (4c 00 00 4c|4c 00 00 4c) rfmci
+.*: (50 83 65 36|36 65 83 50) rlwimi r3,r4,12,20,27
+.*: (50 83 65 37|37 65 83 50) rlwimi\. r3,r4,12,20,27
+.*: (54 83 00 36|36 00 83 54) rlwinm r3,r4,0,0,27
+.*: (54 83 d1 be|be d1 83 54) rlwinm r3,r4,26,6,31
+.*: (54 83 20 26|26 20 83 54) rlwinm r3,r4,4,0,19
+.*: (54 83 00 37|37 00 83 54) rlwinm\. r3,r4,0,0,27
+.*: (5c 83 28 3e|3e 28 83 5c) rotlw r3,r4,r5
+.*: (5c 83 28 3f|3f 28 83 5c) rotlw\. r3,r4,r5
+.*: (5c 83 28 3e|3e 28 83 5c) rotlw r3,r4,r5
+.*: (5c 83 28 3f|3f 28 83 5c) rotlw\. r3,r4,r5
+.*: (44 00 00 02|02 00 00 44) sc
+.*: (7c 83 28 30|30 28 83 7c) slw r3,r4,r5
+.*: (7c 83 28 31|31 28 83 7c) slw\. r3,r4,r5
+.*: (7c 83 2e 30|30 2e 83 7c) sraw r3,r4,r5
+.*: (7c 83 2e 31|31 2e 83 7c) sraw\. r3,r4,r5
+.*: (7c 83 86 70|70 86 83 7c) srawi r3,r4,16
+.*: (7c 83 86 71|71 86 83 7c) srawi\. r3,r4,16
+.*: (7c 83 2c 30|30 2c 83 7c) srw r3,r4,r5
+.*: (7c 83 2c 31|31 2c 83 7c) srw\. r3,r4,r5
+.*: (54 83 d1 be|be d1 83 54) rlwinm r3,r4,26,6,31
+.*: (99 61 00 02|02 00 61 99) stb r11,2\(r1\)
+.*: (9d 81 00 03|03 00 81 9d) stbu r12,3\(r1\)
+.*: (7d ae 79 ee|ee 79 ae 7d) stbux r13,r14,r15
+.*: (7c 64 29 ae|ae 29 64 7c) stbx r3,r4,r5
+.*: (db 21 00 20|20 00 21 db) stfd f25,32\(r1\)
+.*: (df 41 00 28|28 00 41 df) stfdu f26,40\(r1\)
+.*: (7c 01 15 ee|ee 15 01 7c) stfdux f0,r1,r2
+.*: (7f be fd ae|ae fd be 7f) stfdx f29,r30,r31
+.*: (7d 43 27 ae|ae 27 43 7d) stfiwx f10,r3,r4
+.*: (d2 e1 00 14|14 00 e1 d2) stfs f23,20\(r1\)
+.*: (d7 01 00 18|18 00 01 d7) stfsu f24,24\(r1\)
+.*: (7f 5b e5 6e|6e e5 5b 7f) stfsux f26,r27,r28
+.*: (7e f8 cd 2e|2e cd f8 7e) stfsx f23,r24,r25
+.*: (b2 21 00 0a|0a 00 21 b2) sth r17,10\(r1\)
+.*: (7c c7 47 2c|2c 47 c7 7c) sthbrx r6,r7,r8
+.*: (b6 41 00 0c|0c 00 41 b6) sthu r18,12\(r1\)
+.*: (7e b6 bb 6e|6e bb b6 7e) sthux r21,r22,r23
+.*: (7d 8d 73 2e|2e 73 8d 7d) sthx r12,r13,r14
+.*: (90 c7 ff f0|f0 ff c7 90) stw r6,-16\(r7\)
+.*: (7c 64 2d 2c|2c 2d 64 7c) stwbrx r3,r4,r5
+.*: (7c 64 29 2d|2d 29 64 7c) stwcx\. r3,r4,r5
+.*: (94 61 00 10|10 00 61 94) stwu r3,16\(r1\)
+.*: (7c 64 29 6e|6e 29 64 7c) stwux r3,r4,r5
+.*: (7c 64 29 2e|2e 29 64 7c) stwx r3,r4,r5
+.*: (7c 64 28 50|50 28 64 7c) subf r3,r4,r5
+.*: (7c 64 28 51|51 28 64 7c) subf\. r3,r4,r5
+.*: (7c 64 28 10|10 28 64 7c) subfc r3,r4,r5
+.*: (7c 64 28 11|11 28 64 7c) subfc\. r3,r4,r5
+.*: (7c 64 2c 10|10 2c 64 7c) subfco r3,r4,r5
+.*: (7c 64 2c 11|11 2c 64 7c) subfco\. r3,r4,r5
+.*: (7c 64 29 10|10 29 64 7c) subfe r3,r4,r5
+.*: (7c 64 29 11|11 29 64 7c) subfe\. r3,r4,r5
+.*: (7c 64 2d 10|10 2d 64 7c) subfeo r3,r4,r5
+.*: (7c 64 2d 11|11 2d 64 7c) subfeo\. r3,r4,r5
+.*: (20 64 00 05|05 00 64 20) subfic r3,r4,5
+.*: (7c 64 01 d0|d0 01 64 7c) subfme r3,r4
+.*: (7c 64 01 d1|d1 01 64 7c) subfme\. r3,r4
+.*: (7c 64 05 d0|d0 05 64 7c) subfmeo r3,r4
+.*: (7c 64 05 d1|d1 05 64 7c) subfmeo\. r3,r4
+.*: (7c 64 2c 50|50 2c 64 7c) subfo r3,r4,r5
+.*: (7c 64 2c 51|51 2c 64 7c) subfo\. r3,r4,r5
+.*: (7c 64 01 90|90 01 64 7c) subfze r3,r4
+.*: (7c 64 01 91|91 01 64 7c) subfze\. r3,r4
+.*: (7c 64 05 90|90 05 64 7c) subfzeo r3,r4
+.*: (7c 64 05 91|91 05 64 7c) subfzeo\. r3,r4
+.*: (7c 07 46 24|24 46 07 7c) tlbivax r7,r8
+.*: (7c 22 3f 64|64 3f 22 7c) tlbre r1,r2,7
+.*: (7c 0b 67 24|24 67 0b 7c) tlbsx r11,r12
+.*: (7d 8d 77 24|24 77 8d 7d) tlbsx r12,r13,r14
+.*: (7d 8d 77 25|25 77 8d 7d) tlbsx\. r12,r13,r14
+.*: (7c 00 04 6c|6c 04 00 7c) tlbsync
+.*: (7c 00 07 a4|a4 07 00 7c) tlbwe
+.*: (7c 00 07 a4|a4 07 00 7c) tlbwe
+.*: (7c 21 0f a4|a4 0f 21 7c) tlbwe r1,r1,1
+.*: (7f e0 00 08|08 00 e0 7f) trap
+.*: (7f e0 00 08|08 00 e0 7f) trap
+.*: (7c 83 20 08|08 20 83 7c) tweq r3,r4
+.*: (7c a3 20 08|08 20 a3 7c) twlge r3,r4
+.*: (7c 83 20 08|08 20 83 7c) tweq r3,r4
+.*: (0d 03 00 0f|0f 00 03 0d) twgti r3,15
+.*: (0c c3 00 0f|0f 00 c3 0c) twllei r3,15
+.*: (0d 03 00 0f|0f 00 03 0d) twgti r3,15
+.*: (7c a3 20 08|08 20 a3 7c) twlge r3,r4
+.*: (0c c3 00 0f|0f 00 c3 0c) twllei r3,15
+.*: (7c 60 01 06|06 01 60 7c) wrtee r3
+.*: (7c 00 81 46|46 81 00 7c) wrteei 1
+.*: (7f dd fa 78|78 fa dd 7f) xor r29,r30,r31
+.*: (7f dd fa 79|79 fa dd 7f) xor\. r29,r30,r31
+.*: (68 83 de ad|ad de 83 68) xori r3,r4,57005
+.*: (6c 83 de ad|ad de 83 6c) xoris r3,r4,57005
diff -rup binutils.orig/gas/testsuite/gas/ppc/476.s binutils-2.35.1/gas/testsuite/gas/ppc/476.s
--- binutils.orig/gas/testsuite/gas/ppc/476.s 2020-10-08 13:50:31.310909797 +0100
+++ binutils-2.35.1/gas/testsuite/gas/ppc/476.s 2020-10-08 13:51:29.102731857 +0100
@@ -226,9 +226,6 @@ ppc476:
lhzu 14,2(1)
lhzux 20,22,24
lhzx 23,24,25
- lmw 3,-16(1)
- lswi 5,4,16
- lswx 3,4,5
lwarx 3,4,5
lwarx 3,4,5,0
lwarx 3,4,5,1
@@ -433,9 +430,6 @@ ppc476:
sthu 18,12(1)
sthux 21,22,23
sthx 12,13,14
- stmw 6,-16(1)
- stswi 3,4,16
- stswx 3,4,5
stw 6,-16(7)
stwbrx 3,4,5
stwcx. 3,4,5
diff -rup binutils.orig/gas/testsuite/gas/ppc/a2.d binutils-2.35.1/gas/testsuite/gas/ppc/a2.d
--- binutils.orig/gas/testsuite/gas/ppc/a2.d 2020-10-08 13:50:31.314909784 +0100
+++ binutils-2.35.1/gas/testsuite/gas/ppc/a2.d 2020-10-08 13:51:29.102731857 +0100
@@ -9,577 +9,569 @@
Disassembly of section \.text:
0+00 <start>:
- 0: (7c 85 32 15|15 32 85 7c) add\. r4,r5,r6
- 4: (7c 85 32 14|14 32 85 7c) add r4,r5,r6
- 8: (7c 85 30 15|15 30 85 7c) addc\. r4,r5,r6
- c: (7c 85 30 14|14 30 85 7c) addc r4,r5,r6
- 10: (7c 85 34 15|15 34 85 7c) addco\. r4,r5,r6
- 14: (7c 85 34 14|14 34 85 7c) addco r4,r5,r6
- 18: (7c 85 31 15|15 31 85 7c) adde\. r4,r5,r6
- 1c: (7c 85 31 14|14 31 85 7c) adde r4,r5,r6
- 20: (7c 85 35 15|15 35 85 7c) addeo\. r4,r5,r6
- 24: (7c 85 35 14|14 35 85 7c) addeo r4,r5,r6
- 28: (38 85 00 0d|0d 00 85 38) addi r4,r5,13
- 2c: (38 85 ff f3|f3 ff 85 38) addi r4,r5,-13
- 30: (34 85 00 0d|0d 00 85 34) addic\. r4,r5,13
- 34: (34 85 ff f3|f3 ff 85 34) addic\. r4,r5,-13
- 38: (30 85 00 0d|0d 00 85 30) addic r4,r5,13
- 3c: (30 85 ff f3|f3 ff 85 30) addic r4,r5,-13
- 40: (3c 85 00 17|17 00 85 3c) addis r4,r5,23
- 44: (3c 85 ff e9|e9 ff 85 3c) addis r4,r5,-23
- 48: (7c 85 01 d5|d5 01 85 7c) addme\. r4,r5
- 4c: (7c 85 01 d4|d4 01 85 7c) addme r4,r5
- 50: (7c 85 05 d5|d5 05 85 7c) addmeo\. r4,r5
- 54: (7c 85 05 d4|d4 05 85 7c) addmeo r4,r5
- 58: (7c 85 36 15|15 36 85 7c) addo\. r4,r5,r6
- 5c: (7c 85 36 14|14 36 85 7c) addo r4,r5,r6
- 60: (7c 85 01 95|95 01 85 7c) addze\. r4,r5
- 64: (7c 85 01 94|94 01 85 7c) addze r4,r5
- 68: (7c 85 05 95|95 05 85 7c) addzeo\. r4,r5
- 6c: (7c 85 05 94|94 05 85 7c) addzeo r4,r5
- 70: (7c a4 30 39|39 30 a4 7c) and\. r4,r5,r6
- 74: (7c a4 30 38|38 30 a4 7c) and r4,r5,r6
- 78: (7c a4 30 79|79 30 a4 7c) andc\. r4,r5,r6
- 7c: (7c a4 30 78|78 30 a4 7c) andc r4,r5,r6
- 80: (70 a4 00 06|06 00 a4 70) andi\. r4,r5,6
- 84: (74 a4 00 06|06 00 a4 74) andis\. r4,r5,6
- 88: (00 00 02 00|00 02 00 00) attn
- 8c: (48 00 00 02|02 00 00 48) ba 0 <start>
- 8c: R_PPC(|64)_ADDR24 label_abs
- 90: (40 8a 00 00|00 00 8a 40) bne cr2,90 <start\+0x90>
- 90: R_PPC(|64)_REL14 foo
- 94: (40 ca 00 00|00 00 ca 40) bne- cr2,94 <start\+0x94>
- 94: R_PPC(|64)_REL14 foo
- 98: (40 ea 00 00|00 00 ea 40) bne\+ cr2,98 <start\+0x98>
- 98: R_PPC(|64)_REL14 foo
- 9c: (40 85 00 02|02 00 85 40) blea cr1,0 <start>
- 9c: R_PPC(|64)_ADDR14 foo_abs
- a0: (40 c5 00 02|02 00 c5 40) blea- cr1,0 <start>
- a0: R_PPC(|64)_ADDR14 foo_abs
- a4: (40 e5 00 02|02 00 e5 40) blea\+ cr1,0 <start>
- a4: R_PPC(|64)_ADDR14 foo_abs
- a8: (4c 86 0c 20|20 0c 86 4c) bcctr 4,4\*cr1\+eq,1
- ac: (4c c6 04 20|20 04 c6 4c) bnectr- cr1
- b0: (4c e6 04 20|20 04 e6 4c) bnectr\+ cr1
- b4: (4c 86 0c 21|21 0c 86 4c) bcctrl 4,4\*cr1\+eq,1
- b8: (4c c6 04 21|21 04 c6 4c) bnectrl- cr1
- bc: (4c e6 04 21|21 04 e6 4c) bnectrl\+ cr1
- c0: (40 8a 00 01|01 00 8a 40) bnel cr2,c0 <start\+0xc0>
- c0: R_PPC(|64)_REL14 foo
- c4: (40 ca 00 01|01 00 ca 40) bnel- cr2,c4 <start\+0xc4>
- c4: R_PPC(|64)_REL14 foo
- c8: (40 ea 00 01|01 00 ea 40) bnel\+ cr2,c8 <start\+0xc8>
- c8: R_PPC(|64)_REL14 foo
- cc: (40 85 00 03|03 00 85 40) blela cr1,0 <start>
- cc: R_PPC(|64)_ADDR14 foo_abs
- d0: (40 c5 00 03|03 00 c5 40) blela- cr1,0 <start>
- d0: R_PPC(|64)_ADDR14 foo_abs
- d4: (40 e5 00 03|03 00 e5 40) blela\+ cr1,0 <start>
- d4: R_PPC(|64)_ADDR14 foo_abs
- d8: (4c 86 08 20|20 08 86 4c) bclr 4,4\*cr1\+eq,1
- dc: (4c c6 00 20|20 00 c6 4c) bnelr- cr1
- e0: (4c e6 00 20|20 00 e6 4c) bnelr\+ cr1
- e4: (4c 86 08 21|21 08 86 4c) bclrl 4,4\*cr1\+eq,1
- e8: (4c c6 00 21|21 00 c6 4c) bnelrl- cr1
- ec: (4c e6 00 21|21 00 e6 4c) bnelrl\+ cr1
- f0: (48 00 00 00|00 00 00 48) b f0 <start\+0xf0>
- f0: R_PPC(|64)_REL24 label
- f4: (48 00 00 03|03 00 00 48) bla 0 <start>
- f4: R_PPC(|64)_ADDR24 label_abs
- f8: (48 00 00 01|01 00 00 48) bl f8 <start\+0xf8>
- f8: R_PPC(|64)_REL24 label
- fc: (7d 6a 61 f8|f8 61 6a 7d) bpermd r10,r11,r12
- 100: (7c a7 40 00|00 40 a7 7c) cmpd cr1,r7,r8
- 104: (7d 6a 63 f8|f8 63 6a 7d) cmpb r10,r11,r12
- 108: (2c aa 00 0d|0d 00 aa 2c) cmpdi cr1,r10,13
- 10c: (2c aa ff f3|f3 ff aa 2c) cmpdi cr1,r10,-13
- 110: (7c a7 40 40|40 40 a7 7c) cmpld cr1,r7,r8
- 114: (28 aa 00 64|64 00 aa 28) cmpldi cr1,r10,100
- 118: (7e b4 00 75|75 00 b4 7e) cntlzd\. r20,r21
- 11c: (7e b4 00 74|74 00 b4 7e) cntlzd r20,r21
- 120: (7e b4 00 35|35 00 b4 7e) cntlzw\. r20,r21
- 124: (7e b4 00 34|34 00 b4 7e) cntlzw r20,r21
- 128: (4c 22 1a 02|02 1a 22 4c) crand gt,eq,so
- 12c: (4c 22 19 02|02 19 22 4c) crandc gt,eq,so
- 130: (4c 22 1a 42|42 1a 22 4c) creqv gt,eq,so
- 134: (4c 22 19 c2|c2 19 22 4c) crnand gt,eq,so
- 138: (4c 22 18 42|42 18 22 4c) crnor gt,eq,so
- 13c: (4c 22 1b 82|82 1b 22 4c) cror gt,eq,so
- 140: (4c 22 1b 42|42 1b 22 4c) crorc gt,eq,so
- 144: (4c 22 19 82|82 19 22 4c) crxor gt,eq,so
- 148: (7c 0a 5d ec|ec 5d 0a 7c) dcba r10,r11
- 14c: (7c 0a 58 ac|ac 58 0a 7c) dcbf r10,r11
- 150: (7c 2a 58 ac|ac 58 2a 7c) dcbfl r10,r11
- 154: (7c 0a 58 fe|fe 58 0a 7c) dcbfep r10,r11
- 158: (7c 0a 5b ac|ac 5b 0a 7c) dcbi r10,r11
- 15c: (7c 0a 5b 0c|0c 5b 0a 7c) dcblc r10,r11
- 160: (7c 2a 5b 0c|0c 5b 2a 7c) dcblc 1,r10,r11
- 164: (7c 0a 58 6c|6c 58 0a 7c) dcbst r10,r11
- 168: (7c 0a 58 7e|7e 58 0a 7c) dcbstep r10,r11
- 16c: (7c 0a 5a 2c|2c 5a 0a 7c) dcbt r10,r11
- 170: (7c 2a 5a 2c|2c 5a 2a 7c) dcbt 1,r10,r11
- 174: (7d 4b 62 7e|7e 62 4b 7d) dcbtep r10,r11,r12
- 178: (7c 0a 59 4c|4c 59 0a 7c) dcbtls r10,r11
- 17c: (7c 2a 59 4c|4c 59 2a 7c) dcbtls 1,r10,r11
- 180: (7c 0a 59 ec|ec 59 0a 7c) dcbtst r10,r11
- 184: (7c 2a 59 ec|ec 59 2a 7c) dcbtst 1,r10,r11
- 188: (7d 4b 61 fe|fe 61 4b 7d) dcbtstep r10,r11,r12
- 18c: (7c 0a 59 0c|0c 59 0a 7c) dcbtstls r10,r11
- 190: (7c 2a 59 0c|0c 59 2a 7c) dcbtstls 1,r10,r11
- 194: (7c 0a 5f ec|ec 5f 0a 7c) dcbz r10,r11
- 198: (7c 0a 5f fe|fe 5f 0a 7c) dcbzep r10,r11
- 19c: (7c 00 03 8c|8c 03 00 7c) dccci
- 1a0: (7c 00 03 8c|8c 03 00 7c) dccci
- 1a4: (7c 00 03 8c|8c 03 00 7c) dccci
- 1a8: (7d 40 03 8c|8c 03 40 7d) dci 10
- 1ac: (7e 95 b3 d3|d3 b3 95 7e) divd\. r20,r21,r22
- 1b0: (7e 95 b3 d2|d2 b3 95 7e) divd r20,r21,r22
- 1b4: (7e 95 b7 d3|d3 b7 95 7e) divdo\. r20,r21,r22
- 1b8: (7e 95 b7 d2|d2 b7 95 7e) divdo r20,r21,r22
- 1bc: (7e 95 b3 93|93 b3 95 7e) divdu\. r20,r21,r22
- 1c0: (7e 95 b3 92|92 b3 95 7e) divdu r20,r21,r22
- 1c4: (7e 95 b7 93|93 b7 95 7e) divduo\. r20,r21,r22
- 1c8: (7e 95 b7 92|92 b7 95 7e) divduo r20,r21,r22
- 1cc: (7e 95 b3 d7|d7 b3 95 7e) divw\. r20,r21,r22
- 1d0: (7e 95 b3 d6|d6 b3 95 7e) divw r20,r21,r22
- 1d4: (7e 95 b7 d7|d7 b7 95 7e) divwo\. r20,r21,r22
- 1d8: (7e 95 b7 d6|d6 b7 95 7e) divwo r20,r21,r22
- 1dc: (7e 95 b3 97|97 b3 95 7e) divwu\. r20,r21,r22
- 1e0: (7e 95 b3 96|96 b3 95 7e) divwu r20,r21,r22
- 1e4: (7e 95 b7 97|97 b7 95 7e) divwuo\. r20,r21,r22
- 1e8: (7e 95 b7 96|96 b7 95 7e) divwuo r20,r21,r22
- 1ec: (7e b4 b2 39|39 b2 b4 7e) eqv\. r20,r21,r22
- 1f0: (7e b4 b2 38|38 b2 b4 7e) eqv r20,r21,r22
- 1f4: (7c 0a 58 66|66 58 0a 7c) eratilx 0,r10,r11
- 1f8: (7c 2a 58 66|66 58 2a 7c) eratilx 1,r10,r11
- 1fc: (7c ea 58 66|66 58 ea 7c) eratilx 7,r10,r11
- 200: (7d 4b 66 66|66 66 4b 7d) erativax r10,r11,r12
- 204: (7d 4b 01 66|66 01 4b 7d) eratre r10,r11,0
- 208: (7d 4b 19 66|66 19 4b 7d) eratre r10,r11,3
- 20c: (7d 4b 61 27|27 61 4b 7d) eratsx\. r10,r11,r12
- 210: (7d 4b 61 26|26 61 4b 7d) eratsx r10,r11,r12
- 214: (7d 4b 01 a6|a6 01 4b 7d) eratwe r10,r11,0
- 218: (7d 4b 19 a6|a6 19 4b 7d) eratwe r10,r11,3
- 21c: (7d 6a 07 75|75 07 6a 7d) extsb\. r10,r11
- 220: (7d 6a 07 74|74 07 6a 7d) extsb r10,r11
- 224: (7d 6a 07 35|35 07 6a 7d) extsh\. r10,r11
- 228: (7d 6a 07 34|34 07 6a 7d) extsh r10,r11
- 22c: (7d 6a 07 b5|b5 07 6a 7d) extsw\. r10,r11
- 230: (7d 6a 07 b4|b4 07 6a 7d) extsw r10,r11
- 234: (fe 80 aa 11|11 aa 80 fe) fabs\. f20,f21
- 238: (fe 80 aa 10|10 aa 80 fe) fabs f20,f21
- 23c: (fe 95 b0 2b|2b b0 95 fe) fadd\. f20,f21,f22
- 240: (fe 95 b0 2a|2a b0 95 fe) fadd f20,f21,f22
- 244: (ee 95 b0 2b|2b b0 95 ee) fadds\. f20,f21,f22
- 248: (ee 95 b0 2a|2a b0 95 ee) fadds f20,f21,f22
- 24c: (fe 80 ae 9d|9d ae 80 fe) fcfid\. f20,f21
- 250: (fe 80 ae 9c|9c ae 80 fe) fcfid f20,f21
- 254: (fc 14 a8 40|40 a8 14 fc) fcmpo cr0,f20,f21
- 258: (fc 94 a8 40|40 a8 94 fc) fcmpo cr1,f20,f21
- 25c: (fc 14 a8 00|00 a8 14 fc) fcmpu cr0,f20,f21
- 260: (fc 94 a8 00|00 a8 94 fc) fcmpu cr1,f20,f21
- 264: (fe 95 b0 11|11 b0 95 fe) fcpsgn\. f20,f21,f22
- 268: (fe 95 b0 10|10 b0 95 fe) fcpsgn f20,f21,f22
- 26c: (fe 80 ae 5d|5d ae 80 fe) fctid\. f20,f21
- 270: (fe 80 ae 5c|5c ae 80 fe) fctid f20,f21
- 274: (fe 80 ae 5f|5f ae 80 fe) fctidz\. f20,f21
- 278: (fe 80 ae 5e|5e ae 80 fe) fctidz f20,f21
- 27c: (fe 80 a8 1d|1d a8 80 fe) fctiw\. f20,f21
- 280: (fe 80 a8 1c|1c a8 80 fe) fctiw f20,f21
- 284: (fe 80 a8 1f|1f a8 80 fe) fctiwz\. f20,f21
- 288: (fe 80 a8 1e|1e a8 80 fe) fctiwz f20,f21
- 28c: (fe 95 b0 25|25 b0 95 fe) fdiv\. f20,f21,f22
- 290: (fe 95 b0 24|24 b0 95 fe) fdiv f20,f21,f22
- 294: (ee 95 b0 25|25 b0 95 ee) fdivs\. f20,f21,f22
- 298: (ee 95 b0 24|24 b0 95 ee) fdivs f20,f21,f22
- 29c: (fe 95 bd bb|bb bd 95 fe) fmadd\. f20,f21,f22,f23
- 2a0: (fe 95 bd ba|ba bd 95 fe) fmadd f20,f21,f22,f23
- 2a4: (ee 95 bd bb|bb bd 95 ee) fmadds\. f20,f21,f22,f23
- 2a8: (ee 95 bd ba|ba bd 95 ee) fmadds f20,f21,f22,f23
- 2ac: (fe 80 a8 91|91 a8 80 fe) fmr\. f20,f21
- 2b0: (fe 80 a8 90|90 a8 80 fe) fmr f20,f21
- 2b4: (fe 95 bd b9|b9 bd 95 fe) fmsub\. f20,f21,f22,f23
- 2b8: (fe 95 bd b8|b8 bd 95 fe) fmsub f20,f21,f22,f23
- 2bc: (ee 95 bd b9|b9 bd 95 ee) fmsubs\. f20,f21,f22,f23
- 2c0: (ee 95 bd b8|b8 bd 95 ee) fmsubs f20,f21,f22,f23
- 2c4: (fe 95 05 b3|b3 05 95 fe) fmul\. f20,f21,f22
- 2c8: (fe 95 05 b2|b2 05 95 fe) fmul f20,f21,f22
- 2cc: (ee 95 05 b3|b3 05 95 ee) fmuls\. f20,f21,f22
- 2d0: (ee 95 05 b2|b2 05 95 ee) fmuls f20,f21,f22
- 2d4: (fe 80 a9 11|11 a9 80 fe) fnabs\. f20,f21
- 2d8: (fe 80 a9 10|10 a9 80 fe) fnabs f20,f21
- 2dc: (fe 80 a8 51|51 a8 80 fe) fneg\. f20,f21
- 2e0: (fe 80 a8 50|50 a8 80 fe) fneg f20,f21
- 2e4: (fe 95 bd bf|bf bd 95 fe) fnmadd\. f20,f21,f22,f23
- 2e8: (fe 95 bd be|be bd 95 fe) fnmadd f20,f21,f22,f23
- 2ec: (ee 95 bd bf|bf bd 95 ee) fnmadds\. f20,f21,f22,f23
- 2f0: (ee 95 bd be|be bd 95 ee) fnmadds f20,f21,f22,f23
- 2f4: (fe 95 bd bd|bd bd 95 fe) fnmsub\. f20,f21,f22,f23
- 2f8: (fe 95 bd bc|bc bd 95 fe) fnmsub f20,f21,f22,f23
- 2fc: (ee 95 bd bd|bd bd 95 ee) fnmsubs\. f20,f21,f22,f23
- 300: (ee 95 bd bc|bc bd 95 ee) fnmsubs f20,f21,f22,f23
- 304: (fe 80 a8 31|31 a8 80 fe) fre\. f20,f21
- 308: (fe 80 a8 30|30 a8 80 fe) fre f20,f21
- 30c: (fe 80 a8 31|31 a8 80 fe) fre\. f20,f21
- 310: (fe 80 a8 30|30 a8 80 fe) fre f20,f21
- 314: (fe 81 a8 31|31 a8 81 fe) fre\. f20,f21,1
- 318: (fe 81 a8 30|30 a8 81 fe) fre f20,f21,1
- 31c: (ee 80 a8 31|31 a8 80 ee) fres\. f20,f21
- 320: (ee 80 a8 30|30 a8 80 ee) fres f20,f21
- 324: (ee 80 a8 31|31 a8 80 ee) fres\. f20,f21
- 328: (ee 80 a8 30|30 a8 80 ee) fres f20,f21
- 32c: (ee 81 a8 31|31 a8 81 ee) fres\. f20,f21,1
- 330: (ee 81 a8 30|30 a8 81 ee) fres f20,f21,1
- 334: (fe 80 ab d1|d1 ab 80 fe) frim\. f20,f21
- 338: (fe 80 ab d0|d0 ab 80 fe) frim f20,f21
- 33c: (fe 80 ab 11|11 ab 80 fe) frin\. f20,f21
- 340: (fe 80 ab 10|10 ab 80 fe) frin f20,f21
- 344: (fe 80 ab 91|91 ab 80 fe) frip\. f20,f21
- 348: (fe 80 ab 90|90 ab 80 fe) frip f20,f21
- 34c: (fe 80 ab 51|51 ab 80 fe) friz\. f20,f21
- 350: (fe 80 ab 50|50 ab 80 fe) friz f20,f21
- 354: (fe 80 a8 19|19 a8 80 fe) frsp\. f20,f21
- 358: (fe 80 a8 18|18 a8 80 fe) frsp f20,f21
- 35c: (fe 80 a8 35|35 a8 80 fe) frsqrte\. f20,f21
- 360: (fe 80 a8 34|34 a8 80 fe) frsqrte f20,f21
- 364: (fe 80 a8 35|35 a8 80 fe) frsqrte\. f20,f21
- 368: (fe 80 a8 34|34 a8 80 fe) frsqrte f20,f21
- 36c: (fe 81 a8 35|35 a8 81 fe) frsqrte\. f20,f21,1
- 370: (fe 81 a8 34|34 a8 81 fe) frsqrte f20,f21,1
- 374: (ee 80 a8 34|34 a8 80 ee) frsqrtes f20,f21
- 378: (ee 80 a8 35|35 a8 80 ee) frsqrtes\. f20,f21
- 37c: (ee 80 a8 34|34 a8 80 ee) frsqrtes f20,f21
- 380: (ee 80 a8 35|35 a8 80 ee) frsqrtes\. f20,f21
- 384: (ee 81 a8 34|34 a8 81 ee) frsqrtes f20,f21,1
- 388: (ee 81 a8 35|35 a8 81 ee) frsqrtes\. f20,f21,1
- 38c: (fe 95 bd af|af bd 95 fe) fsel\. f20,f21,f22,f23
- 390: (fe 95 bd ae|ae bd 95 fe) fsel f20,f21,f22,f23
- 394: (fe 80 a8 2d|2d a8 80 fe) fsqrt\. f20,f21
- 398: (fe 80 a8 2c|2c a8 80 fe) fsqrt f20,f21
- 39c: (ee 80 a8 2d|2d a8 80 ee) fsqrts\. f20,f21
- 3a0: (ee 80 a8 2c|2c a8 80 ee) fsqrts f20,f21
- 3a4: (fe 95 b0 29|29 b0 95 fe) fsub\. f20,f21,f22
- 3a8: (fe 95 b0 28|28 b0 95 fe) fsub f20,f21,f22
- 3ac: (ee 95 b0 29|29 b0 95 ee) fsubs\. f20,f21,f22
- 3b0: (ee 95 b0 28|28 b0 95 ee) fsubs f20,f21,f22
- 3b4: (7c 0a 5f ac|ac 5f 0a 7c) icbi r10,r11
- 3b8: (7c 0a 5f be|be 5f 0a 7c) icbiep r10,r11
- 3bc: (7c 0a 58 2c|2c 58 0a 7c) icbt r10,r11
- 3c0: (7c ea 58 2c|2c 58 ea 7c) icbt 7,r10,r11
- 3c4: (7c 0a 5b cc|cc 5b 0a 7c) icbtls r10,r11
- 3c8: (7c ea 5b cc|cc 5b ea 7c) icbtls 7,r10,r11
- 3cc: (7c 00 07 8c|8c 07 00 7c) iccci
- 3d0: (7c 00 07 8c|8c 07 00 7c) iccci
- 3d4: (7c 00 07 8c|8c 07 00 7c) iccci
- 3d8: (7d 40 07 8c|8c 07 40 7d) ici 10
- 3dc: (7d 4b 63 2d|2d 63 4b 7d) icswx\. r10,r11,r12
- 3e0: (7d 4b 63 2c|2c 63 4b 7d) icswx r10,r11,r12
- 3e4: (7d 4b 65 de|de 65 4b 7d) isel r10,r11,r12,23
- 3e8: (4c 00 01 2c|2c 01 00 4c) isync
- 3ec: (7d 4b 60 be|be 60 4b 7d) lbepx r10,r11,r12
- 3f0: (89 4b ff ef|ef ff 4b 89) lbz r10,-17\(r11\)
- 3f4: (89 4b 00 11|11 00 4b 89) lbz r10,17\(r11\)
- 3f8: (8d 4b ff ff|ff ff 4b 8d) lbzu r10,-1\(r11\)
- 3fc: (8d 4b 00 01|01 00 4b 8d) lbzu r10,1\(r11\)
- 400: (7d 4b 68 ee|ee 68 4b 7d) lbzux r10,r11,r13
- 404: (7d 4b 68 ae|ae 68 4b 7d) lbzx r10,r11,r13
- 408: (e9 4b ff f8|f8 ff 4b e9) ld r10,-8\(r11\)
- 40c: (e9 4b 00 08|08 00 4b e9) ld r10,8\(r11\)
- 410: (7d 4b 60 a8|a8 60 4b 7d) ldarx r10,r11,r12
- 414: (7d 4b 60 a9|a9 60 4b 7d) ldarx r10,r11,r12,1
- 418: (7d 4b 64 28|28 64 4b 7d) ldbrx r10,r11,r12
- 41c: (7d 4b 60 3a|3a 60 4b 7d) ldepx r10,r11,r12
- 420: (e9 4b ff f9|f9 ff 4b e9) ldu r10,-8\(r11\)
- 424: (e9 4b 00 09|09 00 4b e9) ldu r10,8\(r11\)
- 428: (7d 4b 60 6a|6a 60 4b 7d) ldux r10,r11,r12
- 42c: (7d 4b 60 2a|2a 60 4b 7d) ldx r10,r11,r12
- 430: (ca 8a ff f8|f8 ff 8a ca) lfd f20,-8\(r10\)
- 434: (ca 8a 00 08|08 00 8a ca) lfd f20,8\(r10\)
- 438: (7e 8a 5c be|be 5c 8a 7e) lfdepx f20,r10,r11
- 43c: (ce 8a ff f8|f8 ff 8a ce) lfdu f20,-8\(r10\)
- 440: (ce 8a 00 08|08 00 8a ce) lfdu f20,8\(r10\)
- 444: (7e 8a 5c ee|ee 5c 8a 7e) lfdux f20,r10,r11
- 448: (7e 8a 5c ae|ae 5c 8a 7e) lfdx f20,r10,r11
- 44c: (7e 8a 5e ae|ae 5e 8a 7e) lfiwax f20,r10,r11
- 450: (7e 8a 5e ee|ee 5e 8a 7e) lfiwzx f20,r10,r11
- 454: (c2 8a ff fc|fc ff 8a c2) lfs f20,-4\(r10\)
- 458: (c2 8a 00 04|04 00 8a c2) lfs f20,4\(r10\)
- 45c: (c6 8a ff fc|fc ff 8a c6) lfsu f20,-4\(r10\)
- 460: (c6 8a 00 04|04 00 8a c6) lfsu f20,4\(r10\)
- 464: (7e 8a 5c 6e|6e 5c 8a 7e) lfsux f20,r10,r11
- 468: (7e 8a 5c 2e|2e 5c 8a 7e) lfsx f20,r10,r11
- 46c: (a9 4b 00 02|02 00 4b a9) lha r10,2\(r11\)
- 470: (ad 4b ff fe|fe ff 4b ad) lhau r10,-2\(r11\)
- 474: (7d 4b 62 ee|ee 62 4b 7d) lhaux r10,r11,r12
- 478: (7d 4b 62 ae|ae 62 4b 7d) lhax r10,r11,r12
- 47c: (7d 4b 66 2c|2c 66 4b 7d) lhbrx r10,r11,r12
- 480: (7d 4b 62 3e|3e 62 4b 7d) lhepx r10,r11,r12
- 484: (a1 4b ff fe|fe ff 4b a1) lhz r10,-2\(r11\)
- 488: (a1 4b 00 02|02 00 4b a1) lhz r10,2\(r11\)
- 48c: (a5 4b ff fe|fe ff 4b a5) lhzu r10,-2\(r11\)
- 490: (a5 4b 00 02|02 00 4b a5) lhzu r10,2\(r11\)
- 494: (7d 4b 62 6e|6e 62 4b 7d) lhzux r10,r11,r12
- 498: (7d 4b 62 2e|2e 62 4b 7d) lhzx r10,r11,r12
- 49c: (ba 8a 00 10|10 00 8a ba) lmw r20,16\(r10\)
- 4a0: (7d 4b 0c aa|aa 0c 4b 7d) lswi r10,r11,1
- 4a4: (7d 8b 04 aa|aa 04 8b 7d) lswi r12,r11,32
- 4a8: (7d 4b 64 2a|2a 64 4b 7d) lswx r10,r11,r12
- 4ac: (e9 4b ff fe|fe ff 4b e9) lwa r10,-4\(r11\)
- 4b0: (e9 4b 00 06|06 00 4b e9) lwa r10,4\(r11\)
- 4b4: (7d 4b 60 28|28 60 4b 7d) lwarx r10,r11,r12
- 4b8: (7d 4b 60 29|29 60 4b 7d) lwarx r10,r11,r12,1
- 4bc: (7d 4b 62 ea|ea 62 4b 7d) lwaux r10,r11,r12
- 4c0: (7d 4b 62 aa|aa 62 4b 7d) lwax r10,r11,r12
- 4c4: (7d 4b 64 2c|2c 64 4b 7d) lwbrx r10,r11,r12
- 4c8: (7d 4b 60 3e|3e 60 4b 7d) lwepx r10,r11,r12
- 4cc: (81 4b ff fc|fc ff 4b 81) lwz r10,-4\(r11\)
- 4d0: (81 4b 00 04|04 00 4b 81) lwz r10,4\(r11\)
- 4d4: (85 4b ff fc|fc ff 4b 85) lwzu r10,-4\(r11\)
- 4d8: (85 4b 00 04|04 00 4b 85) lwzu r10,4\(r11\)
- 4dc: (7d 4b 60 6e|6e 60 4b 7d) lwzux r10,r11,r12
- 4e0: (7d 4b 60 2e|2e 60 4b 7d) lwzx r10,r11,r12
- 4e4: (7c 00 06 ac|ac 06 00 7c) mbar
- 4e8: (7c 00 06 ac|ac 06 00 7c) mbar
- 4ec: (7c 00 06 ac|ac 06 00 7c) mbar
- 4f0: (7c 20 06 ac|ac 06 20 7c) mbar 1
- 4f4: (4c 04 00 00|00 00 04 4c) mcrf cr0,cr1
- 4f8: (fd 90 00 80|80 00 90 fd) mcrfs cr3,cr4
- 4fc: (7c 00 04 00|00 04 00 7c) mcrxr cr0
- 500: (7d 80 04 00|00 04 80 7d) mcrxr cr3
- 504: (7c 60 00 26|26 00 60 7c) mfcr r3
- 508: (7c 70 20 26|26 20 70 7c) mfocrf r3,2
- 50c: (7c 70 10 26|26 10 70 7c) mfocrf r3,1
- 510: (7c 78 00 26|26 00 78 7c) mfocrf r3,128
- 514: (7d 4a 3a 87|87 3a 4a 7d) mfdcr\. r10,234
- 518: (7d 4a 3a 86|86 3a 4a 7d) mfdcr r10,234
- 51c: (7d 4b 02 07|07 02 4b 7d) mfdcrx\. r10,r11
- 520: (7d 4b 02 06|06 02 4b 7d) mfdcrx r10,r11
- 524: (fe 80 04 8f|8f 04 80 fe) mffs\. f20
- 528: (fe 80 04 8e|8e 04 80 fe) mffs f20
- 52c: (7d 40 00 a6|a6 00 40 7d) mfmsr r10
- 530: (7c 70 10 26|26 10 70 7c) mfocrf r3,1
- 534: (7c 78 00 26|26 00 78 7c) mfocrf r3,128
- 538: (7d 4a 3a a6|a6 3a 4a 7d) mfspr r10,234
- 53c: (7d 4c 42 a6|a6 42 4c 7d) mftb r10
- 540: (7d 4d 42 a6|a6 42 4d 7d) mftbu r10
- 544: (7c 00 51 dc|dc 51 00 7c) msgclr r10
- 548: (7c 00 51 9c|9c 51 00 7c) msgsnd r10
- 54c: (7c 60 01 20|20 01 60 7c) mtcrf 0,r3
- 550: (7c 70 11 20|20 11 70 7c) mtocrf 1,r3
- 554: (7c 78 01 20|20 01 78 7c) mtocrf 128,r3
- 558: (7c 6f f1 20|20 f1 6f 7c) mtcr r3
- 55c: (7d 4a 3b 87|87 3b 4a 7d) mtdcr\. 234,r10
- 560: (7d 4a 3b 86|86 3b 4a 7d) mtdcr 234,r10
- 564: (7d 6a 03 07|07 03 6a 7d) mtdcrx\. r10,r11
- 568: (7d 6a 03 06|06 03 6a 7d) mtdcrx r10,r11
- 56c: (fc 60 00 8d|8d 00 60 fc) mtfsb0\. 3
- 570: (fc 60 00 8c|8c 00 60 fc) mtfsb0 3
- 574: (fc 60 00 4d|4d 00 60 fc) mtfsb1\. 3
- 578: (fc 60 00 4c|4c 00 60 fc) mtfsb1 3
- 57c: (fc 0c a5 8f|8f a5 0c fc) mtfsf\. 6,f20
- 580: (fc 0c a5 8e|8e a5 0c fc) mtfsf 6,f20
- 584: (fc 0c a5 8f|8f a5 0c fc) mtfsf\. 6,f20
- 588: (fc 0c a5 8e|8e a5 0c fc) mtfsf 6,f20
- 58c: (fe 0d a5 8f|8f a5 0d fe) mtfsf\. 6,f20,1,1
- 590: (fe 0d a5 8e|8e a5 0d fe) mtfsf 6,f20,1,1
- 594: (ff 00 01 0d|0d 01 00 ff) mtfsfi\. 6,0
- 598: (ff 00 01 0c|0c 01 00 ff) mtfsfi 6,0
- 59c: (ff 00 d1 0d|0d d1 00 ff) mtfsfi\. 6,13
- 5a0: (ff 00 d1 0c|0c d1 00 ff) mtfsfi 6,13
- 5a4: (ff 01 d1 0d|0d d1 01 ff) mtfsfi\. 6,13,1
- 5a8: (ff 01 d1 0c|0c d1 01 ff) mtfsfi 6,13,1
- 5ac: (7d 40 01 24|24 01 40 7d) mtmsr r10
- 5b0: (7d 40 01 24|24 01 40 7d) mtmsr r10
- 5b4: (7d 41 01 24|24 01 41 7d) mtmsr r10,1
- 5b8: (7c 70 11 20|20 11 70 7c) mtocrf 1,r3
- 5bc: (7c 78 01 20|20 01 78 7c) mtocrf 128,r3
- 5c0: (7d 4a 3b a6|a6 3b 4a 7d) mtspr 234,r10
- 5c4: (7e 95 b0 93|93 b0 95 7e) mulhd\. r20,r21,r22
- 5c8: (7e 95 b0 92|92 b0 95 7e) mulhd r20,r21,r22
- 5cc: (7e 95 b0 13|13 b0 95 7e) mulhdu\. r20,r21,r22
- 5d0: (7e 95 b0 12|12 b0 95 7e) mulhdu r20,r21,r22
- 5d4: (7e 95 b0 97|97 b0 95 7e) mulhw\. r20,r21,r22
- 5d8: (7e 95 b0 96|96 b0 95 7e) mulhw r20,r21,r22
- 5dc: (7e 95 b0 17|17 b0 95 7e) mulhwu\. r20,r21,r22
- 5e0: (7e 95 b0 16|16 b0 95 7e) mulhwu r20,r21,r22
- 5e4: (7e 95 b1 d3|d3 b1 95 7e) mulld\. r20,r21,r22
- 5e8: (7e 95 b1 d2|d2 b1 95 7e) mulld r20,r21,r22
- 5ec: (7e 95 b5 d3|d3 b5 95 7e) mulldo\. r20,r21,r22
- 5f0: (7e 95 b5 d2|d2 b5 95 7e) mulldo r20,r21,r22
- 5f4: (1e 95 00 64|64 00 95 1e) mulli r20,r21,100
- 5f8: (1e 95 ff 9c|9c ff 95 1e) mulli r20,r21,-100
- 5fc: (7e 95 b1 d7|d7 b1 95 7e) mullw\. r20,r21,r22
- 600: (7e 95 b1 d6|d6 b1 95 7e) mullw r20,r21,r22
- 604: (7e 95 b5 d7|d7 b5 95 7e) mullwo\. r20,r21,r22
- 608: (7e 95 b5 d6|d6 b5 95 7e) mullwo r20,r21,r22
- 60c: (7e b4 b3 b9|b9 b3 b4 7e) nand\. r20,r21,r22
- 610: (7e b4 b3 b8|b8 b3 b4 7e) nand r20,r21,r22
- 614: (7e 95 00 d1|d1 00 95 7e) neg\. r20,r21
- 618: (7e 95 00 d0|d0 00 95 7e) neg r20,r21
- 61c: (7e 95 04 d1|d1 04 95 7e) nego\. r20,r21
- 620: (7e 95 04 d0|d0 04 95 7e) nego r20,r21
- 624: (7e b4 b0 f9|f9 b0 b4 7e) nor\. r20,r21,r22
- 628: (7e b4 b0 f8|f8 b0 b4 7e) nor r20,r21,r22
- 62c: (7e b4 b3 79|79 b3 b4 7e) or\. r20,r21,r22
- 630: (7e b4 b3 78|78 b3 b4 7e) or r20,r21,r22
- 634: (7e b4 b3 39|39 b3 b4 7e) orc\. r20,r21,r22
- 638: (7e b4 b3 38|38 b3 b4 7e) orc r20,r21,r22
- 63c: (62 b4 10 00|00 10 b4 62) ori r20,r21,4096
- 640: (66 b4 10 00|00 10 b4 66) oris r20,r21,4096
- 644: (7d 6a 00 f4|f4 00 6a 7d) popcntb r10,r11
- 648: (7d 6a 03 f4|f4 03 6a 7d) popcntd r10,r11
- 64c: (7d 6a 02 f4|f4 02 6a 7d) popcntw r10,r11
- 650: (7d 6a 01 74|74 01 6a 7d) prtyd r10,r11
- 654: (7d 6a 01 34|34 01 6a 7d) prtyw r10,r11
- 658: (4c 00 00 66|66 00 00 4c) rfci
- 65c: (4c 00 00 cc|cc 00 00 4c) rfgi
- 660: (4c 00 00 64|64 00 00 4c) rfi
- 664: (4c 00 00 4c|4c 00 00 4c) rfmci
- 668: (79 6a 67 f1|f1 67 6a 79) rldcl\. r10,r11,r12,63
- 66c: (79 6a 67 f0|f0 67 6a 79) rldcl r10,r11,r12,63
- 670: (79 6a 67 f3|f3 67 6a 79) rldcr\. r10,r11,r12,63
- 674: (79 6a 67 f2|f2 67 6a 79) rldcr r10,r11,r12,63
- 678: (79 6a bf e9|e9 bf 6a 79) rldic\. r10,r11,23,63
- 67c: (79 6a bf e8|e8 bf 6a 79) rldic r10,r11,23,63
- 680: (79 6a bf e1|e1 bf 6a 79) rldicl\. r10,r11,23,63
- 684: (79 6a bf e0|e0 bf 6a 79) rldicl r10,r11,23,63
- 688: (79 6a bf e5|e5 bf 6a 79) rldicr\. r10,r11,23,63
- 68c: (79 6a bf e4|e4 bf 6a 79) rldicr r10,r11,23,63
- 690: (79 6a bf ed|ed bf 6a 79) rldimi\. r10,r11,23,63
- 694: (79 6a bf ec|ec bf 6a 79) rldimi r10,r11,23,63
- 698: (51 6a b8 3f|3f b8 6a 51) rlwimi\. r10,r11,23,0,31
- 69c: (51 6a b8 3e|3e b8 6a 51) rlwimi r10,r11,23,0,31
- 6a0: (55 6a b8 3f|3f b8 6a 55) rotlwi\. r10,r11,23
- 6a4: (55 6a b8 3e|3e b8 6a 55) rotlwi r10,r11,23
- 6a8: (5d 6a b8 3f|3f b8 6a 5d) rotlw\. r10,r11,r23
- 6ac: (5d 6a b8 3e|3e b8 6a 5d) rotlw r10,r11,r23
- 6b0: (44 00 00 02|02 00 00 44) sc
- 6b4: (44 00 0c 82|82 0c 00 44) sc 100
- 6b8: (7d 6a 60 37|37 60 6a 7d) sld\. r10,r11,r12
- 6bc: (7d 6a 60 36|36 60 6a 7d) sld r10,r11,r12
- 6c0: (7d 6a 60 31|31 60 6a 7d) slw\. r10,r11,r12
- 6c4: (7d 6a 60 30|30 60 6a 7d) slw r10,r11,r12
- 6c8: (7d 6a 66 35|35 66 6a 7d) srad\. r10,r11,r12
- 6cc: (7d 6a 66 34|34 66 6a 7d) srad r10,r11,r12
- 6d0: (7d 6a fe 77|77 fe 6a 7d) sradi\. r10,r11,63
- 6d4: (7d 6a fe 76|76 fe 6a 7d) sradi r10,r11,63
- 6d8: (7d 6a 66 31|31 66 6a 7d) sraw\. r10,r11,r12
- 6dc: (7d 6a 66 30|30 66 6a 7d) sraw r10,r11,r12
- 6e0: (7d 6a fe 71|71 fe 6a 7d) srawi\. r10,r11,31
- 6e4: (7d 6a fe 70|70 fe 6a 7d) srawi r10,r11,31
- 6e8: (7d 6a 64 37|37 64 6a 7d) srd\. r10,r11,r12
- 6ec: (7d 6a 64 36|36 64 6a 7d) srd r10,r11,r12
- 6f0: (7d 6a 64 31|31 64 6a 7d) srw\. r10,r11,r12
- 6f4: (7d 6a 64 30|30 64 6a 7d) srw r10,r11,r12
- 6f8: (99 4b ff ff|ff ff 4b 99) stb r10,-1\(r11\)
- 6fc: (99 4b 00 01|01 00 4b 99) stb r10,1\(r11\)
- 700: (7d 4b 61 be|be 61 4b 7d) stbepx r10,r11,r12
- 704: (9d 4b ff ff|ff ff 4b 9d) stbu r10,-1\(r11\)
- 708: (9d 4b 00 01|01 00 4b 9d) stbu r10,1\(r11\)
- 70c: (7d 4b 61 ee|ee 61 4b 7d) stbux r10,r11,r12
- 710: (7d 4b 61 ae|ae 61 4b 7d) stbx r10,r11,r12
- 714: (f9 4b ff f8|f8 ff 4b f9) std r10,-8\(r11\)
- 718: (f9 4b 00 08|08 00 4b f9) std r10,8\(r11\)
- 71c: (7d 4b 65 28|28 65 4b 7d) stdbrx r10,r11,r12
- 720: (7d 4b 61 ad|ad 61 4b 7d) stdcx\. r10,r11,r12
- 724: (7d 4b 61 3a|3a 61 4b 7d) stdepx r10,r11,r12
- 728: (f9 4b ff f9|f9 ff 4b f9) stdu r10,-8\(r11\)
- 72c: (f9 4b 00 09|09 00 4b f9) stdu r10,8\(r11\)
- 730: (7d 4b 61 6a|6a 61 4b 7d) stdux r10,r11,r12
- 734: (7d 4b 61 2a|2a 61 4b 7d) stdx r10,r11,r12
- 738: (da 8a ff f8|f8 ff 8a da) stfd f20,-8\(r10\)
- 73c: (da 8a 00 08|08 00 8a da) stfd f20,8\(r10\)
- 740: (7e 8a 5d be|be 5d 8a 7e) stfdepx f20,r10,r11
- 744: (de 8a ff f8|f8 ff 8a de) stfdu f20,-8\(r10\)
- 748: (de 8a 00 08|08 00 8a de) stfdu f20,8\(r10\)
- 74c: (7e 8a 5d ee|ee 5d 8a 7e) stfdux f20,r10,r11
- 750: (7e 8a 5d ae|ae 5d 8a 7e) stfdx f20,r10,r11
- 754: (7e 8a 5f ae|ae 5f 8a 7e) stfiwx f20,r10,r11
- 758: (d2 8a ff fc|fc ff 8a d2) stfs f20,-4\(r10\)
- 75c: (d2 8a 00 04|04 00 8a d2) stfs f20,4\(r10\)
- 760: (d6 8a ff fc|fc ff 8a d6) stfsu f20,-4\(r10\)
- 764: (d6 8a 00 04|04 00 8a d6) stfsu f20,4\(r10\)
- 768: (7e 8a 5d 6e|6e 5d 8a 7e) stfsux f20,r10,r11
- 76c: (7e 8a 5d 2e|2e 5d 8a 7e) stfsx f20,r10,r11
- 770: (b1 4b ff fe|fe ff 4b b1) sth r10,-2\(r11\)
- 774: (b1 4b 00 02|02 00 4b b1) sth r10,2\(r11\)
- 778: (b1 4b ff fc|fc ff 4b b1) sth r10,-4\(r11\)
- 77c: (b1 4b 00 04|04 00 4b b1) sth r10,4\(r11\)
- 780: (7d 4b 67 2c|2c 67 4b 7d) sthbrx r10,r11,r12
- 784: (7d 4b 63 3e|3e 63 4b 7d) sthepx r10,r11,r12
- 788: (b5 4b ff fe|fe ff 4b b5) sthu r10,-2\(r11\)
- 78c: (b5 4b 00 02|02 00 4b b5) sthu r10,2\(r11\)
- 790: (7d 4b 63 6e|6e 63 4b 7d) sthux r10,r11,r12
- 794: (7d 4b 63 2e|2e 63 4b 7d) sthx r10,r11,r12
- 798: (be 8a 00 10|10 00 8a be) stmw r20,16\(r10\)
- 79c: (7d 4b 0d aa|aa 0d 4b 7d) stswi r10,r11,1
- 7a0: (7d 4b 05 aa|aa 05 4b 7d) stswi r10,r11,32
- 7a4: (7d 4b 65 2a|2a 65 4b 7d) stswx r10,r11,r12
- 7a8: (7d 4b 65 2c|2c 65 4b 7d) stwbrx r10,r11,r12
- 7ac: (7d 4b 61 2d|2d 61 4b 7d) stwcx\. r10,r11,r12
- 7b0: (7d 4b 61 3e|3e 61 4b 7d) stwepx r10,r11,r12
- 7b4: (95 4b ff fc|fc ff 4b 95) stwu r10,-4\(r11\)
- 7b8: (95 4b 00 04|04 00 4b 95) stwu r10,4\(r11\)
- 7bc: (7d 4b 61 6e|6e 61 4b 7d) stwux r10,r11,r12
- 7c0: (7d 4b 61 2e|2e 61 4b 7d) stwx r10,r11,r12
- 7c4: (7e 95 b0 51|51 b0 95 7e) subf\. r20,r21,r22
- 7c8: (7e 95 b0 50|50 b0 95 7e) subf r20,r21,r22
- 7cc: (7e 95 b0 11|11 b0 95 7e) subfc\. r20,r21,r22
- 7d0: (7e 95 b0 10|10 b0 95 7e) subfc r20,r21,r22
- 7d4: (7e 95 b4 11|11 b4 95 7e) subfco\. r20,r21,r22
- 7d8: (7e 95 b4 10|10 b4 95 7e) subfco r20,r21,r22
- 7dc: (7e 95 b1 11|11 b1 95 7e) subfe\. r20,r21,r22
- 7e0: (7e 95 b1 10|10 b1 95 7e) subfe r20,r21,r22
- 7e4: (7e 95 b5 11|11 b5 95 7e) subfeo\. r20,r21,r22
- 7e8: (7e 95 b5 10|10 b5 95 7e) subfeo r20,r21,r22
- 7ec: (22 95 00 64|64 00 95 22) subfic r20,r21,100
- 7f0: (22 95 ff 9c|9c ff 95 22) subfic r20,r21,-100
- 7f4: (7e 95 01 d1|d1 01 95 7e) subfme\. r20,r21
- 7f8: (7e 95 01 d0|d0 01 95 7e) subfme r20,r21
- 7fc: (7e 95 05 d1|d1 05 95 7e) subfmeo\. r20,r21
- 800: (7e 95 05 d0|d0 05 95 7e) subfmeo r20,r21
- 804: (7e 95 b4 51|51 b4 95 7e) subfo\. r20,r21,r22
- 808: (7e 95 b4 50|50 b4 95 7e) subfo r20,r21,r22
- 80c: (7e 95 01 91|91 01 95 7e) subfze\. r20,r21
- 810: (7e 95 01 90|90 01 95 7e) subfze r20,r21
- 814: (7e 95 05 91|91 05 95 7e) subfzeo\. r20,r21
- 818: (7e 95 05 90|90 05 95 7e) subfzeo r20,r21
- 81c: (7c 00 04 ac|ac 04 00 7c) hwsync
- 820: (7c 00 04 ac|ac 04 00 7c) hwsync
- 824: (7c 00 04 ac|ac 04 00 7c) hwsync
- 828: (7c 20 04 ac|ac 04 20 7c) lwsync
- 82c: (7c aa 58 88|88 58 aa 7c) tdlge r10,r11
- 830: (08 aa 00 64|64 00 aa 08) tdlgei r10,100
- 834: (08 aa ff 9c|9c ff aa 08) tdlgei r10,-100
- 838: (7c 6a 58 24|24 58 6a 7c) tlbilxva r10,r11
- 83c: (7c 0a 5e 24|24 5e 0a 7c) tlbivax r10,r11
- 840: (7c 00 07 64|64 07 00 7c) tlbre
- 844: (7d 4b 3f 64|64 3f 4b 7d) tlbre r10,r11,7
- 848: (7c 0a 5e a5|a5 5e 0a 7c) tlbsrx\. r10,r11
- 84c: (7d 4b 67 25|25 67 4b 7d) tlbsx\. r10,r11,r12
- 850: (7d 4b 67 24|24 67 4b 7d) tlbsx r10,r11,r12
- 854: (7c 00 04 6c|6c 04 00 7c) tlbsync
- 858: (7c 00 07 a4|a4 07 00 7c) tlbwe
- 85c: (7d 4b 3f a4|a4 3f 4b 7d) tlbwe r10,r11,7
- 860: (7c aa 58 08|08 58 aa 7c) twlge r10,r11
- 864: (0c aa 00 64|64 00 aa 0c) twlgei r10,100
- 868: (0c aa ff 9c|9c ff aa 0c) twlgei r10,-100
- 86c: (7c 00 00 7c|7c 00 00 7c) wait
- 870: (7c 00 00 7c|7c 00 00 7c) wait
- 874: (7c 20 00 7c|7c 00 20 7c) waitrsv
- 878: (7c 40 00 7c|7c 00 40 7c) waitimpl
- 87c: (7c 40 00 7c|7c 00 40 7c) waitimpl
- 880: (7c 20 00 7c|7c 00 20 7c) waitrsv
- 884: (7c 00 01 6c|6c 01 00 7c) wchkall
- 888: (7c 00 01 6c|6c 01 00 7c) wchkall
- 88c: (7d 80 01 6c|6c 01 80 7d) wchkall cr3
- 890: (7c 2a 5f 4c|4c 5f 2a 7c) wclr 1,r10,r11
- 894: (7c 20 07 4c|4c 07 20 7c) wclrall 1
- 898: (7c 4a 5f 4c|4c 5f 4a 7c) wclrone r10,r11
- 89c: (7d 40 01 06|06 01 40 7d) wrtee r10
- 8a0: (7c 00 81 46|46 81 00 7c) wrteei 1
- 8a4: (7d 6a 62 79|79 62 6a 7d) xor\. r10,r11,r12
- 8a8: (7d 6a 62 78|78 62 6a 7d) xor r10,r11,r12
- 8ac: (69 6a 10 00|00 10 6a 69) xori r10,r11,4096
- 8b0: (6d 6a 10 00|00 10 6a 6d) xoris r10,r11,4096
+.*: (7c 85 32 15|15 32 85 7c) add\. r4,r5,r6
+.*: (7c 85 32 14|14 32 85 7c) add r4,r5,r6
+.*: (7c 85 30 15|15 30 85 7c) addc\. r4,r5,r6
+.*: (7c 85 30 14|14 30 85 7c) addc r4,r5,r6
+.*: (7c 85 34 15|15 34 85 7c) addco\. r4,r5,r6
+.*: (7c 85 34 14|14 34 85 7c) addco r4,r5,r6
+.*: (7c 85 31 15|15 31 85 7c) adde\. r4,r5,r6
+.*: (7c 85 31 14|14 31 85 7c) adde r4,r5,r6
+.*: (7c 85 35 15|15 35 85 7c) addeo\. r4,r5,r6
+.*: (7c 85 35 14|14 35 85 7c) addeo r4,r5,r6
+.*: (38 85 00 0d|0d 00 85 38) addi r4,r5,13
+.*: (38 85 ff f3|f3 ff 85 38) addi r4,r5,-13
+.*: (34 85 00 0d|0d 00 85 34) addic\. r4,r5,13
+.*: (34 85 ff f3|f3 ff 85 34) addic\. r4,r5,-13
+.*: (30 85 00 0d|0d 00 85 30) addic r4,r5,13
+.*: (30 85 ff f3|f3 ff 85 30) addic r4,r5,-13
+.*: (3c 85 00 17|17 00 85 3c) addis r4,r5,23
+.*: (3c 85 ff e9|e9 ff 85 3c) addis r4,r5,-23
+.*: (7c 85 01 d5|d5 01 85 7c) addme\. r4,r5
+.*: (7c 85 01 d4|d4 01 85 7c) addme r4,r5
+.*: (7c 85 05 d5|d5 05 85 7c) addmeo\. r4,r5
+.*: (7c 85 05 d4|d4 05 85 7c) addmeo r4,r5
+.*: (7c 85 36 15|15 36 85 7c) addo\. r4,r5,r6
+.*: (7c 85 36 14|14 36 85 7c) addo r4,r5,r6
+.*: (7c 85 01 95|95 01 85 7c) addze\. r4,r5
+.*: (7c 85 01 94|94 01 85 7c) addze r4,r5
+.*: (7c 85 05 95|95 05 85 7c) addzeo\. r4,r5
+.*: (7c 85 05 94|94 05 85 7c) addzeo r4,r5
+.*: (7c a4 30 39|39 30 a4 7c) and\. r4,r5,r6
+.*: (7c a4 30 38|38 30 a4 7c) and r4,r5,r6
+.*: (7c a4 30 79|79 30 a4 7c) andc\. r4,r5,r6
+.*: (7c a4 30 78|78 30 a4 7c) andc r4,r5,r6
+.*: (70 a4 00 06|06 00 a4 70) andi\. r4,r5,6
+.*: (74 a4 00 06|06 00 a4 74) andis\. r4,r5,6
+.*: (00 00 02 00|00 02 00 00) attn
+.*: (48 00 00 02|02 00 00 48) ba 0 <start>
+.*: R_PPC(|64)_ADDR24 label_abs
+.*: (40 8a 00 00|00 00 8a 40) bne cr2,90 <start\+0x90>
+.*: R_PPC(|64)_REL14 foo
+.*: (40 ca 00 00|00 00 ca 40) bne- cr2,94 <start\+0x94>
+.*: R_PPC(|64)_REL14 foo
+.*: (40 ea 00 00|00 00 ea 40) bne\+ cr2,98 <start\+0x98>
+.*: R_PPC(|64)_REL14 foo
+.*: (40 85 00 02|02 00 85 40) blea cr1,0 <start>
+.*: R_PPC(|64)_ADDR14 foo_abs
+.*: (40 c5 00 02|02 00 c5 40) blea- cr1,0 <start>
+.*: R_PPC(|64)_ADDR14 foo_abs
+.*: (40 e5 00 02|02 00 e5 40) blea\+ cr1,0 <start>
+.*: R_PPC(|64)_ADDR14 foo_abs
+.*: (4c 86 0c 20|20 0c 86 4c) bcctr 4,4\*cr1\+eq,1
+.*: (4c c6 04 20|20 04 c6 4c) bnectr- cr1
+.*: (4c e6 04 20|20 04 e6 4c) bnectr\+ cr1
+.*: (4c 86 0c 21|21 0c 86 4c) bcctrl 4,4\*cr1\+eq,1
+.*: (4c c6 04 21|21 04 c6 4c) bnectrl- cr1
+.*: (4c e6 04 21|21 04 e6 4c) bnectrl\+ cr1
+.*: (40 8a 00 01|01 00 8a 40) bnel cr2,c0 <start\+0xc0>
+.*: R_PPC(|64)_REL14 foo
+.*: (40 ca 00 01|01 00 ca 40) bnel- cr2,c4 <start\+0xc4>
+.*: R_PPC(|64)_REL14 foo
+.*: (40 ea 00 01|01 00 ea 40) bnel\+ cr2,c8 <start\+0xc8>
+.*: R_PPC(|64)_REL14 foo
+.*: (40 85 00 03|03 00 85 40) blela cr1,0 <start>
+.*: R_PPC(|64)_ADDR14 foo_abs
+.*: (40 c5 00 03|03 00 c5 40) blela- cr1,0 <start>
+.*: R_PPC(|64)_ADDR14 foo_abs
+.*: (40 e5 00 03|03 00 e5 40) blela\+ cr1,0 <start>
+.*: R_PPC(|64)_ADDR14 foo_abs
+.*: (4c 86 08 20|20 08 86 4c) bclr 4,4\*cr1\+eq,1
+.*: (4c c6 00 20|20 00 c6 4c) bnelr- cr1
+.*: (4c e6 00 20|20 00 e6 4c) bnelr\+ cr1
+.*: (4c 86 08 21|21 08 86 4c) bclrl 4,4\*cr1\+eq,1
+.*: (4c c6 00 21|21 00 c6 4c) bnelrl- cr1
+.*: (4c e6 00 21|21 00 e6 4c) bnelrl\+ cr1
+.*: (48 00 00 00|00 00 00 48) b f0 <start\+0xf0>
+.*: R_PPC(|64)_REL24 label
+.*: (48 00 00 03|03 00 00 48) bla 0 <start>
+.*: R_PPC(|64)_ADDR24 label_abs
+.*: (48 00 00 01|01 00 00 48) bl f8 <start\+0xf8>
+.*: R_PPC(|64)_REL24 label
+.*: (7d 6a 61 f8|f8 61 6a 7d) bpermd r10,r11,r12
+.*: (7c a7 40 00|00 40 a7 7c) cmpd cr1,r7,r8
+.*: (7d 6a 63 f8|f8 63 6a 7d) cmpb r10,r11,r12
+.*: (2c aa 00 0d|0d 00 aa 2c) cmpdi cr1,r10,13
+.*: (2c aa ff f3|f3 ff aa 2c) cmpdi cr1,r10,-13
+.*: (7c a7 40 40|40 40 a7 7c) cmpld cr1,r7,r8
+.*: (28 aa 00 64|64 00 aa 28) cmpldi cr1,r10,100
+.*: (7e b4 00 75|75 00 b4 7e) cntlzd\. r20,r21
+.*: (7e b4 00 74|74 00 b4 7e) cntlzd r20,r21
+.*: (7e b4 00 35|35 00 b4 7e) cntlzw\. r20,r21
+.*: (7e b4 00 34|34 00 b4 7e) cntlzw r20,r21
+.*: (4c 22 1a 02|02 1a 22 4c) crand gt,eq,so
+.*: (4c 22 19 02|02 19 22 4c) crandc gt,eq,so
+.*: (4c 22 1a 42|42 1a 22 4c) creqv gt,eq,so
+.*: (4c 22 19 c2|c2 19 22 4c) crnand gt,eq,so
+.*: (4c 22 18 42|42 18 22 4c) crnor gt,eq,so
+.*: (4c 22 1b 82|82 1b 22 4c) cror gt,eq,so
+.*: (4c 22 1b 42|42 1b 22 4c) crorc gt,eq,so
+.*: (4c 22 19 82|82 19 22 4c) crxor gt,eq,so
+.*: (7c 0a 5d ec|ec 5d 0a 7c) dcba r10,r11
+.*: (7c 0a 58 ac|ac 58 0a 7c) dcbf r10,r11
+.*: (7c 2a 58 ac|ac 58 2a 7c) dcbfl r10,r11
+.*: (7c 0a 58 fe|fe 58 0a 7c) dcbfep r10,r11
+.*: (7c 0a 5b ac|ac 5b 0a 7c) dcbi r10,r11
+.*: (7c 0a 5b 0c|0c 5b 0a 7c) dcblc r10,r11
+.*: (7c 2a 5b 0c|0c 5b 2a 7c) dcblc 1,r10,r11
+.*: (7c 0a 58 6c|6c 58 0a 7c) dcbst r10,r11
+.*: (7c 0a 58 7e|7e 58 0a 7c) dcbstep r10,r11
+.*: (7c 0a 5a 2c|2c 5a 0a 7c) dcbt r10,r11
+.*: (7c 2a 5a 2c|2c 5a 2a 7c) dcbt 1,r10,r11
+.*: (7d 4b 62 7e|7e 62 4b 7d) dcbtep r10,r11,r12
+.*: (7c 0a 59 4c|4c 59 0a 7c) dcbtls r10,r11
+.*: (7c 2a 59 4c|4c 59 2a 7c) dcbtls 1,r10,r11
+.*: (7c 0a 59 ec|ec 59 0a 7c) dcbtst r10,r11
+.*: (7c 2a 59 ec|ec 59 2a 7c) dcbtst 1,r10,r11
+.*: (7d 4b 61 fe|fe 61 4b 7d) dcbtstep r10,r11,r12
+.*: (7c 0a 59 0c|0c 59 0a 7c) dcbtstls r10,r11
+.*: (7c 2a 59 0c|0c 59 2a 7c) dcbtstls 1,r10,r11
+.*: (7c 0a 5f ec|ec 5f 0a 7c) dcbz r10,r11
+.*: (7c 0a 5f fe|fe 5f 0a 7c) dcbzep r10,r11
+.*: (7c 00 03 8c|8c 03 00 7c) dccci
+.*: (7c 00 03 8c|8c 03 00 7c) dccci
+.*: (7c 00 03 8c|8c 03 00 7c) dccci
+.*: (7d 40 03 8c|8c 03 40 7d) dci 10
+.*: (7e 95 b3 d3|d3 b3 95 7e) divd\. r20,r21,r22
+.*: (7e 95 b3 d2|d2 b3 95 7e) divd r20,r21,r22
+.*: (7e 95 b7 d3|d3 b7 95 7e) divdo\. r20,r21,r22
+.*: (7e 95 b7 d2|d2 b7 95 7e) divdo r20,r21,r22
+.*: (7e 95 b3 93|93 b3 95 7e) divdu\. r20,r21,r22
+.*: (7e 95 b3 92|92 b3 95 7e) divdu r20,r21,r22
+.*: (7e 95 b7 93|93 b7 95 7e) divduo\. r20,r21,r22
+.*: (7e 95 b7 92|92 b7 95 7e) divduo r20,r21,r22
+.*: (7e 95 b3 d7|d7 b3 95 7e) divw\. r20,r21,r22
+.*: (7e 95 b3 d6|d6 b3 95 7e) divw r20,r21,r22
+.*: (7e 95 b7 d7|d7 b7 95 7e) divwo\. r20,r21,r22
+.*: (7e 95 b7 d6|d6 b7 95 7e) divwo r20,r21,r22
+.*: (7e 95 b3 97|97 b3 95 7e) divwu\. r20,r21,r22
+.*: (7e 95 b3 96|96 b3 95 7e) divwu r20,r21,r22
+.*: (7e 95 b7 97|97 b7 95 7e) divwuo\. r20,r21,r22
+.*: (7e 95 b7 96|96 b7 95 7e) divwuo r20,r21,r22
+.*: (7e b4 b2 39|39 b2 b4 7e) eqv\. r20,r21,r22
+.*: (7e b4 b2 38|38 b2 b4 7e) eqv r20,r21,r22
+.*: (7c 0a 58 66|66 58 0a 7c) eratilx 0,r10,r11
+.*: (7c 2a 58 66|66 58 2a 7c) eratilx 1,r10,r11
+.*: (7c ea 58 66|66 58 ea 7c) eratilx 7,r10,r11
+.*: (7d 4b 66 66|66 66 4b 7d) erativax r10,r11,r12
+.*: (7d 4b 01 66|66 01 4b 7d) eratre r10,r11,0
+.*: (7d 4b 19 66|66 19 4b 7d) eratre r10,r11,3
+.*: (7d 4b 61 27|27 61 4b 7d) eratsx\. r10,r11,r12
+.*: (7d 4b 61 26|26 61 4b 7d) eratsx r10,r11,r12
+.*: (7d 4b 01 a6|a6 01 4b 7d) eratwe r10,r11,0
+.*: (7d 4b 19 a6|a6 19 4b 7d) eratwe r10,r11,3
+.*: (7d 6a 07 75|75 07 6a 7d) extsb\. r10,r11
+.*: (7d 6a 07 74|74 07 6a 7d) extsb r10,r11
+.*: (7d 6a 07 35|35 07 6a 7d) extsh\. r10,r11
+.*: (7d 6a 07 34|34 07 6a 7d) extsh r10,r11
+.*: (7d 6a 07 b5|b5 07 6a 7d) extsw\. r10,r11
+.*: (7d 6a 07 b4|b4 07 6a 7d) extsw r10,r11
+.*: (fe 80 aa 11|11 aa 80 fe) fabs\. f20,f21
+.*: (fe 80 aa 10|10 aa 80 fe) fabs f20,f21
+.*: (fe 95 b0 2b|2b b0 95 fe) fadd\. f20,f21,f22
+.*: (fe 95 b0 2a|2a b0 95 fe) fadd f20,f21,f22
+.*: (ee 95 b0 2b|2b b0 95 ee) fadds\. f20,f21,f22
+.*: (ee 95 b0 2a|2a b0 95 ee) fadds f20,f21,f22
+.*: (fe 80 ae 9d|9d ae 80 fe) fcfid\. f20,f21
+.*: (fe 80 ae 9c|9c ae 80 fe) fcfid f20,f21
+.*: (fc 14 a8 40|40 a8 14 fc) fcmpo cr0,f20,f21
+.*: (fc 94 a8 40|40 a8 94 fc) fcmpo cr1,f20,f21
+.*: (fc 14 a8 00|00 a8 14 fc) fcmpu cr0,f20,f21
+.*: (fc 94 a8 00|00 a8 94 fc) fcmpu cr1,f20,f21
+.*: (fe 95 b0 11|11 b0 95 fe) fcpsgn\. f20,f21,f22
+.*: (fe 95 b0 10|10 b0 95 fe) fcpsgn f20,f21,f22
+.*: (fe 80 ae 5d|5d ae 80 fe) fctid\. f20,f21
+.*: (fe 80 ae 5c|5c ae 80 fe) fctid f20,f21
+.*: (fe 80 ae 5f|5f ae 80 fe) fctidz\. f20,f21
+.*: (fe 80 ae 5e|5e ae 80 fe) fctidz f20,f21
+.*: (fe 80 a8 1d|1d a8 80 fe) fctiw\. f20,f21
+.*: (fe 80 a8 1c|1c a8 80 fe) fctiw f20,f21
+.*: (fe 80 a8 1f|1f a8 80 fe) fctiwz\. f20,f21
+.*: (fe 80 a8 1e|1e a8 80 fe) fctiwz f20,f21
+.*: (fe 95 b0 25|25 b0 95 fe) fdiv\. f20,f21,f22
+.*: (fe 95 b0 24|24 b0 95 fe) fdiv f20,f21,f22
+.*: (ee 95 b0 25|25 b0 95 ee) fdivs\. f20,f21,f22
+.*: (ee 95 b0 24|24 b0 95 ee) fdivs f20,f21,f22
+.*: (fe 95 bd bb|bb bd 95 fe) fmadd\. f20,f21,f22,f23
+.*: (fe 95 bd ba|ba bd 95 fe) fmadd f20,f21,f22,f23
+.*: (ee 95 bd bb|bb bd 95 ee) fmadds\. f20,f21,f22,f23
+.*: (ee 95 bd ba|ba bd 95 ee) fmadds f20,f21,f22,f23
+.*: (fe 80 a8 91|91 a8 80 fe) fmr\. f20,f21
+.*: (fe 80 a8 90|90 a8 80 fe) fmr f20,f21
+.*: (fe 95 bd b9|b9 bd 95 fe) fmsub\. f20,f21,f22,f23
+.*: (fe 95 bd b8|b8 bd 95 fe) fmsub f20,f21,f22,f23
+.*: (ee 95 bd b9|b9 bd 95 ee) fmsubs\. f20,f21,f22,f23
+.*: (ee 95 bd b8|b8 bd 95 ee) fmsubs f20,f21,f22,f23
+.*: (fe 95 05 b3|b3 05 95 fe) fmul\. f20,f21,f22
+.*: (fe 95 05 b2|b2 05 95 fe) fmul f20,f21,f22
+.*: (ee 95 05 b3|b3 05 95 ee) fmuls\. f20,f21,f22
+.*: (ee 95 05 b2|b2 05 95 ee) fmuls f20,f21,f22
+.*: (fe 80 a9 11|11 a9 80 fe) fnabs\. f20,f21
+.*: (fe 80 a9 10|10 a9 80 fe) fnabs f20,f21
+.*: (fe 80 a8 51|51 a8 80 fe) fneg\. f20,f21
+.*: (fe 80 a8 50|50 a8 80 fe) fneg f20,f21
+.*: (fe 95 bd bf|bf bd 95 fe) fnmadd\. f20,f21,f22,f23
+.*: (fe 95 bd be|be bd 95 fe) fnmadd f20,f21,f22,f23
+.*: (ee 95 bd bf|bf bd 95 ee) fnmadds\. f20,f21,f22,f23
+.*: (ee 95 bd be|be bd 95 ee) fnmadds f20,f21,f22,f23
+.*: (fe 95 bd bd|bd bd 95 fe) fnmsub\. f20,f21,f22,f23
+.*: (fe 95 bd bc|bc bd 95 fe) fnmsub f20,f21,f22,f23
+.*: (ee 95 bd bd|bd bd 95 ee) fnmsubs\. f20,f21,f22,f23
+.*: (ee 95 bd bc|bc bd 95 ee) fnmsubs f20,f21,f22,f23
+.*: (fe 80 a8 31|31 a8 80 fe) fre\. f20,f21
+.*: (fe 80 a8 30|30 a8 80 fe) fre f20,f21
+.*: (fe 80 a8 31|31 a8 80 fe) fre\. f20,f21
+.*: (fe 80 a8 30|30 a8 80 fe) fre f20,f21
+.*: (fe 81 a8 31|31 a8 81 fe) fre\. f20,f21,1
+.*: (fe 81 a8 30|30 a8 81 fe) fre f20,f21,1
+.*: (ee 80 a8 31|31 a8 80 ee) fres\. f20,f21
+.*: (ee 80 a8 30|30 a8 80 ee) fres f20,f21
+.*: (ee 80 a8 31|31 a8 80 ee) fres\. f20,f21
+.*: (ee 80 a8 30|30 a8 80 ee) fres f20,f21
+.*: (ee 81 a8 31|31 a8 81 ee) fres\. f20,f21,1
+.*: (ee 81 a8 30|30 a8 81 ee) fres f20,f21,1
+.*: (fe 80 ab d1|d1 ab 80 fe) frim\. f20,f21
+.*: (fe 80 ab d0|d0 ab 80 fe) frim f20,f21
+.*: (fe 80 ab 11|11 ab 80 fe) frin\. f20,f21
+.*: (fe 80 ab 10|10 ab 80 fe) frin f20,f21
+.*: (fe 80 ab 91|91 ab 80 fe) frip\. f20,f21
+.*: (fe 80 ab 90|90 ab 80 fe) frip f20,f21
+.*: (fe 80 ab 51|51 ab 80 fe) friz\. f20,f21
+.*: (fe 80 ab 50|50 ab 80 fe) friz f20,f21
+.*: (fe 80 a8 19|19 a8 80 fe) frsp\. f20,f21
+.*: (fe 80 a8 18|18 a8 80 fe) frsp f20,f21
+.*: (fe 80 a8 35|35 a8 80 fe) frsqrte\. f20,f21
+.*: (fe 80 a8 34|34 a8 80 fe) frsqrte f20,f21
+.*: (fe 80 a8 35|35 a8 80 fe) frsqrte\. f20,f21
+.*: (fe 80 a8 34|34 a8 80 fe) frsqrte f20,f21
+.*: (fe 81 a8 35|35 a8 81 fe) frsqrte\. f20,f21,1
+.*: (fe 81 a8 34|34 a8 81 fe) frsqrte f20,f21,1
+.*: (ee 80 a8 34|34 a8 80 ee) frsqrtes f20,f21
+.*: (ee 80 a8 35|35 a8 80 ee) frsqrtes\. f20,f21
+.*: (ee 80 a8 34|34 a8 80 ee) frsqrtes f20,f21
+.*: (ee 80 a8 35|35 a8 80 ee) frsqrtes\. f20,f21
+.*: (ee 81 a8 34|34 a8 81 ee) frsqrtes f20,f21,1
+.*: (ee 81 a8 35|35 a8 81 ee) frsqrtes\. f20,f21,1
+.*: (fe 95 bd af|af bd 95 fe) fsel\. f20,f21,f22,f23
+.*: (fe 95 bd ae|ae bd 95 fe) fsel f20,f21,f22,f23
+.*: (fe 80 a8 2d|2d a8 80 fe) fsqrt\. f20,f21
+.*: (fe 80 a8 2c|2c a8 80 fe) fsqrt f20,f21
+.*: (ee 80 a8 2d|2d a8 80 ee) fsqrts\. f20,f21
+.*: (ee 80 a8 2c|2c a8 80 ee) fsqrts f20,f21
+.*: (fe 95 b0 29|29 b0 95 fe) fsub\. f20,f21,f22
+.*: (fe 95 b0 28|28 b0 95 fe) fsub f20,f21,f22
+.*: (ee 95 b0 29|29 b0 95 ee) fsubs\. f20,f21,f22
+.*: (ee 95 b0 28|28 b0 95 ee) fsubs f20,f21,f22
+.*: (7c 0a 5f ac|ac 5f 0a 7c) icbi r10,r11
+.*: (7c 0a 5f be|be 5f 0a 7c) icbiep r10,r11
+.*: (7c 0a 58 2c|2c 58 0a 7c) icbt r10,r11
+.*: (7c ea 58 2c|2c 58 ea 7c) icbt 7,r10,r11
+.*: (7c 0a 5b cc|cc 5b 0a 7c) icbtls r10,r11
+.*: (7c ea 5b cc|cc 5b ea 7c) icbtls 7,r10,r11
+.*: (7c 00 07 8c|8c 07 00 7c) iccci
+.*: (7c 00 07 8c|8c 07 00 7c) iccci
+.*: (7c 00 07 8c|8c 07 00 7c) iccci
+.*: (7d 40 07 8c|8c 07 40 7d) ici 10
+.*: (7d 4b 63 2d|2d 63 4b 7d) icswx\. r10,r11,r12
+.*: (7d 4b 63 2c|2c 63 4b 7d) icswx r10,r11,r12
+.*: (7d 4b 65 de|de 65 4b 7d) isel r10,r11,r12,23
+.*: (4c 00 01 2c|2c 01 00 4c) isync
+.*: (7d 4b 60 be|be 60 4b 7d) lbepx r10,r11,r12
+.*: (89 4b ff ef|ef ff 4b 89) lbz r10,-17\(r11\)
+.*: (89 4b 00 11|11 00 4b 89) lbz r10,17\(r11\)
+.*: (8d 4b ff ff|ff ff 4b 8d) lbzu r10,-1\(r11\)
+.*: (8d 4b 00 01|01 00 4b 8d) lbzu r10,1\(r11\)
+.*: (7d 4b 68 ee|ee 68 4b 7d) lbzux r10,r11,r13
+.*: (7d 4b 68 ae|ae 68 4b 7d) lbzx r10,r11,r13
+.*: (e9 4b ff f8|f8 ff 4b e9) ld r10,-8\(r11\)
+.*: (e9 4b 00 08|08 00 4b e9) ld r10,8\(r11\)
+.*: (7d 4b 60 a8|a8 60 4b 7d) ldarx r10,r11,r12
+.*: (7d 4b 60 a9|a9 60 4b 7d) ldarx r10,r11,r12,1
+.*: (7d 4b 64 28|28 64 4b 7d) ldbrx r10,r11,r12
+.*: (7d 4b 60 3a|3a 60 4b 7d) ldepx r10,r11,r12
+.*: (e9 4b ff f9|f9 ff 4b e9) ldu r10,-8\(r11\)
+.*: (e9 4b 00 09|09 00 4b e9) ldu r10,8\(r11\)
+.*: (7d 4b 60 6a|6a 60 4b 7d) ldux r10,r11,r12
+.*: (7d 4b 60 2a|2a 60 4b 7d) ldx r10,r11,r12
+.*: (ca 8a ff f8|f8 ff 8a ca) lfd f20,-8\(r10\)
+.*: (ca 8a 00 08|08 00 8a ca) lfd f20,8\(r10\)
+.*: (7e 8a 5c be|be 5c 8a 7e) lfdepx f20,r10,r11
+.*: (ce 8a ff f8|f8 ff 8a ce) lfdu f20,-8\(r10\)
+.*: (ce 8a 00 08|08 00 8a ce) lfdu f20,8\(r10\)
+.*: (7e 8a 5c ee|ee 5c 8a 7e) lfdux f20,r10,r11
+.*: (7e 8a 5c ae|ae 5c 8a 7e) lfdx f20,r10,r11
+.*: (7e 8a 5e ae|ae 5e 8a 7e) lfiwax f20,r10,r11
+.*: (7e 8a 5e ee|ee 5e 8a 7e) lfiwzx f20,r10,r11
+.*: (c2 8a ff fc|fc ff 8a c2) lfs f20,-4\(r10\)
+.*: (c2 8a 00 04|04 00 8a c2) lfs f20,4\(r10\)
+.*: (c6 8a ff fc|fc ff 8a c6) lfsu f20,-4\(r10\)
+.*: (c6 8a 00 04|04 00 8a c6) lfsu f20,4\(r10\)
+.*: (7e 8a 5c 6e|6e 5c 8a 7e) lfsux f20,r10,r11
+.*: (7e 8a 5c 2e|2e 5c 8a 7e) lfsx f20,r10,r11
+.*: (a9 4b 00 02|02 00 4b a9) lha r10,2\(r11\)
+.*: (ad 4b ff fe|fe ff 4b ad) lhau r10,-2\(r11\)
+.*: (7d 4b 62 ee|ee 62 4b 7d) lhaux r10,r11,r12
+.*: (7d 4b 62 ae|ae 62 4b 7d) lhax r10,r11,r12
+.*: (7d 4b 66 2c|2c 66 4b 7d) lhbrx r10,r11,r12
+.*: (7d 4b 62 3e|3e 62 4b 7d) lhepx r10,r11,r12
+.*: (a1 4b ff fe|fe ff 4b a1) lhz r10,-2\(r11\)
+.*: (a1 4b 00 02|02 00 4b a1) lhz r10,2\(r11\)
+.*: (a5 4b ff fe|fe ff 4b a5) lhzu r10,-2\(r11\)
+.*: (a5 4b 00 02|02 00 4b a5) lhzu r10,2\(r11\)
+.*: (7d 4b 62 6e|6e 62 4b 7d) lhzux r10,r11,r12
+.*: (7d 4b 62 2e|2e 62 4b 7d) lhzx r10,r11,r12
+.*: (e9 4b ff fe|fe ff 4b e9) lwa r10,-4\(r11\)
+.*: (e9 4b 00 06|06 00 4b e9) lwa r10,4\(r11\)
+.*: (7d 4b 60 28|28 60 4b 7d) lwarx r10,r11,r12
+.*: (7d 4b 60 29|29 60 4b 7d) lwarx r10,r11,r12,1
+.*: (7d 4b 62 ea|ea 62 4b 7d) lwaux r10,r11,r12
+.*: (7d 4b 62 aa|aa 62 4b 7d) lwax r10,r11,r12
+.*: (7d 4b 64 2c|2c 64 4b 7d) lwbrx r10,r11,r12
+.*: (7d 4b 60 3e|3e 60 4b 7d) lwepx r10,r11,r12
+.*: (81 4b ff fc|fc ff 4b 81) lwz r10,-4\(r11\)
+.*: (81 4b 00 04|04 00 4b 81) lwz r10,4\(r11\)
+.*: (85 4b ff fc|fc ff 4b 85) lwzu r10,-4\(r11\)
+.*: (85 4b 00 04|04 00 4b 85) lwzu r10,4\(r11\)
+.*: (7d 4b 60 6e|6e 60 4b 7d) lwzux r10,r11,r12
+.*: (7d 4b 60 2e|2e 60 4b 7d) lwzx r10,r11,r12
+.*: (7c 00 06 ac|ac 06 00 7c) mbar
+.*: (7c 00 06 ac|ac 06 00 7c) mbar
+.*: (7c 00 06 ac|ac 06 00 7c) mbar
+.*: (7c 20 06 ac|ac 06 20 7c) mbar 1
+.*: (4c 04 00 00|00 00 04 4c) mcrf cr0,cr1
+.*: (fd 90 00 80|80 00 90 fd) mcrfs cr3,cr4
+.*: (7c 00 04 00|00 04 00 7c) mcrxr cr0
+.*: (7d 80 04 00|00 04 80 7d) mcrxr cr3
+.*: (7c 60 00 26|26 00 60 7c) mfcr r3
+.*: (7c 70 20 26|26 20 70 7c) mfocrf r3,2
+.*: (7c 70 10 26|26 10 70 7c) mfocrf r3,1
+.*: (7c 78 00 26|26 00 78 7c) mfocrf r3,128
+.*: (7d 4a 3a 87|87 3a 4a 7d) mfdcr\. r10,234
+.*: (7d 4a 3a 86|86 3a 4a 7d) mfdcr r10,234
+.*: (7d 4b 02 07|07 02 4b 7d) mfdcrx\. r10,r11
+.*: (7d 4b 02 06|06 02 4b 7d) mfdcrx r10,r11
+.*: (fe 80 04 8f|8f 04 80 fe) mffs\. f20
+.*: (fe 80 04 8e|8e 04 80 fe) mffs f20
+.*: (7d 40 00 a6|a6 00 40 7d) mfmsr r10
+.*: (7c 70 10 26|26 10 70 7c) mfocrf r3,1
+.*: (7c 78 00 26|26 00 78 7c) mfocrf r3,128
+.*: (7d 4a 3a a6|a6 3a 4a 7d) mfspr r10,234
+.*: (7d 4c 42 a6|a6 42 4c 7d) mftb r10
+.*: (7d 4d 42 a6|a6 42 4d 7d) mftbu r10
+.*: (7c 00 51 dc|dc 51 00 7c) msgclr r10
+.*: (7c 00 51 9c|9c 51 00 7c) msgsnd r10
+.*: (7c 60 01 20|20 01 60 7c) mtcrf 0,r3
+.*: (7c 70 11 20|20 11 70 7c) mtocrf 1,r3
+.*: (7c 78 01 20|20 01 78 7c) mtocrf 128,r3
+.*: (7c 6f f1 20|20 f1 6f 7c) mtcr r3
+.*: (7d 4a 3b 87|87 3b 4a 7d) mtdcr\. 234,r10
+.*: (7d 4a 3b 86|86 3b 4a 7d) mtdcr 234,r10
+.*: (7d 6a 03 07|07 03 6a 7d) mtdcrx\. r10,r11
+.*: (7d 6a 03 06|06 03 6a 7d) mtdcrx r10,r11
+.*: (fc 60 00 8d|8d 00 60 fc) mtfsb0\. 3
+.*: (fc 60 00 8c|8c 00 60 fc) mtfsb0 3
+.*: (fc 60 00 4d|4d 00 60 fc) mtfsb1\. 3
+.*: (fc 60 00 4c|4c 00 60 fc) mtfsb1 3
+.*: (fc 0c a5 8f|8f a5 0c fc) mtfsf\. 6,f20
+.*: (fc 0c a5 8e|8e a5 0c fc) mtfsf 6,f20
+.*: (fc 0c a5 8f|8f a5 0c fc) mtfsf\. 6,f20
+.*: (fc 0c a5 8e|8e a5 0c fc) mtfsf 6,f20
+.*: (fe 0d a5 8f|8f a5 0d fe) mtfsf\. 6,f20,1,1
+.*: (fe 0d a5 8e|8e a5 0d fe) mtfsf 6,f20,1,1
+.*: (ff 00 01 0d|0d 01 00 ff) mtfsfi\. 6,0
+.*: (ff 00 01 0c|0c 01 00 ff) mtfsfi 6,0
+.*: (ff 00 d1 0d|0d d1 00 ff) mtfsfi\. 6,13
+.*: (ff 00 d1 0c|0c d1 00 ff) mtfsfi 6,13
+.*: (ff 01 d1 0d|0d d1 01 ff) mtfsfi\. 6,13,1
+.*: (ff 01 d1 0c|0c d1 01 ff) mtfsfi 6,13,1
+.*: (7d 40 01 24|24 01 40 7d) mtmsr r10
+.*: (7d 40 01 24|24 01 40 7d) mtmsr r10
+.*: (7d 41 01 24|24 01 41 7d) mtmsr r10,1
+.*: (7c 70 11 20|20 11 70 7c) mtocrf 1,r3
+.*: (7c 78 01 20|20 01 78 7c) mtocrf 128,r3
+.*: (7d 4a 3b a6|a6 3b 4a 7d) mtspr 234,r10
+.*: (7e 95 b0 93|93 b0 95 7e) mulhd\. r20,r21,r22
+.*: (7e 95 b0 92|92 b0 95 7e) mulhd r20,r21,r22
+.*: (7e 95 b0 13|13 b0 95 7e) mulhdu\. r20,r21,r22
+.*: (7e 95 b0 12|12 b0 95 7e) mulhdu r20,r21,r22
+.*: (7e 95 b0 97|97 b0 95 7e) mulhw\. r20,r21,r22
+.*: (7e 95 b0 96|96 b0 95 7e) mulhw r20,r21,r22
+.*: (7e 95 b0 17|17 b0 95 7e) mulhwu\. r20,r21,r22
+.*: (7e 95 b0 16|16 b0 95 7e) mulhwu r20,r21,r22
+.*: (7e 95 b1 d3|d3 b1 95 7e) mulld\. r20,r21,r22
+.*: (7e 95 b1 d2|d2 b1 95 7e) mulld r20,r21,r22
+.*: (7e 95 b5 d3|d3 b5 95 7e) mulldo\. r20,r21,r22
+.*: (7e 95 b5 d2|d2 b5 95 7e) mulldo r20,r21,r22
+.*: (1e 95 00 64|64 00 95 1e) mulli r20,r21,100
+.*: (1e 95 ff 9c|9c ff 95 1e) mulli r20,r21,-100
+.*: (7e 95 b1 d7|d7 b1 95 7e) mullw\. r20,r21,r22
+.*: (7e 95 b1 d6|d6 b1 95 7e) mullw r20,r21,r22
+.*: (7e 95 b5 d7|d7 b5 95 7e) mullwo\. r20,r21,r22
+.*: (7e 95 b5 d6|d6 b5 95 7e) mullwo r20,r21,r22
+.*: (7e b4 b3 b9|b9 b3 b4 7e) nand\. r20,r21,r22
+.*: (7e b4 b3 b8|b8 b3 b4 7e) nand r20,r21,r22
+.*: (7e 95 00 d1|d1 00 95 7e) neg\. r20,r21
+.*: (7e 95 00 d0|d0 00 95 7e) neg r20,r21
+.*: (7e 95 04 d1|d1 04 95 7e) nego\. r20,r21
+.*: (7e 95 04 d0|d0 04 95 7e) nego r20,r21
+.*: (7e b4 b0 f9|f9 b0 b4 7e) nor\. r20,r21,r22
+.*: (7e b4 b0 f8|f8 b0 b4 7e) nor r20,r21,r22
+.*: (7e b4 b3 79|79 b3 b4 7e) or\. r20,r21,r22
+.*: (7e b4 b3 78|78 b3 b4 7e) or r20,r21,r22
+.*: (7e b4 b3 39|39 b3 b4 7e) orc\. r20,r21,r22
+.*: (7e b4 b3 38|38 b3 b4 7e) orc r20,r21,r22
+.*: (62 b4 10 00|00 10 b4 62) ori r20,r21,4096
+.*: (66 b4 10 00|00 10 b4 66) oris r20,r21,4096
+.*: (7d 6a 00 f4|f4 00 6a 7d) popcntb r10,r11
+.*: (7d 6a 03 f4|f4 03 6a 7d) popcntd r10,r11
+.*: (7d 6a 02 f4|f4 02 6a 7d) popcntw r10,r11
+.*: (7d 6a 01 74|74 01 6a 7d) prtyd r10,r11
+.*: (7d 6a 01 34|34 01 6a 7d) prtyw r10,r11
+.*: (4c 00 00 66|66 00 00 4c) rfci
+.*: (4c 00 00 cc|cc 00 00 4c) rfgi
+.*: (4c 00 00 64|64 00 00 4c) rfi
+.*: (4c 00 00 4c|4c 00 00 4c) rfmci
+.*: (79 6a 67 f1|f1 67 6a 79) rldcl\. r10,r11,r12,63
+.*: (79 6a 67 f0|f0 67 6a 79) rldcl r10,r11,r12,63
+.*: (79 6a 67 f3|f3 67 6a 79) rldcr\. r10,r11,r12,63
+.*: (79 6a 67 f2|f2 67 6a 79) rldcr r10,r11,r12,63
+.*: (79 6a bf e9|e9 bf 6a 79) rldic\. r10,r11,23,63
+.*: (79 6a bf e8|e8 bf 6a 79) rldic r10,r11,23,63
+.*: (79 6a bf e1|e1 bf 6a 79) rldicl\. r10,r11,23,63
+.*: (79 6a bf e0|e0 bf 6a 79) rldicl r10,r11,23,63
+.*: (79 6a bf e5|e5 bf 6a 79) rldicr\. r10,r11,23,63
+.*: (79 6a bf e4|e4 bf 6a 79) rldicr r10,r11,23,63
+.*: (79 6a bf ed|ed bf 6a 79) rldimi\. r10,r11,23,63
+.*: (79 6a bf ec|ec bf 6a 79) rldimi r10,r11,23,63
+.*: (51 6a b8 3f|3f b8 6a 51) rlwimi\. r10,r11,23,0,31
+.*: (51 6a b8 3e|3e b8 6a 51) rlwimi r10,r11,23,0,31
+.*: (55 6a b8 3f|3f b8 6a 55) rotlwi\. r10,r11,23
+.*: (55 6a b8 3e|3e b8 6a 55) rotlwi r10,r11,23
+.*: (5d 6a b8 3f|3f b8 6a 5d) rotlw\. r10,r11,r23
+.*: (5d 6a b8 3e|3e b8 6a 5d) rotlw r10,r11,r23
+.*: (44 00 00 02|02 00 00 44) sc
+.*: (44 00 0c 82|82 0c 00 44) sc 100
+.*: (7d 6a 60 37|37 60 6a 7d) sld\. r10,r11,r12
+.*: (7d 6a 60 36|36 60 6a 7d) sld r10,r11,r12
+.*: (7d 6a 60 31|31 60 6a 7d) slw\. r10,r11,r12
+.*: (7d 6a 60 30|30 60 6a 7d) slw r10,r11,r12
+.*: (7d 6a 66 35|35 66 6a 7d) srad\. r10,r11,r12
+.*: (7d 6a 66 34|34 66 6a 7d) srad r10,r11,r12
+.*: (7d 6a fe 77|77 fe 6a 7d) sradi\. r10,r11,63
+.*: (7d 6a fe 76|76 fe 6a 7d) sradi r10,r11,63
+.*: (7d 6a 66 31|31 66 6a 7d) sraw\. r10,r11,r12
+.*: (7d 6a 66 30|30 66 6a 7d) sraw r10,r11,r12
+.*: (7d 6a fe 71|71 fe 6a 7d) srawi\. r10,r11,31
+.*: (7d 6a fe 70|70 fe 6a 7d) srawi r10,r11,31
+.*: (7d 6a 64 37|37 64 6a 7d) srd\. r10,r11,r12
+.*: (7d 6a 64 36|36 64 6a 7d) srd r10,r11,r12
+.*: (7d 6a 64 31|31 64 6a 7d) srw\. r10,r11,r12
+.*: (7d 6a 64 30|30 64 6a 7d) srw r10,r11,r12
+.*: (99 4b ff ff|ff ff 4b 99) stb r10,-1\(r11\)
+.*: (99 4b 00 01|01 00 4b 99) stb r10,1\(r11\)
+.*: (7d 4b 61 be|be 61 4b 7d) stbepx r10,r11,r12
+.*: (9d 4b ff ff|ff ff 4b 9d) stbu r10,-1\(r11\)
+.*: (9d 4b 00 01|01 00 4b 9d) stbu r10,1\(r11\)
+.*: (7d 4b 61 ee|ee 61 4b 7d) stbux r10,r11,r12
+.*: (7d 4b 61 ae|ae 61 4b 7d) stbx r10,r11,r12
+.*: (f9 4b ff f8|f8 ff 4b f9) std r10,-8\(r11\)
+.*: (f9 4b 00 08|08 00 4b f9) std r10,8\(r11\)
+.*: (7d 4b 65 28|28 65 4b 7d) stdbrx r10,r11,r12
+.*: (7d 4b 61 ad|ad 61 4b 7d) stdcx\. r10,r11,r12
+.*: (7d 4b 61 3a|3a 61 4b 7d) stdepx r10,r11,r12
+.*: (f9 4b ff f9|f9 ff 4b f9) stdu r10,-8\(r11\)
+.*: (f9 4b 00 09|09 00 4b f9) stdu r10,8\(r11\)
+.*: (7d 4b 61 6a|6a 61 4b 7d) stdux r10,r11,r12
+.*: (7d 4b 61 2a|2a 61 4b 7d) stdx r10,r11,r12
+.*: (da 8a ff f8|f8 ff 8a da) stfd f20,-8\(r10\)
+.*: (da 8a 00 08|08 00 8a da) stfd f20,8\(r10\)
+.*: (7e 8a 5d be|be 5d 8a 7e) stfdepx f20,r10,r11
+.*: (de 8a ff f8|f8 ff 8a de) stfdu f20,-8\(r10\)
+.*: (de 8a 00 08|08 00 8a de) stfdu f20,8\(r10\)
+.*: (7e 8a 5d ee|ee 5d 8a 7e) stfdux f20,r10,r11
+.*: (7e 8a 5d ae|ae 5d 8a 7e) stfdx f20,r10,r11
+.*: (7e 8a 5f ae|ae 5f 8a 7e) stfiwx f20,r10,r11
+.*: (d2 8a ff fc|fc ff 8a d2) stfs f20,-4\(r10\)
+.*: (d2 8a 00 04|04 00 8a d2) stfs f20,4\(r10\)
+.*: (d6 8a ff fc|fc ff 8a d6) stfsu f20,-4\(r10\)
+.*: (d6 8a 00 04|04 00 8a d6) stfsu f20,4\(r10\)
+.*: (7e 8a 5d 6e|6e 5d 8a 7e) stfsux f20,r10,r11
+.*: (7e 8a 5d 2e|2e 5d 8a 7e) stfsx f20,r10,r11
+.*: (b1 4b ff fe|fe ff 4b b1) sth r10,-2\(r11\)
+.*: (b1 4b 00 02|02 00 4b b1) sth r10,2\(r11\)
+.*: (b1 4b ff fc|fc ff 4b b1) sth r10,-4\(r11\)
+.*: (b1 4b 00 04|04 00 4b b1) sth r10,4\(r11\)
+.*: (7d 4b 67 2c|2c 67 4b 7d) sthbrx r10,r11,r12
+.*: (7d 4b 63 3e|3e 63 4b 7d) sthepx r10,r11,r12
+.*: (b5 4b ff fe|fe ff 4b b5) sthu r10,-2\(r11\)
+.*: (b5 4b 00 02|02 00 4b b5) sthu r10,2\(r11\)
+.*: (7d 4b 63 6e|6e 63 4b 7d) sthux r10,r11,r12
+.*: (7d 4b 63 2e|2e 63 4b 7d) sthx r10,r11,r12
+.*: (7d 4b 65 2c|2c 65 4b 7d) stwbrx r10,r11,r12
+.*: (7d 4b 61 2d|2d 61 4b 7d) stwcx\. r10,r11,r12
+.*: (7d 4b 61 3e|3e 61 4b 7d) stwepx r10,r11,r12
+.*: (95 4b ff fc|fc ff 4b 95) stwu r10,-4\(r11\)
+.*: (95 4b 00 04|04 00 4b 95) stwu r10,4\(r11\)
+.*: (7d 4b 61 6e|6e 61 4b 7d) stwux r10,r11,r12
+.*: (7d 4b 61 2e|2e 61 4b 7d) stwx r10,r11,r12
+.*: (7e 95 b0 51|51 b0 95 7e) subf\. r20,r21,r22
+.*: (7e 95 b0 50|50 b0 95 7e) subf r20,r21,r22
+.*: (7e 95 b0 11|11 b0 95 7e) subfc\. r20,r21,r22
+.*: (7e 95 b0 10|10 b0 95 7e) subfc r20,r21,r22
+.*: (7e 95 b4 11|11 b4 95 7e) subfco\. r20,r21,r22
+.*: (7e 95 b4 10|10 b4 95 7e) subfco r20,r21,r22
+.*: (7e 95 b1 11|11 b1 95 7e) subfe\. r20,r21,r22
+.*: (7e 95 b1 10|10 b1 95 7e) subfe r20,r21,r22
+.*: (7e 95 b5 11|11 b5 95 7e) subfeo\. r20,r21,r22
+.*: (7e 95 b5 10|10 b5 95 7e) subfeo r20,r21,r22
+.*: (22 95 00 64|64 00 95 22) subfic r20,r21,100
+.*: (22 95 ff 9c|9c ff 95 22) subfic r20,r21,-100
+.*: (7e 95 01 d1|d1 01 95 7e) subfme\. r20,r21
+.*: (7e 95 01 d0|d0 01 95 7e) subfme r20,r21
+.*: (7e 95 05 d1|d1 05 95 7e) subfmeo\. r20,r21
+.*: (7e 95 05 d0|d0 05 95 7e) subfmeo r20,r21
+.*: (7e 95 b4 51|51 b4 95 7e) subfo\. r20,r21,r22
+.*: (7e 95 b4 50|50 b4 95 7e) subfo r20,r21,r22
+.*: (7e 95 01 91|91 01 95 7e) subfze\. r20,r21
+.*: (7e 95 01 90|90 01 95 7e) subfze r20,r21
+.*: (7e 95 05 91|91 05 95 7e) subfzeo\. r20,r21
+.*: (7e 95 05 90|90 05 95 7e) subfzeo r20,r21
+.*: (7c 00 04 ac|ac 04 00 7c) hwsync
+.*: (7c 00 04 ac|ac 04 00 7c) hwsync
+.*: (7c 00 04 ac|ac 04 00 7c) hwsync
+.*: (7c 20 04 ac|ac 04 20 7c) lwsync
+.*: (7c aa 58 88|88 58 aa 7c) tdlge r10,r11
+.*: (08 aa 00 64|64 00 aa 08) tdlgei r10,100
+.*: (08 aa ff 9c|9c ff aa 08) tdlgei r10,-100
+.*: (7c 6a 58 24|24 58 6a 7c) tlbilxva r10,r11
+.*: (7c 0a 5e 24|24 5e 0a 7c) tlbivax r10,r11
+.*: (7c 00 07 64|64 07 00 7c) tlbre
+.*: (7d 4b 3f 64|64 3f 4b 7d) tlbre r10,r11,7
+.*: (7c 0a 5e a5|a5 5e 0a 7c) tlbsrx\. r10,r11
+.*: (7d 4b 67 25|25 67 4b 7d) tlbsx\. r10,r11,r12
+.*: (7d 4b 67 24|24 67 4b 7d) tlbsx r10,r11,r12
+.*: (7c 00 04 6c|6c 04 00 7c) tlbsync
+.*: (7c 00 07 a4|a4 07 00 7c) tlbwe
+.*: (7d 4b 3f a4|a4 3f 4b 7d) tlbwe r10,r11,7
+.*: (7c aa 58 08|08 58 aa 7c) twlge r10,r11
+.*: (0c aa 00 64|64 00 aa 0c) twlgei r10,100
+.*: (0c aa ff 9c|9c ff aa 0c) twlgei r10,-100
+.*: (7c 00 00 7c|7c 00 00 7c) wait
+.*: (7c 00 00 7c|7c 00 00 7c) wait
+.*: (7c 20 00 7c|7c 00 20 7c) waitrsv
+.*: (7c 40 00 7c|7c 00 40 7c) waitimpl
+.*: (7c 40 00 7c|7c 00 40 7c) waitimpl
+.*: (7c 20 00 7c|7c 00 20 7c) waitrsv
+.*: (7c 00 01 6c|6c 01 00 7c) wchkall
+.*: (7c 00 01 6c|6c 01 00 7c) wchkall
+.*: (7d 80 01 6c|6c 01 80 7d) wchkall cr3
+.*: (7c 2a 5f 4c|4c 5f 2a 7c) wclr 1,r10,r11
+.*: (7c 20 07 4c|4c 07 20 7c) wclrall 1
+.*: (7c 4a 5f 4c|4c 5f 4a 7c) wclrone r10,r11
+.*: (7d 40 01 06|06 01 40 7d) wrtee r10
+.*: (7c 00 81 46|46 81 00 7c) wrteei 1
+.*: (7d 6a 62 79|79 62 6a 7d) xor\. r10,r11,r12
+.*: (7d 6a 62 78|78 62 6a 7d) xor r10,r11,r12
+.*: (69 6a 10 00|00 10 6a 69) xori r10,r11,4096
+.*: (6d 6a 10 00|00 10 6a 6d) xoris r10,r11,4096
#pass
diff -rup binutils.orig/gas/testsuite/gas/ppc/a2.s binutils-2.35.1/gas/testsuite/gas/ppc/a2.s
--- binutils.orig/gas/testsuite/gas/ppc/a2.s 2020-10-08 13:50:31.311909794 +0100
+++ binutils-2.35.1/gas/testsuite/gas/ppc/a2.s 2020-10-08 13:51:29.102731857 +0100
@@ -295,10 +295,6 @@ start:
lhzu 10,2(11)
lhzux 10,11,12
lhzx 10,11,12
- lmw 20,16(10)
- lswi 10,11,1
- lswi 12,11,32
- lswx 10,11,12
lwa 10,-4(11)
lwa 10,4(11)
lwarx 10,11,12,0
@@ -486,10 +482,6 @@ start:
sthu 10,2(11)
sthux 10,11,12
sthx 10,11,12
- stmw 20,16(10)
- stswi 10,11,1
- stswi 10,11,32
- stswx 10,11,12
stwbrx 10,11,12
stwcx. 10,11,12
stwepx 10,11,12
diff -rup binutils.orig/gas/testsuite/gas/ppc/int128.d binutils-2.35.1/gas/testsuite/gas/ppc/int128.d
--- binutils.orig/gas/testsuite/gas/ppc/int128.d 2020-10-08 13:50:31.313909788 +0100
+++ binutils-2.35.1/gas/testsuite/gas/ppc/int128.d 2020-10-08 13:50:58.204826992 +0100
@@ -20,7 +20,7 @@ Disassembly of section \.text:
.*: (13 9d f7 0b|0b f7 9d 13) vmodsq v28,v29,v30
.*: (13 e0 0e 0b|0b 0e e0 13) vmoduq v31,v0,v1
.*: (10 5b 1e 02|02 1e 5b 10) vextsd2q v2,v3
-.*: (10 04 29 01|01 29 04 10) vcmpuq v4,v5
+.*: (10 04 29 01|01 29 04 10) vcmpuq cr0,v4,v5
.*: (10 86 39 41|41 39 86 10) vcmpsq cr1,v6,v7
.*: (11 09 51 c7|c7 51 09 11) vcmpequq v8,v9,v10
.*: (11 6c 6d c7|c7 6d 6c 11) vcmpequq. v11,v12,v13
diff -rup binutils.orig/gas/testsuite/gas/ppc/int128.s binutils-2.35.1/gas/testsuite/gas/ppc/int128.s
--- binutils.orig/gas/testsuite/gas/ppc/int128.s 2020-10-08 13:50:31.313909788 +0100
+++ binutils-2.35.1/gas/testsuite/gas/ppc/int128.s 2020-10-08 13:50:58.204826992 +0100
@@ -12,7 +12,7 @@ _start:
vmodsq 28,29,30
vmoduq 31,0,1
vextsd2q 2,3
- vcmpuq 4,5
+ vcmpuq 0,4,5
vcmpsq 1,6,7
vcmpequq 8,9,10
vcmpequq. 11,12,13
diff -rup binutils.orig/gas/testsuite/gas/ppc/power8.d binutils-2.35.1/gas/testsuite/gas/ppc/power8.d
--- binutils.orig/gas/testsuite/gas/ppc/power8.d 2020-10-08 13:50:31.311909794 +0100
+++ binutils-2.35.1/gas/testsuite/gas/ppc/power8.d 2020-10-08 13:56:18.490840878 +0100
@@ -7,151 +7,151 @@
Disassembly of section \.text:
0+00 <power8>:
- 0: (7c 05 07 1d|1d 07 05 7c) tabort\. r5
- 4: (7c e8 86 1d|1d 86 e8 7c) tabortwc\. 7,r8,r16
- 8: (7e 8b 56 5d|5d 56 8b 7e) tabortdc\. 20,r11,r10
- c: (7e 2a 9e 9d|9d 9e 2a 7e) tabortwci\. 17,r10,-13
- 10: (7f a3 de dd|dd de a3 7f) tabortdci\. 29,r3,-5
- 14: (7c 00 05 1d|1d 05 00 7c) tbegin\.
- 18: (7f 80 05 9c|9c 05 80 7f) tcheck cr7
- 1c: (7c 00 05 5d|5d 05 00 7c) tend\.
- 20: (7c 00 05 5d|5d 05 00 7c) tend\.
- 24: (7e 00 05 5d|5d 05 00 7e) tendall\.
- 28: (7e 00 05 5d|5d 05 00 7e) tendall\.
- 2c: (7c 18 07 5d|5d 07 18 7c) treclaim\. r24
- 30: (7c 00 07 dd|dd 07 00 7c) trechkpt\.
- 34: (7c 00 05 dd|dd 05 00 7c) tsuspend\.
- 38: (7c 00 05 dd|dd 05 00 7c) tsuspend\.
- 3c: (7c 20 05 dd|dd 05 20 7c) tresume\.
- 40: (7c 20 05 dd|dd 05 20 7c) tresume\.
- 44: (60 42 00 00|00 00 42 60) ori r2,r2,0
- 48: (60 00 00 00|00 00 00 60) nop
- 4c: (60 42 00 00|00 00 42 60) ori r2,r2,0
- 50: (4c 00 01 24|24 01 00 4c) rfebb 0
- 54: (4c 00 09 24|24 09 00 4c) rfebb
- 58: (4c 00 09 24|24 09 00 4c) rfebb
- 5c: (4d d5 04 60|60 04 d5 4d) bgttar- cr5
- 60: (4c c7 04 61|61 04 c7 4c) bnstarl- cr1
- 64: (4d ec 04 60|60 04 ec 4d) blttar\+ cr3
- 68: (4c e2 04 61|61 04 e2 4c) bnetarl\+
- 6c: (4c 88 0c 60|60 0c 88 4c) bctar 4,4\*cr2\+lt,1
- 70: (4c 87 14 61|61 14 87 4c) bctarl 4,4\*cr1\+so,2
- 74: (7c 00 00 3c|3c 00 00 7c) waitasec
- 78: (7c 00 41 1c|1c 41 00 7c) msgsndp r8
- 7c: (7c 20 01 26|26 01 20 7c) mtsle 1
- 80: (7c 00 d9 5c|5c d9 00 7c) msgclrp r27
- 84: (7d 4a 61 6d|6d 61 4a 7d) stqcx\. r10,r10,r12
- 88: (7f 80 39 6d|6d 39 80 7f) stqcx\. r28,0,r7
- 8c: (7f 13 5a 28|28 5a 13 7f) lqarx r24,r19,r11
- 90: (7e c0 5a 28|28 5a c0 7e) lqarx r22,0,r11
- 94: (7e 80 32 5c|5c 32 80 7e) mfbhrbe r20,6
- 98: (7f b1 83 29|29 83 b1 7f) pbt\. r29,r17,r16
- 9c: (7d c0 3b 29|29 3b c0 7d) pbt\. r14,0,r7
- a0: (7c 00 03 5c|5c 03 00 7c) clrbhrb
- a4: (11 6a 05 ed|ed 05 6a 11) vpermxor v11,v10,v0,v23
- a8: (13 02 39 3c|3c 39 02 13) vaddeuqm v24,v2,v7,v4
- ac: (11 4a 40 bd|bd 40 4a 11) vaddecuq v10,v10,v8,v2
- b0: (10 af 44 fe|fe 44 af 10) vsubeuqm v5,v15,v8,v19
- b4: (11 9f 87 7f|7f 87 9f 11) vsubecuq v12,v31,v16,v29
- b8: (12 9d 68 88|88 68 9d 12) vmulouw v20,v29,v13
- bc: (13 a0 d0 89|89 d0 a0 13) vmuluwm v29,v0,v26
- c0: (11 15 e0 c0|c0 e0 15 11) vaddudm v8,v21,v28
- c4: (10 3a 08 c2|c2 08 3a 10) vmaxud v1,v26,v1
- c8: (12 83 08 c4|c4 08 83 12) vrld v20,v3,v1
- cc: (10 93 58 c7|c7 58 93 10) vcmpequd v4,v19,v11
- d0: (12 ee f1 00|00 f1 ee 12) vadduqm v23,v14,v30
- d4: (11 08 69 40|40 69 08 11) vaddcuq v8,v8,v13
- d8: (13 9b 21 88|88 21 9b 13) vmulosw v28,v27,v4
- dc: (10 64 21 c2|c2 21 64 10) vmaxsd v3,v4,v4
- e0: (10 13 aa 88|88 aa 13 10) vmuleuw v0,v19,v21
- e4: (13 14 9a c2|c2 9a 14 13) vminud v24,v20,v19
- e8: (10 1c 7a c7|c7 7a 1c 10) vcmpgtud v0,v28,v15
- ec: (12 a0 13 88|88 13 a0 12) vmulesw v21,v0,v2
- f0: (11 3a 4b c2|c2 4b 3a 11) vminsd v9,v26,v9
- f4: (13 3d 5b c4|c4 5b 3d 13) vsrad v25,v29,v11
- f8: (11 7c 5b c7|c7 5b 7c 11) vcmpgtsd v11,v28,v11
- fc: (10 a8 d6 01|01 d6 a8 10) bcdadd\. v5,v8,v26,1
- 100: (10 83 64 08|08 64 83 10) vpmsumb v4,v3,v12
- 104: (13 5f ae 41|41 ae 5f 13) bcdsub\. v26,v31,v21,1
- 108: (10 b1 84 48|48 84 b1 10) vpmsumh v5,v17,v16
- 10c: (12 f1 a4 4e|4e a4 f1 12) vpkudum v23,v17,v20
- 110: (13 15 ec 88|88 ec 15 13) vpmsumw v24,v21,v29
- 114: (11 36 6c c8|c8 6c 36 11) vpmsumd v9,v22,v13
- 118: (12 53 94 ce|ce 94 53 12) vpkudus v18,v19,v18
- 11c: (13 d0 b5 00|00 b5 d0 13) vsubuqm v30,v16,v22
- 120: (11 cb 3d 08|08 3d cb 11) vcipher v14,v11,v7
- 124: (11 42 b5 09|09 b5 42 11) vcipherlast v10,v2,v22
- 128: (12 e0 6d 0c|0c 6d e0 12) vgbbd v23,v13
- 12c: (12 19 85 40|40 85 19 12) vsubcuq v16,v25,v16
- 130: (13 e1 2d 44|44 2d e1 13) vorc v31,v1,v5
- 134: (10 91 fd 48|48 fd 91 10) vncipher v4,v17,v31
- 138: (13 02 dd 49|49 dd 02 13) vncipherlast v24,v2,v27
- 13c: (12 f5 bd 4c|4c bd f5 12) vbpermq v23,v21,v23
- 140: (13 72 4d 4e|4e 4d 72 13) vpksdus v27,v18,v9
- 144: (13 7d dd 84|84 dd 7d 13) vnand v27,v29,v27
- 148: (12 73 c5 c4|c4 c5 73 12) vsld v19,v19,v24
- 14c: (10 ad 05 c8|c8 05 ad 10) vsbox v5,v13
- 150: (13 23 3d ce|ce 3d 23 13) vpksdss v25,v3,v7
- 154: (13 88 04 c7|c7 04 88 13) vcmpequd\. v28,v8,v0
- 158: (13 40 d6 4e|4e d6 40 13) vupkhsw v26,v26
- 15c: (10 a7 36 82|82 36 a7 10) vshasigmaw v5,v7,0,6
- 160: (13 95 76 84|84 76 95 13) veqv v28,v21,v14
- 164: (10 28 9e 8c|8c 9e 28 10) vmrgow v1,v8,v19
- 168: (10 0a 56 c2|c2 56 0a 10) vshasigmad v0,v10,0,10
- 16c: (10 bb 76 c4|c4 76 bb 10) vsrd v5,v27,v14
- 170: (11 60 6e ce|ce 6e 60 11) vupklsw v11,v13
- 174: (11 c0 87 02|02 87 c0 11) vclzb v14,v16
- 178: (12 80 df 03|03 df 80 12) vpopcntb v20,v27
- 17c: (13 80 5f 42|42 5f 80 13) vclzh v28,v11
- 180: (13 00 4f 43|43 4f 00 13) vpopcnth v24,v9
- 184: (13 60 ff 82|82 ff 60 13) vclzw v27,v31
- 188: (12 20 9f 83|83 9f 20 12) vpopcntw v17,v19
- 18c: (11 80 ef c2|c2 ef 80 11) vclzd v12,v29
- 190: (12 e0 b7 c3|c3 b7 e0 12) vpopcntd v23,v22
- 194: (13 14 ee c7|c7 ee 14 13) vcmpgtud\. v24,v20,v29
- 198: (11 26 df c7|c7 df 26 11) vcmpgtsd\. v9,v6,v27
- 19c: (7f ce d0 19|19 d0 ce 7f) lxsiwzx vs62,r14,r26
- 1a0: (7d 00 c8 19|19 c8 00 7d) lxsiwzx vs40,0,r25
- 1a4: (7f 20 d0 98|98 d0 20 7f) lxsiwax vs25,0,r26
- 1a8: (7c 60 18 98|98 18 60 7c) lxsiwax vs3,0,r3
- 1ac: (7f cc 00 67|67 00 cc 7f) mfvsrd r12,vs62
- 1b0: (7d 94 00 e6|e6 00 94 7d) mffprwz r20,f12
- 1b4: (7d c9 71 18|18 71 c9 7d) stxsiwx vs14,r9,r14
- 1b8: (7e a0 41 18|18 41 a0 7e) stxsiwx vs21,0,r8
- 1bc: (7e 0b 01 67|67 01 0b 7e) mtvsrd vs48,r11
- 1c0: (7f f7 01 a7|a7 01 f7 7f) mtvrwa v31,r23
- 1c4: (7e 1a 01 e6|e6 01 1a 7e) mtfprwz f16,r26
- 1c8: (7d b3 6c 18|18 6c b3 7d) lxsspx vs13,r19,r13
- 1cc: (7e 40 6c 18|18 6c 40 7e) lxsspx vs18,0,r13
- 1d0: (7d 62 25 19|19 25 62 7d) stxsspx vs43,r2,r4
- 1d4: (7e e0 5d 19|19 5d e0 7e) stxsspx vs55,0,r11
- 1d8: (f2 d0 c8 05|05 c8 d0 f2) xsaddsp vs54,vs48,vs25
- 1dc: (f1 d2 08 0c|0c 08 d2 f1) xsmaddasp vs14,vs50,vs1
- 1e0: (f3 56 50 42|42 50 56 f3) xssubsp vs26,vs22,vs42
- 1e4: (f3 75 a0 4e|4e a0 75 f3) xsmaddmsp vs27,vs53,vs52
- 1e8: (f1 00 d8 2a|2a d8 00 f1) xsrsqrtesp vs8,vs59
- 1ec: (f1 80 48 2e|2e 48 80 f1) xssqrtsp vs12,vs41
- 1f0: (f3 2b 00 83|83 00 2b f3) xsmulsp vs57,vs11,vs32
- 1f4: (f0 d4 d0 89|89 d0 d4 f0) xsmsubasp vs38,vs20,vs26
- 1f8: (f3 53 30 c0|c0 30 53 f3) xsdivsp vs26,vs19,vs6
- 1fc: (f0 65 b8 cf|cf b8 65 f0) xsmsubmsp vs35,vs37,vs55
- 200: (f3 60 40 69|69 40 60 f3) xsresp vs59,vs8
- 204: (f1 81 0c 0f|0f 0c 81 f1) xsnmaddasp vs44,vs33,vs33
- 208: (f2 3e f4 4c|4c f4 3e f2) xsnmaddmsp vs17,vs62,vs30
- 20c: (f2 d4 fc 8d|8d fc d4 f2) xsnmsubasp vs54,vs52,vs31
- 210: (f0 a5 d4 cb|cb d4 a5 f0) xsnmsubmsp vs37,vs5,vs58
- 214: (f3 d6 65 56|56 65 d6 f3) xxlorc vs30,vs54,vs44
- 218: (f2 2e ed 91|91 ed 2e f2) xxlnand vs49,vs14,vs29
- 21c: (f3 d6 f5 d1|d1 f5 d6 f3) xxleqv vs62,vs22,vs30
- 220: (f3 80 b4 2f|2f b4 80 f3) xscvdpspn vs60,vs54
- 224: (f2 c0 6c 66|66 6c c0 f2) xsrsp vs22,vs45
- 228: (f3 40 dc a2|a2 dc 40 f3) xscvuxdsp vs26,vs59
- 22c: (f0 c0 8c e3|e3 8c c0 f0) xscvsxdsp vs38,vs49
- 230: (f3 60 d5 2d|2d d5 60 f3) xscvspdpn vs59,vs26
- 234: (ff 0e 16 8c|8c 16 0e ff) fmrgow f24,f14,f2
- 238: (fe c7 2f 8c|8c 2f c7 fe) fmrgew f22,f7,f5
- 23c: (7c 00 71 9c|9c 71 00 7c) msgsnd r14
- 240: (7c 00 b9 dc|dc b9 00 7c) msgclr r23
+.*: (7c 05 07 1d|1d 07 05 7c) tabort\. r5
+.*: (7c e8 86 1d|1d 86 e8 7c) tabortwc\. 7,r8,r16
+.*: (7e 8b 56 5d|5d 56 8b 7e) tabortdc\. 20,r11,r10
+.*: (7e 2a 9e 9d|9d 9e 2a 7e) tabortwci\. 17,r10,-13
+.*: (7f a3 de dd|dd de a3 7f) tabortdci\. 29,r3,-5
+.*: (7c 00 05 1d|1d 05 00 7c) tbegin\.
+.*: (7f 80 05 9c|9c 05 80 7f) tcheck cr7
+.*: (7c 00 05 5d|5d 05 00 7c) tend\.
+.*: (7c 00 05 5d|5d 05 00 7c) tend\.
+.*: (7e 00 05 5d|5d 05 00 7e) tendall\.
+.*: (7e 00 05 5d|5d 05 00 7e) tendall\.
+.*: (7c 18 07 5d|5d 07 18 7c) treclaim\. r24
+.*: (7c 00 07 dd|dd 07 00 7c) trechkpt\.
+.*: (7c 00 05 dd|dd 05 00 7c) tsuspend\.
+.*: (7c 00 05 dd|dd 05 00 7c) tsuspend\.
+.*: (7c 20 05 dd|dd 05 20 7c) tresume\.
+.*: (7c 20 05 dd|dd 05 20 7c) tresume\.
+.*: (60 42 00 00|00 00 42 60) ori r2,r2,0
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (60 42 00 00|00 00 42 60) ori r2,r2,0
+.*: (4c 00 01 24|24 01 00 4c) rfebb 0
+.*: (4c 00 09 24|24 09 00 4c) rfebb
+.*: (4c 00 09 24|24 09 00 4c) rfebb
+.*: (4d d5 04 60|60 04 d5 4d) bgttar- cr5
+.*: (4c c7 04 61|61 04 c7 4c) bnstarl- cr1
+.*: (4d ec 04 60|60 04 ec 4d) blttar\+ cr3
+.*: (4c e2 04 61|61 04 e2 4c) bnetarl\+
+.*: (4c 88 0c 60|60 0c 88 4c) bctar 4,4\*cr2\+lt,1
+.*: (4c 87 14 61|61 14 87 4c) bctarl 4,4\*cr1\+so,2
+.*: (7c 00 00 3c|3c 00 00 7c) waitasec
+.*: (7c 00 41 1c|1c 41 00 7c) msgsndp r8
+.*: (7c 20 01 26|26 01 20 7c) mtsle 1
+.*: (7c 00 d9 5c|5c d9 00 7c) msgclrp r27
+.*: (7d 4a 61 6d|6d 61 4a 7d) stqcx\. r10,r10,r12
+.*: (7f 80 39 6d|6d 39 80 7f) stqcx\. r28,0,r7
+.*: (7f 13 5a 28|28 5a 13 7f) lqarx r24,r19,r11
+.*: (7e c0 5a 28|28 5a c0 7e) lqarx r22,0,r11
+.*: (7e 80 32 5c|5c 32 80 7e) mfbhrbe r20,6
+.*: (7f b1 83 29|29 83 b1 7f) pbt\. r29,r17,r16
+.*: (7d c0 3b 29|29 3b c0 7d) pbt\. r14,0,r7
+.*: (7c 00 03 5c|5c 03 00 7c) clrbhrb
+.*: (11 6a 05 ed|ed 05 6a 11) vpermxor v11,v10,v0,v23
+.*: (13 02 39 3c|3c 39 02 13) vaddeuqm v24,v2,v7,v4
+.*: (11 4a 40 bd|bd 40 4a 11) vaddecuq v10,v10,v8,v2
+.*: (10 af 44 fe|fe 44 af 10) vsubeuqm v5,v15,v8,v19
+.*: (11 9f 87 7f|7f 87 9f 11) vsubecuq v12,v31,v16,v29
+.*: (12 9d 68 88|88 68 9d 12) vmulouw v20,v29,v13
+.*: (13 a0 d0 89|89 d0 a0 13) vmuluwm v29,v0,v26
+.*: (11 15 e0 c0|c0 e0 15 11) vaddudm v8,v21,v28
+.*: (10 3a 08 c2|c2 08 3a 10) vmaxud v1,v26,v1
+.*: (12 83 08 c4|c4 08 83 12) vrld v20,v3,v1
+.*: (10 93 58 c7|c7 58 93 10) vcmpequd v4,v19,v11
+.*: (12 ee f1 00|00 f1 ee 12) vadduqm v23,v14,v30
+.*: (11 08 69 40|40 69 08 11) vaddcuq v8,v8,v13
+.*: (13 9b 21 88|88 21 9b 13) vmulosw v28,v27,v4
+.*: (10 64 21 c2|c2 21 64 10) vmaxsd v3,v4,v4
+.*: (10 13 aa 88|88 aa 13 10) vmuleuw v0,v19,v21
+.*: (13 14 9a c2|c2 9a 14 13) vminud v24,v20,v19
+.*: (10 1c 7a c7|c7 7a 1c 10) vcmpgtud v0,v28,v15
+.*: (12 a0 13 88|88 13 a0 12) vmulesw v21,v0,v2
+.*: (11 3a 4b c2|c2 4b 3a 11) vminsd v9,v26,v9
+.*: (13 3d 5b c4|c4 5b 3d 13) vsrad v25,v29,v11
+.*: (11 7c 5b c7|c7 5b 7c 11) vcmpgtsd v11,v28,v11
+.*: (10 a8 d6 01|01 d6 a8 10) bcdadd\. v5,v8,v26,1
+.*: (10 83 64 08|08 64 83 10) vpmsumb v4,v3,v12
+.*: (13 5f ae 41|41 ae 5f 13) bcdsub\. v26,v31,v21,1
+.*: (10 b1 84 48|48 84 b1 10) vpmsumh v5,v17,v16
+.*: (12 f1 a4 4e|4e a4 f1 12) vpkudum v23,v17,v20
+.*: (13 15 ec 88|88 ec 15 13) vpmsumw v24,v21,v29
+.*: (11 36 6c c8|c8 6c 36 11) vpmsumd v9,v22,v13
+.*: (12 53 94 ce|ce 94 53 12) vpkudus v18,v19,v18
+.*: (13 d0 b5 00|00 b5 d0 13) vsubuqm v30,v16,v22
+.*: (11 cb 3d 08|08 3d cb 11) vcipher v14,v11,v7
+.*: (11 42 b5 09|09 b5 42 11) vcipherlast v10,v2,v22
+.*: (12 e0 6d 0c|0c 6d e0 12) vgbbd v23,v13
+.*: (12 19 85 40|40 85 19 12) vsubcuq v16,v25,v16
+.*: (13 e1 2d 44|44 2d e1 13) vorc v31,v1,v5
+.*: (10 91 fd 48|48 fd 91 10) vncipher v4,v17,v31
+.*: (13 02 dd 49|49 dd 02 13) vncipherlast v24,v2,v27
+.*: (12 f5 bd 4c|4c bd f5 12) vbpermq v23,v21,v23
+.*: (13 72 4d 4e|4e 4d 72 13) vpksdus v27,v18,v9
+.*: (13 7d dd 84|84 dd 7d 13) vnand v27,v29,v27
+.*: (12 73 c5 c4|c4 c5 73 12) vsld v19,v19,v24
+.*: (10 ad 05 c8|c8 05 ad 10) vsbox v5,v13
+.*: (13 23 3d ce|ce 3d 23 13) vpksdss v25,v3,v7
+.*: (13 88 04 c7|c7 04 88 13) vcmpequd\. v28,v8,v0
+.*: (13 40 d6 4e|4e d6 40 13) vupkhsw v26,v26
+.*: (10 a7 36 82|82 36 a7 10) vshasigmaw v5,v7,0,6
+.*: (13 95 76 84|84 76 95 13) veqv v28,v21,v14
+.*: (10 28 9e 8c|8c 9e 28 10) vmrgow v1,v8,v19
+.*: (10 0a 56 c2|c2 56 0a 10) vshasigmad v0,v10,0,10
+.*: (10 bb 76 c4|c4 76 bb 10) vsrd v5,v27,v14
+.*: (11 60 6e ce|ce 6e 60 11) vupklsw v11,v13
+.*: (11 c0 87 02|02 87 c0 11) vclzb v14,v16
+.*: (12 80 df 03|03 df 80 12) vpopcntb v20,v27
+.*: (13 80 5f 42|42 5f 80 13) vclzh v28,v11
+.*: (13 00 4f 43|43 4f 00 13) vpopcnth v24,v9
+.*: (13 60 ff 82|82 ff 60 13) vclzw v27,v31
+.*: (12 20 9f 83|83 9f 20 12) vpopcntw v17,v19
+.*: (11 80 ef c2|c2 ef 80 11) vclzd v12,v29
+.*: (12 e0 b7 c3|c3 b7 e0 12) vpopcntd v23,v22
+.*: (13 14 ee c7|c7 ee 14 13) vcmpgtud\. v24,v20,v29
+.*: (11 26 df c7|c7 df 26 11) vcmpgtsd\. v9,v6,v27
+.*: (7f ce d0 19|19 d0 ce 7f) lxsiwzx vs62,r14,r26
+.*: (7d 00 c8 19|19 c8 00 7d) lxsiwzx vs40,0,r25
+.*: (7f 20 d0 98|98 d0 20 7f) lxsiwax vs25,0,r26
+.*: (7c 60 18 98|98 18 60 7c) lxsiwax vs3,0,r3
+.*: (7f cc 00 67|67 00 cc 7f) (mfvrd r12,v30|mfvsrd r12,vs62)
+.*: (7d 94 00 e6|e6 00 94 7d) (mffprwz r20,f12|mfvsrwz r20,vs12)
+.*: (7d c9 71 18|18 71 c9 7d) stxsiwx vs14,r9,r14
+.*: (7e a0 41 18|18 41 a0 7e) stxsiwx vs21,0,r8
+.*: (7e 0b 01 67|67 01 0b 7e) (mtvrd v16,r11|mtvsrd vs48,r11)
+.*: (7f f7 01 a7|a7 01 f7 7f) (mtvrwa v31,r23|mtvsrwa vs63,r23)
+.*: (7e 1a 01 e6|e6 01 1a 7e) (mtfprwz f16,r26|mtvsrwz vs16,r26)
+.*: (7d b3 6c 18|18 6c b3 7d) lxsspx vs13,r19,r13
+.*: (7e 40 6c 18|18 6c 40 7e) lxsspx vs18,0,r13
+.*: (7d 62 25 19|19 25 62 7d) stxsspx vs43,r2,r4
+.*: (7e e0 5d 19|19 5d e0 7e) stxsspx vs55,0,r11
+.*: (f2 d0 c8 05|05 c8 d0 f2) xsaddsp vs54,vs48,vs25
+.*: (f1 d2 08 0c|0c 08 d2 f1) xsmaddasp vs14,vs50,vs1
+.*: (f3 56 50 42|42 50 56 f3) xssubsp vs26,vs22,vs42
+.*: (f3 75 a0 4e|4e a0 75 f3) xsmaddmsp vs27,vs53,vs52
+.*: (f1 00 d8 2a|2a d8 00 f1) xsrsqrtesp vs8,vs59
+.*: (f1 80 48 2e|2e 48 80 f1) xssqrtsp vs12,vs41
+.*: (f3 2b 00 83|83 00 2b f3) xsmulsp vs57,vs11,vs32
+.*: (f0 d4 d0 89|89 d0 d4 f0) xsmsubasp vs38,vs20,vs26
+.*: (f3 53 30 c0|c0 30 53 f3) xsdivsp vs26,vs19,vs6
+.*: (f0 65 b8 cf|cf b8 65 f0) xsmsubmsp vs35,vs37,vs55
+.*: (f3 60 40 69|69 40 60 f3) xsresp vs59,vs8
+.*: (f1 81 0c 0f|0f 0c 81 f1) xsnmaddasp vs44,vs33,vs33
+.*: (f2 3e f4 4c|4c f4 3e f2) xsnmaddmsp vs17,vs62,vs30
+.*: (f2 d4 fc 8d|8d fc d4 f2) xsnmsubasp vs54,vs52,vs31
+.*: (f0 a5 d4 cb|cb d4 a5 f0) xsnmsubmsp vs37,vs5,vs58
+.*: (f3 d6 65 56|56 65 d6 f3) xxlorc vs30,vs54,vs44
+.*: (f2 2e ed 91|91 ed 2e f2) xxlnand vs49,vs14,vs29
+.*: (f3 d6 f5 d1|d1 f5 d6 f3) xxleqv vs62,vs22,vs30
+.*: (f3 80 b4 2f|2f b4 80 f3) xscvdpspn vs60,vs54
+.*: (f2 c0 6c 66|66 6c c0 f2) xsrsp vs22,vs45
+.*: (f3 40 dc a2|a2 dc 40 f3) xscvuxdsp vs26,vs59
+.*: (f0 c0 8c e3|e3 8c c0 f0) xscvsxdsp vs38,vs49
+.*: (f3 60 d5 2d|2d d5 60 f3) xscvspdpn vs59,vs26
+.*: (ff 0e 16 8c|8c 16 0e ff) fmrgow f24,f14,f2
+.*: (fe c7 2f 8c|8c 2f c7 fe) fmrgew f22,f7,f5
+.*: (7c 00 71 9c|9c 71 00 7c) msgsnd r14
+.*: (7c 00 b9 dc|dc b9 00 7c) msgclr r23
.*: (7d 00 2e 99|99 2e 00 7d) lxvd2x vs40,0,r5
.*: (7d 00 2e 99|99 2e 00 7d) lxvd2x vs40,0,r5
.*: (7d 54 36 98|98 36 54 7d) lxvd2x vs10,r20,r6
@@ -310,4 +310,6 @@ Disassembly of section \.text:
.*: (4d 89 04 61|61 04 89 4d) bgttarl cr2
.*: (4d 89 04 61|61 04 89 4d) bgttarl cr2
.*: (4d 89 1c 61|61 1c 89 4d) bctarl 12,4\*cr2\+gt,3
+.*: (7f 5a d3 78|78 d3 5a 7f) miso
+.*: (7f 5a d3 78|78 d3 5a 7f) miso
#pass
diff -rup binutils.orig/gas/testsuite/gas/ppc/power8.s binutils-2.35.1/gas/testsuite/gas/ppc/power8.s
--- binutils.orig/gas/testsuite/gas/ppc/power8.s 2020-10-08 13:50:31.310909797 +0100
+++ binutils-2.35.1/gas/testsuite/gas/ppc/power8.s 2020-10-08 13:56:18.491840875 +0100
@@ -302,3 +302,5 @@ power8:
bctarl 0b01100,4*cr2+gt
bctarl 0b01100,4*cr2+gt,0
bctarl 0b01100,4*cr2+gt,3
+ or 26,26,26
+ miso
diff -rup binutils.orig/gas/testsuite/gas/ppc/power9.d binutils-2.35.1/gas/testsuite/gas/ppc/power9.d
--- binutils.orig/gas/testsuite/gas/ppc/power9.d 2020-10-08 13:50:31.312909791 +0100
+++ binutils-2.35.1/gas/testsuite/gas/ppc/power9.d 2020-10-08 13:56:18.491840875 +0100
@@ -399,4 +399,8 @@ Disassembly of section \.text:
.*: (7c 20 20 ac|ac 20 20 7c) dcbfl 0,r4
.*: (7c 60 28 ac|ac 28 60 7c) dcbflp 0,r5
.*: (7c 60 28 ac|ac 28 60 7c) dcbflp 0,r5
+.*: (63 ff 00 00|00 00 ff 63) exser
+.*: (63 ff 00 00|00 00 ff 63) exser
+.*: (7c 00 18 9c|9c 18 00 7c) msgsndu r3
+.*: (7c 00 d8 dc|dc d8 00 7c) msgclru r27
#pass
diff -rup binutils.orig/gas/testsuite/gas/ppc/power9.s binutils-2.35.1/gas/testsuite/gas/ppc/power9.s
--- binutils.orig/gas/testsuite/gas/ppc/power9.s 2020-10-08 13:50:31.314909784 +0100
+++ binutils-2.35.1/gas/testsuite/gas/ppc/power9.s 2020-10-08 13:56:18.492840872 +0100
@@ -390,3 +390,7 @@ power9:
dcbf 0,4,1
dcbflp 0,5
dcbf 0,5,3
+ ori 31,31,0
+ exser
+ msgsndu 3
+ msgclru 27
diff -rup binutils.orig/gas/testsuite/gas/ppc/ppc.exp binutils-2.35.1/gas/testsuite/gas/ppc/ppc.exp
--- binutils.orig/gas/testsuite/gas/ppc/ppc.exp 2020-10-08 13:50:31.314909784 +0100
+++ binutils-2.35.1/gas/testsuite/gas/ppc/ppc.exp 2020-10-08 13:51:29.102731857 +0100
@@ -76,6 +76,8 @@ if { [istarget powerpc64*-*-*] || [istar
run_dump_test "common"
run_dump_test "476"
run_dump_test "a2"
+run_dump_test "be"
+run_dump_test "le_error"
run_dump_test "pr21303"
run_dump_test "vle"
run_dump_test "vle-reloc"
diff -rup binutils.orig/gas/testsuite/gas/ppc/vsx2.d binutils-2.35.1/gas/testsuite/gas/ppc/vsx2.d
--- binutils.orig/gas/testsuite/gas/ppc/vsx2.d 2020-10-08 13:50:31.312909791 +0100
+++ binutils-2.35.1/gas/testsuite/gas/ppc/vsx2.d 2020-10-08 13:56:07.796873810 +0100
@@ -7,59 +7,59 @@
Disassembly of section \.text:
0+00 <vsx2>:
- 0: (7f ce d0 19|19 d0 ce 7f) lxsiwzx vs62,r14,r26
- 4: (7d 00 c8 19|19 c8 00 7d) lxsiwzx vs40,0,r25
- 8: (7f 20 d0 98|98 d0 20 7f) lxsiwax vs25,0,r26
- c: (7c 60 18 98|98 18 60 7c) lxsiwax vs3,0,r3
- 10: (7f cc 00 66|66 00 cc 7f) mfvsrd r12,vs30
- 14: (7f cc 00 66|66 00 cc 7f) mfvsrd r12,vs30
- 18: (7f cc 00 67|67 00 cc 7f) mfvsrd r12,vs62
- 1c: (7f cc 00 67|67 00 cc 7f) mfvsrd r12,vs62
- 20: (7d 94 00 e6|e6 00 94 7d) mffprwz r20,f12
- 24: (7d 94 00 e6|e6 00 94 7d) mffprwz r20,f12
- 28: (7d 95 00 e7|e7 00 95 7d) mfvrwz r21,v12
- 2c: (7d 95 00 e7|e7 00 95 7d) mfvrwz r21,v12
- 30: (7d c9 71 18|18 71 c9 7d) stxsiwx vs14,r9,r14
- 34: (7e a0 41 18|18 41 a0 7e) stxsiwx vs21,0,r8
- 38: (7d 7c 01 66|66 01 7c 7d) mtvsrd vs11,r28
- 3c: (7d 7c 01 66|66 01 7c 7d) mtvsrd vs11,r28
- 40: (7d 7d 01 67|67 01 7d 7d) mtvsrd vs43,r29
- 44: (7d 7d 01 67|67 01 7d 7d) mtvsrd vs43,r29
- 48: (7f 16 01 a6|a6 01 16 7f) mtfprwa f24,r22
- 4c: (7f 16 01 a6|a6 01 16 7f) mtfprwa f24,r22
- 50: (7f 37 01 a7|a7 01 37 7f) mtvrwa v25,r23
- 54: (7f 37 01 a7|a7 01 37 7f) mtvrwa v25,r23
- 58: (7f 5b 01 e6|e6 01 5b 7f) mtfprwz f26,r27
- 5c: (7f 5b 01 e6|e6 01 5b 7f) mtfprwz f26,r27
- 60: (7f 7c 01 e7|e7 01 7c 7f) mtvrwz v27,r28
- 64: (7f 7c 01 e7|e7 01 7c 7f) mtvrwz v27,r28
- 68: (7d b3 6c 18|18 6c b3 7d) lxsspx vs13,r19,r13
- 6c: (7e 40 6c 18|18 6c 40 7e) lxsspx vs18,0,r13
- 70: (7d 62 25 19|19 25 62 7d) stxsspx vs43,r2,r4
- 74: (7e e0 5d 19|19 5d e0 7e) stxsspx vs55,0,r11
- 78: (f2 d0 c8 05|05 c8 d0 f2) xsaddsp vs54,vs48,vs25
- 7c: (f1 d2 08 0c|0c 08 d2 f1) xsmaddasp vs14,vs50,vs1
- 80: (f3 56 50 42|42 50 56 f3) xssubsp vs26,vs22,vs42
- 84: (f3 75 a0 4e|4e a0 75 f3) xsmaddmsp vs27,vs53,vs52
- 88: (f1 00 d8 2a|2a d8 00 f1) xsrsqrtesp vs8,vs59
- 8c: (f1 80 48 2e|2e 48 80 f1) xssqrtsp vs12,vs41
- 90: (f3 2b 00 83|83 00 2b f3) xsmulsp vs57,vs11,vs32
- 94: (f0 d4 d0 89|89 d0 d4 f0) xsmsubasp vs38,vs20,vs26
- 98: (f3 53 30 c0|c0 30 53 f3) xsdivsp vs26,vs19,vs6
- 9c: (f0 65 b8 cf|cf b8 65 f0) xsmsubmsp vs35,vs37,vs55
- a0: (f3 60 40 69|69 40 60 f3) xsresp vs59,vs8
- a4: (f1 81 0c 0f|0f 0c 81 f1) xsnmaddasp vs44,vs33,vs33
- a8: (f2 3e f4 4c|4c f4 3e f2) xsnmaddmsp vs17,vs62,vs30
- ac: (f2 d4 fc 8d|8d fc d4 f2) xsnmsubasp vs54,vs52,vs31
- b0: (f0 a5 d4 cb|cb d4 a5 f0) xsnmsubmsp vs37,vs5,vs58
- b4: (f3 d6 65 56|56 65 d6 f3) xxlorc vs30,vs54,vs44
- b8: (f2 2e ed 91|91 ed 2e f2) xxlnand vs49,vs14,vs29
- bc: (f3 d6 f5 d1|d1 f5 d6 f3) xxleqv vs62,vs22,vs30
- c0: (f3 80 b4 2f|2f b4 80 f3) xscvdpspn vs60,vs54
- c4: (f2 c0 6c 66|66 6c c0 f2) xsrsp vs22,vs45
- c8: (f3 40 dc a2|a2 dc 40 f3) xscvuxdsp vs26,vs59
- cc: (f0 c0 8c e3|e3 8c c0 f0) xscvsxdsp vs38,vs49
- d0: (f3 60 d5 2d|2d d5 60 f3) xscvspdpn vs59,vs26
- d4: (ff 0e 16 8c|8c 16 0e ff) fmrgow f24,f14,f2
- d8: (fe c7 2f 8c|8c 2f c7 fe) fmrgew f22,f7,f5
+.*: (7f ce d0 19|19 d0 ce 7f) lxsiwzx vs62,r14,r26
+.*: (7d 00 c8 19|19 c8 00 7d) lxsiwzx vs40,0,r25
+.*: (7f 20 d0 98|98 d0 20 7f) lxsiwax vs25,0,r26
+.*: (7c 60 18 98|98 18 60 7c) lxsiwax vs3,0,r3
+.*: (7f cc 00 66|66 00 cc 7f) (mffprd r12,f30|mfvsrd r12,vs30)
+.*: (7f cc 00 66|66 00 cc 7f) (mffprd r12,f30|mfvsrd r12,vs30)
+.*: (7f cc 00 67|67 00 cc 7f) (mfvrd r12,v30|mfvsrd r12,vs62)
+.*: (7f cc 00 67|67 00 cc 7f) (mfvrd r12,v30|mfvsrd r12,vs62)
+.*: (7d 94 00 e6|e6 00 94 7d) (mffprwz r20,f12|mfvsrwz r20,vs12)
+.*: (7d 94 00 e6|e6 00 94 7d) (mffprwz r20,f12|mfvsrwz r20,vs12)
+.*: (7d 95 00 e7|e7 00 95 7d) (mfvrwz r21,v12|mfvsrwz r21,vs44)
+.*: (7d 95 00 e7|e7 00 95 7d) (mfvrwz r21,v12|mfvsrwz r21,vs44)
+.*: (7d c9 71 18|18 71 c9 7d) stxsiwx vs14,r9,r14
+.*: (7e a0 41 18|18 41 a0 7e) stxsiwx vs21,0,r8
+.*: (7d 7c 01 66|66 01 7c 7d) (mtfprd f11,r28|mtvsrd vs11,r28)
+.*: (7d 7c 01 66|66 01 7c 7d) (mtfprd f11,r28|mtvsrd vs11,r28)
+.*: (7d 7d 01 67|67 01 7d 7d) (mtvrd v11,r29|mtvsrd vs43,r29)
+.*: (7d 7d 01 67|67 01 7d 7d) (mtvrd v11,r29|mtvsrd vs43,r29)
+.*: (7f 16 01 a6|a6 01 16 7f) (mtfprwa f24,r22|mtvsrwa vs24,r22)
+.*: (7f 16 01 a6|a6 01 16 7f) (mtfprwa f24,r22|mtvsrwa vs24,r22)
+.*: (7f 37 01 a7|a7 01 37 7f) (mtvrwa v25,r23|mtvsrwa vs57,r23)
+.*: (7f 37 01 a7|a7 01 37 7f) (mtvrwa v25,r23|mtvsrwa vs57,r23)
+.*: (7f 5b 01 e6|e6 01 5b 7f) (mtfprwz f26,r27|mtvsrwz vs26,r27)
+.*: (7f 5b 01 e6|e6 01 5b 7f) (mtfprwz f26,r27|mtvsrwz vs26,r27)
+.*: (7f 7c 01 e7|e7 01 7c 7f) (mtvrwz v27,r28|mtvsrwz vs59,r28)
+.*: (7f 7c 01 e7|e7 01 7c 7f) (mtvrwz v27,r28|mtvsrwz vs59,r28)
+.*: (7d b3 6c 18|18 6c b3 7d) lxsspx vs13,r19,r13
+.*: (7e 40 6c 18|18 6c 40 7e) lxsspx vs18,0,r13
+.*: (7d 62 25 19|19 25 62 7d) stxsspx vs43,r2,r4
+.*: (7e e0 5d 19|19 5d e0 7e) stxsspx vs55,0,r11
+.*: (f2 d0 c8 05|05 c8 d0 f2) xsaddsp vs54,vs48,vs25
+.*: (f1 d2 08 0c|0c 08 d2 f1) xsmaddasp vs14,vs50,vs1
+.*: (f3 56 50 42|42 50 56 f3) xssubsp vs26,vs22,vs42
+.*: (f3 75 a0 4e|4e a0 75 f3) xsmaddmsp vs27,vs53,vs52
+.*: (f1 00 d8 2a|2a d8 00 f1) xsrsqrtesp vs8,vs59
+.*: (f1 80 48 2e|2e 48 80 f1) xssqrtsp vs12,vs41
+.*: (f3 2b 00 83|83 00 2b f3) xsmulsp vs57,vs11,vs32
+.*: (f0 d4 d0 89|89 d0 d4 f0) xsmsubasp vs38,vs20,vs26
+.*: (f3 53 30 c0|c0 30 53 f3) xsdivsp vs26,vs19,vs6
+.*: (f0 65 b8 cf|cf b8 65 f0) xsmsubmsp vs35,vs37,vs55
+.*: (f3 60 40 69|69 40 60 f3) xsresp vs59,vs8
+.*: (f1 81 0c 0f|0f 0c 81 f1) xsnmaddasp vs44,vs33,vs33
+.*: (f2 3e f4 4c|4c f4 3e f2) xsnmaddmsp vs17,vs62,vs30
+.*: (f2 d4 fc 8d|8d fc d4 f2) xsnmsubasp vs54,vs52,vs31
+.*: (f0 a5 d4 cb|cb d4 a5 f0) xsnmsubmsp vs37,vs5,vs58
+.*: (f3 d6 65 56|56 65 d6 f3) xxlorc vs30,vs54,vs44
+.*: (f2 2e ed 91|91 ed 2e f2) xxlnand vs49,vs14,vs29
+.*: (f3 d6 f5 d1|d1 f5 d6 f3) xxleqv vs62,vs22,vs30
+.*: (f3 80 b4 2f|2f b4 80 f3) xscvdpspn vs60,vs54
+.*: (f2 c0 6c 66|66 6c c0 f2) xsrsp vs22,vs45
+.*: (f3 40 dc a2|a2 dc 40 f3) xscvuxdsp vs26,vs59
+.*: (f0 c0 8c e3|e3 8c c0 f0) xscvsxdsp vs38,vs49
+.*: (f3 60 d5 2d|2d d5 60 f3) xscvspdpn vs59,vs26
+.*: (ff 0e 16 8c|8c 16 0e ff) fmrgow f24,f14,f2
+.*: (fe c7 2f 8c|8c 2f c7 fe) fmrgew f22,f7,f5
#pass
diff -rup binutils.orig/gas/testsuite/gas/ppc/xvtlsbb.d binutils-2.35.1/gas/testsuite/gas/ppc/xvtlsbb.d
--- binutils.orig/gas/testsuite/gas/ppc/xvtlsbb.d 2020-10-08 13:50:31.314909784 +0100
+++ binutils-2.35.1/gas/testsuite/gas/ppc/xvtlsbb.d 2020-10-08 13:50:58.204826992 +0100
@@ -7,7 +7,7 @@
Disassembly of section \.text:
0+0 <_start>:
-.*: (f0 02 ff 6e|6e ff 02 f0) xvtlsbb vs63
+.*: (f0 02 ff 6e|6e ff 02 f0) xvtlsbb cr0,vs63
.*: (f0 82 07 6c|6c 07 82 f0) xvtlsbb cr1,vs0
.*: (f1 02 f7 6e|6e f7 02 f1) xvtlsbb cr2,vs62
.*: (f1 82 0f 6c|6c 0f 82 f1) xvtlsbb cr3,vs1
diff -rup binutils.orig/gold/options.cc binutils-2.35.1/gold/options.cc
--- binutils.orig/gold/options.cc 2020-10-08 13:50:31.446909378 +0100
+++ binutils-2.35.1/gold/options.cc 2020-10-08 13:54:38.747147982 +0100
@@ -465,6 +465,14 @@ General_options::parse_plugin_opt(const
}
void
+General_options::parse_no_power10_stubs(const char*, const char*,
+ Command_line*)
+{
+ this->set_power10_stubs("no");
+ this->set_user_set_power10_stubs();
+}
+
+void
General_options::parse_R(const char* option, const char* arg,
Command_line* cmdline)
{
@@ -1183,6 +1191,27 @@ General_options::finalize()
this->set_start_stop_visibility_enum(elfcpp::STV_PROTECTED);
}
+ // Parse the --power10-stubs argument.
+ if (!this->user_set_power10_stubs())
+ {
+ // --power10-stubs without an arg is equivalent to --power10-stubs=yes
+ // but not specifying --power10-stubs at all should be equivalent to
+ // --power10-stubs=auto. This doesn't fit into the notion of
+ // "default_value", used both as a static initializer and to provide
+ // a missing optional arg. Fix it here.
+ this->set_power10_stubs("auto");
+ this->set_power10_stubs_enum(POWER10_STUBS_AUTO);
+ }
+ else
+ {
+ if (strcmp(this->power10_stubs(), "auto") == 0)
+ this->set_power10_stubs_enum(POWER10_STUBS_AUTO);
+ else if (strcmp(this->power10_stubs(), "no") == 0)
+ this->set_power10_stubs_enum(POWER10_STUBS_NO);
+ else if (strcmp(this->power10_stubs(), "yes") == 0)
+ this->set_power10_stubs_enum(POWER10_STUBS_YES);
+ }
+
// -M is equivalent to "-Map -".
if (this->print_map() && !this->user_set_Map())
{
diff -rup binutils.orig/gold/options.h binutils-2.35.1/gold/options.h
--- binutils.orig/gold/options.h 2020-10-08 13:50:31.447909375 +0100
+++ binutils-2.35.1/gold/options.h 2020-10-08 13:54:38.748147979 +0100
@@ -481,9 +481,9 @@ struct Struct_special : public Struct_va
// After helparg__ should come an initializer list, like
// {"foo", "bar", "baz"}
#define DEFINE_enum(varname__, dashes__, shortname__, default_value__, \
- helpstring__, helparg__, ...) \
+ helpstring__, helparg__, optional_arg__, ...) \
DEFINE_var(varname__, dashes__, shortname__, default_value__, \
- default_value__, helpstring__, helparg__, false, \
+ default_value__, helpstring__, helparg__, optional_arg__, \
const char*, const char*, parse_choices_##varname__, false) \
private: \
static void parse_choices_##varname__(const char* option_name, \
@@ -703,7 +703,7 @@ class General_options
N_("Use DT_NEEDED for all shared libraries"));
DEFINE_enum(assert, options::ONE_DASH, '\0', NULL,
- N_("Ignored"), N_("[ignored]"),
+ N_("Ignored"), N_("[ignored]"), false,
{"definitions", "nodefinitions", "nosymbolic", "pure-text"});
// b
@@ -761,7 +761,7 @@ class General_options
DEFINE_enum(compress_debug_sections, options::TWO_DASHES, '\0', "none",
N_("Compress .debug_* sections in the output file"),
- ("[none,zlib,zlib-gnu,zlib-gabi]"),
+ ("[none,zlib,zlib-gnu,zlib-gabi]"), false,
{"none", "zlib", "zlib-gnu", "zlib-gabi"});
DEFINE_bool(copy_dt_needed_entries, options::TWO_DASHES, '\0', false,
@@ -934,7 +934,7 @@ class General_options
N_("FRACTION"));
DEFINE_enum(hash_style, options::TWO_DASHES, '\0', DEFAULT_HASH_STYLE,
- N_("Dynamic hash style"), N_("[sysv,gnu,both]"),
+ N_("Dynamic hash style"), N_("[sysv,gnu,both]"), false,
{"sysv", "gnu", "both"});
// i
@@ -946,7 +946,7 @@ class General_options
N_("Identical Code Folding. "
"\'--icf=safe\' Folds ctors, dtors and functions whose"
" pointers are definitely not taken"),
- ("[none,all,safe]"),
+ ("[none,all,safe]"), false,
{"none", "all", "safe"});
DEFINE_uint(icf_iterations, options::TWO_DASHES , '\0', 0,
@@ -1086,7 +1086,7 @@ class General_options
DEFINE_enum(orphan_handling, options::TWO_DASHES, '\0', "place",
N_("Orphan section handling"), N_("[place,discard,warn,error]"),
- {"place", "discard", "warn", "error"});
+ false, {"place", "discard", "warn", "error"});
// p
@@ -1141,6 +1141,12 @@ class General_options
N_("Use posix_fallocate to reserve space in the output file"),
N_("Use fallocate or ftruncate to reserve space"));
+ DEFINE_enum(power10_stubs, options::TWO_DASHES, '\0', "yes",
+ N_("(PowerPC64 only) stubs use power10 insns"),
+ N_("[=auto,no,yes]"), true, {"auto", "no", "yes"});
+ DEFINE_special(no_power10_stubs, options::TWO_DASHES, '\0',
+ N_("(PowerPC64 only) stubs do not use power10 insns"), NULL);
+
DEFINE_bool(preread_archive_symbols, options::TWO_DASHES, '\0', false,
N_("Preread archive symbols when multi-threaded"), NULL);
@@ -1236,7 +1242,7 @@ class General_options
DEFINE_enum(sort_section, options::TWO_DASHES, '\0', "none",
N_("Sort sections by name. \'--no-text-reorder\'"
" will override \'--sort-section=name\' for .text"),
- N_("[none,name]"),
+ N_("[none,name]"), false,
{"none", "name"});
DEFINE_uint(spare_dynamic_tags, options::TWO_DASHES, '\0', 5,
@@ -1287,7 +1293,7 @@ class General_options
NULL);
DEFINE_enum(target2, options::TWO_DASHES, '\0', NULL,
N_("(ARM only) Set R_ARM_TARGET2 relocation type"),
- N_("[rel, abs, got-rel"),
+ N_("[rel, abs, got-rel"), false,
{"rel", "abs", "got-rel"});
DEFINE_bool(text_reorder, options::TWO_DASHES, '\0', true,
@@ -1344,7 +1350,7 @@ class General_options
DEFINE_enum(unresolved_symbols, options::TWO_DASHES, '\0', NULL,
N_("How to handle unresolved symbols"),
("ignore-all,report-all,ignore-in-object-files,"
- "ignore-in-shared-libs"),
+ "ignore-in-shared-libs"), false,
{"ignore-all", "report-all", "ignore-in-object-files",
"ignore-in-shared-libs"});
@@ -1507,7 +1513,7 @@ class General_options
DEFINE_enum(start_stop_visibility, options::DASH_Z, '\0', "protected",
N_("ELF symbol visibility for synthesized "
"__start_* and __stop_* symbols"),
- ("[default,internal,hidden,protected]"),
+ ("[default,internal,hidden,protected]"), false,
{"default", "internal", "hidden", "protected"});
DEFINE_bool(text, options::DASH_Z, '\0', false,
N_("Do not permit relocations in read-only segments"),
@@ -1763,6 +1769,20 @@ class General_options
start_stop_visibility_enum() const
{ return this->start_stop_visibility_enum_; }
+ enum Power10_stubs
+ {
+ // Use Power10 insns on @notoc calls/branches, non-Power10 elsewhere.
+ POWER10_STUBS_AUTO,
+ // Don't use Power10 insns
+ POWER10_STUBS_NO,
+ // Always use Power10 insns
+ POWER10_STUBS_YES
+ };
+
+ Power10_stubs
+ power10_stubs_enum() const
+ { return this->power10_stubs_enum_; }
+
private:
// Don't copy this structure.
General_options(const General_options&);
@@ -1826,6 +1846,10 @@ class General_options
set_start_stop_visibility_enum(elfcpp::STV value)
{ this->start_stop_visibility_enum_ = value; }
+ void
+ set_power10_stubs_enum(Power10_stubs value)
+ { this->power10_stubs_enum_ = value; }
+
// These are called by finalize() to set up the search-path correctly.
void
add_to_library_path_with_sysroot(const std::string& arg)
@@ -1895,6 +1919,8 @@ class General_options
Orphan_handling orphan_handling_enum_;
// Symbol visibility for __start_* / __stop_* magic symbols.
elfcpp::STV start_stop_visibility_enum_;
+ // Power10 stubs option
+ Power10_stubs power10_stubs_enum_;
};
// The position-dependent options. We use this to store the state of
diff -rup binutils.orig/gold/powerpc.cc binutils-2.35.1/gold/powerpc.cc
--- binutils.orig/gold/powerpc.cc 2020-10-08 13:50:31.445909381 +0100
+++ binutils-2.35.1/gold/powerpc.cc 2020-10-08 13:55:52.171921920 +0100
@@ -647,7 +647,7 @@ class Target_powerpc : public Sized_targ
glink_(NULL), rela_dyn_(NULL), copy_relocs_(),
tlsld_got_offset_(-1U),
stub_tables_(), branch_lookup_table_(), branch_info_(), tocsave_loc_(),
- power10_stubs_(false), plt_thread_safe_(false), plt_localentry0_(false),
+ power10_relocs_(false), plt_thread_safe_(false), plt_localentry0_(false),
plt_localentry0_init_(false), has_localentry0_(false),
has_tls_get_addr_opt_(false),
tprel_opt_(parameters->options().tls_optimize()),
@@ -1079,14 +1079,25 @@ class Target_powerpc : public Sized_targ
sym->set_dynsym_index(-1U);
}
+ void
+ set_power10_relocs()
+ {
+ this->power10_relocs_ = true;
+ }
+
bool
power10_stubs() const
- { return this->power10_stubs_; }
+ {
+ return (this->power10_relocs_
+ && (parameters->options().power10_stubs_enum()
+ != General_options::POWER10_STUBS_NO));
+ }
- void
- set_power10_stubs()
+ bool
+ power10_stubs_auto() const
{
- this->power10_stubs_ = true;
+ return (parameters->options().power10_stubs_enum()
+ == General_options::POWER10_STUBS_AUTO);
}
bool
@@ -1097,6 +1108,10 @@ class Target_powerpc : public Sized_targ
plt_localentry0() const
{ return this->plt_localentry0_; }
+ bool
+ has_localentry0() const
+ { return this->has_localentry0_; }
+
void
set_has_localentry0()
{
@@ -1696,7 +1711,7 @@ class Target_powerpc : public Sized_targ
Branches branch_info_;
Tocsave_loc tocsave_loc_;
- bool power10_stubs_;
+ bool power10_relocs_;
bool plt_thread_safe_;
bool plt_localentry0_;
bool plt_localentry0_init_;
@@ -4181,6 +4196,7 @@ static const uint32_t cmpwi_11_0 = 0x2c0
static const uint32_t cror_15_15_15 = 0x4def7b82;
static const uint32_t cror_31_31_31 = 0x4ffffb82;
static const uint32_t ld_0_1 = 0xe8010000;
+static const uint32_t ld_0_11 = 0xe80b0000;
static const uint32_t ld_0_12 = 0xe80c0000;
static const uint32_t ld_2_1 = 0xe8410000;
static const uint32_t ld_2_2 = 0xe8420000;
@@ -4563,9 +4579,9 @@ static const unsigned char glink_eh_fram
0, 0, 0, 0, // Replaced with offset to .glink.
0, 0, 0, 0, // Replaced with size of .glink.
0, // Augmentation size.
- elfcpp::DW_CFA_advance_loc + 1,
+ elfcpp::DW_CFA_advance_loc + 2,
elfcpp::DW_CFA_register, 65, 12,
- elfcpp::DW_CFA_advance_loc + 5,
+ elfcpp::DW_CFA_advance_loc + 4,
elfcpp::DW_CFA_restore_extended, 65
};
@@ -4575,9 +4591,20 @@ static const unsigned char glink_eh_fram
0, 0, 0, 0, // Replaced with offset to .glink.
0, 0, 0, 0, // Replaced with size of .glink.
0, // Augmentation size.
- elfcpp::DW_CFA_advance_loc + 1,
+ elfcpp::DW_CFA_advance_loc + 2,
elfcpp::DW_CFA_register, 65, 0,
- elfcpp::DW_CFA_advance_loc + 7,
+ elfcpp::DW_CFA_advance_loc + 2,
+ elfcpp::DW_CFA_restore_extended, 65
+};
+
+static const unsigned char glink_eh_frame_fde_64v2_localentry0[] =
+{
+ 0, 0, 0, 0, // Replaced with offset to .glink.
+ 0, 0, 0, 0, // Replaced with size of .glink.
+ 0, // Augmentation size.
+ elfcpp::DW_CFA_advance_loc + 3,
+ elfcpp::DW_CFA_register, 65, 0,
+ elfcpp::DW_CFA_advance_loc + 2,
elfcpp::DW_CFA_restore_extended, 65
};
@@ -4631,26 +4658,32 @@ class Stub_table : public Output_relaxed
struct Plt_stub_ent
{
Plt_stub_ent(unsigned int off, unsigned int indx)
- : off_(off), indx_(indx), iter_(0), notoc_(0), r2save_(0), localentry0_(0)
+ : off_(off), indx_(indx), iter_(0), notoc_(0), toc_(0),
+ r2save_(0), localentry0_(0), tocoff_(0)
{ }
unsigned int off_;
- unsigned int indx_ : 28;
+ unsigned int indx_;
unsigned int iter_ : 1;
unsigned int notoc_ : 1;
+ unsigned int toc_ : 1;
unsigned int r2save_ : 1;
unsigned int localentry0_ : 1;
+ unsigned int tocoff_ : 8;
};
struct Branch_stub_ent
{
Branch_stub_ent(unsigned int off, bool notoc, bool save_res)
- : off_(off), iter_(false), notoc_(notoc), save_res_(save_res)
+ : off_(off), iter_(0), notoc_(notoc), toc_(0), save_res_(save_res),
+ tocoff_(0)
{ }
unsigned int off_;
- bool iter_;
- bool notoc_;
- bool save_res_;
+ unsigned int iter_ : 1;
+ unsigned int notoc_ : 1;
+ unsigned int toc_ : 1;
+ unsigned int save_res_ : 1;
+ unsigned int tocoff_ : 8;
};
typedef typename elfcpp::Elf_types<size>::Elf_Addr Address;
static const Address invalid_address = static_cast<Address>(0) - 1;
@@ -4898,7 +4931,7 @@ class Stub_table : public Output_relaxed
// Size of a given plt call stub.
unsigned int
- plt_call_size(typename Plt_stub_entries::const_iterator p) const;
+ plt_call_size(typename Plt_stub_entries::iterator p) const;
unsigned int
plt_call_align(unsigned int bytes) const
@@ -4909,16 +4942,14 @@ class Stub_table : public Output_relaxed
// Return long branch stub size.
unsigned int
- branch_stub_size(typename Branch_stub_entries::const_iterator p,
+ branch_stub_size(typename Branch_stub_entries::iterator p,
bool* need_lt);
- bool
- build_tls_opt_head(unsigned char** pp,
- typename Plt_stub_entries::const_iterator cs);
+ void
+ build_tls_opt_head(unsigned char** pp, bool save_lr);
- bool
- build_tls_opt_tail(unsigned char* p,
- typename Plt_stub_entries::const_iterator cs);
+ void
+ build_tls_opt_tail(unsigned char* p);
void
plt_error(const Plt_stub_key& p);
@@ -5083,15 +5114,22 @@ Stub_table<size, big_endian>::add_plt_ca
if (r_type == elfcpp::R_PPC64_REL24_NOTOC)
{
if (!p.second && !p.first->second.notoc_
- && !this->targ_->power10_stubs())
+ && (!this->targ_->power10_stubs()
+ || this->targ_->power10_stubs_auto()))
this->need_resize_ = true;
p.first->second.notoc_ = 1;
}
- else if (!tocsave && !p.first->second.localentry0_)
+ else
{
- if (!p.second && !p.first->second.r2save_)
+ if (!p.second && !p.first->second.toc_)
this->need_resize_ = true;
- p.first->second.r2save_ = 1;
+ p.first->second.toc_ = 1;
+ if (!tocsave && !p.first->second.localentry0_)
+ {
+ if (!p.second && !p.first->second.r2save_)
+ this->need_resize_ = true;
+ p.first->second.r2save_ = 1;
+ }
}
}
if (p.second || (this->resizing_ && !p.first->second.iter_))
@@ -5134,15 +5172,22 @@ Stub_table<size, big_endian>::add_plt_ca
if (r_type == elfcpp::R_PPC64_REL24_NOTOC)
{
if (!p.second && !p.first->second.notoc_
- && !this->targ_->power10_stubs())
+ && (!this->targ_->power10_stubs()
+ || this->targ_->power10_stubs_auto()))
this->need_resize_ = true;
p.first->second.notoc_ = 1;
}
- else if (!tocsave && !p.first->second.localentry0_)
+ else
{
- if (!p.second && !p.first->second.r2save_)
+ if (!p.second && !p.first->second.toc_)
this->need_resize_ = true;
- p.first->second.r2save_ = 1;
+ p.first->second.toc_ = 1;
+ if (!tocsave && !p.first->second.localentry0_)
+ {
+ if (!p.second && !p.first->second.r2save_)
+ this->need_resize_ = true;
+ p.first->second.r2save_ = 1;
+ }
}
}
if (p.second || (this->resizing_ && !p.first->second.iter_))
@@ -5231,11 +5276,18 @@ Stub_table<size, big_endian>::add_long_b
Branch_stub_ent ent(this->branch_size_, notoc, save_res);
std::pair<typename Branch_stub_entries::iterator, bool> p
= this->long_branch_stubs_.insert(std::make_pair(key, ent));
- if (notoc && !p.first->second.notoc_)
+ if (notoc)
{
- this->need_resize_ = true;
+ if (!p.second && !p.first->second.notoc_)
+ this->need_resize_ = true;
p.first->second.notoc_ = true;
}
+ else
+ {
+ if (!p.second && !p.first->second.toc_)
+ this->need_resize_ = true;
+ p.first->second.toc_ = true;
+ }
gold_assert(save_res == p.first->second.save_res_);
if (p.second || (this->resizing_ && !p.first->second.iter_))
{
@@ -5330,7 +5382,7 @@ Stub_table<size, big_endian>::add_eh_fra
if (!this->targ_->has_glink())
return;
- typedef typename Plt_stub_entries::const_iterator plt_iter;
+ typedef typename Plt_stub_entries::iterator plt_iter;
std::vector<plt_iter> calls;
if (!this->plt_call_stubs_.empty())
for (plt_iter cs = this->plt_call_stubs_.begin();
@@ -5491,7 +5543,8 @@ class Output_data_glink : public Output_
{
if (size == 64)
return (8
- + (this->targ_->abiversion() < 2 ? 11 * 4 : 14 * 4));
+ + (this->targ_->abiversion() < 2 ? 11 * 4
+ : this->targ_->has_localentry0() ? 14 * 4 : 13 * 4));
return 16 * 4;
}
@@ -5534,6 +5587,12 @@ Output_data_glink<size, big_endian>::add
sizeof (Eh_cie<64>::eh_frame_cie),
glink_eh_frame_fde_64v1,
sizeof (glink_eh_frame_fde_64v1));
+ else if (this->targ_->has_localentry0())
+ layout->add_eh_frame_for_plt(this,
+ Eh_cie<64>::eh_frame_cie,
+ sizeof (Eh_cie<64>::eh_frame_cie),
+ glink_eh_frame_fde_64v2_localentry0,
+ sizeof (glink_eh_frame_fde_64v2));
else
layout->add_eh_frame_for_plt(this,
Eh_cie<64>::eh_frame_cie,
@@ -5632,7 +5691,7 @@ Stub_table<size, big_endian>::define_stu
// output .symtab ordering depends on the order in which symbols
// are added to the linker symtab. We want reproducible output
// so must sort the call stub symbols.
- typedef typename Plt_stub_entries::const_iterator plt_iter;
+ typedef typename Plt_stub_entries::iterator plt_iter;
std::vector<plt_iter> sorted;
sorted.resize(this->plt_call_stubs_.size());
@@ -5676,7 +5735,7 @@ Stub_table<size, big_endian>::define_stu
}
}
- typedef typename Branch_stub_entries::const_iterator branch_iter;
+ typedef typename Branch_stub_entries::iterator branch_iter;
for (branch_iter bs = this->long_branch_stubs_.begin();
bs != this->long_branch_stubs_.end();
++bs)
@@ -5698,88 +5757,72 @@ Stub_table<size, big_endian>::define_stu
// Emit the start of a __tls_get_addr_opt plt call stub.
template<int size, bool big_endian>
-bool
-Stub_table<size, big_endian>::build_tls_opt_head(
- unsigned char** pp,
- typename Plt_stub_entries::const_iterator cs)
+void
+Stub_table<size, big_endian>::build_tls_opt_head(unsigned char** pp,
+ bool save_lr)
{
- if (this->targ_->is_tls_get_addr_opt(cs->first.sym_))
+ unsigned char* p = *pp;
+ if (size == 64)
{
- unsigned char* p = *pp;
- if (size == 64)
- {
- write_insn<big_endian>(p, ld_11_3 + 0);
- p += 4;
- write_insn<big_endian>(p, ld_12_3 + 8);
- p += 4;
- write_insn<big_endian>(p, mr_0_3);
- p += 4;
- write_insn<big_endian>(p, cmpdi_11_0);
- p += 4;
- write_insn<big_endian>(p, add_3_12_13);
- p += 4;
- write_insn<big_endian>(p, beqlr);
- p += 4;
- write_insn<big_endian>(p, mr_3_0);
- p += 4;
- if (cs->second.r2save_ && !cs->second.localentry0_)
- {
- write_insn<big_endian>(p, mflr_11);
- p += 4;
- write_insn<big_endian>(p, (std_11_1 + this->targ_->stk_linker()));
- p += 4;
- }
- }
- else
+ write_insn<big_endian>(p, ld_11_3 + 0);
+ p += 4;
+ write_insn<big_endian>(p, ld_12_3 + 8);
+ p += 4;
+ write_insn<big_endian>(p, mr_0_3);
+ p += 4;
+ write_insn<big_endian>(p, cmpdi_11_0);
+ p += 4;
+ write_insn<big_endian>(p, add_3_12_13);
+ p += 4;
+ write_insn<big_endian>(p, beqlr);
+ p += 4;
+ write_insn<big_endian>(p, mr_3_0);
+ p += 4;
+ if (save_lr)
{
- write_insn<big_endian>(p, lwz_11_3 + 0);
- p += 4;
- write_insn<big_endian>(p, lwz_12_3 + 4);
+ write_insn<big_endian>(p, mflr_11);
p += 4;
- write_insn<big_endian>(p, mr_0_3);
- p += 4;
- write_insn<big_endian>(p, cmpwi_11_0);
- p += 4;
- write_insn<big_endian>(p, add_3_12_2);
- p += 4;
- write_insn<big_endian>(p, beqlr);
- p += 4;
- write_insn<big_endian>(p, mr_3_0);
- p += 4;
- write_insn<big_endian>(p, nop);
+ write_insn<big_endian>(p, (std_11_1 + this->targ_->stk_linker()));
p += 4;
}
- *pp = p;
- return true;
}
- return false;
-}
-
-// Emit the tail of a __tls_get_addr_opt plt call stub.
-
-template<int size, bool big_endian>
-bool
-Stub_table<size, big_endian>::build_tls_opt_tail(
- unsigned char* p,
- typename Plt_stub_entries::const_iterator cs)
-{
- if (size == 64
- && cs->second.r2save_
- && !cs->second.localentry0_
- && this->targ_->is_tls_get_addr_opt(cs->first.sym_))
+ else
{
- write_insn<big_endian>(p, bctrl);
+ write_insn<big_endian>(p, lwz_11_3 + 0);
p += 4;
- write_insn<big_endian>(p, ld_2_1 + this->targ_->stk_toc());
+ write_insn<big_endian>(p, lwz_12_3 + 4);
p += 4;
- write_insn<big_endian>(p, ld_11_1 + this->targ_->stk_linker());
+ write_insn<big_endian>(p, mr_0_3);
p += 4;
- write_insn<big_endian>(p, mtlr_11);
+ write_insn<big_endian>(p, cmpwi_11_0);
+ p += 4;
+ write_insn<big_endian>(p, add_3_12_2);
+ p += 4;
+ write_insn<big_endian>(p, beqlr);
+ p += 4;
+ write_insn<big_endian>(p, mr_3_0);
+ p += 4;
+ write_insn<big_endian>(p, nop);
p += 4;
- write_insn<big_endian>(p, blr);
- return true;
}
- return false;
+ *pp = p;
+}
+
+// Emit the tail of a __tls_get_addr_opt plt call stub.
+
+template<int size, bool big_endian>
+void
+Stub_table<size, big_endian>::build_tls_opt_tail(unsigned char* p)
+{
+ write_insn<big_endian>(p, bctrl);
+ p += 4;
+ write_insn<big_endian>(p, ld_2_1 + this->targ_->stk_toc());
+ p += 4;
+ write_insn<big_endian>(p, ld_11_1 + this->targ_->stk_linker());
+ p += 4;
+ write_insn<big_endian>(p, mtlr_11);
+ p += 4;
+ write_insn<big_endian>(p, blr);
}
// Emit pc-relative plt call stub code.
@@ -5949,7 +5992,7 @@ build_notoc_offset(unsigned char* p, uin
template<int size, bool big_endian>
unsigned int
Stub_table<size, big_endian>::plt_call_size(
- typename Plt_stub_entries::const_iterator p) const
+ typename Plt_stub_entries::iterator p) const
{
if (size == 32)
{
@@ -5961,77 +6004,122 @@ Stub_table<size, big_endian>::plt_call_s
const Output_data_plt_powerpc<size, big_endian>* plt;
uint64_t plt_addr = this->plt_off(p, &plt);
plt_addr += plt->address();
- unsigned int bytes = 0;
- const Symbol* gsym = p->first.sym_;
- if (this->targ_->is_tls_get_addr_opt(gsym))
+ if (this->targ_->power10_stubs()
+ && this->targ_->power10_stubs_auto())
{
- if (p->second.r2save_ && !p->second.localentry0_)
- bytes = 13 * 4;
- else
- bytes = 7 * 4;
+ unsigned int bytes = 0;
+ if (p->second.notoc_)
+ {
+ if (this->targ_->is_tls_get_addr_opt(p->first.sym_))
+ bytes = 7 * 4;
+ uint64_t from = this->stub_address() + p->second.off_ + bytes;
+ uint64_t odd = from & 4;
+ uint64_t off = plt_addr - from;
+ if (off - odd + (1ULL << 33) < 1ULL << 34)
+ bytes += odd + 4 * 4;
+ else if (off - (8 - odd) + (0x20002ULL << 32) < 0x40004ULL << 32)
+ bytes += 7 * 4;
+ else
+ bytes += 8 * 4;
+ bytes = this->plt_call_align(bytes);
+ }
+ unsigned int tail = 0;
+ if (p->second.toc_)
+ {
+ p->second.tocoff_ = bytes;
+ if (this->targ_->is_tls_get_addr_opt(p->first.sym_))
+ {
+ bytes += 7 * 4;
+ if (p->second.r2save_ && !p->second.localentry0_)
+ {
+ bytes += 2 * 4;
+ tail = 4 * 4;
+ }
+ }
+ if (p->second.r2save_)
+ bytes += 4;
+ uint64_t got_addr
+ = this->targ_->got_section()->output_section()->address();
+ const Powerpc_relobj<size, big_endian>* ppcobj = static_cast
+ <const Powerpc_relobj<size, big_endian>*>(p->first.object_);
+ got_addr += ppcobj->toc_base_offset();
+ uint64_t off = plt_addr - got_addr;
+ bytes += 3 * 4 + 4 * (ha(off) != 0);
+ }
+ return bytes + tail;
}
-
- if (p->second.r2save_)
- bytes += 4;
-
- if (this->targ_->power10_stubs())
+ else
{
- uint64_t from = this->stub_address() + p->second.off_ + bytes;
- if (bytes > 8 * 4)
- from -= 4 * 4;
- uint64_t odd = from & 4;
- uint64_t off = plt_addr - from;
- if (off - odd + (1ULL << 33) < 1ULL << 34)
- bytes += odd + 4 * 4;
- else if (off - (8 - odd) + (0x20002ULL << 32) < 0x40004ULL << 32)
- bytes += 7 * 4;
- else
- bytes += 8 * 4;
- return bytes;
- }
+ unsigned int bytes = 0;
+ unsigned int tail = 0;
+ if (this->targ_->is_tls_get_addr_opt(p->first.sym_))
+ {
+ bytes = 7 * 4;
+ if (p->second.r2save_ && !p->second.localentry0_)
+ {
+ bytes = 9 * 4;
+ tail = 4 * 4;
+ }
+ }
- if (p->second.notoc_)
- {
- uint64_t from = this->stub_address() + p->second.off_ + bytes + 2 * 4;
- if (bytes > 32)
- from -= 4 * 4;
- uint64_t off = plt_addr - from;
- if (off + 0x8000 < 0x10000)
- bytes += 7 * 4;
- else if (off + 0x80008000ULL < 0x100000000ULL)
- bytes += 8 * 4;
- else
+ if (p->second.r2save_)
+ bytes += 4;
+
+ if (this->targ_->power10_stubs())
{
- bytes += 8 * 4;
- if (off + 0x800000000000ULL >= 0x1000000000000ULL
- && ((off >> 32) & 0xffff) != 0)
- bytes += 4;
- if (((off >> 32) & 0xffffffffULL) != 0)
- bytes += 4;
- if (hi(off) != 0)
- bytes += 4;
- if (l(off) != 0)
- bytes += 4;
+ uint64_t from = this->stub_address() + p->second.off_ + bytes;
+ uint64_t odd = from & 4;
+ uint64_t off = plt_addr - from;
+ if (off - odd + (1ULL << 33) < 1ULL << 34)
+ bytes += odd + 4 * 4;
+ else if (off - (8 - odd) + (0x20002ULL << 32) < 0x40004ULL << 32)
+ bytes += 7 * 4;
+ else
+ bytes += 8 * 4;
+ return bytes + tail;
}
- return bytes;
- }
- uint64_t got_addr = this->targ_->got_section()->output_section()->address();
- const Powerpc_relobj<size, big_endian>* ppcobj = static_cast
- <const Powerpc_relobj<size, big_endian>*>(p->first.object_);
- got_addr += ppcobj->toc_base_offset();
- uint64_t off = plt_addr - got_addr;
- bytes += 3 * 4 + 4 * (ha(off) != 0);
- if (this->targ_->abiversion() < 2)
- {
- bool static_chain = parameters->options().plt_static_chain();
- bool thread_safe = this->targ_->plt_thread_safe();
- bytes += (4
- + 4 * static_chain
- + 8 * thread_safe
- + 4 * (ha(off + 8 + 8 * static_chain) != ha(off)));
+ if (p->second.notoc_)
+ {
+ uint64_t from = this->stub_address() + p->second.off_ + bytes + 2 * 4;
+ uint64_t off = plt_addr - from;
+ if (off + 0x8000 < 0x10000)
+ bytes += 7 * 4;
+ else if (off + 0x80008000ULL < 0x100000000ULL)
+ bytes += 8 * 4;
+ else
+ {
+ bytes += 8 * 4;
+ if (off + 0x800000000000ULL >= 0x1000000000000ULL
+ && ((off >> 32) & 0xffff) != 0)
+ bytes += 4;
+ if (((off >> 32) & 0xffffffffULL) != 0)
+ bytes += 4;
+ if (hi(off) != 0)
+ bytes += 4;
+ if (l(off) != 0)
+ bytes += 4;
+ }
+ return bytes + tail;
+ }
+
+ uint64_t got_addr = this->targ_->got_section()->output_section()->address();
+ const Powerpc_relobj<size, big_endian>* ppcobj = static_cast
+ <const Powerpc_relobj<size, big_endian>*>(p->first.object_);
+ got_addr += ppcobj->toc_base_offset();
+ uint64_t off = plt_addr - got_addr;
+ bytes += 3 * 4 + 4 * (ha(off) != 0);
+ if (this->targ_->abiversion() < 2)
+ {
+ bool static_chain = parameters->options().plt_static_chain();
+ bool thread_safe = this->targ_->plt_thread_safe();
+ bytes += (4
+ + 4 * static_chain
+ + 8 * thread_safe
+ + 4 * (ha(off + 8 + 8 * static_chain) != ha(off)));
+ }
+ return bytes + tail;
}
- return bytes;
}
// Return long branch stub size.
@@ -6039,7 +6127,7 @@ Stub_table<size, big_endian>::plt_call_s
template<int size, bool big_endian>
unsigned int
Stub_table<size, big_endian>::branch_stub_size(
- typename Branch_stub_entries::const_iterator p,
+ typename Branch_stub_entries::iterator p,
bool* need_lt)
{
Address loc = this->stub_address() + this->last_plt_size_ + p->second.off_;
@@ -6053,46 +6141,56 @@ Stub_table<size, big_endian>::branch_stu
}
uint64_t off = p->first.dest_ - loc;
+ unsigned int bytes = 0;
if (p->second.notoc_)
{
if (this->targ_->power10_stubs())
{
Address odd = loc & 4;
if (off + (1 << 25) < 2 << 25)
- return odd + 12;
- if (off - odd + (1ULL << 33) < 1ULL << 34)
- return odd + 16;
- if (off - (8 - odd) + (0x20002ULL << 32) < 0x40004ULL << 32)
- return 28;
- return 32;
- }
- off -= 8;
- if (off + 0x8000 < 0x10000)
- return 24;
- if (off + 0x80008000ULL < 0x100000000ULL)
- {
- if (off + 24 + (1 << 25) < 2 << 25)
- return 28;
- return 32;
- }
- unsigned int bytes = 32;
- if (off + 0x800000000000ULL >= 0x1000000000000ULL
- && ((off >> 32) & 0xffff) != 0)
- bytes += 4;
- if (((off >> 32) & 0xffffffffULL) != 0)
- bytes += 4;
- if (hi(off) != 0)
- bytes += 4;
- if (l(off) != 0)
- bytes += 4;
- return bytes;
+ bytes = odd + 12;
+ else if (off - odd + (1ULL << 33) < 1ULL << 34)
+ bytes = odd + 16;
+ else if (off - (8 - odd) + (0x20002ULL << 32) < 0x40004ULL << 32)
+ bytes = 28;
+ else
+ bytes = 32;
+ if (!(p->second.toc_ && this->targ_->power10_stubs_auto()))
+ return bytes;
+ p->second.tocoff_ = bytes;
+ }
+ else
+ {
+ off -= 8;
+ if (off + 0x8000 < 0x10000)
+ return 24;
+ if (off + 0x80008000ULL < 0x100000000ULL)
+ {
+ if (off + 24 + (1 << 25) < 2 << 25)
+ return 28;
+ return 32;
+ }
+
+ bytes = 32;
+ if (off + 0x800000000000ULL >= 0x1000000000000ULL
+ && ((off >> 32) & 0xffff) != 0)
+ bytes += 4;
+ if (((off >> 32) & 0xffffffffULL) != 0)
+ bytes += 4;
+ if (hi(off) != 0)
+ bytes += 4;
+ if (l(off) != 0)
+ bytes += 4;
+ return bytes;
+ }
}
if (off + (1 << 25) < 2 << 25)
- return 4;
- if (!this->targ_->power10_stubs())
+ return bytes + 4;
+ if (!this->targ_->power10_stubs()
+ || (p->second.toc_ && this->targ_->power10_stubs_auto()))
*need_lt = true;
- return 16;
+ return bytes + 16;
}
template<int size, bool big_endian>
@@ -6128,6 +6226,10 @@ Stub_table<size, big_endian>::do_write(O
if (size == 64
&& this->targ_->power10_stubs())
{
+ const Output_data_got_powerpc<size, big_endian>* got
+ = this->targ_->got_section();
+ Address got_os_addr = got->output_section()->address();
+
if (!this->plt_call_stubs_.empty())
{
// Write out plt call stubs.
@@ -6137,22 +6239,94 @@ Stub_table<size, big_endian>::do_write(O
++cs)
{
p = oview + cs->second.off_;
- this->build_tls_opt_head(&p, cs);
- if (cs->second.r2save_)
- {
- write_insn<big_endian>(p, std_2_1 + this->targ_->stk_toc());
- p += 4;
- }
const Output_data_plt_powerpc<size, big_endian>* plt;
Address pltoff = this->plt_off(cs, &plt);
Address plt_addr = pltoff + plt->address();
- Address from = this->stub_address() + (p - oview);
- Address delta = plt_addr - from;
- p = build_power10_offset<big_endian>(p, delta, from & 4, true);
- write_insn<big_endian>(p, mtctr_12);
- p += 4;
- if (!this->build_tls_opt_tail(p, cs))
- write_insn<big_endian>(p, bctr);
+ if (this->targ_->power10_stubs_auto())
+ {
+ if (cs->second.notoc_)
+ {
+ if (this->targ_->is_tls_get_addr_opt(cs->first.sym_))
+ this->build_tls_opt_head(&p, false);
+ Address from = this->stub_address() + (p - oview);
+ Address delta = plt_addr - from;
+ p = build_power10_offset<big_endian>(p, delta, from & 4,
+ true);
+ write_insn<big_endian>(p, mtctr_12);
+ p += 4;
+ write_insn<big_endian>(p, bctr);
+ p += 4;
+ p = oview + this->plt_call_align(p - oview);
+ }
+ if (cs->second.toc_)
+ {
+ if (this->targ_->is_tls_get_addr_opt(cs->first.sym_))
+ {
+ bool save_lr
+ = cs->second.r2save_ && !cs->second.localentry0_;
+ this->build_tls_opt_head(&p, save_lr);
+ }
+ const Powerpc_relobj<size, big_endian>* ppcobj
+ = static_cast<const Powerpc_relobj<size, big_endian>*>(
+ cs->first.object_);
+ Address got_addr = got_os_addr + ppcobj->toc_base_offset();
+ Address off = plt_addr - got_addr;
+
+ if (off + 0x80008000 > 0xffffffff || (off & 7) != 0)
+ this->plt_error(cs->first);
+
+ if (cs->second.r2save_)
+ {
+ write_insn<big_endian>(p, std_2_1 + this->targ_->stk_toc());
+ p += 4;
+ }
+ if (ha(off) != 0)
+ {
+ write_insn<big_endian>(p, addis_12_2 + ha(off));
+ p += 4;
+ write_insn<big_endian>(p, ld_12_12 + l(off));
+ p += 4;
+ }
+ else
+ {
+ write_insn<big_endian>(p, ld_12_2 + l(off));
+ p += 4;
+ }
+ write_insn<big_endian>(p, mtctr_12);
+ p += 4;
+ if (cs->second.r2save_
+ && !cs->second.localentry0_
+ && this->targ_->is_tls_get_addr_opt(cs->first.sym_))
+ this->build_tls_opt_tail(p);
+ else
+ write_insn<big_endian>(p, bctr);
+ }
+ }
+ else
+ {
+ if (this->targ_->is_tls_get_addr_opt(cs->first.sym_))
+ {
+ bool save_lr
+ = cs->second.r2save_ && !cs->second.localentry0_;
+ this->build_tls_opt_head(&p, save_lr);
+ }
+ if (cs->second.r2save_)
+ {
+ write_insn<big_endian>(p, std_2_1 + this->targ_->stk_toc());
+ p += 4;
+ }
+ Address from = this->stub_address() + (p - oview);
+ Address delta = plt_addr - from;
+ p = build_power10_offset<big_endian>(p, delta, from & 4, true);
+ write_insn<big_endian>(p, mtctr_12);
+ p += 4;
+ if (cs->second.r2save_
+ && !cs->second.localentry0_
+ && this->targ_->is_tls_get_addr_opt(cs->first.sym_))
+ this->build_tls_opt_tail(p);
+ else
+ write_insn<big_endian>(p, bctr);
+ }
}
}
@@ -6168,19 +6342,76 @@ Stub_table<size, big_endian>::do_write(O
p = oview + off;
Address loc = this->stub_address() + off;
Address delta = bs->first.dest_ - loc;
- if (bs->second.notoc_ || delta + (1 << 25) >= 2 << 25)
+ if (this->targ_->power10_stubs_auto())
{
- unsigned char* startp = p;
- p = build_power10_offset<big_endian>(p, delta, loc & 4, false);
- delta -= p - startp;
+ if (bs->second.notoc_)
+ {
+ unsigned char* startp = p;
+ p = build_power10_offset<big_endian>(p, delta,
+ loc & 4, false);
+ delta -= p - startp;
+ startp = p;
+ if (delta + (1 << 25) < 2 << 25)
+ write_insn<big_endian>(p, b | (delta & 0x3fffffc));
+ else
+ {
+ write_insn<big_endian>(p, mtctr_12);
+ p += 4;
+ write_insn<big_endian>(p, bctr);
+ }
+ p += 4;
+ delta -= p - startp;
+ }
+ if (bs->second.toc_)
+ {
+ if (delta + (1 << 25) >= 2 << 25)
+ {
+ Address brlt_addr
+ = this->targ_->find_branch_lookup_table(bs->first.dest_);
+ gold_assert(brlt_addr != invalid_address);
+ brlt_addr += this->targ_->brlt_section()->address();
+ Address got_addr = got_os_addr + bs->first.toc_base_off_;
+ Address brltoff = brlt_addr - got_addr;
+ if (ha(brltoff) == 0)
+ {
+ write_insn<big_endian>(p, ld_12_2 + l(brltoff));
+ p += 4;
+ }
+ else
+ {
+ write_insn<big_endian>(p, addis_12_2 + ha(brltoff));
+ p += 4;
+ write_insn<big_endian>(p, ld_12_12 + l(brltoff));
+ p += 4;
+ }
+ }
+ if (delta + (1 << 25) < 2 << 25)
+ write_insn<big_endian>(p, b | (delta & 0x3fffffc));
+ else
+ {
+ write_insn<big_endian>(p, mtctr_12);
+ p += 4;
+ write_insn<big_endian>(p, bctr);
+ }
+ }
}
- if (delta + (1 << 25) < 2 << 25)
- write_insn<big_endian>(p, b | (delta & 0x3fffffc));
else
{
- write_insn<big_endian>(p, mtctr_12);
- p += 4;
- write_insn<big_endian>(p, bctr);
+ if (bs->second.notoc_ || delta + (1 << 25) >= 2 << 25)
+ {
+ unsigned char* startp = p;
+ p = build_power10_offset<big_endian>(p, delta,
+ loc & 4, false);
+ delta -= p - startp;
+ }
+ if (delta + (1 << 25) < 2 << 25)
+ write_insn<big_endian>(p, b | (delta & 0x3fffffc));
+ else
+ {
+ write_insn<big_endian>(p, mtctr_12);
+ p += 4;
+ write_insn<big_endian>(p, bctr);
+ }
}
}
}
@@ -6204,7 +6435,11 @@ Stub_table<size, big_endian>::do_write(O
Address plt_addr = pltoff + plt->address();
p = oview + cs->second.off_;
- this->build_tls_opt_head(&p, cs);
+ if (this->targ_->is_tls_get_addr_opt(cs->first.sym_))
+ {
+ bool save_lr = cs->second.r2save_ && !cs->second.localentry0_;
+ this->build_tls_opt_head(&p, save_lr);
+ }
if (cs->second.r2save_)
{
write_insn<big_endian>(p, std_2_1 + this->targ_->stk_toc());
@@ -6241,7 +6476,11 @@ Stub_table<size, big_endian>::do_write(O
}
write_insn<big_endian>(p, mtctr_12);
p += 4;
- if (!this->build_tls_opt_tail(p, cs))
+ if (cs->second.r2save_
+ && !cs->second.localentry0_
+ && this->targ_->is_tls_get_addr_opt(cs->first.sym_))
+ this->build_tls_opt_tail(p);
+ else
write_insn<big_endian>(p, bctr);
}
}
@@ -6292,8 +6531,12 @@ Stub_table<size, big_endian>::do_write(O
}
p = oview + cs->second.off_;
- if (this->build_tls_opt_head(&p, cs))
- use_fake_dep = thread_safe;
+ if (this->targ_->is_tls_get_addr_opt(cs->first.sym_))
+ {
+ bool save_lr = cs->second.r2save_ && !cs->second.localentry0_;
+ this->build_tls_opt_head(&p, save_lr);
+ use_fake_dep = thread_safe;
+ }
if (cs->second.r2save_)
{
write_insn<big_endian>(p, std_2_1 + this->targ_->stk_toc());
@@ -6355,8 +6598,10 @@ Stub_table<size, big_endian>::do_write(O
write_insn<big_endian>(p, ld_2_2 + l(off + 8));
p += 4;
}
- if (this->build_tls_opt_tail(p, cs))
- ;
+ if (cs->second.r2save_
+ && !cs->second.localentry0_
+ && this->targ_->is_tls_get_addr_opt(cs->first.sym_))
+ this->build_tls_opt_tail(p);
else if (thread_safe && !use_fake_dep)
{
write_insn<big_endian>(p, cmpldi_2_0);
@@ -6437,7 +6682,8 @@ Stub_table<size, big_endian>::do_write(O
plt_addr += plt->address();
p = oview + cs->second.off_;
- this->build_tls_opt_head(&p, cs);
+ if (this->targ_->is_tls_get_addr_opt(cs->first.sym_))
+ this->build_tls_opt_head(&p, false);
if (parameters->options().output_is_position_independent())
{
Address got_addr;
@@ -6577,15 +6823,25 @@ Output_data_glink<size, big_endian>::do_
}
else
{
+ if (this->targ_->has_localentry0())
+ {
+ write_insn<big_endian>(p, std_2_1 + 24), p += 4;
+ }
write_insn<big_endian>(p, mflr_0), p += 4;
write_insn<big_endian>(p, bcl_20_31), p += 4;
write_insn<big_endian>(p, mflr_11), p += 4;
- write_insn<big_endian>(p, std_2_1 + 24), p += 4;
- write_insn<big_endian>(p, ld_2_11 + l(-16)), p += 4;
write_insn<big_endian>(p, mtlr_0), p += 4;
+ if (this->targ_->has_localentry0())
+ {
+ write_insn<big_endian>(p, ld_0_11 + l(-20)), p += 4;
+ }
+ else
+ {
+ write_insn<big_endian>(p, ld_0_11 + l(-16)), p += 4;
+ }
write_insn<big_endian>(p, sub_12_12_11), p += 4;
- write_insn<big_endian>(p, add_11_2_11), p += 4;
- write_insn<big_endian>(p, addi_0_12 + l(-48)), p += 4;
+ write_insn<big_endian>(p, add_11_0_11), p += 4;
+ write_insn<big_endian>(p, addi_0_12 + l(-44)), p += 4;
write_insn<big_endian>(p, ld_12_11 + 0), p += 4;
write_insn<big_endian>(p, srdi_0_0_2), p += 4;
write_insn<big_endian>(p, mtctr_12), p += 4;
@@ -8230,7 +8486,7 @@ Target_powerpc<size, big_endian>::Scan::
case elfcpp::R_PPC64_GOT_TLSLD_PCREL34:
case elfcpp::R_PPC64_GOT_DTPREL_PCREL34:
case elfcpp::R_PPC64_GOT_TPREL_PCREL34:
- target->set_power10_stubs();
+ target->set_power10_relocs();
break;
default:
break;
@@ -9027,7 +9283,7 @@ Target_powerpc<size, big_endian>::Scan::
case elfcpp::R_PPC64_GOT_TLSLD_PCREL34:
case elfcpp::R_PPC64_GOT_DTPREL_PCREL34:
case elfcpp::R_PPC64_GOT_TPREL_PCREL34:
- target->set_power10_stubs();
+ target->set_power10_relocs();
break;
default:
break;
@@ -9369,6 +9625,13 @@ Target_powerpc<size, big_endian>::scan_r
needs_special_offset_handling,
local_symbol_count,
plocal_symbols);
+
+ if (this->plt_localentry0_ && this->power10_relocs_)
+ {
+ gold_warning(_("--plt-localentry is incompatible with "
+ "power10 pc-relative code"));
+ this->plt_localentry0_ = false;
+ }
}
// Functor class for processing the global symbol table.
@@ -10176,18 +10439,28 @@ Target_powerpc<size, big_endian>::Reloca
elfcpp::Shdr<size, big_endian> shdr(relinfo->reloc_shdr);
size_t reloc_count = shdr.get_sh_size() / reloc_size;
if (size == 64
+ && r_type != elfcpp::R_PPC64_REL24_NOTOC)
+ value += ent->tocoff_;
+ if (size == 64
&& ent->r2save_
- && r_type == elfcpp::R_PPC64_REL24_NOTOC)
- value += 4;
- else if (size == 64
- && ent->r2save_
- && relnum < reloc_count - 1)
+ && !(gsym != NULL
+ && target->is_tls_get_addr_opt(gsym)))
{
- Reltype next_rela(preloc + reloc_size);
- if (elfcpp::elf_r_type<size>(next_rela.get_r_info())
- == elfcpp::R_PPC64_TOCSAVE
- && next_rela.get_r_offset() == rela.get_r_offset() + 4)
- value += 4;
+ if (r_type == elfcpp::R_PPC64_REL24_NOTOC)
+ {
+ if (!(target->power10_stubs()
+ && target->power10_stubs_auto()))
+ value += 4;
+ }
+ else if (relnum < reloc_count - 1)
+ {
+ Reltype next_rela(preloc + reloc_size);
+ if (elfcpp::elf_r_type<size>(next_rela.get_r_info())
+ == elfcpp::R_PPC64_TOCSAVE
+ && (next_rela.get_r_offset()
+ == rela.get_r_offset() + 4))
+ value += 4;
+ }
}
localentry0 = ent->localentry0_;
has_stub_value = true;
@@ -10795,8 +11068,14 @@ Target_powerpc<size, big_endian>::Reloca
value = (value - target->savres_section()->address()
+ stub_table->branch_size());
else
- value = (stub_table->stub_address() + stub_table->plt_size()
- + ent->off_);
+ {
+ value = (stub_table->stub_address()
+ + stub_table->plt_size()
+ + ent->off_);
+ if (size == 64
+ && r_type != elfcpp::R_PPC64_REL24_NOTOC)
+ value += ent->tocoff_;
+ }
has_stub_value = true;
}
}
diff -rup binutils.orig/ld/emultempl/ppc64elf.em binutils-2.35.1/ld/emultempl/ppc64elf.em
--- binutils.orig/ld/emultempl/ppc64elf.em 2020-10-08 13:50:30.728911588 +0100
+++ binutils-2.35.1/ld/emultempl/ppc64elf.em 2020-10-08 13:55:41.516954722 +0100
@@ -32,13 +32,15 @@ fragment <<EOF
static asection *ppc_add_stub_section (const char *, asection *);
static void ppc_layout_sections_again (void);
+static void ppc_edit (void);
static struct ppc64_elf_params params = { NULL,
&ppc_add_stub_section,
&ppc_layout_sections_again,
+ &ppc_edit,
1, -1, -1, 0,
${DEFAULT_PLT_STATIC_CHAIN-0}, -1, 5,
- -1, -1, 0, -1, -1, 0};
+ -1, -1, 0, 0, -1, -1, 0};
/* Fake input file for stubs. */
static lang_input_statement_type *stub_file;
@@ -294,7 +296,19 @@ ppc_before_allocation (void)
einfo (_("%X%P: inline PLT: %E\n"));
}
- if (ppc64_elf_tls_setup (&link_info)
+ if (!ppc64_elf_tls_setup (&link_info))
+ einfo (_("%X%P: TLS problem %E\n"));
+ }
+
+ gld${EMULATION_NAME}_before_allocation ();
+}
+
+static void
+ppc_edit (void)
+{
+ if (stub_file != NULL)
+ {
+ if (elf_hash_table (&link_info)->tls_sec != NULL
&& !no_tls_opt)
{
/* Size the sections. This is premature, but we want to know the
@@ -323,8 +337,6 @@ ppc_before_allocation (void)
sort_toc_sections (&toc_os->children, NULL, NULL);
}
}
-
- gld${EMULATION_NAME}_before_allocation ();
}
struct hook_stub_info
@@ -686,6 +698,7 @@ enum ppc64_opt
OPTION_NO_PLT_LOCALENTRY,
OPTION_POWER10_STUBS,
OPTION_NO_POWER10_STUBS,
+ OPTION_NO_PCREL_OPT,
OPTION_STUBSYMS,
OPTION_NO_STUBSYMS,
OPTION_SAVRES,
@@ -717,6 +730,7 @@ PARSE_AND_LIST_LONGOPTS=${PARSE_AND_LIST
{ "plt-localentry", optional_argument, NULL, OPTION_PLT_LOCALENTRY },
{ "no-plt-localentry", no_argument, NULL, OPTION_NO_PLT_LOCALENTRY },
{ "power10-stubs", optional_argument, NULL, OPTION_POWER10_STUBS },
+ { "no-pcrel-optimize", no_argument, NULL, OPTION_NO_PCREL_OPT },
{ "no-power10-stubs", no_argument, NULL, OPTION_NO_POWER10_STUBS },
{ "emit-stub-syms", no_argument, NULL, OPTION_STUBSYMS },
{ "no-emit-stub-syms", no_argument, NULL, OPTION_NO_STUBSYMS },
@@ -776,6 +790,9 @@ PARSE_AND_LIST_OPTIONS=${PARSE_AND_LIST_
--power10-stubs [=auto] Use Power10 PLT call stubs (default auto)\n"
));
fprintf (file, _("\
+ --no-pcrel-optimize Don'\''t perform R_PPC64_PCREL_OPT optimization\n"
+ ));
+ fprintf (file, _("\
--no-power10-stubs Don'\''t use Power10 PLT call stubs\n"
));
fprintf (file, _("\
@@ -909,6 +926,10 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LI
params.power10_stubs = 0;
break;
+ case OPTION_NO_PCREL_OPT:
+ params.no_pcrel_opt = 1;
+ break;
+
case OPTION_STUBSYMS:
params.emit_stub_syms = 1;
break;
@@ -985,6 +1006,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LI
params.no_multi_toc = 1;
no_toc_sort = 1;
params.plt_static_chain = 1;
+ params.no_pcrel_opt = 1;
return FALSE;
'
diff -rup binutils.orig/ld/testsuite/ld-powerpc/elfv2so.d binutils-2.35.1/ld/testsuite/ld-powerpc/elfv2so.d
--- binutils.orig/ld/testsuite/ld-powerpc/elfv2so.d 2020-10-08 13:50:30.844911231 +0100
+++ binutils-2.35.1/ld/testsuite/ld-powerpc/elfv2so.d 2020-10-08 13:51:12.622782597 +0100
@@ -74,12 +74,11 @@ Disassembly of section \.text:
.*: (7c 08 02 a6|a6 02 08 7c) mflr r0
.*: (42 9f 00 05|05 00 9f 42) bcl .*
.*: (7d 68 02 a6|a6 02 68 7d) mflr r11
-.*: (18 00 41 f8|f8 41 00 18) std r2,24\(r1\)
-.*: (e8 4b ff f0|f0 ff 4b e8) ld r2,-16\(r11\)
.*: (7c 08 03 a6|a6 03 08 7c) mtlr r0
+.*: (e8 0b ff f0|f0 ff 0b e8) ld r0,-16\(r11\)
.*: (7d 8b 60 50|50 60 8b 7d) subf r12,r11,r12
-.*: (7d 62 5a 14|14 5a 62 7d) add r11,r2,r11
-.*: (38 0c ff d0|d0 ff 0c 38) addi r0,r12,-48
+.*: (7d 60 5a 14|14 5a 60 7d) add r11,r0,r11
+.*: (38 0c ff d4|d4 ff 0c 38) addi r0,r12,-44
.*: (e9 8b 00 00|00 00 8b e9) ld r12,0\(r11\)
.*: (78 00 f0 82|82 f0 00 78) rldicl r0,r0,62,2
.*: (7d 89 03 a6|a6 03 89 7d) mtctr r12
@@ -87,16 +86,16 @@ Disassembly of section \.text:
.*: (4e 80 04 20|20 04 80 4e) bctr
.* <f5@plt>:
-.*: (4b ff ff c8|c8 ff ff 4b) b .* <__glink_PLTresolve>
+.*: (4b ff ff cc|cc ff ff 4b) b .* <__glink_PLTresolve>
.* <f3@plt>:
-.*: (4b ff ff c4|c4 ff ff 4b) b .* <__glink_PLTresolve>
+.*: (4b ff ff c8|c8 ff ff 4b) b .* <__glink_PLTresolve>
.* <f2@plt>:
-.*: (4b ff ff c0|c0 ff ff 4b) b .* <__glink_PLTresolve>
+.*: (4b ff ff c4|c4 ff ff 4b) b .* <__glink_PLTresolve>
.* <f4@plt>:
-.*: (4b ff ff bc|bc ff ff 4b) b .* <__glink_PLTresolve>
+.*: (4b ff ff c0|c0 ff ff 4b) b .* <__glink_PLTresolve>
.* <f1@plt>:
-.*: (4b ff ff b8|b8 ff ff 4b) b .* <__glink_PLTresolve>
+.*: (4b ff ff bc|bc ff ff 4b) b .* <__glink_PLTresolve>
diff -rup binutils.orig/ld/testsuite/ld-powerpc/notoc2.d binutils-2.35.1/ld/testsuite/ld-powerpc/notoc2.d
--- binutils.orig/ld/testsuite/ld-powerpc/notoc2.d 2020-10-08 13:50:30.846911225 +0100
+++ binutils-2.35.1/ld/testsuite/ld-powerpc/notoc2.d 2020-10-08 13:51:12.622782597 +0100
@@ -22,8 +22,8 @@ Disassembly of section \.text:
.*: (39 80 ff ff|ff ff 80 39)
.*: (06 10 00 00|00 00 10 06) pla r12,0
.*: (39 80 00 00|00 00 80 39)
-.*: (06 10 00 00|00 00 10 06) pla r3,92
-.*: (38 60 00 5c|5c 00 60 38)
+.*: (06 10 00 00|00 00 10 06) pla r3,88
+.*: (38 60 00 58|58 00 60 38)
.*: (4b ff ff 99|99 ff ff 4b) bl .* <.*\.plt_call\.puts>
.*: (60 00 00 00|00 00 00 60) nop
#pass
diff -rup binutils.orig/ld/testsuite/ld-powerpc/tlsdesc.wf binutils-2.35.1/ld/testsuite/ld-powerpc/tlsdesc.wf
--- binutils.orig/ld/testsuite/ld-powerpc/tlsdesc.wf 2020-10-08 13:50:30.848911219 +0100
+++ binutils-2.35.1/ld/testsuite/ld-powerpc/tlsdesc.wf 2020-10-08 13:51:12.622782597 +0100
@@ -38,9 +38,9 @@ Contents of the \.eh_frame section:
DW_CFA_nop
0+4c 0+14 0+50 FDE cie=0+ pc=0+2f8\.\.0+32c
- DW_CFA_advance_loc: 4 to 0+2fc
+ DW_CFA_advance_loc: 8 to 0+300
DW_CFA_register: r65 in r12
- DW_CFA_advance_loc: 20 to 0+310
+ DW_CFA_advance_loc: 16 to 0+310
DW_CFA_restore_extended: r65
0+64 0+10 0+68 FDE cie=0+ pc=0+2e0\.\.0+2ec
diff -rup binutils.orig/ld/testsuite/ld-powerpc/tlsdesc2.d binutils-2.35.1/ld/testsuite/ld-powerpc/tlsdesc2.d
--- binutils.orig/ld/testsuite/ld-powerpc/tlsdesc2.d 2020-10-08 13:50:30.846911225 +0100
+++ binutils-2.35.1/ld/testsuite/ld-powerpc/tlsdesc2.d 2020-10-08 13:51:12.622782597 +0100
@@ -53,12 +53,11 @@ Disassembly of section \.text:
.*: (7c 08 02 a6|a6 02 08 7c) mflr r0
.*: (42 9f 00 05|05 00 9f 42) bcl .*
.*: (7d 68 02 a6|a6 02 68 7d) mflr r11
-.*: (f8 41 00 18|18 00 41 f8) std r2,24\(r1\)
-.*: (e8 4b ff f0|f0 ff 4b e8) ld r2,-16\(r11\)
.*: (7c 08 03 a6|a6 03 08 7c) mtlr r0
+.*: (e8 0b ff f0|f0 ff 0b e8) ld r0,-16\(r11\)
.*: (7d 8b 60 50|50 60 8b 7d) subf r12,r11,r12
-.*: (7d 62 5a 14|14 5a 62 7d) add r11,r2,r11
-.*: (38 0c ff d0|d0 ff 0c 38) addi r0,r12,-48
+.*: (7d 60 5a 14|14 5a 60 7d) add r11,r0,r11
+.*: (38 0c ff d4|d4 ff 0c 38) addi r0,r12,-44
.*: (e9 8b 00 00|00 00 8b e9) ld r12,0\(r11\)
.*: (78 00 f0 82|82 f0 00 78) rldicl r0,r0,62,2
.*: (7d 89 03 a6|a6 03 89 7d) mtctr r12
@@ -66,4 +65,4 @@ Disassembly of section \.text:
.*: (4e 80 04 20|20 04 80 4e) bctr
.* <__tls_get_addr_opt@plt>:
-.*: (4b ff ff c8|c8 ff ff 4b) b .* <__glink_PLTresolve>
+.*: (4b ff ff cc|cc ff ff 4b) b .* <__glink_PLTresolve>
diff -rup binutils.orig/ld/testsuite/ld-powerpc/tlsdesc2.wf binutils-2.35.1/ld/testsuite/ld-powerpc/tlsdesc2.wf
--- binutils.orig/ld/testsuite/ld-powerpc/tlsdesc2.wf 2020-10-08 13:50:30.850911213 +0100
+++ binutils-2.35.1/ld/testsuite/ld-powerpc/tlsdesc2.wf 2020-10-08 13:51:12.622782597 +0100
@@ -37,10 +37,10 @@ Contents of the \.eh_frame section:
DW_CFA_nop
DW_CFA_nop
-0+4c 0+14 0+50 FDE cie=0+ pc=0+318\.\.0+354
- DW_CFA_advance_loc: 4 to 0+31c
+0+4c 0+14 0+50 FDE cie=0+ pc=0+318\.\.0+350
+ DW_CFA_advance_loc: 8 to 0+320
DW_CFA_register: r65 in r0
- DW_CFA_advance_loc: 28 to 0+338
+ DW_CFA_advance_loc: 8 to 0+328
DW_CFA_restore_extended: r65
0+64 0+10 0+68 FDE cie=0+ pc=0+300\.\.0+30c
diff -rup binutils.orig/ld/testsuite/ld-powerpc/tlsopt5.d binutils-2.35.1/ld/testsuite/ld-powerpc/tlsopt5.d
--- binutils.orig/ld/testsuite/ld-powerpc/tlsopt5.d 2020-10-08 13:50:30.843911234 +0100
+++ binutils-2.35.1/ld/testsuite/ld-powerpc/tlsopt5.d 2020-10-08 13:51:12.623782594 +0100
@@ -49,12 +49,11 @@ Disassembly of section \.text:
.*: (a6 02 08 7c|7c 08 02 a6) mflr r0
.*: (05 00 9f 42|42 9f 00 05) bcl .*
.*: (a6 02 68 7d|7d 68 02 a6) mflr r11
-.*: (18 00 41 f8|f8 41 00 18) std r2,24\(r1\)
-.*: (f0 ff 4b e8|e8 4b ff f0) ld r2,-16\(r11\)
.*: (a6 03 08 7c|7c 08 03 a6) mtlr r0
+.*: (f0 ff 0b e8|e8 0b ff f0) ld r0,-16\(r11\)
.*: (50 60 8b 7d|7d 8b 60 50) subf r12,r11,r12
-.*: (14 5a 62 7d|7d 62 5a 14) add r11,r2,r11
-.*: (d0 ff 0c 38|38 0c ff d0) addi r0,r12,-48
+.*: (14 5a 60 7d|7d 60 5a 14) add r11,r0,r11
+.*: (d4 ff 0c 38|38 0c ff d4) addi r0,r12,-44
.*: (00 00 8b e9|e9 8b 00 00) ld r12,0\(r11\)
.*: (82 f0 00 78|78 00 f0 82) rldicl r0,r0,62,2
.*: (a6 03 89 7d|7d 89 03 a6) mtctr r12
@@ -62,7 +61,7 @@ Disassembly of section \.text:
.*: (20 04 80 4e|4e 80 04 20) bctr
.* <__tls_get_addr_opt@plt>:
-.* (c8 ff ff 4b|4b ff ff c8) b .*
+.* (cc ff ff 4b|4b ff ff cc) b .*
.* <aaaaa@plt>:
-.*: (c4 ff ff 4b|4b ff ff c4) b .*
+.*: (c8 ff ff 4b|4b ff ff c8) b .*
diff -rup binutils.orig/ld/testsuite/ld-powerpc/tlsopt5.wf binutils-2.35.1/ld/testsuite/ld-powerpc/tlsopt5.wf
--- binutils.orig/ld/testsuite/ld-powerpc/tlsopt5.wf 2020-10-08 13:50:30.844911231 +0100
+++ binutils-2.35.1/ld/testsuite/ld-powerpc/tlsopt5.wf 2020-10-08 13:51:12.623782594 +0100
@@ -16,9 +16,9 @@ Contents of the \.eh_frame section:
DW_CFA_restore_extended: r65
0+2c 0+14 0+30 FDE cie=0+ pc=.*
- DW_CFA_advance_loc: 4 to .*
+ DW_CFA_advance_loc: 8 to .*
DW_CFA_register: r65 in r0
- DW_CFA_advance_loc: 28 to .*
+ DW_CFA_advance_loc: 8 to .*
DW_CFA_restore_extended: r65
0+44 0+10 0+48 FDE cie=0+ pc=.*
diff -rup binutils.orig/ld/testsuite/ld-powerpc/tlsopt6.d binutils-2.35.1/ld/testsuite/ld-powerpc/tlsopt6.d
--- binutils.orig/ld/testsuite/ld-powerpc/tlsopt6.d 2020-10-08 13:50:30.848911219 +0100
+++ binutils-2.35.1/ld/testsuite/ld-powerpc/tlsopt6.d 2020-10-08 13:51:12.623782594 +0100
@@ -67,12 +67,11 @@ Disassembly of section \.text:
.*: (a6 02 08 7c|7c 08 02 a6) mflr r0
.*: (05 00 9f 42|42 9f 00 05) bcl .*
.*: (a6 02 68 7d|7d 68 02 a6) mflr r11
-.*: (18 00 41 f8|f8 41 00 18) std r2,24\(r1\)
-.*: (f0 ff 4b e8|e8 4b ff f0) ld r2,-16\(r11\)
.*: (a6 03 08 7c|7c 08 03 a6) mtlr r0
+.*: (f0 ff 0b e8|e8 0b ff f0) ld r0,-16\(r11\)
.*: (50 60 8b 7d|7d 8b 60 50) subf r12,r11,r12
-.*: (14 5a 62 7d|7d 62 5a 14) add r11,r2,r11
-.*: (d0 ff 0c 38|38 0c ff d0) addi r0,r12,-48
+.*: (14 5a 60 7d|7d 60 5a 14) add r11,r0,r11
+.*: (d4 ff 0c 38|38 0c ff d4) addi r0,r12,-44
.*: (00 00 8b e9|e9 8b 00 00) ld r12,0\(r11\)
.*: (82 f0 00 78|78 00 f0 82) rldicl r0,r0,62,2
.*: (a6 03 89 7d|7d 89 03 a6) mtctr r12
@@ -80,7 +79,7 @@ Disassembly of section \.text:
.*: (20 04 80 4e|4e 80 04 20) bctr
.* <__tls_get_addr_opt@plt>:
-.* (c8 ff ff 4b|4b ff ff c8) b .*
+.* (cc ff ff 4b|4b ff ff cc) b .*
.* <aaaaa@plt>:
-.*: (c4 ff ff 4b|4b ff ff c4) b .*
+.*: (c8 ff ff 4b|4b ff ff c8) b .*
diff -rup binutils.orig/ld/testsuite/ld-powerpc/tlsopt6.wf binutils-2.35.1/ld/testsuite/ld-powerpc/tlsopt6.wf
--- binutils.orig/ld/testsuite/ld-powerpc/tlsopt6.wf 2020-10-08 13:50:30.845911228 +0100
+++ binutils-2.35.1/ld/testsuite/ld-powerpc/tlsopt6.wf 2020-10-08 13:51:12.623782594 +0100
@@ -38,9 +38,9 @@ Contents of the \.eh_frame section:
DW_CFA_nop
0+4c 0+14 0+50 FDE cie=0+ pc=.*
- DW_CFA_advance_loc: 4 to .*
+ DW_CFA_advance_loc: 8 to .*
DW_CFA_register: r65 in r0
- DW_CFA_advance_loc: 28 to .*
+ DW_CFA_advance_loc: 8 to .*
DW_CFA_restore_extended: r65
0+64 0+10 0+68 FDE cie=0+ pc=.*
diff -rup binutils.orig/opcodes/ppc-opc.c binutils-2.35.1/opcodes/ppc-opc.c
--- binutils.orig/opcodes/ppc-opc.c 2020-10-08 13:50:31.025910674 +0100
+++ binutils-2.35.1/opcodes/ppc-opc.c 2020-10-08 13:56:36.923784122 +0100
@@ -4441,7 +4441,7 @@ const struct powerpc_opcode powerpc_opco
{"nmachhws", XO (4, 110,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
{"nmachhws.", XO (4, 110,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
{"vadduqm", VX (4, 256), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
-{"vcmpuq", VX (4, 257), VXBF_MASK, POWER10, 0, {OBF, VA, VB}},
+{"vcmpuq", VX (4, 257), VXBF_MASK, POWER10, 0, {BF, VA, VB}},
{"vmaxsb", VX (4, 258), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
{"vslb", VX (4, 260), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
{"vslq", VX (4, 261), VX_MASK, POWER10, 0, {VD, VA, VB}},
@@ -4459,7 +4459,7 @@ const struct powerpc_opcode powerpc_opco
{"macchwu", XO (4, 140,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
{"macchwu.", XO (4, 140,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
{"vaddcuq", VX (4, 320), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
-{"vcmpsq", VX (4, 321), VXBF_MASK, POWER10, 0, {OBF, VA, VB}},
+{"vcmpsq", VX (4, 321), VXBF_MASK, POWER10, 0, {BF, VA, VB}},
{"vmaxsh", VX (4, 322), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
{"vslh", VX (4, 324), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
{"vrlqnm", VX (4, 325), VX_MASK, POWER10, 0, {VD, VA, VB}},
@@ -6114,6 +6114,7 @@ const struct powerpc_opcode powerpc_opco
{"rlnm.", M(23,1), M_MASK, PWRCOM, PPCVLE, {RA, RS, RB, MBE, ME}},
{"nop", OP(24), 0xffffffff, PPCCOM, PPCVLE, {0}},
+{"exser", 0x63ff0000, 0xffffffff, POWER9, PPCVLE, {0}},
{"ori", OP(24), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
{"oril", OP(24), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
@@ -6236,7 +6237,7 @@ const struct powerpc_opcode powerpc_opco
{"ldx", X(31,21), X_MASK, PPC64, 0, {RT, RA0, RB}},
-{"icbt", X(31,22), X_MASK, BOOKE|PPCE300|PPCA2|PPC476, 0, {CT, RA0, RB}},
+{"icbt", X(31,22), X_MASK, POWER5|BOOKE|PPCE300, 0, {CT, RA0, RB}},
{"lwzx", X(31,23), X_MASK, PPCCOM, 0, {RT, RA0, RB}},
{"lx", X(31,23), X_MASK, PWRCOM, 0, {RT, RA, RB}},
@@ -6302,9 +6303,9 @@ const struct powerpc_opcode powerpc_opco
{"subf.", XO(31,40,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
{"sub.", XO(31,40,0,1), XO_MASK, PPC, 0, {RT, RB, RA}},
-{"mfvsrd", X(31,51), XX1RB_MASK, PPCVSX2, 0, {RA, XS6}},
{"mffprd", X(31,51), XX1RB_MASK|1, PPCVSX2, 0, {RA, FRS}},
{"mfvrd", X(31,51)|1, XX1RB_MASK|1, PPCVSX2, 0, {RA, VS}},
+{"mfvsrd", X(31,51), XX1RB_MASK, PPCVSX2, 0, {RA, XS6}},
{"eratilx", X(31,51), X_MASK, PPCA2, 0, {ERAT_T, RA, RB}},
{"lbarx", X(31,52), XEH_MASK, POWER8|E6500, 0, {RT, RA0, RB, EH}},
@@ -6354,6 +6355,7 @@ const struct powerpc_opcode powerpc_opco
{"mulhw", XO(31,75,0,0), XO_MASK, PPC, 0, {RT, RA, RB}},
{"mulhw.", XO(31,75,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
+{"msgsndu", XRTRA(31,78,0,0), XRTRA_MASK, POWER9, 0, {RB}},
{"dlmzb", XRC(31,78,0), X_MASK, PPC403|PPC440|PPC476|TITAN, 0, {RA, RS, RB}},
{"dlmzb.", XRC(31,78,1), X_MASK, PPC403|PPC440|PPC476|TITAN, 0, {RA, RS, RB}},
@@ -6387,6 +6389,7 @@ const struct powerpc_opcode powerpc_opco
{"lxvrdx", X(31,109), XX1_MASK, POWER10, 0, {XT6, RA0, RB}},
+{"msgclru", XRTRA(31,110,0,0), XRTRA_MASK, POWER9, 0, {RB}},
{"mvidsplt", X(31,110), X_MASK, E6500, 0, {VD, RA, RB}},
{"mtsrdin", X(31,114), XRA_MASK, PPC64, 0, {RS, RB}},
@@ -6489,9 +6492,9 @@ const struct powerpc_opcode powerpc_opco
{"mtmsrd", X(31,178), XRLARB_MASK, PPC64, 0, {RS, A_L}},
-{"mtvsrd", X(31,179), XX1RB_MASK, PPCVSX2, 0, {XT6, RA}},
{"mtfprd", X(31,179), XX1RB_MASK|1, PPCVSX2, 0, {FRT, RA}},
{"mtvrd", X(31,179)|1, XX1RB_MASK|1, PPCVSX2, 0, {VD, RA}},
+{"mtvsrd", X(31,179), XX1RB_MASK, PPCVSX2, 0, {XT6, RA}},
{"eratre", X(31,179), X_MASK, PPCA2, 0, {RT, RA, WS}},
{"stdux", X(31,181), X_MASK, PPC64, 0, {RS, RAS, RB}},
@@ -6738,11 +6741,13 @@ const struct powerpc_opcode powerpc_opco
{"mfmq", XSPR(31,339, 0), XSPR_MASK, M601, 0, {RT}},
{"mfxer", XSPR(31,339, 1), XSPR_MASK, COM, 0, {RT}},
+{"mfudscr", XSPR(31,339, 3), XSPR_MASK, POWER9, 0, {RS}},
{"mfrtcu", XSPR(31,339, 4), XSPR_MASK, COM, TITAN, {RT}},
{"mfrtcl", XSPR(31,339, 5), XSPR_MASK, COM, TITAN, {RT}},
{"mfdec", XSPR(31,339, 6), XSPR_MASK, MFDEC1, 0, {RT}},
{"mflr", XSPR(31,339, 8), XSPR_MASK, COM, 0, {RT}},
{"mfctr", XSPR(31,339, 9), XSPR_MASK, COM, 0, {RT}},
+{"mfuamr", XSPR(31,339, 13), XSPR_MASK, POWER9, 0, {RS}},
{"mfdscr", XSPR(31,339, 17), XSPR_MASK, POWER6, 0, {RT}},
{"mftid", XSPR(31,339, 17), XSPR_MASK, POWER, 0, {RT}},
{"mfdsisr", XSPR(31,339, 18), XSPR_MASK, COM, TITAN, {RT}},
@@ -6753,9 +6758,12 @@ const struct powerpc_opcode powerpc_opco
{"mfsrr0", XSPR(31,339, 26), XSPR_MASK, COM, 0, {RT}},
{"mfsrr1", XSPR(31,339, 27), XSPR_MASK, COM, 0, {RT}},
{"mfcfar", XSPR(31,339, 28), XSPR_MASK, POWER6, 0, {RT}},
+{"mfamr", XSPR(31,339, 29), XSPR_MASK, POWER7, 0, {RS}},
+{"mfpidr", XSPR(31,339, 48), XSPR_MASK, POWER10, 0, {RS}},
{"mfpid", XSPR(31,339, 48), XSPR_MASK, BOOKE, 0, {RT}},
{"mfcsrr0", XSPR(31,339, 58), XSPR_MASK, BOOKE, 0, {RT}},
{"mfcsrr1", XSPR(31,339, 59), XSPR_MASK, BOOKE, 0, {RT}},
+{"mfiamr", XSPR(31,339, 61), XSPR_MASK, POWER10, 0, {RS}},
{"mfdear", XSPR(31,339, 61), XSPR_MASK, BOOKE, 0, {RT}},
{"mfesr", XSPR(31,339, 62), XSPR_MASK, BOOKE, 0, {RT}},
{"mfivpr", XSPR(31,339, 63), XSPR_MASK, BOOKE, 0, {RT}},
@@ -6769,16 +6777,28 @@ const struct powerpc_opcode powerpc_opco
{"mfcounta", XSPR(31,339,150), XSPR_MASK, PPC860, 0, {RT}},
{"mfcountb", XSPR(31,339,151), XSPR_MASK, PPC860, 0, {RT}},
{"mfcmpe", XSPR(31,339,152), XSPR_MASK, PPC860, 0, {RT}},
+{"mffscr", XSPR(31,339,153), XSPR_MASK, POWER10, 0, {RS}},
{"mfcmpf", XSPR(31,339,153), XSPR_MASK, PPC860, 0, {RT}},
{"mfcmpg", XSPR(31,339,154), XSPR_MASK, PPC860, 0, {RT}},
{"mfcmph", XSPR(31,339,155), XSPR_MASK, PPC860, 0, {RT}},
{"mflctrl1", XSPR(31,339,156), XSPR_MASK, PPC860, 0, {RT}},
+{"mfuamor", XSPR(31,339,157), XSPR_MASK, POWER7, 0, {RS}},
{"mflctrl2", XSPR(31,339,157), XSPR_MASK, PPC860, 0, {RT}},
{"mfictrl", XSPR(31,339,158), XSPR_MASK, PPC860, 0, {RT}},
+{"mfpspb", XSPR(31,339,159), XSPR_MASK, POWER10, 0, {RS}},
{"mfbar", XSPR(31,339,159), XSPR_MASK, PPC860, 0, {RT}},
+{"mfdpdes", XSPR(31,339,176), XSPR_MASK, POWER10, 0, {RS}},
+{"mfdawr0", XSPR(31,339,180), XSPR_MASK, POWER10, 0, {RS}},
+{"mfdawr1", XSPR(31,339,181), XSPR_MASK, POWER10, 0, {RS}},
+{"mfrpr", XSPR(31,339,186), XSPR_MASK, POWER10, 0, {RS}},
+{"mfciabr", XSPR(31,339,187), XSPR_MASK, POWER10, 0, {RS}},
+{"mfdawrx0", XSPR(31,339,188), XSPR_MASK, POWER10, 0, {RS}},
+{"mfdawrx1", XSPR(31,339,189), XSPR_MASK, POWER10, 0, {RS}},
+{"mfhfscr", XSPR(31,339,190), XSPR_MASK, POWER10, 0, {RS}},
{"mfvrsave", XSPR(31,339,256), XSPR_MASK, PPCVEC, 0, {RT}},
{"mfusprg0", XSPR(31,339,256), XSPR_MASK, BOOKE, 0, {RT}},
{"mfsprg", XSPR(31,339,256), XSPRG_MASK, PPC, 0, {RT, SPRG}},
+{"mfusprg3", XSPR(31,339,259), XSPR_MASK, POWER10, 0, {RT}},
{"mfsprg4", XSPR(31,339,260), XSPR_MASK, PPC405|BOOKE, 0, {RT}},
{"mfsprg5", XSPR(31,339,261), XSPR_MASK, PPC405|BOOKE, 0, {RT}},
{"mfsprg6", XSPR(31,339,262), XSPR_MASK, PPC405|BOOKE, 0, {RT}},
@@ -6794,20 +6814,37 @@ const struct powerpc_opcode powerpc_opco
{"mfear", XSPR(31,339,282), XSPR_MASK, PPC, TITAN, {RT}},
{"mfpir", XSPR(31,339,286), XSPR_MASK, BOOKE, 0, {RT}},
{"mfpvr", XSPR(31,339,287), XSPR_MASK, PPC, 0, {RT}},
+{"mfhsprg0", XSPR(31,339,304), XSPR_MASK, POWER10, 0, {RS}},
{"mfdbsr", XSPR(31,339,304), XSPR_MASK, BOOKE, 0, {RT}},
+{"mfhsprg1", XSPR(31,339,305), XSPR_MASK, POWER10, 0, {RS}},
+{"mfhdisr", XSPR(31,339,306), XSPR_MASK, POWER10, 0, {RS}},
+{"mfhdar", XSPR(31,339,307), XSPR_MASK, POWER10, 0, {RS}},
+{"mfspurr", XSPR(31,339,308), XSPR_MASK, POWER10, 0, {RS}},
{"mfdbcr0", XSPR(31,339,308), XSPR_MASK, BOOKE, 0, {RT}},
+{"mfpurr", XSPR(31,339,309), XSPR_MASK, POWER10, 0, {RS}},
{"mfdbcr1", XSPR(31,339,309), XSPR_MASK, BOOKE, 0, {RT}},
+{"mfhdec", XSPR(31,339,310), XSPR_MASK, POWER10, 0, {RS}},
{"mfdbcr2", XSPR(31,339,310), XSPR_MASK, BOOKE, 0, {RT}},
{"mfiac1", XSPR(31,339,312), XSPR_MASK, BOOKE, 0, {RT}},
+{"mfhrmor", XSPR(31,339,313), XSPR_MASK, POWER10, 0, {RS}},
{"mfiac2", XSPR(31,339,313), XSPR_MASK, BOOKE, 0, {RT}},
+{"mfhsrr0", XSPR(31,339,314), XSPR_MASK, POWER10, 0, {RS}},
{"mfiac3", XSPR(31,339,314), XSPR_MASK, BOOKE, 0, {RT}},
+{"mfhsrr1", XSPR(31,339,315), XSPR_MASK, POWER10, 0, {RS}},
{"mfiac4", XSPR(31,339,315), XSPR_MASK, BOOKE, 0, {RT}},
{"mfdac1", XSPR(31,339,316), XSPR_MASK, BOOKE, 0, {RT}},
{"mfdac2", XSPR(31,339,317), XSPR_MASK, BOOKE, 0, {RT}},
+{"mflpcr", XSPR(31,339,318), XSPR_MASK, POWER10, 0, {RS}},
{"mfdvc1", XSPR(31,339,318), XSPR_MASK, BOOKE, 0, {RT}},
+{"mflpidr", XSPR(31,339,319), XSPR_MASK, POWER10, 0, {RS}},
{"mfdvc2", XSPR(31,339,319), XSPR_MASK, BOOKE, 0, {RT}},
+{"mfhmer", XSPR(31,339,336), XSPR_MASK, POWER7, 0, {RS}},
{"mftsr", XSPR(31,339,336), XSPR_MASK, BOOKE, 0, {RT}},
+{"mfhmeer", XSPR(31,339,337), XSPR_MASK, POWER7, 0, {RS}},
+{"mfpcr", XSPR(31,339,338), XSPR_MASK, POWER10, 0, {RS}},
+{"mfheir", XSPR(31,339,339), XSPR_MASK, POWER10, 0, {RS}},
{"mftcr", XSPR(31,339,340), XSPR_MASK, BOOKE, 0, {RT}},
+{"mfamor", XSPR(31,339,349), XSPR_MASK, POWER7, 0, {RS}},
{"mfivor0", XSPR(31,339,400), XSPR_MASK, BOOKE, 0, {RT}},
{"mfivor1", XSPR(31,339,401), XSPR_MASK, BOOKE, 0, {RT}},
{"mfivor2", XSPR(31,339,402), XSPR_MASK, BOOKE, 0, {RT}},
@@ -6824,6 +6861,14 @@ const struct powerpc_opcode powerpc_opco
{"mfivor13", XSPR(31,339,413), XSPR_MASK, BOOKE, 0, {RT}},
{"mfivor14", XSPR(31,339,414), XSPR_MASK, BOOKE, 0, {RT}},
{"mfivor15", XSPR(31,339,415), XSPR_MASK, BOOKE, 0, {RT}},
+{"mftir", XSPR(31,339,446), XSPR_MASK, POWER10, 0, {RS}},
+{"mfptcr", XSPR(31,339,464), XSPR_MASK, POWER10, 0, {RS}},
+{"mfuspgr0", XSPR(31,339,496), XSPR_MASK, POWER10, 0, {RS}},
+{"mfuspgr1", XSPR(31,339,497), XSPR_MASK, POWER10, 0, {RS}},
+{"mfurmor", XSPR(31,339,505), XSPR_MASK, POWER10, 0, {RS}},
+{"mfusrr0", XSPR(31,339,506), XSPR_MASK, POWER10, 0, {RS}},
+{"mfusrr1", XSPR(31,339,507), XSPR_MASK, POWER10, 0, {RS}},
+{"mfsmfctrl", XSPR(31,339,511), XSPR_MASK, POWER10, 0, {RS}},
{"mfspefscr", XSPR(31,339,512), XSPR_MASK, PPCSPE, 0, {RT}},
{"mfbbear", XSPR(31,339,513), XSPR_MASK, PPCBRLK, 0, {RT}},
{"mfbbtar", XSPR(31,339,514), XSPR_MASK, PPCBRLK, 0, {RT}},
@@ -6848,18 +6893,36 @@ const struct powerpc_opcode powerpc_opco
{"mfdpdr", XSPR(31,339,630), XSPR_MASK, PPC860, 0, {RT}},
{"mfdpir", XSPR(31,339,631), XSPR_MASK, PPC860, 0, {RT}},
{"mfimmr", XSPR(31,339,638), XSPR_MASK, PPC860, 0, {RT}},
+{"mfusier2", XSPR(31,339,736), XSPR_MASK, POWER10, 0, {RT}},
+{"mfsier2", XSPR(31,339,736), XSPR_MASK, POWER10, 0, {RT}},
+{"mfusier3", XSPR(31,339,737), XSPR_MASK, POWER10, 0, {RT}},
+{"mfsier3", XSPR(31,339,737), XSPR_MASK, POWER10, 0, {RT}},
+{"mfummcr3", XSPR(31,339,738), XSPR_MASK, POWER10, 0, {RT}},
+{"mfmmcr3", XSPR(31,339,738), XSPR_MASK, POWER10, 0, {RT}},
+{"mfusier", XSPR(31,339,768), XSPR_MASK, POWER10, 0, {RT}},
+{"mfsier", XSPR(31,339,768), XSPR_MASK, POWER10, 0, {RT}},
+{"mfummcra", XSPR(31,339,770), XSPR_MASK, POWER9, 0, {RS}},
+{"mfmmcra", XSPR(31,339,770), XSPR_MASK, POWER7, 0, {RS}},
{"mfupmc1", XSPR(31,339,771), XSPR_MASK, POWER9, 0, {RT}},
-{"mfpmc1", XSPR(31,339,771), XSPR_MASK, POWER9, 0, {RT}},
+{"mfpmc1", XSPR(31,339,771), XSPR_MASK, POWER7, 0, {RT}},
{"mfupmc2", XSPR(31,339,772), XSPR_MASK, POWER9, 0, {RT}},
-{"mfpmc2", XSPR(31,339,772), XSPR_MASK, POWER9, 0, {RT}},
+{"mfpmc2", XSPR(31,339,772), XSPR_MASK, POWER7, 0, {RT}},
{"mfupmc3", XSPR(31,339,773), XSPR_MASK, POWER9, 0, {RT}},
-{"mfpmc3", XSPR(31,339,773), XSPR_MASK, POWER9, 0, {RT}},
+{"mfpmc3", XSPR(31,339,773), XSPR_MASK, POWER7, 0, {RT}},
{"mfupmc4", XSPR(31,339,774), XSPR_MASK, POWER9, 0, {RT}},
-{"mfpmc4", XSPR(31,339,774), XSPR_MASK, POWER9, 0, {RT}},
+{"mfpmc4", XSPR(31,339,774), XSPR_MASK, POWER7, 0, {RT}},
{"mfupmc5", XSPR(31,339,775), XSPR_MASK, POWER9, 0, {RT}},
-{"mfpmc5", XSPR(31,339,775), XSPR_MASK, POWER9, 0, {RT}},
+{"mfpmc5", XSPR(31,339,775), XSPR_MASK, POWER7, 0, {RT}},
{"mfupmc6", XSPR(31,339,776), XSPR_MASK, POWER9, 0, {RT}},
-{"mfpmc6", XSPR(31,339,776), XSPR_MASK, POWER9, 0, {RT}},
+{"mfpmc6", XSPR(31,339,776), XSPR_MASK, POWER7, 0, {RT}},
+{"mfummcr0", XSPR(31,339,779), XSPR_MASK, POWER9, 0, {RS}},
+{"mfmmcr0", XSPR(31,339,779), XSPR_MASK, POWER7, 0, {RS}},
+{"mfusiar", XSPR(31,339,780), XSPR_MASK, POWER9, 0, {RS}},
+{"mfsiar", XSPR(31,339,780), XSPR_MASK, POWER9, 0, {RS}},
+{"mfusdar", XSPR(31,339,781), XSPR_MASK, POWER9, 0, {RS}},
+{"mfsdar", XSPR(31,339,781), XSPR_MASK, POWER9, 0, {RS}},
+{"mfummcr1", XSPR(31,339,782), XSPR_MASK, POWER9, 0, {RS}},
+{"mfmmcr1", XSPR(31,339,782), XSPR_MASK, POWER7, 0, {RS}},
{"mfmi_ctr", XSPR(31,339,784), XSPR_MASK, PPC860, 0, {RT}},
{"mfmi_ap", XSPR(31,339,786), XSPR_MASK, PPC860, 0, {RT}},
{"mfmi_epn", XSPR(31,339,787), XSPR_MASK, PPC860, 0, {RT}},
@@ -6873,12 +6936,25 @@ const struct powerpc_opcode powerpc_opco
{"mfmd_twc", XSPR(31,339,797), XSPR_MASK, PPC860, 0, {RT}},
{"mfmd_rpn", XSPR(31,339,798), XSPR_MASK, PPC860, 0, {RT}},
{"mfm_tw", XSPR(31,339,799), XSPR_MASK, PPC860, 0, {RT}},
+{"mfbescrs", XSPR(31,339,800), XSPR_MASK, POWER9, 0, {RS}},
+{"mfbescrsu", XSPR(31,339,801), XSPR_MASK, POWER9, 0, {RS}},
+{"mfbescrr", XSPR(31,339,802), XSPR_MASK, POWER9, 0, {RS}},
+{"mfbescrru", XSPR(31,339,803), XSPR_MASK, POWER9, 0, {RS}},
+{"mfebbhr", XSPR(31,339,804), XSPR_MASK, POWER9, 0, {RS}},
+{"mfebbrr", XSPR(31,339,805), XSPR_MASK, POWER9, 0, {RS}},
+{"mfbescr", XSPR(31,339,806), XSPR_MASK, POWER9, 0, {RS}},
+{"mftar", XSPR(31,339,815), XSPR_MASK, POWER9, 0, {RS}},
+{"mfasdr", XSPR(31,339,816), XSPR_MASK, POWER10, 0, {RS}},
{"mfmi_dbcam", XSPR(31,339,816), XSPR_MASK, PPC860, 0, {RT}},
{"mfmi_dbram0", XSPR(31,339,817), XSPR_MASK, PPC860, 0, {RT}},
{"mfmi_dbram1", XSPR(31,339,818), XSPR_MASK, PPC860, 0, {RT}},
+{"mfpsscr", XSPR(31,339,823), XSPR_MASK, POWER10, 0, {RS}},
{"mfmd_dbcam", XSPR(31,339,824), XSPR_MASK, PPC860, 0, {RT}},
{"mfmd_dbram0", XSPR(31,339,825), XSPR_MASK, PPC860, 0, {RT}},
{"mfmd_dbram1", XSPR(31,339,826), XSPR_MASK, PPC860, 0, {RT}},
+{"mfic", XSPR(31,339,848), XSPR_MASK, POWER8, 0, {RS}},
+{"mfvtb", XSPR(31,339,849), XSPR_MASK, POWER8, 0, {RS}},
+{"mfhpsscr", XSPR(31,339,855), XSPR_MASK, POWER10, 0, {RS}},
{"mfivndx", XSPR(31,339,880), XSPR_MASK, TITAN, 0, {RT}},
{"mfdvndx", XSPR(31,339,881), XSPR_MASK, TITAN, 0, {RT}},
{"mfivlim", XSPR(31,339,882), XSPR_MASK, TITAN, 0, {RT}},
@@ -7051,14 +7127,15 @@ const struct powerpc_opcode powerpc_opco
{"sthux", X(31,439), X_MASK, COM, 0, {RS, RAS, RB}},
-{"mdors", 0x7f9ce378, 0xffffffff, E500MC, 0, {0}},
-
-{"miso", 0x7f5ad378, 0xffffffff, E6500, 0, {0}},
-
-/* The "yield", "mdoio" and "mdoom" instructions are extended mnemonics for
- "or rX,rX,rX", with rX being r27, r29 and r30 respectively. */
+/* or 26,26,26 */
+{"miso", 0x7f5ad378, 0xffffffff, POWER8|E6500, 0, {0}},
+/* or 27,27,27 */
{"yield", 0x7f7bdb78, 0xffffffff, POWER7, 0, {0}},
+/* or 28,28,28 */
+{"mdors", 0x7f9ce378, 0xffffffff, E500MC, 0, {0}},
+/* or 29,29,29 */
{"mdoio", 0x7fbdeb78, 0xffffffff, POWER7, 0, {0}},
+/* or 30,30,30 */
{"mdoom", 0x7fdef378, 0xffffffff, POWER7, 0, {0}},
{"mr", XRC(31,444,0), X_MASK, COM, 0, {RA, RSB}},
{"or", XRC(31,444,0), X_MASK, COM, 0, {RA, RS, RB}},
@@ -7124,8 +7201,10 @@ const struct powerpc_opcode powerpc_opco
{"mtmq", XSPR(31,467, 0), XSPR_MASK, M601, 0, {RS}},
{"mtxer", XSPR(31,467, 1), XSPR_MASK, COM, 0, {RS}},
+{"mtudscr", XSPR(31,467, 3), XSPR_MASK, POWER9, 0, {RS}},
{"mtlr", XSPR(31,467, 8), XSPR_MASK, COM, 0, {RS}},
{"mtctr", XSPR(31,467, 9), XSPR_MASK, COM, 0, {RS}},
+{"mtuamr", XSPR(31,467, 13), XSPR_MASK, POWER9, 0, {RS}},
{"mtdscr", XSPR(31,467, 17), XSPR_MASK, POWER6, 0, {RS}},
{"mttid", XSPR(31,467, 17), XSPR_MASK, POWER, 0, {RS}},
{"mtdsisr", XSPR(31,467, 18), XSPR_MASK, COM, TITAN, {RS}},
@@ -7138,13 +7217,20 @@ const struct powerpc_opcode powerpc_opco
{"mtsrr0", XSPR(31,467, 26), XSPR_MASK, COM, 0, {RS}},
{"mtsrr1", XSPR(31,467, 27), XSPR_MASK, COM, 0, {RS}},
{"mtcfar", XSPR(31,467, 28), XSPR_MASK, POWER6, 0, {RS}},
+{"mtamr", XSPR(31,467, 29), XSPR_MASK, POWER7, 0, {RS}},
+{"mtpidr", XSPR(31,467, 48), XSPR_MASK, POWER10, 0, {RS}},
{"mtpid", XSPR(31,467, 48), XSPR_MASK, BOOKE, 0, {RS}},
{"mtdecar", XSPR(31,467, 54), XSPR_MASK, BOOKE, 0, {RS}},
{"mtcsrr0", XSPR(31,467, 58), XSPR_MASK, BOOKE, 0, {RS}},
{"mtcsrr1", XSPR(31,467, 59), XSPR_MASK, BOOKE, 0, {RS}},
+{"mtiamr", XSPR(31,467, 61), XSPR_MASK, POWER10, 0, {RS}},
{"mtdear", XSPR(31,467, 61), XSPR_MASK, BOOKE, 0, {RS}},
{"mtesr", XSPR(31,467, 62), XSPR_MASK, BOOKE, 0, {RS}},
{"mtivpr", XSPR(31,467, 63), XSPR_MASK, BOOKE, 0, {RS}},
+{"mttfhar", XSPR(31,467,128), XSPR_MASK, POWER9, 0, {RS}},
+{"mttfiar", XSPR(31,467,129), XSPR_MASK, POWER9, 0, {RS}},
+{"mttexasr", XSPR(31,467,130), XSPR_MASK, POWER9, 0, {RS}},
+{"mttexasru", XSPR(31,467,131), XSPR_MASK, POWER9, 0, {RS}},
{"mtcmpa", XSPR(31,467,144), XSPR_MASK, PPC860, 0, {RS}},
{"mtcmpb", XSPR(31,467,145), XSPR_MASK, PPC860, 0, {RS}},
{"mtcmpc", XSPR(31,467,146), XSPR_MASK, PPC860, 0, {RS}},
@@ -7155,13 +7241,24 @@ const struct powerpc_opcode powerpc_opco
{"mtcountb", XSPR(31,467,151), XSPR_MASK, PPC860, 0, {RS}},
{"mtctrl", XSPR(31,467,152), XSPR_MASK, POWER4, 0, {RS}},
{"mtcmpe", XSPR(31,467,152), XSPR_MASK, PPC860, 0, {RS}},
+{"mtfscr", XSPR(31,467,153), XSPR_MASK, POWER10, 0, {RS}},
{"mtcmpf", XSPR(31,467,153), XSPR_MASK, PPC860, 0, {RS}},
{"mtcmpg", XSPR(31,467,154), XSPR_MASK, PPC860, 0, {RS}},
{"mtcmph", XSPR(31,467,155), XSPR_MASK, PPC860, 0, {RS}},
{"mtlctrl1", XSPR(31,467,156), XSPR_MASK, PPC860, 0, {RS}},
+{"mtuamor", XSPR(31,467,157), XSPR_MASK, POWER7, 0, {RS}},
{"mtlctrl2", XSPR(31,467,157), XSPR_MASK, PPC860, 0, {RS}},
{"mtictrl", XSPR(31,467,158), XSPR_MASK, PPC860, 0, {RS}},
+{"mtpspb", XSPR(31,467,159), XSPR_MASK, POWER10, 0, {RS}},
{"mtbar", XSPR(31,467,159), XSPR_MASK, PPC860, 0, {RS}},
+{"mtdpdes", XSPR(31,467,176), XSPR_MASK, POWER10, 0, {RS}},
+{"mtdawr0", XSPR(31,467,180), XSPR_MASK, POWER10, 0, {RS}},
+{"mtdawr1", XSPR(31,467,181), XSPR_MASK, POWER10, 0, {RS}},
+{"mtrpr", XSPR(31,467,186), XSPR_MASK, POWER10, 0, {RS}},
+{"mtciabr", XSPR(31,467,187), XSPR_MASK, POWER10, 0, {RS}},
+{"mtdawrx0", XSPR(31,467,188), XSPR_MASK, POWER10, 0, {RS}},
+{"mtdawrx1", XSPR(31,467,189), XSPR_MASK, POWER10, 0, {RS}},
+{"mthfscr", XSPR(31,467,190), XSPR_MASK, POWER10, 0, {RS}},
{"mtvrsave", XSPR(31,467,256), XSPR_MASK, PPCVEC, 0, {RS}},
{"mtusprg0", XSPR(31,467,256), XSPR_MASK, BOOKE, 0, {RS}},
{"mtsprg", XSPR(31,467,256), XSPRG_MASK, PPC, 0, {SPRG, RS}},
@@ -7177,20 +7274,38 @@ const struct powerpc_opcode powerpc_opco
{"mtear", XSPR(31,467,282), XSPR_MASK, PPC, TITAN, {RS}},
{"mttbl", XSPR(31,467,284), XSPR_MASK, PPC, 0, {RS}},
{"mttbu", XSPR(31,467,285), XSPR_MASK, PPC, 0, {RS}},
+{"mttbu40", XSPR(31,467,286), XSPR_MASK, POWER10, 0, {RS}},
+{"mthsprg0", XSPR(31,467,304), XSPR_MASK, POWER10, 0, {RS}},
{"mtdbsr", XSPR(31,467,304), XSPR_MASK, BOOKE, 0, {RS}},
+{"mthsprg1", XSPR(31,467,305), XSPR_MASK, POWER10, 0, {RS}},
+{"mthdisr", XSPR(31,467,306), XSPR_MASK, POWER10, 0, {RS}},
+{"mthdar", XSPR(31,467,307), XSPR_MASK, POWER10, 0, {RS}},
+{"mtspurr", XSPR(31,467,308), XSPR_MASK, POWER10, 0, {RS}},
{"mtdbcr0", XSPR(31,467,308), XSPR_MASK, BOOKE, 0, {RS}},
+{"mtpurr", XSPR(31,467,309), XSPR_MASK, POWER10, 0, {RS}},
{"mtdbcr1", XSPR(31,467,309), XSPR_MASK, BOOKE, 0, {RS}},
+{"mthdec", XSPR(31,467,310), XSPR_MASK, POWER10, 0, {RS}},
{"mtdbcr2", XSPR(31,467,310), XSPR_MASK, BOOKE, 0, {RS}},
{"mtiac1", XSPR(31,467,312), XSPR_MASK, BOOKE, 0, {RS}},
+{"mthrmor", XSPR(31,467,313), XSPR_MASK, POWER10, 0, {RS}},
{"mtiac2", XSPR(31,467,313), XSPR_MASK, BOOKE, 0, {RS}},
+{"mthsrr0", XSPR(31,467,314), XSPR_MASK, POWER10, 0, {RS}},
{"mtiac3", XSPR(31,467,314), XSPR_MASK, BOOKE, 0, {RS}},
+{"mthsrr1", XSPR(31,467,315), XSPR_MASK, POWER10, 0, {RS}},
{"mtiac4", XSPR(31,467,315), XSPR_MASK, BOOKE, 0, {RS}},
{"mtdac1", XSPR(31,467,316), XSPR_MASK, BOOKE, 0, {RS}},
{"mtdac2", XSPR(31,467,317), XSPR_MASK, BOOKE, 0, {RS}},
+{"mtlpcr", XSPR(31,467,318), XSPR_MASK, POWER10, 0, {RS}},
{"mtdvc1", XSPR(31,467,318), XSPR_MASK, BOOKE, 0, {RS}},
+{"mtlpidr", XSPR(31,467,319), XSPR_MASK, POWER10, 0, {RS}},
{"mtdvc2", XSPR(31,467,319), XSPR_MASK, BOOKE, 0, {RS}},
+{"mthmer", XSPR(31,467,336), XSPR_MASK, POWER7, 0, {RS}},
{"mttsr", XSPR(31,467,336), XSPR_MASK, BOOKE, 0, {RS}},
+{"mthmeer", XSPR(31,467,337), XSPR_MASK, POWER7, 0, {RS}},
+{"mtpcr", XSPR(31,467,338), XSPR_MASK, POWER10, 0, {RS}},
+{"mtheir", XSPR(31,467,339), XSPR_MASK, POWER10, 0, {RS}},
{"mttcr", XSPR(31,467,340), XSPR_MASK, BOOKE, 0, {RS}},
+{"mtamor", XSPR(31,467,349), XSPR_MASK, POWER7, 0, {RS}},
{"mtivor0", XSPR(31,467,400), XSPR_MASK, BOOKE, 0, {RS}},
{"mtivor1", XSPR(31,467,401), XSPR_MASK, BOOKE, 0, {RS}},
{"mtivor2", XSPR(31,467,402), XSPR_MASK, BOOKE, 0, {RS}},
@@ -7207,6 +7322,13 @@ const struct powerpc_opcode powerpc_opco
{"mtivor13", XSPR(31,467,413), XSPR_MASK, BOOKE, 0, {RS}},
{"mtivor14", XSPR(31,467,414), XSPR_MASK, BOOKE, 0, {RS}},
{"mtivor15", XSPR(31,467,415), XSPR_MASK, BOOKE, 0, {RS}},
+{"mtptcr", XSPR(31,467,464), XSPR_MASK, POWER10, 0, {RS}},
+{"mtuspgr0", XSPR(31,467,496), XSPR_MASK, POWER10, 0, {RS}},
+{"mtuspgr1", XSPR(31,467,497), XSPR_MASK, POWER10, 0, {RS}},
+{"mturmor", XSPR(31,467,505), XSPR_MASK, POWER10, 0, {RS}},
+{"mtusrr0", XSPR(31,467,506), XSPR_MASK, POWER10, 0, {RS}},
+{"mtusrr1", XSPR(31,467,507), XSPR_MASK, POWER10, 0, {RS}},
+{"mtsmfctrl", XSPR(31,467,511), XSPR_MASK, POWER10, 0, {RS}},
{"mtspefscr", XSPR(31,467,512), XSPR_MASK, PPCSPE, 0, {RS}},
{"mtbbear", XSPR(31,467,513), XSPR_MASK, PPCBRLK, 0, {RS}},
{"mtbbtar", XSPR(31,467,514), XSPR_MASK, PPCBRLK, 0, {RS}},
@@ -7221,12 +7343,44 @@ const struct powerpc_opcode powerpc_opco
{"mtmcsrr0", XSPR(31,467,570), XSPR_MASK, PPCRFMCI, 0, {RS}},
{"mtmcsrr1", XSPR(31,467,571), XSPR_MASK, PPCRFMCI, 0, {RS}},
{"mtmcsr", XSPR(31,467,572), XSPR_MASK, PPCRFMCI, 0, {RS}},
+{"mtsier2", XSPR(31,467,752), XSPR_MASK, POWER10, 0, {RS}},
+{"mtsier3", XSPR(31,467,753), XSPR_MASK, POWER10, 0, {RS}},
+{"mtmmcr3", XSPR(31,467,754), XSPR_MASK, POWER10, 0, {RS}},
+{"mtummcr2", XSPR(31,467,769), XSPR_MASK, POWER9, 0, {RS}},
+{"mtmmcr2", XSPR(31,467,769), XSPR_MASK, POWER9, 0, {RS}},
+{"mtummcra", XSPR(31,467,770), XSPR_MASK, POWER9, 0, {RS}},
{"mtupmc1", XSPR(31,467,771), XSPR_MASK, POWER9, 0, {RS}},
{"mtupmc2", XSPR(31,467,772), XSPR_MASK, POWER9, 0, {RS}},
{"mtupmc3", XSPR(31,467,773), XSPR_MASK, POWER9, 0, {RS}},
{"mtupmc4", XSPR(31,467,774), XSPR_MASK, POWER9, 0, {RS}},
{"mtupmc5", XSPR(31,467,775), XSPR_MASK, POWER9, 0, {RS}},
{"mtupmc6", XSPR(31,467,776), XSPR_MASK, POWER9, 0, {RS}},
+{"mtummcr0", XSPR(31,467,779), XSPR_MASK, POWER9, 0, {RS}},
+{"mtsier", XSPR(31,467,784), XSPR_MASK, POWER10, 0, {RS}},
+{"mtmmcra", XSPR(31,467,786), XSPR_MASK, POWER7, 0, {RS}},
+{"mtpmc1", XSPR(31,467,787), XSPR_MASK, POWER7, 0, {RS}},
+{"mtpmc2", XSPR(31,467,788), XSPR_MASK, POWER7, 0, {RS}},
+{"mtpmc3", XSPR(31,467,789), XSPR_MASK, POWER7, 0, {RS}},
+{"mtpmc4", XSPR(31,467,790), XSPR_MASK, POWER7, 0, {RS}},
+{"mtpmc5", XSPR(31,467,791), XSPR_MASK, POWER7, 0, {RS}},
+{"mtpmc6", XSPR(31,467,792), XSPR_MASK, POWER7, 0, {RS}},
+{"mtmmcr0", XSPR(31,467,795), XSPR_MASK, POWER7, 0, {RS}},
+{"mtsiar", XSPR(31,467,796), XSPR_MASK, POWER10, 0, {RS}},
+{"mtsdar", XSPR(31,467,797), XSPR_MASK, POWER10, 0, {RS}},
+{"mtmmcr1", XSPR(31,467,798), XSPR_MASK, POWER7, 0, {RS}},
+{"mtbescrs", XSPR(31,467,800), XSPR_MASK, POWER9, 0, {RS}},
+{"mtbescrsu", XSPR(31,467,801), XSPR_MASK, POWER9, 0, {RS}},
+{"mtbescrr", XSPR(31,467,802), XSPR_MASK, POWER9, 0, {RS}},
+{"mtbescrru", XSPR(31,467,803), XSPR_MASK, POWER9, 0, {RS}},
+{"mtebbhr", XSPR(31,467,804), XSPR_MASK, POWER9, 0, {RS}},
+{"mtebbrr", XSPR(31,467,805), XSPR_MASK, POWER9, 0, {RS}},
+{"mtbescr", XSPR(31,467,806), XSPR_MASK, POWER9, 0, {RS}},
+{"mttar", XSPR(31,467,815), XSPR_MASK, POWER9, 0, {RS}},
+{"mtasdr", XSPR(31,467,816), XSPR_MASK, POWER10, 0, {RS}},
+{"mtpsscr", XSPR(31,467,823), XSPR_MASK, POWER10, 0, {RS}},
+{"mtic", XSPR(31,467,848), XSPR_MASK, POWER8, 0, {RS}},
+{"mtvtb", XSPR(31,467,849), XSPR_MASK, POWER8, 0, {RS}},
+{"mthpsscr", XSPR(31,467,855), XSPR_MASK, POWER10, 0, {RS}},
{"mtivndx", XSPR(31,467,880), XSPR_MASK, TITAN, 0, {RS}},
{"mtdvndx", XSPR(31,467,881), XSPR_MASK, TITAN, 0, {RS}},
{"mtivlim", XSPR(31,467,882), XSPR_MASK, TITAN, 0, {RS}},
@@ -8301,7 +8455,7 @@ const struct powerpc_opcode powerpc_opco
{"xxgenpcvdm", X(60,949), XX1_MASK, POWER10, PPCVLE, {XT6, VB, UIMM}},
{"xvxexpdp", XX2VA(60,475,0),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
{"xvxsigdp", XX2VA(60,475,1),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
-{"xvtlsbb", XX2VA(60,475,2),XX2BF_MASK, POWER10, PPCVLE, {OBF, XB6}},
+{"xvtlsbb", XX2VA(60,475,2),XX2BF_MASK, POWER10, PPCVLE, {BF, XB6}},
{"xxbrh", XX2VA(60,475,7),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
{"xvxexpsp", XX2VA(60,475,8),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
{"xvxsigsp", XX2VA(60,475,9),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
--- /dev/null 2020-10-08 09:15:33.282859415 +0100
+++ binutils-2.35.1/gas/testsuite/gas/ppc/be.d 2020-10-08 13:51:29.102731857 +0100
@@ -0,0 +1,17 @@
+#objdump: -d -Mcom
+#as: -mcom -be
+#name: BE only instructions
+
+.*
+
+Disassembly of section \.text:
+
+0+00 <start>:
+.*: ba 8a 00 10 lmw r20,16\(r10\)
+.*: 7d 4b 0c aa lswi r10,r11,1
+.*: 7d 8b 04 aa lswi r12,r11,32
+.*: 7d 4b 64 2a lswx r10,r11,r12
+.*: be 8a 00 10 stmw r20,16\(r10\)
+.*: 7d 4b 0d aa stswi r10,r11,1
+.*: 7d 4b 05 aa stswi r10,r11,32
+.*: 7d 4b 65 2a stswx r10,r11,r12
--- /dev/null 2020-10-08 09:15:33.282859415 +0100
+++ binutils-2.35.1/gas/testsuite/gas/ppc/be.s 2020-10-08 13:51:29.102731857 +0100
@@ -0,0 +1,10 @@
+ .text
+start:
+ lmw 20,16(10)
+ lswi 10,11,1
+ lswi 12,11,32
+ lswx 10,11,12
+ stmw 20,16(10)
+ stswi 10,11,1
+ stswi 10,11,32
+ stswx 10,11,12
--- /dev/null 2020-10-08 09:15:33.282859415 +0100
+++ binutils-2.35.1/gas/testsuite/gas/ppc/le_error.d 2020-10-08 13:51:29.102731857 +0100
@@ -0,0 +1,3 @@
+#as: -mcom -le
+#source: be.s
+#error_output: le_error.l
--- /dev/null 2020-10-08 09:15:33.282859415 +0100
+++ binutils-2.35.1/gas/testsuite/gas/ppc/le_error.l 2020-10-08 13:51:29.102731857 +0100
@@ -0,0 +1,9 @@
+.*Assembler messages:
+.*invalid when little-endian
+.*invalid when little-endian
+.*invalid when little-endian
+.*invalid when little-endian
+.*invalid when little-endian
+.*invalid when little-endian
+.*invalid when little-endian
+.*invalid when little-endian