--- /dev/null
+Submitted By: Jim Gifford (jim at cross-lfs dot org)
+Date: 07-07-2009
+Initial Package Version: 2.19.1
+Origin: Upstream
+Upstream Status: Applied
+Description: This is a branch update for binutils-2.19.1, and should be
+ rechecked periodically.
+
+This patch was created on 20090707
+
+diff -Naur binutils-2.19.1.orig/bfd/ChangeLog binutils-2.19.1/bfd/ChangeLog
+--- binutils-2.19.1.orig/bfd/ChangeLog 2009-02-02 02:44:39.000000000 -0800
++++ binutils-2.19.1/bfd/ChangeLog 2009-03-02 05:55:19.000000000 -0800
+@@ -1,3 +1,108 @@
++2009-03-02 Alan Modra <amodra@bigpond.net.au>
++
++ 2009-02-15 Alan Modra <amodra@bigpond.net.au>
++ * elf64-ppc.c (struct _ppc64_elf_section_data): Delete t_symndx,
++ add toc.symndx and toc.add.
++ (ppc64_elf_check_relocs): Don't set htab->tls_get_addr here.
++ Set up toc.add.
++ (get_tls_mask): Add toc_addend param, set from toc.add. Adjust all
++ callers.
++ (ppc64_elf_tls_setup): Set htab->tls_get_addr and tls_get_addr_fd.
++ (branch_reloc_hash_match): New function, extracted from..
++ (ppc64_elf_tls_optimize): ..here.
++ (ppc64_elf_relocate_section): Properly set addends when optimizing
++ tls sequences. Avoid unnecessary reading and writing of insns.
++ Only redo reloc when symbol changed. Bypass symbol checks when
++ using tlsld_got.
++ * elf32-ppc.c (ppc_elf_tls_setup): Correct comment.
++ (branch_reloc_hash_match): New function, extracted from..
++ (ppc_elf_tls_optimize): ..here.
++ (ppc_elf_relocate_section): Avoid unnecessary reading of insns.
++ Don't clear addend on zapped __tls_get_addr reloc.
++
++ 2009-02-01 Jan Kratochvil <jan.kratochvil@redhat.com>
++ * elf-eh-frame.c (REQUIRE_CLEARED_RELOCS) Remove.
++ (_bfd_elf_parse_eh_frame): Do not check relocations for removed FDEs.
++
++ 2009-01-26 Nathan Sidwell <nathan@codesourcery.com>
++ * elf32-ppc.c (ppc_elf_relax_section): Add space for relocs
++ describing the trampolines.
++ (ppc_elf_relocate_section): Update relocs to describe the
++ trampolines.
++
++ 2009-01-22 Alan Modra <amodra@bigpond.net.au>
++ PR 6832
++ * dwarf2.c (find_line): Don't update stash->sec_info_ptr until
++ after comp_unit_find_line call.
++
++ 2009-01-14 Alan Modra <amodra@bigpond.net.au>
++ PR 9735
++ * syms.c (_bfd_stab_section_find_nearest_line): Don't free
++ saved filename, use bfd_alloc rather than bfd_malloc for it.
++
++ 2009-01-11 Jan Kratochvil <jan.kratochvil@redhat.com>
++ * elflink.c (_bfd_elf_section_already_linked): Handle g++-3.4
++ relocations in `.gnu.linkonce.r.*' referencing its `.gnu.linkonce.t.*'.
++
++ 2008-12-11 Alan Modra <amodra@bigpond.net.au>
++ PR 7041
++ * elf64-ppc.c (func_desc_adjust): Correct logic making fake function
++ descriptors. Similarly correct making function descriptors dynamic.
++
++ 2008-11-14 Nathan Sidwell <nathan@codesourcery.com>
++ * elf.c (assign_file_positions_for_load_sections): Use header_size
++ to avoid moving the load address of file headers.
++ (assign_file_positions_for_load_sections): Set header_size for
++ segments containing the file header.
++
++ 2008-11-13 Hans-Peter Nilsson <hp@axis.com>
++ PR ld/7028
++ * elf.c (assign_file_positions_for_load_sections): Allocate phrds
++ with bfd_zalloc2 instead of bfd_alloc2. For the amount, use
++ the possibly-preset header-size, not the computed one.
++
++ 2008-11-13 Alan Modra <amodra@bigpond.net.au>
++ PR 7023
++ * elf.c (bfd_section_from_shdr <SHT_SYMTAB>): Fail on invalid sh_info.
++
++ 2008-11-11 Alan Modra <amodra@bigpond.net.au>
++ PR 7012
++ * dwarf2.c (find_line): Don't keep stale pointers into realloc'd
++ memory. Return on errors. Fix memory leak.
++ (_bfd_dwarf2_cleanup_debug_info): Free dwarf_str_buffer.
++
++ 2008-10-10 Nathan Froyd <froydnj@codesourcery.com>
++ * elf32-ppc.c (ppc_elf_merge_obj_attributes): Merge
++ Tag_GNU_Power_ABI_Struct_Return.
++
++ 2008-10-03 Alan Modra <amodra@bigpond.net.au>
++ * elf.c (bfd_elf_set_group_contents): Assign sh_info for ld -r when
++ the signature symbol is global.
++ * elflink.c (elf_link_input_bfd): Ensure group signature symbol
++ is output when ld -r. Set group sh_info when local.
++ * linker.c (default_indirect_link_order): Handle group sections
++ specially.
++
++ 2008-09-28 Alan Modra <amodra@bigpond.net.au>
++ * elf.c (_bfd_elf_init_private_section_data): Tweak union copy.
++ (bfd_section_from_shdr): Don't change SHT_GROUP section name.
++ * elflink.c (section_signature): New function.
++ (_bfd_elf_section_already_linked): Use it.
++
++2009-02-15 Bjoern Haase <bjoern.m.haase@web.de>
++
++ PR 9841
++ * elf32-avr.c: Handle case where no local symbos exist correctly.
++
++2009-02-04 Eric B. Weddington <eric.weddington@atmel.com>
++
++ * elf32-avr.c (avr_final_link_relocate): Allow avr25 to wraparound.
++
++2009-02-03 Tristan Gingold <gingold@adacore.com>
++
++ * Makefile.am (RELEASE): Unset.
++ * Makefile.in: Regenerated.
++
+ 2009-02-02 Tristan Gingold <gingold@adacore.com>
+
+ * configure.in: Bump version to 2.19.1
+diff -Naur binutils-2.19.1.orig/bfd/dwarf2.c binutils-2.19.1/bfd/dwarf2.c
+--- binutils-2.19.1.orig/bfd/dwarf2.c 2008-10-02 01:07:16.000000000 -0700
++++ binutils-2.19.1/bfd/dwarf2.c 2009-03-02 05:50:55.000000000 -0800
+@@ -1,6 +1,6 @@
+ /* DWARF 2 support.
+ Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+- 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
++ 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+ Adapted from gdb/dwarf2read.c by Gavin Koch of Cygnus Solutions
+ (gavin@cygnus.com).
+@@ -2989,8 +2989,6 @@
+ symbols, 0,
+ &stash->info_ptr_memory, &total_size))
+ goto done;
+- stash->info_ptr = stash->info_ptr_memory;
+- stash->info_ptr_end = stash->info_ptr + total_size;
+ }
+ else
+ {
+@@ -3008,63 +3006,64 @@
+ if (stash->info_ptr_memory == NULL)
+ goto done;
+
+- stash->info_ptr = stash->info_ptr_memory;
+- stash->info_ptr_end = stash->info_ptr;
+-
++ total_size = 0;
+ for (msec = find_debug_info (debug_bfd, NULL);
+ msec;
+ msec = find_debug_info (debug_bfd, msec))
+ {
+ bfd_size_type size;
+- bfd_size_type start;
+
+ size = msec->size;
+ if (size == 0)
+ continue;
+
+- start = stash->info_ptr_end - stash->info_ptr;
+-
+- if ((bfd_simple_get_relocated_section_contents
+- (debug_bfd, msec, stash->info_ptr + start, symbols))
+- == NULL)
+- continue;
++ if (!(bfd_simple_get_relocated_section_contents
++ (debug_bfd, msec, stash->info_ptr_memory + total_size,
++ symbols)))
++ goto done;
+
+- stash->info_ptr_end = stash->info_ptr + start + size;
++ total_size += size;
+ }
+-
+- BFD_ASSERT (stash->info_ptr_end == stash->info_ptr + total_size);
+ }
+ else
+ {
+ /* Case 3: multiple sections, some or all compressed. */
+- stash->info_ptr_memory = bfd_malloc (1);
+- stash->info_ptr = stash->info_ptr_memory;
+- stash->info_ptr_end = stash->info_ptr;
++ stash->info_ptr_memory = NULL;
++ total_size = 0;
+ for (msec = find_debug_info (debug_bfd, NULL);
+ msec;
+ msec = find_debug_info (debug_bfd, msec))
+ {
+ bfd_size_type size = msec->size;
+- bfd_byte* buffer
+- = (bfd_simple_get_relocated_section_contents
+- (debug_bfd, msec, NULL, symbols));
+- if (! buffer)
++ bfd_byte* buffer;
++
++ if (size == 0)
+ continue;
++
++ buffer = (bfd_simple_get_relocated_section_contents
++ (debug_bfd, msec, NULL, symbols));
++ if (! buffer)
++ goto done;
++
+ if (strcmp (msec->name, DWARF2_COMPRESSED_DEBUG_INFO) == 0)
+ {
+ if (! bfd_uncompress_section_contents (&buffer, &size))
+- continue;
++ {
++ free (buffer);
++ goto done;
++ }
+ }
+- stash->info_ptr = bfd_realloc (stash->info_ptr,
+- stash->info_ptr_end
+- - stash->info_ptr + size);
+- memcpy (stash->info_ptr_end, buffer, size);
++ stash->info_ptr_memory = bfd_realloc (stash->info_ptr_memory,
++ total_size + size);
++ memcpy (stash->info_ptr_memory + total_size, buffer, size);
+ free (buffer);
+- stash->info_ptr_end += size;
++ total_size += size;
+ }
+ }
+ }
+
++ stash->info_ptr = stash->info_ptr_memory;
++ stash->info_ptr_end = stash->info_ptr + total_size;
+ stash->sec = find_debug_info (debug_bfd, NULL);
+ stash->sec_info_ptr = stash->info_ptr;
+ stash->syms = symbols;
+@@ -3187,13 +3186,6 @@
+ break;
+ stash->info_ptr += length;
+
+- if ((bfd_vma) (stash->info_ptr - stash->sec_info_ptr)
+- == stash->sec->size)
+- {
+- stash->sec = find_debug_info (stash->bfd, stash->sec);
+- stash->sec_info_ptr = stash->info_ptr;
+- }
+-
+ if (stash->all_comp_units)
+ stash->all_comp_units->prev_unit = each;
+ else
+@@ -3223,6 +3215,14 @@
+ functionname_ptr,
+ linenumber_ptr,
+ stash));
++
++ if ((bfd_vma) (stash->info_ptr - stash->sec_info_ptr)
++ == stash->sec->size)
++ {
++ stash->sec = find_debug_info (stash->bfd, stash->sec);
++ stash->sec_info_ptr = stash->info_ptr;
++ }
++
+ if (found)
+ goto done;
+ }
+@@ -3364,8 +3364,14 @@
+ }
+ }
+
+- free (stash->dwarf_abbrev_buffer);
+- free (stash->dwarf_line_buffer);
+- free (stash->dwarf_ranges_buffer);
+- free (stash->info_ptr_memory);
++ if (stash->dwarf_abbrev_buffer)
++ free (stash->dwarf_abbrev_buffer);
++ if (stash->dwarf_line_buffer)
++ free (stash->dwarf_line_buffer);
++ if (stash->dwarf_str_buffer)
++ free (stash->dwarf_str_buffer);
++ if (stash->dwarf_ranges_buffer)
++ free (stash->dwarf_ranges_buffer);
++ if (stash->info_ptr_memory)
++ free (stash->info_ptr_memory);
+ }
+diff -Naur binutils-2.19.1.orig/bfd/elf32-avr.c binutils-2.19.1/bfd/elf32-avr.c
+--- binutils-2.19.1.orig/bfd/elf32-avr.c 2008-12-23 05:54:49.000000000 -0800
++++ binutils-2.19.1/bfd/elf32-avr.c 2009-02-19 09:53:10.000000000 -0800
+@@ -854,10 +854,11 @@
+ {
+ /* Relative distance is too large. */
+
+- /* Always apply WRAPAROUND for avr2 and avr4. */
++ /* Always apply WRAPAROUND for avr2, avr25, and avr4. */
+ switch (bfd_get_mach (input_bfd))
+ {
+ case bfd_mach_avr2:
++ case bfd_mach_avr25:
+ case bfd_mach_avr4:
+ break;
+
+@@ -1553,7 +1554,8 @@
+ /* Adjust the local symbols defined in this section. */
+ isym = (Elf_Internal_Sym *) symtab_hdr->contents;
+ isymend = isym + symtab_hdr->sh_info;
+- for (; isym < isymend; isym++)
++ /* Fix PR 9841, there may be no local symbols. */
++ for (; isym != NULL && isym < isymend; isym++)
+ {
+ if (isym->st_shndx == sec_shndx
+ && isym->st_value > addr
+diff -Naur binutils-2.19.1.orig/bfd/elf32-ppc.c binutils-2.19.1/bfd/elf32-ppc.c
+--- binutils-2.19.1.orig/bfd/elf32-ppc.c 2008-12-23 05:54:49.000000000 -0800
++++ binutils-2.19.1/bfd/elf32-ppc.c 2009-03-02 05:55:19.000000000 -0800
+@@ -1,6 +1,6 @@
+ /* PowerPC-specific support for 32-bit ELF
+ Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+- 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
++ 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+ Written by Ian Lance Taylor, Cygnus Support.
+
+ This file is part of BFD, the Binary File Descriptor library.
+@@ -3964,6 +3964,33 @@
+ ibfd, obfd, in_abi, out_abi);
+ }
+
++ /* Check for conflicting Tag_GNU_Power_ABI_Struct_Return attributes
++ and merge non-conflicting ones. */
++ in_attr = &in_attrs[Tag_GNU_Power_ABI_Struct_Return];
++ out_attr = &out_attrs[Tag_GNU_Power_ABI_Struct_Return];
++ if (in_attr->i != out_attr->i)
++ {
++ out_attr->type = 1;
++ if (out_attr->i == 0)
++ out_attr->i = in_attr->i;
++ else if (in_attr->i == 0)
++ ;
++ else if (out_attr->i == 1 && in_attr->i == 2)
++ _bfd_error_handler
++ (_("Warning: %B uses r3/r4 for small structure returns, %B uses memory"), obfd, ibfd);
++ else if (out_attr->i == 2 && in_attr->i == 1)
++ _bfd_error_handler
++ (_("Warning: %B uses r3/r4 for small structure returns, %B uses memory"), ibfd, obfd);
++ else if (in_attr->i > 2)
++ _bfd_error_handler
++ (_("Warning: %B uses unknown small structure return convention %d"), ibfd,
++ in_attr->i);
++ else
++ _bfd_error_handler
++ (_("Warning: %B uses unknown small structure return convention %d"), obfd,
++ out_attr->i);
++ }
++
+ /* Merge Tag_compatibility attributes and any common GNU ones. */
+ _bfd_elf_merge_object_attributes (ibfd, obfd);
+
+@@ -4298,7 +4325,8 @@
+ return TRUE;
+ }
+ \f
+-/* Set htab->tls_get_addr and call the generic ELF tls_setup function. */
++/* Set plt output section type, htab->tls_get_addr, and call the
++ generic ELF tls_setup function. */
+
+ asection *
+ ppc_elf_tls_setup (bfd *obfd, struct bfd_link_info *info)
+@@ -4319,6 +4347,43 @@
+ return _bfd_elf_tls_setup (obfd, info);
+ }
+
++/* Return TRUE iff REL is a branch reloc with a global symbol matching
++ HASH. */
++
++static bfd_boolean
++branch_reloc_hash_match (const bfd *ibfd,
++ const Elf_Internal_Rela *rel,
++ const struct elf_link_hash_entry *hash)
++{
++ Elf_Internal_Shdr *symtab_hdr = &elf_symtab_hdr (ibfd);
++ enum elf_ppc_reloc_type r_type = ELF32_R_TYPE (rel->r_info);
++ unsigned int r_symndx = ELF32_R_SYM (rel->r_info);
++
++ if (r_symndx >= symtab_hdr->sh_info
++ && (r_type == R_PPC_PLTREL24
++ || r_type == R_PPC_LOCAL24PC
++ || r_type == R_PPC_REL14
++ || r_type == R_PPC_REL14_BRTAKEN
++ || r_type == R_PPC_REL14_BRNTAKEN
++ || r_type == R_PPC_REL24
++ || r_type == R_PPC_ADDR24
++ || r_type == R_PPC_ADDR14
++ || r_type == R_PPC_ADDR14_BRTAKEN
++ || r_type == R_PPC_ADDR14_BRNTAKEN))
++ {
++ struct elf_link_hash_entry **sym_hashes = elf_sym_hashes (ibfd);
++ struct elf_link_hash_entry *h;
++
++ h = sym_hashes[r_symndx - symtab_hdr->sh_info];
++ while (h->root.type == bfd_link_hash_indirect
++ || h->root.type == bfd_link_hash_warning)
++ h = (struct elf_link_hash_entry *) h->root.u.i.link;
++ if (h == hash)
++ return TRUE;
++ }
++ return FALSE;
++}
++
+ /* Run through all the TLS relocs looking for optimization
+ opportunities. */
+
+@@ -4446,35 +4511,10 @@
+ if (!expecting_tls_get_addr)
+ continue;
+
+- if (rel + 1 < relend)
+- {
+- enum elf_ppc_reloc_type r_type2;
+- unsigned long r_symndx2;
+- struct elf_link_hash_entry *h2;
+-
+- /* The next instruction should be a call to
+- __tls_get_addr. Peek at the reloc to be sure. */
+- r_type2 = ELF32_R_TYPE (rel[1].r_info);
+- r_symndx2 = ELF32_R_SYM (rel[1].r_info);
+- if (r_symndx2 >= symtab_hdr->sh_info
+- && (r_type2 == R_PPC_REL14
+- || r_type2 == R_PPC_REL14_BRTAKEN
+- || r_type2 == R_PPC_REL14_BRNTAKEN
+- || r_type2 == R_PPC_REL24
+- || r_type2 == R_PPC_PLTREL24))
+- {
+- struct elf_link_hash_entry **sym_hashes;
+-
+- sym_hashes = elf_sym_hashes (ibfd);
+- h2 = sym_hashes[r_symndx2 - symtab_hdr->sh_info];
+- while (h2->root.type == bfd_link_hash_indirect
+- || h2->root.type == bfd_link_hash_warning)
+- h2 = ((struct elf_link_hash_entry *)
+- h2->root.u.i.link);
+- if (h2 == htab->tls_get_addr)
+- continue;
+- }
+- }
++ if (rel + 1 < relend
++ && branch_reloc_hash_match (ibfd, rel + 1,
++ htab->tls_get_addr))
++ continue;
+
+ /* Uh oh, we didn't find the expected call. We
+ could just mark this symbol to exclude it
+@@ -5573,7 +5613,7 @@
+ Elf_Internal_Rela *internal_relocs = NULL;
+ Elf_Internal_Rela *irel, *irelend;
+ struct one_fixup *fixups = NULL;
+- bfd_boolean changed;
++ unsigned changes = 0;
+ struct ppc_elf_link_hash_table *htab;
+ bfd_size_type trampoff;
+ asection *got2;
+@@ -5820,6 +5860,7 @@
+ fixups = f;
+
+ trampoff += size;
++ changes++;
+ }
+ else
+ {
+@@ -5870,7 +5911,6 @@
+ }
+
+ /* Write out the trampolines. */
+- changed = fixups != NULL;
+ if (fixups != NULL)
+ {
+ const int *stub;
+@@ -5936,7 +5976,7 @@
+ if (contents != NULL
+ && elf_section_data (isec)->this_hdr.contents != contents)
+ {
+- if (!changed && !link_info->keep_memory)
++ if (!changes && !link_info->keep_memory)
+ free (contents);
+ else
+ {
+@@ -5945,15 +5985,35 @@
+ }
+ }
+
+- if (elf_section_data (isec)->relocs != internal_relocs)
++ if (changes != 0)
+ {
+- if (!changed)
++ /* Append sufficient NOP relocs so we can write out relocation
++ information for the trampolines. */
++ Elf_Internal_Rela *new_relocs = bfd_malloc ((changes + isec->reloc_count)
++ * sizeof (*new_relocs));
++ unsigned ix;
++
++ if (!new_relocs)
++ goto error_return;
++ memcpy (new_relocs, internal_relocs,
++ isec->reloc_count * sizeof (*new_relocs));
++ for (ix = changes; ix--;)
++ {
++ irel = new_relocs + ix + isec->reloc_count;
++
++ irel->r_info = ELF32_R_INFO (0, R_PPC_NONE);
++ }
++ if (internal_relocs != elf_section_data (isec)->relocs)
+ free (internal_relocs);
+- else
+- elf_section_data (isec)->relocs = internal_relocs;
++ elf_section_data (isec)->relocs = new_relocs;
++ isec->reloc_count += changes;
++ elf_section_data (isec)->rel_hdr.sh_size
++ += changes * elf_section_data (isec)->rel_hdr.sh_entsize;
+ }
++ else if (elf_section_data (isec)->relocs != internal_relocs)
++ free (internal_relocs);
+
+- *again = changed;
++ *again = changes != 0;
+ return TRUE;
+
+ error_return:
+@@ -6321,22 +6381,21 @@
+ case R_PPC_GOT_TLSLD16_LO:
+ if (tls_mask != 0 && (tls_mask & TLS_LD) == 0)
+ {
+- bfd_vma insn1, insn2;
++ unsigned int insn1, insn2;
+ bfd_vma offset;
+
+ tls_ldgd_opt:
+ offset = rel[1].r_offset;
+- insn1 = bfd_get_32 (output_bfd,
+- contents + rel->r_offset - d_offset);
+ if ((tls_mask & tls_gd) != 0)
+ {
+ /* IE */
++ insn1 = bfd_get_32 (output_bfd,
++ contents + rel->r_offset - d_offset);
+ insn1 &= (1 << 26) - 1;
+ insn1 |= 32 << 26; /* lwz */
+ insn2 = 0x7c631214; /* add 3,3,2 */
+ rel[1].r_info
+ = ELF32_R_INFO (ELF32_R_SYM (rel[1].r_info), R_PPC_NONE);
+- rel[1].r_addend = 0;
+ r_type = (((r_type - (R_PPC_GOT_TLSGD16 & 3)) & 3)
+ + R_PPC_GOT_TPREL16);
+ rel->r_info = ELF32_R_INFO (r_symndx, r_type);
+@@ -6959,6 +7018,17 @@
+
+ bfd_put_32 (output_bfd, t0, contents + rel->r_offset);
+ bfd_put_32 (output_bfd, t1, contents + rel->r_offset + 4);
++
++ /* Rewrite the reloc and convert one of the trailing nop
++ relocs to describe this relocation. */
++ BFD_ASSERT (ELF32_R_TYPE (relend[-1].r_info) == R_PPC_NONE);
++ /* The relocs are at the bottom 2 bytes */
++ rel[0].r_offset += 2;
++ memmove (rel + 1, rel, (relend - rel - 1) * sizeof (*rel));
++ rel[0].r_info = ELF32_R_INFO (r_symndx, R_PPC_ADDR16_HA);
++ rel[1].r_offset += 4;
++ rel[1].r_info = ELF32_R_INFO (r_symndx, R_PPC_ADDR16_LO);
++ rel++;
+ }
+ continue;
+
+diff -Naur binutils-2.19.1.orig/bfd/elf64-ppc.c binutils-2.19.1/bfd/elf64-ppc.c
+--- binutils-2.19.1.orig/bfd/elf64-ppc.c 2008-10-09 05:18:24.000000000 -0700
++++ binutils-2.19.1/bfd/elf64-ppc.c 2009-03-02 05:55:19.000000000 -0800
+@@ -1,6 +1,6 @@
+ /* PowerPC64-specific support for 64-bit ELF.
+- Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+- Free Software Foundation, Inc.
++ Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
++ 2009 Free Software Foundation, Inc.
+ Written by Linus Nordberg, Swox AB <info@swox.com>,
+ based on elf32-ppc.c by Ian Lance Taylor.
+ Largely rewritten by Alan Modra <amodra@bigpond.net.au>
+@@ -2608,9 +2608,15 @@
+ long *adjust;
+ } opd;
+
+- /* An array for toc sections, indexed by offset/8.
+- Specifies the relocation symbol index used at a given toc offset. */
+- unsigned *t_symndx;
++ /* An array for toc sections, indexed by offset/8. */
++ struct _toc_sec_data
++ {
++ /* Specifies the relocation symbol index used at a given toc offset. */
++ unsigned *symndx;
++
++ /* And the relocation addend. */
++ bfd_vma *add;
++ } toc;
+ } u;
+
+ enum _ppc64_sec_type sec_type:2;
+@@ -4578,6 +4584,7 @@
+ const Elf_Internal_Rela *rel_end;
+ asection *sreloc;
+ asection **opd_sym_map;
++ struct elf_link_hash_entry *tga, *dottga;
+
+ if (info->relocatable)
+ return TRUE;
+@@ -4594,6 +4601,10 @@
+ BFD_ASSERT (is_ppc64_elf (abfd));
+
+ htab = ppc_hash_table (info);
++ tga = elf_link_hash_lookup (&htab->elf, "__tls_get_addr",
++ FALSE, FALSE, TRUE);
++ dottga = elf_link_hash_lookup (&htab->elf, ".__tls_get_addr",
++ FALSE, FALSE, TRUE);
+ symtab_hdr = &elf_symtab_hdr (abfd);
+
+ sym_hashes = elf_sym_hashes (abfd);
+@@ -4829,25 +4840,8 @@
+ if (!update_plt_info (abfd, (struct ppc_link_hash_entry *) h,
+ rel->r_addend))
+ return FALSE;
+- if (h == &htab->tls_get_addr->elf
+- || h == &htab->tls_get_addr_fd->elf)
++ if (h == tga || h == dottga)
+ sec->has_tls_reloc = 1;
+- else if (htab->tls_get_addr == NULL
+- && CONST_STRNEQ (h->root.root.string, ".__tls_get_addr")
+- && (h->root.root.string[15] == 0
+- || h->root.root.string[15] == '@'))
+- {
+- htab->tls_get_addr = (struct ppc_link_hash_entry *) h;
+- sec->has_tls_reloc = 1;
+- }
+- else if (htab->tls_get_addr_fd == NULL
+- && CONST_STRNEQ (h->root.root.string, "__tls_get_addr")
+- && (h->root.root.string[14] == 0
+- || h->root.root.string[14] == '@'))
+- {
+- htab->tls_get_addr_fd = (struct ppc_link_hash_entry *) h;
+- sec->has_tls_reloc = 1;
+- }
+ }
+ break;
+
+@@ -4891,23 +4885,30 @@
+ ppc64_sec = ppc64_elf_section_data (sec);
+ if (ppc64_sec->sec_type != sec_toc)
+ {
++ bfd_size_type amt;
++
+ /* One extra to simplify get_tls_mask. */
+- bfd_size_type amt = sec->size * sizeof (unsigned) / 8 + 1;
+- ppc64_sec->u.t_symndx = bfd_zalloc (abfd, amt);
+- if (ppc64_sec->u.t_symndx == NULL)
++ amt = sec->size * sizeof (unsigned) / 8 + sizeof (unsigned);
++ ppc64_sec->u.toc.symndx = bfd_zalloc (abfd, amt);
++ if (ppc64_sec->u.toc.symndx == NULL)
++ return FALSE;
++ amt = sec->size * sizeof (bfd_vma) / 8;
++ ppc64_sec->u.toc.add = bfd_zalloc (abfd, amt);
++ if (ppc64_sec->u.toc.add == NULL)
+ return FALSE;
+ BFD_ASSERT (ppc64_sec->sec_type == sec_normal);
+ ppc64_sec->sec_type = sec_toc;
+ }
+ BFD_ASSERT (rel->r_offset % 8 == 0);
+- ppc64_sec->u.t_symndx[rel->r_offset / 8] = r_symndx;
++ ppc64_sec->u.toc.symndx[rel->r_offset / 8] = r_symndx;
++ ppc64_sec->u.toc.add[rel->r_offset / 8] = rel->r_addend;
+
+ /* Mark the second slot of a GD or LD entry.
+ -1 to indicate GD and -2 to indicate LD. */
+ if (tls_type == (TLS_EXPLICIT | TLS_TLS | TLS_GD))
+- ppc64_sec->u.t_symndx[rel->r_offset / 8 + 1] = -1;
++ ppc64_sec->u.toc.symndx[rel->r_offset / 8 + 1] = -1;
+ else if (tls_type == (TLS_EXPLICIT | TLS_TLS | TLS_LD))
+- ppc64_sec->u.t_symndx[rel->r_offset / 8 + 1] = -2;
++ ppc64_sec->u.toc.symndx[rel->r_offset / 8 + 1] = -2;
+ goto dodyn;
+
+ case R_PPC64_TPREL16:
+@@ -5847,7 +5848,7 @@
+ fdh = (struct ppc_link_hash_entry *) fdh->elf.root.u.i.link;
+
+ if (fdh == NULL
+- && info->shared
++ && !info->executable
+ && (fh->elf.root.type == bfd_link_hash_undefined
+ || fh->elf.root.type == bfd_link_hash_undefweak))
+ {
+@@ -5880,7 +5881,7 @@
+
+ if (fdh != NULL
+ && !fdh->elf.forced_local
+- && (info->shared
++ && (!info->executable
+ || fdh->elf.def_dynamic
+ || fdh->elf.ref_dynamic
+ || (fdh->elf.root.type == bfd_link_hash_undefweak
+@@ -6258,9 +6259,12 @@
+ type suitable for optimization, and 1 otherwise. */
+
+ static int
+-get_tls_mask (char **tls_maskp, unsigned long *toc_symndx,
++get_tls_mask (char **tls_maskp,
++ unsigned long *toc_symndx,
++ bfd_vma *toc_addend,
+ Elf_Internal_Sym **locsymsp,
+- const Elf_Internal_Rela *rel, bfd *ibfd)
++ const Elf_Internal_Rela *rel,
++ bfd *ibfd)
+ {
+ unsigned long r_symndx;
+ int next_r;
+@@ -6288,12 +6292,14 @@
+ off = sym->st_value;
+ off += rel->r_addend;
+ BFD_ASSERT (off % 8 == 0);
+- r_symndx = ppc64_elf_section_data (sec)->u.t_symndx[off / 8];
+- next_r = ppc64_elf_section_data (sec)->u.t_symndx[off / 8 + 1];
+- if (!get_sym_h (&h, &sym, &sec, tls_maskp, locsymsp, r_symndx, ibfd))
+- return 0;
++ r_symndx = ppc64_elf_section_data (sec)->u.toc.symndx[off / 8];
++ next_r = ppc64_elf_section_data (sec)->u.toc.symndx[off / 8 + 1];
+ if (toc_symndx != NULL)
+ *toc_symndx = r_symndx;
++ if (toc_addend != NULL)
++ *toc_addend = ppc64_elf_section_data (sec)->u.toc.add[off / 8];
++ if (!get_sym_h (&h, &sym, &sec, tls_maskp, locsymsp, r_symndx, ibfd))
++ return 0;
+ if ((h == NULL
+ || ((h->root.type == bfd_link_hash_defined
+ || h->root.type == bfd_link_hash_defweak)
+@@ -6898,36 +6904,49 @@
+ struct ppc_link_hash_table *htab;
+
+ htab = ppc_hash_table (info);
+- if (htab->tls_get_addr != NULL)
+- {
+- struct ppc_link_hash_entry *h = htab->tls_get_addr;
+-
+- while (h->elf.root.type == bfd_link_hash_indirect
+- || h->elf.root.type == bfd_link_hash_warning)
+- h = (struct ppc_link_hash_entry *) h->elf.root.u.i.link;
++ htab->tls_get_addr = ((struct ppc_link_hash_entry *)
++ elf_link_hash_lookup (&htab->elf, ".__tls_get_addr",
++ FALSE, FALSE, TRUE));
++ htab->tls_get_addr_fd = ((struct ppc_link_hash_entry *)
++ elf_link_hash_lookup (&htab->elf, "__tls_get_addr",
++ FALSE, FALSE, TRUE));
++ return _bfd_elf_tls_setup (obfd, info);
++}
+
+- htab->tls_get_addr = h;
++/* Return TRUE iff REL is a branch reloc with a global symbol matching
++ HASH1 or HASH2. */
+
+- if (htab->tls_get_addr_fd == NULL
+- && h->oh != NULL
+- && h->oh->is_func_descriptor
+- && (h->oh->elf.root.type == bfd_link_hash_defined
+- || h->oh->elf.root.type == bfd_link_hash_defweak))
+- htab->tls_get_addr_fd = h->oh;
+- }
++static bfd_boolean
++branch_reloc_hash_match (const bfd *ibfd,
++ const Elf_Internal_Rela *rel,
++ const struct ppc_link_hash_entry *hash1,
++ const struct ppc_link_hash_entry *hash2)
++{
++ Elf_Internal_Shdr *symtab_hdr = &elf_symtab_hdr (ibfd);
++ enum elf_ppc64_reloc_type r_type = ELF64_R_TYPE (rel->r_info);
++ unsigned int r_symndx = ELF64_R_SYM (rel->r_info);
+
+- if (htab->tls_get_addr_fd != NULL)
++ if (r_symndx >= symtab_hdr->sh_info
++ && (r_type == R_PPC64_REL24
++ || r_type == R_PPC64_REL14
++ || r_type == R_PPC64_REL14_BRTAKEN
++ || r_type == R_PPC64_REL14_BRNTAKEN
++ || r_type == R_PPC64_ADDR24
++ || r_type == R_PPC64_ADDR14
++ || r_type == R_PPC64_ADDR14_BRTAKEN
++ || r_type == R_PPC64_ADDR14_BRNTAKEN))
+ {
+- struct ppc_link_hash_entry *h = htab->tls_get_addr_fd;
+-
+- while (h->elf.root.type == bfd_link_hash_indirect
+- || h->elf.root.type == bfd_link_hash_warning)
+- h = (struct ppc_link_hash_entry *) h->elf.root.u.i.link;
++ struct elf_link_hash_entry **sym_hashes = elf_sym_hashes (ibfd);
++ struct elf_link_hash_entry *h;
+
+- htab->tls_get_addr_fd = h;
++ h = sym_hashes[r_symndx - symtab_hdr->sh_info];
++ while (h->root.type == bfd_link_hash_indirect
++ || h->root.type == bfd_link_hash_warning)
++ h = (struct elf_link_hash_entry *) h->root.u.i.link;
++ if (h == &hash1->elf || h == &hash2->elf)
++ return TRUE;
+ }
+-
+- return _bfd_elf_tls_setup (obfd, info);
++ return FALSE;
+ }
+
+ /* Run through all the TLS relocs looking for optimization
+@@ -7173,55 +7192,26 @@
+ if (!expecting_tls_get_addr)
+ continue;
+
+- if (rel + 1 < relend)
++ if (rel + 1 < relend
++ && branch_reloc_hash_match (ibfd, rel + 1,
++ htab->tls_get_addr,
++ htab->tls_get_addr_fd))
+ {
+- Elf_Internal_Shdr *symtab_hdr;
+- enum elf_ppc64_reloc_type r_type2;
+- unsigned long r_symndx2;
+- struct elf_link_hash_entry *h2;
+-
+- symtab_hdr = &elf_symtab_hdr (ibfd);
+-
+- /* The next instruction should be a call to
+- __tls_get_addr. Peek at the reloc to be sure. */
+- r_type2 = ELF64_R_TYPE (rel[1].r_info);
+- r_symndx2 = ELF64_R_SYM (rel[1].r_info);
+- if (r_symndx2 >= symtab_hdr->sh_info
+- && (r_type2 == R_PPC64_REL14
+- || r_type2 == R_PPC64_REL14_BRTAKEN
+- || r_type2 == R_PPC64_REL14_BRNTAKEN
+- || r_type2 == R_PPC64_REL24))
++ if (expecting_tls_get_addr == 2)
+ {
+- struct elf_link_hash_entry **sym_hashes;
+-
+- sym_hashes = elf_sym_hashes (ibfd);
+-
+- h2 = sym_hashes[r_symndx2 - symtab_hdr->sh_info];
+- while (h2->root.type == bfd_link_hash_indirect
+- || h2->root.type == bfd_link_hash_warning)
+- h2 = ((struct elf_link_hash_entry *)
+- h2->root.u.i.link);
+- if (h2 != NULL
+- && (h2 == &htab->tls_get_addr->elf
+- || h2 == &htab->tls_get_addr_fd->elf))
+- {
+- if (expecting_tls_get_addr == 2)
+- {
+- /* Check for toc tls entries. */
+- char *toc_tls;
+- int retval;
+-
+- retval = get_tls_mask (&toc_tls, NULL,
+- &locsyms,
+- rel, ibfd);
+- if (retval == 0)
+- goto err_free_rel;
+- if (retval > 1 && toc_tls != NULL)
+- toc_ref[toc_ref_index] = 1;
+- }
+- continue;
+- }
++ /* Check for toc tls entries. */
++ char *toc_tls;
++ int retval;
++
++ retval = get_tls_mask (&toc_tls, NULL, NULL,
++ &locsyms,
++ rel, ibfd);
++ if (retval == 0)
++ goto err_free_rel;
++ if (retval > 1 && toc_tls != NULL)
++ toc_ref[toc_ref_index] = 1;
+ }
++ continue;
+ }
+
+ if (expecting_tls_get_addr != 1)
+@@ -9744,7 +9734,7 @@
+ /* Get tls info. */
+ char *tls_mask;
+
+- if (!get_tls_mask (&tls_mask, NULL, &local_syms,
++ if (!get_tls_mask (&tls_mask, NULL, NULL, &local_syms,
+ irela - 1, input_bfd))
+ goto error_ret_free_internal;
+ if (*tls_mask != 0)
+@@ -10236,6 +10226,7 @@
+ struct ppc_link_hash_entry *fdh;
+ const char *sym_name;
+ unsigned long r_symndx, toc_symndx;
++ bfd_vma toc_addend;
+ char tls_mask, tls_gd, tls_type;
+ char sym_type;
+ bfd_vma relocation;
+@@ -10344,8 +10335,8 @@
+ /* Check for toc tls entries. */
+ char *toc_tls;
+
+- if (!get_tls_mask (&toc_tls, &toc_symndx, &local_syms,
+- rel, input_bfd))
++ if (!get_tls_mask (&toc_tls, &toc_symndx, &toc_addend,
++ &local_syms, rel, input_bfd))
+ return FALSE;
+
+ if (toc_tls)
+@@ -10407,8 +10398,8 @@
+ char *toc_tls;
+ int retval;
+
+- retval = get_tls_mask (&toc_tls, &toc_symndx, &local_syms,
+- rel, input_bfd);
++ retval = get_tls_mask (&toc_tls, &toc_symndx, &toc_addend,
++ &local_syms, rel, input_bfd);
+ if (retval == 0)
+ return FALSE;
+
+@@ -10456,6 +10447,7 @@
+ if (toc_symndx != 0)
+ {
+ rel->r_info = ELF64_R_INFO (toc_symndx, r_type);
++ rel->r_addend = toc_addend;
+ /* We changed the symbol. Start over in order to
+ get h, sym, sec etc. right. */
+ rel--;
+@@ -10509,6 +10501,7 @@
+ if (toc_symndx != 0)
+ {
+ rel->r_info = ELF64_R_INFO (toc_symndx, r_type);
++ rel->r_addend = toc_addend;
+ /* We changed the symbol. Start over in order to
+ get h, sym, sec etc. right. */
+ rel--;
+@@ -10555,20 +10548,18 @@
+ case R_PPC64_GOT_TLSLD16_LO:
+ if (tls_mask != 0 && (tls_mask & TLS_LD) == 0)
+ {
+- bfd_vma insn1, insn2, insn3;
++ unsigned int insn1, insn2, insn3;
+ bfd_vma offset;
+
+ tls_ldgd_opt:
+ /* We know that the next reloc is on a tls_get_addr
+ call, since ppc64_elf_tls_optimize checks this. */
+ offset = rel[1].r_offset;
+- insn1 = bfd_get_32 (output_bfd,
+- contents + rel->r_offset - d_offset);
+- insn3 = bfd_get_32 (output_bfd,
+- contents + offset + 4);
+ if ((tls_mask & tls_gd) != 0)
+ {
+ /* IE */
++ insn1 = bfd_get_32 (output_bfd,
++ contents + rel->r_offset - d_offset);
+ insn1 &= (1 << 26) - (1 << 2);
+ insn1 |= 58 << 26; /* ld */
+ insn2 = 0x7c636a14; /* add 3,3,13 */
+@@ -10603,28 +10594,33 @@
+ rel->r_addend -= (local_syms[r_symndx].st_value
+ + sec->output_offset
+ + sec->output_section->vma);
+- rel[1].r_addend = rel->r_addend;
+ }
+ else if (toc_symndx != 0)
+- r_symndx = toc_symndx;
++ {
++ r_symndx = toc_symndx;
++ rel->r_addend = toc_addend;
++ }
+ r_type = R_PPC64_TPREL16_HA;
+ rel->r_info = ELF64_R_INFO (r_symndx, r_type);
+ rel[1].r_info = ELF64_R_INFO (r_symndx,
+ R_PPC64_TPREL16_LO);
+ rel[1].r_offset += d_offset;
++ rel[1].r_addend = rel->r_addend;
+ }
++ bfd_put_32 (output_bfd, insn1,
++ contents + rel->r_offset - d_offset);
++ insn3 = bfd_get_32 (output_bfd,
++ contents + offset + 4);
+ if (insn3 == NOP
+ || insn3 == CROR_151515 || insn3 == CROR_313131)
+ {
+- insn3 = insn2;
+- insn2 = NOP;
+ rel[1].r_offset += 4;
++ bfd_put_32 (output_bfd, insn2, contents + offset + 4);
++ insn2 = NOP;
+ }
+- bfd_put_32 (output_bfd, insn1,
+- contents + rel->r_offset - d_offset);
+ bfd_put_32 (output_bfd, insn2, contents + offset);
+- bfd_put_32 (output_bfd, insn3, contents + offset + 4);
+- if (tls_gd == 0 || toc_symndx != 0)
++ if ((tls_mask & tls_gd) == 0
++ && (tls_gd == 0 || toc_symndx != 0))
+ {
+ /* We changed the symbol. Start over in order
+ to get h, sym, sec etc. right. */
+@@ -11001,7 +10997,8 @@
+
+ *offp = off | 1;
+ if ((info->shared || indx != 0)
+- && (h == NULL
++ && (offp == &ppc64_tlsld_got (input_bfd)->offset
++ || h == NULL
+ || ELF_ST_VISIBILITY (h->elf.other) == STV_DEFAULT
+ || h->elf.root.type != bfd_link_hash_undefweak))
+ {
+diff -Naur binutils-2.19.1.orig/bfd/elf.c binutils-2.19.1/bfd/elf.c
+--- binutils-2.19.1.orig/bfd/elf.c 2008-12-23 05:54:48.000000000 -0800
++++ binutils-2.19.1/bfd/elf.c 2009-03-02 05:41:07.000000000 -0800
+@@ -1608,6 +1608,8 @@
+
+ if (hdr->sh_entsize != bed->s->sizeof_sym)
+ return FALSE;
++ if (hdr->sh_info * hdr->sh_entsize > hdr->sh_size)
++ return FALSE;
+ BFD_ASSERT (elf_onesymtab (abfd) == 0);
+ elf_onesymtab (abfd) = shindex;
+ elf_tdata (abfd)->symtab_hdr = *hdr;
+@@ -1863,14 +1865,8 @@
+ return TRUE;
+
+ case SHT_GROUP:
+- /* We need a BFD section for objcopy and relocatable linking,
+- and it's handy to have the signature available as the section
+- name. */
+ if (! IS_VALID_GROUP_SECTION_HEADER (hdr))
+ return FALSE;
+- name = group_signature (abfd, hdr);
+- if (name == NULL)
+- return FALSE;
+ if (!_bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
+ return FALSE;
+ if (hdr->contents != NULL)
+@@ -2687,13 +2683,15 @@
+ *failedptr = TRUE;
+ }
+
+-/* Fill in the contents of a SHT_GROUP section. */
++/* Fill in the contents of a SHT_GROUP section. Called from
++ _bfd_elf_compute_section_file_positions for gas, objcopy, and
++ when ELF targets use the generic linker, ld. Called for ld -r
++ from bfd_elf_final_link. */
+
+ void
+ bfd_elf_set_group_contents (bfd *abfd, asection *sec, void *failedptrarg)
+ {
+ bfd_boolean *failedptr = failedptrarg;
+- unsigned long symindx;
+ asection *elt, *first;
+ unsigned char *loc;
+ bfd_boolean gas;
+@@ -2704,20 +2702,49 @@
+ || *failedptr)
+ return;
+
+- symindx = 0;
+- if (elf_group_id (sec) != NULL)
+- symindx = elf_group_id (sec)->udata.i;
+-
+- if (symindx == 0)
+- {
+- /* If called from the assembler, swap_out_syms will have set up
+- elf_section_syms; If called for "ld -r", use target_index. */
+- if (elf_section_syms (abfd) != NULL)
+- symindx = elf_section_syms (abfd)[sec->index]->udata.i;
+- else
+- symindx = sec->target_index;
++ if (elf_section_data (sec)->this_hdr.sh_info == 0)
++ {
++ unsigned long symindx = 0;
++
++ /* elf_group_id will have been set up by objcopy and the
++ generic linker. */
++ if (elf_group_id (sec) != NULL)
++ symindx = elf_group_id (sec)->udata.i;
++
++ if (symindx == 0)
++ {
++ /* If called from the assembler, swap_out_syms will have set up
++ elf_section_syms. */
++ BFD_ASSERT (elf_section_syms (abfd) != NULL);
++ symindx = elf_section_syms (abfd)[sec->index]->udata.i;
++ }
++ elf_section_data (sec)->this_hdr.sh_info = symindx;
++ }
++ else if (elf_section_data (sec)->this_hdr.sh_info == (unsigned int) -2)
++ {
++ /* The ELF backend linker sets sh_info to -2 when the group
++ signature symbol is global, and thus the index can't be
++ set until all local symbols are output. */
++ asection *igroup = elf_sec_group (elf_next_in_group (sec));
++ struct bfd_elf_section_data *sec_data = elf_section_data (igroup);
++ unsigned long symndx = sec_data->this_hdr.sh_info;
++ unsigned long extsymoff = 0;
++ struct elf_link_hash_entry *h;
++
++ if (!elf_bad_symtab (igroup->owner))
++ {
++ Elf_Internal_Shdr *symtab_hdr;
++
++ symtab_hdr = &elf_tdata (igroup->owner)->symtab_hdr;
++ extsymoff = symtab_hdr->sh_info;
++ }
++ h = elf_sym_hashes (igroup->owner)[symndx - extsymoff];
++ while (h->root.type == bfd_link_hash_indirect
++ || h->root.type == bfd_link_hash_warning)
++ h = (struct elf_link_hash_entry *) h->root.u.i.link;
++
++ elf_section_data (sec)->this_hdr.sh_info = h->indx;
+ }
+- elf_section_data (sec)->this_hdr.sh_info = symindx;
+
+ /* The contents won't be allocated for "ld -r" or objcopy. */
+ gas = TRUE;
+@@ -4131,6 +4158,7 @@
+ bfd_size_type maxpagesize;
+ unsigned int alloc;
+ unsigned int i, j;
++ bfd_vma header_pad = 0;
+
+ if (link_info == NULL
+ && !_bfd_elf_map_sections_to_segments (abfd, link_info))
+@@ -4138,7 +4166,11 @@
+
+ alloc = 0;
+ for (m = elf_tdata (abfd)->segment_map; m != NULL; m = m->next)
+- ++alloc;
++ {
++ ++alloc;
++ if (m->header_size)
++ header_pad = m->header_size;
++ }
+
+ elf_elfheader (abfd)->e_phoff = bed->s->sizeof_ehdr;
+ elf_elfheader (abfd)->e_phentsize = bed->s->sizeof_phdr;
+@@ -4156,7 +4188,21 @@
+ return TRUE;
+ }
+
+- phdrs = bfd_alloc2 (abfd, alloc, sizeof (Elf_Internal_Phdr));
++ /* We're writing the size in elf_tdata (abfd)->program_header_size,
++ see assign_file_positions_except_relocs, so make sure we have
++ that amount allocated, with trailing space cleared.
++ The variable alloc contains the computed need, while elf_tdata
++ (abfd)->program_header_size contains the size used for the
++ layout.
++ See ld/emultempl/elf-generic.em:gld${EMULATION_NAME}_map_segments
++ where the layout is forced to according to a larger size in the
++ last iterations for the testcase ld-elf/header. */
++ BFD_ASSERT (elf_tdata (abfd)->program_header_size % bed->s->sizeof_phdr
++ == 0);
++ phdrs = bfd_zalloc2 (abfd,
++ (elf_tdata (abfd)->program_header_size
++ / bed->s->sizeof_phdr),
++ sizeof (Elf_Internal_Phdr));
+ elf_tdata (abfd)->phdr = phdrs;
+ if (phdrs == NULL)
+ return FALSE;
+@@ -4167,6 +4213,11 @@
+
+ off = bed->s->sizeof_ehdr;
+ off += alloc * bed->s->sizeof_phdr;
++ if (header_pad < (bfd_vma) off)
++ header_pad = 0;
++ else
++ header_pad -= off;
++ off += header_pad;
+
+ for (m = elf_tdata (abfd)->segment_map, p = phdrs, j = 0;
+ m != NULL;
+@@ -4354,6 +4405,11 @@
+
+ p->p_filesz += alloc * bed->s->sizeof_phdr;
+ p->p_memsz += alloc * bed->s->sizeof_phdr;
++ if (m->count)
++ {
++ p->p_filesz += header_pad;
++ p->p_memsz += header_pad;
++ }
+ }
+
+ if (p->p_type == PT_LOAD
+@@ -5836,6 +5892,10 @@
+ phdr_included = TRUE;
+ }
+
++ if (map->includes_filehdr && first_section)
++ /* We need to keep the space used by the headers fixed. */
++ map->header_size = first_section->vma - segment->p_vaddr;
++
+ if (!map->includes_phdrs
+ && !map->includes_filehdr
+ && map->p_paddr_valid)
+@@ -6004,7 +6064,7 @@
+ if (elf_section_flags (isec) & SHF_GROUP)
+ elf_section_flags (osec) |= SHF_GROUP;
+ elf_next_in_group (osec) = elf_next_in_group (isec);
+- elf_group_name (osec) = elf_group_name (isec);
++ elf_section_data (osec)->group = elf_section_data (isec)->group;
+ }
+ }
+
+diff -Naur binutils-2.19.1.orig/bfd/elf-eh-frame.c binutils-2.19.1/bfd/elf-eh-frame.c
+--- binutils-2.19.1.orig/bfd/elf-eh-frame.c 2008-09-17 02:00:44.000000000 -0700
++++ binutils-2.19.1/bfd/elf-eh-frame.c 2009-03-02 05:53:31.000000000 -0800
+@@ -549,16 +549,6 @@
+ < (bfd_size_type) ((buf) - ehbuf))) \
+ cookie->rel++
+
+-#define REQUIRE_CLEARED_RELOCS(buf) \
+- while (cookie->rel < cookie->relend \
+- && (cookie->rel->r_offset \
+- < (bfd_size_type) ((buf) - ehbuf))) \
+- { \
+- REQUIRE (cookie->rel->r_info == 0); \
+- REQUIRE (cookie->rel->r_addend == 0); \
+- cookie->rel++; \
+- }
+-
+ #define GET_RELOC(buf) \
+ ((cookie->rel < cookie->relend \
+ && (cookie->rel->r_offset \
+@@ -817,16 +807,16 @@
+
+ buf = last_fde + 4 + hdr_length;
+
+- /* Cleared FDE? The instructions will not be cleared but verify all
+- the relocation entries for them are cleared. */
+- if (rsec == NULL)
+- {
+- REQUIRE_CLEARED_RELOCS (buf);
+- }
+- else
+- {
+- SKIP_RELOCS (buf);
+- }
++ /* For NULL RSEC (cleared FDE belonging to a discarded section)
++ the relocations are commonly cleared. We do not sanity check if
++ all these relocations are cleared as (1) relocations to
++ .gcc_except_table will remain uncleared (they will get dropped
++ with the drop of this unused FDE) and (2) BFD already safely drops
++ relocations of any type to .eh_frame by
++ elf_section_ignore_discarded_relocs.
++ TODO: The .gcc_except_table entries should be also filtered as
++ .eh_frame entries; or GCC could rather use COMDAT for them. */
++ SKIP_RELOCS (buf);
+ }
+
+ /* Try to interpret the CFA instructions and find the first
+diff -Naur binutils-2.19.1.orig/bfd/elflink.c binutils-2.19.1/bfd/elflink.c
+--- binutils-2.19.1.orig/bfd/elflink.c 2008-08-22 01:32:39.000000000 -0700
++++ binutils-2.19.1/bfd/elflink.c 2009-03-02 05:48:42.000000000 -0800
+@@ -9046,6 +9046,63 @@
+ continue;
+ }
+
++ if (finfo->info->relocatable
++ && (o->flags & (SEC_LINKER_CREATED | SEC_GROUP)) == SEC_GROUP)
++ {
++ /* Deal with the group signature symbol. */
++ struct bfd_elf_section_data *sec_data = elf_section_data (o);
++ unsigned long symndx = sec_data->this_hdr.sh_info;
++ asection *osec = o->output_section;
++
++ if (symndx >= locsymcount
++ || (elf_bad_symtab (input_bfd)
++ && finfo->sections[symndx] == NULL))
++ {
++ struct elf_link_hash_entry *h = sym_hashes[symndx - extsymoff];
++ while (h->root.type == bfd_link_hash_indirect
++ || h->root.type == bfd_link_hash_warning)
++ h = (struct elf_link_hash_entry *) h->root.u.i.link;
++ /* Arrange for symbol to be output. */
++ h->indx = -2;
++ elf_section_data (osec)->this_hdr.sh_info = -2;
++ }
++ else if (ELF_ST_TYPE (isymbuf[symndx].st_info) == STT_SECTION)
++ {
++ /* We'll use the output section target_index. */
++ asection *sec = finfo->sections[symndx]->output_section;
++ elf_section_data (osec)->this_hdr.sh_info = sec->target_index;
++ }
++ else
++ {
++ if (finfo->indices[symndx] == -1)
++ {
++ /* Otherwise output the local symbol now. */
++ Elf_Internal_Sym sym = isymbuf[symndx];
++ asection *sec = finfo->sections[symndx]->output_section;
++ const char *name;
++
++ name = bfd_elf_string_from_elf_section (input_bfd,
++ symtab_hdr->sh_link,
++ sym.st_name);
++ if (name == NULL)
++ return FALSE;
++
++ sym.st_shndx = _bfd_elf_section_from_bfd_section (output_bfd,
++ sec);
++ if (sym.st_shndx == SHN_BAD)
++ return FALSE;
++
++ sym.st_value += o->output_offset;
++
++ finfo->indices[symndx] = bfd_get_symcount (output_bfd);
++ if (! elf_link_output_sym (finfo, name, &sym, o, NULL))
++ return FALSE;
++ }
++ elf_section_data (osec)->this_hdr.sh_info
++ = finfo->indices[symndx];
++ }
++ }
++
+ if ((o->flags & SEC_HAS_CONTENTS) == 0
+ || (o->size == 0 && (o->flags & SEC_RELOC) == 0))
+ continue;
+@@ -11982,8 +12039,21 @@
+ return ret;
+ }
+
++/* For a SHT_GROUP section, return the group signature. For other
++ sections, return the normal section name. */
++
++static const char *
++section_signature (asection *sec)
++{
++ if ((sec->flags & SEC_GROUP) != 0
++ && elf_next_in_group (sec) != NULL
++ && elf_group_name (elf_next_in_group (sec)) != NULL)
++ return elf_group_name (elf_next_in_group (sec));
++ return sec->name;
++}
++
+ void
+-_bfd_elf_section_already_linked (bfd *abfd, struct bfd_section *sec,
++_bfd_elf_section_already_linked (bfd *abfd, asection *sec,
+ struct bfd_link_info *info)
+ {
+ flagword flags;
+@@ -12023,7 +12093,7 @@
+ causes trouble for MIPS ELF, which relies on link once semantics
+ to handle the .reginfo section correctly. */
+
+- name = bfd_get_section_name (abfd, sec);
++ name = section_signature (sec);
+
+ if (CONST_STRNEQ (name, ".gnu.linkonce.")
+ && (p = strchr (name + sizeof (".gnu.linkonce.") - 1, '.')) != NULL)
+@@ -12038,7 +12108,7 @@
+ /* We may have 2 different types of sections on the list: group
+ sections and linkonce sections. Match like sections. */
+ if ((flags & SEC_GROUP) == (l->sec->flags & SEC_GROUP)
+- && strcmp (name, l->sec->name) == 0
++ && strcmp (name, section_signature (l->sec)) == 0
+ && bfd_coff_get_comdat_section (l->sec->owner, l->sec) == NULL)
+ {
+ /* The section has already been linked. See if we should
+@@ -12161,6 +12231,28 @@
+ }
+ }
+
++ /* Do not complain on unresolved relocations in `.gnu.linkonce.r.F'
++ referencing its discarded `.gnu.linkonce.t.F' counterpart - g++-3.4
++ specific as g++-4.x is using COMDAT groups (without the `.gnu.linkonce'
++ prefix) instead. `.gnu.linkonce.r.*' were the `.rodata' part of its
++ matching `.gnu.linkonce.t.*'. If `.gnu.linkonce.r.F' is not discarded
++ but its `.gnu.linkonce.t.F' is discarded means we chose one-only
++ `.gnu.linkonce.t.F' section from a different bfd not requiring any
++ `.gnu.linkonce.r.F'. Thus `.gnu.linkonce.r.F' should be discarded.
++ The reverse order cannot happen as there is never a bfd with only the
++ `.gnu.linkonce.r.F' section. The order of sections in a bfd does not
++ matter as here were are looking only for cross-bfd sections. */
++
++ if ((flags & SEC_GROUP) == 0 && CONST_STRNEQ (name, ".gnu.linkonce.r."))
++ for (l = already_linked_list->entry; l != NULL; l = l->next)
++ if ((l->sec->flags & SEC_GROUP) == 0
++ && CONST_STRNEQ (l->sec->name, ".gnu.linkonce.t."))
++ {
++ if (abfd != l->sec->owner)
++ sec->output_section = bfd_abs_section_ptr;
++ break;
++ }
++
+ /* This is the first section with this name. Record it. */
+ if (! bfd_section_already_linked_table_insert (already_linked_list, sec))
+ info->callbacks->einfo (_("%F%P: already_linked_table: %E"));
+diff -Naur binutils-2.19.1.orig/bfd/linker.c binutils-2.19.1/bfd/linker.c
+--- binutils-2.19.1.orig/bfd/linker.c 2008-08-16 20:12:49.000000000 -0700
++++ binutils-2.19.1/bfd/linker.c 2009-03-02 05:32:54.000000000 -0800
+@@ -2796,18 +2796,36 @@
+ }
+ }
+
+- /* Get and relocate the section contents. */
+- sec_size = (input_section->rawsize > input_section->size
+- ? input_section->rawsize
+- : input_section->size);
+- contents = bfd_malloc (sec_size);
+- if (contents == NULL && sec_size != 0)
+- goto error_return;
+- new_contents = (bfd_get_relocated_section_contents
+- (output_bfd, info, link_order, contents, info->relocatable,
+- _bfd_generic_link_get_symbols (input_bfd)));
+- if (!new_contents)
+- goto error_return;
++ if ((output_section->flags & (SEC_GROUP | SEC_LINKER_CREATED)) == SEC_GROUP
++ && input_section->size != 0)
++ {
++ /* Group section contents are set by bfd_elf_set_group_contents. */
++ if (!output_bfd->output_has_begun)
++ {
++ /* FIXME: This hack ensures bfd_elf_set_group_contents is called. */
++ if (!bfd_set_section_contents (output_bfd, output_section, "", 0, 1))
++ goto error_return;
++ }
++ new_contents = output_section->contents;
++ BFD_ASSERT (new_contents != NULL);
++ BFD_ASSERT (input_section->output_offset == 0);
++ }
++ else
++ {
++ /* Get and relocate the section contents. */
++ sec_size = (input_section->rawsize > input_section->size
++ ? input_section->rawsize
++ : input_section->size);
++ contents = bfd_malloc (sec_size);
++ if (contents == NULL && sec_size != 0)
++ goto error_return;
++ new_contents = (bfd_get_relocated_section_contents
++ (output_bfd, info, link_order, contents,
++ info->relocatable,
++ _bfd_generic_link_get_symbols (input_bfd)));
++ if (!new_contents)
++ goto error_return;
++ }
+
+ /* Output the section contents. */
+ loc = input_section->output_offset * bfd_octets_per_byte (output_bfd);
+diff -Naur binutils-2.19.1.orig/bfd/Makefile.in binutils-2.19.1/bfd/Makefile.in
+--- binutils-2.19.1.orig/bfd/Makefile.in 2009-02-02 02:44:39.000000000 -0800
++++ binutils-2.19.1/bfd/Makefile.in 2009-07-07 08:52:14.000000000 -0700
+@@ -190,7 +190,7 @@
+ PACKAGE_TARNAME = @PACKAGE_TARNAME@
+ PACKAGE_VERSION = @PACKAGE_VERSION@
+ PATH_SEPARATOR = @PATH_SEPARATOR@
+-PKGVERSION = @PKGVERSION@
++PKGVERSION = (GNU Binutils for Cross-LFS - Retrieved on 20090707)
+ POSUB = @POSUB@
+ RANLIB = @RANLIB@
+ REPORT_BUGS_TEXI = @REPORT_BUGS_TEXI@
+@@ -271,7 +271,7 @@
+ ACLOCAL_AMFLAGS = -I . -I .. -I ../config
+
+ # Uncomment the following line when doing a release.
+-RELEASE = y
++RELEASE=y
+ INCDIR = $(srcdir)/../include
+ CSEARCH = -I. -I$(srcdir) -I$(INCDIR)
+ MKDEP = gcc -MM
+diff -Naur binutils-2.19.1.orig/bfd/syms.c binutils-2.19.1/bfd/syms.c
+--- binutils-2.19.1.orig/bfd/syms.c 2008-06-30 13:51:58.000000000 -0700
++++ binutils-2.19.1/bfd/syms.c 2009-03-02 05:49:22.000000000 -0800
+@@ -1,6 +1,6 @@
+ /* Generic symbol-table support for the BFD library.
+ Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+- 2000, 2001, 2002, 2003, 2004, 2007
++ 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009
+ Free Software Foundation, Inc.
+ Written by Cygnus Support.
+
+@@ -1379,10 +1379,11 @@
+ {
+ size_t len;
+
+- if (info->filename != NULL)
+- free (info->filename);
++ /* Don't free info->filename here. objdump and other
++ apps keep a copy of a previously returned file name
++ pointer. */
+ len = strlen (file_name) + 1;
+- info->filename = bfd_malloc (dirlen + len);
++ info->filename = bfd_alloc (abfd, dirlen + len);
+ if (info->filename == NULL)
+ return FALSE;
+ memcpy (info->filename, directory_name, dirlen);
+diff -Naur binutils-2.19.1.orig/bfd/version.h binutils-2.19.1/bfd/version.h
+--- binutils-2.19.1.orig/bfd/version.h 2009-02-02 02:09:26.000000000 -0800
++++ binutils-2.19.1/bfd/version.h 2009-07-06 17:00:10.000000000 -0700
+@@ -1,4 +1,4 @@
+-#define BFD_VERSION_DATE 20090202
++#define BFD_VERSION_DATE 20090707
+ #define BFD_VERSION @bfd_version@
+ #define BFD_VERSION_STRING @bfd_version_package@ @bfd_version_string@
+ #define REPORT_BUGS_TO @report_bugs_to@
+diff -Naur binutils-2.19.1.orig/binutils/ChangeLog binutils-2.19.1/binutils/ChangeLog
+--- binutils-2.19.1.orig/binutils/ChangeLog 2008-12-23 05:54:49.000000000 -0800
++++ binutils-2.19.1/binutils/ChangeLog 2009-03-02 05:43:13.000000000 -0800
+@@ -1,3 +1,16 @@
++2009-03-02 Alan Modra <amodra@bigpond.net.au>
++
++ 2008-12-04 Ben Elliston <bje@au.ibm.com>
++ * doc/binutils.texi (objdump): Update booke documentation.
++ * NEWS: Document user-visible changes to command line options.
++
++ 2008-10-10 Nathan Froyd <froydnj@codesourcery.com>
++ * readelf.c (display_power_gnu_attribute): Decode
++ Tag_GNU_Power_ABI_Struct_Return.
++
++ 2008-09-28 Alan Modra <amodra@bigpond.net.au>
++ * objcopy.c (setup_section): Set elf_group_id.
++
+ 2008-12-23 Nick Clifton <nickc@redhat.com>
+
+ * windmc.c (main): Use correct type for file length.
+diff -Naur binutils-2.19.1.orig/binutils/doc/binutils.texi binutils-2.19.1/binutils/doc/binutils.texi
+--- binutils-2.19.1.orig/binutils/doc/binutils.texi 2008-08-05 17:42:17.000000000 -0700
++++ binutils-2.19.1/binutils/doc/binutils.texi 2009-03-02 05:43:13.000000000 -0800
+@@ -1843,12 +1843,12 @@
+ instructs the disassembler to print a mnemonic suffix even when the
+ suffix could be inferred by the operands.
+
+-For PPC, @option{booke}, @option{booke32} and @option{booke64} select
+-disassembly of BookE instructions. @option{32} and @option{64} select
+-PowerPC and PowerPC64 disassembly, respectively. @option{e300}
+-selects disassembly for the e300 family. @option{440} selects
+-disassembly for the PowerPC 440. @option{ppcps} selects disassembly
+-for the paired single instructions of the PPC750CL.
++For PowerPC, @option{booke} controls the disassembly of BookE
++instructions. @option{32} and @option{64} select PowerPC and
++PowerPC64 disassembly, respectively. @option{e300} selects
++disassembly for the e300 family. @option{440} selects disassembly for
++the PowerPC 440. @option{ppcps} selects disassembly for the paired
++single instructions of the PPC750CL.
+
+ For MIPS, this option controls the printing of instruction mnemonic
+ names and register names in disassembled instructions. Multiple
+diff -Naur binutils-2.19.1.orig/binutils/NEWS binutils-2.19.1/binutils/NEWS
+--- binutils-2.19.1.orig/binutils/NEWS 2008-09-08 01:56:56.000000000 -0700
++++ binutils-2.19.1/binutils/NEWS 2009-03-02 05:43:13.000000000 -0800
+@@ -1,5 +1,9 @@
+ -*- text -*-
+
++* Support for PowerPC booke64 instructions has been removed. The assembler no
++ longer accepts -mbooke32 or -mbooke64 and the disassembler no longer accepts
++ -Mbooke32 or -Mbooke64. Instead, -mbooke and -Mbooke should be used.
++
+ Changes in 2.19:
+
+ * Added -wL switch to dump decoded contents of .debug_line.
+diff -Naur binutils-2.19.1.orig/binutils/objcopy.c binutils-2.19.1/binutils/objcopy.c
+--- binutils-2.19.1.orig/binutils/objcopy.c 2008-08-05 17:42:17.000000000 -0700
++++ binutils-2.19.1/binutils/objcopy.c 2009-03-02 05:31:14.000000000 -0800
+@@ -2344,6 +2344,18 @@
+ if (extract_symbol)
+ return;
+
++ if ((isection->flags & SEC_GROUP) != 0)
++ {
++ asymbol *gsym = group_signature (isection);
++
++ if (gsym != NULL)
++ {
++ gsym->flags |= BSF_KEEP;
++ if (ibfd->xvec->flavour == bfd_target_elf_flavour)
++ elf_group_id (isection) = gsym;
++ }
++ }
++
+ /* Allow the BFD backend to copy any private data it understands
+ from the input section to the output section. */
+ if (!bfd_copy_private_section_data (ibfd, isection, obfd, osection))
+@@ -2351,13 +2363,6 @@
+ err = _("failed to copy private data");
+ goto loser;
+ }
+- else if ((isection->flags & SEC_GROUP) != 0)
+- {
+- asymbol *gsym = group_signature (isection);
+-
+- if (gsym != NULL)
+- gsym->flags |= BSF_KEEP;
+- }
+
+ /* All went well. */
+ return;
+diff -Naur binutils-2.19.1.orig/binutils/readelf.c binutils-2.19.1/binutils/readelf.c
+--- binutils-2.19.1.orig/binutils/readelf.c 2008-09-17 02:00:44.000000000 -0700
++++ binutils-2.19.1/binutils/readelf.c 2009-03-02 05:35:24.000000000 -0800
+@@ -9062,6 +9062,29 @@
+ return p;
+ }
+
++ if (tag == Tag_GNU_Power_ABI_Struct_Return)
++ {
++ val = read_uleb128 (p, &len);
++ p += len;
++ printf (" Tag_GNU_Power_ABI_Struct_Return: ");
++ switch (val)
++ {
++ case 0:
++ printf ("Any\n");
++ break;
++ case 1:
++ printf ("r3/r4\n");
++ break;
++ case 2:
++ printf ("Memory\n");
++ break;
++ default:
++ printf ("??? (%d)\n", val);
++ break;
++ }
++ return p;
++ }
++
+ if (tag & 1)
+ type = 1; /* String. */
+ else
+diff -Naur binutils-2.19.1.orig/configure.ac binutils-2.19.1/configure.ac
+--- binutils-2.19.1.orig/configure.ac 2009-02-02 03:54:49.000000000 -0800
++++ binutils-2.19.1/configure.ac 2008-09-03 19:18:16.000000000 -0700
+@@ -166,7 +166,7 @@
+ # binutils, gas and ld appear in that order because it makes sense to run
+ # "make check" in that particular order.
+ # If --enable-gold is used, "gold" will replace "ld".
+-host_tools="byacc flex bison binutils gas ld fixincludes gcc sid sim gdb make patch prms send-pr gprof etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool diff rcs fileutils shellutils time textutils wdiff find uudecode hello tar gzip indent recode release sed utils guile perl gawk findutils gettext zip fastjar gnattools"
++host_tools="texinfo byacc flex bison binutils gas ld fixincludes gcc sid sim gdb make patch prms send-pr gprof etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool diff rcs fileutils shellutils time textutils wdiff find uudecode hello tar gzip indent recode release sed utils guile perl gawk findutils gettext zip fastjar gnattools"
+
+ # libgcj represents the runtime libraries only used by gcj.
+ libgcj="target-libffi \
+diff -Naur binutils-2.19.1.orig/gas/ChangeLog binutils-2.19.1/gas/ChangeLog
+--- binutils-2.19.1.orig/gas/ChangeLog 2009-01-14 00:51:14.000000000 -0800
++++ binutils-2.19.1/gas/ChangeLog 2009-04-01 08:47:36.000000000 -0700
+@@ -1,3 +1,39 @@
++2009-04-01 Nick Clifton <nickc@redhat.com>
++
++ * Import this patch:
++
++ 2008-11-14 Peter Jansen <pwjansen@yahoo.com>
++
++ PR 7026
++ * config/tc-arm.c: Ensure that all uses of as_bad have a
++ formatting string.
++
++2009-03-04 Alan Modra <amodra@bigpond.net.au>
++
++ * config/tc-ppc.c (md_assemble): APUinfo only for e500.
++
++2009-03-02 Alan Modra <amodra@bigpond.net.au>
++
++ 2009-02-26 Peter Bergner <bergner@vnet.ibm.com>
++ * config/tc-ppc.c (pre_defined_registers): Add "f32" to "f63",
++ "f.32" to "f.63", "vs0" to "vs63" and "vs.0" to "vs.63".
++ (parse_cpu): Extend -mpower7 to accept power7 and isel instructions.
++
++ 2009-01-09 Peter Bergner <bergner@vnet.ibm.com>
++ * config/tc-ppc.c (ppc_setup_opcodes): Remove PPC_OPCODE_NOPOWER4 test.
++ Test the new "deprecated" opcode field.
++
++ 2008-12-04 Ben Elliston <bje@au.ibm.com>
++ * config/tc-ppc.c (parse_cpu): Remove booke64 support. Update
++ usage strings.
++ (ppc_setup_opcodes): Likewise, remove booke64 support.
++ * doc/c-ppc.texi (PowerPC-Opts): Remove -mbooke32 and -mbooke64.
++ * doc/as.texinfo (Overview): Likewise.
++
++ 2008-09-09 Peter Bergner <bergner@vnet.ibm.com>
++ * config/tc-ppc.c (ppc_setup_opcodes): Simplify POWER4/NOPOWER4 test.
++ Remove POWER5 and POWER6 tests.
++
+ 2009-01-14 Jakub Jelinek <jakub@redhat.com>
+
+ * Makefile.am (ehopt.o): Add struc-symbol.h.
+@@ -132,7 +168,7 @@
+ targets.
+ * doc/c-i386.texi (i386-Directives): New node. Used to document
+ the .lcomm directive.
+-
++
+ 2008-08-30 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * config/tc-hppa.h: Don't define DWARF2_EH_FRAME_READ_ONLY on Linux
+diff -Naur binutils-2.19.1.orig/gas/config/tc-arm.c binutils-2.19.1/gas/config/tc-arm.c
+--- binutils-2.19.1.orig/gas/config/tc-arm.c 2008-08-12 16:39:30.000000000 -0700
++++ binutils-2.19.1/gas/config/tc-arm.c 2009-04-01 08:47:37.000000000 -0700
+@@ -3456,7 +3456,7 @@
+
+ if (reg == FAIL)
+ {
+- as_bad (_(reg_expected_msgs[REG_TYPE_MMXWR]));
++ as_bad ("%s", _(reg_expected_msgs[REG_TYPE_MMXWR]));
+ goto error;
+ }
+
+@@ -3470,7 +3470,7 @@
+ hi_reg = arm_reg_parse (&input_line_pointer, REG_TYPE_MMXWR);
+ if (hi_reg == FAIL)
+ {
+- as_bad (_(reg_expected_msgs[REG_TYPE_MMXWR]));
++ as_bad ("%s", _(reg_expected_msgs[REG_TYPE_MMXWR]));
+ goto error;
+ }
+ else if (reg >= hi_reg)
+@@ -3588,7 +3588,7 @@
+
+ if (reg == FAIL)
+ {
+- as_bad (_(reg_expected_msgs[REG_TYPE_MMXWCG]));
++ as_bad ("%s", _(reg_expected_msgs[REG_TYPE_MMXWCG]));
+ goto error;
+ }
+
+@@ -3603,7 +3603,7 @@
+ hi_reg = arm_reg_parse (&input_line_pointer, REG_TYPE_MMXWCG);
+ if (hi_reg == FAIL)
+ {
+- as_bad (_(reg_expected_msgs[REG_TYPE_MMXWCG]));
++ as_bad ("%s", _(reg_expected_msgs[REG_TYPE_MMXWCG]));
+ goto error;
+ }
+ else if (reg >= hi_reg)
+@@ -3709,7 +3709,7 @@
+ reg = arm_reg_parse (&input_line_pointer, REG_TYPE_RN);
+ if (reg == FAIL)
+ {
+- as_bad (_(reg_expected_msgs[REG_TYPE_RN]));
++ as_bad ("%s", _(reg_expected_msgs[REG_TYPE_RN]));
+ ignore_rest_of_line ();
+ return;
+ }
+diff -Naur binutils-2.19.1.orig/gas/config/tc-ppc.c binutils-2.19.1/gas/config/tc-ppc.c
+--- binutils-2.19.1.orig/gas/config/tc-ppc.c 2008-08-01 21:38:50.000000000 -0700
++++ binutils-2.19.1/gas/config/tc-ppc.c 2009-03-03 15:16:02.000000000 -0800
+@@ -1,6 +1,6 @@
+ /* tc-ppc.c -- Assemble for the PowerPC or POWER (RS/6000)
+ Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+- 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
++ 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+ Written by Ian Lance Taylor, Cygnus Support.
+
+ This file is part of GAS, the GNU Assembler.
+@@ -358,9 +358,42 @@
+ { "f.3", 3 },
+ { "f.30", 30 },
+ { "f.31", 31 },
++
++ { "f.32", 32 }, /* Extended floating point scalar registers (ISA 2.06). */
++ { "f.33", 33 },
++ { "f.34", 34 },
++ { "f.35", 35 },
++ { "f.36", 36 },
++ { "f.37", 37 },
++ { "f.38", 38 },
++ { "f.39", 39 },
+ { "f.4", 4 },
++ { "f.40", 40 },
++ { "f.41", 41 },
++ { "f.42", 42 },
++ { "f.43", 43 },
++ { "f.44", 44 },
++ { "f.45", 45 },
++ { "f.46", 46 },
++ { "f.47", 47 },
++ { "f.48", 48 },
++ { "f.49", 49 },
+ { "f.5", 5 },
++ { "f.50", 50 },
++ { "f.51", 51 },
++ { "f.52", 52 },
++ { "f.53", 53 },
++ { "f.54", 54 },
++ { "f.55", 55 },
++ { "f.56", 56 },
++ { "f.57", 57 },
++ { "f.58", 58 },
++ { "f.59", 59 },
+ { "f.6", 6 },
++ { "f.60", 60 },
++ { "f.61", 61 },
++ { "f.62", 62 },
++ { "f.63", 63 },
+ { "f.7", 7 },
+ { "f.8", 8 },
+ { "f.9", 9 },
+@@ -391,9 +424,42 @@
+ { "f3", 3 },
+ { "f30", 30 },
+ { "f31", 31 },
++
++ { "f32", 32 }, /* Extended floating point scalar registers (ISA 2.06). */
++ { "f33", 33 },
++ { "f34", 34 },
++ { "f35", 35 },
++ { "f36", 36 },
++ { "f37", 37 },
++ { "f38", 38 },
++ { "f39", 39 },
+ { "f4", 4 },
++ { "f40", 40 },
++ { "f41", 41 },
++ { "f42", 42 },
++ { "f43", 43 },
++ { "f44", 44 },
++ { "f45", 45 },
++ { "f46", 46 },
++ { "f47", 47 },
++ { "f48", 48 },
++ { "f49", 49 },
+ { "f5", 5 },
++ { "f50", 50 },
++ { "f51", 51 },
++ { "f52", 52 },
++ { "f53", 53 },
++ { "f54", 54 },
++ { "f55", 55 },
++ { "f56", 56 },
++ { "f57", 57 },
++ { "f58", 58 },
++ { "f59", 59 },
+ { "f6", 6 },
++ { "f60", 60 },
++ { "f61", 61 },
++ { "f62", 62 },
++ { "f63", 63 },
+ { "f7", 7 },
+ { "f8", 8 },
+ { "f9", 9 },
+@@ -501,7 +567,7 @@
+ { "srr0", 26 }, /* Machine Status Save/Restore Register 0 */
+ { "srr1", 27 }, /* Machine Status Save/Restore Register 1 */
+
+- { "v.0", 0 }, /* Vector registers */
++ { "v.0", 0 }, /* Vector (Altivec/VMX) registers */
+ { "v.1", 1 },
+ { "v.10", 10 },
+ { "v.11", 11 },
+@@ -567,6 +633,136 @@
+ { "v8", 8 },
+ { "v9", 9 },
+
++ { "vs.0", 0 }, /* Vector Scalar (VSX) registers (ISA 2.06). */
++ { "vs.1", 1 },
++ { "vs.10", 10 },
++ { "vs.11", 11 },
++ { "vs.12", 12 },
++ { "vs.13", 13 },
++ { "vs.14", 14 },
++ { "vs.15", 15 },
++ { "vs.16", 16 },
++ { "vs.17", 17 },
++ { "vs.18", 18 },
++ { "vs.19", 19 },
++ { "vs.2", 2 },
++ { "vs.20", 20 },
++ { "vs.21", 21 },
++ { "vs.22", 22 },
++ { "vs.23", 23 },
++ { "vs.24", 24 },
++ { "vs.25", 25 },
++ { "vs.26", 26 },
++ { "vs.27", 27 },
++ { "vs.28", 28 },
++ { "vs.29", 29 },
++ { "vs.3", 3 },
++ { "vs.30", 30 },
++ { "vs.31", 31 },
++ { "vs.32", 32 },
++ { "vs.33", 33 },
++ { "vs.34", 34 },
++ { "vs.35", 35 },
++ { "vs.36", 36 },
++ { "vs.37", 37 },
++ { "vs.38", 38 },
++ { "vs.39", 39 },
++ { "vs.4", 4 },
++ { "vs.40", 40 },
++ { "vs.41", 41 },
++ { "vs.42", 42 },
++ { "vs.43", 43 },
++ { "vs.44", 44 },
++ { "vs.45", 45 },
++ { "vs.46", 46 },
++ { "vs.47", 47 },
++ { "vs.48", 48 },
++ { "vs.49", 49 },
++ { "vs.5", 5 },
++ { "vs.50", 50 },
++ { "vs.51", 51 },
++ { "vs.52", 52 },
++ { "vs.53", 53 },
++ { "vs.54", 54 },
++ { "vs.55", 55 },
++ { "vs.56", 56 },
++ { "vs.57", 57 },
++ { "vs.58", 58 },
++ { "vs.59", 59 },
++ { "vs.6", 6 },
++ { "vs.60", 60 },
++ { "vs.61", 61 },
++ { "vs.62", 62 },
++ { "vs.63", 63 },
++ { "vs.7", 7 },
++ { "vs.8", 8 },
++ { "vs.9", 9 },
++
++ { "vs0", 0 },
++ { "vs1", 1 },
++ { "vs10", 10 },
++ { "vs11", 11 },
++ { "vs12", 12 },
++ { "vs13", 13 },
++ { "vs14", 14 },
++ { "vs15", 15 },
++ { "vs16", 16 },
++ { "vs17", 17 },
++ { "vs18", 18 },
++ { "vs19", 19 },
++ { "vs2", 2 },
++ { "vs20", 20 },
++ { "vs21", 21 },
++ { "vs22", 22 },
++ { "vs23", 23 },
++ { "vs24", 24 },
++ { "vs25", 25 },
++ { "vs26", 26 },
++ { "vs27", 27 },
++ { "vs28", 28 },
++ { "vs29", 29 },
++ { "vs3", 3 },
++ { "vs30", 30 },
++ { "vs31", 31 },
++ { "vs32", 32 },
++ { "vs33", 33 },
++ { "vs34", 34 },
++ { "vs35", 35 },
++ { "vs36", 36 },
++ { "vs37", 37 },
++ { "vs38", 38 },
++ { "vs39", 39 },
++ { "vs4", 4 },
++ { "vs40", 40 },
++ { "vs41", 41 },
++ { "vs42", 42 },
++ { "vs43", 43 },
++ { "vs44", 44 },
++ { "vs45", 45 },
++ { "vs46", 46 },
++ { "vs47", 47 },
++ { "vs48", 48 },
++ { "vs49", 49 },
++ { "vs5", 5 },
++ { "vs50", 50 },
++ { "vs51", 51 },
++ { "vs52", 52 },
++ { "vs53", 53 },
++ { "vs54", 54 },
++ { "vs55", 55 },
++ { "vs56", 56 },
++ { "vs57", 57 },
++ { "vs58", 58 },
++ { "vs59", 59 },
++ { "vs6", 6 },
++ { "vs60", 60 },
++ { "vs61", 61 },
++ { "vs62", 62 },
++ { "vs63", 63 },
++ { "vs7", 7 },
++ { "vs8", 8 },
++ { "vs9", 9 },
++
+ { "xer", 1 },
+
+ };
+@@ -919,12 +1115,6 @@
+ {
+ ppc_cpu = PPC_OPCODE_PPC | PPC_OPCODE_BOOKE | PPC_OPCODE_32;
+ }
+- /* -mbooke64 means enable 64-bit BookE support. */
+- else if (strcmp (arg, "booke64") == 0)
+- {
+- ppc_cpu = (PPC_OPCODE_PPC | PPC_OPCODE_BOOKE
+- | PPC_OPCODE_BOOKE64 | PPC_OPCODE_64);
+- }
+ else if (strcmp (arg, "power4") == 0)
+ {
+ ppc_cpu = (PPC_OPCODE_PPC | PPC_OPCODE_CLASSIC
+@@ -946,8 +1136,9 @@
+ else if (strcmp (arg, "power7") == 0)
+ {
+ ppc_cpu = (PPC_OPCODE_PPC | PPC_OPCODE_CLASSIC
+- | PPC_OPCODE_64 | PPC_OPCODE_POWER4
+- | PPC_OPCODE_POWER5 | PPC_OPCODE_POWER6
++ | PPC_OPCODE_ISEL | PPC_OPCODE_64
++ | PPC_OPCODE_POWER4 | PPC_OPCODE_POWER5
++ | PPC_OPCODE_POWER6 | PPC_OPCODE_POWER7
+ | PPC_OPCODE_ALTIVEC | PPC_OPCODE_VSX);
+ }
+ else if (strcmp (arg, "cell") == 0)
+@@ -1149,8 +1340,7 @@
+ fprintf (stream, _("\
+ -mppc64, -m620 generate code for PowerPC 620/625/630\n\
+ -mppc64bridge generate code for PowerPC 64, including bridge insns\n\
+--mbooke64 generate code for 64-bit PowerPC BookE\n\
+--mbooke, mbooke32 generate code for 32-bit PowerPC BookE\n\
++-mbooke generate code for 32-bit PowerPC BookE\n\
+ -mpower4 generate code for Power4 architecture\n\
+ -mpower5 generate code for Power5 architecture\n\
+ -mpower6 generate code for Power6 architecture\n\
+@@ -1359,8 +1549,7 @@
+
+ There are also cases where the table needs to be out
+ of order to disassemble the correct instruction for
+- processor variants. eg. "lhae" booke64 insn must be
+- found before "ld" ppc64 insn. */
++ processor variants. */
+ else if (0)
+ {
+ unsigned long t1 = op[0].opcode;
+@@ -1420,23 +1609,7 @@
+ || ((op->flags & (PPC_OPCODE_32 | PPC_OPCODE_64))
+ == (ppc_cpu & (PPC_OPCODE_32 | PPC_OPCODE_64)))
+ || (ppc_cpu & PPC_OPCODE_64_BRIDGE) != 0)
+- /* Certain instructions (eg: extsw) do not exist in the
+- 32-bit BookE instruction set, but they do exist in the
+- 64-bit BookE instruction set, and other PPC instruction
+- sets. Check to see if the opcode has the BOOKE64 flag set.
+- If it does make sure that the target CPU is not the BookE32. */
+- && ((op->flags & PPC_OPCODE_BOOKE64) == 0
+- || (ppc_cpu & PPC_OPCODE_BOOKE64) == PPC_OPCODE_BOOKE64
+- || (ppc_cpu & PPC_OPCODE_BOOKE) == 0)
+- && ((op->flags & (PPC_OPCODE_POWER4 | PPC_OPCODE_NOPOWER4)) == 0
+- || ((op->flags & PPC_OPCODE_POWER4)
+- == (ppc_cpu & PPC_OPCODE_POWER4)))
+- && ((op->flags & PPC_OPCODE_POWER5) == 0
+- || ((op->flags & PPC_OPCODE_POWER5)
+- == (ppc_cpu & PPC_OPCODE_POWER5)))
+- && ((op->flags & PPC_OPCODE_POWER6) == 0
+- || ((op->flags & PPC_OPCODE_POWER6)
+- == (ppc_cpu & PPC_OPCODE_POWER6))))
++ && !(ppc_cpu & op->deprecated))
+ {
+ const char *retval;
+
+@@ -2792,10 +2965,7 @@
+
+ #ifdef OBJ_ELF
+ /* Do we need/want a APUinfo section? */
+- if (ppc_cpu & (PPC_OPCODE_SPE
+- | PPC_OPCODE_ISEL | PPC_OPCODE_EFS
+- | PPC_OPCODE_BRLOCK | PPC_OPCODE_PMR | PPC_OPCODE_CACHELCK
+- | PPC_OPCODE_RFMCI))
++ if ((ppc_cpu & PPC_OPCODE_E500MC) != 0)
+ {
+ /* These are all version "1". */
+ if (opcode->flags & PPC_OPCODE_SPE)
+diff -Naur binutils-2.19.1.orig/gas/doc/as.texinfo binutils-2.19.1/gas/doc/as.texinfo
+--- binutils-2.19.1.orig/gas/doc/as.texinfo 2008-10-02 01:07:17.000000000 -0700
++++ binutils-2.19.1/gas/doc/as.texinfo 2009-03-02 05:43:14.000000000 -0800
+@@ -409,8 +409,7 @@
+
+ @emph{Target PowerPC options:}
+ [@b{-mpwrx}|@b{-mpwr2}|@b{-mpwr}|@b{-m601}|@b{-mppc}|@b{-mppc32}|@b{-m603}|@b{-m604}|
+- @b{-m403}|@b{-m405}|@b{-mppc64}|@b{-m620}|@b{-mppc64bridge}|@b{-mbooke}|
+- @b{-mbooke32}|@b{-mbooke64}]
++ @b{-m403}|@b{-m405}|@b{-mppc64}|@b{-m620}|@b{-mppc64bridge}|@b{-mbooke}]
+ [@b{-mcom}|@b{-many}|@b{-maltivec}|@b{-mvsx}] [@b{-memb}]
+ [@b{-mregnames}|@b{-mno-regnames}]
+ [@b{-mrelocatable}|@b{-mrelocatable-lib}]
+diff -Naur binutils-2.19.1.orig/gas/doc/c-ppc.texi binutils-2.19.1/gas/doc/c-ppc.texi
+--- binutils-2.19.1.orig/gas/doc/c-ppc.texi 2008-08-01 21:38:50.000000000 -0700
++++ binutils-2.19.1/gas/doc/c-ppc.texi 2009-03-02 05:43:14.000000000 -0800
+@@ -70,10 +70,7 @@
+ @item -mppc64bridge
+ Generate code for PowerPC 64, including bridge insns.
+
+-@item -mbooke64
+-Generate code for 64-bit BookE.
+-
+-@item -mbooke, mbooke32
++@item -mbooke
+ Generate code for 32-bit BookE.
+
+ @item -me300
+diff -Naur binutils-2.19.1.orig/gas/testsuite/ChangeLog binutils-2.19.1/gas/testsuite/ChangeLog
+--- binutils-2.19.1.orig/gas/testsuite/ChangeLog 2009-01-14 00:49:59.000000000 -0800
++++ binutils-2.19.1/gas/testsuite/ChangeLog 2009-03-02 05:59:36.000000000 -0800
+@@ -1,3 +1,56 @@
++2009-03-02 Alan Modra <amodra@bigpond.net.au>
++
++ 2009-02-26 Peter Bergner <bergner@vnet.ibm.com>
++ * gas/ppc/e500mc.d ("wait", "waitsrv", "waitimpl"): Add tests.
++ * gas/ppc/e500mc.s: Likewise.
++ * gas/ppc/power6.d ("cdtbcd", "cbcdtd", "addg6s"): Add tests.
++ * gas/ppc/power6.s: Likewise.
++ * gas/ppc/power7.d ("lfdpx", "mffgpr", "mftgpr"): Remove invalid tests.
++ ("wait", "waitsrv", "waitimpl", "divwe", "divwe.", "divweo", "divweo.",
++ "divweu", "divweu.", "divweuo", "divweuo.", "bpermd", "popcntw",
++ "popcntd", "ldbrx", "stdbrx", "lfiwzx", "lfiwzx", "fcfids", "fcfids.",
++ "fcfidus", "fcfidus.", "fctiwu", "fctiwu.", "fctiwuz", "fctiwuz.",
++ "fctidu", "fctidu.", "fctiduz", "fctiduz.", "fcfidu", "fcfidu.",
++ "ftdiv", "ftdiv", "ftsqrt", "ftsqrt", "dcbtt", "dcbtstt", "dcffix",
++ "dcffix.", "lbarx", "lbarx", "lbarx", "lharx", "lharx", "lharx",
++ "stbcx.", "sthcx.", "fre", "fre.", "fres", "fres.", "frsqrte",
++ "frsqrte.", "frsqrtes", "frsqrtes.", "isel"): Add tests.
++ * gas/ppc/power7.s: Likewise.
++ * gas/ppc/vsx.d: New test.
++ * gas/ppc/vsx.s: Likewise.
++ * gas/ppc/ppc.exp: Run it.
++
++ 2009-02-19 Peter Bergner <bergner@vnet.ibm.com>
++ * gas/ppc/e500mc.d ("lfdepx", "stfdepx"): Fix tests to expect a
++ floating point register.
++
++ 2009-02-05 Peter Bergner <bergner@vnet.ibm.com>
++ * gas/ppc/booke.s ("dcbt", "dcbtst"): New tests.
++ * gas/ppc/booke.d: Likewise.
++ * gas/ppc/power4_32.s: Likewise.
++ * gas/ppc/power4_32.d: Likewise.
++
++ 2009-01-14 Peter Bergner <bergner@vnet.ibm.com>
++ * gas/ppc/power6.s ("mtfsf", "mtfsf.", "mtfsfi", "mtfsfi."): Add tests.
++ * gas/ppc/power6.d: Likewise.
++
++ 2008-12-04 Ben Elliston <bje@au.ibm.com>
++ * gas/ppc/booke.s: Remove booke64 instructions.
++ * gas/ppc/booke.d: Update expected disassembly output.
++ * gas/ppc/booke_xcoff.s: Use -mbooke/-Mbooke.
++ * gas/ppc/booke_xcoff.d: Likewise.
++ * gas/ppc/booke_xcoff64.d: Likewise.
++ * gas/ppc/booke_xcoff64.s: Likewise.
++
++ 2008-09-09 Peter Bergner <bergner@vnet.ibm.com>
++ * gas/ppc/common.s: New test.
++ * gas/ppc/common.d: Likewise.
++ * gas/ppc/power4_32.s: Likewise.
++ * gas/ppc/power4_32.d: Likewise.
++ * gas/ppc/power6.s: Add attn, mtcr, mtcrf, mfcr, dcbz.
++ * gas/ppc/power6.d: Likewise.
++ * gas/ppc/ppc.exp: Run power4_32 test.
++
+ 2009-01-08 Adam Nemet <anemet@caviumnetworks.com>
+
+ * gas/mips/mips1-fp.s, gas/mips/mips1-fp.d, gas/mips/mips1-fp.l:
+diff -Naur binutils-2.19.1.orig/gas/testsuite/gas/ppc/booke.d binutils-2.19.1/gas/testsuite/gas/ppc/booke.d
+--- binutils-2.19.1.orig/gas/testsuite/gas/ppc/booke.d 2007-04-18 16:58:12.000000000 -0700
++++ binutils-2.19.1/gas/testsuite/gas/ppc/booke.d 2009-03-02 05:54:22.000000000 -0800
+@@ -1,4 +1,4 @@
+-#as: -mbooke64
++#as: -mbooke
+ #objdump: -dr -Mbooke
+ #name: BookE tests
+
+@@ -6,151 +6,38 @@
+
+ Disassembly of section \.text:
+
+-0+0000000 <start>:
+- 0: 24 25 00 30 bce 1,4\*cr1\+gt,30 <branch_target_1>
+- 4: 24 46 00 3d bcel 2,4\*cr1\+eq,40 <branch_target_2>
+- 8: 24 67 00 52 bcea 3,4\*cr1\+so,50 <branch_target_3>
+- 8: R_PPC(64)?_ADDR14 \.text\+0x50
+- c: 24 88 00 73 bcela 4,4\*cr2\+lt,70 <branch_target_4>
+- c: R_PPC(64)?_ADDR14 \.text\+0x70
+- 10: 4c a9 00 22 bclre 5,4\*cr2\+gt
+- 14: 4c aa 00 23 bclrel 5,4\*cr2\+eq
+- 18: 4d 0b 04 22 bcctre 8,4\*cr2\+so
+- 1c: 4d 0c 04 23 bcctrel 8,4\*cr3\+lt
+- 20: 58 00 00 74 be 94 <branch_target_5>
+- 24: 58 00 00 89 bel ac <branch_target_6>
+- 28: 58 00 00 f6 bea f4 <branch_target_7>
+- 28: R_PPC(64)?_ADDR24 \.text\+0xf4
+- 2c: 58 00 01 2b bela 128 <branch_target_8>
+- 2c: R_PPC(64)?_ADDR24 \.text\+0x128
+-
+-0+0000030 <branch_target_1>:
+- 30: e9 09 00 80 lbze r8,8\(r9\)
+- 34: e9 8f 00 41 lbzue r12,4\(r15\)
+- 38: 7c 86 40 fe lbzuxe r4,r6,r8
+- 3c: 7c 65 38 be lbzxe r3,r5,r7
+-
+-0+0000040 <branch_target_2>:
+- 40: f8 a6 06 40 lde r5,400\(r6\)
+- 44: f8 c7 07 11 ldue r6,452\(r7\)
+- 48: 7c e8 4e 3e ldxe r7,r8,r9
+- 4c: 7d 4b 66 7e lduxe r10,r11,r12
+-
+-0+0000050 <branch_target_3>:
+- 50: f9 81 02 06 lfde f12,128\(r1\)
+- 54: f8 25 00 47 lfdue f1,16\(r5\)
+- 58: 7c a1 1c be lfdxe f5,r1,r3
+- 5c: 7c c2 24 fe lfduxe f6,r2,r4
+- 60: f9 09 00 c4 lfse f8,48\(r9\)
+- 64: f9 2a 01 15 lfsue f9,68\(r10\)
+- 68: 7d 44 44 7e lfsuxe f10,r4,r8
+- 6c: 7d 23 3c 3e lfsxe f9,r3,r7
+-
+-0+0000070 <branch_target_4>:
+- 70: e9 45 03 24 lhae r10,50\(r5\)
+- 74: e8 23 00 55 lhaue r1,5\(r3\)
+- 78: 7c a1 1a fe lhauxe r5,r1,r3
+- 7c: 7f be fa be lhaxe r29,r30,r31
+- 80: 7c 22 1e 3c lhbrxe r1,r2,r3
+- 84: e8 83 01 22 lhze r4,18\(r3\)
+- 88: e8 c9 01 43 lhzue r6,20\(r9\)
+- 8c: 7c a7 4a 7e lhzuxe r5,r7,r9
+- 90: 7d 27 2a 3e lhzxe r9,r7,r5
+-
+-0+0000094 <branch_target_5>:
+- 94: 7d 4f a0 fc lwarxe r10,r15,r20
+- 98: 7c aa 94 3c lwbrxe r5,r10,r18
+- 9c: eb 9d 00 46 lwze r28,4\(r29\)
+- a0: e9 0a 02 87 lwzue r8,40\(r10\)
+- a4: 7c 66 48 7e lwzuxe r3,r6,r9
+- a8: 7f dd e0 3e lwzxe r30,r29,r28
+-
+-0+00000ac <branch_target_6>:
+- ac: 7c 06 3d fc dcbae r6,r7
+- b0: 7c 08 48 bc dcbfe r8,r9
+- b4: 7c 0a 5b bc dcbie r10,r11
+- b8: 7c 08 f0 7c dcbste r8,r30
+- bc: 7c c3 0a 3c dcbte 6,r3,r1
+- c0: 7c a4 11 fa dcbtste 5,r4,r2
+- c4: 7c 0f 77 fc dcbze r15,r14
+- c8: 7c 03 27 bc icbie r3,r4
+- cc: 7c a8 48 2c icbt 5,r8,r9
+- d0: 7c ca 78 3c icbte 6,r10,r15
+- d4: 7c a6 02 26 mfapidi r5,r6
+- d8: 7c 07 46 24 tlbivax r7,r8
+- dc: 7c 09 56 26 tlbivaxe r9,r10
+- e0: 7c 0b 67 24 tlbsx r11,r12
+- e4: 7c 0d 77 26 tlbsxe r13,r14
+- e8: 7c 00 07 a4 tlbwe
+- ec: 7c 00 07 a4 tlbwe
+- f0: 7c 21 0f a4 tlbwe r1,r1,1
+-
+-0+00000f4 <branch_target_7>:
+- f4: 7c 22 1b 14 adde64 r1,r2,r3
+- f8: 7c 85 37 14 adde64o r4,r5,r6
+- fc: 7c e8 03 d4 addme64 r7,r8
+- 100: 7d 2a 07 d4 addme64o r9,r10
+- 104: 7d 6c 03 94 addze64 r11,r12
+- 108: 7d ae 07 94 addze64o r13,r14
+- 10c: 7e 80 04 40 mcrxr64 cr5
+- 110: 7d f0 8b 10 subfe64 r15,r16,r17
+- 114: 7e 53 a7 10 subfe64o r18,r19,r20
+- 118: 7e b6 03 d0 subfme64 r21,r22
+- 11c: 7e f8 07 d0 subfme64o r23,r24
+- 120: 7f 3a 03 90 subfze64 r25,r26
+- 124: 7f 7c 07 90 subfze64o r27,r28
+-
+-0+0000128 <branch_target_8>:
+- 128: e8 22 03 28 stbe r1,50\(r2\)
+- 12c: e8 64 02 89 stbue r3,40\(r4\)
+- 130: 7c a6 39 fe stbuxe r5,r6,r7
+- 134: 7d 09 51 be stbxe r8,r9,r10
+- 138: 7d 6c 6b ff stdcxe\. r11,r12,r13
+- 13c: f9 cf 00 78 stde r14,28\(r15\)
+- 140: fa 11 00 59 stdue r16,20\(r17\)
+- 144: 7e 53 a7 3e stdxe r18,r19,r20
+- 148: 7e b6 bf 7e stduxe r21,r22,r23
+- 14c: f8 38 00 3e stfde f1,12\(r24\)
+- 150: f8 59 00 0f stfdue f2,0\(r25\)
+- 154: 7c 7a dd be stfdxe f3,r26,r27
+- 158: 7c 9c ed fe stfduxe f4,r28,r29
+- 15c: 7c be ff be stfiwxe f5,r30,r31
+- 160: f8 de 00 6c stfse f6,24\(r30\)
+- 164: f8 fd 00 5d stfsue f7,20\(r29\)
+- 168: 7d 1c dd 3e stfsxe f8,r28,r27
+- 16c: 7d 3a cd 7e stfsuxe f9,r26,r25
+- 170: 7f 17 b7 3c sthbrxe r24,r23,r22
+- 174: ea b4 01 ea sthe r21,30\(r20\)
+- 178: ea 72 02 8b sthue r19,40\(r18\)
+- 17c: 7e 30 7b 7e sthuxe r17,r16,r15
+- 180: 7d cd 63 3e sthxe r14,r13,r12
+- 184: 7d 6a 4d 3c stwbrxe r11,r10,r9
+- 188: 7d 07 31 3d stwcxe\. r8,r7,r6
+- 18c: e8 a4 03 2e stwe r5,50\(r4\)
+- 190: e8 62 02 8f stwue r3,40\(r2\)
+- 194: 7c 22 19 7e stwuxe r1,r2,r3
+- 198: 7c 85 31 3e stwxe r4,r5,r6
+- 19c: 4c 00 00 66 rfci
+- 1a0: 7c 60 01 06 wrtee r3
+- 1a4: 7c 00 81 46 wrteei 1
+- 1a8: 7c 85 02 06 mfdcrx r4,r5
+- 1ac: 7c aa 3a 86 mfdcr r5,234
+- 1b0: 7c e6 03 06 mtdcrx r6,r7
+- 1b4: 7d 10 6b 86 mtdcr 432,r8
+- 1b8: 7c 00 04 ac msync
+- 1bc: 7c 09 55 ec dcba r9,r10
+- 1c0: 7c 00 06 ac mbar
+- 1c4: 7c 00 06 ac mbar
+- 1c8: 7c 20 06 ac mbar 1
+- 1cc: 7d 8d 77 24 tlbsx r12,r13,r14
+- 1d0: 7d 8d 77 25 tlbsx\. r12,r13,r14
+- 1d4: 7d 8d 77 26 tlbsxe r12,r13,r14
+- 1d8: 7d 8d 77 27 tlbsxe\. r12,r13,r14
+- 1dc: 7c 12 42 a6 mfsprg r0,2
+- 1e0: 7c 12 42 a6 mfsprg r0,2
+- 1e4: 7c 12 43 a6 mtsprg 2,r0
+- 1e8: 7c 12 43 a6 mtsprg 2,r0
+- 1ec: 7c 07 42 a6 mfsprg r0,7
+- 1f0: 7c 07 42 a6 mfsprg r0,7
+- 1f4: 7c 17 43 a6 mtsprg 7,r0
+- 1f8: 7c 17 43 a6 mtsprg 7,r0
++0+0000000 <branch_target_1>:
++ 0: 7c a8 48 2c icbt 5,r8,r9
++ 4: 7c a6 02 26 mfapidi r5,r6
++ 8: 7c 07 46 24 tlbivax r7,r8
++ c: 7c 0b 67 24 tlbsx r11,r12
++ 10: 7c 00 07 a4 tlbwe
++ 14: 7c 00 07 a4 tlbwe
++ 18: 7c 21 0f a4 tlbwe r1,r1,1
++
++0+000001c <branch_target_2>:
++ 1c: 4c 00 00 66 rfci
++ 20: 7c 60 01 06 wrtee r3
++ 24: 7c 00 81 46 wrteei 1
++ 28: 7c 85 02 06 mfdcrx r4,r5
++ 2c: 7c aa 3a 86 mfdcr r5,234
++ 30: 7c e6 03 06 mtdcrx r6,r7
++ 34: 7d 10 6b 86 mtdcr 432,r8
++ 38: 7c 00 04 ac msync
++ 3c: 7c 09 55 ec dcba r9,r10
++ 40: 7c 00 06 ac mbar
++ 44: 7c 00 06 ac mbar
++ 48: 7c 20 06 ac mbar 1
++ 4c: 7d 8d 77 24 tlbsx r12,r13,r14
++ 50: 7d 8d 77 25 tlbsx\. r12,r13,r14
++ 54: 7c 12 42 a6 mfsprg r0,2
++ 58: 7c 12 42 a6 mfsprg r0,2
++ 5c: 7c 12 43 a6 mtsprg 2,r0
++ 60: 7c 12 43 a6 mtsprg 2,r0
++ 64: 7c 07 42 a6 mfsprg r0,7
++ 68: 7c 07 42 a6 mfsprg r0,7
++ 6c: 7c 17 43 a6 mtsprg 7,r0
++ 70: 7c 17 43 a6 mtsprg 7,r0
++ 74: 7c 05 32 2c dcbt r5,r6
++ 78: 7c 05 32 2c dcbt r5,r6
++ 7c: 7d 05 32 2c dcbt 8,r5,r6
+diff -Naur binutils-2.19.1.orig/gas/testsuite/gas/ppc/booke.s binutils-2.19.1/gas/testsuite/gas/ppc/booke.s
+--- binutils-2.19.1.orig/gas/testsuite/gas/ppc/booke.s 2007-04-18 16:58:12.000000000 -0700
++++ binutils-2.19.1/gas/testsuite/gas/ppc/booke.s 2009-03-02 05:54:22.000000000 -0800
+@@ -1,127 +1,17 @@
+ # Motorola PowerPC BookE tests
+-#as: -mbooke32
++#as: -mbooke
+ .section ".text"
+-start:
+- bce 1, 5, branch_target_1
+- bcel 2, 6, branch_target_2
+- bcea 3, 7, branch_target_3
+- bcela 4, 8, branch_target_4
+- bclre 5, 9
+- bclrel 5, 10
+- bcctre 8, 11
+- bcctrel 8, 12
+- be branch_target_5
+- bel branch_target_6
+- bea branch_target_7
+- bela branch_target_8
+
+-branch_target_1:
+- lbze 8, 8(9)
+- lbzue 12, 4(15)
+- lbzuxe 4, 6, 8
+- lbzxe 3, 5, 7
+-
+-branch_target_2:
+- lde 5, 400(6)
+- ldue 6, 452(7)
+- ldxe 7, 8, 9
+- lduxe 10, 11, 12
+-
+-branch_target_3:
+- lfde 12, 128(1)
+- lfdue 1, 16(5)
+- lfdxe 5, 1, 3
+- lfduxe 6, 2, 4
+- lfse 8, 48(9)
+- lfsue 9, 68(10)
+- lfsuxe 10, 4, 8
+- lfsxe 9, 3, 7
+-
+-branch_target_4:
+- lhae 10, 50(5)
+- lhaue 1, 5(3)
+- lhauxe 5, 1, 3
+- lhaxe 29, 30, 31
+- lhbrxe 1, 2, 3
+- lhze 4, 18(3)
+- lhzue 6, 20(9)
+- lhzuxe 5, 7, 9
+- lhzxe 9, 7, 5
+-
+-branch_target_5:
+- lwarxe 10, 15, 20
+- lwbrxe 5, 10, 18
+- lwze 28, 4(29)
+- lwzue 8, 40(10)
+- lwzuxe 3, 6, 9
+- lwzxe 30, 29, 28
+-
+-branch_target_6:
+- dcbae 6, 7
+- dcbfe 8, 9
+- dcbie 10, 11
+- dcbste 8, 30
+- dcbte 6, 3, 1
+- dcbtste 5, 4, 2
+- dcbze 15, 14
+- icbie 3, 4
++branch_target_1:
+ icbt 5, 8, 9
+- icbte 6, 10, 15
+ mfapidi 5, 6
+ tlbivax 7, 8
+- tlbivaxe 9, 10
+ tlbsx 11, 12
+- tlbsxe 13, 14
+ tlbwe
+ tlbwe 0,0,0
+ tlbwe 1,1,1
+
+-branch_target_7:
+- adde64 1, 2, 3
+- adde64o 4, 5, 6
+- addme64 7, 8
+- addme64o 9, 10
+- addze64 11, 12
+- addze64o 13, 14
+- mcrxr64 5
+- subfe64 15, 16, 17
+- subfe64o 18, 19, 20
+- subfme64 21, 22
+- subfme64o 23, 24
+- subfze64 25, 26
+- subfze64o 27, 28
+-
+-branch_target_8:
+- stbe 1, 50(2)
+- stbue 3, 40(4)
+- stbuxe 5, 6, 7
+- stbxe 8, 9, 10
+- stdcxe. 11, 12, 13
+- stde 14, 28(15)
+- stdue 16, 20(17)
+- stdxe 18, 19, 20
+- stduxe 21, 22, 23
+- stfde 1, 12(24)
+- stfdue 2, 0(25)
+- stfdxe 3, 26, 27
+- stfduxe 4, 28, 29
+- stfiwxe 5, 30, 31
+- stfse 6, 24(30)
+- stfsue 7, 20(29)
+- stfsxe 8, 28, 27
+- stfsuxe 9, 26, 25
+- sthbrxe 24, 23, 22
+- sthe 21, 30(20)
+- sthue 19, 40(18)
+- sthuxe 17, 16, 15
+- sthxe 14, 13, 12
+- stwbrxe 11, 10, 9
+- stwcxe. 8, 7, 6
+- stwe 5, 50(4)
+- stwue 3, 40(2)
+- stwuxe 1, 2, 3
+- stwxe 4, 5, 6
+-
++branch_target_2:
+ rfci
+ wrtee 3
+ wrteei 1
+@@ -137,8 +27,6 @@
+
+ tlbsx 12, 13, 14
+ tlbsx. 12, 13, 14
+- tlbsxe 12, 13, 14
+- tlbsxe. 12, 13, 14
+
+ mfsprg 0, 2
+ mfsprg2 0
+@@ -148,3 +36,7 @@
+ mfsprg7 0
+ mtsprg 7, 0
+ mtsprg7 0
++
++ dcbt 5,6
++ dcbt 0,5,6
++ dcbt 8,5,6
+diff -Naur binutils-2.19.1.orig/gas/testsuite/gas/ppc/booke_xcoff64.d binutils-2.19.1/gas/testsuite/gas/ppc/booke_xcoff64.d
+--- binutils-2.19.1.orig/gas/testsuite/gas/ppc/booke_xcoff64.d 2007-10-01 09:24:40.000000000 -0700
++++ binutils-2.19.1/gas/testsuite/gas/ppc/booke_xcoff64.d 2009-03-02 05:43:14.000000000 -0800
+@@ -1,5 +1,5 @@
+-#as: -a64 -mppc64 -mbooke64
+-#objdump: -dr -Mbooke64
++#as: -a64 -mppc64 -mbooke
++#objdump: -dr -Mbooke
+ #name: xcoff64 BookE tests
+
+ .*: file format aix5?coff64-rs6000
+diff -Naur binutils-2.19.1.orig/gas/testsuite/gas/ppc/booke_xcoff64.s binutils-2.19.1/gas/testsuite/gas/ppc/booke_xcoff64.s
+--- binutils-2.19.1.orig/gas/testsuite/gas/ppc/booke_xcoff64.s 2007-10-01 09:24:40.000000000 -0700
++++ binutils-2.19.1/gas/testsuite/gas/ppc/booke_xcoff64.s 2009-03-02 05:43:15.000000000 -0800
+@@ -1,5 +1,5 @@
+ # Motorola PowerPC BookE tests
+-#as: -a64 -mppc64 -mbooke64
++#as: -a64 -mppc64 -mbooke
+ .csect .text[PR]
+ .csect main[DS]
+ main:
+diff -Naur binutils-2.19.1.orig/gas/testsuite/gas/ppc/booke_xcoff.d binutils-2.19.1/gas/testsuite/gas/ppc/booke_xcoff.d
+--- binutils-2.19.1.orig/gas/testsuite/gas/ppc/booke_xcoff.d 2007-10-01 09:24:40.000000000 -0700
++++ binutils-2.19.1/gas/testsuite/gas/ppc/booke_xcoff.d 2009-03-02 05:43:14.000000000 -0800
+@@ -1,5 +1,5 @@
+-#as: -mppc32 -mbooke32
+-#objdump: -mpowerpc -dr -Mbooke32
++#as: -mppc32 -mbooke
++#objdump: -mpowerpc -dr -Mbooke
+ #name: xcoff BookE tests
+
+ .*: file format aixcoff-rs6000
+diff -Naur binutils-2.19.1.orig/gas/testsuite/gas/ppc/booke_xcoff.s binutils-2.19.1/gas/testsuite/gas/ppc/booke_xcoff.s
+--- binutils-2.19.1.orig/gas/testsuite/gas/ppc/booke_xcoff.s 2007-10-01 09:24:40.000000000 -0700
++++ binutils-2.19.1/gas/testsuite/gas/ppc/booke_xcoff.s 2009-03-02 05:43:14.000000000 -0800
+@@ -1,5 +1,5 @@
+ # Motorola PowerPC BookE tests
+-#as: -mbooke32
++#as: -mbooke
+ .csect .text[PR]
+ .csect main[DS]
+ main:
+diff -Naur binutils-2.19.1.orig/gas/testsuite/gas/ppc/common.d binutils-2.19.1/gas/testsuite/gas/ppc/common.d
+--- binutils-2.19.1.orig/gas/testsuite/gas/ppc/common.d 1969-12-31 16:00:00.000000000 -0800
++++ binutils-2.19.1/gas/testsuite/gas/ppc/common.d 2009-03-02 05:37:44.000000000 -0800
+@@ -0,0 +1,190 @@
++#objdump: -d -Mcom
++#as: -a32 -mcom
++#name: PowerPC COMMON instructions
++
++.*: +file format elf32-powerpc.*
++
++Disassembly of section \.text:
++
++0+00 <start>:
++
++ 0: 7c 83 28 39 and. r3,r4,r5
++ 4: 7c 83 28 38 and r3,r4,r5
++ 8: 7d cd 78 78 andc r13,r14,r15
++ c: 7e 30 90 79 andc. r16,r17,r18
++ 10: 48 00 00 02 ba 0 <start>
++ 14: 40 01 00 00 bdnzf- gt,14 <start\+0x14>
++ 18: 40 85 00 02 blea- cr1,0 <start>
++ 1c: 40 43 00 01 bdzfl- so,1c <start\+0x1c>
++ 20: 41 47 00 03 bdztla- 4\*cr1\+so,0 <start>
++ 24: 4e 80 04 20 bctr
++ 28: 4e 80 04 21 bctrl
++ 2c: 42 40 00 02 bdza- 0 <start>
++ 30: 42 40 00 00 bdz- 30 <start\+0x30>
++ 34: 42 40 00 03 bdzla- 0 <start>
++ 38: 42 40 00 01 bdzl- 38 <start\+0x38>
++ 3c: 41 82 00 00 beq- 3c <start\+0x3c>
++ 40: 41 8a 00 02 beqa- cr2,0 <start>
++ 44: 41 86 00 01 beql- cr1,44 <start\+0x44>
++ 48: 41 8e 00 03 beqla- cr3,0 <start>
++ 4c: 40 80 00 00 bge- 4c <start\+0x4c>
++ 50: 40 90 00 02 bgea- cr4,0 <start>
++ 54: 40 88 00 01 bgel- cr2,54 <start\+0x54>
++ 58: 40 98 00 03 bgela- cr6,0 <start>
++ 5c: 41 91 00 00 bgt- cr4,5c <start\+0x5c>
++ 60: 41 99 00 02 bgta- cr6,0 <start>
++ 64: 41 95 00 01 bgtl- cr5,64 <start\+0x64>
++ 68: 41 9d 00 03 bgtla- cr7,0 <start>
++ 6c: 48 00 00 00 b 6c <start\+0x6c>
++ 70: 48 00 00 03 bla 0 <start>
++ 74: 40 81 00 00 ble- 74 <start\+0x74>
++ 78: 40 91 00 02 blea- cr4,0 <start>
++ 7c: 40 89 00 01 blel- cr2,7c <start\+0x7c>
++ 80: 40 99 00 03 blela- cr6,0 <start>
++ 84: 48 00 00 01 bl 84 <start\+0x84>
++ 88: 41 80 00 00 blt- 88 <start\+0x88>
++ 8c: 41 88 00 02 blta- cr2,0 <start>
++ 90: 41 84 00 01 bltl- cr1,90 <start\+0x90>
++ 94: 41 8c 00 03 bltla- cr3,0 <start>
++ 98: 40 82 00 00 bne- 98 <start\+0x98>
++ 9c: 40 8a 00 02 bnea- cr2,0 <start>
++ a0: 40 86 00 01 bnel- cr1,a0 <start\+0xa0>
++ a4: 40 8e 00 03 bnela- cr3,0 <start>
++ a8: 40 85 00 00 ble- cr1,a8 <start\+0xa8>
++ ac: 40 95 00 02 blea- cr5,0 <start>
++ b0: 40 8d 00 01 blel- cr3,b0 <start\+0xb0>
++ b4: 40 9d 00 03 blela- cr7,0 <start>
++ b8: 40 84 00 00 bge- cr1,b8 <start\+0xb8>
++ bc: 40 94 00 02 bgea- cr5,0 <start>
++ c0: 40 8c 00 01 bgel- cr3,c0 <start\+0xc0>
++ c4: 40 9c 00 03 bgela- cr7,0 <start>
++ c8: 40 93 00 00 bns- cr4,c8 <start\+0xc8>
++ cc: 40 9b 00 02 bnsa- cr6,0 <start>
++ d0: 40 97 00 01 bnsl- cr5,d0 <start\+0xd0>
++ d4: 40 9f 00 03 bnsla- cr7,0 <start>
++ d8: 41 93 00 00 bso- cr4,d8 <start\+0xd8>
++ dc: 41 9b 00 02 bsoa- cr6,0 <start>
++ e0: 41 97 00 01 bsol- cr5,e0 <start\+0xe0>
++ e4: 41 9f 00 03 bsola- cr7,0 <start>
++ e8: 4c 85 32 02 crand 4\*cr1\+lt,4\*cr1\+gt,4\*cr1\+eq
++ ec: 4c 64 29 02 crandc so,4\*cr1\+lt,4\*cr1\+gt
++ f0: 4c e0 0a 42 creqv 4\*cr1\+so,lt,gt
++ f4: 4c 22 19 c2 crnand gt,eq,so
++ f8: 4c 01 10 42 crnor lt,gt,eq
++ fc: 4c a6 3b 82 cror 4\*cr1\+gt,4\*cr1\+eq,4\*cr1\+so
++ 100: 4c 43 23 42 crorc eq,so,4\*cr1\+lt
++ 104: 4c c7 01 82 crxor 4\*cr1\+eq,4\*cr1\+so,lt
++ 108: 7d 6a 62 39 eqv. r10,r11,r12
++ 10c: 7d 6a 62 38 eqv r10,r11,r12
++ 110: fe a0 fa 11 fabs. f21,f31
++ 114: fe a0 fa 10 fabs f21,f31
++ 118: fd 8a 58 40 fcmpo cr3,f10,f11
++ 11c: fd 84 28 00 fcmpu cr3,f4,f5
++ 120: fc 60 20 91 fmr. f3,f4
++ 124: fc 60 20 90 fmr f3,f4
++ 128: fe 80 f1 11 fnabs. f20,f30
++ 12c: fe 80 f1 10 fnabs f20,f30
++ 130: fc 60 20 51 fneg. f3,f4
++ 134: fc 60 20 50 fneg f3,f4
++ 138: fc c0 38 18 frsp f6,f7
++ 13c: fd 00 48 19 frsp. f8,f9
++ 140: 89 21 00 00 lbz r9,0\(r1\)
++ 144: 8d 41 00 01 lbzu r10,1\(r1\)
++ 148: 7e 95 b0 ee lbzux r20,r21,r22
++ 14c: 7c 64 28 ae lbzx r3,r4,r5
++ 150: ca a1 00 08 lfd f21,8\(r1\)
++ 154: ce c1 00 10 lfdu f22,16\(r1\)
++ 158: 7e 95 b4 ee lfdux f20,r21,r22
++ 15c: 7d ae 7c ae lfdx f13,r14,r15
++ 160: c2 61 00 00 lfs f19,0\(r1\)
++ 164: c6 81 00 04 lfsu f20,4\(r1\)
++ 168: 7d 4b 64 6e lfsux f10,r11,r12
++ 16c: 7d 4b 64 2e lfsx f10,r11,r12
++ 170: a9 e1 00 06 lha r15,6\(r1\)
++ 174: ae 01 00 08 lhau r16,8\(r1\)
++ 178: 7d 2a 5a ee lhaux r9,r10,r11
++ 17c: 7d 2a 5a ae lhax r9,r10,r11
++ 180: 7c 64 2e 2c lhbrx r3,r4,r5
++ 184: a1 a1 00 00 lhz r13,0\(r1\)
++ 188: a5 c1 00 02 lhzu r14,2\(r1\)
++ 18c: 7e 96 c2 6e lhzux r20,r22,r24
++ 190: 7e f8 ca 2e lhzx r23,r24,r25
++ 194: 4c 04 00 00 mcrf cr0,cr1
++ 198: fd 90 00 80 mcrfs cr3,cr4
++ 19c: 7d 80 04 00 mcrxr cr3
++ 1a0: 7c 60 00 26 mfcr r3
++ 1a4: 7c 69 02 a6 mfctr r3
++ 1a8: 7c b3 02 a6 mfdar r5
++ 1ac: 7c 92 02 a6 mfdsisr r4
++ 1b0: ff c0 04 8e mffs f30
++ 1b4: ff e0 04 8f mffs. f31
++ 1b8: 7c 48 02 a6 mflr r2
++ 1bc: 7e 60 00 a6 mfmsr r19
++ 1c0: 7c 78 00 26 mfocrf r3,128
++ 1c4: 7c 25 02 a6 mfrtcl r1
++ 1c8: 7c 04 02 a6 mfrtcu r0
++ 1cc: 7c d9 02 a6 mfsdr1 r6
++ 1d0: 7c 60 22 a6 mfspr r3,128
++ 1d4: 7c fa 02 a6 mfsrr0 r7
++ 1d8: 7d 1b 02 a6 mfsrr1 r8
++ 1dc: 7f c1 02 a6 mfxer r30
++ 1e0: 7f fe fb 79 mr. r30,r31
++ 1e4: 7f fe fb 78 mr r30,r31
++ 1e8: 7c 6f f1 20 mtcr r3
++ 1ec: 7c 68 01 20 mtcrf 128,r3
++ 1f0: 7e 69 03 a6 mtctr r19
++ 1f4: 7e b3 03 a6 mtdar r21
++ 1f8: 7f 16 03 a6 mtdec r24
++ 1fc: 7e 92 03 a6 mtdsisr r20
++ 200: fc 60 00 8d mtfsb0. so
++ 204: fc 60 00 8c mtfsb0 so
++ 208: fc 60 00 4d mtfsb1. so
++ 20c: fc 60 00 4c mtfsb1 so
++ 210: fc 0c 55 8e mtfsf 6,f10
++ 214: fc 0c 5d 8f mtfsf. 6,f11
++ 218: ff 00 01 0c mtfsfi 6,0
++ 21c: ff 00 f1 0d mtfsfi. 6,15
++ 220: 7e 48 03 a6 mtlr r18
++ 224: 7d 40 01 24 mtmsr r10
++ 228: 7c 78 01 20 mtocrf 128,r3
++ 22c: 7e f5 03 a6 mtrtcl r23
++ 230: 7e d4 03 a6 mtrtcu r22
++ 234: 7f 39 03 a6 mtsdr1 r25
++ 238: 7c 60 23 a6 mtspr 128,r3
++ 23c: 7f 5a 03 a6 mtsrr0 r26
++ 240: 7f 7b 03 a6 mtsrr1 r27
++ 244: 7e 21 03 a6 mtxer r17
++ 248: 7f bc f3 b9 nand. r28,r29,r30
++ 24c: 7f bc f3 b8 nand r28,r29,r30
++ 250: 7c 64 00 d1 neg. r3,r4
++ 254: 7c 64 00 d0 neg r3,r4
++ 258: 7e 11 04 d0 nego r16,r17
++ 25c: 7e 53 04 d1 nego. r18,r19
++ 260: 7e b4 b0 f9 nor. r20,r21,r22
++ 264: 7e b4 b0 f8 nor r20,r21,r22
++ 268: 7e b4 a8 f9 not. r20,r21
++ 26c: 7e b4 a8 f8 not r20,r21
++ 270: 7c 40 23 78 or r0,r2,r4
++ 274: 7d cc 83 79 or. r12,r14,r16
++ 278: 7e 0f 8b 38 orc r15,r16,r17
++ 27c: 7e 72 a3 39 orc. r18,r19,r20
++ 280: 4c 00 00 64 rfi
++ 284: 99 61 00 02 stb r11,2\(r1\)
++ 288: 9d 81 00 03 stbu r12,3\(r1\)
++ 28c: 7d ae 79 ee stbux r13,r14,r15
++ 290: 7c 64 29 ae stbx r3,r4,r5
++ 294: db 21 00 20 stfd f25,32\(r1\)
++ 298: df 41 00 28 stfdu f26,40\(r1\)
++ 29c: 7c 01 15 ee stfdux f0,r1,r2
++ 2a0: 7f be fd ae stfdx f29,r30,r31
++ 2a4: d2 e1 00 14 stfs f23,20\(r1\)
++ 2a8: d7 01 00 18 stfsu f24,24\(r1\)
++ 2ac: 7f 5b e5 6e stfsux f26,r27,r28
++ 2b0: 7e f8 cd 2e stfsx f23,r24,r25
++ 2b4: b2 21 00 0a sth r17,10\(r1\)
++ 2b8: 7c c7 47 2c sthbrx r6,r7,r8
++ 2bc: b6 41 00 0c sthu r18,12\(r1\)
++ 2c0: 7e b6 bb 6e sthux r21,r22,r23
++ 2c4: 7d 8d 73 2e sthx r12,r13,r14
++ 2c8: 7f dd fa 79 xor. r29,r30,r31
++ 2cc: 7f dd fa 78 xor r29,r30,r31
+diff -Naur binutils-2.19.1.orig/gas/testsuite/gas/ppc/common.s binutils-2.19.1/gas/testsuite/gas/ppc/common.s
+--- binutils-2.19.1.orig/gas/testsuite/gas/ppc/common.s 1969-12-31 16:00:00.000000000 -0800
++++ binutils-2.19.1/gas/testsuite/gas/ppc/common.s 2009-03-02 05:37:44.000000000 -0800
+@@ -0,0 +1,182 @@
++ .section ".text"
++start:
++ and. 3,4,5
++ and 3,4,5
++ andc 13,14,15
++ andc. 16,17,18
++ ba label_abs
++ bc 0,1,foo
++ bca 4,5,foo_abs
++ bcl 2,3,foo
++ bcla 10,7,foo_abs
++ bctr
++ bctrl
++ bdza foo_abs
++ bdz foo
++ bdzla foo_abs
++ bdzl foo
++ beq 0,foo
++ beqa 2,foo_abs
++ beql 1,foo
++ beqla 3,foo_abs
++ bge 0,foo
++ bgea 4,foo_abs
++ bgel 2,foo
++ bgela 6,foo_abs
++ bgt 4,foo
++ bgta 6,foo_abs
++ bgtl 5,foo
++ bgtla 7,foo_abs
++ b label
++ bla label_abs
++ ble 0,foo
++ blea 4,foo
++ blel 2,foo
++ blela 6,foo_abs
++ bl label
++ blt 0,foo
++ blta 2,foo_abs
++ bltl 1,foo
++ bltla 3,foo_abs
++ bne 0,foo
++ bnea 2,foo
++ bnel 1,foo
++ bnela 3,foo_abs
++ bng 1,foo
++ bnga 5,foo_abs
++ bngl 3,foo
++ bngla 7,foo_abs
++ bnl 1,foo
++ bnla 5,foo_abs
++ bnll 3,foo
++ bnlla 7,foo_abs
++ bns 4,foo
++ bnsa 6,foo_abs
++ bnsl 5,foo
++ bnsla 7,foo_abs
++ bso 4,foo
++ bsoa 6,foo_abs
++ bsol 5,foo
++ bsola 7,foo_abs
++ crand 4,5,6
++ crandc 3,4,5
++ creqv 7,0,1
++ crnand 1,2,3
++ crnor 0,1,2
++ cror 5,6,7
++ crorc 2,3,4
++ crxor 6,7,0
++ eqv. 10,11,12
++ eqv 10,11,12
++ fabs. 21,31
++ fabs 21,31
++ fcmpo 3,10,11
++ fcmpu 3,4,5
++ fmr. 3,4
++ fmr 3,4
++ fnabs. 20,30
++ fnabs 20,30
++ fneg. 3,4
++ fneg 3,4
++ frsp 6,7
++ frsp. 8,9
++ lbz 9,0(1)
++ lbzu 10,1(1)
++ lbzux 20,21,22
++ lbzx 3,4,5
++ lfd 21,8(1)
++ lfdu 22,16(1)
++ lfdux 20,21,22
++ lfdx 13,14,15
++ lfs 19,0(1)
++ lfsu 20,4(1)
++ lfsux 10,11,12
++ lfsx 10,11,12
++ lha 15,6(1)
++ lhau 16,8(1)
++ lhaux 9,10,11
++ lhax 9,10,11
++ lhbrx 3,4,5
++ lhz 13,0(1)
++ lhzu 14,2(1)
++ lhzux 20,22,24
++ lhzx 23,24,25
++ mcrf 0,1
++ mcrfs 3,4
++ mcrxr 3
++ mfcr 3
++ mfctr 3
++ mfdar 5
++ mfdsisr 4
++ mffs 30
++ mffs. 31
++ mflr 2
++ mfmsr 19
++ mfocrf 3,0x80
++ mfrtcl 1
++ mfrtcu 0
++ mfsdr1 6
++ mfspr 3,0x80
++ mfsrr0 7
++ mfsrr1 8
++ mfxer 30
++ mr. 30,31
++ mr 30,31
++ mtcr 3
++ mtcrf 0x80,3
++ mtctr 19
++ mtdar 21
++ mtdec 24
++ mtdsisr 20
++ mtfsb0. 3
++ mtfsb0 3
++ mtfsb1. 3
++ mtfsb1 3
++ mtfsf 6,10
++ mtfsf. 6,11
++ mtfsfi 6,0
++ mtfsfi. 6,15
++ mtlr 18
++ mtmsr 10
++ mtocrf 0x80,3
++ mtrtcl 23
++ mtrtcu 22
++ mtsdr1 25
++ mtspr 0x80,3
++ mtsrr0 26
++ mtsrr1 27
++ mtxer 17
++ nand. 28,29,30
++ nand 28,29,30
++ neg. 3,4
++ neg 3,4
++ nego 16,17
++ nego. 18,19
++ nor. 20,21,22
++ nor 20,21,22
++ not. 20,21
++ not 20,21
++ or 0,2,4
++ or. 12,14,16
++ orc 15,16,17
++ orc. 18,19,20
++ rfi
++ stb 11,2(1)
++ stbu 12,3(1)
++ stbux 13,14,15
++ stbx 3,4,5
++ stfd 25,32(1)
++ stfdu 26,40(1)
++ stfdux 0,1,2
++ stfdx 29,30,31
++ stfs 23,20(1)
++ stfsu 24,24(1)
++ stfsux 26,27,28
++ stfsx 23,24,25
++ sth 17,10(1)
++ sthbrx 6,7,8
++ sthu 18,12(1)
++ sthux 21,22,23
++ sthx 12,13,14
++ xor. 29,30,31
++ xor 29,30,31
+diff -Naur binutils-2.19.1.orig/gas/testsuite/gas/ppc/e500mc.d binutils-2.19.1/gas/testsuite/gas/ppc/e500mc.d
+--- binutils-2.19.1.orig/gas/testsuite/gas/ppc/e500mc.d 2008-04-14 04:01:38.000000000 -0700
++++ binutils-2.19.1/gas/testsuite/gas/ppc/e500mc.d 2009-03-02 05:59:36.000000000 -0800
+@@ -6,7 +6,7 @@
+
+ Disassembly of section \.text:
+
+-0+0000000 <start>:
++0+00 <start>:
+ 0: 4c 00 00 4e rfdi
+ 4: 4c 00 00 cc rfgi
+ 8: 4c 1f f9 8c dnh 0,1023
+@@ -14,38 +14,43 @@
+ 10: 7c 09 57 be icbiep r9,r10
+ 14: 7c 00 69 dc msgclr r13
+ 18: 7c 00 71 9c msgsnd r14
+- 1c: 7c 00 00 7c wait
+- 20: 7f 9c e3 78 mdors
+- 24: 7c 00 02 1c ehpriv
+- 28: 7c 18 cb c6 dsn r24,r25
+- 2c: 7c 22 18 be lbepx r1,r2,r3
+- 30: 7c 85 32 3e lhepx r4,r5,r6
+- 34: 7c e8 48 3e lwepx r7,r8,r9
+- 38: 7d 4b 60 3a ldepx r10,r11,r12
+- 3c: 7d ae 7c be lfdepx r13,r14,r15
+- 40: 7e 11 91 be stbepx r16,r17,r18
+- 44: 7e 74 ab 3e sthepx r19,r20,r21
+- 48: 7e d7 c1 3e stwepx r22,r23,r24
+- 4c: 7f 3a d9 3a stdepx r25,r26,r27
+- 50: 7f 9d f5 be stfdepx r28,r29,r30
+- 54: 7c 01 14 06 lbdx r0,r1,r2
+- 58: 7d 8d 74 46 lhdx r12,r13,r14
+- 5c: 7c 64 2c 86 lwdx r3,r4,r5
+- 60: 7f 5b e6 46 lfddx f26,r27,r28
+- 64: 7d f0 8c c6 lddx r15,r16,r17
+- 68: 7c c7 45 06 stbdx r6,r7,r8
+- 6c: 7e 53 a5 46 sthdx r18,r19,r20
+- 70: 7d 2a 5d 86 stwdx r9,r10,r11
+- 74: 7f be ff 46 stfddx f29,r30,r31
+- 78: 7e b6 bd c6 stddx r21,r22,r23
+- 7c: 7c 20 0d ec dcbal r0,r1
+- 80: 7c 26 3f ec dcbzl r6,r7
+- 84: 7c 1f 00 7e dcbstep r31,r0
+- 88: 7c 01 10 fe dcbfep r1,r2
+- 8c: 7c 64 29 fe dcbtstep r3,r4,r5
+- 90: 7c c7 42 7e dcbtep r6,r7,r8
+- 94: 7c 0b 67 fe dcbzep r11,r12
+- 98: 7c 00 06 26 tlbilx 0,0,r0
+- 9c: 7c 20 06 26 tlbilx 1,0,r0
+- a0: 7c 62 1e 26 tlbilx 3,r2,r3
+- a4: 7c 64 2e 26 tlbilx 3,r4,r5
++ 1c: 7c 00 00 7c wait
++ 20: 7c 00 00 7c wait
++ 24: 7c 20 00 7c waitrsv
++ 28: 7c 20 00 7c waitrsv
++ 2c: 7c 40 00 7c waitimpl
++ 30: 7c 40 00 7c waitimpl
++ 34: 7f 9c e3 78 mdors
++ 38: 7c 00 02 1c ehpriv
++ 3c: 7c 18 cb c6 dsn r24,r25
++ 40: 7c 22 18 be lbepx r1,r2,r3
++ 44: 7c 85 32 3e lhepx r4,r5,r6
++ 48: 7c e8 48 3e lwepx r7,r8,r9
++ 4c: 7d 4b 60 3a ldepx r10,r11,r12
++ 50: 7d ae 7c be lfdepx f13,r14,r15
++ 54: 7e 11 91 be stbepx r16,r17,r18
++ 58: 7e 74 ab 3e sthepx r19,r20,r21
++ 5c: 7e d7 c1 3e stwepx r22,r23,r24
++ 60: 7f 3a d9 3a stdepx r25,r26,r27
++ 64: 7f 9d f5 be stfdepx f28,r29,r30
++ 68: 7c 01 14 06 lbdx r0,r1,r2
++ 6c: 7d 8d 74 46 lhdx r12,r13,r14
++ 70: 7c 64 2c 86 lwdx r3,r4,r5
++ 74: 7f 5b e6 46 lfddx f26,r27,r28
++ 78: 7d f0 8c c6 lddx r15,r16,r17
++ 7c: 7c c7 45 06 stbdx r6,r7,r8
++ 80: 7e 53 a5 46 sthdx r18,r19,r20
++ 84: 7d 2a 5d 86 stwdx r9,r10,r11
++ 88: 7f be ff 46 stfddx f29,r30,r31
++ 8c: 7e b6 bd c6 stddx r21,r22,r23
++ 90: 7c 20 0d ec dcbal r0,r1
++ 94: 7c 26 3f ec dcbzl r6,r7
++ 98: 7c 1f 00 7e dcbstep r31,r0
++ 9c: 7c 01 10 fe dcbfep r1,r2
++ a0: 7c 64 29 fe dcbtstep r3,r4,r5
++ a4: 7c c7 42 7e dcbtep r6,r7,r8
++ a8: 7c 0b 67 fe dcbzep r11,r12
++ ac: 7c 00 06 26 tlbilx 0,0,r0
++ b0: 7c 20 06 26 tlbilx 1,0,r0
++ b4: 7c 62 1e 26 tlbilx 3,r2,r3
++ b8: 7c 64 2e 26 tlbilx 3,r4,r5
+diff -Naur binutils-2.19.1.orig/gas/testsuite/gas/ppc/e500mc.s binutils-2.19.1/gas/testsuite/gas/ppc/e500mc.s
+--- binutils-2.19.1.orig/gas/testsuite/gas/ppc/e500mc.s 2008-04-14 04:01:38.000000000 -0700
++++ binutils-2.19.1/gas/testsuite/gas/ppc/e500mc.s 2009-03-02 05:59:36.000000000 -0800
+@@ -9,6 +9,11 @@
+ msgclr 13
+ msgsnd 14
+ wait
++ wait 0
++ waitrsv
++ wait 1
++ waitimpl
++ wait 2
+ mdors
+ ehpriv
+ dsn 24, 25
+diff -Naur binutils-2.19.1.orig/gas/testsuite/gas/ppc/power4_32.d binutils-2.19.1/gas/testsuite/gas/ppc/power4_32.d
+--- binutils-2.19.1.orig/gas/testsuite/gas/ppc/power4_32.d 1969-12-31 16:00:00.000000000 -0800
++++ binutils-2.19.1/gas/testsuite/gas/ppc/power4_32.d 2009-03-02 05:54:22.000000000 -0800
+@@ -0,0 +1,46 @@
++#objdump: -d -Mpower4
++#as: -a32 -mpower4
++#name: Power4 instructions
++
++.*: +file format elf32-powerpc.*
++
++Disassembly of section \.text:
++
++0+00 <start>:
++ 0: 80 c7 00 00 lwz r6,0\(r7\)
++ 4: 80 c7 00 10 lwz r6,16\(r7\)
++ 8: 80 c7 ff f0 lwz r6,-16\(r7\)
++ c: 80 c7 80 00 lwz r6,-32768\(r7\)
++ 10: 80 c7 7f f0 lwz r6,32752\(r7\)
++ 14: 90 c7 00 00 stw r6,0\(r7\)
++ 18: 90 c7 00 10 stw r6,16\(r7\)
++ 1c: 90 c7 ff f0 stw r6,-16\(r7\)
++ 20: 90 c7 80 00 stw r6,-32768\(r7\)
++ 24: 90 c7 7f f0 stw r6,32752\(r7\)
++ 28: 00 00 02 00 attn
++ 2c: 7c 6f f1 20 mtcr r3
++ 30: 7c 6f f1 20 mtcr r3
++ 34: 7c 68 11 20 mtcrf 129,r3
++ 38: 7c 70 11 20 mtocrf 1,r3
++ 3c: 7c 70 21 20 mtocrf 2,r3
++ 40: 7c 70 41 20 mtocrf 4,r3
++ 44: 7c 70 81 20 mtocrf 8,r3
++ 48: 7c 71 01 20 mtocrf 16,r3
++ 4c: 7c 72 01 20 mtocrf 32,r3
++ 50: 7c 74 01 20 mtocrf 64,r3
++ 54: 7c 78 01 20 mtocrf 128,r3
++ 58: 7c 60 00 26 mfcr r3
++ 5c: 7c 70 10 26 mfocrf r3,1
++ 60: 7c 70 20 26 mfocrf r3,2
++ 64: 7c 70 40 26 mfocrf r3,4
++ 68: 7c 70 80 26 mfocrf r3,8
++ 6c: 7c 71 00 26 mfocrf r3,16
++ 70: 7c 72 00 26 mfocrf r3,32
++ 74: 7c 74 00 26 mfocrf r3,64
++ 78: 7c 78 00 26 mfocrf r3,128
++ 7c: 7c 01 17 ec dcbz r1,r2
++ 80: 7c 23 27 ec dcbzl r3,r4
++ 84: 7c 05 37 ec dcbz r5,r6
++ 88: 7c 05 32 2c dcbt r5,r6
++ 8c: 7c 05 32 2c dcbt r5,r6
++ 90: 7d 05 32 2c dcbt r5,r6,8
+diff -Naur binutils-2.19.1.orig/gas/testsuite/gas/ppc/power4_32.s binutils-2.19.1/gas/testsuite/gas/ppc/power4_32.s
+--- binutils-2.19.1.orig/gas/testsuite/gas/ppc/power4_32.s 1969-12-31 16:00:00.000000000 -0800
++++ binutils-2.19.1/gas/testsuite/gas/ppc/power4_32.s 2009-03-02 05:54:22.000000000 -0800
+@@ -0,0 +1,39 @@
++ .section ".text"
++start:
++ lwz 6,0(7)
++ lwz 6,16(7)
++ lwz 6,-16(7)
++ lwz 6,-32768(7)
++ lwz 6,32752(7)
++ stw 6,0(7)
++ stw 6,16(7)
++ stw 6,-16(7)
++ stw 6,-32768(7)
++ stw 6,32752(7)
++ attn
++ mtcr 3
++ mtcrf 0xff,3
++ mtcrf 0x81,3
++ mtcrf 0x01,3
++ mtcrf 0x02,3
++ mtcrf 0x04,3
++ mtcrf 0x08,3
++ mtcrf 0x10,3
++ mtcrf 0x20,3
++ mtcrf 0x40,3
++ mtcrf 0x80,3
++ mfcr 3
++ mfcr 3,0x01
++ mfcr 3,0x02
++ mfcr 3,0x04
++ mfcr 3,0x08
++ mfcr 3,0x10
++ mfcr 3,0x20
++ mfcr 3,0x40
++ mfcr 3,0x80
++ dcbz 1, 2
++ dcbzl 3, 4
++ dcbz 5, 6
++ dcbt 5,6
++ dcbt 5,6,0
++ dcbt 5,6,8
+diff -Naur binutils-2.19.1.orig/gas/testsuite/gas/ppc/power6.d binutils-2.19.1/gas/testsuite/gas/ppc/power6.d
+--- binutils-2.19.1.orig/gas/testsuite/gas/ppc/power6.d 2008-07-31 19:44:12.000000000 -0700
++++ binutils-2.19.1/gas/testsuite/gas/ppc/power6.d 2009-03-02 05:59:36.000000000 -0800
+@@ -28,4 +28,44 @@
+ 48: 7e 08 3a ac dstt r8,r7,0
+ 4c: 7c 65 32 ec dstst r5,r6,3
+ 50: 7e 44 2a ec dststt r4,r5,2
+-
++ 54: 00 00 02 00 attn
++ 58: 7c 6f f1 20 mtcr r3
++ 5c: 7c 6f f1 20 mtcr r3
++ 60: 7c 68 11 20 mtcrf 129,r3
++ 64: 7c 70 11 20 mtocrf 1,r3
++ 68: 7c 70 21 20 mtocrf 2,r3
++ 6c: 7c 70 41 20 mtocrf 4,r3
++ 70: 7c 70 81 20 mtocrf 8,r3
++ 74: 7c 71 01 20 mtocrf 16,r3
++ 78: 7c 72 01 20 mtocrf 32,r3
++ 7c: 7c 74 01 20 mtocrf 64,r3
++ 80: 7c 78 01 20 mtocrf 128,r3
++ 84: 7c 60 00 26 mfcr r3
++ 88: 7c 70 10 26 mfocrf r3,1
++ 8c: 7c 70 20 26 mfocrf r3,2
++ 90: 7c 70 40 26 mfocrf r3,4
++ 94: 7c 70 80 26 mfocrf r3,8
++ 98: 7c 71 00 26 mfocrf r3,16
++ 9c: 7c 72 00 26 mfocrf r3,32
++ a0: 7c 74 00 26 mfocrf r3,64
++ a4: 7c 78 00 26 mfocrf r3,128
++ a8: 7c 01 17 ec dcbz r1,r2
++ ac: 7c 23 27 ec dcbzl r3,r4
++ b0: 7c 05 37 ec dcbz r5,r6
++ b4: fc 0c 55 8e mtfsf 6,f10
++ b8: fc 0c 5d 8f mtfsf. 6,f11
++ bc: fc 0c 55 8e mtfsf 6,f10
++ c0: fc 0c 5d 8f mtfsf. 6,f11
++ c4: fc 0d 55 8e mtfsf 6,f10,0,1
++ c8: fc 0d 5d 8f mtfsf. 6,f11,0,1
++ cc: fe 0c 55 8e mtfsf 6,f10,1,0
++ d0: fe 0c 5d 8f mtfsf. 6,f11,1,0
++ d4: ff 00 01 0c mtfsfi 6,0
++ d8: ff 00 f1 0d mtfsfi. 6,15
++ dc: ff 00 01 0c mtfsfi 6,0
++ e0: ff 00 f1 0d mtfsfi. 6,15
++ e4: ff 01 01 0c mtfsfi 6,0,1
++ e8: ff 01 f1 0d mtfsfi. 6,15,1
++ ec: 7d 6a 02 74 cbcdtd r10,r11
++ f0: 7d 6a 02 34 cdtbcd r10,r11
++ f4: 7d 4b 60 94 addg6s r10,r11,r12
+diff -Naur binutils-2.19.1.orig/gas/testsuite/gas/ppc/power6.s binutils-2.19.1/gas/testsuite/gas/ppc/power6.s
+--- binutils-2.19.1.orig/gas/testsuite/gas/ppc/power6.s 2008-07-31 19:44:12.000000000 -0700
++++ binutils-2.19.1/gas/testsuite/gas/ppc/power6.s 2009-03-02 05:59:36.000000000 -0800
+@@ -23,3 +23,44 @@
+ dstt 8,7,0
+ dstst 5,6,3
+ dststt 4,5,2
++ attn
++ mtcr 3
++ mtcrf 0xff,3
++ mtcrf 0x81,3
++ mtcrf 0x01,3
++ mtcrf 0x02,3
++ mtcrf 0x04,3
++ mtcrf 0x08,3
++ mtcrf 0x10,3
++ mtcrf 0x20,3
++ mtcrf 0x40,3
++ mtcrf 0x80,3
++ mfcr 3
++ mfcr 3,0x01
++ mfcr 3,0x02
++ mfcr 3,0x04
++ mfcr 3,0x08
++ mfcr 3,0x10
++ mfcr 3,0x20
++ mfcr 3,0x40
++ mfcr 3,0x80
++ dcbz 1, 2
++ dcbzl 3, 4
++ dcbz 5, 6
++ mtfsf 6,10
++ mtfsf. 6,11
++ mtfsf 6,10,0,0
++ mtfsf. 6,11,0,0
++ mtfsf 6,10,0,1
++ mtfsf. 6,11,0,1
++ mtfsf 6,10,1,0
++ mtfsf. 6,11,1,0
++ mtfsfi 6,0
++ mtfsfi. 6,15
++ mtfsfi 6,0,0
++ mtfsfi. 6,15,0
++ mtfsfi 6,0,1
++ mtfsfi. 6,15,1
++ cbcdtd 10,11
++ cdtbcd 10,11
++ addg6s 10,11,12
+diff -Naur binutils-2.19.1.orig/gas/testsuite/gas/ppc/power7.d binutils-2.19.1/gas/testsuite/gas/ppc/power7.d
+--- binutils-2.19.1.orig/gas/testsuite/gas/ppc/power7.d 2008-08-01 21:38:51.000000000 -0700
++++ binutils-2.19.1/gas/testsuite/gas/ppc/power7.d 2009-03-02 05:59:36.000000000 -0800
+@@ -1,8 +1,8 @@
+-#as: -a32 -mpower7
++#as: -mpower7
+ #objdump: -dr -Mpower7
+ #name: POWER7 tests (includes DFP, Altivec and VSX)
+
+-.*: +file format elf32-powerpc.*
++.*: +file format elf(32)?(64)?-powerpc.*
+
+ Disassembly of section \.text:
+
+@@ -33,25 +33,81 @@
+ 5c: f1 6c 67 87 xvmovdp vs43,vs44
+ 60: f0 64 2f 80 xvcpsgndp vs3,vs4,vs5
+ 64: f1 6c 6f 87 xvcpsgndp vs43,vs44,vs45
+- 68: 4c 00 03 24 doze
+- 6c: 4c 00 03 64 nap
+- 70: 4c 00 03 a4 sleep
+- 74: 4c 00 03 e4 rvwinkle
+- 78: 7c 83 01 34 prtyw r3,r4
+- 7c: 7d cd 01 74 prtyd r13,r14
+- 80: 7d 5c 02 a6 mfcfar r10
+- 84: 7d 7c 03 a6 mtcfar r11
+- 88: 7c 83 2b f8 cmpb r3,r4,r5
+- 8c: 7c c0 3c be mffgpr f6,r7
+- 90: 7d 00 4d be mftgpr r8,f9
+- 94: 7d 4b 66 2a lwzcix r10,r11,r12
+- 98: 7d ae 7e 2e lfdpx f13,r14,r15
+- 9c: ee 11 90 04 dadd f16,f17,f18
+- a0: fe 96 c0 04 daddq f20,f22,f24
+- a4: 7c 60 06 6c dss 3
+- a8: 7e 00 06 6c dssall
+- ac: 7c 25 22 ac dst r5,r4,1
+- b0: 7e 08 3a ac dstt r8,r7,0
+- b4: 7c 65 32 ec dstst r5,r6,3
+- b8: 7e 44 2a ec dststt r4,r5,2
+- bc: 4e 80 00 20 blr
++ 68: 7c 00 00 7c wait
++ 6c: 7c 00 00 7c wait
++ 70: 7c 20 00 7c waitrsv
++ 74: 7c 20 00 7c waitrsv
++ 78: 7c 40 00 7c waitimpl
++ 7c: 7c 40 00 7c waitimpl
++ 80: 4c 00 03 24 doze
++ 84: 4c 00 03 64 nap
++ 88: 4c 00 03 a4 sleep
++ 8c: 4c 00 03 e4 rvwinkle
++ 90: 7c 83 01 34 prtyw r3,r4
++ 94: 7d cd 01 74 prtyd r13,r14
++ 98: 7d 5c 02 a6 mfcfar r10
++ 9c: 7d 7c 03 a6 mtcfar r11
++ a0: 7c 83 2b f8 cmpb r3,r4,r5
++ a4: 7d 4b 66 2a lwzcix r10,r11,r12
++ a8: ee 11 90 04 dadd f16,f17,f18
++ ac: fe 96 c0 04 daddq f20,f22,f24
++ b0: 7c 60 06 6c dss 3
++ b4: 7e 00 06 6c dssall
++ b8: 7c 25 22 ac dst r5,r4,1
++ bc: 7e 08 3a ac dstt r8,r7,0
++ c0: 7c 65 32 ec dstst r5,r6,3
++ c4: 7e 44 2a ec dststt r4,r5,2
++ c8: 7d 4b 63 56 divwe r10,r11,r12
++ cc: 7d 6c 6b 57 divwe\. r11,r12,r13
++ d0: 7d 8d 77 56 divweo r12,r13,r14
++ d4: 7d ae 7f 57 divweo\. r13,r14,r15
++ d8: 7d 4b 63 16 divweu r10,r11,r12
++ dc: 7d 6c 6b 17 divweu\. r11,r12,r13
++ e0: 7d 8d 77 16 divweuo r12,r13,r14
++ e4: 7d ae 7f 17 divweuo\. r13,r14,r15
++ e8: 7e 27 d9 f8 bpermd r7,r17,r27
++ ec: 7e 8a 02 f4 popcntw r10,r20
++ f0: 7e 8a 03 f4 popcntd r10,r20
++ f4: 7e 95 b4 28 ldbrx r20,r21,r22
++ f8: 7e 95 b5 28 stdbrx r20,r21,r22
++ fc: 7d 40 56 ee lfiwzx f10,0,r10
++ 100: 7d 49 56 ee lfiwzx f10,r9,r10
++ 104: ec 80 2e 9c fcfids f4,f5
++ 108: ec 80 2e 9d fcfids\. f4,f5
++ 10c: ec 80 2f 9c fcfidus f4,f5
++ 110: ec 80 2f 9d fcfidus\. f4,f5
++ 114: fc 80 29 1c fctiwu f4,f5
++ 118: fc 80 29 1d fctiwu\. f4,f5
++ 11c: fc 80 29 1e fctiwuz f4,f5
++ 120: fc 80 29 1f fctiwuz\. f4,f5
++ 124: fc 80 2f 5c fctidu f4,f5
++ 128: fc 80 2f 5d fctidu\. f4,f5
++ 12c: fc 80 2f 5e fctiduz f4,f5
++ 130: fc 80 2f 5f fctiduz\. f4,f5
++ 134: fc 80 2f 9c fcfidu f4,f5
++ 138: fc 80 2f 9d fcfidu\. f4,f5
++ 13c: fc 0a 59 00 ftdiv cr0,f10,f11
++ 140: ff 8a 59 00 ftdiv cr7,f10,f11
++ 144: fc 00 51 40 ftsqrt cr0,f10
++ 148: ff 80 51 40 ftsqrt cr7,f10
++ 14c: 7e 08 4a 2c dcbtt r8,r9
++ 150: 7e 08 49 ec dcbtstt r8,r9
++ 154: ed 40 66 44 dcffix f10,f12
++ 158: ee 80 b6 45 dcffix\. f20,f22
++ 15c: 7d 4b 60 68 lbarx r10,r11,r12
++ 160: 7d 4b 60 68 lbarx r10,r11,r12
++ 164: 7d 4b 60 69 lbarx r10,r11,r12,1
++ 168: 7e 95 b0 e8 lharx r20,r21,r22
++ 16c: 7e 95 b0 e8 lharx r20,r21,r22
++ 170: 7e 95 b0 e9 lharx r20,r21,r22,1
++ 174: 7d 4b 65 6d stbcx\. r10,r11,r12
++ 178: 7d 4b 65 ad sthcx\. r10,r11,r12
++ 17c: fd c0 78 30 fre f14,f15
++ 180: fd c0 78 31 fre\. f14,f15
++ 184: ed c0 78 30 fres f14,f15
++ 188: ed c0 78 31 fres\. f14,f15
++ 18c: fd c0 78 34 frsqrte f14,f15
++ 190: fd c0 78 35 frsqrte\. f14,f15
++ 194: ed c0 78 34 frsqrtes f14,f15
++ 198: ed c0 78 35 frsqrtes\. f14,f15
++ 19c: 7c 43 27 1e isel r2,r3,r4,28
+diff -Naur binutils-2.19.1.orig/gas/testsuite/gas/ppc/power7.s binutils-2.19.1/gas/testsuite/gas/ppc/power7.s
+--- binutils-2.19.1.orig/gas/testsuite/gas/ppc/power7.s 2008-08-01 21:38:51.000000000 -0700
++++ binutils-2.19.1/gas/testsuite/gas/ppc/power7.s 2009-03-02 05:59:36.000000000 -0800
+@@ -1,9 +1,4 @@
+- .file "power7.c"
+ .section ".text"
+- .align 2
+- .p2align 4,,15
+- .globl power7
+- .type power7, @function
+ power7:
+ lxvd2x 3,4,5
+ lxvd2ux 3,4,5
+@@ -31,6 +26,12 @@
+ xvcpsgndp 43,44,44
+ xvcpsgndp 3,4,5
+ xvcpsgndp 43,44,45
++ wait
++ wait 0
++ waitrsv
++ wait 1
++ waitimpl
++ wait 2
+ doze
+ nap
+ sleep
+@@ -40,10 +41,7 @@
+ mfcfar 10
+ mtcfar 11
+ cmpb 3,4,5
+- mffgpr 6,7
+- mftgpr 8,9
+ lwzcix 10,11,12
+- lfdpx 13,14,15
+ dadd 16,17,18
+ daddq 20,22,24
+ dss 3
+@@ -52,7 +50,57 @@
+ dstt 8,7,0
+ dstst 5,6,3
+ dststt 4,5,2
+- blr
+- .size power7,.-power7
+- .ident "GCC: (GNU) 4.1.2 20070115 (prerelease) (SUSE Linux)"
+- .section .note.GNU-stack,"",@progbits
++ divwe 10,11,12
++ divwe. 11,12,13
++ divweo 12,13,14
++ divweo. 13,14,15
++ divweu 10,11,12
++ divweu. 11,12,13
++ divweuo 12,13,14
++ divweuo. 13,14,15
++ bpermd 7,17,27
++ popcntw 10,20
++ popcntd 10,20
++ ldbrx 20,21,22
++ stdbrx 20,21,22
++ lfiwzx 10,0,10
++ lfiwzx 10,9,10
++ fcfids 4,5
++ fcfids. 4,5
++ fcfidus 4,5
++ fcfidus. 4,5
++ fctiwu 4,5
++ fctiwu. 4,5
++ fctiwuz 4,5
++ fctiwuz. 4,5
++ fctidu 4,5
++ fctidu. 4,5
++ fctiduz 4,5
++ fctiduz. 4,5
++ fcfidu 4,5
++ fcfidu. 4,5
++ ftdiv 0,10,11
++ ftdiv 7,10,11
++ ftsqrt 0,10
++ ftsqrt 7,10
++ dcbtt 8,9
++ dcbtstt 8,9
++ dcffix 10,12
++ dcffix. 20,22
++ lbarx 10,11,12
++ lbarx 10,11,12,0
++ lbarx 10,11,12,1
++ lharx 20,21,22
++ lharx 20,21,22,0
++ lharx 20,21,22,1
++ stbcx. 10,11,12
++ sthcx. 10,11,12
++ fre 14,15
++ fre. 14,15
++ fres 14,15
++ fres. 14,15
++ frsqrte 14,15
++ frsqrte. 14,15
++ frsqrtes 14,15
++ frsqrtes. 14,15
++ isel 2,3,4,28
+diff -Naur binutils-2.19.1.orig/gas/testsuite/gas/ppc/ppc.exp binutils-2.19.1/gas/testsuite/gas/ppc/ppc.exp
+--- binutils-2.19.1.orig/gas/testsuite/gas/ppc/ppc.exp 2008-08-01 21:38:51.000000000 -0700
++++ binutils-2.19.1/gas/testsuite/gas/ppc/ppc.exp 2009-03-02 05:59:36.000000000 -0800
+@@ -45,7 +45,10 @@
+ run_dump_test "ppc750ps"
+ run_dump_test "e500mc"
+ run_dump_test "cell"
++ run_dump_test "common"
++ run_dump_test "power4_32"
+ run_dump_test "power6"
+ run_dump_test "power7"
++ run_dump_test "vsx"
+ }
+ }
+diff -Naur binutils-2.19.1.orig/gas/testsuite/gas/ppc/vsx.d binutils-2.19.1/gas/testsuite/gas/ppc/vsx.d
+--- binutils-2.19.1.orig/gas/testsuite/gas/ppc/vsx.d 1969-12-31 16:00:00.000000000 -0800
++++ binutils-2.19.1/gas/testsuite/gas/ppc/vsx.d 2009-03-02 05:59:36.000000000 -0800
+@@ -0,0 +1,174 @@
++#as: -mvsx
++#objdump: -d -Mvsx
++#name: VSX tests
++
++.*: +file format elf(32)?(64)?-powerpc.*
++
++
++Disassembly of section \.text:
++
++0+00 <start>:
++ 0: 7d 0a a4 99 lxsdx vs40,r10,r20
++ 4: 7d 0a a4 d9 lxsdux vs40,r10,r20
++ 8: 7d 0a a6 99 lxvd2x vs40,r10,r20
++ c: 7d 0a a6 d9 lxvd2ux vs40,r10,r20
++ 10: 7d 0a a2 99 lxvdsx vs40,r10,r20
++ 14: 7d 0a a6 19 lxvw4x vs40,r10,r20
++ 18: 7d 0a a6 59 lxvw4ux vs40,r10,r20
++ 1c: 7d 0a a5 99 stxsdx vs40,r10,r20
++ 20: 7d 0a a5 d9 stxsdux vs40,r10,r20
++ 24: 7d 0a a7 99 stxvd2x vs40,r10,r20
++ 28: 7d 0a a7 d9 stxvd2ux vs40,r10,r20
++ 2c: 7d 0a a7 19 stxvw4x vs40,r10,r20
++ 30: 7d 0a a7 59 stxvw4ux vs40,r10,r20
++ 34: f1 00 e5 67 xsabsdp vs40,vs60
++ 38: f1 12 e1 07 xsadddp vs40,vs50,vs60
++ 3c: f0 92 e1 5e xscmpodp cr1,vs50,vs60
++ 40: f0 92 e1 1e xscmpudp cr1,vs50,vs60
++ 44: f1 12 e5 87 xscpsgndp vs40,vs50,vs60
++ 48: f1 00 e4 27 xscvdpsp vs40,vs60
++ 4c: f1 00 e5 63 xscvdpsxds vs40,vs60
++ 50: f1 00 e1 63 xscvdpsxws vs40,vs60
++ 54: f1 00 e5 23 xscvdpuxds vs40,vs60
++ 58: f1 00 e1 23 xscvdpuxws vs40,vs60
++ 5c: f1 00 e5 27 xscvspdp vs40,vs60
++ 60: f1 00 e5 e3 xscvsxddp vs40,vs60
++ 64: f1 00 e5 a3 xscvuxddp vs40,vs60
++ 68: f1 12 e1 c7 xsdivdp vs40,vs50,vs60
++ 6c: f1 12 e1 0f xsmaddadp vs40,vs50,vs60
++ 70: f1 12 e1 4f xsmaddmdp vs40,vs50,vs60
++ 74: f1 12 e5 07 xsmaxdp vs40,vs50,vs60
++ 78: f1 12 e5 47 xsmindp vs40,vs50,vs60
++ 7c: f1 12 e1 8f xsmsubadp vs40,vs50,vs60
++ 80: f1 12 e1 cf xsmsubmdp vs40,vs50,vs60
++ 84: f1 12 e1 87 xsmuldp vs40,vs50,vs60
++ 88: f1 00 e5 a7 xsnabsdp vs40,vs60
++ 8c: f1 00 e5 e7 xsnegdp vs40,vs60
++ 90: f1 12 e5 0f xsnmaddadp vs40,vs50,vs60
++ 94: f1 12 e5 4f xsnmaddmdp vs40,vs50,vs60
++ 98: f1 12 e5 8f xsnmsubadp vs40,vs50,vs60
++ 9c: f1 12 e5 cf xsnmsubmdp vs40,vs50,vs60
++ a0: f1 00 e1 27 xsrdpi vs40,vs60
++ a4: f1 00 e1 af xsrdpic vs40,vs60
++ a8: f1 00 e1 e7 xsrdpim vs40,vs60
++ ac: f1 00 e1 a7 xsrdpip vs40,vs60
++ b0: f1 00 e1 67 xsrdpiz vs40,vs60
++ b4: f1 00 e1 6b xsredp vs40,vs60
++ b8: f1 00 e1 2b xsrsqrtedp vs40,vs60
++ bc: f1 00 e1 2f xssqrtdp vs40,vs60
++ c0: f1 12 e1 47 xssubdp vs40,vs50,vs60
++ c4: f0 92 e1 ee xstdivdp cr1,vs50,vs60
++ c8: f0 80 e1 aa xstsqrtdp cr1,vs60
++ cc: f1 00 e7 67 xvabsdp vs40,vs60
++ d0: f1 00 e6 67 xvabssp vs40,vs60
++ d4: f1 12 e3 07 xvadddp vs40,vs50,vs60
++ d8: f1 12 e2 07 xvaddsp vs40,vs50,vs60
++ dc: f1 12 e3 1f xvcmpeqdp vs40,vs50,vs60
++ e0: f1 12 e7 1f xvcmpeqdp. vs40,vs50,vs60
++ e4: f1 12 e2 1f xvcmpeqsp vs40,vs50,vs60
++ e8: f1 12 e6 1f xvcmpeqsp. vs40,vs50,vs60
++ ec: f1 12 e3 9f xvcmpgedp vs40,vs50,vs60
++ f0: f1 12 e7 9f xvcmpgedp. vs40,vs50,vs60
++ f4: f1 12 e2 9f xvcmpgesp vs40,vs50,vs60
++ f8: f1 12 e6 9f xvcmpgesp. vs40,vs50,vs60
++ fc: f1 12 e3 5f xvcmpgtdp vs40,vs50,vs60
++ 100: f1 12 e7 5f xvcmpgtdp. vs40,vs50,vs60
++ 104: f1 12 e2 5f xvcmpgtsp vs40,vs50,vs60
++ 108: f1 12 e6 5f xvcmpgtsp. vs40,vs50,vs60
++ 10c: f1 12 e7 87 xvcpsgndp vs40,vs50,vs60
++ 110: f1 1c e7 87 xvmovdp vs40,vs60
++ 114: f1 1c e7 87 xvmovdp vs40,vs60
++ 118: f1 12 e6 87 xvcpsgnsp vs40,vs50,vs60
++ 11c: f1 1c e6 87 xvmovsp vs40,vs60
++ 120: f1 1c e6 87 xvmovsp vs40,vs60
++ 124: f1 00 e6 27 xvcvdpsp vs40,vs60
++ 128: f1 00 e7 63 xvcvdpsxds vs40,vs60
++ 12c: f1 00 e3 63 xvcvdpsxws vs40,vs60
++ 130: f1 00 e7 23 xvcvdpuxds vs40,vs60
++ 134: f1 00 e3 23 xvcvdpuxws vs40,vs60
++ 138: f1 00 e7 27 xvcvspdp vs40,vs60
++ 13c: f1 00 e6 63 xvcvspsxds vs40,vs60
++ 140: f1 00 e2 63 xvcvspsxws vs40,vs60
++ 144: f1 00 e6 23 xvcvspuxds vs40,vs60
++ 148: f1 00 e2 23 xvcvspuxws vs40,vs60
++ 14c: f1 00 e7 e3 xvcvsxddp vs40,vs60
++ 150: f1 00 e6 e3 xvcvsxdsp vs40,vs60
++ 154: f1 00 e3 e3 xvcvsxwdp vs40,vs60
++ 158: f1 00 e2 e3 xvcvsxwsp vs40,vs60
++ 15c: f1 00 e7 a3 xvcvuxddp vs40,vs60
++ 160: f1 00 e6 a3 xvcvuxdsp vs40,vs60
++ 164: f1 00 e3 a3 xvcvuxwdp vs40,vs60
++ 168: f1 00 e2 a3 xvcvuxwsp vs40,vs60
++ 16c: f1 12 e3 c7 xvdivdp vs40,vs50,vs60
++ 170: f1 12 e2 c7 xvdivsp vs40,vs50,vs60
++ 174: f1 12 e3 0f xvmaddadp vs40,vs50,vs60
++ 178: f1 12 e3 4f xvmaddmdp vs40,vs50,vs60
++ 17c: f1 12 e2 0f xvmaddasp vs40,vs50,vs60
++ 180: f1 12 e2 4f xvmaddmsp vs40,vs50,vs60
++ 184: f1 12 e7 07 xvmaxdp vs40,vs50,vs60
++ 188: f1 12 e6 07 xvmaxsp vs40,vs50,vs60
++ 18c: f1 12 e7 47 xvmindp vs40,vs50,vs60
++ 190: f1 12 e6 47 xvminsp vs40,vs50,vs60
++ 194: f1 12 e3 8f xvmsubadp vs40,vs50,vs60
++ 198: f1 12 e3 cf xvmsubmdp vs40,vs50,vs60
++ 19c: f1 12 e2 8f xvmsubasp vs40,vs50,vs60
++ 1a0: f1 12 e2 cf xvmsubmsp vs40,vs50,vs60
++ 1a4: f1 12 e3 87 xvmuldp vs40,vs50,vs60
++ 1a8: f1 12 e2 87 xvmulsp vs40,vs50,vs60
++ 1ac: f1 00 e7 a7 xvnabsdp vs40,vs60
++ 1b0: f1 00 e6 a7 xvnabssp vs40,vs60
++ 1b4: f1 00 e7 e7 xvnegdp vs40,vs60
++ 1b8: f1 00 e6 e7 xvnegsp vs40,vs60
++ 1bc: f1 12 e7 0f xvnmaddadp vs40,vs50,vs60
++ 1c0: f1 12 e7 4f xvnmaddmdp vs40,vs50,vs60
++ 1c4: f1 12 e6 0f xvnmaddasp vs40,vs50,vs60
++ 1c8: f1 12 e6 4f xvnmaddmsp vs40,vs50,vs60
++ 1cc: f1 12 e7 8f xvnmsubadp vs40,vs50,vs60
++ 1d0: f1 12 e7 cf xvnmsubmdp vs40,vs50,vs60
++ 1d4: f1 12 e6 8f xvnmsubasp vs40,vs50,vs60
++ 1d8: f1 12 e6 cf xvnmsubmsp vs40,vs50,vs60
++ 1dc: f1 00 e3 27 xvrdpi vs40,vs60
++ 1e0: f1 00 e3 af xvrdpic vs40,vs60
++ 1e4: f1 00 e3 e7 xvrdpim vs40,vs60
++ 1e8: f1 00 e3 a7 xvrdpip vs40,vs60
++ 1ec: f1 00 e3 67 xvrdpiz vs40,vs60
++ 1f0: f1 00 e3 6b xvredp vs40,vs60
++ 1f4: f1 00 e2 6b xvresp vs40,vs60
++ 1f8: f1 00 e2 27 xvrspi vs40,vs60
++ 1fc: f1 00 e2 af xvrspic vs40,vs60
++ 200: f1 00 e2 e7 xvrspim vs40,vs60
++ 204: f1 00 e2 a7 xvrspip vs40,vs60
++ 208: f1 00 e2 67 xvrspiz vs40,vs60
++ 20c: f1 00 e3 2b xvrsqrtedp vs40,vs60
++ 210: f1 00 e2 2b xvrsqrtesp vs40,vs60
++ 214: f1 00 e3 2f xvsqrtdp vs40,vs60
++ 218: f1 00 e2 2f xvsqrtsp vs40,vs60
++ 21c: f1 12 e3 47 xvsubdp vs40,vs50,vs60
++ 220: f1 12 e2 47 xvsubsp vs40,vs50,vs60
++ 224: f0 92 e3 ee xvtdivdp cr1,vs50,vs60
++ 228: f0 92 e2 ee xvtdivsp cr1,vs50,vs60
++ 22c: f0 80 e3 aa xvtsqrtdp cr1,vs60
++ 230: f0 80 e2 aa xvtsqrtsp cr1,vs60
++ 234: f1 12 e4 17 xxland vs40,vs50,vs60
++ 238: f1 12 e4 57 xxlandc vs40,vs50,vs60
++ 23c: f1 12 e5 17 xxlnor vs40,vs50,vs60
++ 240: f1 12 e4 97 xxlor vs40,vs50,vs60
++ 244: f1 12 e4 d7 xxlxor vs40,vs50,vs60
++ 248: f1 12 e0 97 xxmrghw vs40,vs50,vs60
++ 24c: f1 12 e1 97 xxmrglw vs40,vs50,vs60
++ 250: f1 12 e0 57 xxmrghd vs40,vs50,vs60
++ 254: f1 12 e1 57 xxpermdi vs40,vs50,vs60,1
++ 258: f1 12 e2 57 xxpermdi vs40,vs50,vs60,2
++ 25c: f1 12 e3 57 xxmrgld vs40,vs50,vs60
++ 260: f1 12 90 57 xxspltd vs40,vs50,0
++ 264: f1 12 90 57 xxspltd vs40,vs50,0
++ 268: f1 12 93 57 xxspltd vs40,vs50,1
++ 26c: f1 12 93 57 xxspltd vs40,vs50,1
++ 270: f1 12 e0 57 xxmrghd vs40,vs50,vs60
++ 274: f1 12 e0 57 xxmrghd vs40,vs50,vs60
++ 278: f1 12 e3 57 xxmrgld vs40,vs50,vs60
++ 27c: f1 12 92 57 xxswapd vs40,vs50
++ 280: f1 12 92 57 xxswapd vs40,vs50
++ 284: f1 12 e7 bf xxsel vs40,vs50,vs60,vs62
++ 288: f1 12 e2 17 xxsldwi vs40,vs50,vs60,2
++ 28c: f1 02 e2 93 xxspltw vs40,vs60,2
+diff -Naur binutils-2.19.1.orig/gas/testsuite/gas/ppc/vsx.s binutils-2.19.1/gas/testsuite/gas/ppc/vsx.s
+--- binutils-2.19.1.orig/gas/testsuite/gas/ppc/vsx.s 1969-12-31 16:00:00.000000000 -0800
++++ binutils-2.19.1/gas/testsuite/gas/ppc/vsx.s 2009-03-02 05:59:36.000000000 -0800
+@@ -0,0 +1,166 @@
++ .section ".text"
++start:
++ lxsdx 40,10,20
++ lxsdux 40,10,20
++ lxvd2x 40,10,20
++ lxvd2ux 40,10,20
++ lxvdsx 40,10,20
++ lxvw4x 40,10,20
++ lxvw4ux 40,10,20
++ stxsdx 40,10,20
++ stxsdux 40,10,20
++ stxvd2x 40,10,20
++ stxvd2ux 40,10,20
++ stxvw4x 40,10,20
++ stxvw4ux 40,10,20
++ xsabsdp 40,60
++ xsadddp 40,50,60
++ xscmpodp 1,50,60
++ xscmpudp 1,50,60
++ xscpsgndp 40,50,60
++ xscvdpsp 40,60
++ xscvdpsxds 40,60
++ xscvdpsxws 40,60
++ xscvdpuxds 40,60
++ xscvdpuxws 40,60
++ xscvspdp 40,60
++ xscvsxddp 40,60
++ xscvuxddp 40,60
++ xsdivdp 40,50,60
++ xsmaddadp 40,50,60
++ xsmaddmdp 40,50,60
++ xsmaxdp 40,50,60
++ xsmindp 40,50,60
++ xsmsubadp 40,50,60
++ xsmsubmdp 40,50,60
++ xsmuldp 40,50,60
++ xsnabsdp 40,60
++ xsnegdp 40,60
++ xsnmaddadp 40,50,60
++ xsnmaddmdp 40,50,60
++ xsnmsubadp 40,50,60
++ xsnmsubmdp 40,50,60
++ xsrdpi 40,60
++ xsrdpic 40,60
++ xsrdpim 40,60
++ xsrdpip 40,60
++ xsrdpiz 40,60
++ xsredp 40,60
++ xsrsqrtedp 40,60
++ xssqrtdp 40,60
++ xssubdp 40,50,60
++ xstdivdp 1,50,60
++ xstsqrtdp 1,60
++ xvabsdp 40,60
++ xvabssp 40,60
++ xvadddp 40,50,60
++ xvaddsp 40,50,60
++ xvcmpeqdp 40,50,60
++ xvcmpeqdp. 40,50,60
++ xvcmpeqsp 40,50,60
++ xvcmpeqsp. 40,50,60
++ xvcmpgedp 40,50,60
++ xvcmpgedp. 40,50,60
++ xvcmpgesp 40,50,60
++ xvcmpgesp. 40,50,60
++ xvcmpgtdp 40,50,60
++ xvcmpgtdp. 40,50,60
++ xvcmpgtsp 40,50,60
++ xvcmpgtsp. 40,50,60
++ xvcpsgndp 40,50,60
++ xvmovdp 40,60
++ xvcpsgndp 40,60,60
++ xvcpsgnsp 40,50,60
++ xvmovsp 40,60
++ xvcpsgnsp 40,60,60
++ xvcvdpsp 40,60
++ xvcvdpsxds 40,60
++ xvcvdpsxws 40,60
++ xvcvdpuxds 40,60
++ xvcvdpuxws 40,60
++ xvcvspdp 40,60
++ xvcvspsxds 40,60
++ xvcvspsxws 40,60
++ xvcvspuxds 40,60
++ xvcvspuxws 40,60
++ xvcvsxddp 40,60
++ xvcvsxdsp 40,60
++ xvcvsxwdp 40,60
++ xvcvsxwsp 40,60
++ xvcvuxddp 40,60
++ xvcvuxdsp 40,60
++ xvcvuxwdp 40,60
++ xvcvuxwsp 40,60
++ xvdivdp 40,50,60
++ xvdivsp 40,50,60
++ xvmaddadp 40,50,60
++ xvmaddmdp 40,50,60
++ xvmaddasp 40,50,60
++ xvmaddmsp 40,50,60
++ xvmaxdp 40,50,60
++ xvmaxsp 40,50,60
++ xvmindp 40,50,60
++ xvminsp 40,50,60
++ xvmsubadp 40,50,60
++ xvmsubmdp 40,50,60
++ xvmsubasp 40,50,60
++ xvmsubmsp 40,50,60
++ xvmuldp 40,50,60
++ xvmulsp 40,50,60
++ xvnabsdp 40,60
++ xvnabssp 40,60
++ xvnegdp 40,60
++ xvnegsp 40,60
++ xvnmaddadp 40,50,60
++ xvnmaddmdp 40,50,60
++ xvnmaddasp 40,50,60
++ xvnmaddmsp 40,50,60
++ xvnmsubadp 40,50,60
++ xvnmsubmdp 40,50,60
++ xvnmsubasp 40,50,60
++ xvnmsubmsp 40,50,60
++ xvrdpi 40,60
++ xvrdpic 40,60
++ xvrdpim 40,60
++ xvrdpip 40,60
++ xvrdpiz 40,60
++ xvredp 40,60
++ xvresp 40,60
++ xvrspi 40,60
++ xvrspic 40,60
++ xvrspim 40,60
++ xvrspip 40,60
++ xvrspiz 40,60
++ xvrsqrtedp 40,60
++ xvrsqrtesp 40,60
++ xvsqrtdp 40,60
++ xvsqrtsp 40,60
++ xvsubdp 40,50,60
++ xvsubsp 40,50,60
++ xvtdivdp 1,50,60
++ xvtdivsp 1,50,60
++ xvtsqrtdp 1,60
++ xvtsqrtsp 1,60
++ xxland 40,50,60
++ xxlandc 40,50,60
++ xxlnor 40,50,60
++ xxlor 40,50,60
++ xxlxor 40,50,60
++ xxmrghw 40,50,60
++ xxmrglw 40,50,60
++ xxpermdi 40,50,60,0b00
++ xxpermdi 40,50,60,0b01
++ xxpermdi 40,50,60,0b10
++ xxpermdi 40,50,60,0b11
++ xxspltd 40,50,0
++ xxpermdi 40,50,50,0b00
++ xxspltd 40,50,1
++ xxpermdi 40,50,50,0b11
++ xxmrghd 40,50,60
++ xxpermdi 40,50,60,0b00
++ xxmrgld 40,50,60
++ xxpermdi 40,50,50,0b10
++ xxswapd 40,50
++ xxsel 40,50,60,62
++ xxsldwi 40,50,60,2
++ xxspltw 40,60,2
+diff -Naur binutils-2.19.1.orig/include/elf/ChangeLog binutils-2.19.1/include/elf/ChangeLog
+--- binutils-2.19.1.orig/include/elf/ChangeLog 2008-08-20 16:28:58.000000000 -0700
++++ binutils-2.19.1/include/elf/ChangeLog 2009-03-02 05:41:07.000000000 -0800
+@@ -1,3 +1,11 @@
++2009-03-02 Alan Modra <amodra@bigpond.net.au>
++
++ 2008-11-14 Nathan Sidwell <nathan@codesourcery.com>
++ * internal.h (struct elf_segment_map): Add header_size field.
++
++ 2008-10-10 Nathan Froyd <froydnj@codesourcery.com>
++ * ppc.h: Add Tag_GNU_Power_ABI_Struct_Return.
++
+ 2008-08-20 Bob Wilson <bob.wilson@acm.org>
+
+ * xtensa.h (R_XTENSA_TLSDESC_FN, R_XTENSA_TLSDESC_ARG)
+diff -Naur binutils-2.19.1.orig/include/elf/internal.h binutils-2.19.1/include/elf/internal.h
+--- binutils-2.19.1.orig/include/elf/internal.h 2008-03-12 22:27:41.000000000 -0700
++++ binutils-2.19.1/include/elf/internal.h 2009-03-02 05:41:07.000000000 -0800
+@@ -266,6 +266,8 @@
+ bfd_vma p_align;
+ /* Segment size in file and memory */
+ bfd_vma p_size;
++ /* Required size of filehdr + phdrs, if non-zero */
++ bfd_vma header_size;
+ /* Whether the p_flags field is valid; if not, the flags are based
+ on the section flags. */
+ unsigned int p_flags_valid : 1;
+diff -Naur binutils-2.19.1.orig/include/elf/ppc.h binutils-2.19.1/include/elf/ppc.h
+--- binutils-2.19.1.orig/include/elf/ppc.h 2008-07-26 06:10:47.000000000 -0700
++++ binutils-2.19.1/include/elf/ppc.h 2009-03-02 05:35:25.000000000 -0800
+@@ -186,6 +186,11 @@
+ registers, 3 for SPE registers; 0 for not tagged or not using any
+ ABIs affected by the differences. */
+ Tag_GNU_Power_ABI_Vector = 8,
++
++ /* Value 1 for ABIs using r3/r4 for returning structures <= 8 bytes,
++ 2 for ABIs using memory; 0 for not tagged or not using any ABIs
++ affected by the differences. */
++ Tag_GNU_Power_ABI_Struct_Return = 12
+ };
+
+ #endif /* _ELF_PPC_H */
+diff -Naur binutils-2.19.1.orig/include/opcode/ChangeLog binutils-2.19.1/include/opcode/ChangeLog
+--- binutils-2.19.1.orig/include/opcode/ChangeLog 2008-08-28 07:07:48.000000000 -0700
++++ binutils-2.19.1/include/opcode/ChangeLog 2009-03-02 05:59:36.000000000 -0800
+@@ -1,3 +1,12 @@
++2009-03-02 Alan Modra <amodra@bigpond.net.au>
++
++ 2009-02-26 Peter Bergner <bergner@vnet.ibm.com>
++ * ppc.h (PPC_OPCODE_POWER7): New.
++
++ 2009-01-09 Peter Bergner <bergner@vnet.ibm.com>
++ * ppc.h (struct powerpc_opcode): New field "deprecated".
++ (PPC_OPCODE_NOPOWER4): Delete.
++
+ 2008-08-28 H.J. Lu <hongjiu.lu@intel.com>
+
+ * ia64.h (ia64_resource_specifier): Add IA64_RS_CR_IIB. Update
+diff -Naur binutils-2.19.1.orig/include/opcode/ppc.h binutils-2.19.1/include/opcode/ppc.h
+--- binutils-2.19.1.orig/include/opcode/ppc.h 2008-08-01 21:38:51.000000000 -0700
++++ binutils-2.19.1/include/opcode/ppc.h 2009-03-02 05:59:36.000000000 -0800
+@@ -46,6 +46,11 @@
+ are listed below. */
+ ppc_cpu_t flags;
+
++ /* One bit flags for the opcode. These are used to indicate which
++ specific processors no longer support the instructions. The defined
++ values are listed below. */
++ ppc_cpu_t deprecated;
++
+ /* An array of operand codes. Each code is an index into the
+ operand table. They appear in the order which the operands must
+ appear in assembly code, and are terminated by a zero. */
+@@ -109,8 +114,8 @@
+ /* Opcode is only supported by Power4 architecture. */
+ #define PPC_OPCODE_POWER4 0x4000
+
+-/* Opcode isn't supported by Power4 architecture. */
+-#define PPC_OPCODE_NOPOWER4 0x8000
++/* Opcode is only supported by Power7 architecture. */
++#define PPC_OPCODE_POWER7 0x8000
+
+ /* Opcode is only supported by POWERPC Classic architecture. */
+ #define PPC_OPCODE_CLASSIC 0x10000
+diff -Naur binutils-2.19.1.orig/ld/ChangeLog binutils-2.19.1/ld/ChangeLog
+--- binutils-2.19.1.orig/ld/ChangeLog 2009-02-02 02:31:31.000000000 -0800
++++ binutils-2.19.1/ld/ChangeLog 2009-03-02 05:56:19.000000000 -0800
+@@ -1,3 +1,65 @@
++2009-03-02 Alan Modra <amodra@bigpond.net.au>
++
++ 2009-02-16 Alan Modra <amodra@bigpond.net.au>
++ * ldlang.c (push_stat_ptr, pop_stat_ptr): New functions.
++ (stat_save, stat_save_ptr): New variables.
++ (lang_insert_orphan): Use push_stat_ptr and pop_stat_ptr.
++ (load_symbols): Likewise. Delete dead "bad_load" code.
++ (open_input_bfds): Warn on script containing output sections.
++ (lang_enter_output_section_statement): Use push_stat_ptr.
++ (lang_enter_group): Likewise.
++ (lang_leave_output_section_statement): Use pop_stat_ptr.
++ (lang_leave_group): Likewise.
++ * ldlang.h (push_stat_ptr, pop_stat_ptr): Declare.
++ * ldctor.c (ldctor_build_sets): Use push_stat_ptr and pop_stat_ptr.
++ * emultempl/beos.em (gld_${EMULATION_NAME}_set_symbols): Likewise.
++ * emultempl/pe.em (gld_${EMULATION_NAME}_set_symbols): Likewise.
++ * emultempl/pep.em (gld_${EMULATION_NAME}_set_symbols): Likewise.
++ * emultempl/xtensaelf.em (ld_xtensa_insert_page_offsets): Likewise.
++
++ 2008-10-04 Alan Modra <amodra@bigpond.net.au>
++ PR 6931
++ * ldemul.c (ldemul_place_orphan): Add "constraint" param.
++ * ldemul.h (ldemul_place_orphan): Update prototype.
++ (struct ld_emulation_xfer_struct <place_orphan>): Likewise add param.
++ * ldlang.c (unique_section_p): Make static.
++ (lang_output_section_statement_lookup): Optimise creation of SPECIAL
++ sections.
++ (lang_insert_orphan): Add "constraint" param. Pass to
++ lang_enter_output_section_statement.
++ (init_os): Don't use an existing bfd section for SPECIAL sections.
++ (lang_place_orphans): Don't rename unique output sections, instead
++ mark their output section statements SPECIAL.
++ * ldlang.h (lang_insert_orphan): Update prototype.
++ (unique_section_p): Delete.
++ * emultempl/beos.em (place_orphan): Add "constraint" param.
++ * emultempl/elf32.em (place_orphan): Likewise. Don't match existing
++ output sections if set.
++ * emultempl/pe.em (place_orphan): Likewise.
++ * emultempl/pep.em (place_orphan): Likewise.
++ * emultempl/mmo.em (mmo_place_orphan): Update.
++ * emultempl/spuelf.em (spu_place_special_section): Update.
++
++ 2008-10-03 Alan Modra <amodra@bigpond.net.au>
++ PR 6931
++ * ldemul.c (ldemul_place_orphan): Add "name" param.
++ * ldemul.h (ldemul_place_orphan): Update prototype.
++ (struct ld_emulation_xfer_struct <place_orphan>): Likewise.
++ * ldlang.c (lang_place_orphans): Generate unique section names here..
++ * emultempl/elf32.em (place_orphan): ..rather than here. Don't
++ directly use an existing output section statement that has no
++ bfd section.
++ * emultempl/pe.em (place_orphan): Likewise.
++ * emultempl/pep.em (place_orphan): Likewise.
++ * emultempl/beos.em (place_orphan): Adjust.
++ * emultempl/spuelf.em (spu_place_special_section): Adjust
++ place_orphan call.
++ * emultempl/genelf.em (gld${EMULATION_NAME}_after_open): New function.
++ (LDEMUL_AFTER_OPEN): Define.
++
++ 2008-09-25 Alan Modra <amodra@bigpond.net.au>
++ * ldexp.c (fold_binary): Evaluate rhs when lhs not valid.
++
+ 2009-02-02 Tristan Gingold <gingold@adacore.com>
+
+ * deffilep.c: Add autogenerated file.
+diff -Naur binutils-2.19.1.orig/ld/emultempl/beos.em binutils-2.19.1/ld/emultempl/beos.em
+--- binutils-2.19.1.orig/ld/emultempl/beos.em 2008-09-08 17:10:16.000000000 -0700
++++ binutils-2.19.1/ld/emultempl/beos.em 2009-03-02 05:56:19.000000000 -0800
+@@ -8,7 +8,7 @@
+ fragment <<EOF
+ /* This file is part of GLD, the Gnu Linker.
+ Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+- 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
++ 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+ This file is part of the GNU Binutils.
+
+@@ -330,7 +330,6 @@
+ /* Run through and invent symbols for all the
+ names and insert the defaults. */
+ int j;
+- lang_statement_list_type *save;
+
+ if (!init[IMAGEBASEOFF].inited)
+ {
+@@ -347,9 +346,7 @@
+ return;
+
+ /* Glue the assignments into the abs section */
+- save = stat_ptr;
+-
+- stat_ptr = &(abs_output_section->children);
++ push_stat_ptr (&abs_output_section->children);
+
+ for (j = 0; init[j].ptr; j++)
+ {
+@@ -367,7 +364,7 @@
+ else abort();
+ }
+ /* Restore the pointer. */
+- stat_ptr = save;
++ pop_stat_ptr ();
+
+ if (pe.FileAlignment >
+ pe.SectionAlignment)
+@@ -609,8 +606,6 @@
+ static void
+ gld_${EMULATION_NAME}_before_allocation (void)
+ {
+- extern lang_statement_list_type *stat_ptr;
+-
+ #ifdef TARGET_IS_ppcpe
+ /* Here we rummage through the found bfds to collect toc information */
+ {
+@@ -665,9 +660,10 @@
+ which are not mentioned in the linker script. */
+
+ static bfd_boolean
+-gld${EMULATION_NAME}_place_orphan (asection *s)
++gld${EMULATION_NAME}_place_orphan (asection *s,
++ const char *secname,
++ int constraint)
+ {
+- const char *secname;
+ char *output_secname, *ps;
+ lang_output_section_statement_type *os;
+ lang_statement_union_type *l;
+@@ -682,8 +678,6 @@
+ if (link_info.relocatable)
+ return FALSE;
+
+- secname = bfd_get_section_name (s->owner, s);
+-
+ /* Everything from the '\$' on gets deleted so don't allow '\$' as the
+ first character. */
+ if (*secname == '\$')
+@@ -697,7 +691,7 @@
+ output_secname = xstrdup (secname);
+ ps = strchr (output_secname + 1, '\$');
+ *ps = 0;
+- os = lang_output_section_statement_lookup (output_secname, 0, TRUE);
++ os = lang_output_section_statement_lookup (output_secname, constraint, TRUE);
+
+ /* Find the '\$' wild statement for this section. We currently require the
+ linker script to explicitly mention "*(.foo\$)".
+diff -Naur binutils-2.19.1.orig/ld/emultempl/elf32.em binutils-2.19.1/ld/emultempl/elf32.em
+--- binutils-2.19.1.orig/ld/emultempl/elf32.em 2008-09-06 21:02:31.000000000 -0700
++++ binutils-2.19.1/ld/emultempl/elf32.em 2009-03-02 05:34:03.000000000 -0800
+@@ -62,7 +62,8 @@
+ static void gld${EMULATION_NAME}_before_parse (void);
+ static void gld${EMULATION_NAME}_after_open (void);
+ static void gld${EMULATION_NAME}_before_allocation (void);
+-static bfd_boolean gld${EMULATION_NAME}_place_orphan (asection *s);
++static bfd_boolean gld${EMULATION_NAME}_place_orphan
++ (asection *, const char *, int);
+ static void gld${EMULATION_NAME}_finish (void);
+
+ EOF
+@@ -1635,7 +1636,9 @@
+ sections in the right segment. */
+
+ static bfd_boolean
+-gld${EMULATION_NAME}_place_orphan (asection *s)
++gld${EMULATION_NAME}_place_orphan (asection *s,
++ const char *secname,
++ int constraint)
+ {
+ static struct orphan_save hold[] =
+ {
+@@ -1673,15 +1676,12 @@
+ };
+ static int orphan_init_done = 0;
+ struct orphan_save *place;
+- const char *secname;
+ lang_output_section_statement_type *after;
+ lang_output_section_statement_type *os;
+ int isdyn = 0;
+ int iself = s->owner->xvec->flavour == bfd_target_elf_flavour;
+ unsigned int sh_type = iself ? elf_section_type (s) : SHT_NULL;
+
+- secname = bfd_get_section_name (s->owner, s);
+-
+ if (! link_info.relocatable
+ && link_info.combreloc
+ && (s->flags & SEC_ALLOC))
+@@ -1707,28 +1707,23 @@
+ }
+ }
+
+- if (isdyn || (!config.unique_orphan_sections && !unique_section_p (s)))
+- {
+- /* Look through the script to see where to place this section. */
+- os = lang_output_section_find (secname);
+-
+- if (os != NULL
+- && (os->bfd_section == NULL
+- || os->bfd_section->flags == 0
+- || (_bfd_elf_match_sections_by_type (link_info.output_bfd,
+- os->bfd_section,
+- s->owner, s)
+- && ((s->flags ^ os->bfd_section->flags)
+- & (SEC_LOAD | SEC_ALLOC)) == 0)))
+- {
+- /* We already have an output section statement with this
+- name, and its bfd section, if any, has compatible flags.
+- If the section already exists but does not have any flags
+- set, then it has been created by the linker, probably as a
+- result of a --section-start command line switch. */
+- lang_add_section (&os->children, s, os);
+- return TRUE;
+- }
++ /* Look through the script to see where to place this section. */
++ if (constraint == 0
++ && (os = lang_output_section_find (secname)) != NULL
++ && os->bfd_section != NULL
++ && (os->bfd_section->flags == 0
++ || (_bfd_elf_match_sections_by_type (link_info.output_bfd,
++ os->bfd_section, s->owner, s)
++ && ((s->flags ^ os->bfd_section->flags)
++ & (SEC_LOAD | SEC_ALLOC)) == 0)))
++ {
++ /* We already have an output section statement with this
++ name, and its bfd section has compatible flags.
++ If the section already exists but does not have any flags
++ set, then it has been created by the linker, probably as a
++ result of a --section-start command line switch. */
++ lang_add_section (&os->children, s, os);
++ return TRUE;
+ }
+
+ if (!orphan_init_done)
+@@ -1748,7 +1743,7 @@
+ sections into the .text section to get them out of the way. */
+ if (link_info.executable
+ && ! link_info.relocatable
+- && CONST_STRNEQ (secname, ".gnu.warning.")
++ && CONST_STRNEQ (s->name, ".gnu.warning.")
+ && hold[orphan_text].os != NULL)
+ {
+ lang_add_section (&hold[orphan_text].os->children, s,
+@@ -1803,19 +1798,7 @@
+ after = &lang_output_section_statement.head->output_section_statement;
+ }
+
+- /* Choose a unique name for the section. This will be needed if the
+- same section name appears in the input file with different
+- loadable or allocatable characteristics. */
+- if (bfd_get_section_by_name (link_info.output_bfd, secname) != NULL)
+- {
+- static int count = 1;
+- secname = bfd_get_unique_section_name (link_info.output_bfd,
+- secname, &count);
+- if (secname == NULL)
+- einfo ("%F%P: place_orphan failed: %E\n");
+- }
+-
+- lang_insert_orphan (s, secname, after, place, NULL, NULL);
++ lang_insert_orphan (s, secname, constraint, after, place, NULL, NULL);
+
+ return TRUE;
+ }
+diff -Naur binutils-2.19.1.orig/ld/emultempl/genelf.em binutils-2.19.1/ld/emultempl/genelf.em
+--- binutils-2.19.1.orig/ld/emultempl/genelf.em 2007-07-19 12:56:10.000000000 -0700
++++ binutils-2.19.1/ld/emultempl/genelf.em 2009-03-02 05:32:55.000000000 -0800
+@@ -34,7 +34,27 @@
+ gld${EMULATION_NAME}_map_segments (FALSE);
+ finish_default ();
+ }
++
++static void
++gld${EMULATION_NAME}_after_open (void)
++{
++ bfd *ibfd;
++ asection *sec;
++ asymbol **syms;
++
++ if (link_info.relocatable)
++ for (ibfd = link_info.input_bfds; ibfd != NULL; ibfd = ibfd->link_next)
++ if ((syms = bfd_get_outsymbols (ibfd)) != NULL
++ && bfd_get_flavour (ibfd) == bfd_target_elf_flavour)
++ for (sec = ibfd->sections; sec != NULL; sec = sec->next)
++ if ((sec->flags & (SEC_GROUP | SEC_LINKER_CREATED)) == SEC_GROUP)
++ {
++ struct bfd_elf_section_data *sec_data = elf_section_data (sec);
++ elf_group_id (sec) = syms[sec_data->this_hdr.sh_info - 1];
++ }
++}
+ EOF
+ # Put these extra routines in ld_${EMULATION_NAME}_emulation
+ #
+ LDEMUL_FINISH=gld${EMULATION_NAME}_finish
++LDEMUL_AFTER_OPEN=gld${EMULATION_NAME}_after_open
+diff -Naur binutils-2.19.1.orig/ld/emultempl/mmo.em binutils-2.19.1/ld/emultempl/mmo.em
+--- binutils-2.19.1.orig/ld/emultempl/mmo.em 2008-02-14 19:35:53.000000000 -0800
++++ binutils-2.19.1/ld/emultempl/mmo.em 2009-03-02 05:34:03.000000000 -0800
+@@ -47,7 +47,9 @@
+ from elf32.em. */
+
+ static bfd_boolean
+-mmo_place_orphan (asection *s)
++mmo_place_orphan (asection *s,
++ const char *secname,
++ int constraint ATTRIBUTE_UNUSED)
+ {
+ static struct orphan_save hold_text =
+ {
+@@ -56,7 +58,6 @@
+ 0, 0, 0, 0
+ };
+ struct orphan_save *place;
+- const char *secname;
+ lang_output_section_statement_type *after;
+ lang_output_section_statement_type *os;
+
+@@ -66,7 +67,6 @@
+ return FALSE;
+
+ /* Only care for sections we're going to load. */
+- secname = s->name;
+ os = lang_output_section_find (secname);
+
+ /* We have an output section by this name. Place the section inside it
+@@ -93,7 +93,7 @@
+
+ /* If there's an output section by this name, we'll use it, regardless
+ of section flags, in contrast to what's done in elf32.em. */
+- os = lang_insert_orphan (s, secname, after, place, NULL, NULL);
++ os = lang_insert_orphan (s, secname, 0, after, place, NULL, NULL);
+
+ /* We need an output section for .text as a root, so if there was none
+ (might happen with a peculiar linker script such as in "map
+diff -Naur binutils-2.19.1.orig/ld/emultempl/pe.em binutils-2.19.1/ld/emultempl/pe.em
+--- binutils-2.19.1.orig/ld/emultempl/pe.em 2008-09-09 02:49:56.000000000 -0700
++++ binutils-2.19.1/ld/emultempl/pe.em 2009-03-02 05:56:19.000000000 -0800
+@@ -10,7 +10,7 @@
+ (echo;echo;echo;echo;echo)>e${EMULATION_NAME}.c # there, now line numbers match ;-)
+ fragment <<EOF
+ /* Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+- 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
++ 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+ This file is part of the GNU Binutils.
+
+@@ -697,7 +697,6 @@
+ /* Run through and invent symbols for all the
+ names and insert the defaults. */
+ int j;
+- lang_statement_list_type *save;
+
+ if (!init[IMAGEBASEOFF].inited)
+ {
+@@ -720,9 +719,7 @@
+ return;
+
+ /* Glue the assignments into the abs section. */
+- save = stat_ptr;
+-
+- stat_ptr = &(abs_output_section->children);
++ push_stat_ptr (&abs_output_section->children);
+
+ for (j = 0; init[j].ptr; j++)
+ {
+@@ -744,7 +741,7 @@
+ image_base_statement = rv;
+ }
+ /* Restore the pointer. */
+- stat_ptr = save;
++ pop_stat_ptr ();
+
+ if (pe.FileAlignment >
+ pe.SectionAlignment)
+@@ -1613,40 +1610,37 @@
+ sort_sections. */
+
+ static bfd_boolean
+-gld_${EMULATION_NAME}_place_orphan (asection *s)
++gld_${EMULATION_NAME}_place_orphan (asection *s,
++ const char *secname,
++ int constraint)
+ {
+- const char *secname;
+- const char *orig_secname;
++ const char *orig_secname = secname;
+ char *dollar = NULL;
+ lang_output_section_statement_type *os;
+ lang_statement_list_type add_child;
+
+- secname = bfd_get_section_name (s->owner, s);
+-
+ /* Look through the script to see where to place this section. */
+- orig_secname = secname;
+ if (!link_info.relocatable
+ && (dollar = strchr (secname, '$')) != NULL)
+ {
+- size_t len = dollar - orig_secname;
++ size_t len = dollar - secname;
+ char *newname = xmalloc (len + 1);
+- memcpy (newname, orig_secname, len);
++ memcpy (newname, secname, len);
+ newname[len] = '\0';
+ secname = newname;
+ }
+
+- os = lang_output_section_find (secname);
+-
+ lang_list_init (&add_child);
+
+- if (os != NULL
+- && (os->bfd_section == NULL
+- || os->bfd_section->flags == 0
++ if (constraint == 0
++ && (os = lang_output_section_find (secname)) != NULL
++ && os->bfd_section != NULL
++ && (os->bfd_section->flags == 0
+ || ((s->flags ^ os->bfd_section->flags)
+ & (SEC_LOAD | SEC_ALLOC)) == 0))
+ {
+ /* We already have an output section statement with this
+- name, and its bfd section, if any, has compatible flags.
++ name, and its bfd section has compatible flags.
+ If the section already exists but does not have any flags set,
+ then it has been created by the linker, probably as a result of
+ a --section-start command line switch. */
+@@ -1723,21 +1717,10 @@
+ ->output_section_statement);
+ }
+
+- /* Choose a unique name for the section. This will be needed if the
+- same section name appears in the input file with different
+- loadable or allocatable characteristics. */
+- if (bfd_get_section_by_name (link_info.output_bfd, secname) != NULL)
+- {
+- static int count = 1;
+- secname = bfd_get_unique_section_name (link_info.output_bfd,
+- secname, &count);
+- if (secname == NULL)
+- einfo ("%F%P: place_orphan failed: %E\n");
+- }
+-
+ /* All sections in an executable must be aligned to a page boundary. */
+ address = exp_unop (ALIGN_K, exp_nameop (NAME, "__section_alignment__"));
+- os = lang_insert_orphan (s, secname, after, place, address, &add_child);
++ os = lang_insert_orphan (s, secname, constraint, after, place, address,
++ &add_child);
+ }
+
+ {
+diff -Naur binutils-2.19.1.orig/ld/emultempl/pep.em binutils-2.19.1/ld/emultempl/pep.em
+--- binutils-2.19.1.orig/ld/emultempl/pep.em 2008-09-09 02:49:56.000000000 -0700
++++ binutils-2.19.1/ld/emultempl/pep.em 2009-03-02 05:56:19.000000000 -0800
+@@ -9,7 +9,7 @@
+ rm -f e${EMULATION_NAME}.c
+ (echo;echo;echo;echo;echo)>e${EMULATION_NAME}.c # there, now line numbers match ;-)
+ fragment <<EOF
+-/* Copyright 2006, 2007, 2008 Free Software Foundation, Inc.
++/* Copyright 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+ Written by Kai Tietz, OneVision Software GmbH&CoKg.
+
+ This file is part of the GNU Binutils.
+@@ -657,7 +657,6 @@
+ /* Run through and invent symbols for all the
+ names and insert the defaults. */
+ int j;
+- lang_statement_list_type *save;
+
+ if (!init[IMAGEBASEOFF].inited)
+ {
+@@ -680,9 +679,7 @@
+ return;
+
+ /* Glue the assignments into the abs section. */
+- save = stat_ptr;
+-
+- stat_ptr = &(abs_output_section->children);
++ push_stat_ptr (&abs_output_section->children);
+
+ for (j = 0; init[j].ptr; j++)
+ {
+@@ -704,7 +701,7 @@
+ image_base_statement = rv;
+ }
+ /* Restore the pointer. */
+- stat_ptr = save;
++ pop_stat_ptr ();
+
+ if (pep.FileAlignment > pep.SectionAlignment)
+ {
+@@ -1372,40 +1369,37 @@
+ sort_sections. */
+
+ static bfd_boolean
+-gld_${EMULATION_NAME}_place_orphan (asection *s)
++gld_${EMULATION_NAME}_place_orphan (asection *s,
++ const char *secname,
++ int constraint)
+ {
+- const char *secname;
+- const char *orig_secname;
++ const char *orig_secname = secname;
+ char *dollar = NULL;
+ lang_output_section_statement_type *os;
+ lang_statement_list_type add_child;
+
+- secname = bfd_get_section_name (s->owner, s);
+-
+ /* Look through the script to see where to place this section. */
+- orig_secname = secname;
+ if (!link_info.relocatable
+ && (dollar = strchr (secname, '$')) != NULL)
+ {
+- size_t len = dollar - orig_secname;
++ size_t len = dollar - secname;
+ char *newname = xmalloc (len + 1);
+- memcpy (newname, orig_secname, len);
++ memcpy (newname, secname, len);
+ newname[len] = '\0';
+ secname = newname;
+ }
+
+- os = lang_output_section_find (secname);
+-
+ lang_list_init (&add_child);
+
+- if (os != NULL
+- && (os->bfd_section == NULL
+- || os->bfd_section->flags == 0
++ if (constraint == 0
++ && (os = lang_output_section_find (secname)) != NULL
++ && os->bfd_section != NULL
++ && (os->bfd_section->flags == 0
+ || ((s->flags ^ os->bfd_section->flags)
+ & (SEC_LOAD | SEC_ALLOC)) == 0))
+ {
+ /* We already have an output section statement with this
+- name, and its bfd section, if any, has compatible flags.
++ name, and its bfd section has compatible flags.
+ If the section already exists but does not have any flags set,
+ then it has been created by the linker, probably as a result of
+ a --section-start command line switch. */
+@@ -1482,21 +1476,10 @@
+ ->output_section_statement);
+ }
+
+- /* Choose a unique name for the section. This will be needed if the
+- same section name appears in the input file with different
+- loadable or allocatable characteristics. */
+- if (bfd_get_section_by_name (link_info.output_bfd, secname) != NULL)
+- {
+- static int count = 1;
+- secname = bfd_get_unique_section_name (link_info.output_bfd,
+- secname, &count);
+- if (secname == NULL)
+- einfo ("%F%P: place_orphan failed: %E\n");
+- }
+-
+ /* All sections in an executable must be aligned to a page boundary. */
+ address = exp_unop (ALIGN_K, exp_nameop (NAME, "__section_alignment__"));
+- os = lang_insert_orphan (s, secname, after, place, address, &add_child);
++ os = lang_insert_orphan (s, secname, constraint, after, place, address,
++ &add_child);
+ }
+
+ {
+diff -Naur binutils-2.19.1.orig/ld/emultempl/spuelf.em binutils-2.19.1/ld/emultempl/spuelf.em
+--- binutils-2.19.1.orig/ld/emultempl/spuelf.em 2008-08-02 09:25:44.000000000 -0700
++++ binutils-2.19.1/ld/emultempl/spuelf.em 2009-03-02 05:34:03.000000000 -0800
+@@ -114,12 +114,7 @@
+
+ os = lang_output_section_find (o != NULL ? o->name : output_name);
+ if (os == NULL)
+- {
+- const char *save = s->name;
+- s->name = output_name;
+- gld${EMULATION_NAME}_place_orphan (s);
+- s->name = save;
+- }
++ gld${EMULATION_NAME}_place_orphan (s, output_name, 0);
+ else if (o != NULL && os->children.head != NULL)
+ {
+ lang_statement_list_type add;
+diff -Naur binutils-2.19.1.orig/ld/emultempl/xtensaelf.em binutils-2.19.1/ld/emultempl/xtensaelf.em
+--- binutils-2.19.1.orig/ld/emultempl/xtensaelf.em 2008-02-14 19:35:53.000000000 -0800
++++ binutils-2.19.1/ld/emultempl/xtensaelf.em 2009-03-02 05:56:19.000000000 -0800
+@@ -1,5 +1,5 @@
+ # This shell script emits a C file. -*- C -*-
+-# Copyright 2003, 2004, 2005, 2006, 2007, 2008
++# Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009
+ # Free Software Foundation, Inc.
+ #
+ # This file is part of the GNU Binutils.
+@@ -1951,20 +1951,17 @@
+ lang_assignment_statement_type *assign_stmt;
+ lang_statement_union_type *assign_union;
+ lang_statement_list_type tmplist;
+- lang_statement_list_type *old_stat_ptr = stat_ptr;
+
+ /* There is hidden state in "lang_add_assignment". It
+ appends the new assignment statement to the stat_ptr
+ list. Thus, we swap it before and after the call. */
+
+- tmplist.head = NULL;
+- tmplist.tail = &tmplist.head;
+-
+- stat_ptr = &tmplist;
++ lang_list_init (&tmplist);
++ push_stat_ptr (&tmplist);
+ /* Warning: side effect; statement appended to stat_ptr. */
+ assign_stmt = lang_add_assignment (assign_op);
+ assign_union = (lang_statement_union_type *) assign_stmt;
+- stat_ptr = old_stat_ptr;
++ pop_stat_ptr ();
+
+ assign_union->header.next = l;
+ *(*stack_p)->iterloc.loc = assign_union;
+diff -Naur binutils-2.19.1.orig/ld/ldctor.c binutils-2.19.1/ld/ldctor.c
+--- binutils-2.19.1.orig/ld/ldctor.c 2008-02-14 19:35:53.000000000 -0800
++++ binutils-2.19.1/ld/ldctor.c 2009-03-02 05:56:19.000000000 -0800
+@@ -1,6 +1,7 @@
+ /* ldctor.c -- constructor support routines
+ Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+- 2002, 2003, 2004, 2006, 2007, 2008 Free Software Foundation, Inc.
++ 2002, 2003, 2004, 2006, 2007, 2008, 2009
++ Free Software Foundation, Inc.
+ By Steve Chamberlain <sac@cygnus.com>
+
+ This file is part of the GNU Binutils.
+@@ -198,7 +199,6 @@
+ ldctor_build_sets (void)
+ {
+ static bfd_boolean called;
+- lang_statement_list_type *old;
+ bfd_boolean header_printed;
+ struct set_info *p;
+
+@@ -244,10 +244,8 @@
+ }
+ }
+
+- old = stat_ptr;
+- stat_ptr = &constructor_list;
+-
+- lang_list_init (stat_ptr);
++ lang_list_init (&constructor_list);
++ push_stat_ptr (&constructor_list);
+
+ header_printed = FALSE;
+ for (p = sets; p != NULL; p = p->next)
+@@ -372,5 +370,5 @@
+ lang_add_data (size, exp_intop (0));
+ }
+
+- stat_ptr = old;
++ pop_stat_ptr ();
+ }
+diff -Naur binutils-2.19.1.orig/ld/ldemul.c binutils-2.19.1/ld/ldemul.c
+--- binutils-2.19.1.orig/ld/ldemul.c 2008-02-14 19:35:53.000000000 -0800
++++ binutils-2.19.1/ld/ldemul.c 2009-03-02 05:34:02.000000000 -0800
+@@ -120,10 +120,10 @@
+ }
+
+ bfd_boolean
+-ldemul_place_orphan (asection *s)
++ldemul_place_orphan (asection *s, const char *name, int constraint)
+ {
+ if (ld_emulation->place_orphan)
+- return (*ld_emulation->place_orphan) (s);
++ return (*ld_emulation->place_orphan) (s, name, constraint);
+ return FALSE;
+ }
+
+diff -Naur binutils-2.19.1.orig/ld/ldemul.h binutils-2.19.1/ld/ldemul.h
+--- binutils-2.19.1.orig/ld/ldemul.h 2007-07-06 07:09:41.000000000 -0700
++++ binutils-2.19.1/ld/ldemul.h 2009-03-02 05:34:02.000000000 -0800
+@@ -59,7 +59,7 @@
+ extern void ldemul_create_output_section_statements
+ (void);
+ extern bfd_boolean ldemul_place_orphan
+- (asection *);
++ (asection *, const char *, int);
+ extern bfd_boolean ldemul_parse_args
+ (int, char **);
+ extern void ldemul_add_options
+@@ -152,7 +152,7 @@
+ the default action should be taken. This field may be NULL, in
+ which case the default action will always be taken. */
+ bfd_boolean (*place_orphan)
+- (asection *);
++ (asection *, const char *, int);
+
+ /* Run after assigning parsing with the args, but before
+ reading the script. Used to initialize symbols used in the script. */
+diff -Naur binutils-2.19.1.orig/ld/ldexp.c binutils-2.19.1/ld/ldexp.c
+--- binutils-2.19.1.orig/ld/ldexp.c 2008-08-21 06:10:54.000000000 -0700
++++ binutils-2.19.1/ld/ldexp.c 2009-03-02 05:29:32.000000000 -0800
+@@ -282,6 +282,7 @@
+ static void
+ fold_binary (etree_type *tree)
+ {
++ etree_value_type lhs;
+ exp_fold_tree_1 (tree->binary.lhs);
+
+ /* The SEGMENT_START operator is special because its first
+@@ -304,169 +305,167 @@
+ expld.result.section = expld.section;
+ break;
+ }
++ return;
+ }
+- else if (expld.result.valid_p)
+- {
+- etree_value_type lhs = expld.result;
+
+- exp_fold_tree_1 (tree->binary.rhs);
+- if (expld.result.valid_p)
+- {
+- /* If the values are from different sections, or this is an
+- absolute expression, make both the source arguments
+- absolute. However, adding or subtracting an absolute
+- value from a relative value is meaningful, and is an
+- exception. */
+- if (expld.section != bfd_abs_section_ptr
+- && lhs.section == bfd_abs_section_ptr
+- && tree->type.node_code == '+')
+- {
+- /* Keep the section of the rhs term. */
+- expld.result.value = lhs.value + expld.result.value;
+- return;
+- }
+- else if (expld.section != bfd_abs_section_ptr
+- && expld.result.section == bfd_abs_section_ptr
+- && (tree->type.node_code == '+'
+- || tree->type.node_code == '-'))
+- {
+- /* Keep the section of the lhs term. */
+- expld.result.section = lhs.section;
+- }
+- else if (expld.result.section != lhs.section
+- || expld.section == bfd_abs_section_ptr)
+- {
+- make_abs ();
+- lhs.value += lhs.section->vma;
+- }
+-
+- switch (tree->type.node_code)
+- {
+- case '%':
+- if (expld.result.value != 0)
+- expld.result.value = ((bfd_signed_vma) lhs.value
+- % (bfd_signed_vma) expld.result.value);
+- else if (expld.phase != lang_mark_phase_enum)
+- einfo (_("%F%S %% by zero\n"));
+- break;
++ lhs = expld.result;
++ exp_fold_tree_1 (tree->binary.rhs);
++ expld.result.valid_p &= lhs.valid_p;
+
+- case '/':
+- if (expld.result.value != 0)
+- expld.result.value = ((bfd_signed_vma) lhs.value
+- / (bfd_signed_vma) expld.result.value);
+- else if (expld.phase != lang_mark_phase_enum)
+- einfo (_("%F%S / by zero\n"));
+- break;
++ if (expld.result.valid_p)
++ {
++ /* If the values are from different sections, or this is an
++ absolute expression, make both the source arguments
++ absolute. However, adding or subtracting an absolute
++ value from a relative value is meaningful, and is an
++ exception. */
++ if (expld.section != bfd_abs_section_ptr
++ && lhs.section == bfd_abs_section_ptr
++ && tree->type.node_code == '+')
++ {
++ /* Keep the section of the rhs term. */
++ expld.result.value = lhs.value + expld.result.value;
++ return;
++ }
++ else if (expld.section != bfd_abs_section_ptr
++ && expld.result.section == bfd_abs_section_ptr
++ && (tree->type.node_code == '+'
++ || tree->type.node_code == '-'))
++ {
++ /* Keep the section of the lhs term. */
++ expld.result.section = lhs.section;
++ }
++ else if (expld.result.section != lhs.section
++ || expld.section == bfd_abs_section_ptr)
++ {
++ make_abs ();
++ lhs.value += lhs.section->vma;
++ }
++
++ switch (tree->type.node_code)
++ {
++ case '%':
++ if (expld.result.value != 0)
++ expld.result.value = ((bfd_signed_vma) lhs.value
++ % (bfd_signed_vma) expld.result.value);
++ else if (expld.phase != lang_mark_phase_enum)
++ einfo (_("%F%S %% by zero\n"));
++ break;
++
++ case '/':
++ if (expld.result.value != 0)
++ expld.result.value = ((bfd_signed_vma) lhs.value
++ / (bfd_signed_vma) expld.result.value);
++ else if (expld.phase != lang_mark_phase_enum)
++ einfo (_("%F%S / by zero\n"));
++ break;
+
+ #define BOP(x, y) \
+ case x: \
+ expld.result.value = lhs.value y expld.result.value; \
+ break;
+
+- BOP ('+', +);
+- BOP ('*', *);
+- BOP ('-', -);
+- BOP (LSHIFT, <<);
+- BOP (RSHIFT, >>);
+- BOP (EQ, ==);
+- BOP (NE, !=);
+- BOP ('<', <);
+- BOP ('>', >);
+- BOP (LE, <=);
+- BOP (GE, >=);
+- BOP ('&', &);
+- BOP ('^', ^);
+- BOP ('|', |);
+- BOP (ANDAND, &&);
+- BOP (OROR, ||);
+-
+- case MAX_K:
+- if (lhs.value > expld.result.value)
+- expld.result.value = lhs.value;
+- break;
+-
+- case MIN_K:
+- if (lhs.value < expld.result.value)
+- expld.result.value = lhs.value;
+- break;
+-
+- case ALIGN_K:
+- expld.result.value = align_n (lhs.value, expld.result.value);
+- break;
+-
+- case DATA_SEGMENT_ALIGN:
+- expld.dataseg.relro = exp_dataseg_relro_start;
+- if (expld.phase != lang_first_phase_enum
+- && expld.section == bfd_abs_section_ptr
+- && (expld.dataseg.phase == exp_dataseg_none
+- || expld.dataseg.phase == exp_dataseg_adjust
+- || expld.dataseg.phase == exp_dataseg_relro_adjust
+- || expld.phase == lang_final_phase_enum))
++ BOP ('+', +);
++ BOP ('*', *);
++ BOP ('-', -);
++ BOP (LSHIFT, <<);
++ BOP (RSHIFT, >>);
++ BOP (EQ, ==);
++ BOP (NE, !=);
++ BOP ('<', <);
++ BOP ('>', >);
++ BOP (LE, <=);
++ BOP (GE, >=);
++ BOP ('&', &);
++ BOP ('^', ^);
++ BOP ('|', |);
++ BOP (ANDAND, &&);
++ BOP (OROR, ||);
++
++ case MAX_K:
++ if (lhs.value > expld.result.value)
++ expld.result.value = lhs.value;
++ break;
++
++ case MIN_K:
++ if (lhs.value < expld.result.value)
++ expld.result.value = lhs.value;
++ break;
++
++ case ALIGN_K:
++ expld.result.value = align_n (lhs.value, expld.result.value);
++ break;
++
++ case DATA_SEGMENT_ALIGN:
++ expld.dataseg.relro = exp_dataseg_relro_start;
++ if (expld.phase != lang_first_phase_enum
++ && expld.section == bfd_abs_section_ptr
++ && (expld.dataseg.phase == exp_dataseg_none
++ || expld.dataseg.phase == exp_dataseg_adjust
++ || expld.dataseg.phase == exp_dataseg_relro_adjust
++ || expld.phase == lang_final_phase_enum))
++ {
++ bfd_vma maxpage = lhs.value;
++ bfd_vma commonpage = expld.result.value;
++
++ expld.result.value = align_n (expld.dot, maxpage);
++ if (expld.dataseg.phase == exp_dataseg_relro_adjust)
++ expld.result.value = expld.dataseg.base;
++ else if (expld.dataseg.phase != exp_dataseg_adjust)
+ {
+- bfd_vma maxpage = lhs.value;
+- bfd_vma commonpage = expld.result.value;
+-
+- expld.result.value = align_n (expld.dot, maxpage);
+- if (expld.dataseg.phase == exp_dataseg_relro_adjust)
+- expld.result.value = expld.dataseg.base;
+- else if (expld.dataseg.phase != exp_dataseg_adjust)
++ expld.result.value += expld.dot & (maxpage - 1);
++ if (expld.phase == lang_allocating_phase_enum)
+ {
+- expld.result.value += expld.dot & (maxpage - 1);
+- if (expld.phase == lang_allocating_phase_enum)
+- {
+- expld.dataseg.phase = exp_dataseg_align_seen;
+- expld.dataseg.min_base = expld.dot;
+- expld.dataseg.base = expld.result.value;
+- expld.dataseg.pagesize = commonpage;
+- expld.dataseg.maxpagesize = maxpage;
+- expld.dataseg.relro_end = 0;
+- }
++ expld.dataseg.phase = exp_dataseg_align_seen;
++ expld.dataseg.min_base = expld.dot;
++ expld.dataseg.base = expld.result.value;
++ expld.dataseg.pagesize = commonpage;
++ expld.dataseg.maxpagesize = maxpage;
++ expld.dataseg.relro_end = 0;
+ }
+- else if (commonpage < maxpage)
+- expld.result.value += ((expld.dot + commonpage - 1)
+- & (maxpage - commonpage));
+ }
+- else
+- expld.result.valid_p = FALSE;
+- break;
++ else if (commonpage < maxpage)
++ expld.result.value += ((expld.dot + commonpage - 1)
++ & (maxpage - commonpage));
++ }
++ else
++ expld.result.valid_p = FALSE;
++ break;
+
+- case DATA_SEGMENT_RELRO_END:
+- expld.dataseg.relro = exp_dataseg_relro_end;
+- if (expld.phase != lang_first_phase_enum
+- && (expld.dataseg.phase == exp_dataseg_align_seen
+- || expld.dataseg.phase == exp_dataseg_adjust
+- || expld.dataseg.phase == exp_dataseg_relro_adjust
+- || expld.phase == lang_final_phase_enum))
++ case DATA_SEGMENT_RELRO_END:
++ expld.dataseg.relro = exp_dataseg_relro_end;
++ if (expld.phase != lang_first_phase_enum
++ && (expld.dataseg.phase == exp_dataseg_align_seen
++ || expld.dataseg.phase == exp_dataseg_adjust
++ || expld.dataseg.phase == exp_dataseg_relro_adjust
++ || expld.phase == lang_final_phase_enum))
++ {
++ if (expld.dataseg.phase == exp_dataseg_align_seen
++ || expld.dataseg.phase == exp_dataseg_relro_adjust)
++ expld.dataseg.relro_end = lhs.value + expld.result.value;
++
++ if (expld.dataseg.phase == exp_dataseg_relro_adjust
++ && (expld.dataseg.relro_end
++ & (expld.dataseg.pagesize - 1)))
+ {
+- if (expld.dataseg.phase == exp_dataseg_align_seen
+- || expld.dataseg.phase == exp_dataseg_relro_adjust)
+- expld.dataseg.relro_end = lhs.value + expld.result.value;
+-
+- if (expld.dataseg.phase == exp_dataseg_relro_adjust
+- && (expld.dataseg.relro_end
+- & (expld.dataseg.pagesize - 1)))
+- {
+- expld.dataseg.relro_end += expld.dataseg.pagesize - 1;
+- expld.dataseg.relro_end &= ~(expld.dataseg.pagesize - 1);
+- expld.result.value = (expld.dataseg.relro_end
+- - expld.result.value);
+- }
+- else
+- expld.result.value = lhs.value;
+-
+- if (expld.dataseg.phase == exp_dataseg_align_seen)
+- expld.dataseg.phase = exp_dataseg_relro_seen;
++ expld.dataseg.relro_end += expld.dataseg.pagesize - 1;
++ expld.dataseg.relro_end &= ~(expld.dataseg.pagesize - 1);
++ expld.result.value = (expld.dataseg.relro_end
++ - expld.result.value);
+ }
+ else
+- expld.result.valid_p = FALSE;
+- break;
++ expld.result.value = lhs.value;
+
+- default:
+- FAIL ();
++ if (expld.dataseg.phase == exp_dataseg_align_seen)
++ expld.dataseg.phase = exp_dataseg_relro_seen;
+ }
++ else
++ expld.result.valid_p = FALSE;
++ break;
++
++ default:
++ FAIL ();
+ }
+- else
+- expld.result.valid_p = FALSE;
+ }
+ }
+
+diff -Naur binutils-2.19.1.orig/ld/ldlang.c binutils-2.19.1/ld/ldlang.c
+--- binutils-2.19.1.orig/ld/ldlang.c 2008-09-06 21:02:30.000000000 -0700
++++ binutils-2.19.1/ld/ldlang.c 2009-03-02 05:56:19.000000000 -0800
+@@ -1,6 +1,6 @@
+ /* Linker command language support.
+ Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
++ 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+ Free Software Foundation, Inc.
+
+ This file is part of the GNU Binutils.
+@@ -64,6 +64,8 @@
+ static const char *output_target;
+ static lang_statement_list_type statement_list;
+ static struct bfd_hash_table lang_definedness_table;
++static lang_statement_list_type *stat_save[10];
++static lang_statement_list_type **stat_save_ptr = &stat_save[0];
+
+ /* Forward declarations. */
+ static void exp_init_os (etree_type *);
+@@ -193,7 +195,7 @@
+ return match;
+ }
+
+-bfd_boolean
++static bfd_boolean
+ unique_section_p (const asection *sec)
+ {
+ struct unique_sections *unam;
+@@ -925,6 +927,23 @@
+ list->tail = &list->head;
+ }
+
++void
++push_stat_ptr (lang_statement_list_type *new_ptr)
++{
++ if (stat_save_ptr >= stat_save + sizeof (stat_save) / sizeof (stat_save[0]))
++ abort ();
++ *stat_save_ptr++ = stat_ptr;
++ stat_ptr = new_ptr;
++}
++
++void
++pop_stat_ptr (void)
++{
++ if (stat_save_ptr <= stat_save)
++ abort ();
++ stat_ptr = *--stat_save_ptr;
++}
++
+ /* Build a new statement node for the parse tree. */
+
+ static lang_statement_union_type *
+@@ -1278,19 +1297,25 @@
+ struct out_section_hash_entry *last_ent;
+ unsigned long hash = entry->root.hash;
+
+- do
+- {
+- if (entry->s.output_section_statement.constraint >= 0
+- && (constraint == 0
+- || (constraint == entry->s.output_section_statement.constraint
+- && constraint != SPECIAL)))
+- return &entry->s.output_section_statement;
+- last_ent = entry;
+- entry = (struct out_section_hash_entry *) entry->root.next;
+- }
+- while (entry != NULL
+- && entry->root.hash == hash
+- && strcmp (name, entry->s.output_section_statement.name) == 0);
++ if (create && constraint == SPECIAL)
++ /* Not traversing to the end reverses the order of the second
++ and subsequent SPECIAL sections in the hash table chain,
++ but that shouldn't matter. */
++ last_ent = entry;
++ else
++ do
++ {
++ if (entry->s.output_section_statement.constraint >= 0
++ && (constraint == 0
++ || (constraint
++ == entry->s.output_section_statement.constraint)))
++ return &entry->s.output_section_statement;
++ last_ent = entry;
++ entry = (struct out_section_hash_entry *) entry->root.next;
++ }
++ while (entry != NULL
++ && entry->root.hash == hash
++ && strcmp (name, entry->s.output_section_statement.name) == 0);
+
+ if (!create)
+ return NULL;
+@@ -1556,28 +1581,24 @@
+ lang_output_section_statement_type *
+ lang_insert_orphan (asection *s,
+ const char *secname,
++ int constraint,
+ lang_output_section_statement_type *after,
+ struct orphan_save *place,
+ etree_type *address,
+ lang_statement_list_type *add_child)
+ {
+- lang_statement_list_type *old;
+ lang_statement_list_type add;
+ const char *ps;
+ lang_output_section_statement_type *os;
+ lang_output_section_statement_type **os_tail;
+
+- /* Start building a list of statements for this section.
+- First save the current statement pointer. */
+- old = stat_ptr;
+-
+ /* If we have found an appropriate place for the output section
+ statements for this orphan, add them to our own private list,
+ inserting them later into the global statement list. */
+ if (after != NULL)
+ {
+- stat_ptr = &add;
+- lang_list_init (stat_ptr);
++ lang_list_init (&add);
++ push_stat_ptr (&add);
+ }
+
+ ps = NULL;
+@@ -1611,7 +1632,7 @@
+ os_tail = ((lang_output_section_statement_type **)
+ lang_output_section_statement.tail);
+ os = lang_enter_output_section_statement (secname, address, 0, NULL, NULL,
+- NULL, 0);
++ NULL, constraint);
+
+ if (add_child == NULL)
+ add_child = &os->children;
+@@ -1623,11 +1644,6 @@
+ {
+ char *symname;
+
+- /* lang_leave_ouput_section_statement resets stat_ptr.
+- Put stat_ptr back where we want it. */
+- if (after != NULL)
+- stat_ptr = &add;
+-
+ symname = (char *) xmalloc (ps - secname + sizeof "__stop_" + 1);
+ symname[0] = bfd_get_symbol_leading_char (link_info.output_bfd);
+ sprintf (symname + (symname[0] != 0), "__stop_%s", secname);
+@@ -1638,7 +1654,7 @@
+
+ /* Restore the global list pointer. */
+ if (after != NULL)
+- stat_ptr = old;
++ pop_stat_ptr ();
+
+ if (after != NULL && os->bfd_section != NULL)
+ {
+@@ -1724,8 +1740,8 @@
+
+ /* Fix the global list pointer if we happened to tack our
+ new list at the tail. */
+- if (*old->tail == add.head)
+- old->tail = add.tail;
++ if (*stat_ptr->tail == add.head)
++ stat_ptr->tail = add.tail;
+
+ /* Save the end of this list. */
+ place->stmt = add.tail;
+@@ -1914,10 +1930,11 @@
+ if (strcmp (s->name, DISCARD_SECTION_NAME) == 0)
+ einfo (_("%P%F: Illegal use of `%s' section\n"), DISCARD_SECTION_NAME);
+
+- s->bfd_section = bfd_get_section_by_name (link_info.output_bfd, s->name);
++ if (s->constraint != SPECIAL)
++ s->bfd_section = bfd_get_section_by_name (link_info.output_bfd, s->name);
+ if (s->bfd_section == NULL)
+- s->bfd_section = bfd_make_section_with_flags (link_info.output_bfd,
+- s->name, flags);
++ s->bfd_section = bfd_make_section_anyway_with_flags (link_info.output_bfd,
++ s->name, flags);
+ if (s->bfd_section == NULL)
+ {
+ einfo (_("%P%F: output format %s cannot represent section called %s\n"),
+@@ -2455,8 +2472,6 @@
+ && ! bfd_check_format_matches (entry->the_bfd, bfd_object, &matching))
+ {
+ bfd_error_type err;
+- lang_statement_list_type *hold;
+- bfd_boolean bad_load = TRUE;
+ bfd_boolean save_ldlang_sysrooted_script;
+ bfd_boolean save_as_needed, save_add_needed;
+
+@@ -2479,8 +2494,6 @@
+ else if (err != bfd_error_file_not_recognized
+ || place == NULL)
+ einfo (_("%F%B: file not recognized: %E\n"), entry->the_bfd);
+- else
+- bad_load = FALSE;
+
+ bfd_close (entry->the_bfd);
+ entry->the_bfd = NULL;
+@@ -2488,8 +2501,7 @@
+ /* Try to interpret the file as a linker script. */
+ ldfile_open_command_file (entry->filename);
+
+- hold = stat_ptr;
+- stat_ptr = place;
++ push_stat_ptr (place);
+ save_ldlang_sysrooted_script = ldlang_sysrooted_script;
+ ldlang_sysrooted_script = entry->sysrooted;
+ save_as_needed = as_needed;
+@@ -2508,9 +2520,9 @@
+ ldlang_sysrooted_script = save_ldlang_sysrooted_script;
+ as_needed = save_as_needed;
+ add_needed = save_add_needed;
+- stat_ptr = hold;
++ pop_stat_ptr ();
+
+- return ! bad_load;
++ return TRUE;
+ }
+
+ if (ldemul_recognized_file (entry))
+@@ -2982,6 +2994,7 @@
+ case lang_input_statement_enum:
+ if (s->input_statement.real)
+ {
++ lang_statement_union_type **os_tail;
+ lang_statement_list_type add;
+
+ s->input_statement.target = current_target;
+@@ -2997,6 +3010,7 @@
+ bfd_archive))
+ s->input_statement.loaded = FALSE;
+
++ os_tail = lang_output_section_statement.tail;
+ lang_list_init (&add);
+
+ if (! load_symbols (&s->input_statement, &add))
+@@ -3004,8 +3018,25 @@
+
+ if (add.head != NULL)
+ {
+- *add.tail = s->header.next;
+- s->header.next = add.head;
++ /* If this was a script with output sections then
++ tack any added statements on to the end of the
++ list. This avoids having to reorder the output
++ section statement list. Very likely the user
++ forgot -T, and whatever we do here will not meet
++ naive user expectations. */
++ if (os_tail != lang_output_section_statement.tail)
++ {
++ einfo (_("%P: warning: %s contains output sections;"
++ " did you forget -T?\n"),
++ s->input_statement.filename);
++ *stat_ptr->tail = add.head;
++ stat_ptr->tail = add.tail;
++ }
++ else
++ {
++ *add.tail = s->header.next;
++ s->header.next = add.head;
++ }
+ }
+ }
+ break;
+@@ -5652,14 +5683,22 @@
+ default_common_section);
+ }
+ }
+- else if (ldemul_place_orphan (s))
+- ;
+ else
+ {
+- lang_output_section_statement_type *os;
++ const char *name = s->name;
++ int constraint = 0;
+
+- os = lang_output_section_statement_lookup (s->name, 0, TRUE);
+- lang_add_section (&os->children, s, os);
++ if (config.unique_orphan_sections || unique_section_p (s))
++ constraint = SPECIAL;
++
++ if (!ldemul_place_orphan (s, name, constraint))
++ {
++ lang_output_section_statement_type *os;
++ os = lang_output_section_statement_lookup (name,
++ constraint,
++ TRUE);
++ lang_add_section (&os->children, s, os);
++ }
+ }
+ }
+ }
+@@ -5821,7 +5860,7 @@
+ os->block_value = 1;
+
+ /* Make next things chain into subchain of this. */
+- stat_ptr = &os->children;
++ push_stat_ptr (&os->children);
+
+ os->subsection_alignment =
+ topower (exp_get_value_int (subalign, -1, "subsection alignment"));
+@@ -6430,7 +6469,7 @@
+ current_section->addr_tree != NULL);
+ current_section->fill = fill;
+ current_section->phdrs = phdrs;
+- stat_ptr = &statement_list;
++ pop_stat_ptr ();
+ }
+
+ /* Create an absolute symbol with the given name with the value of the
+@@ -6547,7 +6586,7 @@
+
+ g = new_stat (lang_group_statement, stat_ptr);
+ lang_list_init (&g->children);
+- stat_ptr = &g->children;
++ push_stat_ptr (&g->children);
+ }
+
+ /* Leave a group. This just resets stat_ptr to start writing to the
+@@ -6558,7 +6597,7 @@
+ void
+ lang_leave_group (void)
+ {
+- stat_ptr = &statement_list;
++ pop_stat_ptr ();
+ }
+
+ /* Add a new program header. This is called for each entry in a PHDRS
+diff -Naur binutils-2.19.1.orig/ld/ldlang.h binutils-2.19.1/ld/ldlang.h
+--- binutils-2.19.1.orig/ld/ldlang.h 2008-09-06 21:02:30.000000000 -0700
++++ binutils-2.19.1/ld/ldlang.h 2009-03-02 05:56:19.000000000 -0800
+@@ -1,6 +1,6 @@
+ /* ldlang.h - linker command language support
+ Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
++ 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+ Free Software Foundation, Inc.
+
+ This file is part of the GNU Binutils.
+@@ -536,7 +536,7 @@
+ (const asection *, lang_output_section_statement_type **,
+ lang_match_sec_type_func);
+ extern lang_output_section_statement_type *lang_insert_orphan
+- (asection *, const char *, lang_output_section_statement_type *,
++ (asection *, const char *, int, lang_output_section_statement_type *,
+ struct orphan_save *, etree_type *, lang_statement_list_type *);
+ extern lang_input_statement_type *lang_add_input_file
+ (const char *, lang_input_file_enum_type, const char *);
+@@ -550,6 +550,10 @@
+ (const char *, const char *, const char *, int);
+ extern void lang_list_init
+ (lang_statement_list_type *);
++extern void push_stat_ptr
++ (lang_statement_list_type *);
++extern void pop_stat_ptr
++ (void);
+ extern void lang_add_data
+ (int type, union etree_union *);
+ extern void lang_add_reloc
+@@ -604,8 +608,6 @@
+ extern void lang_append_dynamic_list (struct bfd_elf_version_expr *);
+ extern void lang_append_dynamic_list_cpp_typeinfo (void);
+ extern void lang_append_dynamic_list_cpp_new (void);
+-bfd_boolean unique_section_p
+- (const asection *);
+ extern void lang_add_unique
+ (const char *);
+ extern const char *lang_get_output_target
+diff -Naur binutils-2.19.1.orig/ld/testsuite/ChangeLog binutils-2.19.1/ld/testsuite/ChangeLog
+--- binutils-2.19.1.orig/ld/testsuite/ChangeLog 2009-01-14 01:04:14.000000000 -0800
++++ binutils-2.19.1/ld/testsuite/ChangeLog 2009-03-02 05:53:31.000000000 -0800
+@@ -1,3 +1,26 @@
++2009-03-02 Alan Modra <amodra@bigpond.net.au>
++
++ 2009-02-01 Jan Kratochvil <jan.kratochvil@redhat.com>
++ * ld-elf/eh-group2.s: New `.cfi_lsda' referencing `.gcc_except_table'.
++ * ld-elf/eh-group.exp: New test and conditional defininiton of `ELF64'.
++
++ 2009-01-26 Nathan Sidwell <nathan@codesourcery.com>
++ * ld-powerpc/powerpc.exp: Add vxworks relax testcase.
++ * ld-powerpc/vxworks-relax.s, ld-powerpc/vxworks-relax.rd: New.
++ * ld-powerpc/vxworks1.ld: Add .pad and .far input sections.
++ * ld-powerpc/vxworks1.rd: Correct regexp for undefined symbols.
++
++ 2009-01-11 Jan Kratochvil <jan.kratochvil@redhat.com>
++ * ld-elf/linkoncerdiff.d, ld-elf/linkoncerdiff1.s,
++ ld-elf/linkoncerdiff2.s: New.
++
++ 2008-10-10 Nathan Froyd <froydnj@codesourcery.com>
++ * ld-powerpc/attr-gnu-12-1.s: New file.
++ * ld-powerpc/attr-gnu-12-2.s: New file.
++ * ld-powerpc/attr-gnu-12-11.d: New file.
++ * ld-powerpc/attr-gnu-12-21.d: New file.
++ * ld-powerpc/powerpc.exp: Run new dump tests.
++
+ 2009-01-14 Joseph Myers <joseph@codesourcery.com>
+
+ * ld-arm/thumb2-bl-undefweak.d, ld-arm/thumb2-bl-undefweak.s: New.
+diff -Naur binutils-2.19.1.orig/ld/testsuite/ld-elf/eh-group2.s binutils-2.19.1/ld/testsuite/ld-elf/eh-group2.s
+--- binutils-2.19.1.orig/ld/testsuite/ld-elf/eh-group2.s 2008-10-02 03:10:26.000000000 -0700
++++ binutils-2.19.1/ld/testsuite/ld-elf/eh-group2.s 2009-03-02 05:53:31.000000000 -0800
+@@ -1,4 +1,15 @@
+ .section sect, "axG", %progbits, sectgroup, comdat
+ .cfi_startproc
++# Test intention is that LSDA must be provided by the discarded FDE.
++# DW_EH_PE_udata8 = 4
++# DW_EH_PE_udata4 = 3
++ .ifdef ELF64
++ .cfi_lsda 4, lsda
++ .else
++ .cfi_lsda 3, lsda
++ .endif
+ .skip 16
+ .cfi_endproc
++
++ .section .gcc_except_table, "a", %progbits
++lsda:
+diff -Naur binutils-2.19.1.orig/ld/testsuite/ld-elf/eh-group.exp binutils-2.19.1/ld/testsuite/ld-elf/eh-group.exp
+--- binutils-2.19.1.orig/ld/testsuite/ld-elf/eh-group.exp 2008-10-02 03:10:26.000000000 -0700
++++ binutils-2.19.1/ld/testsuite/ld-elf/eh-group.exp 2009-03-02 05:53:31.000000000 -0800
+@@ -35,12 +35,28 @@
+ return
+ }
+
+-set build_tests_ld {
+- {"Build eh-group1.o"
+- "-r" ""
+- {eh-group1.s eh-group2.s} {} "eh-group.o"}
++# alpha-linux-gnu does not support 64-bit relocations:
++# relocation truncated to fit: REFLONG against `.gcc_except_table'
++# arm-eabi does not support 64-bit relocations:
++# bad relocation fixup type (1)
++set testname "Guess the target size from eh-group1size.o"
++if [ld_assemble $as "$srcdir/$subdir/eh-group1.s" "tmpdir/eh-group1size.o"] {
++ pass $testname
++} else {
++ fail $testname
+ }
+
++set as_options ""
++if [is_elf64 "tmpdir/eh-group1size.o"] {
++ set as_options "$as_options --defsym ELF64=1"
++}
++
++set build_tests_ld [list \
++ [list "Build eh-group1.o" \
++ "-r" "$as_options" \
++ {eh-group1.s eh-group2.s} {} "eh-group.o"] \
++]
++
+ run_ld_link_tests $build_tests_ld
+
+ set testname "Link eh-group.o to eh-group"
+diff -Naur binutils-2.19.1.orig/ld/testsuite/ld-elf/linkoncerdiff1.s binutils-2.19.1/ld/testsuite/ld-elf/linkoncerdiff1.s
+--- binutils-2.19.1.orig/ld/testsuite/ld-elf/linkoncerdiff1.s 1969-12-31 16:00:00.000000000 -0800
++++ binutils-2.19.1/ld/testsuite/ld-elf/linkoncerdiff1.s 2009-03-02 05:48:42.000000000 -0800
+@@ -0,0 +1,7 @@
++ .section .gnu.linkonce.t.foo, "a", %progbits
++ .globl symfoo
++symfoo:
++
++ .section .gnu.linkonce.t.bar, "a", %progbits
++ .globl symbar
++symbar:
+diff -Naur binutils-2.19.1.orig/ld/testsuite/ld-elf/linkoncerdiff2.s binutils-2.19.1/ld/testsuite/ld-elf/linkoncerdiff2.s
+--- binutils-2.19.1.orig/ld/testsuite/ld-elf/linkoncerdiff2.s 1969-12-31 16:00:00.000000000 -0800
++++ binutils-2.19.1/ld/testsuite/ld-elf/linkoncerdiff2.s 2009-03-02 05:48:42.000000000 -0800
+@@ -0,0 +1,22 @@
++ .section .gnu.linkonce.t.foo, "a", %progbits
++1:
++ .globl symfoo
++symfoo:
++ .long 0
++
++ .section .gnu.linkonce.t.bar, "a", %progbits
++2:
++ .globl symbar
++symbar:
++ .long 0
++
++ .section .gnu.linkonce.r.foo, "a", %progbits
++ .long 1b
++ .long symfoo
++/* ld currently incorrectly silently discards this relocation. Just such
++ relocations are never produced by g++-3.4 so this suppressed error message
++ is not a problem:
++ #error: `.gnu.linkonce.t.bar' referenced in section `.gnu.linkonce.r.foo' of tmpdir/dump1.o: defined in discarded section `.gnu.linkonce.t.bar' of tmpdir/dump1.o
++ */
++ .long 2b
++ .long symbar
+diff -Naur binutils-2.19.1.orig/ld/testsuite/ld-elf/linkoncerdiff.d binutils-2.19.1/ld/testsuite/ld-elf/linkoncerdiff.d
+--- binutils-2.19.1.orig/ld/testsuite/ld-elf/linkoncerdiff.d 1969-12-31 16:00:00.000000000 -0800
++++ binutils-2.19.1/ld/testsuite/ld-elf/linkoncerdiff.d 2009-03-02 05:48:42.000000000 -0800
+@@ -0,0 +1,6 @@
++#source: linkoncerdiff1.s
++#source: linkoncerdiff2.s
++#ld: -r
++#readelf: -r
++There are no relocations in this file.
++#pass
+diff -Naur binutils-2.19.1.orig/ld/testsuite/ld-powerpc/attr-gnu-12-11.d binutils-2.19.1/ld/testsuite/ld-powerpc/attr-gnu-12-11.d
+--- binutils-2.19.1.orig/ld/testsuite/ld-powerpc/attr-gnu-12-11.d 1969-12-31 16:00:00.000000000 -0800
++++ binutils-2.19.1/ld/testsuite/ld-powerpc/attr-gnu-12-11.d 2009-03-02 05:37:44.000000000 -0800
+@@ -0,0 +1,10 @@
++#source: attr-gnu-12-1.s
++#source: attr-gnu-12-1.s
++#as: -a32
++#ld: -r -melf32ppc
++#readelf: -A
++#target: powerpc*-*-*
++
++Attribute Section: gnu
++File Attributes
++ Tag_GNU_Power_ABI_Struct_Return: r3/r4
+diff -Naur binutils-2.19.1.orig/ld/testsuite/ld-powerpc/attr-gnu-12-1.s binutils-2.19.1/ld/testsuite/ld-powerpc/attr-gnu-12-1.s
+--- binutils-2.19.1.orig/ld/testsuite/ld-powerpc/attr-gnu-12-1.s 1969-12-31 16:00:00.000000000 -0800
++++ binutils-2.19.1/ld/testsuite/ld-powerpc/attr-gnu-12-1.s 2009-03-02 05:37:44.000000000 -0800
+@@ -0,0 +1 @@
++.gnu_attribute 12,1
+diff -Naur binutils-2.19.1.orig/ld/testsuite/ld-powerpc/attr-gnu-12-21.d binutils-2.19.1/ld/testsuite/ld-powerpc/attr-gnu-12-21.d
+--- binutils-2.19.1.orig/ld/testsuite/ld-powerpc/attr-gnu-12-21.d 1969-12-31 16:00:00.000000000 -0800
++++ binutils-2.19.1/ld/testsuite/ld-powerpc/attr-gnu-12-21.d 2009-03-02 05:37:44.000000000 -0800
+@@ -0,0 +1,6 @@
++#source: attr-gnu-12-2.s
++#source: attr-gnu-12-1.s
++#as: -a32
++#ld: -r -melf32ppc
++#warning: Warning: .* uses r3/r4 for small structure returns, .* uses memory
++#target: powerpc*-*-*
+diff -Naur binutils-2.19.1.orig/ld/testsuite/ld-powerpc/attr-gnu-12-2.s binutils-2.19.1/ld/testsuite/ld-powerpc/attr-gnu-12-2.s
+--- binutils-2.19.1.orig/ld/testsuite/ld-powerpc/attr-gnu-12-2.s 1969-12-31 16:00:00.000000000 -0800
++++ binutils-2.19.1/ld/testsuite/ld-powerpc/attr-gnu-12-2.s 2009-03-02 05:37:44.000000000 -0800
+@@ -0,0 +1 @@
++.gnu_attribute 12,2
+diff -Naur binutils-2.19.1.orig/ld/testsuite/ld-powerpc/powerpc.exp binutils-2.19.1/ld/testsuite/ld-powerpc/powerpc.exp
+--- binutils-2.19.1.orig/ld/testsuite/ld-powerpc/powerpc.exp 2008-07-26 06:10:48.000000000 -0700
++++ binutils-2.19.1/ld/testsuite/ld-powerpc/powerpc.exp 2009-03-02 05:52:34.000000000 -0800
+@@ -49,6 +49,11 @@
+ "-mregnames" {vxworks2.s}
+ {{readelf --segments vxworks2-static.sd}}
+ "vxworks2"}
++ {"VxWorks relax test"
++ "-Tvxworks1.ld --relax -q"
++ "-mregnames" {vxworks-relax.s}
++ {{readelf --relocs vxworks-relax.rd}}
++ "vxworks-relax"}
+ }
+ run_ld_link_tests $ppcvxtests
+ run_dump_test "vxworks1-static"
+@@ -177,3 +182,6 @@
+ run_dump_test "attr-gnu-8-11"
+ run_dump_test "attr-gnu-8-23"
+ run_dump_test "attr-gnu-8-31"
++
++run_dump_test "attr-gnu-12-11"
++run_dump_test "attr-gnu-12-21"
+diff -Naur binutils-2.19.1.orig/ld/testsuite/ld-powerpc/vxworks1.ld binutils-2.19.1/ld/testsuite/ld-powerpc/vxworks1.ld
+--- binutils-2.19.1.orig/ld/testsuite/ld-powerpc/vxworks1.ld 2007-05-15 05:22:34.000000000 -0700
++++ binutils-2.19.1/ld/testsuite/ld-powerpc/vxworks1.ld 2009-03-02 05:52:34.000000000 -0800
+@@ -14,7 +14,7 @@
+ .plt : { *(.plt) }
+
+ . = ALIGN (0x400);
+- .text : { *(.text) }
++ .text : { *(.text) *(.pad) *(.far) }
+
+ . = ALIGN (0x10000);
+ .dynamic : { *(.dynamic) }
+diff -Naur binutils-2.19.1.orig/ld/testsuite/ld-powerpc/vxworks1.rd binutils-2.19.1/ld/testsuite/ld-powerpc/vxworks1.rd
+--- binutils-2.19.1.orig/ld/testsuite/ld-powerpc/vxworks1.rd 2006-03-02 07:16:27.000000000 -0800
++++ binutils-2.19.1/ld/testsuite/ld-powerpc/vxworks1.rd 2009-03-02 05:52:34.000000000 -0800
+@@ -1,8 +1,8 @@
+
+ Relocation section '\.rela\.plt' at offset .* contains 2 entries:
+ Offset Info Type Sym\.Value Sym\. Name \+ Addend
+-0009040c .*15 R_PPC_JMP_SLOT 00080820 sglobal \+ 0
+-00090410 .*15 R_PPC_JMP_SLOT 00080840 foo \+ 0
++0009040c .*15 R_PPC_JMP_SLOT 00000000 sglobal \+ 0
++00090410 .*15 R_PPC_JMP_SLOT 00000000 foo \+ 0
+
+ Relocation section '\.rela\.text' at offset .* contains 3 entries:
+ Offset Info Type Sym\.Value Sym\. Name \+ Addend
+diff -Naur binutils-2.19.1.orig/ld/testsuite/ld-powerpc/vxworks-relax.rd binutils-2.19.1/ld/testsuite/ld-powerpc/vxworks-relax.rd
+--- binutils-2.19.1.orig/ld/testsuite/ld-powerpc/vxworks-relax.rd 1969-12-31 16:00:00.000000000 -0800
++++ binutils-2.19.1/ld/testsuite/ld-powerpc/vxworks-relax.rd 2009-03-02 05:52:34.000000000 -0800
+@@ -0,0 +1,9 @@
++
++Relocation section '.rela.text' at offset 0x4010150 contains 6 entries:
++ Offset Info Type Sym.Value Sym. Name \+ Addend
++00080012 00000106 R_PPC_ADDR16_HA 00080000 .text \+ 4000020
++00080016 00000104 R_PPC_ADDR16_LO 00080000 .text \+ 4000020
++00080006 00000106 R_PPC_ADDR16_HA 00080000 .text \+ 4000020
++0008000a 00000104 R_PPC_ADDR16_LO 00080000 .text \+ 4000020
++0408002a 00000306 R_PPC_ADDR16_HA 00080000 _start \+ 0
++0408002e 00000304 R_PPC_ADDR16_LO 00080000 _start \+ 0
+diff -Naur binutils-2.19.1.orig/ld/testsuite/ld-powerpc/vxworks-relax.s binutils-2.19.1/ld/testsuite/ld-powerpc/vxworks-relax.s
+--- binutils-2.19.1.orig/ld/testsuite/ld-powerpc/vxworks-relax.s 1969-12-31 16:00:00.000000000 -0800
++++ binutils-2.19.1/ld/testsuite/ld-powerpc/vxworks-relax.s 2009-03-02 05:52:34.000000000 -0800
+@@ -0,0 +1,13 @@
++ .globl _start
++_start:
++ bl elsewhere
++ lis 9,elsewhere@ha
++ la 0,elsewhere@l(9)
++
++
++ .section .far,"ax",@progbits
++elsewhere:
++ bl _start
++
++ .section .pad
++ .space 0x4000000
+diff -Naur binutils-2.19.1.orig/opcodes/ChangeLog binutils-2.19.1/opcodes/ChangeLog
+--- binutils-2.19.1.orig/opcodes/ChangeLog 2008-12-23 05:54:52.000000000 -0800
++++ binutils-2.19.1/opcodes/ChangeLog 2009-03-03 17:08:22.000000000 -0800
+@@ -1,3 +1,93 @@
++2009-03-03 Peter Bergner <bergner@vnet.ibm.com>
++
++ * ppc-opc.c (powerpc_opcodes): Reorder the opcode table so that
++ instructions from newer processors are listed before older ones.
++
++2009-03-02 Alan Modra <amodra@bigpond.net.au>
++
++ 2009-02-26 Peter Bergner <bergner@vnet.ibm.com>
++ * ppc-dis.c (powerpc_init_dialect): Extend -Mpower7 to disassemble
++ the power7 and the isel instructions.
++ * ppc-opc.c (insert_xc6, extract_xc6): New static functions.
++ (insert_dm, extract_dm): Likewise.
++ (XB6): Update comment to include XX2 form.
++ (WC, XC6, SHW, DMEX, UIM, XX2, XX3RC, XX4, XX2_MASK, XX2UIM_MASK,
++ XX2BF_MASK, XX3BF_MASK, XX3SHW_MASK, XX4_MASK, XWC_MASK, POWER7): New.
++ (RemoveXX3DM): Delete.
++ (powerpc_opcodes): <"lfdp", "lfdpx", "mcrxr", "mftb", "mffgpr",
++ "mftgpr">: Deprecate for POWER7.
++ <"fres", "fres.", "frsqrtes", "frsqrtes.", "fre", "fre.", "frsqrte",
++ "frsqrte.">: Deprecate the three operand form and enable the two
++ operand form for POWER7 and later.
++ <"wait">: Extend to accept optional parameter. Enable for POWER7.
++ <"waitsrv", "waitimpl">: Add extended opcodes.
++ <"ldbrx", "stdbrx">: Enable for POWER7.
++ <"cdtbcd", "cbcdtd", "addg6s">: Add POWER6 opcodes.
++ <"bpermd", "dcbtstt", "dcbtt", "dcffix.", "dcffix", "divde.", "divde",
++ "divdeo.", "divdeo", "divdeu.", "divdeu", "divdeuo.", "divdeuo",
++ "divwe.", "divwe", "divweo.", "divweo", "divweu.", "divweu", "divweuo.",
++ "divweuo", "fcfids.", "fcfids", "fcfidu.", "fcfidu", "fcfidus.",
++ "fcfidus", "fctidu.", "fctidu", "fctiduz.", "fctiduz", "fctiwu.",
++ "fctiwu", "fctiwuz.", "fctiwuz", "ftdiv", "ftsqrt", "lbarx", "lfiwzx",
++ "lharx", "popcntd", "popcntw", "stbcx.", "sthcx.">: Add POWER7 opcodes.
++ <"lxsdux", "lxsdx", "lxvdsx", "lxvw4ux", "lxvw4x", "stxsdux", "stxsdx",
++ "stxvw4ux", "stxvw4x", "xsabsdp", "xsadddp", "xscmpodp", "xscmpudp",
++ "xscpsgndp", "xscvdpsp", "xscvdpsxds", "xscvdpsxws", "xscvdpuxds",
++ "xscvdpuxws", "xscvspdp", "xscvsxddp", "xscvuxddp", "xsdivdp",
++ "xsmaddadp", "xsmaddmdp", "xsmaxdp", "xsmindp", "xsmsubadp",
++ "xsmsubmdp", "xsmuldp", "xsnabsdp", "xsnegdp", "xsnmaddadp",
++ "xsnmaddmdp", "xsnmsubadp", "xsnmsubmdp", "xsrdpi", "xsrdpic",
++ "xsrdpim", "xsrdpip", "xsrdpiz", "xsredp", "xsrsqrtedp", "xssqrtdp",
++ "xssubdp", "xstdivdp", "xstsqrtdp", "xvabsdp", "xvabssp", "xvadddp",
++ "xvaddsp", "xvcmpeqdp.", "xvcmpeqdp", "xvcmpeqsp.", "xvcmpeqsp",
++ "xvcmpgedp.", "xvcmpgedp", "xvcmpgesp.", "xvcmpgesp", "xvcmpgtdp.",
++ "xvcmpgtdp", "xvcmpgtsp.", "xvcmpgtsp", "xvcpsgnsp", "xvcvdpsp",
++ "xvcvdpsxds", "xvcvdpsxws", "xvcvdpuxds", "xvcvdpuxws", "xvcvspdp",
++ "xvcvspsxds", "xvcvspsxws", "xvcvspuxds", "xvcvspuxws", "xvcvsxddp",
++ "xvcvsxdsp", "xvcvsxwdp", "xvcvsxwsp", "xvcvuxddp", "xvcvuxdsp",
++ "xvcvuxwdp", "xvcvuxwsp", "xvdivdp", "xvdivsp", "xvmaddadp",
++ "xvmaddasp", "xvmaddmdp", "xvmaddmsp", "xvmaxdp", "xvmaxsp",
++ "xvmindp", "xvminsp", "xvmovsp", "xvmsubadp", "xvmsubasp", "xvmsubmdp",
++ "xvmsubmsp", "xvmuldp", "xvmulsp", "xvnabsdp", "xvnabssp", "xvnegdp",
++ "xvnegsp", "xvnmaddadp", "xvnmaddasp", "xvnmaddmdp", "xvnmaddmsp",
++ "xvnmsubadp", "xvnmsubasp", "xvnmsubmdp", "xvnmsubmsp", "xvrdpi",
++ "xvrdpic", "xvrdpim", "xvrdpip", "xvrdpiz", "xvredp", "xvresp",
++ "xvrspi", "xvrspic", "xvrspim", "xvrspip", "xvrspiz", "xvrsqrtedp",
++ "xvrsqrtesp", "xvsqrtdp", "xvsqrtsp", "xvsubdp", "xvsubsp", "xvtdivdp",
++ "xvtdivsp", "xvtsqrtdp", "xvtsqrtsp", "xxland", "xxlandc", "xxlnor",
++ "xxlor", "xxlxor", "xxmrghw", "xxmrglw", "xxsel", "xxsldwi", "xxspltd",
++ "xxspltw", "xxswapd">: Add VSX opcodes.
++
++ 2009-02-19 Peter Bergner <bergner@vnet.ibm.com>
++ * ppc-opc.c (powerpc_opcodes) <"lfdepx", "stfdepx">: Fix the first
++ operand to be a float point register (FRT/FRS).
++
++ 2009-02-05 Peter Bergner <bergner@vnet.ibm.com>
++ * ppc-opc.c: Update copyright year.
++ (powerpc_opcodes) <"dcbt", "dcbtst">: Deprecate the Embedded operand
++ ordering for POWER4 and later and use the correct Server ordering.
++
++ 2009-01-14 Peter Bergner <bergner@vnet.ibm.com>
++ * ppc-dis.c (print_insn_powerpc): Skip insn if it is deprecated.
++ * ppc-opc.c (powerpc_opcodes) <mtfsf, mtfsf.>: Deprecate the two
++ operand form and enable the four operand form for POWER6 and later.
++ <mtfsfi, mtfsfi.>: Deprecate the two operand form and enable the
++ three operand form for POWER6 and later.
++
++ 2009-01-09 Peter Bergner <bergner@vnet.ibm.com>
++ * ppc-opc.c (PPCNONE): Define.
++ (NOPOWER4): Delete.
++ (powerpc_opcodes): Initialize the new "deprecated" field.
++
++ 2008-12-04 Ben Elliston <bje@au.ibm.com>
++ * ppc-dis.c (powerpc_init_dialect): Do not set PPC_OPCODE_BOOKE
++ for -Mbooke.
++ (print_ppc_disassembler_options): Update usage.
++ * ppc-opc.c (DE, DES, DEO, DE_MASK): Remove.
++ (BOOKE64): Remove.
++ (PPCCHLK64): Likewise.
++ (powerpc_opcodes): Remove all BOOKE64 instructions.
++
+ 2008-11-27 Alan Modra <amodra@bigpond.net.au>
+
+ * ppc-opc.c (extract_sprg): Correct operand range check.
+diff -Naur binutils-2.19.1.orig/opcodes/ppc-dis.c binutils-2.19.1/opcodes/ppc-dis.c
+--- binutils-2.19.1.orig/opcodes/ppc-dis.c 2008-08-01 21:38:51.000000000 -0700
++++ binutils-2.19.1/opcodes/ppc-dis.c 2009-03-02 05:59:36.000000000 -0800
+@@ -63,7 +63,7 @@
+ dialect |= PPC_OPCODE_PPCPS;
+ else if (info->disassembler_options
+ && strstr (info->disassembler_options, "booke") != NULL)
+- dialect |= PPC_OPCODE_BOOKE | PPC_OPCODE_BOOKE64;
++ dialect |= PPC_OPCODE_BOOKE;
+ else if ((info->mach == bfd_mach_ppc_e500mc)
+ || (info->disassembler_options
+ && strstr (info->disassembler_options, "e500mc") != NULL))
+@@ -112,8 +112,9 @@
+
+ if (info->disassembler_options
+ && strstr (info->disassembler_options, "power7") != NULL)
+- dialect |= PPC_OPCODE_POWER4 | PPC_OPCODE_POWER5 | PPC_OPCODE_POWER6
+- | PPC_OPCODE_ALTIVEC | PPC_OPCODE_VSX;
++ dialect |= PPC_OPCODE_POWER4 | PPC_OPCODE_POWER5
++ | PPC_OPCODE_POWER6 | PPC_OPCODE_POWER7
++ | PPC_OPCODE_ISEL | PPC_OPCODE_ALTIVEC | PPC_OPCODE_VSX;
+
+ if (info->disassembler_options
+ && strstr (info->disassembler_options, "vsx") != NULL)
+@@ -266,7 +267,8 @@
+ continue;
+
+ if ((insn & opcode->mask) != opcode->opcode
+- || (opcode->flags & dialect) == 0)
++ || (opcode->flags & dialect) == 0
++ || (opcode->deprecated & dialect) != 0)
+ continue;
+
+ /* Make two passes over the operands. First see if any of them
+@@ -402,7 +404,7 @@
+ The following PPC specific disassembler options are supported for use with\n\
+ the -M switch:\n");
+
+- fprintf (stream, " booke|booke32|booke64 Disassemble the BookE instructions\n");
++ fprintf (stream, " booke Disassemble the BookE instructions\n");
+ fprintf (stream, " e300 Disassemble the e300 instructions\n");
+ fprintf (stream, " e500|e500x2 Disassemble the e500 instructions\n");
+ fprintf (stream, " e500mc Disassemble the e500mc instructions\n");
+diff -Naur binutils-2.19.1.orig/opcodes/ppc-opc.c binutils-2.19.1/opcodes/ppc-opc.c
+--- binutils-2.19.1.orig/opcodes/ppc-opc.c 2008-12-23 05:54:52.000000000 -0800
++++ binutils-2.19.1/opcodes/ppc-opc.c 2009-03-03 17:08:22.000000000 -0800
+@@ -1,6 +1,6 @@
+ /* ppc-opc.c -- PowerPC opcode list
+ Copyright 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004,
+- 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
++ 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+ Written by Ian Lance Taylor, Cygnus Support
+
+ This file is part of the GNU opcodes library.
+@@ -81,6 +81,10 @@
+ static long extract_xb6 (unsigned long, ppc_cpu_t, int *);
+ static unsigned long insert_xb6s (unsigned long, long, ppc_cpu_t, const char **);
+ static long extract_xb6s (unsigned long, ppc_cpu_t, int *);
++static unsigned long insert_xc6 (unsigned long, long, ppc_cpu_t, const char **);
++static long extract_xc6 (unsigned long, ppc_cpu_t, int *);
++static unsigned long insert_dm (unsigned long, long, ppc_cpu_t, const char **);
++static long extract_dm (unsigned long, ppc_cpu_t, int *);
+ \f
+ /* The operands table.
+
+@@ -223,19 +227,9 @@
+ #define D CT + 1
+ { 0xffff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
+
+- /* The DE field in a DE form instruction. This is like D, but is 12
+- bits only. */
+-#define DE D + 1
+- { 0xfff, 4, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
+-
+- /* The DES field in a DES form instruction. This is like DS, but is 14
+- bits only (12 stored.) */
+-#define DES DE + 1
+- { 0x3ffc, 2, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
+-
+ /* The DQ field in a DQ form instruction. This is like D, but the
+ lower four bits are forced to zero. */
+-#define DQ DES + 1
++#define DQ D + 1
+ { 0xfff0, 0, NULL, NULL,
+ PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DQ },
+
+@@ -320,8 +314,9 @@
+ #define LIA LI + 1
+ { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
+
+- /* The LS field in an X (sync) form instruction. */
++ /* The LS or WC field in an X (sync or wait) form instruction. */
+ #define LS LIA + 1
++#define WC LS
+ { 0x3, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
+
+ /* The ME field in an M form instruction. */
+@@ -617,7 +612,7 @@
+ #define XA6 XT6 + 1
+ { 0x3f, -1, insert_xa6, extract_xa6, PPC_OPERAND_VSR },
+
+- /* The XB field in an XX3 form instruction. This is split. */
++ /* The XB field in an XX2 or XX3 form instruction. This is split. */
+ #define XB6 XA6 + 1
+ { 0x3f, -1, insert_xb6, extract_xb6, PPC_OPERAND_VSR },
+
+@@ -627,9 +622,22 @@
+ #define XB6S XB6 + 1
+ { 0x3f, -1, insert_xb6s, extract_xb6s, PPC_OPERAND_FAKE },
+
+- /* The DM field in an XX3 form instruction. */
+-#define DM XB6S + 1
++ /* The XC field in an XX4 form instruction. This is split. */
++#define XC6 XB6S + 1
++ { 0x3f, -1, insert_xc6, extract_xc6, PPC_OPERAND_VSR },
++
++ /* The DM or SHW field in an XX3 form instruction. */
++#define DM XC6 + 1
++#define SHW DM
+ { 0x3, 8, NULL, NULL, 0 },
++
++ /* The DM field in an extended mnemonic XX3 form instruction. */
++#define DMEX DM + 1
++ { 0x3, 8, insert_dm, extract_dm, 0 },
++
++ /* The UIM field in an XX2 form instruction. */
++#define UIM DMEX + 1
++ { 0x3, 16, NULL, NULL, 0 },
+ };
+
+ const unsigned int num_powerpc_operands = (sizeof (powerpc_operands)
+@@ -1405,6 +1413,49 @@
+ *invalid = 1;
+ return 0;
+ }
++
++/* The XC field in an XX4 form instruction. This is split. */
++
++static unsigned long
++insert_xc6 (unsigned long insn,
++ long value,
++ ppc_cpu_t dialect ATTRIBUTE_UNUSED,
++ const char **errmsg ATTRIBUTE_UNUSED)
++{
++ return insn | ((value & 0x1f) << 6) | ((value & 0x20) >> 2);
++}
++
++static long
++extract_xc6 (unsigned long insn,
++ ppc_cpu_t dialect ATTRIBUTE_UNUSED,
++ int *invalid ATTRIBUTE_UNUSED)
++{
++ return ((insn << 2) & 0x20) | ((insn >> 6) & 0x1f);
++}
++
++static unsigned long
++insert_dm (unsigned long insn,
++ long value,
++ ppc_cpu_t dialect ATTRIBUTE_UNUSED,
++ const char **errmsg)
++{
++ if (value != 0 && value != 1)
++ *errmsg = _("invalid constant");
++ return insn | (((value) ? 3 : 0) << 8);
++}
++
++static long
++extract_dm (unsigned long insn,
++ ppc_cpu_t dialect ATTRIBUTE_UNUSED,
++ int *invalid)
++{
++ long value;
++
++ value = (insn >> 8) & 3;
++ if (value != 0 && value != 3)
++ *invalid = 1;
++ return (value) ? 1 : 0;
++}
+ \f
+ /* Macros used to form opcodes. */
+
+@@ -1487,10 +1538,6 @@
+ #define DSO(op, xop) (OP (op) | ((xop) & 0x3))
+ #define DS_MASK DSO (0x3f, 3)
+
+-/* A DE form instruction. */
+-#define DEO(op, xop) (OP (op) | ((xop) & 0xf))
+-#define DE_MASK DEO (0x3e, 0xf)
+-
+ /* An EVSEL form instruction. */
+ #define EVSEL(op, xop) (OP (op) | (((unsigned long)(xop)) & 0xff) << 3)
+ #define EVSEL_MASK EVSEL(0x3f, 0xff)
+@@ -1550,11 +1597,17 @@
+ /* An X form instruction. */
+ #define X(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1))
+
++/* An XX2 form instruction. */
++#define XX2(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 2))
++
+ /* An XX3 form instruction. */
+ #define XX3(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0xff) << 3))
+
+-#define XX3DM(op, xop, dm) (XX3 (op, ((unsigned long)(xop) & 0x1f)) \
+- | ((((unsigned long)(dm)) & 0x3) << 8))
++/* An XX3 form instruction with the RC bit specified. */
++#define XX3RC(op, xop, rc) (OP (op) | (((rc) & 1) << 10) | ((((unsigned long)(xop)) & 0x7f) << 3))
++
++/* An XX4 form instruction. */
++#define XX4(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3) << 4))
+
+ /* A Z form instruction. */
+ #define Z(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 1))
+@@ -1571,11 +1624,30 @@
+ /* The mask for an XX1 form instruction. */
+ #define XX1_MASK X (0x3f, 0x3ff)
+
++/* The mask for an XX2 form instruction. */
++#define XX2_MASK (XX2 (0x3f, 0x1ff) | (0x1f << 16))
++
++/* The mask for an XX2 form instruction with the UIM bits specified. */
++#define XX2UIM_MASK (XX2 (0x3f, 0x1ff) | (7 << 18))
++
++/* The mask for an XX2 form instruction with the BF bits specified. */
++#define XX2BF_MASK (XX2_MASK | (3 << 21) | (1))
++
+ /* The mask for an XX3 form instruction. */
+ #define XX3_MASK XX3 (0x3f, 0xff)
+
+-/* The mask for an XX3 form instruction with the DM bits specified. */
++/* The mask for an XX3 form instruction with the BF bits specified. */
++#define XX3BF_MASK (XX3 (0x3f, 0xff) | (3 << 21) | (1))
++
++/* The mask for an XX3 form instruction with the DM or SHW bits specified. */
+ #define XX3DM_MASK (XX3 (0x3f, 0x1f) | (1 << 10))
++#define XX3SHW_MASK XX3DM_MASK
++
++/* The mask for an XX4 form instruction. */
++#define XX4_MASK XX4 (0x3f, 0x3)
++
++/* An X form wait instruction with everything filled in except the WC field. */
++#define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK)
+
+ /* The mask for a Z form instruction. */
+ #define Z_MASK ZRC (0x3f, 0x1ff, 1)
+@@ -1810,13 +1882,14 @@
+ \f
+ /* Smaller names for the flags so each entry in the opcodes table will
+ fit on a single line. */
++#define PPCNONE 0
+ #undef PPC
+ #define PPC PPC_OPCODE_PPC
+ #define PPCCOM PPC_OPCODE_PPC | PPC_OPCODE_COMMON
+-#define NOPOWER4 PPC_OPCODE_NOPOWER4 | PPCCOM
+ #define POWER4 PPC_OPCODE_POWER4
+ #define POWER5 PPC_OPCODE_POWER5
+ #define POWER6 PPC_OPCODE_POWER6
++#define POWER7 PPC_OPCODE_POWER7
+ #define CELL PPC_OPCODE_CELL
+ #define PPC32 PPC_OPCODE_32 | PPC_OPCODE_PPC
+ #define PPC64 PPC_OPCODE_64 | PPC_OPCODE_PPC
+@@ -1841,7 +1914,6 @@
+ #define MFDEC1 PPC_OPCODE_POWER
+ #define MFDEC2 PPC_OPCODE_PPC | PPC_OPCODE_601 | PPC_OPCODE_BOOKE
+ #define BOOKE PPC_OPCODE_BOOKE
+-#define BOOKE64 PPC_OPCODE_BOOKE64
+ #define CLASSIC PPC_OPCODE_CLASSIC
+ #define PPCE300 PPC_OPCODE_E300
+ #define PPCSPE PPC_OPCODE_SPE
+@@ -1850,7 +1922,6 @@
+ #define PPCBRLK PPC_OPCODE_BRLOCK
+ #define PPCPMR PPC_OPCODE_PMR
+ #define PPCCHLK PPC_OPCODE_CACHELCK
+-#define PPCCHLK64 PPC_OPCODE_CACHELCK | PPC_OPCODE_BOOKE64
+ #define PPCRFMCI PPC_OPCODE_RFMCI
+ #define E500MC PPC_OPCODE_E500MC
+ \f
+@@ -1876,3253 +1947,3347 @@
+ constrained otherwise by disassembler operation. */
+
+ const struct powerpc_opcode powerpc_opcodes[] = {
+-{"attn", X(0,256), X_MASK, POWER4, {0}},
+-{"tdlgti", OPTO(2,TOLGT), OPTO_MASK, PPC64, {RA, SI}},
+-{"tdllti", OPTO(2,TOLLT), OPTO_MASK, PPC64, {RA, SI}},
+-{"tdeqi", OPTO(2,TOEQ), OPTO_MASK, PPC64, {RA, SI}},
+-{"tdlgei", OPTO(2,TOLGE), OPTO_MASK, PPC64, {RA, SI}},
+-{"tdlnli", OPTO(2,TOLNL), OPTO_MASK, PPC64, {RA, SI}},
+-{"tdllei", OPTO(2,TOLLE), OPTO_MASK, PPC64, {RA, SI}},
+-{"tdlngi", OPTO(2,TOLNG), OPTO_MASK, PPC64, {RA, SI}},
+-{"tdgti", OPTO(2,TOGT), OPTO_MASK, PPC64, {RA, SI}},
+-{"tdgei", OPTO(2,TOGE), OPTO_MASK, PPC64, {RA, SI}},
+-{"tdnli", OPTO(2,TONL), OPTO_MASK, PPC64, {RA, SI}},
+-{"tdlti", OPTO(2,TOLT), OPTO_MASK, PPC64, {RA, SI}},
+-{"tdlei", OPTO(2,TOLE), OPTO_MASK, PPC64, {RA, SI}},
+-{"tdngi", OPTO(2,TONG), OPTO_MASK, PPC64, {RA, SI}},
+-{"tdnei", OPTO(2,TONE), OPTO_MASK, PPC64, {RA, SI}},
+-{"tdi", OP(2), OP_MASK, PPC64, {TO, RA, SI}},
+-
+-{"twlgti", OPTO(3,TOLGT), OPTO_MASK, PPCCOM, {RA, SI}},
+-{"tlgti", OPTO(3,TOLGT), OPTO_MASK, PWRCOM, {RA, SI}},
+-{"twllti", OPTO(3,TOLLT), OPTO_MASK, PPCCOM, {RA, SI}},
+-{"tllti", OPTO(3,TOLLT), OPTO_MASK, PWRCOM, {RA, SI}},
+-{"tweqi", OPTO(3,TOEQ), OPTO_MASK, PPCCOM, {RA, SI}},
+-{"teqi", OPTO(3,TOEQ), OPTO_MASK, PWRCOM, {RA, SI}},
+-{"twlgei", OPTO(3,TOLGE), OPTO_MASK, PPCCOM, {RA, SI}},
+-{"tlgei", OPTO(3,TOLGE), OPTO_MASK, PWRCOM, {RA, SI}},
+-{"twlnli", OPTO(3,TOLNL), OPTO_MASK, PPCCOM, {RA, SI}},
+-{"tlnli", OPTO(3,TOLNL), OPTO_MASK, PWRCOM, {RA, SI}},
+-{"twllei", OPTO(3,TOLLE), OPTO_MASK, PPCCOM, {RA, SI}},
+-{"tllei", OPTO(3,TOLLE), OPTO_MASK, PWRCOM, {RA, SI}},
+-{"twlngi", OPTO(3,TOLNG), OPTO_MASK, PPCCOM, {RA, SI}},
+-{"tlngi", OPTO(3,TOLNG), OPTO_MASK, PWRCOM, {RA, SI}},
+-{"twgti", OPTO(3,TOGT), OPTO_MASK, PPCCOM, {RA, SI}},
+-{"tgti", OPTO(3,TOGT), OPTO_MASK, PWRCOM, {RA, SI}},
+-{"twgei", OPTO(3,TOGE), OPTO_MASK, PPCCOM, {RA, SI}},
+-{"tgei", OPTO(3,TOGE), OPTO_MASK, PWRCOM, {RA, SI}},
+-{"twnli", OPTO(3,TONL), OPTO_MASK, PPCCOM, {RA, SI}},
+-{"tnli", OPTO(3,TONL), OPTO_MASK, PWRCOM, {RA, SI}},
+-{"twlti", OPTO(3,TOLT), OPTO_MASK, PPCCOM, {RA, SI}},
+-{"tlti", OPTO(3,TOLT), OPTO_MASK, PWRCOM, {RA, SI}},
+-{"twlei", OPTO(3,TOLE), OPTO_MASK, PPCCOM, {RA, SI}},
+-{"tlei", OPTO(3,TOLE), OPTO_MASK, PWRCOM, {RA, SI}},
+-{"twngi", OPTO(3,TONG), OPTO_MASK, PPCCOM, {RA, SI}},
+-{"tngi", OPTO(3,TONG), OPTO_MASK, PWRCOM, {RA, SI}},
+-{"twnei", OPTO(3,TONE), OPTO_MASK, PPCCOM, {RA, SI}},
+-{"tnei", OPTO(3,TONE), OPTO_MASK, PWRCOM, {RA, SI}},
+-{"twi", OP(3), OP_MASK, PPCCOM, {TO, RA, SI}},
+-{"ti", OP(3), OP_MASK, PWRCOM, {TO, RA, SI}},
+-
+-{"ps_cmpu0", X (4, 0), X_MASK|(3<<21), PPCPS, {BF, FRA, FRB}},
+-{"vaddubm", VX (4, 0), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vmaxub", VX (4, 2), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vrlb", VX (4, 4), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vcmpequb", VXR(4, 6,0), VXR_MASK, PPCVEC, {VD, VA, VB}},
+-{"vmuloub", VX (4, 8), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vaddfp", VX (4, 10), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"psq_lx", XW (4, 6,0), XW_MASK, PPCPS, {FRT,RA,RB,PSWM,PSQM}},
+-{"vmrghb", VX (4, 12), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"psq_stx", XW (4, 7,0), XW_MASK, PPCPS, {FRS,RA,RB,PSWM,PSQM}},
+-{"vpkuhum", VX (4, 14), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"mulhhwu", XRC(4, 8,0), X_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"mulhhwu.", XRC(4, 8,1), X_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"ps_sum0", A (4, 10,0), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
+-{"ps_sum0.", A (4, 10,1), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
+-{"ps_sum1", A (4, 11,0), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
+-{"ps_sum1.", A (4, 11,1), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
+-{"ps_muls0", A (4, 12,0), AFRB_MASK, PPCPS, {FRT, FRA, FRC}},
+-{"machhwu", XO (4, 12,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"ps_muls0.", A (4, 12,1), AFRB_MASK, PPCPS, {FRT, FRA, FRC}},
+-{"machhwu.", XO (4, 12,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"ps_muls1", A (4, 13,0), AFRB_MASK, PPCPS, {FRT, FRA, FRC}},
+-{"ps_muls1.", A (4, 13,1), AFRB_MASK, PPCPS, {FRT, FRA, FRC}},
+-{"ps_madds0", A (4, 14,0), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
+-{"ps_madds0.", A (4, 14,1), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
+-{"ps_madds1", A (4, 15,0), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
+-{"ps_madds1.", A (4, 15,1), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
+-{"vmhaddshs", VXA(4, 32), VXA_MASK, PPCVEC, {VD, VA, VB, VC}},
+-{"vmhraddshs", VXA(4, 33), VXA_MASK, PPCVEC, {VD, VA, VB, VC}},
+-{"vmladduhm", VXA(4, 34), VXA_MASK, PPCVEC, {VD, VA, VB, VC}},
+-{"ps_div", A (4, 18,0), AFRC_MASK, PPCPS, {FRT, FRA, FRB}},
+-{"vmsumubm", VXA(4, 36), VXA_MASK, PPCVEC, {VD, VA, VB, VC}},
+-{"ps_div.", A (4, 18,1), AFRC_MASK, PPCPS, {FRT, FRA, FRB}},
+-{"vmsummbm", VXA(4, 37), VXA_MASK, PPCVEC, {VD, VA, VB, VC}},
+-{"vmsumuhm", VXA(4, 38), VXA_MASK, PPCVEC, {VD, VA, VB, VC}},
+-{"vmsumuhs", VXA(4, 39), VXA_MASK, PPCVEC, {VD, VA, VB, VC}},
+-{"ps_sub", A (4, 20,0), AFRC_MASK, PPCPS, {FRT, FRA, FRB}},
+-{"vmsumshm", VXA(4, 40), VXA_MASK, PPCVEC, {VD, VA, VB, VC}},
+-{"ps_sub.", A (4, 20,1), AFRC_MASK, PPCPS, {FRT, FRA, FRB}},
+-{"vmsumshs", VXA(4, 41), VXA_MASK, PPCVEC, {VD, VA, VB, VC}},
+-{"ps_add", A (4, 21,0), AFRC_MASK, PPCPS, {FRT, FRA, FRB}},
+-{"vsel", VXA(4, 42), VXA_MASK, PPCVEC, {VD, VA, VB, VC}},
+-{"ps_add.", A (4, 21,1), AFRC_MASK, PPCPS, {FRT, FRA, FRB}},
+-{"vperm", VXA(4, 43), VXA_MASK, PPCVEC, {VD, VA, VB, VC}},
+-{"vsldoi", VXA(4, 44), VXA_MASK, PPCVEC, {VD, VA, VB, SHB}},
+-{"ps_sel", A (4, 23,0), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
+-{"vmaddfp", VXA(4, 46), VXA_MASK, PPCVEC, {VD, VA, VC, VB}},
+-{"ps_sel.", A (4, 23,1), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
+-{"vnmsubfp", VXA(4, 47), VXA_MASK, PPCVEC, {VD, VA, VC, VB}},
+-{"ps_res", A (4, 24,0), AFRAFRC_MASK, PPCPS, {FRT, FRB}},
+-{"ps_res.", A (4, 24,1), AFRAFRC_MASK, PPCPS, {FRT, FRB}},
+-{"ps_mul", A (4, 25,0), AFRB_MASK, PPCPS, {FRT, FRA, FRC}},
+-{"ps_mul.", A (4, 25,1), AFRB_MASK, PPCPS, {FRT, FRA, FRC}},
+-{"ps_rsqrte", A (4, 26,0), AFRAFRC_MASK, PPCPS, {FRT, FRB}},
+-{"ps_rsqrte.", A (4, 26,1), AFRAFRC_MASK, PPCPS, {FRT, FRB}},
+-{"ps_msub", A (4, 28,0), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
+-{"ps_msub.", A (4, 28,1), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
+-{"ps_madd", A (4, 29,0), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
+-{"ps_madd.", A (4, 29,1), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
+-{"ps_nmsub", A (4, 30,0), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
+-{"ps_nmsub.", A (4, 30,1), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
+-{"ps_nmadd", A (4, 31,0), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
+-{"ps_nmadd.", A (4, 31,1), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
+-{"ps_cmpo0", X (4, 32), X_MASK|(3<<21), PPCPS, {BF, FRA, FRB}},
+-{"vadduhm", VX (4, 64), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vmaxuh", VX (4, 66), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vrlh", VX (4, 68), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vcmpequh", VXR(4, 70,0), VXR_MASK, PPCVEC, {VD, VA, VB}},
+-{"vmulouh", VX (4, 72), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vsubfp", VX (4, 74), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"psq_lux", XW (4, 38,0), XW_MASK, PPCPS, {FRT,RA,RB,PSWM,PSQM}},
+-{"vmrghh", VX (4, 76), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"psq_stux", XW (4, 39,0), XW_MASK, PPCPS, {FRS,RA,RB,PSWM,PSQM}},
+-{"vpkuwum", VX (4, 78), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"ps_neg", XRC(4, 40,0), XRA_MASK, PPCPS, {FRT, FRB}},
+-{"mulhhw", XRC(4, 40,0), X_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"ps_neg.", XRC(4, 40,1), XRA_MASK, PPCPS, {FRT, FRB}},
+-{"mulhhw.", XRC(4, 40,1), X_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"machhw", XO (4, 44,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"machhw.", XO (4, 44,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"nmachhw", XO (4, 46,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"nmachhw.", XO (4, 46,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"ps_cmpu1", X (4, 64), X_MASK|(3<<21), PPCPS, {BF, FRA, FRB}},
+-{"vadduwm", VX (4, 128), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vmaxuw", VX (4, 130), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vrlw", VX (4, 132), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vcmpequw", VXR(4, 134,0), VXR_MASK, PPCVEC, {VD, VA, VB}},
+-{"vmrghw", VX (4, 140), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vpkuhus", VX (4, 142), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"ps_mr", XRC(4, 72,0), XRA_MASK, PPCPS, {FRT, FRB}},
+-{"ps_mr.", XRC(4, 72,1), XRA_MASK, PPCPS, {FRT, FRB}},
+-{"machhwsu", XO (4, 76,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"machhwsu.", XO (4, 76,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"ps_cmpo1", X (4, 96), X_MASK|(3<<21), PPCPS, {BF, FRA, FRB}},
+-{"vcmpeqfp", VXR(4, 198,0), VXR_MASK, PPCVEC, {VD, VA, VB}},
+-{"vpkuwus", VX (4, 206), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"machhws", XO (4, 108,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"machhws.", XO (4, 108,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"nmachhws", XO (4, 110,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"nmachhws.", XO (4, 110,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"vmaxsb", VX (4, 258), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vslb", VX (4, 260), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vmulosb", VX (4, 264), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vrefp", VX (4, 266), VX_MASK, PPCVEC, {VD, VB}},
+-{"vmrglb", VX (4, 268), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vpkshus", VX (4, 270), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"ps_nabs", XRC(4, 136,0), XRA_MASK, PPCPS, {FRT, FRB}},
+-{"mulchwu", XRC(4, 136,0), X_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"ps_nabs.", XRC(4, 136,1), XRA_MASK, PPCPS, {FRT, FRB}},
+-{"mulchwu.", XRC(4, 136,1), X_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"macchwu", XO (4, 140,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"macchwu.", XO (4, 140,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"vmaxsh", VX (4, 322), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vslh", VX (4, 324), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vmulosh", VX (4, 328), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vrsqrtefp", VX (4, 330), VX_MASK, PPCVEC, {VD, VB}},
+-{"vmrglh", VX (4, 332), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vpkswus", VX (4, 334), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"mulchw", XRC(4, 168,0), X_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"mulchw.", XRC(4, 168,1), X_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"macchw", XO (4, 172,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"macchw.", XO (4, 172,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"nmacchw", XO (4, 174,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"nmacchw.", XO (4, 174,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"vaddcuw", VX (4, 384), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vmaxsw", VX (4, 386), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vslw", VX (4, 388), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vexptefp", VX (4, 394), VX_MASK, PPCVEC, {VD, VB}},
+-{"vmrglw", VX (4, 396), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vpkshss", VX (4, 398), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"macchwsu", XO (4, 204,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"macchwsu.", XO (4, 204,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"vsl", VX (4, 452), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vcmpgefp", VXR(4, 454,0), VXR_MASK, PPCVEC, {VD, VA, VB}},
+-{"vlogefp", VX (4, 458), VX_MASK, PPCVEC, {VD, VB}},
+-{"vpkswss", VX (4, 462), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"macchws", XO (4, 236,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"macchws.", XO (4, 236,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"nmacchws", XO (4, 238,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"nmacchws.", XO (4, 238,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"evaddw", VX (4, 512), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"vaddubs", VX (4, 512), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"evaddiw", VX (4, 514), VX_MASK, PPCSPE, {RS, RB, UIMM}},
+-{"vminub", VX (4, 514), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"evsubfw", VX (4, 516), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evsubw", VX (4, 516), VX_MASK, PPCSPE, {RS, RB, RA}},
+-{"vsrb", VX (4, 516), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"evsubifw", VX (4, 518), VX_MASK, PPCSPE, {RS, UIMM, RB}},
+-{"evsubiw", VX (4, 518), VX_MASK, PPCSPE, {RS, RB, UIMM}},
+-{"vcmpgtub", VXR(4, 518,0), VXR_MASK, PPCVEC, {VD, VA, VB}},
+-{"evabs", VX (4, 520), VX_MASK, PPCSPE, {RS, RA}},
+-{"vmuleub", VX (4, 520), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"evneg", VX (4, 521), VX_MASK, PPCSPE, {RS, RA}},
+-{"evextsb", VX (4, 522), VX_MASK, PPCSPE, {RS, RA}},
+-{"vrfin", VX (4, 522), VX_MASK, PPCVEC, {VD, VB}},
+-{"evextsh", VX (4, 523), VX_MASK, PPCSPE, {RS, RA}},
+-{"evrndw", VX (4, 524), VX_MASK, PPCSPE, {RS, RA}},
+-{"vspltb", VX (4, 524), VX_MASK, PPCVEC, {VD, VB, UIMM}},
+-{"evcntlzw", VX (4, 525), VX_MASK, PPCSPE, {RS, RA}},
+-{"evcntlsw", VX (4, 526), VX_MASK, PPCSPE, {RS, RA}},
+-{"vupkhsb", VX (4, 526), VX_MASK, PPCVEC, {VD, VB}},
+-{"brinc", VX (4, 527), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"ps_abs", XRC(4, 264,0), XRA_MASK, PPCPS, {FRT, FRB}},
+-{"ps_abs.", XRC(4, 264,1), XRA_MASK, PPCPS, {FRT, FRB}},
+-{"evand", VX (4, 529), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evandc", VX (4, 530), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evxor", VX (4, 534), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmr", VX (4, 535), VX_MASK, PPCSPE, {RS, RA, BBA}},
+-{"evor", VX (4, 535), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evnor", VX (4, 536), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evnot", VX (4, 536), VX_MASK, PPCSPE, {RS, RA, BBA}},
+-{"get", APU(4, 268,0), APU_RA_MASK, PPC405, {RT, FSL}},
+-{"eveqv", VX (4, 537), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evorc", VX (4, 539), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evnand", VX (4, 542), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evsrwu", VX (4, 544), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evsrws", VX (4, 545), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evsrwiu", VX (4, 546), VX_MASK, PPCSPE, {RS, RA, EVUIMM}},
+-{"evsrwis", VX (4, 547), VX_MASK, PPCSPE, {RS, RA, EVUIMM}},
+-{"evslw", VX (4, 548), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evslwi", VX (4, 550), VX_MASK, PPCSPE, {RS, RA, EVUIMM}},
+-{"evrlw", VX (4, 552), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evsplati", VX (4, 553), VX_MASK, PPCSPE, {RS, SIMM}},
+-{"evrlwi", VX (4, 554), VX_MASK, PPCSPE, {RS, RA, EVUIMM}},
+-{"evsplatfi", VX (4, 555), VX_MASK, PPCSPE, {RS, SIMM}},
+-{"evmergehi", VX (4, 556), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmergelo", VX (4, 557), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmergehilo", VX (4, 558), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmergelohi", VX (4, 559), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evcmpgtu", VX (4, 560), VX_MASK, PPCSPE, {CRFD, RA, RB}},
+-{"evcmpgts", VX (4, 561), VX_MASK, PPCSPE, {CRFD, RA, RB}},
+-{"evcmpltu", VX (4, 562), VX_MASK, PPCSPE, {CRFD, RA, RB}},
+-{"evcmplts", VX (4, 563), VX_MASK, PPCSPE, {CRFD, RA, RB}},
+-{"evcmpeq", VX (4, 564), VX_MASK, PPCSPE, {CRFD, RA, RB}},
+-{"cget", APU(4, 284,0), APU_RA_MASK, PPC405, {RT, FSL}},
+-{"vadduhs", VX (4, 576), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vminuh", VX (4, 578), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vsrh", VX (4, 580), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vcmpgtuh", VXR(4, 582,0), VXR_MASK, PPCVEC, {VD, VA, VB}},
+-{"vmuleuh", VX (4, 584), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vrfiz", VX (4, 586), VX_MASK, PPCVEC, {VD, VB}},
+-{"vsplth", VX (4, 588), VX_MASK, PPCVEC, {VD, VB, UIMM}},
+-{"vupkhsh", VX (4, 590), VX_MASK, PPCVEC, {VD, VB}},
+-{"nget", APU(4, 300,0), APU_RA_MASK, PPC405, {RT, FSL}},
+-{"evsel", EVSEL(4,79), EVSEL_MASK, PPCSPE, {RS, RA, RB, CRFS}},
+-{"ncget", APU(4, 316,0), APU_RA_MASK, PPC405, {RT, FSL}},
+-{"evfsadd", VX (4, 640), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"vadduws", VX (4, 640), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"evfssub", VX (4, 641), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"vminuw", VX (4, 642), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"evfsabs", VX (4, 644), VX_MASK, PPCSPE, {RS, RA}},
+-{"vsrw", VX (4, 644), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"evfsnabs", VX (4, 645), VX_MASK, PPCSPE, {RS, RA}},
+-{"evfsneg", VX (4, 646), VX_MASK, PPCSPE, {RS, RA}},
+-{"vcmpgtuw", VXR(4, 646,0), VXR_MASK, PPCVEC, {VD, VA, VB}},
+-{"evfsmul", VX (4, 648), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evfsdiv", VX (4, 649), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"vrfip", VX (4, 650), VX_MASK, PPCVEC, {VD, VB}},
+-{"evfscmpgt", VX (4, 652), VX_MASK, PPCSPE, {CRFD, RA, RB}},
+-{"vspltw", VX (4, 652), VX_MASK, PPCVEC, {VD, VB, UIMM}},
+-{"evfscmplt", VX (4, 653), VX_MASK, PPCSPE, {CRFD, RA, RB}},
+-{"evfscmpeq", VX (4, 654), VX_MASK, PPCSPE, {CRFD, RA, RB}},
+-{"vupklsb", VX (4, 654), VX_MASK, PPCVEC, {VD, VB}},
+-{"evfscfui", VX (4, 656), VX_MASK, PPCSPE, {RS, RB}},
+-{"evfscfsi", VX (4, 657), VX_MASK, PPCSPE, {RS, RB}},
+-{"evfscfuf", VX (4, 658), VX_MASK, PPCSPE, {RS, RB}},
+-{"evfscfsf", VX (4, 659), VX_MASK, PPCSPE, {RS, RB}},
+-{"evfsctui", VX (4, 660), VX_MASK, PPCSPE, {RS, RB}},
+-{"evfsctsi", VX (4, 661), VX_MASK, PPCSPE, {RS, RB}},
+-{"evfsctuf", VX (4, 662), VX_MASK, PPCSPE, {RS, RB}},
+-{"evfsctsf", VX (4, 663), VX_MASK, PPCSPE, {RS, RB}},
+-{"evfsctuiz", VX (4, 664), VX_MASK, PPCSPE, {RS, RB}},
+-{"put", APU(4, 332,0), APU_RT_MASK, PPC405, {RA, FSL}},
+-{"evfsctsiz", VX (4, 666), VX_MASK, PPCSPE, {RS, RB}},
+-{"evfststgt", VX (4, 668), VX_MASK, PPCSPE, {CRFD, RA, RB}},
+-{"evfststlt", VX (4, 669), VX_MASK, PPCSPE, {CRFD, RA, RB}},
+-{"evfststeq", VX (4, 670), VX_MASK, PPCSPE, {CRFD, RA, RB}},
+-{"cput", APU(4, 348,0), APU_RT_MASK, PPC405, {RA, FSL}},
+-{"efsadd", VX (4, 704), VX_MASK, PPCEFS, {RS, RA, RB}},
+-{"efssub", VX (4, 705), VX_MASK, PPCEFS, {RS, RA, RB}},
+-{"efsabs", VX (4, 708), VX_MASK, PPCEFS, {RS, RA}},
+-{"vsr", VX (4, 708), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"efsnabs", VX (4, 709), VX_MASK, PPCEFS, {RS, RA}},
+-{"efsneg", VX (4, 710), VX_MASK, PPCEFS, {RS, RA}},
+-{"vcmpgtfp", VXR(4, 710,0), VXR_MASK, PPCVEC, {VD, VA, VB}},
+-{"efsmul", VX (4, 712), VX_MASK, PPCEFS, {RS, RA, RB}},
+-{"efsdiv", VX (4, 713), VX_MASK, PPCEFS, {RS, RA, RB}},
+-{"vrfim", VX (4, 714), VX_MASK, PPCVEC, {VD, VB}},
+-{"efscmpgt", VX (4, 716), VX_MASK, PPCEFS, {CRFD, RA, RB}},
+-{"efscmplt", VX (4, 717), VX_MASK, PPCEFS, {CRFD, RA, RB}},
+-{"efscmpeq", VX (4, 718), VX_MASK, PPCEFS, {CRFD, RA, RB}},
+-{"vupklsh", VX (4, 718), VX_MASK, PPCVEC, {VD, VB}},
+-{"efscfd", VX (4, 719), VX_MASK, PPCEFS, {RS, RB}},
+-{"efscfui", VX (4, 720), VX_MASK, PPCEFS, {RS, RB}},
+-{"efscfsi", VX (4, 721), VX_MASK, PPCEFS, {RS, RB}},
+-{"efscfuf", VX (4, 722), VX_MASK, PPCEFS, {RS, RB}},
+-{"efscfsf", VX (4, 723), VX_MASK, PPCEFS, {RS, RB}},
+-{"efsctui", VX (4, 724), VX_MASK, PPCEFS, {RS, RB}},
+-{"efsctsi", VX (4, 725), VX_MASK, PPCEFS, {RS, RB}},
+-{"efsctuf", VX (4, 726), VX_MASK, PPCEFS, {RS, RB}},
+-{"efsctsf", VX (4, 727), VX_MASK, PPCEFS, {RS, RB}},
+-{"efsctuiz", VX (4, 728), VX_MASK, PPCEFS, {RS, RB}},
+-{"nput", APU(4, 364,0), APU_RT_MASK, PPC405, {RA, FSL}},
+-{"efsctsiz", VX (4, 730), VX_MASK, PPCEFS, {RS, RB}},
+-{"efststgt", VX (4, 732), VX_MASK, PPCEFS, {CRFD, RA, RB}},
+-{"efststlt", VX (4, 733), VX_MASK, PPCEFS, {CRFD, RA, RB}},
+-{"efststeq", VX (4, 734), VX_MASK, PPCEFS, {CRFD, RA, RB}},
+-{"efdadd", VX (4, 736), VX_MASK, PPCEFS, {RS, RA, RB}},
+-{"efdsub", VX (4, 737), VX_MASK, PPCEFS, {RS, RA, RB}},
+-{"efdcfuid", VX (4, 738), VX_MASK, PPCEFS, {RS, RB}},
+-{"efdcfsid", VX (4, 739), VX_MASK, PPCEFS, {RS, RB}},
+-{"efdabs", VX (4, 740), VX_MASK, PPCEFS, {RS, RA}},
+-{"efdnabs", VX (4, 741), VX_MASK, PPCEFS, {RS, RA}},
+-{"efdneg", VX (4, 742), VX_MASK, PPCEFS, {RS, RA}},
+-{"efdmul", VX (4, 744), VX_MASK, PPCEFS, {RS, RA, RB}},
+-{"efddiv", VX (4, 745), VX_MASK, PPCEFS, {RS, RA, RB}},
+-{"efdctuidz", VX (4, 746), VX_MASK, PPCEFS, {RS, RB}},
+-{"efdctsidz", VX (4, 747), VX_MASK, PPCEFS, {RS, RB}},
+-{"efdcmpgt", VX (4, 748), VX_MASK, PPCEFS, {CRFD, RA, RB}},
+-{"efdcmplt", VX (4, 749), VX_MASK, PPCEFS, {CRFD, RA, RB}},
+-{"efdcmpeq", VX (4, 750), VX_MASK, PPCEFS, {CRFD, RA, RB}},
+-{"efdcfs", VX (4, 751), VX_MASK, PPCEFS, {RS, RB}},
+-{"efdcfui", VX (4, 752), VX_MASK, PPCEFS, {RS, RB}},
+-{"efdcfsi", VX (4, 753), VX_MASK, PPCEFS, {RS, RB}},
+-{"efdcfuf", VX (4, 754), VX_MASK, PPCEFS, {RS, RB}},
+-{"efdcfsf", VX (4, 755), VX_MASK, PPCEFS, {RS, RB}},
+-{"efdctui", VX (4, 756), VX_MASK, PPCEFS, {RS, RB}},
+-{"efdctsi", VX (4, 757), VX_MASK, PPCEFS, {RS, RB}},
+-{"efdctuf", VX (4, 758), VX_MASK, PPCEFS, {RS, RB}},
+-{"efdctsf", VX (4, 759), VX_MASK, PPCEFS, {RS, RB}},
+-{"efdctuiz", VX (4, 760), VX_MASK, PPCEFS, {RS, RB}},
+-{"ncput", APU(4, 380,0), APU_RT_MASK, PPC405, {RA, FSL}},
+-{"efdctsiz", VX (4, 762), VX_MASK, PPCEFS, {RS, RB}},
+-{"efdtstgt", VX (4, 764), VX_MASK, PPCEFS, {CRFD, RA, RB}},
+-{"efdtstlt", VX (4, 765), VX_MASK, PPCEFS, {CRFD, RA, RB}},
+-{"efdtsteq", VX (4, 766), VX_MASK, PPCEFS, {CRFD, RA, RB}},
+-{"evlddx", VX (4, 768), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"vaddsbs", VX (4, 768), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"evldd", VX (4, 769), VX_MASK, PPCSPE, {RS, EVUIMM_8, RA}},
+-{"evldwx", VX (4, 770), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"vminsb", VX (4, 770), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"evldw", VX (4, 771), VX_MASK, PPCSPE, {RS, EVUIMM_8, RA}},
+-{"evldhx", VX (4, 772), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"vsrab", VX (4, 772), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"evldh", VX (4, 773), VX_MASK, PPCSPE, {RS, EVUIMM_8, RA}},
+-{"vcmpgtsb", VXR(4, 774,0), VXR_MASK, PPCVEC, {VD, VA, VB}},
+-{"evlhhesplatx",VX (4, 776), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"vmulesb", VX (4, 776), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"evlhhesplat", VX (4, 777), VX_MASK, PPCSPE, {RS, EVUIMM_2, RA}},
+-{"vcfux", VX (4, 778), VX_MASK, PPCVEC, {VD, VB, UIMM}},
+-{"evlhhousplatx",VX(4, 780), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"vspltisb", VX (4, 780), VX_MASK, PPCVEC, {VD, SIMM}},
+-{"evlhhousplat",VX (4, 781), VX_MASK, PPCSPE, {RS, EVUIMM_2, RA}},
+-{"evlhhossplatx",VX(4, 782), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"vpkpx", VX (4, 782), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"evlhhossplat",VX (4, 783), VX_MASK, PPCSPE, {RS, EVUIMM_2, RA}},
+-{"mullhwu", XRC(4, 392,0), X_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"evlwhex", VX (4, 784), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"mullhwu.", XRC(4, 392,1), X_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"evlwhe", VX (4, 785), VX_MASK, PPCSPE, {RS, EVUIMM_4, RA}},
+-{"evlwhoux", VX (4, 788), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evlwhou", VX (4, 789), VX_MASK, PPCSPE, {RS, EVUIMM_4, RA}},
+-{"evlwhosx", VX (4, 790), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evlwhos", VX (4, 791), VX_MASK, PPCSPE, {RS, EVUIMM_4, RA}},
+-{"maclhwu", XO (4, 396,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"evlwwsplatx", VX (4, 792), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"maclhwu.", XO (4, 396,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"evlwwsplat", VX (4, 793), VX_MASK, PPCSPE, {RS, EVUIMM_4, RA}},
+-{"evlwhsplatx", VX (4, 796), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evlwhsplat", VX (4, 797), VX_MASK, PPCSPE, {RS, EVUIMM_4, RA}},
+-{"evstddx", VX (4, 800), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evstdd", VX (4, 801), VX_MASK, PPCSPE, {RS, EVUIMM_8, RA}},
+-{"evstdwx", VX (4, 802), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evstdw", VX (4, 803), VX_MASK, PPCSPE, {RS, EVUIMM_8, RA}},
+-{"evstdhx", VX (4, 804), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evstdh", VX (4, 805), VX_MASK, PPCSPE, {RS, EVUIMM_8, RA}},
+-{"evstwhex", VX (4, 816), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evstwhe", VX (4, 817), VX_MASK, PPCSPE, {RS, EVUIMM_4, RA}},
+-{"evstwhox", VX (4, 820), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evstwho", VX (4, 821), VX_MASK, PPCSPE, {RS, EVUIMM_4, RA}},
+-{"evstwwex", VX (4, 824), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evstwwe", VX (4, 825), VX_MASK, PPCSPE, {RS, EVUIMM_4, RA}},
+-{"evstwwox", VX (4, 828), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evstwwo", VX (4, 829), VX_MASK, PPCSPE, {RS, EVUIMM_4, RA}},
+-{"vaddshs", VX (4, 832), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vminsh", VX (4, 834), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vsrah", VX (4, 836), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vcmpgtsh", VXR(4, 838,0), VXR_MASK, PPCVEC, {VD, VA, VB}},
+-{"vmulesh", VX (4, 840), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vcfsx", VX (4, 842), VX_MASK, PPCVEC, {VD, VB, UIMM}},
+-{"vspltish", VX (4, 844), VX_MASK, PPCVEC, {VD, SIMM}},
+-{"vupkhpx", VX (4, 846), VX_MASK, PPCVEC, {VD, VB}},
+-{"mullhw", XRC(4, 424,0), X_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"mullhw.", XRC(4, 424,1), X_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"maclhw", XO (4, 428,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"maclhw.", XO (4, 428,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"nmaclhw", XO (4, 430,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"nmaclhw.", XO (4, 430,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"vaddsws", VX (4, 896), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vminsw", VX (4, 898), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vsraw", VX (4, 900), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vcmpgtsw", VXR(4, 902,0), VXR_MASK, PPCVEC, {VD, VA, VB}},
+-{"vctuxs", VX (4, 906), VX_MASK, PPCVEC, {VD, VB, UIMM}},
+-{"vspltisw", VX (4, 908), VX_MASK, PPCVEC, {VD, SIMM}},
+-{"maclhwsu", XO (4, 460,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"maclhwsu.", XO (4, 460,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"vcmpbfp", VXR(4, 966,0), VXR_MASK, PPCVEC, {VD, VA, VB}},
+-{"vctsxs", VX (4, 970), VX_MASK, PPCVEC, {VD, VB, UIMM}},
+-{"vupklpx", VX (4, 974), VX_MASK, PPCVEC, {VD, VB}},
+-{"maclhws", XO (4, 492,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"maclhws.", XO (4, 492,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"nmaclhws", XO (4, 494,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"nmaclhws.", XO (4, 494,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"vsububm", VX (4,1024), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vavgub", VX (4,1026), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"evmhessf", VX (4,1027), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"vand", VX (4,1028), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vcmpequb.", VXR(4, 6,1), VXR_MASK, PPCVEC, {VD, VA, VB}},
+-{"udi0fcm.", APU(4, 515,0), APU_MASK, PPC405|PPC440, {URT, URA, URB}},
+-{"udi0fcm", APU(4, 515,1), APU_MASK, PPC405|PPC440, {URT, URA, URB}},
+-{"evmhossf", VX (4,1031), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmheumi", VX (4,1032), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhesmi", VX (4,1033), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"vmaxfp", VX (4,1034), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"evmhesmf", VX (4,1035), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhoumi", VX (4,1036), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"vslo", VX (4,1036), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"evmhosmi", VX (4,1037), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhosmf", VX (4,1039), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"machhwuo", XO (4, 12,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"machhwuo.", XO (4, 12,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"ps_merge00", XOPS(4,528,0), XOPS_MASK, PPCPS, {FRT, FRA, FRB}},
+-{"ps_merge00.", XOPS(4,528,1), XOPS_MASK, PPCPS, {FRT, FRA, FRB}},
+-{"evmhessfa", VX (4,1059), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhossfa", VX (4,1063), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmheumia", VX (4,1064), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhesmia", VX (4,1065), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhesmfa", VX (4,1067), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhoumia", VX (4,1068), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhosmia", VX (4,1069), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhosmfa", VX (4,1071), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"vsubuhm", VX (4,1088), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vavguh", VX (4,1090), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vandc", VX (4,1092), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vcmpequh.", VXR(4, 70,1), VXR_MASK, PPCVEC, {VD, VA, VB}},
+-{"udi1fcm.", APU(4, 547,0), APU_MASK, PPC405|PPC440, {URT, URA, URB}},
+-{"udi1fcm", APU(4, 547,1), APU_MASK, PPC405|PPC440, {URT, URA, URB}},
+-{"evmwhssf", VX (4,1095), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmwlumi", VX (4,1096), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"vminfp", VX (4,1098), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"evmwhumi", VX (4,1100), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"vsro", VX (4,1100), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"evmwhsmi", VX (4,1101), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmwhsmf", VX (4,1103), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmwssf", VX (4,1107), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"machhwo", XO (4, 44,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"evmwumi", VX (4,1112), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"machhwo.", XO (4, 44,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"evmwsmi", VX (4,1113), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmwsmf", VX (4,1115), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"nmachhwo", XO (4, 46,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"nmachhwo.", XO (4, 46,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"ps_merge01", XOPS(4,560,0), XOPS_MASK, PPCPS, {FRT, FRA, FRB}},
+-{"ps_merge01.", XOPS(4,560,1), XOPS_MASK, PPCPS, {FRT, FRA, FRB}},
+-{"evmwhssfa", VX (4,1127), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmwlumia", VX (4,1128), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmwhumia", VX (4,1132), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmwhsmia", VX (4,1133), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmwhsmfa", VX (4,1135), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmwssfa", VX (4,1139), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmwumia", VX (4,1144), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmwsmia", VX (4,1145), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmwsmfa", VX (4,1147), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"vsubuwm", VX (4,1152), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vavguw", VX (4,1154), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vor", VX (4,1156), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vcmpequw.", VXR(4, 134,1), VXR_MASK, PPCVEC, {VD, VA, VB}},
+-{"udi2fcm.", APU(4, 579,0), APU_MASK, PPC405|PPC440, {URT, URA, URB}},
+-{"udi2fcm", APU(4, 579,1), APU_MASK, PPC405|PPC440, {URT, URA, URB}},
+-{"machhwsuo", XO (4, 76,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"machhwsuo.", XO (4, 76,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"ps_merge10", XOPS(4,592,0), XOPS_MASK, PPCPS, {FRT, FRA, FRB}},
+-{"ps_merge10.", XOPS(4,592,1), XOPS_MASK, PPCPS, {FRT, FRA, FRB}},
+-{"evaddusiaaw", VX (4,1216), VX_MASK, PPCSPE, {RS, RA}},
+-{"evaddssiaaw", VX (4,1217), VX_MASK, PPCSPE, {RS, RA}},
+-{"evsubfusiaaw",VX (4,1218), VX_MASK, PPCSPE, {RS, RA}},
+-{"evsubfssiaaw",VX (4,1219), VX_MASK, PPCSPE, {RS, RA}},
+-{"evmra", VX (4,1220), VX_MASK, PPCSPE, {RS, RA}},
+-{"vxor", VX (4,1220), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"evdivws", VX (4,1222), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"vcmpeqfp.", VXR(4, 198,1), VXR_MASK, PPCVEC, {VD, VA, VB}},
+-{"udi3fcm.", APU(4, 611,0), APU_MASK, PPC405|PPC440, {URT, URA, URB}},
+-{"udi3fcm", APU(4, 611,1), APU_MASK, PPC405|PPC440, {URT, URA, URB}},
+-{"evdivwu", VX (4,1223), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evaddumiaaw", VX (4,1224), VX_MASK, PPCSPE, {RS, RA}},
+-{"evaddsmiaaw", VX (4,1225), VX_MASK, PPCSPE, {RS, RA}},
+-{"evsubfumiaaw",VX (4,1226), VX_MASK, PPCSPE, {RS, RA}},
+-{"evsubfsmiaaw",VX (4,1227), VX_MASK, PPCSPE, {RS, RA}},
+-{"machhwso", XO (4, 108,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"machhwso.", XO (4, 108,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"nmachhwso", XO (4, 110,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"nmachhwso.", XO (4, 110,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"ps_merge11", XOPS(4,624,0), XOPS_MASK, PPCPS, {FRT, FRA, FRB}},
+-{"ps_merge11.", XOPS(4,624,1), XOPS_MASK, PPCPS, {FRT, FRA, FRB}},
+-{"evmheusiaaw", VX (4,1280), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhessiaaw", VX (4,1281), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"vavgsb", VX (4,1282), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"evmhessfaaw", VX (4,1283), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhousiaaw", VX (4,1284), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"vnor", VX (4,1284), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"evmhossiaaw", VX (4,1285), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"udi4fcm.", APU(4, 643,0), APU_MASK, PPC405|PPC440, {URT, URA, URB}},
+-{"udi4fcm", APU(4, 643,1), APU_MASK, PPC405|PPC440, {URT, URA, URB}},
+-{"evmhossfaaw", VX (4,1287), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmheumiaaw", VX (4,1288), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhesmiaaw", VX (4,1289), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhesmfaaw", VX (4,1291), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhoumiaaw", VX (4,1292), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhosmiaaw", VX (4,1293), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhosmfaaw", VX (4,1295), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"macchwuo", XO (4, 140,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"macchwuo.", XO (4, 140,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"evmhegumiaa", VX (4,1320), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhegsmiaa", VX (4,1321), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhegsmfaa", VX (4,1323), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhogumiaa", VX (4,1324), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhogsmiaa", VX (4,1325), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhogsmfaa", VX (4,1327), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmwlusiaaw", VX (4,1344), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmwlssiaaw", VX (4,1345), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"vavgsh", VX (4,1346), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"udi5fcm.", APU(4, 675,0), APU_MASK, PPC405|PPC440, {URT, URA, URB}},
+-{"udi5fcm", APU(4, 675,1), APU_MASK, PPC405|PPC440, {URT, URA, URB}},
+-{"evmwlumiaaw", VX (4,1352), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmwlsmiaaw", VX (4,1353), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmwssfaa", VX (4,1363), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"macchwo", XO (4, 172,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"evmwumiaa", VX (4,1368), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"macchwo.", XO (4, 172,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"evmwsmiaa", VX (4,1369), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmwsmfaa", VX (4,1371), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"nmacchwo", XO (4, 174,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"nmacchwo.", XO (4, 174,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"evmheusianw", VX (4,1408), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"vsubcuw", VX (4,1408), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"evmhessianw", VX (4,1409), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"vavgsw", VX (4,1410), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"evmhessfanw", VX (4,1411), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhousianw", VX (4,1412), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhossianw", VX (4,1413), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"udi6fcm.", APU(4, 707,0), APU_MASK, PPC405|PPC440, {URT, URA, URB}},
+-{"udi6fcm", APU(4, 707,1), APU_MASK, PPC405|PPC440, {URT, URA, URB}},
+-{"evmhossfanw", VX (4,1415), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmheumianw", VX (4,1416), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhesmianw", VX (4,1417), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhesmfanw", VX (4,1419), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhoumianw", VX (4,1420), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhosmianw", VX (4,1421), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhosmfanw", VX (4,1423), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"macchwsuo", XO (4, 204,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"macchwsuo.", XO (4, 204,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"evmhegumian", VX (4,1448), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhegsmian", VX (4,1449), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhegsmfan", VX (4,1451), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhogumian", VX (4,1452), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhogsmian", VX (4,1453), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmhogsmfan", VX (4,1455), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmwlusianw", VX (4,1472), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmwlssianw", VX (4,1473), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"vcmpgefp.", VXR(4, 454,1), VXR_MASK, PPCVEC, {VD, VA, VB}},
+-{"udi7fcm.", APU(4, 739,0), APU_MASK, PPC405|PPC440, {URT, URA, URB}},
+-{"udi7fcm", APU(4, 739,1), APU_MASK, PPC405|PPC440, {URT, URA, URB}},
+-{"evmwlumianw", VX (4,1480), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmwlsmianw", VX (4,1481), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmwssfan", VX (4,1491), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"macchwso", XO (4, 236,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"evmwumian", VX (4,1496), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"macchwso.", XO (4, 236,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"evmwsmian", VX (4,1497), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"evmwsmfan", VX (4,1499), VX_MASK, PPCSPE, {RS, RA, RB}},
+-{"nmacchwso", XO (4, 238,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"nmacchwso.", XO (4, 238,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"vsububs", VX (4,1536), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"mfvscr", VX (4,1540), VX_MASK, PPCVEC, {VD}},
+-{"vcmpgtub.", VXR(4, 518,1), VXR_MASK, PPCVEC, {VD, VA, VB}},
+-{"udi8fcm.", APU(4, 771,0), APU_MASK, PPC440, {URT, URA, URB}},
+-{"udi8fcm", APU(4, 771,1), APU_MASK, PPC440, {URT, URA, URB}},
+-{"vsum4ubs", VX (4,1544), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vsubuhs", VX (4,1600), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"mtvscr", VX (4,1604), VX_MASK, PPCVEC, {VB}},
+-{"vcmpgtuh.", VXR(4, 582,1), VXR_MASK, PPCVEC, {VD, VA, VB}},
+-{"vsum4shs", VX (4,1608), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"udi9fcm.", APU(4, 804,0), APU_MASK, PPC440, {URT, URA, URB}},
+-{"udi9fcm", APU(4, 804,1), APU_MASK, PPC440, {URT, URA, URB}},
+-{"vsubuws", VX (4,1664), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vcmpgtuw.", VXR(4, 646,1), VXR_MASK, PPCVEC, {VD, VA, VB}},
+-{"udi10fcm.", APU(4, 835,0), APU_MASK, PPC440, {URT, URA, URB}},
+-{"udi10fcm", APU(4, 835,1), APU_MASK, PPC440, {URT, URA, URB}},
+-{"vsum2sws", VX (4,1672), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vcmpgtfp.", VXR(4, 710,1), VXR_MASK, PPCVEC, {VD, VA, VB}},
+-{"udi11fcm.", APU(4, 867,0), APU_MASK, PPC440, {URT, URA, URB}},
+-{"udi11fcm", APU(4, 867,1), APU_MASK, PPC440, {URT, URA, URB}},
+-{"vsubsbs", VX (4,1792), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vcmpgtsb.", VXR(4, 774,1), VXR_MASK, PPCVEC, {VD, VA, VB}},
+-{"udi12fcm.", APU(4, 899,0), APU_MASK, PPC440, {URT, URA, URB}},
+-{"udi12fcm", APU(4, 899,1), APU_MASK, PPC440, {URT, URA, URB}},
+-{"vsum4sbs", VX (4,1800), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"maclhwuo", XO (4, 396,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"maclhwuo.", XO (4, 396,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"vsubshs", VX (4,1856), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vcmpgtsh.", VXR(4, 838,1), VXR_MASK, PPCVEC, {VD, VA, VB}},
+-{"udi13fcm.", APU(4, 931,0), APU_MASK, PPC440, {URT, URA, URB}},
+-{"udi13fcm", APU(4, 931,1), APU_MASK, PPC440, {URT, URA, URB}},
+-{"maclhwo", XO (4, 428,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"maclhwo.", XO (4, 428,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"nmaclhwo", XO (4, 430,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"nmaclhwo.", XO (4, 430,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"vsubsws", VX (4,1920), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"vcmpgtsw.", VXR(4, 902,1), VXR_MASK, PPCVEC, {VD, VA, VB}},
+-{"udi14fcm.", APU(4, 963,0), APU_MASK, PPC440, {URT, URA, URB}},
+-{"udi14fcm", APU(4, 963,1), APU_MASK, PPC440, {URT, URA, URB}},
+-{"vsumsws", VX (4,1928), VX_MASK, PPCVEC, {VD, VA, VB}},
+-{"maclhwsuo", XO (4, 460,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"maclhwsuo.", XO (4, 460,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"vcmpbfp.", VXR(4, 966,1), VXR_MASK, PPCVEC, {VD, VA, VB}},
+-{"udi15fcm.", APU(4, 995,0), APU_MASK, PPC440, {URT, URA, URB}},
+-{"udi15fcm", APU(4, 995,1), APU_MASK, PPC440, {URT, URA, URB}},
+-{"maclhwso", XO (4, 492,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"maclhwso.", XO (4, 492,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"nmaclhwso", XO (4, 494,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"nmaclhwso.", XO (4, 494,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
+-{"dcbz_l", X (4,1014), XRT_MASK, PPCPS, {RA, RB}},
+-
+-{"mulli", OP(7), OP_MASK, PPCCOM, {RT, RA, SI}},
+-{"muli", OP(7), OP_MASK, PWRCOM, {RT, RA, SI}},
+-
+-{"subfic", OP(8), OP_MASK, PPCCOM, {RT, RA, SI}},
+-{"sfi", OP(8), OP_MASK, PWRCOM, {RT, RA, SI}},
+-
+-{"dozi", OP(9), OP_MASK, M601, {RT, RA, SI}},
+-
+-{"bce", B(9,0,0), B_MASK, BOOKE64, {BO, BI, BD}},
+-{"bcel", B(9,0,1), B_MASK, BOOKE64, {BO, BI, BD}},
+-{"bcea", B(9,1,0), B_MASK, BOOKE64, {BO, BI, BDA}},
+-{"bcela", B(9,1,1), B_MASK, BOOKE64, {BO, BI, BDA}},
+-
+-{"cmplwi", OPL(10,0), OPL_MASK, PPCCOM, {OBF, RA, UI}},
+-{"cmpldi", OPL(10,1), OPL_MASK, PPC64, {OBF, RA, UI}},
+-{"cmpli", OP(10), OP_MASK, PPC, {BF, L, RA, UI}},
+-{"cmpli", OP(10), OP_MASK, PWRCOM, {BF, RA, UI}},
+-
+-{"cmpwi", OPL(11,0), OPL_MASK, PPCCOM, {OBF, RA, SI}},
+-{"cmpdi", OPL(11,1), OPL_MASK, PPC64, {OBF, RA, SI}},
+-{"cmpi", OP(11), OP_MASK, PPC, {BF, L, RA, SI}},
+-{"cmpi", OP(11), OP_MASK, PWRCOM, {BF, RA, SI}},
+-
+-{"addic", OP(12), OP_MASK, PPCCOM, {RT, RA, SI}},
+-{"ai", OP(12), OP_MASK, PWRCOM, {RT, RA, SI}},
+-{"subic", OP(12), OP_MASK, PPCCOM, {RT, RA, NSI}},
+-
+-{"addic.", OP(13), OP_MASK, PPCCOM, {RT, RA, SI}},
+-{"ai.", OP(13), OP_MASK, PWRCOM, {RT, RA, SI}},
+-{"subic.", OP(13), OP_MASK, PPCCOM, {RT, RA, NSI}},
+-
+-{"li", OP(14), DRA_MASK, PPCCOM, {RT, SI}},
+-{"lil", OP(14), DRA_MASK, PWRCOM, {RT, SI}},
+-{"addi", OP(14), OP_MASK, PPCCOM, {RT, RA0, SI}},
+-{"cal", OP(14), OP_MASK, PWRCOM, {RT, D, RA0}},
+-{"subi", OP(14), OP_MASK, PPCCOM, {RT, RA0, NSI}},
+-{"la", OP(14), OP_MASK, PPCCOM, {RT, D, RA0}},
+-
+-{"lis", OP(15), DRA_MASK, PPCCOM, {RT, SISIGNOPT}},
+-{"liu", OP(15), DRA_MASK, PWRCOM, {RT, SISIGNOPT}},
+-{"addis", OP(15), OP_MASK, PPCCOM, {RT, RA0, SISIGNOPT}},
+-{"cau", OP(15), OP_MASK, PWRCOM, {RT, RA0, SISIGNOPT}},
+-{"subis", OP(15), OP_MASK, PPCCOM, {RT, RA0, NSI}},
+-
+-{"bdnz-", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, {BDM}},
+-{"bdnz+", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, {BDP}},
+-{"bdnz", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, {BD}},
+-{"bdn", BBO(16,BODNZ,0,0), BBOATBI_MASK, PWRCOM, {BD}},
+-{"bdnzl-", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, {BDM}},
+-{"bdnzl+", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, {BDP}},
+-{"bdnzl", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, {BD}},
+-{"bdnl", BBO(16,BODNZ,0,1), BBOATBI_MASK, PWRCOM, {BD}},
+-{"bdnza-", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, {BDMA}},
+-{"bdnza+", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, {BDPA}},
+-{"bdnza", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, {BDA}},
+-{"bdna", BBO(16,BODNZ,1,0), BBOATBI_MASK, PWRCOM, {BDA}},
+-{"bdnzla-", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, {BDMA}},
+-{"bdnzla+", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, {BDPA}},
+-{"bdnzla", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, {BDA}},
+-{"bdnla", BBO(16,BODNZ,1,1), BBOATBI_MASK, PWRCOM, {BDA}},
+-{"bdz-", BBO(16,BODZ,0,0), BBOATBI_MASK, PPCCOM, {BDM}},
+-{"bdz+", BBO(16,BODZ,0,0), BBOATBI_MASK, PPCCOM, {BDP}},
+-{"bdz", BBO(16,BODZ,0,0), BBOATBI_MASK, COM, {BD}},
+-{"bdzl-", BBO(16,BODZ,0,1), BBOATBI_MASK, PPCCOM, {BDM}},
+-{"bdzl+", BBO(16,BODZ,0,1), BBOATBI_MASK, PPCCOM, {BDP}},
+-{"bdzl", BBO(16,BODZ,0,1), BBOATBI_MASK, COM, {BD}},
+-{"bdza-", BBO(16,BODZ,1,0), BBOATBI_MASK, PPCCOM, {BDMA}},
+-{"bdza+", BBO(16,BODZ,1,0), BBOATBI_MASK, PPCCOM, {BDPA}},
+-{"bdza", BBO(16,BODZ,1,0), BBOATBI_MASK, COM, {BDA}},
+-{"bdzla-", BBO(16,BODZ,1,1), BBOATBI_MASK, PPCCOM, {BDMA}},
+-{"bdzla+", BBO(16,BODZ,1,1), BBOATBI_MASK, PPCCOM, {BDPA}},
+-{"bdzla", BBO(16,BODZ,1,1), BBOATBI_MASK, COM, {BDA}},
+-
+-{"bge-", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, {CR, BDM}},
+-{"bge+", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, {CR, BDP}},
+-{"bge", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, COM, {CR, BD}},
+-{"bnl-", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, {CR, BDM}},
+-{"bnl+", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, {CR, BDP}},
+-{"bnl", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, COM, {CR, BD}},
+-{"bgel-", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, {CR, BDM}},
+-{"bgel+", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, {CR, BDP}},
+-{"bgel", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, COM, {CR, BD}},
+-{"bnll-", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, {CR, BDM}},
+-{"bnll+", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, {CR, BDP}},
+-{"bnll", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, COM, {CR, BD}},
+-{"bgea-", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
+-{"bgea+", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
+-{"bgea", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, COM, {CR, BDA}},
+-{"bnla-", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
+-{"bnla+", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
+-{"bnla", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, COM, {CR, BDA}},
+-{"bgela-", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
+-{"bgela+", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
+-{"bgela", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, COM, {CR, BDA}},
+-{"bnlla-", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
+-{"bnlla+", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
+-{"bnlla", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, COM, {CR, BDA}},
+-{"ble-", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, {CR, BDM}},
+-{"ble+", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, {CR, BDP}},
+-{"ble", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, COM, {CR, BD}},
+-{"bng-", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, {CR, BDM}},
+-{"bng+", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, {CR, BDP}},
+-{"bng", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, COM, {CR, BD}},
+-{"blel-", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, {CR, BDM}},
+-{"blel+", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, {CR, BDP}},
+-{"blel", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, COM, {CR, BD}},
+-{"bngl-", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, {CR, BDM}},
+-{"bngl+", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, {CR, BDP}},
+-{"bngl", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, COM, {CR, BD}},
+-{"blea-", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
+-{"blea+", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
+-{"blea", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, COM, {CR, BDA}},
+-{"bnga-", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
+-{"bnga+", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
+-{"bnga", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, COM, {CR, BDA}},
+-{"blela-", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
+-{"blela+", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
+-{"blela", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, COM, {CR, BDA}},
+-{"bngla-", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
+-{"bngla+", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
+-{"bngla", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, COM, {CR, BDA}},
+-{"bne-", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, PPCCOM, {CR, BDM}},
+-{"bne+", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, PPCCOM, {CR, BDP}},
+-{"bne", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, COM, {CR, BD}},
+-{"bnel-", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, PPCCOM, {CR, BDM}},
+-{"bnel+", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, PPCCOM, {CR, BDP}},
+-{"bnel", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, COM, {CR, BD}},
+-{"bnea-", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
+-{"bnea+", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
+-{"bnea", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, COM, {CR, BDA}},
+-{"bnela-", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
+-{"bnela+", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
+-{"bnela", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, COM, {CR, BDA}},
+-{"bns-", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, {CR, BDM}},
+-{"bns+", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, {CR, BDP}},
+-{"bns", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, COM, {CR, BD}},
+-{"bnu-", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, {CR, BDM}},
+-{"bnu+", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, {CR, BDP}},
+-{"bnu", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, {CR, BD}},
+-{"bnsl-", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, {CR, BDM}},
+-{"bnsl+", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, {CR, BDP}},
+-{"bnsl", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, COM, {CR, BD}},
+-{"bnul-", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, {CR, BDM}},
+-{"bnul+", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, {CR, BDP}},
+-{"bnul", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, {CR, BD}},
+-{"bnsa-", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
+-{"bnsa+", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
+-{"bnsa", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, COM, {CR, BDA}},
+-{"bnua-", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
+-{"bnua+", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
+-{"bnua", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, {CR, BDA}},
+-{"bnsla-", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
+-{"bnsla+", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
+-{"bnsla", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, COM, {CR, BDA}},
+-{"bnula-", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
+-{"bnula+", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
+-{"bnula", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, {CR, BDA}},
+-
+-{"blt-", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, PPCCOM, {CR, BDM}},
+-{"blt+", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, PPCCOM, {CR, BDP}},
+-{"blt", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, COM, {CR, BD}},
+-{"bltl-", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, PPCCOM, {CR, BDM}},
+-{"bltl+", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, PPCCOM, {CR, BDP}},
+-{"bltl", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, COM, {CR, BD}},
+-{"blta-", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
+-{"blta+", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
+-{"blta", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, COM, {CR, BDA}},
+-{"bltla-", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
+-{"bltla+", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
+-{"bltla", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, COM, {CR, BDA}},
+-{"bgt-", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, PPCCOM, {CR, BDM}},
+-{"bgt+", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, PPCCOM, {CR, BDP}},
+-{"bgt", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, COM, {CR, BD}},
+-{"bgtl-", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, PPCCOM, {CR, BDM}},
+-{"bgtl+", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, PPCCOM, {CR, BDP}},
+-{"bgtl", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, COM, {CR, BD}},
+-{"bgta-", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
+-{"bgta+", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
+-{"bgta", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, COM, {CR, BDA}},
+-{"bgtla-", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
+-{"bgtla+", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
+-{"bgtla", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, COM, {CR, BDA}},
+-{"beq-", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, PPCCOM, {CR, BDM}},
+-{"beq+", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, PPCCOM, {CR, BDP}},
+-{"beq", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, COM, {CR, BD}},
+-{"beql-", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, PPCCOM, {CR, BDM}},
+-{"beql+", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, PPCCOM, {CR, BDP}},
+-{"beql", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, COM, {CR, BD}},
+-{"beqa-", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
+-{"beqa+", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
+-{"beqa", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, COM, {CR, BDA}},
+-{"beqla-", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
+-{"beqla+", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
+-{"beqla", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, COM, {CR, BDA}},
+-{"bso-", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, {CR, BDM}},
+-{"bso+", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, {CR, BDP}},
+-{"bso", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, COM, {CR, BD}},
+-{"bun-", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, {CR, BDM}},
+-{"bun+", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, {CR, BDP}},
+-{"bun", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, {CR, BD}},
+-{"bsol-", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, {CR, BDM}},
+-{"bsol+", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, {CR, BDP}},
+-{"bsol", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, COM, {CR, BD}},
+-{"bunl-", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, {CR, BDM}},
+-{"bunl+", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, {CR, BDP}},
+-{"bunl", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, {CR, BD}},
+-{"bsoa-", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
+-{"bsoa+", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
+-{"bsoa", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, COM, {CR, BDA}},
+-{"buna-", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
+-{"buna+", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
+-{"buna", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, {CR, BDA}},
+-{"bsola-", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
+-{"bsola+", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
+-{"bsola", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, COM, {CR, BDA}},
+-{"bunla-", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
+-{"bunla+", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
+-{"bunla", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, {CR, BDA}},
+-
+-{"bdnzf-", BBO(16,BODNZF,0,0), BBOY_MASK, NOPOWER4, {BI, BDM}},
+-{"bdnzf+", BBO(16,BODNZF,0,0), BBOY_MASK, NOPOWER4, {BI, BDP}},
+-{"bdnzf", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, {BI, BD}},
+-{"bdnzfl-", BBO(16,BODNZF,0,1), BBOY_MASK, NOPOWER4, {BI, BDM}},
+-{"bdnzfl+", BBO(16,BODNZF,0,1), BBOY_MASK, NOPOWER4, {BI, BDP}},
+-{"bdnzfl", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, {BI, BD}},
+-{"bdnzfa-", BBO(16,BODNZF,1,0), BBOY_MASK, NOPOWER4, {BI, BDMA}},
+-{"bdnzfa+", BBO(16,BODNZF,1,0), BBOY_MASK, NOPOWER4, {BI, BDPA}},
+-{"bdnzfa", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, {BI, BDA}},
+-{"bdnzfla-", BBO(16,BODNZF,1,1), BBOY_MASK, NOPOWER4, {BI, BDMA}},
+-{"bdnzfla+", BBO(16,BODNZF,1,1), BBOY_MASK, NOPOWER4, {BI, BDPA}},
+-{"bdnzfla", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, {BI, BDA}},
+-{"bdzf-", BBO(16,BODZF,0,0), BBOY_MASK, NOPOWER4, {BI, BDM}},
+-{"bdzf+", BBO(16,BODZF,0,0), BBOY_MASK, NOPOWER4, {BI, BDP}},
+-{"bdzf", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, {BI, BD}},
+-{"bdzfl-", BBO(16,BODZF,0,1), BBOY_MASK, NOPOWER4, {BI, BDM}},
+-{"bdzfl+", BBO(16,BODZF,0,1), BBOY_MASK, NOPOWER4, {BI, BDP}},
+-{"bdzfl", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, {BI, BD}},
+-{"bdzfa-", BBO(16,BODZF,1,0), BBOY_MASK, NOPOWER4, {BI, BDMA}},
+-{"bdzfa+", BBO(16,BODZF,1,0), BBOY_MASK, NOPOWER4, {BI, BDPA}},
+-{"bdzfa", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, {BI, BDA}},
+-{"bdzfla-", BBO(16,BODZF,1,1), BBOY_MASK, NOPOWER4, {BI, BDMA}},
+-{"bdzfla+", BBO(16,BODZF,1,1), BBOY_MASK, NOPOWER4, {BI, BDPA}},
+-{"bdzfla", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, {BI, BDA}},
+-
+-{"bf-", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, {BI, BDM}},
+-{"bf+", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, {BI, BDP}},
+-{"bf", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, {BI, BD}},
+-{"bbf", BBO(16,BOF,0,0), BBOAT_MASK, PWRCOM, {BI, BD}},
+-{"bfl-", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, {BI, BDM}},
+-{"bfl+", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, {BI, BDP}},
+-{"bfl", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, {BI, BD}},
+-{"bbfl", BBO(16,BOF,0,1), BBOAT_MASK, PWRCOM, {BI, BD}},
+-{"bfa-", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, {BI, BDMA}},
+-{"bfa+", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, {BI, BDPA}},
+-{"bfa", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, {BI, BDA}},
+-{"bbfa", BBO(16,BOF,1,0), BBOAT_MASK, PWRCOM, {BI, BDA}},
+-{"bfla-", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, {BI, BDMA}},
+-{"bfla+", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, {BI, BDPA}},
+-{"bfla", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, {BI, BDA}},
+-{"bbfla", BBO(16,BOF,1,1), BBOAT_MASK, PWRCOM, {BI, BDA}},
+-
+-{"bdnzt-", BBO(16,BODNZT,0,0), BBOY_MASK, NOPOWER4, {BI, BDM}},
+-{"bdnzt+", BBO(16,BODNZT,0,0), BBOY_MASK, NOPOWER4, {BI, BDP}},
+-{"bdnzt", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, {BI, BD}},
+-{"bdnztl-", BBO(16,BODNZT,0,1), BBOY_MASK, NOPOWER4, {BI, BDM}},
+-{"bdnztl+", BBO(16,BODNZT,0,1), BBOY_MASK, NOPOWER4, {BI, BDP}},
+-{"bdnztl", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, {BI, BD}},
+-{"bdnzta-", BBO(16,BODNZT,1,0), BBOY_MASK, NOPOWER4, {BI, BDMA}},
+-{"bdnzta+", BBO(16,BODNZT,1,0), BBOY_MASK, NOPOWER4, {BI, BDPA}},
+-{"bdnzta", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, {BI, BDA}},
+-{"bdnztla-", BBO(16,BODNZT,1,1), BBOY_MASK, NOPOWER4, {BI, BDMA}},
+-{"bdnztla+", BBO(16,BODNZT,1,1), BBOY_MASK, NOPOWER4, {BI, BDPA}},
+-{"bdnztla", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, {BI, BDA}},
+-{"bdzt-", BBO(16,BODZT,0,0), BBOY_MASK, NOPOWER4, {BI, BDM}},
+-{"bdzt+", BBO(16,BODZT,0,0), BBOY_MASK, NOPOWER4, {BI, BDP}},
+-{"bdzt", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, {BI, BD}},
+-{"bdztl-", BBO(16,BODZT,0,1), BBOY_MASK, NOPOWER4, {BI, BDM}},
+-{"bdztl+", BBO(16,BODZT,0,1), BBOY_MASK, NOPOWER4, {BI, BDP}},
+-{"bdztl", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, {BI, BD}},
+-{"bdzta-", BBO(16,BODZT,1,0), BBOY_MASK, NOPOWER4, {BI, BDMA}},
+-{"bdzta+", BBO(16,BODZT,1,0), BBOY_MASK, NOPOWER4, {BI, BDPA}},
+-{"bdzta", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, {BI, BDA}},
+-{"bdztla-", BBO(16,BODZT,1,1), BBOY_MASK, NOPOWER4, {BI, BDMA}},
+-{"bdztla+", BBO(16,BODZT,1,1), BBOY_MASK, NOPOWER4, {BI, BDPA}},
+-{"bdztla", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, {BI, BDA}},
+-
+-{"bt-", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, {BI, BDM}},
+-{"bt+", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, {BI, BDP}},
+-{"bt", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, {BI, BD}},
+-{"bbt", BBO(16,BOT,0,0), BBOAT_MASK, PWRCOM, {BI, BD}},
+-{"btl-", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, {BI, BDM}},
+-{"btl+", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, {BI, BDP}},
+-{"btl", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, {BI, BD}},
+-{"bbtl", BBO(16,BOT,0,1), BBOAT_MASK, PWRCOM, {BI, BD}},
+-{"bta-", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, {BI, BDMA}},
+-{"bta+", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, {BI, BDPA}},
+-{"bta", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, {BI, BDA}},
+-{"bbta", BBO(16,BOT,1,0), BBOAT_MASK, PWRCOM, {BI, BDA}},
+-{"btla-", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, {BI, BDMA}},
+-{"btla+", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, {BI, BDPA}},
+-{"btla", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, {BI, BDA}},
+-{"bbtla", BBO(16,BOT,1,1), BBOAT_MASK, PWRCOM, {BI, BDA}},
+-
+-{"bc-", B(16,0,0), B_MASK, PPCCOM, {BOE, BI, BDM}},
+-{"bc+", B(16,0,0), B_MASK, PPCCOM, {BOE, BI, BDP}},
+-{"bc", B(16,0,0), B_MASK, COM, {BO, BI, BD}},
+-{"bcl-", B(16,0,1), B_MASK, PPCCOM, {BOE, BI, BDM}},
+-{"bcl+", B(16,0,1), B_MASK, PPCCOM, {BOE, BI, BDP}},
+-{"bcl", B(16,0,1), B_MASK, COM, {BO, BI, BD}},
+-{"bca-", B(16,1,0), B_MASK, PPCCOM, {BOE, BI, BDMA}},
+-{"bca+", B(16,1,0), B_MASK, PPCCOM, {BOE, BI, BDPA}},
+-{"bca", B(16,1,0), B_MASK, COM, {BO, BI, BDA}},
+-{"bcla-", B(16,1,1), B_MASK, PPCCOM, {BOE, BI, BDMA}},
+-{"bcla+", B(16,1,1), B_MASK, PPCCOM, {BOE, BI, BDPA}},
+-{"bcla", B(16,1,1), B_MASK, COM, {BO, BI, BDA}},
+-
+-{"svc", SC(17,0,0), SC_MASK, POWER, {SVC_LEV, FL1, FL2}},
+-{"svcl", SC(17,0,1), SC_MASK, POWER, {SVC_LEV, FL1, FL2}},
+-{"sc", SC(17,1,0), SC_MASK, PPC, {LEV}},
+-{"svca", SC(17,1,0), SC_MASK, PWRCOM, {SV}},
+-{"svcla", SC(17,1,1), SC_MASK, POWER, {SV}},
+-
+-{"b", B(18,0,0), B_MASK, COM, {LI}},
+-{"bl", B(18,0,1), B_MASK, COM, {LI}},
+-{"ba", B(18,1,0), B_MASK, COM, {LIA}},
+-{"bla", B(18,1,1), B_MASK, COM, {LIA}},
+-
+-{"mcrf", XL(19,0), XLBB_MASK|(3<<21)|(3<<16), COM, {BF, BFA}},
+-
+-{"bdnzlr", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPCCOM, {0}},
+-{"bdnzlr-", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, NOPOWER4, {0}},
+-{"bdnzlrl", XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPCCOM, {0}},
+-{"bdnzlrl-", XLO(19,BODNZ,16,1), XLBOBIBB_MASK, NOPOWER4, {0}},
+-{"bdnzlr+", XLO(19,BODNZP,16,0), XLBOBIBB_MASK, NOPOWER4, {0}},
+-{"bdnzlrl+", XLO(19,BODNZP,16,1), XLBOBIBB_MASK, NOPOWER4, {0}},
+-{"bdzlr", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPCCOM, {0}},
+-{"bdzlr-", XLO(19,BODZ,16,0), XLBOBIBB_MASK, NOPOWER4, {0}},
+-{"bdzlrl", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPCCOM, {0}},
+-{"bdzlrl-", XLO(19,BODZ,16,1), XLBOBIBB_MASK, NOPOWER4, {0}},
+-{"bdzlr+", XLO(19,BODZP,16,0), XLBOBIBB_MASK, NOPOWER4, {0}},
+-{"bdzlrl+", XLO(19,BODZP,16,1), XLBOBIBB_MASK, NOPOWER4, {0}},
+-{"blr", XLO(19,BOU,16,0), XLBOBIBB_MASK, PPCCOM, {0}},
+-{"br", XLO(19,BOU,16,0), XLBOBIBB_MASK, PWRCOM, {0}},
+-{"blrl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PPCCOM, {0}},
+-{"brl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PWRCOM, {0}},
+-{"bdnzlr-", XLO(19,BODNZM4,16,0), XLBOBIBB_MASK, POWER4, {0}},
+-{"bdnzlrl-", XLO(19,BODNZM4,16,1), XLBOBIBB_MASK, POWER4, {0}},
+-{"bdnzlr+", XLO(19,BODNZP4,16,0), XLBOBIBB_MASK, POWER4, {0}},
+-{"bdnzlrl+", XLO(19,BODNZP4,16,1), XLBOBIBB_MASK, POWER4, {0}},
+-{"bdzlr-", XLO(19,BODZM4,16,0), XLBOBIBB_MASK, POWER4, {0}},
+-{"bdzlrl-", XLO(19,BODZM4,16,1), XLBOBIBB_MASK, POWER4, {0}},
+-{"bdzlr+", XLO(19,BODZP4,16,0), XLBOBIBB_MASK, POWER4, {0}},
+-{"bdzlrl+", XLO(19,BODZP4,16,1), XLBOBIBB_MASK, POWER4, {0}},
+-
+-{"bgelr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bgelr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bger", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, {CR}},
+-{"bnllr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bnllr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnlr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, {CR}},
+-{"bgelrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bgelrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bgerl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, {CR}},
+-{"bnllrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bnllrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnlrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, {CR}},
+-{"blelr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"blelr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bler", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, {CR}},
+-{"bnglr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bnglr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bngr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, {CR}},
+-{"blelrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"blelrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"blerl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, {CR}},
+-{"bnglrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bnglrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bngrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, {CR}},
+-{"bnelr", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bnelr-", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bner", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, {CR}},
+-{"bnelrl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bnelrl-", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnerl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, {CR}},
+-{"bnslr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bnslr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnsr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, {CR}},
+-{"bnulr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bnulr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnslrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bnslrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnsrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, {CR}},
+-{"bnulrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bnulrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bgelr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnllr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bgelrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnllrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"blelr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnglr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"blelrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnglrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnelr+", XLOCB(19,BOFP,CBEQ,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnelrl+", XLOCB(19,BOFP,CBEQ,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnslr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnulr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnslrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnulrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bgelr-", XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnllr-", XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bgelrl-", XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnllrl-", XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"blelr-", XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnglr-", XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"blelrl-", XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnglrl-", XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnelr-", XLOCB(19,BOFM4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnelrl-", XLOCB(19,BOFM4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnslr-", XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnulr-", XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnslrl-", XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnulrl-", XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bgelr+", XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnllr+", XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bgelrl+", XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnllrl+", XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"blelr+", XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnglr+", XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"blelrl+", XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnglrl+", XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnelr+", XLOCB(19,BOFP4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnelrl+", XLOCB(19,BOFP4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnslr+", XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnulr+", XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnslrl+", XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnulrl+", XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bltlr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bltlr-", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bltr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, {CR}},
+-{"bltlrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bltlrl-", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bltrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, {CR}},
+-{"bgtlr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bgtlr-", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bgtr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, {CR}},
+-{"bgtlrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bgtlrl-", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bgtrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, {CR}},
+-{"beqlr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"beqlr-", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"beqr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, {CR}},
+-{"beqlrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"beqlrl-", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"beqrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, {CR}},
+-{"bsolr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bsolr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bsor", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, {CR}},
+-{"bunlr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bunlr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bsolrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bsolrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bsorl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, {CR}},
+-{"bunlrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bunlrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bltlr+", XLOCB(19,BOTP,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bltlrl+", XLOCB(19,BOTP,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bgtlr+", XLOCB(19,BOTP,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bgtlrl+", XLOCB(19,BOTP,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"beqlr+", XLOCB(19,BOTP,CBEQ,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"beqlrl+", XLOCB(19,BOTP,CBEQ,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bsolr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bunlr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bsolrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bunlrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bltlr-", XLOCB(19,BOTM4,CBLT,16,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bltlrl-", XLOCB(19,BOTM4,CBLT,16,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bgtlr-", XLOCB(19,BOTM4,CBGT,16,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bgtlrl-", XLOCB(19,BOTM4,CBGT,16,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"beqlr-", XLOCB(19,BOTM4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"beqlrl-", XLOCB(19,BOTM4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bsolr-", XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bunlr-", XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bsolrl-", XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bunlrl-", XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bltlr+", XLOCB(19,BOTP4,CBLT,16,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bltlrl+", XLOCB(19,BOTP4,CBLT,16,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bgtlr+", XLOCB(19,BOTP4,CBGT,16,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bgtlrl+", XLOCB(19,BOTP4,CBGT,16,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"beqlr+", XLOCB(19,BOTP4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"beqlrl+", XLOCB(19,BOTP4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bsolr+", XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bunlr+", XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bsolrl+", XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bunlrl+", XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, {CR}},
+-
+-{"bdnzflr", XLO(19,BODNZF,16,0), XLBOBB_MASK, PPCCOM, {BI}},
+-{"bdnzflr-", XLO(19,BODNZF,16,0), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"bdnzflrl", XLO(19,BODNZF,16,1), XLBOBB_MASK, PPCCOM, {BI}},
+-{"bdnzflrl-",XLO(19,BODNZF,16,1), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"bdnzflr+", XLO(19,BODNZFP,16,0), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"bdnzflrl+",XLO(19,BODNZFP,16,1), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"bdzflr", XLO(19,BODZF,16,0), XLBOBB_MASK, PPCCOM, {BI}},
+-{"bdzflr-", XLO(19,BODZF,16,0), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"bdzflrl", XLO(19,BODZF,16,1), XLBOBB_MASK, PPCCOM, {BI}},
+-{"bdzflrl-", XLO(19,BODZF,16,1), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"bdzflr+", XLO(19,BODZFP,16,0), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"bdzflrl+", XLO(19,BODZFP,16,1), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"bflr", XLO(19,BOF,16,0), XLBOBB_MASK, PPCCOM, {BI}},
+-{"bflr-", XLO(19,BOF,16,0), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"bbfr", XLO(19,BOF,16,0), XLBOBB_MASK, PWRCOM, {BI}},
+-{"bflrl", XLO(19,BOF,16,1), XLBOBB_MASK, PPCCOM, {BI}},
+-{"bflrl-", XLO(19,BOF,16,1), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"bbfrl", XLO(19,BOF,16,1), XLBOBB_MASK, PWRCOM, {BI}},
+-{"bflr+", XLO(19,BOFP,16,0), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"bflrl+", XLO(19,BOFP,16,1), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"bflr-", XLO(19,BOFM4,16,0), XLBOBB_MASK, POWER4, {BI}},
+-{"bflrl-", XLO(19,BOFM4,16,1), XLBOBB_MASK, POWER4, {BI}},
+-{"bflr+", XLO(19,BOFP4,16,0), XLBOBB_MASK, POWER4, {BI}},
+-{"bflrl+", XLO(19,BOFP4,16,1), XLBOBB_MASK, POWER4, {BI}},
+-{"bdnztlr", XLO(19,BODNZT,16,0), XLBOBB_MASK, PPCCOM, {BI}},
+-{"bdnztlr-", XLO(19,BODNZT,16,0), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"bdnztlrl", XLO(19,BODNZT,16,1), XLBOBB_MASK, PPCCOM, {BI}},
+-{"bdnztlrl-",XLO(19,BODNZT,16,1), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"bdnztlr+", XLO(19,BODNZTP,16,0), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"bdnztlrl+",XLO(19,BODNZTP,16,1), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"bdztlr", XLO(19,BODZT,16,0), XLBOBB_MASK, PPCCOM, {BI}},
+-{"bdztlr-", XLO(19,BODZT,16,0), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"bdztlrl", XLO(19,BODZT,16,1), XLBOBB_MASK, PPCCOM, {BI}},
+-{"bdztlrl-", XLO(19,BODZT,16,1), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"bdztlr+", XLO(19,BODZTP,16,0), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"bdztlrl+", XLO(19,BODZTP,16,1), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"btlr", XLO(19,BOT,16,0), XLBOBB_MASK, PPCCOM, {BI}},
+-{"btlr-", XLO(19,BOT,16,0), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"bbtr", XLO(19,BOT,16,0), XLBOBB_MASK, PWRCOM, {BI}},
+-{"btlrl", XLO(19,BOT,16,1), XLBOBB_MASK, PPCCOM, {BI}},
+-{"btlrl-", XLO(19,BOT,16,1), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"bbtrl", XLO(19,BOT,16,1), XLBOBB_MASK, PWRCOM, {BI}},
+-{"btlr+", XLO(19,BOTP,16,0), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"btlrl+", XLO(19,BOTP,16,1), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"btlr-", XLO(19,BOTM4,16,0), XLBOBB_MASK, POWER4, {BI}},
+-{"btlrl-", XLO(19,BOTM4,16,1), XLBOBB_MASK, POWER4, {BI}},
+-{"btlr+", XLO(19,BOTP4,16,0), XLBOBB_MASK, POWER4, {BI}},
+-{"btlrl+", XLO(19,BOTP4,16,1), XLBOBB_MASK, POWER4, {BI}},
+-
+-{"bclr-", XLYLK(19,16,0,0), XLYBB_MASK, PPCCOM, {BOE, BI}},
+-{"bclrl-", XLYLK(19,16,0,1), XLYBB_MASK, PPCCOM, {BOE, BI}},
+-{"bclr+", XLYLK(19,16,1,0), XLYBB_MASK, PPCCOM, {BOE, BI}},
+-{"bclrl+", XLYLK(19,16,1,1), XLYBB_MASK, PPCCOM, {BOE, BI}},
+-{"bclr", XLLK(19,16,0), XLBH_MASK, PPCCOM, {BO, BI, BH}},
+-{"bcr", XLLK(19,16,0), XLBB_MASK, PWRCOM, {BO, BI}},
+-{"bclrl", XLLK(19,16,1), XLBH_MASK, PPCCOM, {BO, BI, BH}},
+-{"bcrl", XLLK(19,16,1), XLBB_MASK, PWRCOM, {BO, BI}},
+-
+-{"bclre", XLLK(19,17,0), XLBB_MASK, BOOKE64, {BO, BI}},
+-{"bclrel", XLLK(19,17,1), XLBB_MASK, BOOKE64, {BO, BI}},
+-
+-{"rfid", XL(19,18), 0xffffffff, PPC64, {0}},
+-
+-{"crnot", XL(19,33), XL_MASK, PPCCOM, {BT, BA, BBA}},
+-{"crnor", XL(19,33), XL_MASK, COM, {BT, BA, BB}},
+-{"rfmci", X(19,38), 0xffffffff, PPCRFMCI, {0}},
+-
+-{"rfdi", XL(19,39), 0xffffffff, E500MC, {0}},
+-{"rfi", XL(19,50), 0xffffffff, COM, {0}},
+-{"rfci", XL(19,51), 0xffffffff, PPC403|BOOKE|PPCE300, {0}},
+-
+-{"rfsvc", XL(19,82), 0xffffffff, POWER, {0}},
+-
+-{"rfgi", XL(19,102), 0xffffffff, E500MC, {0}},
+-
+-{"crandc", XL(19,129), XL_MASK, COM, {BT, BA, BB}},
+-
+-{"isync", XL(19,150), 0xffffffff, PPCCOM, {0}},
+-{"ics", XL(19,150), 0xffffffff, PWRCOM, {0}},
+-
+-{"crclr", XL(19,193), XL_MASK, PPCCOM, {BT, BAT, BBA}},
+-{"crxor", XL(19,193), XL_MASK, COM, {BT, BA, BB}},
+-
+-{"dnh", X(19,198), X_MASK, E500MC, {DUI, DUIS}},
+-
+-{"crnand", XL(19,225), XL_MASK, COM, {BT, BA, BB}},
+-
+-{"crand", XL(19,257), XL_MASK, COM, {BT, BA, BB}},
+-
+-{"hrfid", XL(19,274), 0xffffffff, POWER5|CELL, {0}},
+-
+-{"crset", XL(19,289), XL_MASK, PPCCOM, {BT, BAT, BBA}},
+-{"creqv", XL(19,289), XL_MASK, COM, {BT, BA, BB}},
+-
+-{"doze", XL(19,402), 0xffffffff, POWER6, {0}},
+-
+-{"crorc", XL(19,417), XL_MASK, COM, {BT, BA, BB}},
+-
+-{"nap", XL(19,434), 0xffffffff, POWER6, {0}},
+-
+-{"crmove", XL(19,449), XL_MASK, PPCCOM, {BT, BA, BBA}},
+-{"cror", XL(19,449), XL_MASK, COM, {BT, BA, BB}},
+-
+-{"sleep", XL(19,466), 0xffffffff, POWER6, {0}},
+-{"rvwinkle", XL(19,498), 0xffffffff, POWER6, {0}},
+-
+-{"bctr", XLO(19,BOU,528,0), XLBOBIBB_MASK, COM, {0}},
+-{"bctrl", XLO(19,BOU,528,1), XLBOBIBB_MASK, COM, {0}},
+-
+-{"bgectr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bgectr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnlctr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bnlctr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bgectrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bgectrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnlctrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bnlctrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"blectr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"blectr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bngctr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bngctr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"blectrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"blectrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bngctrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bngctrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnectr", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bnectr-", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnectrl", XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bnectrl-",XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnsctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bnsctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnuctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bnuctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnsctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bnsctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnuctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bnuctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bgectr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnlctr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bgectrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnlctrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"blectr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bngctr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"blectrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bngctrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnectr+", XLOCB(19,BOFP,CBEQ,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnectrl+",XLOCB(19,BOFP,CBEQ,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnsctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnuctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnsctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bnuctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bgectr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnlctr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bgectrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnlctrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"blectr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bngctr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"blectrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bngctrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnectr-", XLOCB(19,BOFM4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnectrl-",XLOCB(19,BOFM4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnsctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnuctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnsctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnuctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bgectr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnlctr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bgectrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnlctrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"blectr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bngctr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"blectrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bngctrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnectr+", XLOCB(19,BOFP4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnectrl+",XLOCB(19,BOFP4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnsctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnuctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnsctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bnuctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bltctr", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bltctr-", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bltctrl", XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bltctrl-",XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bgtctr", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bgtctr-", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bgtctrl", XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bgtctrl-",XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"beqctr", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"beqctr-", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"beqctrl", XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"beqctrl-",XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bsoctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bsoctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bunctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bunctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bsoctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bsoctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bunctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, {CR}},
+-{"bunctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bltctr+", XLOCB(19,BOTP,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bltctrl+",XLOCB(19,BOTP,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bgtctr+", XLOCB(19,BOTP,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bgtctrl+",XLOCB(19,BOTP,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"beqctr+", XLOCB(19,BOTP,CBEQ,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"beqctrl+",XLOCB(19,BOTP,CBEQ,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bsoctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bunctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bsoctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bunctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
+-{"bltctr-", XLOCB(19,BOTM4,CBLT,528,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bltctrl-",XLOCB(19,BOTM4,CBLT,528,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bgtctr-", XLOCB(19,BOTM4,CBGT,528,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bgtctrl-",XLOCB(19,BOTM4,CBGT,528,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"beqctr-", XLOCB(19,BOTM4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"beqctrl-",XLOCB(19,BOTM4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bsoctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bunctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bsoctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bunctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bltctr+", XLOCB(19,BOTP4,CBLT,528,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bltctrl+",XLOCB(19,BOTP4,CBLT,528,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bgtctr+", XLOCB(19,BOTP4,CBGT,528,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bgtctrl+",XLOCB(19,BOTP4,CBGT,528,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"beqctr+", XLOCB(19,BOTP4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"beqctrl+",XLOCB(19,BOTP4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bsoctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bunctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bsoctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, {CR}},
+-{"bunctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, {CR}},
+-
+-{"bfctr", XLO(19,BOF,528,0), XLBOBB_MASK, PPCCOM, {BI}},
+-{"bfctr-", XLO(19,BOF,528,0), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"bfctrl", XLO(19,BOF,528,1), XLBOBB_MASK, PPCCOM, {BI}},
+-{"bfctrl-", XLO(19,BOF,528,1), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"bfctr+", XLO(19,BOFP,528,0), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"bfctrl+", XLO(19,BOFP,528,1), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"bfctr-", XLO(19,BOFM4,528,0), XLBOBB_MASK, POWER4, {BI}},
+-{"bfctrl-", XLO(19,BOFM4,528,1), XLBOBB_MASK, POWER4, {BI}},
+-{"bfctr+", XLO(19,BOFP4,528,0), XLBOBB_MASK, POWER4, {BI}},
+-{"bfctrl+", XLO(19,BOFP4,528,1), XLBOBB_MASK, POWER4, {BI}},
+-{"btctr", XLO(19,BOT,528,0), XLBOBB_MASK, PPCCOM, {BI}},
+-{"btctr-", XLO(19,BOT,528,0), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"btctrl", XLO(19,BOT,528,1), XLBOBB_MASK, PPCCOM, {BI}},
+-{"btctrl-", XLO(19,BOT,528,1), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"btctr+", XLO(19,BOTP,528,0), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"btctrl+", XLO(19,BOTP,528,1), XLBOBB_MASK, NOPOWER4, {BI}},
+-{"btctr-", XLO(19,BOTM4,528,0), XLBOBB_MASK, POWER4, {BI}},
+-{"btctrl-", XLO(19,BOTM4,528,1), XLBOBB_MASK, POWER4, {BI}},
+-{"btctr+", XLO(19,BOTP4,528,0), XLBOBB_MASK, POWER4, {BI}},
+-{"btctrl+", XLO(19,BOTP4,528,1), XLBOBB_MASK, POWER4, {BI}},
+-
+-{"bcctr-", XLYLK(19,528,0,0), XLYBB_MASK, PPCCOM, {BOE, BI}},
+-{"bcctrl-", XLYLK(19,528,0,1), XLYBB_MASK, PPCCOM, {BOE, BI}},
+-{"bcctr+", XLYLK(19,528,1,0), XLYBB_MASK, PPCCOM, {BOE, BI}},
+-{"bcctrl+", XLYLK(19,528,1,1), XLYBB_MASK, PPCCOM, {BOE, BI}},
+-{"bcctr", XLLK(19,528,0), XLBH_MASK, PPCCOM, {BO, BI, BH}},
+-{"bcc", XLLK(19,528,0), XLBB_MASK, PWRCOM, {BO, BI}},
+-{"bcctrl", XLLK(19,528,1), XLBH_MASK, PPCCOM, {BO, BI, BH}},
+-{"bccl", XLLK(19,528,1), XLBB_MASK, PWRCOM, {BO, BI}},
+-
+-{"bcctre", XLLK(19,529,0), XLBB_MASK, BOOKE64, {BO, BI}},
+-{"bcctrel", XLLK(19,529,1), XLBB_MASK, BOOKE64, {BO, BI}},
+-
+-{"rlwimi", M(20,0), M_MASK, PPCCOM, {RA, RS, SH, MBE, ME}},
+-{"rlimi", M(20,0), M_MASK, PWRCOM, {RA, RS, SH, MBE, ME}},
+-
+-{"rlwimi.", M(20,1), M_MASK, PPCCOM, {RA, RS, SH, MBE, ME}},
+-{"rlimi.", M(20,1), M_MASK, PWRCOM, {RA, RS, SH, MBE, ME}},
+-
+-{"rotlwi", MME(21,31,0), MMBME_MASK, PPCCOM, {RA, RS, SH}},
+-{"clrlwi", MME(21,31,0), MSHME_MASK, PPCCOM, {RA, RS, MB}},
+-{"rlwinm", M(21,0), M_MASK, PPCCOM, {RA, RS, SH, MBE, ME}},
+-{"rlinm", M(21,0), M_MASK, PWRCOM, {RA, RS, SH, MBE, ME}},
+-{"rotlwi.", MME(21,31,1), MMBME_MASK, PPCCOM, {RA, RS, SH}},
+-{"clrlwi.", MME(21,31,1), MSHME_MASK, PPCCOM, {RA, RS, MB}},
+-{"rlwinm.", M(21,1), M_MASK, PPCCOM, {RA, RS, SH, MBE, ME}},
+-{"rlinm.", M(21,1), M_MASK, PWRCOM, {RA, RS, SH, MBE, ME}},
+-
+-{"rlmi", M(22,0), M_MASK, M601, {RA, RS, RB, MBE, ME}},
+-{"be", B(22,0,0), B_MASK, BOOKE64, {LI}},
+-{"bel", B(22,0,1), B_MASK, BOOKE64, {LI}},
+-{"rlmi.", M(22,1), M_MASK, M601, {RA, RS, RB, MBE, ME}},
+-{"bea", B(22,1,0), B_MASK, BOOKE64, {LIA}},
+-{"bela", B(22,1,1), B_MASK, BOOKE64, {LIA}},
+-
+-{"rotlw", MME(23,31,0), MMBME_MASK, PPCCOM, {RA, RS, RB}},
+-{"rlwnm", M(23,0), M_MASK, PPCCOM, {RA, RS, RB, MBE, ME}},
+-{"rlnm", M(23,0), M_MASK, PWRCOM, {RA, RS, RB, MBE, ME}},
+-{"rotlw.", MME(23,31,1), MMBME_MASK, PPCCOM, {RA, RS, RB}},
+-{"rlwnm.", M(23,1), M_MASK, PPCCOM, {RA, RS, RB, MBE, ME}},
+-{"rlnm.", M(23,1), M_MASK, PWRCOM, {RA, RS, RB, MBE, ME}},
+-
+-{"nop", OP(24), 0xffffffff, PPCCOM, {0}},
+-{"ori", OP(24), OP_MASK, PPCCOM, {RA, RS, UI}},
+-{"oril", OP(24), OP_MASK, PWRCOM, {RA, RS, UI}},
+-
+-{"oris", OP(25), OP_MASK, PPCCOM, {RA, RS, UI}},
+-{"oriu", OP(25), OP_MASK, PWRCOM, {RA, RS, UI}},
+-
+-{"xori", OP(26), OP_MASK, PPCCOM, {RA, RS, UI}},
+-{"xoril", OP(26), OP_MASK, PWRCOM, {RA, RS, UI}},
+-
+-{"xoris", OP(27), OP_MASK, PPCCOM, {RA, RS, UI}},
+-{"xoriu", OP(27), OP_MASK, PWRCOM, {RA, RS, UI}},
+-
+-{"andi.", OP(28), OP_MASK, PPCCOM, {RA, RS, UI}},
+-{"andil.", OP(28), OP_MASK, PWRCOM, {RA, RS, UI}},
+-
+-{"andis.", OP(29), OP_MASK, PPCCOM, {RA, RS, UI}},
+-{"andiu.", OP(29), OP_MASK, PWRCOM, {RA, RS, UI}},
+-
+-{"rotldi", MD(30,0,0), MDMB_MASK, PPC64, {RA, RS, SH6}},
+-{"clrldi", MD(30,0,0), MDSH_MASK, PPC64, {RA, RS, MB6}},
+-{"rldicl", MD(30,0,0), MD_MASK, PPC64, {RA, RS, SH6, MB6}},
+-{"rotldi.", MD(30,0,1), MDMB_MASK, PPC64, {RA, RS, SH6}},
+-{"clrldi.", MD(30,0,1), MDSH_MASK, PPC64, {RA, RS, MB6}},
+-{"rldicl.", MD(30,0,1), MD_MASK, PPC64, {RA, RS, SH6, MB6}},
+-
+-{"rldicr", MD(30,1,0), MD_MASK, PPC64, {RA, RS, SH6, ME6}},
+-{"rldicr.", MD(30,1,1), MD_MASK, PPC64, {RA, RS, SH6, ME6}},
+-
+-{"rldic", MD(30,2,0), MD_MASK, PPC64, {RA, RS, SH6, MB6}},
+-{"rldic.", MD(30,2,1), MD_MASK, PPC64, {RA, RS, SH6, MB6}},
+-
+-{"rldimi", MD(30,3,0), MD_MASK, PPC64, {RA, RS, SH6, MB6}},
+-{"rldimi.", MD(30,3,1), MD_MASK, PPC64, {RA, RS, SH6, MB6}},
+-
+-{"rotld", MDS(30,8,0), MDSMB_MASK, PPC64, {RA, RS, RB}},
+-{"rldcl", MDS(30,8,0), MDS_MASK, PPC64, {RA, RS, RB, MB6}},
+-{"rotld.", MDS(30,8,1), MDSMB_MASK, PPC64, {RA, RS, RB}},
+-{"rldcl.", MDS(30,8,1), MDS_MASK, PPC64, {RA, RS, RB, MB6}},
+-
+-{"rldcr", MDS(30,9,0), MDS_MASK, PPC64, {RA, RS, RB, ME6}},
+-{"rldcr.", MDS(30,9,1), MDS_MASK, PPC64, {RA, RS, RB, ME6}},
+-
+-{"cmpw", XOPL(31,0,0), XCMPL_MASK, PPCCOM, {OBF, RA, RB}},
+-{"cmpd", XOPL(31,0,1), XCMPL_MASK, PPC64, {OBF, RA, RB}},
+-{"cmp", X(31,0), XCMP_MASK, PPC, {BF, L, RA, RB}},
+-{"cmp", X(31,0), XCMPL_MASK, PWRCOM, {BF, RA, RB}},
+-
+-{"twlgt", XTO(31,4,TOLGT), XTO_MASK, PPCCOM, {RA, RB}},
+-{"tlgt", XTO(31,4,TOLGT), XTO_MASK, PWRCOM, {RA, RB}},
+-{"twllt", XTO(31,4,TOLLT), XTO_MASK, PPCCOM, {RA, RB}},
+-{"tllt", XTO(31,4,TOLLT), XTO_MASK, PWRCOM, {RA, RB}},
+-{"tweq", XTO(31,4,TOEQ), XTO_MASK, PPCCOM, {RA, RB}},
+-{"teq", XTO(31,4,TOEQ), XTO_MASK, PWRCOM, {RA, RB}},
+-{"twlge", XTO(31,4,TOLGE), XTO_MASK, PPCCOM, {RA, RB}},
+-{"tlge", XTO(31,4,TOLGE), XTO_MASK, PWRCOM, {RA, RB}},
+-{"twlnl", XTO(31,4,TOLNL), XTO_MASK, PPCCOM, {RA, RB}},
+-{"tlnl", XTO(31,4,TOLNL), XTO_MASK, PWRCOM, {RA, RB}},
+-{"twlle", XTO(31,4,TOLLE), XTO_MASK, PPCCOM, {RA, RB}},
+-{"tlle", XTO(31,4,TOLLE), XTO_MASK, PWRCOM, {RA, RB}},
+-{"twlng", XTO(31,4,TOLNG), XTO_MASK, PPCCOM, {RA, RB}},
+-{"tlng", XTO(31,4,TOLNG), XTO_MASK, PWRCOM, {RA, RB}},
+-{"twgt", XTO(31,4,TOGT), XTO_MASK, PPCCOM, {RA, RB}},
+-{"tgt", XTO(31,4,TOGT), XTO_MASK, PWRCOM, {RA, RB}},
+-{"twge", XTO(31,4,TOGE), XTO_MASK, PPCCOM, {RA, RB}},
+-{"tge", XTO(31,4,TOGE), XTO_MASK, PWRCOM, {RA, RB}},
+-{"twnl", XTO(31,4,TONL), XTO_MASK, PPCCOM, {RA, RB}},
+-{"tnl", XTO(31,4,TONL), XTO_MASK, PWRCOM, {RA, RB}},
+-{"twlt", XTO(31,4,TOLT), XTO_MASK, PPCCOM, {RA, RB}},
+-{"tlt", XTO(31,4,TOLT), XTO_MASK, PWRCOM, {RA, RB}},
+-{"twle", XTO(31,4,TOLE), XTO_MASK, PPCCOM, {RA, RB}},
+-{"tle", XTO(31,4,TOLE), XTO_MASK, PWRCOM, {RA, RB}},
+-{"twng", XTO(31,4,TONG), XTO_MASK, PPCCOM, {RA, RB}},
+-{"tng", XTO(31,4,TONG), XTO_MASK, PWRCOM, {RA, RB}},
+-{"twne", XTO(31,4,TONE), XTO_MASK, PPCCOM, {RA, RB}},
+-{"tne", XTO(31,4,TONE), XTO_MASK, PWRCOM, {RA, RB}},
+-{"trap", XTO(31,4,TOU), 0xffffffff, PPCCOM, {0}},
+-{"tw", X(31,4), X_MASK, PPCCOM, {TO, RA, RB}},
+-{"t", X(31,4), X_MASK, PWRCOM, {TO, RA, RB}},
+-
+-{"lvsl", X(31,6), X_MASK, PPCVEC, {VD, RA, RB}},
+-{"lvebx", X(31,7), X_MASK, PPCVEC, {VD, RA, RB}},
+-{"lbfcmx", APU(31,7,0), APU_MASK, PPC405, {FCRT, RA, RB}},
+-
+-{"subfc", XO(31,8,0,0), XO_MASK, PPCCOM, {RT, RA, RB}},
+-{"sf", XO(31,8,0,0), XO_MASK, PWRCOM, {RT, RA, RB}},
+-{"subc", XO(31,8,0,0), XO_MASK, PPC, {RT, RB, RA}},
+-{"subfc.", XO(31,8,0,1), XO_MASK, PPCCOM, {RT, RA, RB}},
+-{"sf.", XO(31,8,0,1), XO_MASK, PWRCOM, {RT, RA, RB}},
+-{"subc.", XO(31,8,0,1), XO_MASK, PPCCOM, {RT, RB, RA}},
+-
+-{"mulhdu", XO(31,9,0,0), XO_MASK, PPC64, {RT, RA, RB}},
+-{"mulhdu.", XO(31,9,0,1), XO_MASK, PPC64, {RT, RA, RB}},
+-
+-{"addc", XO(31,10,0,0), XO_MASK, PPCCOM, {RT, RA, RB}},
+-{"a", XO(31,10,0,0), XO_MASK, PWRCOM, {RT, RA, RB}},
+-{"addc.", XO(31,10,0,1), XO_MASK, PPCCOM, {RT, RA, RB}},
+-{"a.", XO(31,10,0,1), XO_MASK, PWRCOM, {RT, RA, RB}},
+-
+-{"mulhwu", XO(31,11,0,0), XO_MASK, PPC, {RT, RA, RB}},
+-{"mulhwu.", XO(31,11,0,1), XO_MASK, PPC, {RT, RA, RB}},
+-
+-{"isellt", X(31,15), X_MASK, PPCISEL, {RT, RA, RB}},
+-
+-{"mfcr", XFXM(31,19,0,0), XRARB_MASK, NOPOWER4|COM, {RT}},
+-{"mfcr", XFXM(31,19,0,0), XFXFXM_MASK, POWER4, {RT, FXM4}},
+-{"mfocrf", XFXM(31,19,0,1), XFXFXM_MASK, COM, {RT, FXM}},
+-
+-{"lwarx", X(31,20), XEH_MASK, PPC, {RT, RA0, RB, EH}},
+-
+-{"ldx", X(31,21), X_MASK, PPC64, {RT, RA0, RB}},
+-
+-{"icbt", X(31,22), X_MASK, BOOKE|PPCE300, {CT, RA, RB}},
+-
+-{"lwzx", X(31,23), X_MASK, PPCCOM, {RT, RA0, RB}},
+-{"lx", X(31,23), X_MASK, PWRCOM, {RT, RA, RB}},
+-
+-{"slw", XRC(31,24,0), X_MASK, PPCCOM, {RA, RS, RB}},
+-{"sl", XRC(31,24,0), X_MASK, PWRCOM, {RA, RS, RB}},
+-{"slw.", XRC(31,24,1), X_MASK, PPCCOM, {RA, RS, RB}},
+-{"sl.", XRC(31,24,1), X_MASK, PWRCOM, {RA, RS, RB}},
+-
+-{"cntlzw", XRC(31,26,0), XRB_MASK, PPCCOM, {RA, RS}},
+-{"cntlz", XRC(31,26,0), XRB_MASK, PWRCOM, {RA, RS}},
+-{"cntlzw.", XRC(31,26,1), XRB_MASK, PPCCOM, {RA, RS}},
+-{"cntlz.", XRC(31,26,1), XRB_MASK, PWRCOM, {RA, RS}},
+-
+-{"sld", XRC(31,27,0), X_MASK, PPC64, {RA, RS, RB}},
+-{"sld.", XRC(31,27,1), X_MASK, PPC64, {RA, RS, RB}},
+-
+-{"and", XRC(31,28,0), X_MASK, COM, {RA, RS, RB}},
+-{"and.", XRC(31,28,1), X_MASK, COM, {RA, RS, RB}},
+-
+-{"maskg", XRC(31,29,0), X_MASK, M601, {RA, RS, RB}},
+-{"maskg.", XRC(31,29,1), X_MASK, M601, {RA, RS, RB}},
+-
+-{"ldepx", X(31,29), X_MASK, E500MC, {RT, RA, RB}},
+-
+-{"icbte", X(31,30), X_MASK, BOOKE64, {CT, RA, RB}},
+-
+-{"lwzxe", X(31,31), X_MASK, BOOKE64, {RT, RA0, RB}},
+-{"lwepx", X(31,31), X_MASK, E500MC, {RT, RA, RB}},
+-
+-{"cmplw", XOPL(31,32,0), XCMPL_MASK, PPCCOM, {OBF, RA, RB}},
+-{"cmpld", XOPL(31,32,1), XCMPL_MASK, PPC64, {OBF, RA, RB}},
+-{"cmpl", X(31,32), XCMP_MASK, PPC, {BF, L, RA, RB}},
+-{"cmpl", X(31,32), XCMPL_MASK, PWRCOM, {BF, RA, RB}},
+-
+-{"lvsr", X(31,38), X_MASK, PPCVEC, {VD, RA, RB}},
+-{"lvehx", X(31,39), X_MASK, PPCVEC, {VD, RA, RB}},
+-{"lhfcmx", APU(31,39,0), APU_MASK, PPC405, {FCRT, RA, RB}},
+-
+-{"iselgt", X(31,47), X_MASK, PPCISEL, {RT, RA, RB}},
+-
+-{"lvewx", X(31,71), X_MASK, PPCVEC, {VD, RA, RB}},
+-
+-{"iseleq", X(31,79), X_MASK, PPCISEL, {RT, RA, RB}},
+-
+-{"isel", XISEL(31,15), XISEL_MASK, PPCISEL, {RT, RA, RB, CRB}},
+-
+-{"subf", XO(31,40,0,0), XO_MASK, PPC, {RT, RA, RB}},
+-{"sub", XO(31,40,0,0), XO_MASK, PPC, {RT, RB, RA}},
+-{"subf.", XO(31,40,0,1), XO_MASK, PPC, {RT, RA, RB}},
+-{"sub.", XO(31,40,0,1), XO_MASK, PPC, {RT, RB, RA}},
+-
+-{"ldux", X(31,53), X_MASK, PPC64, {RT, RAL, RB}},
+-
+-{"dcbst", X(31,54), XRT_MASK, PPC, {RA, RB}},
+-
+-{"lwzux", X(31,55), X_MASK, PPCCOM, {RT, RAL, RB}},
+-{"lux", X(31,55), X_MASK, PWRCOM, {RT, RA, RB}},
+-
+-{"cntlzd", XRC(31,58,0), XRB_MASK, PPC64, {RA, RS}},
+-{"cntlzd.", XRC(31,58,1), XRB_MASK, PPC64, {RA, RS}},
+-
+-{"andc", XRC(31,60,0), X_MASK, COM, {RA, RS, RB}},
+-{"andc.", XRC(31,60,1), X_MASK, COM, {RA, RS, RB}},
+-
+-{"dcbste", X(31,62), XRT_MASK, BOOKE64, {RA, RB}},
+-
+-{"wait", X(31,62), 0xffffffff, E500MC, {0}},
+-
+-{"lwzuxe", X(31,63), X_MASK, BOOKE64, {RT, RAL, RB}},
+-
+-{"dcbstep", XRT(31,63,0), XRT_MASK, E500MC, {RA, RB}},
+-
+-{"tdlgt", XTO(31,68,TOLGT), XTO_MASK, PPC64, {RA, RB}},
+-{"tdllt", XTO(31,68,TOLLT), XTO_MASK, PPC64, {RA, RB}},
+-{"tdeq", XTO(31,68,TOEQ), XTO_MASK, PPC64, {RA, RB}},
+-{"tdlge", XTO(31,68,TOLGE), XTO_MASK, PPC64, {RA, RB}},
+-{"tdlnl", XTO(31,68,TOLNL), XTO_MASK, PPC64, {RA, RB}},
+-{"tdlle", XTO(31,68,TOLLE), XTO_MASK, PPC64, {RA, RB}},
+-{"tdlng", XTO(31,68,TOLNG), XTO_MASK, PPC64, {RA, RB}},
+-{"tdgt", XTO(31,68,TOGT), XTO_MASK, PPC64, {RA, RB}},
+-{"tdge", XTO(31,68,TOGE), XTO_MASK, PPC64, {RA, RB}},
+-{"tdnl", XTO(31,68,TONL), XTO_MASK, PPC64, {RA, RB}},
+-{"tdlt", XTO(31,68,TOLT), XTO_MASK, PPC64, {RA, RB}},
+-{"tdle", XTO(31,68,TOLE), XTO_MASK, PPC64, {RA, RB}},
+-{"tdng", XTO(31,68,TONG), XTO_MASK, PPC64, {RA, RB}},
+-{"tdne", XTO(31,68,TONE), XTO_MASK, PPC64, {RA, RB}},
+-{"td", X(31,68), X_MASK, PPC64, {TO, RA, RB}},
+-
+-{"lwfcmx", APU(31,71,0), APU_MASK, PPC405, {FCRT, RA, RB}},
+-{"mulhd", XO(31,73,0,0), XO_MASK, PPC64, {RT, RA, RB}},
+-{"mulhd.", XO(31,73,0,1), XO_MASK, PPC64, {RT, RA, RB}},
+-
+-{"mulhw", XO(31,75,0,0), XO_MASK, PPC, {RT, RA, RB}},
+-{"mulhw.", XO(31,75,0,1), XO_MASK, PPC, {RT, RA, RB}},
+-
+-{"dlmzb", XRC(31,78,0), X_MASK, PPC403|PPC440, {RA, RS, RB}},
+-{"dlmzb.", XRC(31,78,1), X_MASK, PPC403|PPC440, {RA, RS, RB}},
+-
+-{"mtsrd", X(31,82), XRB_MASK|(1<<20), PPC64, {SR, RS}},
+-
+-{"mfmsr", X(31,83), XRARB_MASK, COM, {RT}},
+-
+-{"ldarx", X(31,84), XEH_MASK, PPC64, {RT, RA0, RB, EH}},
+-
+-{"dcbfl", XOPL(31,86,1), XRT_MASK, POWER5, {RA, RB}},
+-{"dcbf", X(31,86), XLRT_MASK, PPC, {RA, RB, L}},
+-
+-{"lbzx", X(31,87), X_MASK, COM, {RT, RA0, RB}},
+-
+-{"dcbfe", X(31,94), XRT_MASK, BOOKE64, {RA, RB}},
+-
+-{"lbzxe", X(31,95), X_MASK, BOOKE64, {RT, RA0, RB}},
+-{"lbepx", X(31,95), X_MASK, E500MC, {RT, RA, RB}},
+-
+-{"lvx", X(31,103), X_MASK, PPCVEC, {VD, RA, RB}},
+-{"lqfcmx", APU(31,103,0), APU_MASK, PPC405, {FCRT, RA, RB}},
+-
+-{"neg", XO(31,104,0,0), XORB_MASK, COM, {RT, RA}},
+-{"neg.", XO(31,104,0,1), XORB_MASK, COM, {RT, RA}},
+-
+-{"mul", XO(31,107,0,0), XO_MASK, M601, {RT, RA, RB}},
+-{"mul.", XO(31,107,0,1), XO_MASK, M601, {RT, RA, RB}},
+-
+-{"mtsrdin", X(31,114), XRA_MASK, PPC64, {RS, RB}},
+-
+-{"clf", X(31,118), XTO_MASK, POWER, {RA, RB}},
+-
+-{"lbzux", X(31,119), X_MASK, COM, {RT, RAL, RB}},
+-
+-{"popcntb", X(31,122), XRB_MASK, POWER5, {RA, RS}},
+-
+-{"not", XRC(31,124,0), X_MASK, COM, {RA, RS, RBS}},
+-{"nor", XRC(31,124,0), X_MASK, COM, {RA, RS, RB}},
+-{"not.", XRC(31,124,1), X_MASK, COM, {RA, RS, RBS}},
+-{"nor.", XRC(31,124,1), X_MASK, COM, {RA, RS, RB}},
+-
+-{"lwarxe", X(31,126), X_MASK, BOOKE64, {RT, RA0, RB}},
+-
+-{"lbzuxe", X(31,127), X_MASK, BOOKE64, {RT, RAL, RB}},
+-
+-{"dcbfep", XRT(31,127,0), XRT_MASK, E500MC, {RA, RB}},
+-
+-{"wrtee", X(31,131), XRARB_MASK, PPC403|BOOKE, {RS}},
+-
+-{"dcbtstls", X(31,134), X_MASK, PPCCHLK, {CT, RA, RB}},
+-
+-{"stvebx", X(31,135), X_MASK, PPCVEC, {VS, RA, RB}},
+-{"stbfcmx", APU(31,135,0), APU_MASK, PPC405, {FCRT, RA, RB}},
+-
+-{"subfe", XO(31,136,0,0), XO_MASK, PPCCOM, {RT, RA, RB}},
+-{"sfe", XO(31,136,0,0), XO_MASK, PWRCOM, {RT, RA, RB}},
+-{"subfe.", XO(31,136,0,1), XO_MASK, PPCCOM, {RT, RA, RB}},
+-{"sfe.", XO(31,136,0,1), XO_MASK, PWRCOM, {RT, RA, RB}},
+-
+-{"adde", XO(31,138,0,0), XO_MASK, PPCCOM, {RT, RA, RB}},
+-{"ae", XO(31,138,0,0), XO_MASK, PWRCOM, {RT, RA, RB}},
+-{"adde.", XO(31,138,0,1), XO_MASK, PPCCOM, {RT, RA, RB}},
+-{"ae.", XO(31,138,0,1), XO_MASK, PWRCOM, {RT, RA, RB}},
+-
+-{"dcbtstlse", X(31,142), X_MASK, PPCCHLK64, {CT, RA, RB}},
+-
+-{"mtcr", XFXM(31,144,0xff,0), XRARB_MASK, COM, {RS}},
+-{"mtcrf", XFXM(31,144,0,0), XFXFXM_MASK, COM, {FXM, RS}},
+-{"mtocrf", XFXM(31,144,0,1), XFXFXM_MASK, COM, {FXM, RS}},
+-
+-{"mtmsr", X(31,146), XRLARB_MASK, COM, {RS, A_L}},
+-
+-{"stdx", X(31,149), X_MASK, PPC64, {RS, RA0, RB}},
+-
+-{"stwcx.", XRC(31,150,1), X_MASK, PPC, {RS, RA0, RB}},
+-
+-{"stwx", X(31,151), X_MASK, PPCCOM, {RS, RA0, RB}},
+-{"stx", X(31,151), X_MASK, PWRCOM, {RS, RA, RB}},
+-
+-{"slq", XRC(31,152,0), X_MASK, M601, {RA, RS, RB}},
+-{"slq.", XRC(31,152,1), X_MASK, M601, {RA, RS, RB}},
+-
+-{"sle", XRC(31,153,0), X_MASK, M601, {RA, RS, RB}},
+-{"sle.", XRC(31,153,1), X_MASK, M601, {RA, RS, RB}},
+-
+-{"prtyw", X(31,154), XRB_MASK, POWER6, {RA, RS}},
+-
+-{"stdepx", X(31,157), X_MASK, E500MC, {RS, RA, RB}},
+-
+-{"stwcxe.", XRC(31,158,1), X_MASK, BOOKE64, {RS, RA0, RB}},
+-
+-{"stwxe", X(31,159), X_MASK, BOOKE64, {RS, RA0, RB}},
+-{"stwepx", X(31,159), X_MASK, E500MC, {RS, RA, RB}},
+-
+-{"wrteei", X(31,163), XE_MASK, PPC403|BOOKE, {E}},
+-
+-{"dcbtls", X(31,166), X_MASK, PPCCHLK, {CT, RA, RB}},
+-
+-{"stvehx", X(31,167), X_MASK, PPCVEC, {VS, RA, RB}},
+-{"sthfcmx", APU(31,167,0), APU_MASK, PPC405, {FCRT, RA, RB}},
+-
+-{"dcbtlse", X(31,174), X_MASK, PPCCHLK64, {CT, RA, RB}},
+-
+-{"mtmsrd", X(31,178), XRLARB_MASK, PPC64, {RS, A_L}},
+-
+-{"stdux", X(31,181), X_MASK, PPC64, {RS, RAS, RB}},
+-
+-{"stwux", X(31,183), X_MASK, PPCCOM, {RS, RAS, RB}},
+-{"stux", X(31,183), X_MASK, PWRCOM, {RS, RA0, RB}},
+-
+-{"sliq", XRC(31,184,0), X_MASK, M601, {RA, RS, SH}},
+-{"sliq.", XRC(31,184,1), X_MASK, M601, {RA, RS, SH}},
+-
+-{"prtyd", X(31,186), XRB_MASK, POWER6, {RA, RS}},
+-
+-{"stwuxe", X(31,191), X_MASK, BOOKE64, {RS, RAS, RB}},
+-
+-{"stvewx", X(31,199), X_MASK, PPCVEC, {VS, RA, RB}},
+-{"stwfcmx", APU(31,199,0), APU_MASK, PPC405, {FCRT, RA, RB}},
+-
+-{"subfze", XO(31,200,0,0), XORB_MASK, PPCCOM, {RT, RA}},
+-{"sfze", XO(31,200,0,0), XORB_MASK, PWRCOM, {RT, RA}},
+-{"subfze.", XO(31,200,0,1), XORB_MASK, PPCCOM, {RT, RA}},
+-{"sfze.", XO(31,200,0,1), XORB_MASK, PWRCOM, {RT, RA}},
+-
+-{"addze", XO(31,202,0,0), XORB_MASK, PPCCOM, {RT, RA}},
+-{"aze", XO(31,202,0,0), XORB_MASK, PWRCOM, {RT, RA}},
+-{"addze.", XO(31,202,0,1), XORB_MASK, PPCCOM, {RT, RA}},
+-{"aze.", XO(31,202,0,1), XORB_MASK, PWRCOM, {RT, RA}},
+-
+-{"msgsnd", XRTRA(31,206,0,0),XRTRA_MASK,E500MC, {RB}},
+-
+-{"mtsr", X(31,210), XRB_MASK|(1<<20), COM32, {SR, RS}},
+-
+-{"stdcx.", XRC(31,214,1), X_MASK, PPC64, {RS, RA0, RB}},
+-
+-{"stbx", X(31,215), X_MASK, COM, {RS, RA0, RB}},
+-
+-{"sllq", XRC(31,216,0), X_MASK, M601, {RA, RS, RB}},
+-{"sllq.", XRC(31,216,1), X_MASK, M601, {RA, RS, RB}},
+-
+-{"sleq", XRC(31,217,0), X_MASK, M601, {RA, RS, RB}},
+-{"sleq.", XRC(31,217,1), X_MASK, M601, {RA, RS, RB}},
+-
+-{"stbxe", X(31,223), X_MASK, BOOKE64, {RS, RA0, RB}},
+-{"stbepx", X(31,223), X_MASK, E500MC, {RS, RA, RB}},
+-
+-{"icblc", X(31,230), X_MASK, PPCCHLK, {CT, RA, RB}},
+-
+-{"stvx", X(31,231), X_MASK, PPCVEC, {VS, RA, RB}},
+-{"stqfcmx", APU(31,231,0), APU_MASK, PPC405, {FCRT, RA, RB}},
+-
+-{"subfme", XO(31,232,0,0), XORB_MASK, PPCCOM, {RT, RA}},
+-{"sfme", XO(31,232,0,0), XORB_MASK, PWRCOM, {RT, RA}},
+-{"subfme.", XO(31,232,0,1), XORB_MASK, PPCCOM, {RT, RA}},
+-{"sfme.", XO(31,232,0,1), XORB_MASK, PWRCOM, {RT, RA}},
+-
+-{"mulld", XO(31,233,0,0), XO_MASK, PPC64, {RT, RA, RB}},
+-{"mulld.", XO(31,233,0,1), XO_MASK, PPC64, {RT, RA, RB}},
+-
+-{"addme", XO(31,234,0,0), XORB_MASK, PPCCOM, {RT, RA}},
+-{"ame", XO(31,234,0,0), XORB_MASK, PWRCOM, {RT, RA}},
+-{"addme.", XO(31,234,0,1), XORB_MASK, PPCCOM, {RT, RA}},
+-{"ame.", XO(31,234,0,1), XORB_MASK, PWRCOM, {RT, RA}},
+-
+-{"mullw", XO(31,235,0,0), XO_MASK, PPCCOM, {RT, RA, RB}},
+-{"muls", XO(31,235,0,0), XO_MASK, PWRCOM, {RT, RA, RB}},
+-{"mullw.", XO(31,235,0,1), XO_MASK, PPCCOM, {RT, RA, RB}},
+-{"muls.", XO(31,235,0,1), XO_MASK, PWRCOM, {RT, RA, RB}},
+-
+-{"msgclr", XRTRA(31,238,0,0),XRTRA_MASK,E500MC, {RB}},
+-{"icblce", X(31,238), X_MASK, PPCCHLK64, {CT, RA, RB}},
+-{"mtsrin", X(31,242), XRA_MASK, PPC32, {RS, RB}},
+-{"mtsri", X(31,242), XRA_MASK, POWER32, {RS, RB}},
+-
+-{"dcbtst", X(31,246), X_MASK, PPC, {CT, RA, RB}},
+-
+-{"stbux", X(31,247), X_MASK, COM, {RS, RAS, RB}},
+-
+-{"slliq", XRC(31,248,0), X_MASK, M601, {RA, RS, SH}},
+-{"slliq.", XRC(31,248,1), X_MASK, M601, {RA, RS, SH}},
+-
+-{"dcbtste", X(31,253), X_MASK, BOOKE64, {CT, RA, RB}},
+-
+-{"stbuxe", X(31,255), X_MASK, BOOKE64, {RS, RAS, RB}},
+-
+-{"dcbtstep", XRT(31,255,0), X_MASK, E500MC, {RT, RA, RB}},
+-
+-{"mfdcrx", X(31,259), X_MASK, BOOKE, {RS, RA}},
+-
+-{"icbt", X(31,262), XRT_MASK, PPC403, {RA, RB}},
+-
+-{"ldfcmx", APU(31,263,0), APU_MASK, PPC405, {FCRT, RA, RB}},
+-{"doz", XO(31,264,0,0), XO_MASK, M601, {RT, RA, RB}},
+-{"doz.", XO(31,264,0,1), XO_MASK, M601, {RT, RA, RB}},
+-
+-{"add", XO(31,266,0,0), XO_MASK, PPCCOM, {RT, RA, RB}},
+-{"cax", XO(31,266,0,0), XO_MASK, PWRCOM, {RT, RA, RB}},
+-{"add.", XO(31,266,0,1), XO_MASK, PPCCOM, {RT, RA, RB}},
+-{"cax.", XO(31,266,0,1), XO_MASK, PWRCOM, {RT, RA, RB}},
+-
+-{"ehpriv", X(31,270), 0xffffffff, E500MC, {0}},
+-
+-{"tlbiel", X(31,274), XRTLRA_MASK, POWER4, {RB, L}},
+-
+-{"mfapidi", X(31,275), X_MASK, BOOKE, {RT, RA}},
+-
+-{"lscbx", XRC(31,277,0), X_MASK, M601, {RT, RA, RB}},
+-{"lscbx.", XRC(31,277,1), X_MASK, M601, {RT, RA, RB}},
+-
+-{"dcbt", X(31,278), X_MASK, PPC, {CT, RA, RB}},
+-
+-{"lhzx", X(31,279), X_MASK, COM, {RT, RA0, RB}},
+-
+-{"eqv", XRC(31,284,0), X_MASK, COM, {RA, RS, RB}},
+-{"eqv.", XRC(31,284,1), X_MASK, COM, {RA, RS, RB}},
+-
+-{"dcbte", X(31,286), X_MASK, BOOKE64, {CT, RA, RB}},
+-
+-{"lhzxe", X(31,287), X_MASK, BOOKE64, {RT, RA0, RB}},
+-{"lhepx", X(31,287), X_MASK, E500MC, {RT, RA, RB}},
+-
+-{"mfdcrux", X(31,291), X_MASK, PPC464, {RS, RA}},
+-
+-{"tlbie", X(31,306), XRTLRA_MASK, PPC, {RB, L}},
+-{"tlbi", X(31,306), XRT_MASK, POWER, {RA0, RB}},
+-
+-{"eciwx", X(31,310), X_MASK, PPC, {RT, RA, RB}},
+-
+-{"lhzux", X(31,311), X_MASK, COM, {RT, RAL, RB}},
+-
+-{"xor", XRC(31,316,0), X_MASK, COM, {RA, RS, RB}},
+-{"xor.", XRC(31,316,1), X_MASK, COM, {RA, RS, RB}},
+-
+-{"lhzuxe", X(31,319), X_MASK, BOOKE64, {RT, RAL, RB}},
+-
+-{"dcbtep", XRT(31,319,0), X_MASK, E500MC, {RT, RA, RB}},
+-
+-{"mfexisr", XSPR(31,323, 64), XSPR_MASK, PPC403, {RT}},
+-{"mfexier", XSPR(31,323, 66), XSPR_MASK, PPC403, {RT}},
+-{"mfbr0", XSPR(31,323,128), XSPR_MASK, PPC403, {RT}},
+-{"mfbr1", XSPR(31,323,129), XSPR_MASK, PPC403, {RT}},
+-{"mfbr2", XSPR(31,323,130), XSPR_MASK, PPC403, {RT}},
+-{"mfbr3", XSPR(31,323,131), XSPR_MASK, PPC403, {RT}},
+-{"mfbr4", XSPR(31,323,132), XSPR_MASK, PPC403, {RT}},
+-{"mfbr5", XSPR(31,323,133), XSPR_MASK, PPC403, {RT}},
+-{"mfbr6", XSPR(31,323,134), XSPR_MASK, PPC403, {RT}},
+-{"mfbr7", XSPR(31,323,135), XSPR_MASK, PPC403, {RT}},
+-{"mfbear", XSPR(31,323,144), XSPR_MASK, PPC403, {RT}},
+-{"mfbesr", XSPR(31,323,145), XSPR_MASK, PPC403, {RT}},
+-{"mfiocr", XSPR(31,323,160), XSPR_MASK, PPC403, {RT}},
+-{"mfdmacr0", XSPR(31,323,192), XSPR_MASK, PPC403, {RT}},
+-{"mfdmact0", XSPR(31,323,193), XSPR_MASK, PPC403, {RT}},
+-{"mfdmada0", XSPR(31,323,194), XSPR_MASK, PPC403, {RT}},
+-{"mfdmasa0", XSPR(31,323,195), XSPR_MASK, PPC403, {RT}},
+-{"mfdmacc0", XSPR(31,323,196), XSPR_MASK, PPC403, {RT}},
+-{"mfdmacr1", XSPR(31,323,200), XSPR_MASK, PPC403, {RT}},
+-{"mfdmact1", XSPR(31,323,201), XSPR_MASK, PPC403, {RT}},
+-{"mfdmada1", XSPR(31,323,202), XSPR_MASK, PPC403, {RT}},
+-{"mfdmasa1", XSPR(31,323,203), XSPR_MASK, PPC403, {RT}},
+-{"mfdmacc1", XSPR(31,323,204), XSPR_MASK, PPC403, {RT}},
+-{"mfdmacr2", XSPR(31,323,208), XSPR_MASK, PPC403, {RT}},
+-{"mfdmact2", XSPR(31,323,209), XSPR_MASK, PPC403, {RT}},
+-{"mfdmada2", XSPR(31,323,210), XSPR_MASK, PPC403, {RT}},
+-{"mfdmasa2", XSPR(31,323,211), XSPR_MASK, PPC403, {RT}},
+-{"mfdmacc2", XSPR(31,323,212), XSPR_MASK, PPC403, {RT}},
+-{"mfdmacr3", XSPR(31,323,216), XSPR_MASK, PPC403, {RT}},
+-{"mfdmact3", XSPR(31,323,217), XSPR_MASK, PPC403, {RT}},
+-{"mfdmada3", XSPR(31,323,218), XSPR_MASK, PPC403, {RT}},
+-{"mfdmasa3", XSPR(31,323,219), XSPR_MASK, PPC403, {RT}},
+-{"mfdmacc3", XSPR(31,323,220), XSPR_MASK, PPC403, {RT}},
+-{"mfdmasr", XSPR(31,323,224), XSPR_MASK, PPC403, {RT}},
+-{"mfdcr", X(31,323), X_MASK, PPC403|BOOKE, {RT, SPR}},
+-
+-{"div", XO(31,331,0,0), XO_MASK, M601, {RT, RA, RB}},
+-{"div.", XO(31,331,0,1), XO_MASK, M601, {RT, RA, RB}},
+-
+-{"mfpmr", X(31,334), X_MASK, PPCPMR|PPCE300, {RT, PMR}},
+-
+-{"mfmq", XSPR(31,339, 0), XSPR_MASK, M601, {RT}},
+-{"mfxer", XSPR(31,339, 1), XSPR_MASK, COM, {RT}},
+-{"mfrtcu", XSPR(31,339, 4), XSPR_MASK, COM, {RT}},
+-{"mfrtcl", XSPR(31,339, 5), XSPR_MASK, COM, {RT}},
+-{"mfdec", XSPR(31,339, 6), XSPR_MASK, MFDEC1, {RT}},
+-{"mflr", XSPR(31,339, 8), XSPR_MASK, COM, {RT}},
+-{"mfctr", XSPR(31,339, 9), XSPR_MASK, COM, {RT}},
+-{"mftid", XSPR(31,339, 17), XSPR_MASK, POWER, {RT}},
+-{"mfdsisr", XSPR(31,339, 18), XSPR_MASK, COM, {RT}},
+-{"mfdar", XSPR(31,339, 19), XSPR_MASK, COM, {RT}},
+-{"mfdec", XSPR(31,339, 22), XSPR_MASK, MFDEC2, {RT}},
+-{"mfsdr0", XSPR(31,339, 24), XSPR_MASK, POWER, {RT}},
+-{"mfsdr1", XSPR(31,339, 25), XSPR_MASK, COM, {RT}},
+-{"mfsrr0", XSPR(31,339, 26), XSPR_MASK, COM, {RT}},
+-{"mfsrr1", XSPR(31,339, 27), XSPR_MASK, COM, {RT}},
+-{"mfcfar", XSPR(31,339, 28), XSPR_MASK, POWER6, {RT}},
+-{"mfpid", XSPR(31,339, 48), XSPR_MASK, BOOKE, {RT}},
+-{"mfcsrr0", XSPR(31,339, 58), XSPR_MASK, BOOKE, {RT}},
+-{"mfcsrr1", XSPR(31,339, 59), XSPR_MASK, BOOKE, {RT}},
+-{"mfdear", XSPR(31,339, 61), XSPR_MASK, BOOKE, {RT}},
+-{"mfesr", XSPR(31,339, 62), XSPR_MASK, BOOKE, {RT}},
+-{"mfivpr", XSPR(31,339, 63), XSPR_MASK, BOOKE, {RT}},
+-{"mfcmpa", XSPR(31,339,144), XSPR_MASK, PPC860, {RT}},
+-{"mfcmpb", XSPR(31,339,145), XSPR_MASK, PPC860, {RT}},
+-{"mfcmpc", XSPR(31,339,146), XSPR_MASK, PPC860, {RT}},
+-{"mfcmpd", XSPR(31,339,147), XSPR_MASK, PPC860, {RT}},
+-{"mficr", XSPR(31,339,148), XSPR_MASK, PPC860, {RT}},
+-{"mfder", XSPR(31,339,149), XSPR_MASK, PPC860, {RT}},
+-{"mfcounta", XSPR(31,339,150), XSPR_MASK, PPC860, {RT}},
+-{"mfcountb", XSPR(31,339,151), XSPR_MASK, PPC860, {RT}},
+-{"mfcmpe", XSPR(31,339,152), XSPR_MASK, PPC860, {RT}},
+-{"mfcmpf", XSPR(31,339,153), XSPR_MASK, PPC860, {RT}},
+-{"mfcmpg", XSPR(31,339,154), XSPR_MASK, PPC860, {RT}},
+-{"mfcmph", XSPR(31,339,155), XSPR_MASK, PPC860, {RT}},
+-{"mflctrl1", XSPR(31,339,156), XSPR_MASK, PPC860, {RT}},
+-{"mflctrl2", XSPR(31,339,157), XSPR_MASK, PPC860, {RT}},
+-{"mfictrl", XSPR(31,339,158), XSPR_MASK, PPC860, {RT}},
+-{"mfbar", XSPR(31,339,159), XSPR_MASK, PPC860, {RT}},
+-{"mfvrsave", XSPR(31,339,256), XSPR_MASK, PPCVEC, {RT}},
+-{"mfusprg0", XSPR(31,339,256), XSPR_MASK, BOOKE, {RT}},
+-{"mfsprg", XSPR(31,339,256), XSPRG_MASK, PPC, {RT, SPRG}},
+-{"mfsprg4", XSPR(31,339,260), XSPR_MASK, PPC405|BOOKE, {RT}},
+-{"mfsprg5", XSPR(31,339,261), XSPR_MASK, PPC405|BOOKE, {RT}},
+-{"mfsprg6", XSPR(31,339,262), XSPR_MASK, PPC405|BOOKE, {RT}},
+-{"mfsprg7", XSPR(31,339,263), XSPR_MASK, PPC405|BOOKE, {RT}},
+-{"mftb", XSPR(31,339,268), XSPR_MASK, BOOKE, {RT}},
+-{"mftbl", XSPR(31,339,268), XSPR_MASK, BOOKE, {RT}},
+-{"mftbu", XSPR(31,339,269), XSPR_MASK, BOOKE, {RT}},
+-{"mfsprg0", XSPR(31,339,272), XSPR_MASK, PPC, {RT}},
+-{"mfsprg1", XSPR(31,339,273), XSPR_MASK, PPC, {RT}},
+-{"mfsprg2", XSPR(31,339,274), XSPR_MASK, PPC, {RT}},
+-{"mfsprg3", XSPR(31,339,275), XSPR_MASK, PPC, {RT}},
+-{"mfasr", XSPR(31,339,280), XSPR_MASK, PPC64, {RT}},
+-{"mfear", XSPR(31,339,282), XSPR_MASK, PPC, {RT}},
+-{"mfpir", XSPR(31,339,286), XSPR_MASK, BOOKE, {RT}},
+-{"mfpvr", XSPR(31,339,287), XSPR_MASK, PPC, {RT}},
+-{"mfdbsr", XSPR(31,339,304), XSPR_MASK, BOOKE, {RT}},
+-{"mfdbcr0", XSPR(31,339,308), XSPR_MASK, BOOKE, {RT}},
+-{"mfdbcr1", XSPR(31,339,309), XSPR_MASK, BOOKE, {RT}},
+-{"mfdbcr2", XSPR(31,339,310), XSPR_MASK, BOOKE, {RT}},
+-{"mfiac1", XSPR(31,339,312), XSPR_MASK, BOOKE, {RT}},
+-{"mfiac2", XSPR(31,339,313), XSPR_MASK, BOOKE, {RT}},
+-{"mfiac3", XSPR(31,339,314), XSPR_MASK, BOOKE, {RT}},
+-{"mfiac4", XSPR(31,339,315), XSPR_MASK, BOOKE, {RT}},
+-{"mfdac1", XSPR(31,339,316), XSPR_MASK, BOOKE, {RT}},
+-{"mfdac2", XSPR(31,339,317), XSPR_MASK, BOOKE, {RT}},
+-{"mfdvc1", XSPR(31,339,318), XSPR_MASK, BOOKE, {RT}},
+-{"mfdvc2", XSPR(31,339,319), XSPR_MASK, BOOKE, {RT}},
+-{"mftsr", XSPR(31,339,336), XSPR_MASK, BOOKE, {RT}},
+-{"mftcr", XSPR(31,339,340), XSPR_MASK, BOOKE, {RT}},
+-{"mfivor0", XSPR(31,339,400), XSPR_MASK, BOOKE, {RT}},
+-{"mfivor1", XSPR(31,339,401), XSPR_MASK, BOOKE, {RT}},
+-{"mfivor2", XSPR(31,339,402), XSPR_MASK, BOOKE, {RT}},
+-{"mfivor3", XSPR(31,339,403), XSPR_MASK, BOOKE, {RT}},
+-{"mfivor4", XSPR(31,339,404), XSPR_MASK, BOOKE, {RT}},
+-{"mfivor5", XSPR(31,339,405), XSPR_MASK, BOOKE, {RT}},
+-{"mfivor6", XSPR(31,339,406), XSPR_MASK, BOOKE, {RT}},
+-{"mfivor7", XSPR(31,339,407), XSPR_MASK, BOOKE, {RT}},
+-{"mfivor8", XSPR(31,339,408), XSPR_MASK, BOOKE, {RT}},
+-{"mfivor9", XSPR(31,339,409), XSPR_MASK, BOOKE, {RT}},
+-{"mfivor10", XSPR(31,339,410), XSPR_MASK, BOOKE, {RT}},
+-{"mfivor11", XSPR(31,339,411), XSPR_MASK, BOOKE, {RT}},
+-{"mfivor12", XSPR(31,339,412), XSPR_MASK, BOOKE, {RT}},
+-{"mfivor13", XSPR(31,339,413), XSPR_MASK, BOOKE, {RT}},
+-{"mfivor14", XSPR(31,339,414), XSPR_MASK, BOOKE, {RT}},
+-{"mfivor15", XSPR(31,339,415), XSPR_MASK, BOOKE, {RT}},
+-{"mfspefscr", XSPR(31,339,512), XSPR_MASK, PPCSPE, {RT}},
+-{"mfbbear", XSPR(31,339,513), XSPR_MASK, PPCBRLK, {RT}},
+-{"mfbbtar", XSPR(31,339,514), XSPR_MASK, PPCBRLK, {RT}},
+-{"mfivor32", XSPR(31,339,528), XSPR_MASK, PPCSPE, {RT}},
+-{"mfibatu", XSPR(31,339,528), XSPRBAT_MASK, PPC, {RT, SPRBAT}},
+-{"mfivor33", XSPR(31,339,529), XSPR_MASK, PPCSPE, {RT}},
+-{"mfibatl", XSPR(31,339,529), XSPRBAT_MASK, PPC, {RT, SPRBAT}},
+-{"mfivor34", XSPR(31,339,530), XSPR_MASK, PPCSPE, {RT}},
+-{"mfivor35", XSPR(31,339,531), XSPR_MASK, PPCPMR, {RT}},
+-{"mfdbatu", XSPR(31,339,536), XSPRBAT_MASK, PPC, {RT, SPRBAT}},
+-{"mfdbatl", XSPR(31,339,537), XSPRBAT_MASK, PPC, {RT, SPRBAT}},
+-{"mfic_cst", XSPR(31,339,560), XSPR_MASK, PPC860, {RT}},
+-{"mfic_adr", XSPR(31,339,561), XSPR_MASK, PPC860, {RT}},
+-{"mfic_dat", XSPR(31,339,562), XSPR_MASK, PPC860, {RT}},
+-{"mfdc_cst", XSPR(31,339,568), XSPR_MASK, PPC860, {RT}},
+-{"mfdc_adr", XSPR(31,339,569), XSPR_MASK, PPC860, {RT}},
+-{"mfdc_dat", XSPR(31,339,570), XSPR_MASK, PPC860, {RT}},
+-{"mfmcsrr0", XSPR(31,339,570), XSPR_MASK, PPCRFMCI, {RT}},
+-{"mfmcsrr1", XSPR(31,339,571), XSPR_MASK, PPCRFMCI, {RT}},
+-{"mfmcsr", XSPR(31,339,572), XSPR_MASK, PPCRFMCI, {RT}},
+-{"mfmcar", XSPR(31,339,573), XSPR_MASK, PPCRFMCI, {RT}},
+-{"mfdpdr", XSPR(31,339,630), XSPR_MASK, PPC860, {RT}},
+-{"mfdpir", XSPR(31,339,631), XSPR_MASK, PPC860, {RT}},
+-{"mfimmr", XSPR(31,339,638), XSPR_MASK, PPC860, {RT}},
+-{"mfmi_ctr", XSPR(31,339,784), XSPR_MASK, PPC860, {RT}},
+-{"mfmi_ap", XSPR(31,339,786), XSPR_MASK, PPC860, {RT}},
+-{"mfmi_epn", XSPR(31,339,787), XSPR_MASK, PPC860, {RT}},
+-{"mfmi_twc", XSPR(31,339,789), XSPR_MASK, PPC860, {RT}},
+-{"mfmi_rpn", XSPR(31,339,790), XSPR_MASK, PPC860, {RT}},
+-{"mfmd_ctr", XSPR(31,339,792), XSPR_MASK, PPC860, {RT}},
+-{"mfm_casid", XSPR(31,339,793), XSPR_MASK, PPC860, {RT}},
+-{"mfmd_ap", XSPR(31,339,794), XSPR_MASK, PPC860, {RT}},
+-{"mfmd_epn", XSPR(31,339,795), XSPR_MASK, PPC860, {RT}},
+-{"mfmd_twb", XSPR(31,339,796), XSPR_MASK, PPC860, {RT}},
+-{"mfmd_twc", XSPR(31,339,797), XSPR_MASK, PPC860, {RT}},
+-{"mfmd_rpn", XSPR(31,339,798), XSPR_MASK, PPC860, {RT}},
+-{"mfm_tw", XSPR(31,339,799), XSPR_MASK, PPC860, {RT}},
+-{"mfmi_dbcam", XSPR(31,339,816), XSPR_MASK, PPC860, {RT}},
+-{"mfmi_dbram0", XSPR(31,339,817), XSPR_MASK, PPC860, {RT}},
+-{"mfmi_dbram1", XSPR(31,339,818), XSPR_MASK, PPC860, {RT}},
+-{"mfmd_dbcam", XSPR(31,339,824), XSPR_MASK, PPC860, {RT}},
+-{"mfmd_dbram0", XSPR(31,339,825), XSPR_MASK, PPC860, {RT}},
+-{"mfmd_dbram1", XSPR(31,339,826), XSPR_MASK, PPC860, {RT}},
+-{"mfummcr0", XSPR(31,339,936), XSPR_MASK, PPC750, {RT}},
+-{"mfupmc1", XSPR(31,339,937), XSPR_MASK, PPC750, {RT}},
+-{"mfupmc2", XSPR(31,339,938), XSPR_MASK, PPC750, {RT}},
+-{"mfusia", XSPR(31,339,939), XSPR_MASK, PPC750, {RT}},
+-{"mfummcr1", XSPR(31,339,940), XSPR_MASK, PPC750, {RT}},
+-{"mfupmc3", XSPR(31,339,941), XSPR_MASK, PPC750, {RT}},
+-{"mfupmc4", XSPR(31,339,942), XSPR_MASK, PPC750, {RT}},
+-{"mfzpr", XSPR(31,339,944), XSPR_MASK, PPC403, {RT}},
+-{"mfpid", XSPR(31,339,945), XSPR_MASK, PPC403, {RT}},
+-{"mfccr0", XSPR(31,339,947), XSPR_MASK, PPC405, {RT}},
+-{"mfiac3", XSPR(31,339,948), XSPR_MASK, PPC405, {RT}},
+-{"mfiac4", XSPR(31,339,949), XSPR_MASK, PPC405, {RT}},
+-{"mfdvc1", XSPR(31,339,950), XSPR_MASK, PPC405, {RT}},
+-{"mfdvc2", XSPR(31,339,951), XSPR_MASK, PPC405, {RT}},
+-{"mfmmcr0", XSPR(31,339,952), XSPR_MASK, PPC750, {RT}},
+-{"mfpmc1", XSPR(31,339,953), XSPR_MASK, PPC750, {RT}},
+-{"mfsgr", XSPR(31,339,953), XSPR_MASK, PPC403, {RT}},
+-{"mfdcwr", XSPR(31,339,954), XSPR_MASK, PPC403, {RT}},
+-{"mfpmc2", XSPR(31,339,954), XSPR_MASK, PPC750, {RT}},
+-{"mfsia", XSPR(31,339,955), XSPR_MASK, PPC750, {RT}},
+-{"mfsler", XSPR(31,339,955), XSPR_MASK, PPC405, {RT}},
+-{"mfmmcr1", XSPR(31,339,956), XSPR_MASK, PPC750, {RT}},
+-{"mfsu0r", XSPR(31,339,956), XSPR_MASK, PPC405, {RT}},
+-{"mfdbcr1", XSPR(31,339,957), XSPR_MASK, PPC405, {RT}},
+-{"mfpmc3", XSPR(31,339,957), XSPR_MASK, PPC750, {RT}},
+-{"mfpmc4", XSPR(31,339,958), XSPR_MASK, PPC750, {RT}},
+-{"mficdbdr", XSPR(31,339,979), XSPR_MASK, PPC403, {RT}},
+-{"mfesr", XSPR(31,339,980), XSPR_MASK, PPC403, {RT}},
+-{"mfdear", XSPR(31,339,981), XSPR_MASK, PPC403, {RT}},
+-{"mfevpr", XSPR(31,339,982), XSPR_MASK, PPC403, {RT}},
+-{"mfcdbcr", XSPR(31,339,983), XSPR_MASK, PPC403, {RT}},
+-{"mftsr", XSPR(31,339,984), XSPR_MASK, PPC403, {RT}},
+-{"mftcr", XSPR(31,339,986), XSPR_MASK, PPC403, {RT}},
+-{"mfpit", XSPR(31,339,987), XSPR_MASK, PPC403, {RT}},
+-{"mftbhi", XSPR(31,339,988), XSPR_MASK, PPC403, {RT}},
+-{"mftblo", XSPR(31,339,989), XSPR_MASK, PPC403, {RT}},
+-{"mfsrr2", XSPR(31,339,990), XSPR_MASK, PPC403, {RT}},
+-{"mfsrr3", XSPR(31,339,991), XSPR_MASK, PPC403, {RT}},
+-{"mfdbsr", XSPR(31,339,1008), XSPR_MASK, PPC403, {RT}},
+-{"mfdbcr0", XSPR(31,339,1010), XSPR_MASK, PPC405, {RT}},
+-{"mfiac1", XSPR(31,339,1012), XSPR_MASK, PPC403, {RT}},
+-{"mfiac2", XSPR(31,339,1013), XSPR_MASK, PPC403, {RT}},
+-{"mfdac1", XSPR(31,339,1014), XSPR_MASK, PPC403, {RT}},
+-{"mfdac2", XSPR(31,339,1015), XSPR_MASK, PPC403, {RT}},
+-{"mfl2cr", XSPR(31,339,1017), XSPR_MASK, PPC750, {RT}},
+-{"mfdccr", XSPR(31,339,1018), XSPR_MASK, PPC403, {RT}},
+-{"mficcr", XSPR(31,339,1019), XSPR_MASK, PPC403, {RT}},
+-{"mfictc", XSPR(31,339,1019), XSPR_MASK, PPC750, {RT}},
+-{"mfpbl1", XSPR(31,339,1020), XSPR_MASK, PPC403, {RT}},
+-{"mfthrm1", XSPR(31,339,1020), XSPR_MASK, PPC750, {RT}},
+-{"mfpbu1", XSPR(31,339,1021), XSPR_MASK, PPC403, {RT}},
+-{"mfthrm2", XSPR(31,339,1021), XSPR_MASK, PPC750, {RT}},
+-{"mfpbl2", XSPR(31,339,1022), XSPR_MASK, PPC403, {RT}},
+-{"mfthrm3", XSPR(31,339,1022), XSPR_MASK, PPC750, {RT}},
+-{"mfpbu2", XSPR(31,339,1023), XSPR_MASK, PPC403, {RT}},
+-{"mfspr", X(31,339), X_MASK, COM, {RT, SPR}},
+-
+-{"lwax", X(31,341), X_MASK, PPC64, {RT, RA0, RB}},
+-
+-{"dst", XDSS(31,342,0), XDSS_MASK, PPCVEC, {RA, RB, STRM}},
+-
+-{"lhax", X(31,343), X_MASK, COM, {RT, RA0, RB}},
+-
+-{"lhaxe", X(31,351), X_MASK, BOOKE64, {RT, RA0, RB}},
+-
+-{"lvxl", X(31,359), X_MASK, PPCVEC, {VD, RA, RB}},
+-
+-{"abs", XO(31,360,0,0), XORB_MASK, M601, {RT, RA}},
+-{"abs.", XO(31,360,0,1), XORB_MASK, M601, {RT, RA}},
+-
+-{"divs", XO(31,363,0,0), XO_MASK, M601, {RT, RA, RB}},
+-{"divs.", XO(31,363,0,1), XO_MASK, M601, {RT, RA, RB}},
+-
+-{"tlbia", X(31,370), 0xffffffff, PPC, {0}},
+-
+-{"mftbl", XSPR(31,371,268), XSPR_MASK, CLASSIC, {RT}},
+-{"mftbu", XSPR(31,371,269), XSPR_MASK, CLASSIC, {RT}},
+-{"mftb", X(31,371), X_MASK, CLASSIC, {RT, TBR}},
+-
+-{"lwaux", X(31,373), X_MASK, PPC64, {RT, RAL, RB}},
+-
+-{"dstst", XDSS(31,374,0), XDSS_MASK, PPCVEC, {RA, RB, STRM}},
+-
+-{"lhaux", X(31,375), X_MASK, COM, {RT, RAL, RB}},
+-
+-{"lhauxe", X(31,383), X_MASK, BOOKE64, {RT, RAL, RB}},
+-
+-{"mtdcrx", X(31,387), X_MASK, BOOKE, {RA, RS}},
+-
+-{"dcblc", X(31,390), X_MASK, PPCCHLK, {CT, RA, RB}},
+-{"stdfcmx", APU(31,391,0), APU_MASK, PPC405, {FCRT, RA, RB}},
+-
+-{"subfe64", XO(31,392,0,0), XO_MASK, BOOKE64, {RT, RA, RB}},
+-
+-{"adde64", XO(31,394,0,0), XO_MASK, BOOKE64, {RT, RA, RB}},
+-
+-{"dcblce", X(31,398), X_MASK, PPCCHLK64, {CT, RA, RB}},
+-
+-{"slbmte", X(31,402), XRA_MASK, PPC64, {RS, RB}},
+-
+-{"sthx", X(31,407), X_MASK, COM, {RS, RA0, RB}},
+-
+-{"orc", XRC(31,412,0), X_MASK, COM, {RA, RS, RB}},
+-{"orc.", XRC(31,412,1), X_MASK, COM, {RA, RS, RB}},
+-
+-{"sthxe", X(31,415), X_MASK, BOOKE64, {RS, RA0, RB}},
+-{"sthepx", X(31,415), X_MASK, E500MC, {RS, RA, RB}},
+-
+-{"mtdcrux", X(31,419), X_MASK, PPC464, {RA, RS}},
+-
+-{"slbie", X(31,434), XRTRA_MASK, PPC64, {RB}},
+-
+-{"ecowx", X(31,438), X_MASK, PPC, {RT, RA, RB}},
+-
+-{"sthux", X(31,439), X_MASK, COM, {RS, RAS, RB}},
+-
+-{"mdors", 0x7f9ce378, 0xffffffff, E500MC, {0}},
+-
+-{"mr", XRC(31,444,0), X_MASK, COM, {RA, RS, RBS}},
+-{"or", XRC(31,444,0), X_MASK, COM, {RA, RS, RB}},
+-{"mr.", XRC(31,444,1), X_MASK, COM, {RA, RS, RBS}},
+-{"or.", XRC(31,444,1), X_MASK, COM, {RA, RS, RB}},
+-
+-{"sthuxe", X(31,447), X_MASK, BOOKE64, {RS, RAS, RB}},
+-
+-{"mtexisr", XSPR(31,451, 64), XSPR_MASK, PPC403, {RS}},
+-{"mtexier", XSPR(31,451, 66), XSPR_MASK, PPC403, {RS}},
+-{"mtbr0", XSPR(31,451,128), XSPR_MASK, PPC403, {RS}},
+-{"mtbr1", XSPR(31,451,129), XSPR_MASK, PPC403, {RS}},
+-{"mtbr2", XSPR(31,451,130), XSPR_MASK, PPC403, {RS}},
+-{"mtbr3", XSPR(31,451,131), XSPR_MASK, PPC403, {RS}},
+-{"mtbr4", XSPR(31,451,132), XSPR_MASK, PPC403, {RS}},
+-{"mtbr5", XSPR(31,451,133), XSPR_MASK, PPC403, {RS}},
+-{"mtbr6", XSPR(31,451,134), XSPR_MASK, PPC403, {RS}},
+-{"mtbr7", XSPR(31,451,135), XSPR_MASK, PPC403, {RS}},
+-{"mtbear", XSPR(31,451,144), XSPR_MASK, PPC403, {RS}},
+-{"mtbesr", XSPR(31,451,145), XSPR_MASK, PPC403, {RS}},
+-{"mtiocr", XSPR(31,451,160), XSPR_MASK, PPC403, {RS}},
+-{"mtdmacr0", XSPR(31,451,192), XSPR_MASK, PPC403, {RS}},
+-{"mtdmact0", XSPR(31,451,193), XSPR_MASK, PPC403, {RS}},
+-{"mtdmada0", XSPR(31,451,194), XSPR_MASK, PPC403, {RS}},
+-{"mtdmasa0", XSPR(31,451,195), XSPR_MASK, PPC403, {RS}},
+-{"mtdmacc0", XSPR(31,451,196), XSPR_MASK, PPC403, {RS}},
+-{"mtdmacr1", XSPR(31,451,200), XSPR_MASK, PPC403, {RS}},
+-{"mtdmact1", XSPR(31,451,201), XSPR_MASK, PPC403, {RS}},
+-{"mtdmada1", XSPR(31,451,202), XSPR_MASK, PPC403, {RS}},
+-{"mtdmasa1", XSPR(31,451,203), XSPR_MASK, PPC403, {RS}},
+-{"mtdmacc1", XSPR(31,451,204), XSPR_MASK, PPC403, {RS}},
+-{"mtdmacr2", XSPR(31,451,208), XSPR_MASK, PPC403, {RS}},
+-{"mtdmact2", XSPR(31,451,209), XSPR_MASK, PPC403, {RS}},
+-{"mtdmada2", XSPR(31,451,210), XSPR_MASK, PPC403, {RS}},
+-{"mtdmasa2", XSPR(31,451,211), XSPR_MASK, PPC403, {RS}},
+-{"mtdmacc2", XSPR(31,451,212), XSPR_MASK, PPC403, {RS}},
+-{"mtdmacr3", XSPR(31,451,216), XSPR_MASK, PPC403, {RS}},
+-{"mtdmact3", XSPR(31,451,217), XSPR_MASK, PPC403, {RS}},
+-{"mtdmada3", XSPR(31,451,218), XSPR_MASK, PPC403, {RS}},
+-{"mtdmasa3", XSPR(31,451,219), XSPR_MASK, PPC403, {RS}},
+-{"mtdmacc3", XSPR(31,451,220), XSPR_MASK, PPC403, {RS}},
+-{"mtdmasr", XSPR(31,451,224), XSPR_MASK, PPC403, {RS}},
+-{"mtdcr", X(31,451), X_MASK, PPC403|BOOKE, {SPR, RS}},
+-
+-{"dccci", X(31,454), XRT_MASK, PPC403|PPC440, {RA, RB}},
+-
+-{"subfze64", XO(31,456,0,0), XORB_MASK, BOOKE64, {RT, RA}},
+-
+-{"divdu", XO(31,457,0,0), XO_MASK, PPC64, {RT, RA, RB}},
+-{"divdu.", XO(31,457,0,1), XO_MASK, PPC64, {RT, RA, RB}},
+-
+-{"addze64", XO(31,458,0,0), XORB_MASK, BOOKE64, {RT, RA}},
+-
+-{"divwu", XO(31,459,0,0), XO_MASK, PPC, {RT, RA, RB}},
+-{"divwu.", XO(31,459,0,1), XO_MASK, PPC, {RT, RA, RB}},
+-
+-{"mtpmr", X(31,462), X_MASK, PPCPMR|PPCE300, {PMR, RS}},
+-
+-{"mtmq", XSPR(31,467, 0), XSPR_MASK, M601, {RS}},
+-{"mtxer", XSPR(31,467, 1), XSPR_MASK, COM, {RS}},
+-{"mtlr", XSPR(31,467, 8), XSPR_MASK, COM, {RS}},
+-{"mtctr", XSPR(31,467, 9), XSPR_MASK, COM, {RS}},
+-{"mttid", XSPR(31,467, 17), XSPR_MASK, POWER, {RS}},
+-{"mtdsisr", XSPR(31,467, 18), XSPR_MASK, COM, {RS}},
+-{"mtdar", XSPR(31,467, 19), XSPR_MASK, COM, {RS}},
+-{"mtrtcu", XSPR(31,467, 20), XSPR_MASK, COM, {RS}},
+-{"mtrtcl", XSPR(31,467, 21), XSPR_MASK, COM, {RS}},
+-{"mtdec", XSPR(31,467, 22), XSPR_MASK, COM, {RS}},
+-{"mtsdr0", XSPR(31,467, 24), XSPR_MASK, POWER, {RS}},
+-{"mtsdr1", XSPR(31,467, 25), XSPR_MASK, COM, {RS}},
+-{"mtsrr0", XSPR(31,467, 26), XSPR_MASK, COM, {RS}},
+-{"mtsrr1", XSPR(31,467, 27), XSPR_MASK, COM, {RS}},
+-{"mtcfar", XSPR(31,467, 28), XSPR_MASK, POWER6, {RS}},
+-{"mtpid", XSPR(31,467, 48), XSPR_MASK, BOOKE, {RS}},
+-{"mtdecar", XSPR(31,467, 54), XSPR_MASK, BOOKE, {RS}},
+-{"mtcsrr0", XSPR(31,467, 58), XSPR_MASK, BOOKE, {RS}},
+-{"mtcsrr1", XSPR(31,467, 59), XSPR_MASK, BOOKE, {RS}},
+-{"mtdear", XSPR(31,467, 61), XSPR_MASK, BOOKE, {RS}},
+-{"mtesr", XSPR(31,467, 62), XSPR_MASK, BOOKE, {RS}},
+-{"mtivpr", XSPR(31,467, 63), XSPR_MASK, BOOKE, {RS}},
+-{"mtcmpa", XSPR(31,467,144), XSPR_MASK, PPC860, {RS}},
+-{"mtcmpb", XSPR(31,467,145), XSPR_MASK, PPC860, {RS}},
+-{"mtcmpc", XSPR(31,467,146), XSPR_MASK, PPC860, {RS}},
+-{"mtcmpd", XSPR(31,467,147), XSPR_MASK, PPC860, {RS}},
+-{"mticr", XSPR(31,467,148), XSPR_MASK, PPC860, {RS}},
+-{"mtder", XSPR(31,467,149), XSPR_MASK, PPC860, {RS}},
+-{"mtcounta", XSPR(31,467,150), XSPR_MASK, PPC860, {RS}},
+-{"mtcountb", XSPR(31,467,151), XSPR_MASK, PPC860, {RS}},
+-{"mtcmpe", XSPR(31,467,152), XSPR_MASK, PPC860, {RS}},
+-{"mtcmpf", XSPR(31,467,153), XSPR_MASK, PPC860, {RS}},
+-{"mtcmpg", XSPR(31,467,154), XSPR_MASK, PPC860, {RS}},
+-{"mtcmph", XSPR(31,467,155), XSPR_MASK, PPC860, {RS}},
+-{"mtlctrl1", XSPR(31,467,156), XSPR_MASK, PPC860, {RS}},
+-{"mtlctrl2", XSPR(31,467,157), XSPR_MASK, PPC860, {RS}},
+-{"mtictrl", XSPR(31,467,158), XSPR_MASK, PPC860, {RS}},
+-{"mtbar", XSPR(31,467,159), XSPR_MASK, PPC860, {RS}},
+-{"mtvrsave", XSPR(31,467,256), XSPR_MASK, PPCVEC, {RS}},
+-{"mtusprg0", XSPR(31,467,256), XSPR_MASK, BOOKE, {RS}},
+-{"mtsprg", XSPR(31,467,256), XSPRG_MASK,PPC, {SPRG, RS}},
+-{"mtsprg0", XSPR(31,467,272), XSPR_MASK, PPC, {RS}},
+-{"mtsprg1", XSPR(31,467,273), XSPR_MASK, PPC, {RS}},
+-{"mtsprg2", XSPR(31,467,274), XSPR_MASK, PPC, {RS}},
+-{"mtsprg3", XSPR(31,467,275), XSPR_MASK, PPC, {RS}},
+-{"mtsprg4", XSPR(31,467,276), XSPR_MASK, PPC405|BOOKE, {RS}},
+-{"mtsprg5", XSPR(31,467,277), XSPR_MASK, PPC405|BOOKE, {RS}},
+-{"mtsprg6", XSPR(31,467,278), XSPR_MASK, PPC405|BOOKE, {RS}},
+-{"mtsprg7", XSPR(31,467,279), XSPR_MASK, PPC405|BOOKE, {RS}},
+-{"mtasr", XSPR(31,467,280), XSPR_MASK, PPC64, {RS}},
+-{"mtear", XSPR(31,467,282), XSPR_MASK, PPC, {RS}},
+-{"mttbl", XSPR(31,467,284), XSPR_MASK, PPC, {RS}},
+-{"mttbu", XSPR(31,467,285), XSPR_MASK, PPC, {RS}},
+-{"mtdbsr", XSPR(31,467,304), XSPR_MASK, BOOKE, {RS}},
+-{"mtdbcr0", XSPR(31,467,308), XSPR_MASK, BOOKE, {RS}},
+-{"mtdbcr1", XSPR(31,467,309), XSPR_MASK, BOOKE, {RS}},
+-{"mtdbcr2", XSPR(31,467,310), XSPR_MASK, BOOKE, {RS}},
+-{"mtiac1", XSPR(31,467,312), XSPR_MASK, BOOKE, {RS}},
+-{"mtiac2", XSPR(31,467,313), XSPR_MASK, BOOKE, {RS}},
+-{"mtiac3", XSPR(31,467,314), XSPR_MASK, BOOKE, {RS}},
+-{"mtiac4", XSPR(31,467,315), XSPR_MASK, BOOKE, {RS}},
+-{"mtdac1", XSPR(31,467,316), XSPR_MASK, BOOKE, {RS}},
+-{"mtdac2", XSPR(31,467,317), XSPR_MASK, BOOKE, {RS}},
+-{"mtdvc1", XSPR(31,467,318), XSPR_MASK, BOOKE, {RS}},
+-{"mtdvc2", XSPR(31,467,319), XSPR_MASK, BOOKE, {RS}},
+-{"mttsr", XSPR(31,467,336), XSPR_MASK, BOOKE, {RS}},
+-{"mttcr", XSPR(31,467,340), XSPR_MASK, BOOKE, {RS}},
+-{"mtivor0", XSPR(31,467,400), XSPR_MASK, BOOKE, {RS}},
+-{"mtivor1", XSPR(31,467,401), XSPR_MASK, BOOKE, {RS}},
+-{"mtivor2", XSPR(31,467,402), XSPR_MASK, BOOKE, {RS}},
+-{"mtivor3", XSPR(31,467,403), XSPR_MASK, BOOKE, {RS}},
+-{"mtivor4", XSPR(31,467,404), XSPR_MASK, BOOKE, {RS}},
+-{"mtivor5", XSPR(31,467,405), XSPR_MASK, BOOKE, {RS}},
+-{"mtivor6", XSPR(31,467,406), XSPR_MASK, BOOKE, {RS}},
+-{"mtivor7", XSPR(31,467,407), XSPR_MASK, BOOKE, {RS}},
+-{"mtivor8", XSPR(31,467,408), XSPR_MASK, BOOKE, {RS}},
+-{"mtivor9", XSPR(31,467,409), XSPR_MASK, BOOKE, {RS}},
+-{"mtivor10", XSPR(31,467,410), XSPR_MASK, BOOKE, {RS}},
+-{"mtivor11", XSPR(31,467,411), XSPR_MASK, BOOKE, {RS}},
+-{"mtivor12", XSPR(31,467,412), XSPR_MASK, BOOKE, {RS}},
+-{"mtivor13", XSPR(31,467,413), XSPR_MASK, BOOKE, {RS}},
+-{"mtivor14", XSPR(31,467,414), XSPR_MASK, BOOKE, {RS}},
+-{"mtivor15", XSPR(31,467,415), XSPR_MASK, BOOKE, {RS}},
+-{"mtspefscr", XSPR(31,467,512), XSPR_MASK, PPCSPE, {RS}},
+-{"mtbbear", XSPR(31,467,513), XSPR_MASK, PPCBRLK, {RS}},
+-{"mtbbtar", XSPR(31,467,514), XSPR_MASK, PPCBRLK, {RS}},
+-{"mtivor32", XSPR(31,467,528), XSPR_MASK, PPCSPE, {RS}},
+-{"mtibatu", XSPR(31,467,528), XSPRBAT_MASK, PPC, {SPRBAT, RS}},
+-{"mtivor33", XSPR(31,467,529), XSPR_MASK, PPCSPE, {RS}},
+-{"mtibatl", XSPR(31,467,529), XSPRBAT_MASK, PPC, {SPRBAT, RS}},
+-{"mtivor34", XSPR(31,467,530), XSPR_MASK, PPCSPE, {RS}},
+-{"mtivor35", XSPR(31,467,531), XSPR_MASK, PPCPMR, {RS}},
+-{"mtdbatu", XSPR(31,467,536), XSPRBAT_MASK, PPC, {SPRBAT, RS}},
+-{"mtdbatl", XSPR(31,467,537), XSPRBAT_MASK, PPC, {SPRBAT, RS}},
+-{"mtmcsrr0", XSPR(31,467,570), XSPR_MASK, PPCRFMCI, {RS}},
+-{"mtmcsrr1", XSPR(31,467,571), XSPR_MASK, PPCRFMCI, {RS}},
+-{"mtmcsr", XSPR(31,467,572), XSPR_MASK, PPCRFMCI, {RS}},
+-{"mtummcr0", XSPR(31,467,936), XSPR_MASK, PPC750, {RS}},
+-{"mtupmc1", XSPR(31,467,937), XSPR_MASK, PPC750, {RS}},
+-{"mtupmc2", XSPR(31,467,938), XSPR_MASK, PPC750, {RS}},
+-{"mtusia", XSPR(31,467,939), XSPR_MASK, PPC750, {RS}},
+-{"mtummcr1", XSPR(31,467,940), XSPR_MASK, PPC750, {RS}},
+-{"mtupmc3", XSPR(31,467,941), XSPR_MASK, PPC750, {RS}},
+-{"mtupmc4", XSPR(31,467,942), XSPR_MASK, PPC750, {RS}},
+-{"mtzpr", XSPR(31,467,944), XSPR_MASK, PPC403, {RS}},
+-{"mtpid", XSPR(31,467,945), XSPR_MASK, PPC403, {RS}},
+-{"mtccr0", XSPR(31,467,947), XSPR_MASK, PPC405, {RS}},
+-{"mtiac3", XSPR(31,467,948), XSPR_MASK, PPC405, {RS}},
+-{"mtiac4", XSPR(31,467,949), XSPR_MASK, PPC405, {RS}},
+-{"mtdvc1", XSPR(31,467,950), XSPR_MASK, PPC405, {RS}},
+-{"mtdvc2", XSPR(31,467,951), XSPR_MASK, PPC405, {RS}},
+-{"mtmmcr0", XSPR(31,467,952), XSPR_MASK, PPC750, {RS}},
+-{"mtpmc1", XSPR(31,467,953), XSPR_MASK, PPC750, {RS}},
+-{"mtsgr", XSPR(31,467,953), XSPR_MASK, PPC403, {RS}},
+-{"mtdcwr", XSPR(31,467,954), XSPR_MASK, PPC403, {RS}},
+-{"mtpmc2", XSPR(31,467,954), XSPR_MASK, PPC750, {RS}},
+-{"mtsia", XSPR(31,467,955), XSPR_MASK, PPC750, {RS}},
+-{"mtsler", XSPR(31,467,955), XSPR_MASK, PPC405, {RS}},
+-{"mtmmcr1", XSPR(31,467,956), XSPR_MASK, PPC750, {RS}},
+-{"mtsu0r", XSPR(31,467,956), XSPR_MASK, PPC405, {RS}},
+-{"mtdbcr1", XSPR(31,467,957), XSPR_MASK, PPC405, {RS}},
+-{"mtpmc3", XSPR(31,467,957), XSPR_MASK, PPC750, {RS}},
+-{"mtpmc4", XSPR(31,467,958), XSPR_MASK, PPC750, {RS}},
+-{"mticdbdr", XSPR(31,467,979), XSPR_MASK, PPC403, {RS}},
+-{"mtesr", XSPR(31,467,980), XSPR_MASK, PPC403, {RS}},
+-{"mtdear", XSPR(31,467,981), XSPR_MASK, PPC403, {RS}},
+-{"mtevpr", XSPR(31,467,982), XSPR_MASK, PPC403, {RS}},
+-{"mtcdbcr", XSPR(31,467,983), XSPR_MASK, PPC403, {RS}},
+-{"mttsr", XSPR(31,467,984), XSPR_MASK, PPC403, {RS}},
+-{"mttcr", XSPR(31,467,986), XSPR_MASK, PPC403, {RS}},
+-{"mtpit", XSPR(31,467,987), XSPR_MASK, PPC403, {RS}},
+-{"mttbhi", XSPR(31,467,988), XSPR_MASK, PPC403, {RS}},
+-{"mttblo", XSPR(31,467,989), XSPR_MASK, PPC403, {RS}},
+-{"mtsrr2", XSPR(31,467,990), XSPR_MASK, PPC403, {RS}},
+-{"mtsrr3", XSPR(31,467,991), XSPR_MASK, PPC403, {RS}},
+-{"mtdbsr", XSPR(31,467,1008), XSPR_MASK, PPC403, {RS}},
+-{"mtdbcr0", XSPR(31,467,1010), XSPR_MASK, PPC405, {RS}},
+-{"mtiac1", XSPR(31,467,1012), XSPR_MASK, PPC403, {RS}},
+-{"mtiac2", XSPR(31,467,1013), XSPR_MASK, PPC403, {RS}},
+-{"mtdac1", XSPR(31,467,1014), XSPR_MASK, PPC403, {RS}},
+-{"mtdac2", XSPR(31,467,1015), XSPR_MASK, PPC403, {RS}},
+-{"mtl2cr", XSPR(31,467,1017), XSPR_MASK, PPC750, {RS}},
+-{"mtdccr", XSPR(31,467,1018), XSPR_MASK, PPC403, {RS}},
+-{"mticcr", XSPR(31,467,1019), XSPR_MASK, PPC403, {RS}},
+-{"mtictc", XSPR(31,467,1019), XSPR_MASK, PPC750, {RS}},
+-{"mtpbl1", XSPR(31,467,1020), XSPR_MASK, PPC403, {RS}},
+-{"mtthrm1", XSPR(31,467,1020), XSPR_MASK, PPC750, {RS}},
+-{"mtpbu1", XSPR(31,467,1021), XSPR_MASK, PPC403, {RS}},
+-{"mtthrm2", XSPR(31,467,1021), XSPR_MASK, PPC750, {RS}},
+-{"mtpbl2", XSPR(31,467,1022), XSPR_MASK, PPC403, {RS}},
+-{"mtthrm3", XSPR(31,467,1022), XSPR_MASK, PPC750, {RS}},
+-{"mtpbu2", XSPR(31,467,1023), XSPR_MASK, PPC403, {RS}},
+-{"mtspr", X(31,467), X_MASK, COM, {SPR, RS}},
+-
+-{"dcbi", X(31,470), XRT_MASK, PPC, {RA, RB}},
+-
+-{"nand", XRC(31,476,0), X_MASK, COM, {RA, RS, RB}},
+-{"nand.", XRC(31,476,1), X_MASK, COM, {RA, RS, RB}},
+-
+-{"dcbie", X(31,478), XRT_MASK, BOOKE64, {RA, RB}},
+-
+-{"dsn", X(31,483), XRT_MASK, E500MC, {RA, RB}},
+-
+-{"dcread", X(31,486), X_MASK, PPC403|PPC440, {RT, RA, RB}},
+-
+-{"icbtls", X(31,486), X_MASK, PPCCHLK, {CT, RA, RB}},
+-
+-{"stvxl", X(31,487), X_MASK, PPCVEC, {VS, RA, RB}},
+-
+-{"nabs", XO(31,488,0,0), XORB_MASK, M601, {RT, RA}},
+-{"subfme64", XO(31,488,0,0), XORB_MASK, BOOKE64, {RT, RA}},
+-{"nabs.", XO(31,488,0,1), XORB_MASK, M601, {RT, RA}},
+-
+-{"divd", XO(31,489,0,0), XO_MASK, PPC64, {RT, RA, RB}},
+-{"divd.", XO(31,489,0,1), XO_MASK, PPC64, {RT, RA, RB}},
+-
+-{"addme64", XO(31,490,0,0), XORB_MASK, BOOKE64, {RT, RA}},
+-
+-{"divw", XO(31,491,0,0), XO_MASK, PPC, {RT, RA, RB}},
+-{"divw.", XO(31,491,0,1), XO_MASK, PPC, {RT, RA, RB}},
+-
+-{"icbtlse", X(31,494), X_MASK, PPCCHLK64, {CT, RA, RB}},
+-
+-{"slbia", X(31,498), 0xffffffff, PPC64, {0}},
+-
+-{"cli", X(31,502), XRB_MASK, POWER, {RT, RA}},
+-
+-{"cmpb", X(31,508), X_MASK, POWER6, {RA, RS, RB}},
+-
+-{"stdcxe.", XRC(31,511,1), X_MASK, BOOKE64, {RS, RA, RB}},
+-
+-{"mcrxr", X(31,512), XRARB_MASK|(3<<21), COM, {BF}},
+-
+-{"lbdx", X(31,515), X_MASK, E500MC, {RT, RA, RB}},
+-
+-{"bblels", X(31,518), X_MASK, PPCBRLK, {0}},
+-
+-{"lvlx", X(31,519), X_MASK, CELL, {VD, RA0, RB}},
+-{"lbfcmux", APU(31,519,0), APU_MASK, PPC405, {FCRT, RA, RB}},
+-
+-{"subfco", XO(31,8,1,0), XO_MASK, PPCCOM, {RT, RA, RB}},
+-{"sfo", XO(31,8,1,0), XO_MASK, PWRCOM, {RT, RA, RB}},
+-{"subco", XO(31,8,1,0), XO_MASK, PPC, {RT, RB, RA}},
+-{"subfco.", XO(31,8,1,1), XO_MASK, PPCCOM, {RT, RA, RB}},
+-{"sfo.", XO(31,8,1,1), XO_MASK, PWRCOM, {RT, RA, RB}},
+-{"subco.", XO(31,8,1,1), XO_MASK, PPC, {RT, RB, RA}},
+-
+-{"addco", XO(31,10,1,0), XO_MASK, PPCCOM, {RT, RA, RB}},
+-{"ao", XO(31,10,1,0), XO_MASK, PWRCOM, {RT, RA, RB}},
+-{"addco.", XO(31,10,1,1), XO_MASK, PPCCOM, {RT, RA, RB}},
+-{"ao.", XO(31,10,1,1), XO_MASK, PWRCOM, {RT, RA, RB}},
+-
+-{"clcs", X(31,531), XRB_MASK, M601, {RT, RA}},
+-
+-{"ldbrx", X(31,532), X_MASK, CELL, {RT, RA0, RB}},
+-
+-{"lswx", X(31,533), X_MASK, PPCCOM, {RT, RA0, RB}},
+-{"lsx", X(31,533), X_MASK, PWRCOM, {RT, RA, RB}},
+-
+-{"lwbrx", X(31,534), X_MASK, PPCCOM, {RT, RA0, RB}},
+-{"lbrx", X(31,534), X_MASK, PWRCOM, {RT, RA, RB}},
+-
+-{"lfsx", X(31,535), X_MASK, COM, {FRT, RA0, RB}},
+-
+-{"srw", XRC(31,536,0), X_MASK, PPCCOM, {RA, RS, RB}},
+-{"sr", XRC(31,536,0), X_MASK, PWRCOM, {RA, RS, RB}},
+-{"srw.", XRC(31,536,1), X_MASK, PPCCOM, {RA, RS, RB}},
+-{"sr.", XRC(31,536,1), X_MASK, PWRCOM, {RA, RS, RB}},
+-
+-{"rrib", XRC(31,537,0), X_MASK, M601, {RA, RS, RB}},
+-{"rrib.", XRC(31,537,1), X_MASK, M601, {RA, RS, RB}},
+-
+-{"srd", XRC(31,539,0), X_MASK, PPC64, {RA, RS, RB}},
+-{"srd.", XRC(31,539,1), X_MASK, PPC64, {RA, RS, RB}},
+-
+-{"maskir", XRC(31,541,0), X_MASK, M601, {RA, RS, RB}},
+-{"maskir.", XRC(31,541,1), X_MASK, M601, {RA, RS, RB}},
+-
+-{"lwbrxe", X(31,542), X_MASK, BOOKE64, {RT, RA0, RB}},
+-
+-{"lfsxe", X(31,543), X_MASK, BOOKE64, {FRT, RA0, RB}},
+-
+-{"mcrxr64", X(31,544), XRARB_MASK|(3<<21), BOOKE64, {BF}},
+-
+-{"lhdx", X(31,547), X_MASK, E500MC, {RT, RA, RB}},
+-
+-{"bbelr", X(31,550), X_MASK, PPCBRLK, {0}},
+-
+-{"lvrx", X(31,551), X_MASK, CELL, {VD, RA0, RB}},
+-{"lhfcmux", APU(31,551,0), APU_MASK, PPC405, {FCRT, RA, RB}},
+-
+-{"subfo", XO(31,40,1,0), XO_MASK, PPC, {RT, RA, RB}},
+-{"subo", XO(31,40,1,0), XO_MASK, PPC, {RT, RB, RA}},
+-{"subfo.", XO(31,40,1,1), XO_MASK, PPC, {RT, RA, RB}},
+-{"subo.", XO(31,40,1,1), XO_MASK, PPC, {RT, RB, RA}},
+-
+-{"tlbsync", X(31,566), 0xffffffff, PPC, {0}},
+-
+-{"lfsux", X(31,567), X_MASK, COM, {FRT, RAS, RB}},
+-
+-{"lfsuxe", X(31,575), X_MASK, BOOKE64, {FRT, RAS, RB}},
+-
+-{"lwdx", X(31,579), X_MASK, E500MC, {RT, RA, RB}},
+-
+-{"lwfcmux", APU(31,583,0), APU_MASK, PPC405, {FCRT, RA, RB}},
+-
+-{"mfsr", X(31,595), XRB_MASK|(1<<20), COM32, {RT, SR}},
+-
+-{"lswi", X(31,597), X_MASK, PPCCOM, {RT, RA0, NB}},
+-{"lsi", X(31,597), X_MASK, PWRCOM, {RT, RA0, NB}},
+-
+-{"msync", X(31,598), 0xffffffff, BOOKE, {0}},
+-{"lwsync", XSYNC(31,598,1), 0xffffffff, PPC, {0}},
+-{"ptesync", XSYNC(31,598,2), 0xffffffff, PPC64, {0}},
+-{"sync", X(31,598), XSYNC_MASK, PPCCOM, {LS}},
+-{"dcs", X(31,598), 0xffffffff, PWRCOM, {0}},
+-
+-{"lfdx", X(31,599), X_MASK, COM, {FRT, RA0, RB}},
+-
+-{"lfdxe", X(31,607), X_MASK, BOOKE64, {FRT, RA0, RB}},
+-{"lfdepx", X(31,607), X_MASK, E500MC, {RT, RA, RB}},
+-{"mffgpr", XRC(31,607,0), XRA_MASK, POWER6, {FRT, RB}},
+-
+-{"lddx", X(31,611), X_MASK, E500MC, {RT, RA, RB}},
+-
+-{"lqfcmux", APU(31,615,0), APU_MASK, PPC405, {FCRT, RA, RB}},
+-
+-{"nego", XO(31,104,1,0), XORB_MASK, COM, {RT, RA}},
+-{"nego.", XO(31,104,1,1), XORB_MASK, COM, {RT, RA}},
+-
+-{"mulo", XO(31,107,1,0), XO_MASK, M601, {RT, RA, RB}},
+-{"mulo.", XO(31,107,1,1), XO_MASK, M601, {RT, RA, RB}},
+-
+-{"mfsri", X(31,627), X_MASK, PWRCOM, {RT, RA, RB}},
+-
+-{"dclst", X(31,630), XRB_MASK, PWRCOM, {RS, RA}},
+-
+-{"lfdux", X(31,631), X_MASK, COM, {FRT, RAS, RB}},
+-
+-{"lfduxe", X(31,639), X_MASK, BOOKE64, {FRT, RAS, RB}},
+-
+-{"stbdx", X(31,643), X_MASK, E500MC, {RS, RA, RB}},
+-
+-{"stvlx", X(31,647), X_MASK, CELL, {VS, RA0, RB}},
+-{"stbfcmux", APU(31,647,0), APU_MASK, PPC405, {FCRT, RA, RB}},
+-
+-{"subfeo", XO(31,136,1,0), XO_MASK, PPCCOM, {RT, RA, RB}},
+-{"sfeo", XO(31,136,1,0), XO_MASK, PWRCOM, {RT, RA, RB}},
+-{"subfeo.", XO(31,136,1,1), XO_MASK, PPCCOM, {RT, RA, RB}},
+-{"sfeo.", XO(31,136,1,1), XO_MASK, PWRCOM, {RT, RA, RB}},
+-
+-{"addeo", XO(31,138,1,0), XO_MASK, PPCCOM, {RT, RA, RB}},
+-{"aeo", XO(31,138,1,0), XO_MASK, PWRCOM, {RT, RA, RB}},
+-{"addeo.", XO(31,138,1,1), XO_MASK, PPCCOM, {RT, RA, RB}},
+-{"aeo.", XO(31,138,1,1), XO_MASK, PWRCOM, {RT, RA, RB}},
+-
+-{"mfsrin", X(31,659), XRA_MASK, PPC32, {RT, RB}},
+-
+-{"stdbrx", X(31,660), X_MASK, CELL, {RS, RA0, RB}},
+-
+-{"stswx", X(31,661), X_MASK, PPCCOM, {RS, RA0, RB}},
+-{"stsx", X(31,661), X_MASK, PWRCOM, {RS, RA0, RB}},
+-
+-{"stwbrx", X(31,662), X_MASK, PPCCOM, {RS, RA0, RB}},
+-{"stbrx", X(31,662), X_MASK, PWRCOM, {RS, RA0, RB}},
+-
+-{"stfsx", X(31,663), X_MASK, COM, {FRS, RA0, RB}},
+-
+-{"srq", XRC(31,664,0), X_MASK, M601, {RA, RS, RB}},
+-{"srq.", XRC(31,664,1), X_MASK, M601, {RA, RS, RB}},
+-
+-{"sre", XRC(31,665,0), X_MASK, M601, {RA, RS, RB}},
+-{"sre.", XRC(31,665,1), X_MASK, M601, {RA, RS, RB}},
+-
+-{"stwbrxe", X(31,670), X_MASK, BOOKE64, {RS, RA0, RB}},
+-
+-{"stfsxe", X(31,671), X_MASK, BOOKE64, {FRS, RA0, RB}},
+-
+-{"sthdx", X(31,675), X_MASK, E500MC, {RS, RA, RB}},
+-
+-{"stvrx", X(31,679), X_MASK, CELL, {VS, RA0, RB}},
+-{"sthfcmux", APU(31,679,0), APU_MASK, PPC405, {FCRT, RA, RB}},
+-
+-{"stfsux", X(31,695), X_MASK, COM, {FRS, RAS, RB}},
+-
+-{"sriq", XRC(31,696,0), X_MASK, M601, {RA, RS, SH}},
+-{"sriq.", XRC(31,696,1), X_MASK, M601, {RA, RS, SH}},
+-
+-{"stfsuxe", X(31,703), X_MASK, BOOKE64, {FRS, RAS, RB}},
+-
+-{"stwdx", X(31,707), X_MASK, E500MC, {RS, RA, RB}},
+-
+-{"stwfcmux", APU(31,711,0), APU_MASK, PPC405, {FCRT, RA, RB}},
+-
+-{"subfzeo", XO(31,200,1,0), XORB_MASK, PPCCOM, {RT, RA}},
+-{"sfzeo", XO(31,200,1,0), XORB_MASK, PWRCOM, {RT, RA}},
+-{"subfzeo.", XO(31,200,1,1), XORB_MASK, PPCCOM, {RT, RA}},
+-{"sfzeo.", XO(31,200,1,1), XORB_MASK, PWRCOM, {RT, RA}},
+-
+-{"addzeo", XO(31,202,1,0), XORB_MASK, PPCCOM, {RT, RA}},
+-{"azeo", XO(31,202,1,0), XORB_MASK, PWRCOM, {RT, RA}},
+-{"addzeo.", XO(31,202,1,1), XORB_MASK, PPCCOM, {RT, RA}},
+-{"azeo.", XO(31,202,1,1), XORB_MASK, PWRCOM, {RT, RA}},
+-
+-{"stswi", X(31,725), X_MASK, PPCCOM, {RS, RA0, NB}},
+-{"stsi", X(31,725), X_MASK, PWRCOM, {RS, RA0, NB}},
+-
+-{"stfdx", X(31,727), X_MASK, COM, {FRS, RA0, RB}},
+-
+-{"srlq", XRC(31,728,0), X_MASK, M601, {RA, RS, RB}},
+-{"srlq.", XRC(31,728,1), X_MASK, M601, {RA, RS, RB}},
+-
+-{"sreq", XRC(31,729,0), X_MASK, M601, {RA, RS, RB}},
+-{"sreq.", XRC(31,729,1), X_MASK, M601, {RA, RS, RB}},
+-
+-{"stfdxe", X(31,735), X_MASK, BOOKE64, {FRS, RA0, RB}},
+-{"stfdepx", X(31,735), X_MASK, E500MC, {RS, RA, RB}},
+-{"mftgpr", XRC(31,735,0), XRA_MASK, POWER6, {RT, FRB}},
+-
+-{"stddx", X(31,739), X_MASK, E500MC, {RS, RA, RB}},
+-
+-{"stqfcmux", APU(31,743,0), APU_MASK, PPC405, {FCRT, RA, RB}},
+-
+-{"subfmeo", XO(31,232,1,0), XORB_MASK, PPCCOM, {RT, RA}},
+-{"sfmeo", XO(31,232,1,0), XORB_MASK, PWRCOM, {RT, RA}},
+-{"subfmeo.", XO(31,232,1,1), XORB_MASK, PPCCOM, {RT, RA}},
+-{"sfmeo.", XO(31,232,1,1), XORB_MASK, PWRCOM, {RT, RA}},
+-
+-{"mulldo", XO(31,233,1,0), XO_MASK, PPC64, {RT, RA, RB}},
+-{"mulldo.", XO(31,233,1,1), XO_MASK, PPC64, {RT, RA, RB}},
+-
+-{"addmeo", XO(31,234,1,0), XORB_MASK, PPCCOM, {RT, RA}},
+-{"ameo", XO(31,234,1,0), XORB_MASK, PWRCOM, {RT, RA}},
+-{"addmeo.", XO(31,234,1,1), XORB_MASK, PPCCOM, {RT, RA}},
+-{"ameo.", XO(31,234,1,1), XORB_MASK, PWRCOM, {RT, RA}},
+-
+-{"mullwo", XO(31,235,1,0), XO_MASK, PPCCOM, {RT, RA, RB}},
+-{"mulso", XO(31,235,1,0), XO_MASK, PWRCOM, {RT, RA, RB}},
+-{"mullwo.", XO(31,235,1,1), XO_MASK, PPCCOM, {RT, RA, RB}},
+-{"mulso.", XO(31,235,1,1), XO_MASK, PWRCOM, {RT, RA, RB}},
+-
+-{"dcba", X(31,758), XRT_MASK, PPC405|PPC7450|BOOKE, {RA, RB}},
+-{"dcbal", XOPL(31,758,1), XRT_MASK, E500MC, {RA, RB}},
+-
+-{"stfdux", X(31,759), X_MASK, COM, {FRS, RAS, RB}},
+-
+-{"srliq", XRC(31,760,0), X_MASK, M601, {RA, RS, SH}},
+-{"srliq.", XRC(31,760,1), X_MASK, M601, {RA, RS, SH}},
+-
+-{"dcbae", X(31,766), XRT_MASK, BOOKE64, {RA, RB}},
+-
+-{"stfduxe", X(31,767), X_MASK, BOOKE64, {FRS, RAS, RB}},
+-
+-{"lvlxl", X(31,775), X_MASK, CELL, {VD, RA0, RB}},
+-{"ldfcmux", APU(31,775,0), APU_MASK, PPC405, {FCRT, RA, RB}},
+-
+-{"dozo", XO(31,264,1,0), XO_MASK, M601, {RT, RA, RB}},
+-{"dozo.", XO(31,264,1,1), XO_MASK, M601, {RT, RA, RB}},
+-
+-{"addo", XO(31,266,1,0), XO_MASK, PPCCOM, {RT, RA, RB}},
+-{"caxo", XO(31,266,1,0), XO_MASK, PWRCOM, {RT, RA, RB}},
+-{"addo.", XO(31,266,1,1), XO_MASK, PPCCOM, {RT, RA, RB}},
+-{"caxo.", XO(31,266,1,1), XO_MASK, PWRCOM, {RT, RA, RB}},
+-
+-{"tlbivax", X(31,786), XRT_MASK, BOOKE, {RA, RB}},
+-{"tlbivaxe", X(31,787), XRT_MASK, BOOKE64, {RA, RB}},
+-{"tlbilx", X(31,787), X_MASK, E500MC, {T, RA0, RB}},
+-{"tlbilxlpid", XTO(31,787,0), XTO_MASK, E500MC, {0}},
+-{"tlbilxpid", XTO(31,787,1), XTO_MASK, E500MC, {0}},
+-{"tlbilxva", XTO(31,787,3), XTO_MASK, E500MC, {RA0, RB}},
+-
+-{"lwzcix", X(31,789), X_MASK, POWER6, {RT, RA0, RB}},
+-
+-{"lhbrx", X(31,790), X_MASK, COM, {RT, RA0, RB}},
+-
+-{"lfqx", X(31,791), X_MASK, POWER2, {FRT, RA, RB}},
+-{"lfdpx", X(31,791), X_MASK, POWER6, {FRT, RA, RB}},
+-
+-{"sraw", XRC(31,792,0), X_MASK, PPCCOM, {RA, RS, RB}},
+-{"sra", XRC(31,792,0), X_MASK, PWRCOM, {RA, RS, RB}},
+-{"sraw.", XRC(31,792,1), X_MASK, PPCCOM, {RA, RS, RB}},
+-{"sra.", XRC(31,792,1), X_MASK, PWRCOM, {RA, RS, RB}},
+-
+-{"srad", XRC(31,794,0), X_MASK, PPC64, {RA, RS, RB}},
+-{"srad.", XRC(31,794,1), X_MASK, PPC64, {RA, RS, RB}},
+-
+-{"lhbrxe", X(31,798), X_MASK, BOOKE64, {RT, RA0, RB}},
+-
+-{"ldxe", X(31,799), X_MASK, BOOKE64, {RT, RA0, RB}},
+-
+-{"lfddx", X(31,803), X_MASK, E500MC, {FRT, RA, RB}},
+-
+-{"lvrxl", X(31,807), X_MASK, CELL, {VD, RA0, RB}},
+-
+-{"rac", X(31,818), X_MASK, PWRCOM, {RT, RA, RB}},
+-
+-{"lhzcix", X(31,821), X_MASK, POWER6, {RT, RA0, RB}},
+-
+-{"dss", XDSS(31,822,0), XDSS_MASK, PPCVEC, {STRM}},
+-
+-{"lfqux", X(31,823), X_MASK, POWER2, {FRT, RA, RB}},
+-
+-{"srawi", XRC(31,824,0), X_MASK, PPCCOM, {RA, RS, SH}},
+-{"srai", XRC(31,824,0), X_MASK, PWRCOM, {RA, RS, SH}},
+-{"srawi.", XRC(31,824,1), X_MASK, PPCCOM, {RA, RS, SH}},
+-{"srai.", XRC(31,824,1), X_MASK, PWRCOM, {RA, RS, SH}},
+-
+-{"sradi", XS(31,413,0), XS_MASK, PPC64, {RA, RS, SH6}},
+-{"sradi.", XS(31,413,1), XS_MASK, PPC64, {RA, RS, SH6}},
+-
+-{"divo", XO(31,331,1,0), XO_MASK, M601, {RT, RA, RB}},
+-{"divo.", XO(31,331,1,1), XO_MASK, M601, {RT, RA, RB}},
+-{"lduxe", X(31,831), X_MASK, BOOKE64, {RT, RA0, RB}},
+-
+-{"lxvd2x", X(31,844), XX1_MASK, PPCVSX, {XT6, RA, RB}},
+-
+-{"slbmfev", X(31,851), XRA_MASK, PPC64, {RT, RB}},
+-
+-{"lbzcix", X(31,853), X_MASK, POWER6, {RT, RA0, RB}},
+-
+-{"mbar", X(31,854), X_MASK, BOOKE, {MO}},
+-{"eieio", X(31,854), 0xffffffff, PPC, {0}},
+-
+-{"lfiwax", X(31,855), X_MASK, POWER6, {FRT, RA0, RB}},
+-
+-{"abso", XO(31,360,1,0), XORB_MASK, M601, {RT, RA}},
+-{"abso.", XO(31,360,1,1), XORB_MASK, M601, {RT, RA}},
+-
+-{"divso", XO(31,363,1,0), XO_MASK, M601, {RT, RA, RB}},
+-{"divso.", XO(31,363,1,1), XO_MASK, M601, {RT, RA, RB}},
+-
+-{"lxvd2ux", X(31,876), XX1_MASK, PPCVSX, {XT6, RA, RB}},
+-
+-{"ldcix", X(31,885), X_MASK, POWER6, {RT, RA0, RB}},
+-
+-{"stvlxl", X(31,903), X_MASK, CELL, {VS, RA0, RB}},
+-{"stdfcmux", APU(31,903,0), APU_MASK, PPC405, {FCRT, RA, RB}},
+-
+-{"subfe64o", XO(31,392,1,0), XO_MASK, BOOKE64, {RT, RA, RB}},
+-
+-{"adde64o", XO(31,394,1,0), XO_MASK, BOOKE64, {RT, RA, RB}},
+-
+-{"tlbsx", XRC(31,914,0), X_MASK, PPC403|BOOKE, {RTO, RA, RB}},
+-{"tlbsx.", XRC(31,914,1), X_MASK, PPC403|BOOKE, {RTO, RA, RB}},
+-
+-{"tlbsxe", XRC(31,915,0), X_MASK, BOOKE64, {RTO, RA, RB}},
+-{"tlbsxe.", XRC(31,915,1), X_MASK, BOOKE64, {RTO, RA, RB}},
+-{"slbmfee", X(31,915), XRA_MASK, PPC64, {RT, RB}},
+-
+-{"stwcix", X(31,917), X_MASK, POWER6, {RS, RA0, RB}},
+-
+-{"sthbrx", X(31,918), X_MASK, COM, {RS, RA0, RB}},
+-
+-{"stfqx", X(31,919), X_MASK, POWER2, {FRS, RA, RB}},
+-{"stfdpx", X(31,919), X_MASK, POWER6, {FRS, RA, RB}},
+-
+-{"sraq", XRC(31,920,0), X_MASK, M601, {RA, RS, RB}},
+-{"sraq.", XRC(31,920,1), X_MASK, M601, {RA, RS, RB}},
+-
+-{"srea", XRC(31,921,0), X_MASK, M601, {RA, RS, RB}},
+-{"srea.", XRC(31,921,1), X_MASK, M601, {RA, RS, RB}},
+-
+-{"extsh", XRC(31,922,0), XRB_MASK, PPCCOM, {RA, RS}},
+-{"exts", XRC(31,922,0), XRB_MASK, PWRCOM, {RA, RS}},
+-{"extsh.", XRC(31,922,1), XRB_MASK, PPCCOM, {RA, RS}},
+-{"exts.", XRC(31,922,1), XRB_MASK, PWRCOM, {RA, RS}},
+-
+-{"sthbrxe", X(31,926), X_MASK, BOOKE64, {RS, RA0, RB}},
+-
+-{"stdxe", X(31,927), X_MASK, BOOKE64, {RS, RA0, RB}},
+-
+-{"stfddx", X(31,931), X_MASK, E500MC, {FRS, RA, RB}},
+-
+-{"stvrxl", X(31,935), X_MASK, CELL, {VS, RA0, RB}},
+-
+-{"tlbrehi", XTLB(31,946,0), XTLB_MASK, PPC403, {RT, RA}},
+-{"tlbrelo", XTLB(31,946,1), XTLB_MASK, PPC403, {RT, RA}},
+-{"tlbre", X(31,946), X_MASK, PPC403|BOOKE, {RSO, RAOPT, SHO}},
+-
+-{"sthcix", X(31,949), X_MASK, POWER6, {RS, RA0, RB}},
+-
+-{"stfqux", X(31,951), X_MASK, POWER2, {FRS, RA, RB}},
+-
+-{"sraiq", XRC(31,952,0), X_MASK, M601, {RA, RS, SH}},
+-{"sraiq.", XRC(31,952,1), X_MASK, M601, {RA, RS, SH}},
+-
+-{"extsb", XRC(31,954,0), XRB_MASK, PPC, {RA, RS}},
+-{"extsb.", XRC(31,954,1), XRB_MASK, PPC, {RA, RS}},
+-
+-{"stduxe", X(31,959), X_MASK, BOOKE64, {RS, RAS, RB}},
+-
+-{"iccci", X(31,966), XRT_MASK, PPC403|PPC440, {RA, RB}},
+-
+-{"subfze64o", XO(31,456,1,0), XORB_MASK, BOOKE64, {RT, RA}},
+-
+-{"divduo", XO(31,457,1,0), XO_MASK, PPC64, {RT, RA, RB}},
+-{"divduo.", XO(31,457,1,1), XO_MASK, PPC64, {RT, RA, RB}},
+-
+-{"addze64o", XO(31,458,1,0), XORB_MASK, BOOKE64, {RT, RA}},
+-
+-{"divwuo", XO(31,459,1,0), XO_MASK, PPC, {RT, RA, RB}},
+-{"divwuo.", XO(31,459,1,1), XO_MASK, PPC, {RT, RA, RB}},
+-
+-{"stxvd2x", X(31,972), XX1_MASK, PPCVSX, {XS6, RA, RB}},
+-
+-{"tlbwehi", XTLB(31,978,0), XTLB_MASK, PPC403, {RT, RA}},
+-{"tlbwelo", XTLB(31,978,1), XTLB_MASK, PPC403, {RT, RA}},
+-{"tlbwe", X(31,978), X_MASK, PPC403|BOOKE, {RSO, RAOPT, SHO}},
+-{"tlbld", X(31,978), XRTRA_MASK, PPC, {RB}},
+-
+-{"stbcix", X(31,981), X_MASK, POWER6, {RS, RA0, RB}},
+-
+-{"icbi", X(31,982), XRT_MASK, PPC, {RA, RB}},
+-
+-{"stfiwx", X(31,983), X_MASK, PPC, {FRS, RA0, RB}},
+-
+-{"extsw", XRC(31,986,0), XRB_MASK, PPC64|BOOKE64, {RA, RS}},
+-{"extsw.", XRC(31,986,1), XRB_MASK, PPC64, {RA, RS}},
+-
+-{"icbie", X(31,990), XRT_MASK, BOOKE64, {RA, RB}},
+-{"stfiwxe", X(31,991), X_MASK, BOOKE64, {FRS, RA0, RB}},
+-
+-{"icbiep", XRT(31,991,0), XRT_MASK, E500MC, {RA, RB}},
+-
+-{"icread", X(31,998), XRT_MASK, PPC403|PPC440, {RA, RB}},
+-
+-{"nabso", XO(31,488,1,0), XORB_MASK, M601, {RT, RA}},
+-{"subfme64o", XO(31,488,1,0), XORB_MASK, BOOKE64, {RT, RA}},
+-{"nabso.", XO(31,488,1,1), XORB_MASK, M601, {RT, RA}},
+-
+-{"divdo", XO(31,489,1,0), XO_MASK, PPC64, {RT, RA, RB}},
+-{"divdo.", XO(31,489,1,1), XO_MASK, PPC64, {RT, RA, RB}},
+-
+-{"addme64o", XO(31,490,1,0), XORB_MASK, BOOKE64, {RT, RA}},
+-
+-{"divwo", XO(31,491,1,0), XO_MASK, PPC, {RT, RA, RB}},
+-{"divwo.", XO(31,491,1,1), XO_MASK, PPC, {RT, RA, RB}},
+-
+-{"stxvd2ux", X(31,1004), XX1_MASK, PPCVSX, {XS6, RA, RB}},
+-
+-{"tlbli", X(31,1010), XRTRA_MASK, PPC, {RB}},
+-
+-{"stdcix", X(31,1013), X_MASK, POWER6, {RS, RA0, RB}},
+-
+-{"dcbz", X(31,1014), XRT_MASK, PPC, {RA, RB}},
+-{"dclz", X(31,1014), XRT_MASK, PPC, {RA, RB}},
+-
+-{"dcbze", X(31,1022), XRT_MASK, BOOKE64, {RA, RB}},
+-{"dcbzep", XRT(31,1023,0), XRT_MASK, E500MC, {RA, RB}},
+-
+-{"dcbzl", XOPL(31,1014,1), XRT_MASK, POWER4, {RA, RB}},
+-{"dcbzl", XOPL(31,1014,1), XRT_MASK, NOPOWER4|E500MC,{RA, RB}},
+-
+-{"cctpl", 0x7c210b78, 0xffffffff, CELL, {0}},
+-{"cctpm", 0x7c421378, 0xffffffff, CELL, {0}},
+-{"cctph", 0x7c631b78, 0xffffffff, CELL, {0}},
+-
+-{"dstt", XDSS(31,342,1), XDSS_MASK, PPCVEC, {RA, RB, STRM}},
+-{"dststt", XDSS(31,374,1), XDSS_MASK, PPCVEC, {RA, RB, STRM}},
+-{"dssall", XDSS(31,822,1), XDSS_MASK, PPCVEC, {0}},
+-
+-{"db8cyc", 0x7f9ce378, 0xffffffff, CELL, {0}},
+-{"db10cyc", 0x7fbdeb78, 0xffffffff, CELL, {0}},
+-{"db12cyc", 0x7fdef378, 0xffffffff, CELL, {0}},
+-{"db16cyc", 0x7ffffb78, 0xffffffff, CELL, {0}},
+-
+-{"lwz", OP(32), OP_MASK, PPCCOM, {RT, D, RA0}},
+-{"l", OP(32), OP_MASK, PWRCOM, {RT, D, RA0}},
+-
+-{"lwzu", OP(33), OP_MASK, PPCCOM, {RT, D, RAL}},
+-{"lu", OP(33), OP_MASK, PWRCOM, {RT, D, RA0}},
+-
+-{"lbz", OP(34), OP_MASK, COM, {RT, D, RA0}},
+-
+-{"lbzu", OP(35), OP_MASK, COM, {RT, D, RAL}},
+-
+-{"stw", OP(36), OP_MASK, PPCCOM, {RS, D, RA0}},
+-{"st", OP(36), OP_MASK, PWRCOM, {RS, D, RA0}},
+-
+-{"stwu", OP(37), OP_MASK, PPCCOM, {RS, D, RAS}},
+-{"stu", OP(37), OP_MASK, PWRCOM, {RS, D, RA0}},
+-
+-{"stb", OP(38), OP_MASK, COM, {RS, D, RA0}},
+-
+-{"stbu", OP(39), OP_MASK, COM, {RS, D, RAS}},
+-
+-{"lhz", OP(40), OP_MASK, COM, {RT, D, RA0}},
+-
+-{"lhzu", OP(41), OP_MASK, COM, {RT, D, RAL}},
+-
+-{"lha", OP(42), OP_MASK, COM, {RT, D, RA0}},
+-
+-{"lhau", OP(43), OP_MASK, COM, {RT, D, RAL}},
+-
+-{"sth", OP(44), OP_MASK, COM, {RS, D, RA0}},
+-
+-{"sthu", OP(45), OP_MASK, COM, {RS, D, RAS}},
+-
+-{"lmw", OP(46), OP_MASK, PPCCOM, {RT, D, RAM}},
+-{"lm", OP(46), OP_MASK, PWRCOM, {RT, D, RA0}},
+-
+-{"stmw", OP(47), OP_MASK, PPCCOM, {RS, D, RA0}},
+-{"stm", OP(47), OP_MASK, PWRCOM, {RS, D, RA0}},
+-
+-{"lfs", OP(48), OP_MASK, COM, {FRT, D, RA0}},
+-
+-{"lfsu", OP(49), OP_MASK, COM, {FRT, D, RAS}},
+-
+-{"lfd", OP(50), OP_MASK, COM, {FRT, D, RA0}},
+-
+-{"lfdu", OP(51), OP_MASK, COM, {FRT, D, RAS}},
+-
+-{"stfs", OP(52), OP_MASK, COM, {FRS, D, RA0}},
+-
+-{"stfsu", OP(53), OP_MASK, COM, {FRS, D, RAS}},
+-
+-{"stfd", OP(54), OP_MASK, COM, {FRS, D, RA0}},
+-
+-{"stfdu", OP(55), OP_MASK, COM, {FRS, D, RAS}},
+-
+-{"lq", OP(56), OP_MASK, POWER4, {RTQ, DQ, RAQ}},
+-
+-{"lfq", OP(56), OP_MASK, POWER2, {FRT, D, RA0}},
+-
+-{"psq_l", OP(56), OP_MASK, PPCPS, {FRT,PSD,RA,PSW,PSQ}},
+-
+-{"lfqu", OP(57), OP_MASK, POWER2, {FRT, D, RA0}},
+-
+-{"psq_lu", OP(57), OP_MASK, PPCPS, {FRT,PSD,RA,PSW,PSQ}},
+-
+-{"lfdp", OP(57), OP_MASK, POWER6, {FRT, D, RA0}},
+-
+-{"lbze", DEO(58,0), DE_MASK, BOOKE64, {RT, DE, RA0}},
+-{"lbzue", DEO(58,1), DE_MASK, BOOKE64, {RT, DE, RAL}},
+-{"lhze", DEO(58,2), DE_MASK, BOOKE64, {RT, DE, RA0}},
+-{"lhzue", DEO(58,3), DE_MASK, BOOKE64, {RT, DE, RAL}},
+-{"lhae", DEO(58,4), DE_MASK, BOOKE64, {RT, DE, RA0}},
+-{"lhaue", DEO(58,5), DE_MASK, BOOKE64, {RT, DE, RAL}},
+-{"lwze", DEO(58,6), DE_MASK, BOOKE64, {RT, DE, RA0}},
+-{"lwzue", DEO(58,7), DE_MASK, BOOKE64, {RT, DE, RAL}},
+-{"stbe", DEO(58,8), DE_MASK, BOOKE64, {RS, DE, RA0}},
+-{"stbue", DEO(58,9), DE_MASK, BOOKE64, {RS, DE, RAS}},
+-{"sthe", DEO(58,10), DE_MASK, BOOKE64, {RS, DE, RA0}},
+-{"sthue", DEO(58,11), DE_MASK, BOOKE64, {RS, DE, RAS}},
+-{"stwe", DEO(58,14), DE_MASK, BOOKE64, {RS, DE, RA0}},
+-{"stwue", DEO(58,15), DE_MASK, BOOKE64, {RS, DE, RAS}},
+-
+-{"ld", DSO(58,0), DS_MASK, PPC64, {RT, DS, RA0}},
+-{"ldu", DSO(58,1), DS_MASK, PPC64, {RT, DS, RAL}},
+-{"lwa", DSO(58,2), DS_MASK, PPC64, {RT, DS, RA0}},
+-
+-{"dadd", XRC(59,2,0), X_MASK, POWER6, {FRT, FRA, FRB}},
+-{"dadd.", XRC(59,2,1), X_MASK, POWER6, {FRT, FRA, FRB}},
+-
+-{"dqua", ZRC(59,3,0), Z2_MASK, POWER6, {FRT,FRA,FRB,RMC}},
+-{"dqua.", ZRC(59,3,1), Z2_MASK, POWER6, {FRT,FRA,FRB,RMC}},
+-
+-{"fdivs", A(59,18,0), AFRC_MASK, PPC, {FRT, FRA, FRB}},
+-{"fdivs.", A(59,18,1), AFRC_MASK, PPC, {FRT, FRA, FRB}},
+-
+-{"fsubs", A(59,20,0), AFRC_MASK, PPC, {FRT, FRA, FRB}},
+-{"fsubs.", A(59,20,1), AFRC_MASK, PPC, {FRT, FRA, FRB}},
+-
+-{"fadds", A(59,21,0), AFRC_MASK, PPC, {FRT, FRA, FRB}},
+-{"fadds.", A(59,21,1), AFRC_MASK, PPC, {FRT, FRA, FRB}},
+-
+-{"fsqrts", A(59,22,0), AFRAFRC_MASK, PPC, {FRT, FRB}},
+-{"fsqrts.", A(59,22,1), AFRAFRC_MASK, PPC, {FRT, FRB}},
+-
+-{"fres", A(59,24,0), AFRALFRC_MASK, PPC, {FRT, FRB, A_L}},
+-{"fres.", A(59,24,1), AFRALFRC_MASK, PPC, {FRT, FRB, A_L}},
+-
+-{"fmuls", A(59,25,0), AFRB_MASK, PPC, {FRT, FRA, FRC}},
+-{"fmuls.", A(59,25,1), AFRB_MASK, PPC, {FRT, FRA, FRC}},
+-
+-{"frsqrtes", A(59,26,0), AFRALFRC_MASK, POWER5, {FRT, FRB, A_L}},
+-{"frsqrtes.", A(59,26,1), AFRALFRC_MASK, POWER5, {FRT, FRB, A_L}},
+-
+-{"fmsubs", A(59,28,0), A_MASK, PPC, {FRT, FRA, FRC, FRB}},
+-{"fmsubs.", A(59,28,1), A_MASK, PPC, {FRT, FRA, FRC, FRB}},
+-
+-{"fmadds", A(59,29,0), A_MASK, PPC, {FRT, FRA, FRC, FRB}},
+-{"fmadds.", A(59,29,1), A_MASK, PPC, {FRT, FRA, FRC, FRB}},
+-
+-{"fnmsubs", A(59,30,0), A_MASK, PPC, {FRT, FRA, FRC, FRB}},
+-{"fnmsubs.", A(59,30,1), A_MASK, PPC, {FRT, FRA, FRC, FRB}},
+-
+-{"fnmadds", A(59,31,0), A_MASK, PPC, {FRT, FRA, FRC, FRB}},
+-{"fnmadds.", A(59,31,1), A_MASK, PPC, {FRT, FRA, FRC, FRB}},
+-
+-{"dmul", XRC(59,34,0), X_MASK, POWER6, {FRT, FRA, FRB}},
+-{"dmul.", XRC(59,34,1), X_MASK, POWER6, {FRT, FRA, FRB}},
+-
+-{"drrnd", ZRC(59,35,0), Z2_MASK, POWER6, {FRT, FRA, FRB, RMC}},
+-{"drrnd.", ZRC(59,35,1), Z2_MASK, POWER6, {FRT, FRA, FRB, RMC}},
+-
+-{"dscli", ZRC(59,66,0), Z_MASK, POWER6, {FRT, FRA, SH16}},
+-{"dscli.", ZRC(59,66,1), Z_MASK, POWER6, {FRT, FRA, SH16}},
+-
+-{"dquai", ZRC(59,67,0), Z2_MASK, POWER6, {TE, FRT,FRB,RMC}},
+-{"dquai.", ZRC(59,67,1), Z2_MASK, POWER6, {TE, FRT,FRB,RMC}},
+-
+-{"dscri", ZRC(59,98,0), Z_MASK, POWER6, {FRT, FRA, SH16}},
+-{"dscri.", ZRC(59,98,1), Z_MASK, POWER6, {FRT, FRA, SH16}},
+-
+-{"drintx", ZRC(59,99,0), Z2_MASK, POWER6, {R, FRT, FRB, RMC}},
+-{"drintx.", ZRC(59,99,1), Z2_MASK, POWER6, {R, FRT, FRB, RMC}},
+-
+-{"dcmpo", X(59,130), X_MASK, POWER6, {BF, FRA, FRB}},
+-
+-{"dtstex", X(59,162), X_MASK, POWER6, {BF, FRA, FRB}},
+-{"dtstdc", Z(59,194), Z_MASK, POWER6, {BF, FRA, DCM}},
+-{"dtstdg", Z(59,226), Z_MASK, POWER6, {BF, FRA, DGM}},
+-
+-{"drintn", ZRC(59,227,0), Z2_MASK, POWER6, {R, FRT, FRB, RMC}},
+-{"drintn.", ZRC(59,227,1), Z2_MASK, POWER6, {R, FRT, FRB, RMC}},
+-
+-{"dctdp", XRC(59,258,0), X_MASK, POWER6, {FRT, FRB}},
+-{"dctdp.", XRC(59,258,1), X_MASK, POWER6, {FRT, FRB}},
+-
+-{"dctfix", XRC(59,290,0), X_MASK, POWER6, {FRT, FRB}},
+-{"dctfix.", XRC(59,290,1), X_MASK, POWER6, {FRT, FRB}},
+-
+-{"ddedpd", XRC(59,322,0), X_MASK, POWER6, {SP, FRT, FRB}},
+-{"ddedpd.", XRC(59,322,1), X_MASK, POWER6, {SP, FRT, FRB}},
+-
+-{"dxex", XRC(59,354,0), X_MASK, POWER6, {FRT, FRB}},
+-{"dxex.", XRC(59,354,1), X_MASK, POWER6, {FRT, FRB}},
+-
+-{"dsub", XRC(59,514,0), X_MASK, POWER6, {FRT, FRA, FRB}},
+-{"dsub.", XRC(59,514,1), X_MASK, POWER6, {FRT, FRA, FRB}},
+-
+-{"ddiv", XRC(59,546,0), X_MASK, POWER6, {FRT, FRA, FRB}},
+-{"ddiv.", XRC(59,546,1), X_MASK, POWER6, {FRT, FRA, FRB}},
+-
+-{"dcmpu", X(59,642), X_MASK, POWER6, {BF, FRA, FRB}},
+-
+-{"dtstsf", X(59,674), X_MASK, POWER6, {BF, FRA, FRB}},
+-
+-{"drsp", XRC(59,770,0), X_MASK, POWER6, {FRT, FRB}},
+-{"drsp.", XRC(59,770,1), X_MASK, POWER6, {FRT, FRB}},
+-
+-{"denbcd", XRC(59,834,0), X_MASK, POWER6, {S, FRT, FRB}},
+-{"denbcd.", XRC(59,834,1), X_MASK, POWER6, {S, FRT, FRB}},
+-
+-{"diex", XRC(59,866,0), X_MASK, POWER6, {FRT, FRA, FRB}},
+-{"diex.", XRC(59,866,1), X_MASK, POWER6, {FRT, FRA, FRB}},
+-
+-{"stfq", OP(60), OP_MASK, POWER2, {FRS, D, RA}},
+-
+-{"psq_st", OP(60), OP_MASK, PPCPS, {FRS,PSD,RA,PSW,PSQ}},
+-
+-{"xxmrghd", XX3(60,10), XX3_MASK, PPCVSX, {XT6, XA6, XB6}},
+-{"xxmrgld", XX3(60,10)|(3<<8), XX3_MASK, PPCVSX, {XT6, XA6, XB6}},
+-{"xxpermdi", XX3(60,10), XX3DM_MASK, PPCVSX, {XT6, XA6, XB6, DM}},
+-{"xvmovdp", XX3(60,240), XX3_MASK, PPCVSX, {XT6, XA6, XB6S}},
+-{"xvcpsgndp", XX3(60,240), XX3_MASK, PPCVSX, {XT6, XA6, XB6}},
+-
+-{"psq_stu", OP(61), OP_MASK, PPCPS, {FRS,PSD,RA,PSW,PSQ}},
+-
+-{"stfqu", OP(61), OP_MASK, POWER2, {FRS, D, RA}},
+-
+-{"stfdp", OP(61), OP_MASK, POWER6, {FRT, D, RA0}},
+-
+-{"lde", DEO(62,0), DE_MASK, BOOKE64, {RT, DES, RA0}},
+-{"ldue", DEO(62,1), DE_MASK, BOOKE64, {RT, DES, RA0}},
+-{"lfse", DEO(62,4), DE_MASK, BOOKE64, {FRT, DES, RA0}},
+-{"lfsue", DEO(62,5), DE_MASK, BOOKE64, {FRT, DES, RAS}},
+-{"lfde", DEO(62,6), DE_MASK, BOOKE64, {FRT, DES, RA0}},
+-{"lfdue", DEO(62,7), DE_MASK, BOOKE64, {FRT, DES, RAS}},
+-{"stde", DEO(62,8), DE_MASK, BOOKE64, {RS, DES, RA0}},
+-{"stdue", DEO(62,9), DE_MASK, BOOKE64, {RS, DES, RAS}},
+-{"stfse", DEO(62,12), DE_MASK, BOOKE64, {FRS, DES, RA0}},
+-{"stfsue", DEO(62,13), DE_MASK, BOOKE64, {FRS, DES, RAS}},
+-{"stfde", DEO(62,14), DE_MASK, BOOKE64, {FRS, DES, RA0}},
+-{"stfdue", DEO(62,15), DE_MASK, BOOKE64, {FRS, DES, RAS}},
+-
+-{"std", DSO(62,0), DS_MASK, PPC64, {RS, DS, RA0}},
+-{"stdu", DSO(62,1), DS_MASK, PPC64, {RS, DS, RAS}},
+-{"stq", DSO(62,2), DS_MASK, POWER4, {RSQ, DS, RA0}},
+-
+-{"fcmpu", X(63,0), X_MASK|(3<<21), COM, {BF, FRA, FRB}},
+-
+-{"daddq", XRC(63,2,0), X_MASK, POWER6, {FRT, FRA, FRB}},
+-{"daddq.", XRC(63,2,1), X_MASK, POWER6, {FRT, FRA, FRB}},
+-
+-{"dquaq", ZRC(63,3,0), Z2_MASK, POWER6, {FRT, FRA, FRB, RMC}},
+-{"dquaq.", ZRC(63,3,1), Z2_MASK, POWER6, {FRT, FRA, FRB, RMC}},
+-
+-{"fcpsgn", XRC(63,8,0), X_MASK, POWER6, {FRT, FRA, FRB}},
+-{"fcpsgn.", XRC(63,8,1), X_MASK, POWER6, {FRT, FRA, FRB}},
+-
+-{"frsp", XRC(63,12,0), XRA_MASK, COM, {FRT, FRB}},
+-{"frsp.", XRC(63,12,1), XRA_MASK, COM, {FRT, FRB}},
+-
+-{"fctiw", XRC(63,14,0), XRA_MASK, PPCCOM, {FRT, FRB}},
+-{"fcir", XRC(63,14,0), XRA_MASK, POWER2, {FRT, FRB}},
+-{"fctiw.", XRC(63,14,1), XRA_MASK, PPCCOM, {FRT, FRB}},
+-{"fcir.", XRC(63,14,1), XRA_MASK, POWER2, {FRT, FRB}},
+-
+-{"fctiwz", XRC(63,15,0), XRA_MASK, PPCCOM, {FRT, FRB}},
+-{"fcirz", XRC(63,15,0), XRA_MASK, POWER2, {FRT, FRB}},
+-{"fctiwz.", XRC(63,15,1), XRA_MASK, PPCCOM, {FRT, FRB}},
+-{"fcirz.", XRC(63,15,1), XRA_MASK, POWER2, {FRT, FRB}},
+-
+-{"fdiv", A(63,18,0), AFRC_MASK, PPCCOM, {FRT, FRA, FRB}},
+-{"fd", A(63,18,0), AFRC_MASK, PWRCOM, {FRT, FRA, FRB}},
+-{"fdiv.", A(63,18,1), AFRC_MASK, PPCCOM, {FRT, FRA, FRB}},
+-{"fd.", A(63,18,1), AFRC_MASK, PWRCOM, {FRT, FRA, FRB}},
+-
+-{"fsub", A(63,20,0), AFRC_MASK, PPCCOM, {FRT, FRA, FRB}},
+-{"fs", A(63,20,0), AFRC_MASK, PWRCOM, {FRT, FRA, FRB}},
+-{"fsub.", A(63,20,1), AFRC_MASK, PPCCOM, {FRT, FRA, FRB}},
+-{"fs.", A(63,20,1), AFRC_MASK, PWRCOM, {FRT, FRA, FRB}},
+-
+-{"fadd", A(63,21,0), AFRC_MASK, PPCCOM, {FRT, FRA, FRB}},
+-{"fa", A(63,21,0), AFRC_MASK, PWRCOM, {FRT, FRA, FRB}},
+-{"fadd.", A(63,21,1), AFRC_MASK, PPCCOM, {FRT, FRA, FRB}},
+-{"fa.", A(63,21,1), AFRC_MASK, PWRCOM, {FRT, FRA, FRB}},
+-
+-{"fsqrt", A(63,22,0), AFRAFRC_MASK, PPCPWR2, {FRT, FRB}},
+-{"fsqrt.", A(63,22,1), AFRAFRC_MASK, PPCPWR2, {FRT, FRB}},
+-
+-{"fsel", A(63,23,0), A_MASK, PPC, {FRT, FRA, FRC, FRB}},
+-{"fsel.", A(63,23,1), A_MASK, PPC, {FRT, FRA, FRC, FRB}},
+-
+-{"fre", A(63,24,0), AFRALFRC_MASK, POWER5, {FRT, FRB, A_L}},
+-{"fre.", A(63,24,1), AFRALFRC_MASK, POWER5, {FRT, FRB, A_L}},
+-
+-{"fmul", A(63,25,0), AFRB_MASK, PPCCOM, {FRT, FRA, FRC}},
+-{"fm", A(63,25,0), AFRB_MASK, PWRCOM, {FRT, FRA, FRC}},
+-{"fmul.", A(63,25,1), AFRB_MASK, PPCCOM, {FRT, FRA, FRC}},
+-{"fm.", A(63,25,1), AFRB_MASK, PWRCOM, {FRT, FRA, FRC}},
+-
+-{"frsqrte", A(63,26,0), AFRALFRC_MASK, PPC, {FRT, FRB, A_L}},
+-{"frsqrte.", A(63,26,1), AFRALFRC_MASK, PPC, {FRT, FRB, A_L}},
+-
+-{"fmsub", A(63,28,0), A_MASK, PPCCOM, {FRT, FRA, FRC, FRB}},
+-{"fms", A(63,28,0), A_MASK, PWRCOM, {FRT, FRA, FRC, FRB}},
+-{"fmsub.", A(63,28,1), A_MASK, PPCCOM, {FRT, FRA, FRC, FRB}},
+-{"fms.", A(63,28,1), A_MASK, PWRCOM, {FRT, FRA, FRC, FRB}},
+-
+-{"fmadd", A(63,29,0), A_MASK, PPCCOM, {FRT, FRA, FRC, FRB}},
+-{"fma", A(63,29,0), A_MASK, PWRCOM, {FRT, FRA, FRC, FRB}},
+-{"fmadd.", A(63,29,1), A_MASK, PPCCOM, {FRT, FRA, FRC, FRB}},
+-{"fma.", A(63,29,1), A_MASK, PWRCOM, {FRT, FRA, FRC, FRB}},
+-
+-{"fnmsub", A(63,30,0), A_MASK, PPCCOM, {FRT, FRA, FRC, FRB}},
+-{"fnms", A(63,30,0), A_MASK, PWRCOM, {FRT, FRA, FRC, FRB}},
+-{"fnmsub.", A(63,30,1), A_MASK, PPCCOM, {FRT, FRA, FRC, FRB}},
+-{"fnms.", A(63,30,1), A_MASK, PWRCOM, {FRT, FRA, FRC, FRB}},
+-
+-{"fnmadd", A(63,31,0), A_MASK, PPCCOM, {FRT, FRA, FRC, FRB}},
+-{"fnma", A(63,31,0), A_MASK, PWRCOM, {FRT, FRA, FRC, FRB}},
+-{"fnmadd.", A(63,31,1), A_MASK, PPCCOM, {FRT, FRA, FRC, FRB}},
+-{"fnma.", A(63,31,1), A_MASK, PWRCOM, {FRT, FRA, FRC, FRB}},
+-
+-{"fcmpo", X(63,32), X_MASK|(3<<21), COM, {BF, FRA, FRB}},
+-
+-{"dmulq", XRC(63,34,0), X_MASK, POWER6, {FRT, FRA, FRB}},
+-{"dmulq.", XRC(63,34,1), X_MASK, POWER6, {FRT, FRA, FRB}},
+-
+-{"drrndq", ZRC(63,35,0), Z2_MASK, POWER6, {FRT, FRA, FRB, RMC}},
+-{"drrndq.", ZRC(63,35,1), Z2_MASK, POWER6, {FRT, FRA, FRB, RMC}},
+-
+-{"mtfsb1", XRC(63,38,0), XRARB_MASK, COM, {BT}},
+-{"mtfsb1.", XRC(63,38,1), XRARB_MASK, COM, {BT}},
+-
+-{"fneg", XRC(63,40,0), XRA_MASK, COM, {FRT, FRB}},
+-{"fneg.", XRC(63,40,1), XRA_MASK, COM, {FRT, FRB}},
+-
+-{"mcrfs", X(63,64), XRB_MASK|(3<<21)|(3<<16), COM, {BF, BFA}},
+-
+-{"dscliq", ZRC(63,66,0), Z_MASK, POWER6, {FRT, FRA, SH16}},
+-{"dscliq.", ZRC(63,66,1), Z_MASK, POWER6, {FRT, FRA, SH16}},
+-
+-{"dquaiq", ZRC(63,67,0), Z2_MASK, POWER6, {TE, FRT, FRB, RMC}},
+-{"dquaiq.", ZRC(63,67,1), Z2_MASK, POWER6, {TE, FRT, FRB, RMC}},
+-
+-{"mtfsb0", XRC(63,70,0), XRARB_MASK, COM, {BT}},
+-{"mtfsb0.", XRC(63,70,1), XRARB_MASK, COM, {BT}},
+-
+-{"fmr", XRC(63,72,0), XRA_MASK, COM, {FRT, FRB}},
+-{"fmr.", XRC(63,72,1), XRA_MASK, COM, {FRT, FRB}},
+-
+-{"dscriq", ZRC(63,98,0), Z_MASK, POWER6, {FRT, FRA, SH16}},
+-{"dscriq.", ZRC(63,98,1), Z_MASK, POWER6, {FRT, FRA, SH16}},
+-
+-{"drintxq", ZRC(63,99,0), Z2_MASK, POWER6, {R, FRT, FRB, RMC}},
+-{"drintxq.", ZRC(63,99,1), Z2_MASK, POWER6, {R, FRT, FRB, RMC}},
+-
+-{"dcmpoq", X(63,130), X_MASK, POWER6, {BF, FRA, FRB}},
+-
+-{"mtfsfi", XRC(63,134,0), XWRA_MASK|(3<<21)|(1<<11), COM, {BFF, U, W}},
+-{"mtfsfi.", XRC(63,134,1), XWRA_MASK|(3<<21)|(1<<11), COM, {BFF, U, W}},
+-
+-{"fnabs", XRC(63,136,0), XRA_MASK, COM, {FRT, FRB}},
+-{"fnabs.", XRC(63,136,1), XRA_MASK, COM, {FRT, FRB}},
+-
+-{"dtstexq", X(63,162), X_MASK, POWER6, {BF, FRA, FRB}},
+-{"dtstdcq", Z(63,194), Z_MASK, POWER6, {BF, FRA, DCM}},
+-{"dtstdgq", Z(63,226), Z_MASK, POWER6, {BF, FRA, DGM}},
+-
+-{"drintnq", ZRC(63,227,0), Z2_MASK, POWER6, {R, FRT, FRB, RMC}},
+-{"drintnq.", ZRC(63,227,1), Z2_MASK, POWER6, {R, FRT, FRB, RMC}},
+-
+-{"dctqpq", XRC(63,258,0), X_MASK, POWER6, {FRT, FRB}},
+-{"dctqpq.", XRC(63,258,1), X_MASK, POWER6, {FRT, FRB}},
+-
+-{"fabs", XRC(63,264,0), XRA_MASK, COM, {FRT, FRB}},
+-{"fabs.", XRC(63,264,1), XRA_MASK, COM, {FRT, FRB}},
+-
+-{"dctfixq", XRC(63,290,0), X_MASK, POWER6, {FRT, FRB}},
+-{"dctfixq.", XRC(63,290,1), X_MASK, POWER6, {FRT, FRB}},
+-
+-{"ddedpdq", XRC(63,322,0), X_MASK, POWER6, {SP, FRT, FRB}},
+-{"ddedpdq.", XRC(63,322,1), X_MASK, POWER6, {SP, FRT, FRB}},
+-
+-{"dxexq", XRC(63,354,0), X_MASK, POWER6, {FRT, FRB}},
+-{"dxexq.", XRC(63,354,1), X_MASK, POWER6, {FRT, FRB}},
+-
+-{"frin", XRC(63,392,0), XRA_MASK, POWER5, {FRT, FRB}},
+-{"frin.", XRC(63,392,1), XRA_MASK, POWER5, {FRT, FRB}},
+-{"friz", XRC(63,424,0), XRA_MASK, POWER5, {FRT, FRB}},
+-{"friz.", XRC(63,424,1), XRA_MASK, POWER5, {FRT, FRB}},
+-{"frip", XRC(63,456,0), XRA_MASK, POWER5, {FRT, FRB}},
+-{"frip.", XRC(63,456,1), XRA_MASK, POWER5, {FRT, FRB}},
+-{"frim", XRC(63,488,0), XRA_MASK, POWER5, {FRT, FRB}},
+-{"frim.", XRC(63,488,1), XRA_MASK, POWER5, {FRT, FRB}},
+-
+-{"dsubq", XRC(63,514,0), X_MASK, POWER6, {FRT, FRA, FRB}},
+-{"dsubq.", XRC(63,514,1), X_MASK, POWER6, {FRT, FRA, FRB}},
+-
+-{"ddivq", XRC(63,546,0), X_MASK, POWER6, {FRT, FRA, FRB}},
+-{"ddivq.", XRC(63,546,1), X_MASK, POWER6, {FRT, FRA, FRB}},
+-
+-{"mffs", XRC(63,583,0), XRARB_MASK, COM, {FRT}},
+-{"mffs.", XRC(63,583,1), XRARB_MASK, COM, {FRT}},
+-
+-{"dcmpuq", X(63,642), X_MASK, POWER6, {BF, FRA, FRB}},
+-
+-{"dtstsfq", X(63,674), X_MASK, POWER6, {BF, FRA, FRB}},
+-
+-{"mtfsf", XFL(63,711,0), XFL_MASK, COM, {FLM, FRB, XFL_L, W}},
+-{"mtfsf.", XFL(63,711,1), XFL_MASK, COM, {FLM, FRB, XFL_L, W}},
+-
+-{"drdpq", XRC(63,770,0), X_MASK, POWER6, {FRT, FRB}},
+-{"drdpq.", XRC(63,770,1), X_MASK, POWER6, {FRT, FRB}},
+-
+-{"dcffixq", XRC(63,802,0), X_MASK, POWER6, {FRT, FRB}},
+-{"dcffixq.", XRC(63,802,1), X_MASK, POWER6, {FRT, FRB}},
+-
+-{"fctid", XRC(63,814,0), XRA_MASK, PPC64, {FRT, FRB}},
+-{"fctid.", XRC(63,814,1), XRA_MASK, PPC64, {FRT, FRB}},
+-
+-{"fctidz", XRC(63,815,0), XRA_MASK, PPC64, {FRT, FRB}},
+-{"fctidz.", XRC(63,815,1), XRA_MASK, PPC64, {FRT, FRB}},
+-
+-{"denbcdq", XRC(63,834,0), X_MASK, POWER6, {S, FRT, FRB}},
+-{"denbcdq.", XRC(63,834,1), X_MASK, POWER6, {S, FRT, FRB}},
++{"attn", X(0,256), X_MASK, POWER4, PPCNONE, {0}},
++{"tdlgti", OPTO(2,TOLGT), OPTO_MASK, PPC64, PPCNONE, {RA, SI}},
++{"tdllti", OPTO(2,TOLLT), OPTO_MASK, PPC64, PPCNONE, {RA, SI}},
++{"tdeqi", OPTO(2,TOEQ), OPTO_MASK, PPC64, PPCNONE, {RA, SI}},
++{"tdlgei", OPTO(2,TOLGE), OPTO_MASK, PPC64, PPCNONE, {RA, SI}},
++{"tdlnli", OPTO(2,TOLNL), OPTO_MASK, PPC64, PPCNONE, {RA, SI}},
++{"tdllei", OPTO(2,TOLLE), OPTO_MASK, PPC64, PPCNONE, {RA, SI}},
++{"tdlngi", OPTO(2,TOLNG), OPTO_MASK, PPC64, PPCNONE, {RA, SI}},
++{"tdgti", OPTO(2,TOGT), OPTO_MASK, PPC64, PPCNONE, {RA, SI}},
++{"tdgei", OPTO(2,TOGE), OPTO_MASK, PPC64, PPCNONE, {RA, SI}},
++{"tdnli", OPTO(2,TONL), OPTO_MASK, PPC64, PPCNONE, {RA, SI}},
++{"tdlti", OPTO(2,TOLT), OPTO_MASK, PPC64, PPCNONE, {RA, SI}},
++{"tdlei", OPTO(2,TOLE), OPTO_MASK, PPC64, PPCNONE, {RA, SI}},
++{"tdngi", OPTO(2,TONG), OPTO_MASK, PPC64, PPCNONE, {RA, SI}},
++{"tdnei", OPTO(2,TONE), OPTO_MASK, PPC64, PPCNONE, {RA, SI}},
++{"tdi", OP(2), OP_MASK, PPC64, PPCNONE, {TO, RA, SI}},
++
++{"twlgti", OPTO(3,TOLGT), OPTO_MASK, PPCCOM, PPCNONE, {RA, SI}},
++{"tlgti", OPTO(3,TOLGT), OPTO_MASK, PWRCOM, PPCNONE, {RA, SI}},
++{"twllti", OPTO(3,TOLLT), OPTO_MASK, PPCCOM, PPCNONE, {RA, SI}},
++{"tllti", OPTO(3,TOLLT), OPTO_MASK, PWRCOM, PPCNONE, {RA, SI}},
++{"tweqi", OPTO(3,TOEQ), OPTO_MASK, PPCCOM, PPCNONE, {RA, SI}},
++{"teqi", OPTO(3,TOEQ), OPTO_MASK, PWRCOM, PPCNONE, {RA, SI}},
++{"twlgei", OPTO(3,TOLGE), OPTO_MASK, PPCCOM, PPCNONE, {RA, SI}},
++{"tlgei", OPTO(3,TOLGE), OPTO_MASK, PWRCOM, PPCNONE, {RA, SI}},
++{"twlnli", OPTO(3,TOLNL), OPTO_MASK, PPCCOM, PPCNONE, {RA, SI}},
++{"tlnli", OPTO(3,TOLNL), OPTO_MASK, PWRCOM, PPCNONE, {RA, SI}},
++{"twllei", OPTO(3,TOLLE), OPTO_MASK, PPCCOM, PPCNONE, {RA, SI}},
++{"tllei", OPTO(3,TOLLE), OPTO_MASK, PWRCOM, PPCNONE, {RA, SI}},
++{"twlngi", OPTO(3,TOLNG), OPTO_MASK, PPCCOM, PPCNONE, {RA, SI}},
++{"tlngi", OPTO(3,TOLNG), OPTO_MASK, PWRCOM, PPCNONE, {RA, SI}},
++{"twgti", OPTO(3,TOGT), OPTO_MASK, PPCCOM, PPCNONE, {RA, SI}},
++{"tgti", OPTO(3,TOGT), OPTO_MASK, PWRCOM, PPCNONE, {RA, SI}},
++{"twgei", OPTO(3,TOGE), OPTO_MASK, PPCCOM, PPCNONE, {RA, SI}},
++{"tgei", OPTO(3,TOGE), OPTO_MASK, PWRCOM, PPCNONE, {RA, SI}},
++{"twnli", OPTO(3,TONL), OPTO_MASK, PPCCOM, PPCNONE, {RA, SI}},
++{"tnli", OPTO(3,TONL), OPTO_MASK, PWRCOM, PPCNONE, {RA, SI}},
++{"twlti", OPTO(3,TOLT), OPTO_MASK, PPCCOM, PPCNONE, {RA, SI}},
++{"tlti", OPTO(3,TOLT), OPTO_MASK, PWRCOM, PPCNONE, {RA, SI}},
++{"twlei", OPTO(3,TOLE), OPTO_MASK, PPCCOM, PPCNONE, {RA, SI}},
++{"tlei", OPTO(3,TOLE), OPTO_MASK, PWRCOM, PPCNONE, {RA, SI}},
++{"twngi", OPTO(3,TONG), OPTO_MASK, PPCCOM, PPCNONE, {RA, SI}},
++{"tngi", OPTO(3,TONG), OPTO_MASK, PWRCOM, PPCNONE, {RA, SI}},
++{"twnei", OPTO(3,TONE), OPTO_MASK, PPCCOM, PPCNONE, {RA, SI}},
++{"tnei", OPTO(3,TONE), OPTO_MASK, PWRCOM, PPCNONE, {RA, SI}},
++{"twi", OP(3), OP_MASK, PPCCOM, PPCNONE, {TO, RA, SI}},
++{"ti", OP(3), OP_MASK, PWRCOM, PPCNONE, {TO, RA, SI}},
++
++{"ps_cmpu0", X (4, 0), X_MASK|(3<<21), PPCPS, PPCNONE, {BF, FRA, FRB}},
++{"vaddubm", VX (4, 0), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vmaxub", VX (4, 2), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vrlb", VX (4, 4), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vcmpequb", VXR(4, 6,0), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vmuloub", VX (4, 8), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vaddfp", VX (4, 10), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"psq_lx", XW (4, 6,0), XW_MASK, PPCPS, PPCNONE, {FRT,RA,RB,PSWM,PSQM}},
++{"vmrghb", VX (4, 12), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"psq_stx", XW (4, 7,0), XW_MASK, PPCPS, PPCNONE, {FRS,RA,RB,PSWM,PSQM}},
++{"vpkuhum", VX (4, 14), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"mulhhwu", XRC(4, 8,0), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"mulhhwu.", XRC(4, 8,1), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"ps_sum0", A (4, 10,0), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"ps_sum0.", A (4, 10,1), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"ps_sum1", A (4, 11,0), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"ps_sum1.", A (4, 11,1), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"ps_muls0", A (4, 12,0), AFRB_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC}},
++{"machhwu", XO (4, 12,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"ps_muls0.", A (4, 12,1), AFRB_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC}},
++{"machhwu.", XO (4, 12,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"ps_muls1", A (4, 13,0), AFRB_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC}},
++{"ps_muls1.", A (4, 13,1), AFRB_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC}},
++{"ps_madds0", A (4, 14,0), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"ps_madds0.", A (4, 14,1), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"ps_madds1", A (4, 15,0), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"ps_madds1.", A (4, 15,1), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"vmhaddshs", VXA(4, 32), VXA_MASK, PPCVEC, PPCNONE, {VD, VA, VB, VC}},
++{"vmhraddshs", VXA(4, 33), VXA_MASK, PPCVEC, PPCNONE, {VD, VA, VB, VC}},
++{"vmladduhm", VXA(4, 34), VXA_MASK, PPCVEC, PPCNONE, {VD, VA, VB, VC}},
++{"ps_div", A (4, 18,0), AFRC_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
++{"vmsumubm", VXA(4, 36), VXA_MASK, PPCVEC, PPCNONE, {VD, VA, VB, VC}},
++{"ps_div.", A (4, 18,1), AFRC_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
++{"vmsummbm", VXA(4, 37), VXA_MASK, PPCVEC, PPCNONE, {VD, VA, VB, VC}},
++{"vmsumuhm", VXA(4, 38), VXA_MASK, PPCVEC, PPCNONE, {VD, VA, VB, VC}},
++{"vmsumuhs", VXA(4, 39), VXA_MASK, PPCVEC, PPCNONE, {VD, VA, VB, VC}},
++{"ps_sub", A (4, 20,0), AFRC_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
++{"vmsumshm", VXA(4, 40), VXA_MASK, PPCVEC, PPCNONE, {VD, VA, VB, VC}},
++{"ps_sub.", A (4, 20,1), AFRC_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
++{"vmsumshs", VXA(4, 41), VXA_MASK, PPCVEC, PPCNONE, {VD, VA, VB, VC}},
++{"ps_add", A (4, 21,0), AFRC_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
++{"vsel", VXA(4, 42), VXA_MASK, PPCVEC, PPCNONE, {VD, VA, VB, VC}},
++{"ps_add.", A (4, 21,1), AFRC_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
++{"vperm", VXA(4, 43), VXA_MASK, PPCVEC, PPCNONE, {VD, VA, VB, VC}},
++{"vsldoi", VXA(4, 44), VXA_MASK, PPCVEC, PPCNONE, {VD, VA, VB, SHB}},
++{"ps_sel", A (4, 23,0), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"vmaddfp", VXA(4, 46), VXA_MASK, PPCVEC, PPCNONE, {VD, VA, VC, VB}},
++{"ps_sel.", A (4, 23,1), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"vnmsubfp", VXA(4, 47), VXA_MASK, PPCVEC, PPCNONE, {VD, VA, VC, VB}},
++{"ps_res", A (4, 24,0), AFRAFRC_MASK, PPCPS, PPCNONE, {FRT, FRB}},
++{"ps_res.", A (4, 24,1), AFRAFRC_MASK, PPCPS, PPCNONE, {FRT, FRB}},
++{"ps_mul", A (4, 25,0), AFRB_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC}},
++{"ps_mul.", A (4, 25,1), AFRB_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC}},
++{"ps_rsqrte", A (4, 26,0), AFRAFRC_MASK, PPCPS, PPCNONE, {FRT, FRB}},
++{"ps_rsqrte.", A (4, 26,1), AFRAFRC_MASK, PPCPS, PPCNONE, {FRT, FRB}},
++{"ps_msub", A (4, 28,0), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"ps_msub.", A (4, 28,1), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"ps_madd", A (4, 29,0), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"ps_madd.", A (4, 29,1), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"ps_nmsub", A (4, 30,0), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"ps_nmsub.", A (4, 30,1), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"ps_nmadd", A (4, 31,0), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"ps_nmadd.", A (4, 31,1), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"ps_cmpo0", X (4, 32), X_MASK|(3<<21), PPCPS, PPCNONE, {BF, FRA, FRB}},
++{"vadduhm", VX (4, 64), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vmaxuh", VX (4, 66), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vrlh", VX (4, 68), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vcmpequh", VXR(4, 70,0), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vmulouh", VX (4, 72), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vsubfp", VX (4, 74), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"psq_lux", XW (4, 38,0), XW_MASK, PPCPS, PPCNONE, {FRT,RA,RB,PSWM,PSQM}},
++{"vmrghh", VX (4, 76), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"psq_stux", XW (4, 39,0), XW_MASK, PPCPS, PPCNONE, {FRS,RA,RB,PSWM,PSQM}},
++{"vpkuwum", VX (4, 78), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"ps_neg", XRC(4, 40,0), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
++{"mulhhw", XRC(4, 40,0), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"ps_neg.", XRC(4, 40,1), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
++{"mulhhw.", XRC(4, 40,1), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"machhw", XO (4, 44,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"machhw.", XO (4, 44,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"nmachhw", XO (4, 46,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"nmachhw.", XO (4, 46,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"ps_cmpu1", X (4, 64), X_MASK|(3<<21), PPCPS, PPCNONE, {BF, FRA, FRB}},
++{"vadduwm", VX (4, 128), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vmaxuw", VX (4, 130), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vrlw", VX (4, 132), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vcmpequw", VXR(4, 134,0), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vmrghw", VX (4, 140), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vpkuhus", VX (4, 142), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"ps_mr", XRC(4, 72,0), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
++{"ps_mr.", XRC(4, 72,1), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
++{"machhwsu", XO (4, 76,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"machhwsu.", XO (4, 76,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"ps_cmpo1", X (4, 96), X_MASK|(3<<21), PPCPS, PPCNONE, {BF, FRA, FRB}},
++{"vcmpeqfp", VXR(4, 198,0), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vpkuwus", VX (4, 206), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"machhws", XO (4, 108,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"machhws.", XO (4, 108,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"nmachhws", XO (4, 110,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"nmachhws.", XO (4, 110,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"vmaxsb", VX (4, 258), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vslb", VX (4, 260), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vmulosb", VX (4, 264), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vrefp", VX (4, 266), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
++{"vmrglb", VX (4, 268), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vpkshus", VX (4, 270), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"ps_nabs", XRC(4, 136,0), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
++{"mulchwu", XRC(4, 136,0), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"ps_nabs.", XRC(4, 136,1), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
++{"mulchwu.", XRC(4, 136,1), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"macchwu", XO (4, 140,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"macchwu.", XO (4, 140,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"vmaxsh", VX (4, 322), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vslh", VX (4, 324), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vmulosh", VX (4, 328), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vrsqrtefp", VX (4, 330), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
++{"vmrglh", VX (4, 332), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vpkswus", VX (4, 334), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"mulchw", XRC(4, 168,0), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"mulchw.", XRC(4, 168,1), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"macchw", XO (4, 172,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"macchw.", XO (4, 172,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"nmacchw", XO (4, 174,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"nmacchw.", XO (4, 174,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"vaddcuw", VX (4, 384), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vmaxsw", VX (4, 386), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vslw", VX (4, 388), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vexptefp", VX (4, 394), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
++{"vmrglw", VX (4, 396), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vpkshss", VX (4, 398), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"macchwsu", XO (4, 204,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"macchwsu.", XO (4, 204,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"vsl", VX (4, 452), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vcmpgefp", VXR(4, 454,0), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vlogefp", VX (4, 458), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
++{"vpkswss", VX (4, 462), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"macchws", XO (4, 236,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"macchws.", XO (4, 236,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"nmacchws", XO (4, 238,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"nmacchws.", XO (4, 238,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"evaddw", VX (4, 512), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"vaddubs", VX (4, 512), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"evaddiw", VX (4, 514), VX_MASK, PPCSPE, PPCNONE, {RS, RB, UIMM}},
++{"vminub", VX (4, 514), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"evsubfw", VX (4, 516), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evsubw", VX (4, 516), VX_MASK, PPCSPE, PPCNONE, {RS, RB, RA}},
++{"vsrb", VX (4, 516), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"evsubifw", VX (4, 518), VX_MASK, PPCSPE, PPCNONE, {RS, UIMM, RB}},
++{"evsubiw", VX (4, 518), VX_MASK, PPCSPE, PPCNONE, {RS, RB, UIMM}},
++{"vcmpgtub", VXR(4, 518,0), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"evabs", VX (4, 520), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
++{"vmuleub", VX (4, 520), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"evneg", VX (4, 521), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
++{"evextsb", VX (4, 522), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
++{"vrfin", VX (4, 522), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
++{"evextsh", VX (4, 523), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
++{"evrndw", VX (4, 524), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
++{"vspltb", VX (4, 524), VX_MASK, PPCVEC, PPCNONE, {VD, VB, UIMM}},
++{"evcntlzw", VX (4, 525), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
++{"evcntlsw", VX (4, 526), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
++{"vupkhsb", VX (4, 526), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
++{"brinc", VX (4, 527), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"ps_abs", XRC(4, 264,0), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
++{"ps_abs.", XRC(4, 264,1), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
++{"evand", VX (4, 529), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evandc", VX (4, 530), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evxor", VX (4, 534), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmr", VX (4, 535), VX_MASK, PPCSPE, PPCNONE, {RS, RA, BBA}},
++{"evor", VX (4, 535), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evnor", VX (4, 536), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evnot", VX (4, 536), VX_MASK, PPCSPE, PPCNONE, {RS, RA, BBA}},
++{"get", APU(4, 268,0), APU_RA_MASK, PPC405, PPCNONE, {RT, FSL}},
++{"eveqv", VX (4, 537), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evorc", VX (4, 539), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evnand", VX (4, 542), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evsrwu", VX (4, 544), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evsrws", VX (4, 545), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evsrwiu", VX (4, 546), VX_MASK, PPCSPE, PPCNONE, {RS, RA, EVUIMM}},
++{"evsrwis", VX (4, 547), VX_MASK, PPCSPE, PPCNONE, {RS, RA, EVUIMM}},
++{"evslw", VX (4, 548), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evslwi", VX (4, 550), VX_MASK, PPCSPE, PPCNONE, {RS, RA, EVUIMM}},
++{"evrlw", VX (4, 552), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evsplati", VX (4, 553), VX_MASK, PPCSPE, PPCNONE, {RS, SIMM}},
++{"evrlwi", VX (4, 554), VX_MASK, PPCSPE, PPCNONE, {RS, RA, EVUIMM}},
++{"evsplatfi", VX (4, 555), VX_MASK, PPCSPE, PPCNONE, {RS, SIMM}},
++{"evmergehi", VX (4, 556), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmergelo", VX (4, 557), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmergehilo", VX (4, 558), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmergelohi", VX (4, 559), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evcmpgtu", VX (4, 560), VX_MASK, PPCSPE, PPCNONE, {CRFD, RA, RB}},
++{"evcmpgts", VX (4, 561), VX_MASK, PPCSPE, PPCNONE, {CRFD, RA, RB}},
++{"evcmpltu", VX (4, 562), VX_MASK, PPCSPE, PPCNONE, {CRFD, RA, RB}},
++{"evcmplts", VX (4, 563), VX_MASK, PPCSPE, PPCNONE, {CRFD, RA, RB}},
++{"evcmpeq", VX (4, 564), VX_MASK, PPCSPE, PPCNONE, {CRFD, RA, RB}},
++{"cget", APU(4, 284,0), APU_RA_MASK, PPC405, PPCNONE, {RT, FSL}},
++{"vadduhs", VX (4, 576), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vminuh", VX (4, 578), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vsrh", VX (4, 580), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vcmpgtuh", VXR(4, 582,0), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vmuleuh", VX (4, 584), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vrfiz", VX (4, 586), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
++{"vsplth", VX (4, 588), VX_MASK, PPCVEC, PPCNONE, {VD, VB, UIMM}},
++{"vupkhsh", VX (4, 590), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
++{"nget", APU(4, 300,0), APU_RA_MASK, PPC405, PPCNONE, {RT, FSL}},
++{"evsel", EVSEL(4,79), EVSEL_MASK, PPCSPE, PPCNONE, {RS, RA, RB, CRFS}},
++{"ncget", APU(4, 316,0), APU_RA_MASK, PPC405, PPCNONE, {RT, FSL}},
++{"evfsadd", VX (4, 640), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"vadduws", VX (4, 640), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"evfssub", VX (4, 641), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"vminuw", VX (4, 642), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"evfsabs", VX (4, 644), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
++{"vsrw", VX (4, 644), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"evfsnabs", VX (4, 645), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
++{"evfsneg", VX (4, 646), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
++{"vcmpgtuw", VXR(4, 646,0), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"evfsmul", VX (4, 648), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evfsdiv", VX (4, 649), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"vrfip", VX (4, 650), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
++{"evfscmpgt", VX (4, 652), VX_MASK, PPCSPE, PPCNONE, {CRFD, RA, RB}},
++{"vspltw", VX (4, 652), VX_MASK, PPCVEC, PPCNONE, {VD, VB, UIMM}},
++{"evfscmplt", VX (4, 653), VX_MASK, PPCSPE, PPCNONE, {CRFD, RA, RB}},
++{"evfscmpeq", VX (4, 654), VX_MASK, PPCSPE, PPCNONE, {CRFD, RA, RB}},
++{"vupklsb", VX (4, 654), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
++{"evfscfui", VX (4, 656), VX_MASK, PPCSPE, PPCNONE, {RS, RB}},
++{"evfscfsi", VX (4, 657), VX_MASK, PPCSPE, PPCNONE, {RS, RB}},
++{"evfscfuf", VX (4, 658), VX_MASK, PPCSPE, PPCNONE, {RS, RB}},
++{"evfscfsf", VX (4, 659), VX_MASK, PPCSPE, PPCNONE, {RS, RB}},
++{"evfsctui", VX (4, 660), VX_MASK, PPCSPE, PPCNONE, {RS, RB}},
++{"evfsctsi", VX (4, 661), VX_MASK, PPCSPE, PPCNONE, {RS, RB}},
++{"evfsctuf", VX (4, 662), VX_MASK, PPCSPE, PPCNONE, {RS, RB}},
++{"evfsctsf", VX (4, 663), VX_MASK, PPCSPE, PPCNONE, {RS, RB}},
++{"evfsctuiz", VX (4, 664), VX_MASK, PPCSPE, PPCNONE, {RS, RB}},
++{"put", APU(4, 332,0), APU_RT_MASK, PPC405, PPCNONE, {RA, FSL}},
++{"evfsctsiz", VX (4, 666), VX_MASK, PPCSPE, PPCNONE, {RS, RB}},
++{"evfststgt", VX (4, 668), VX_MASK, PPCSPE, PPCNONE, {CRFD, RA, RB}},
++{"evfststlt", VX (4, 669), VX_MASK, PPCSPE, PPCNONE, {CRFD, RA, RB}},
++{"evfststeq", VX (4, 670), VX_MASK, PPCSPE, PPCNONE, {CRFD, RA, RB}},
++{"cput", APU(4, 348,0), APU_RT_MASK, PPC405, PPCNONE, {RA, FSL}},
++{"efsadd", VX (4, 704), VX_MASK, PPCEFS, PPCNONE, {RS, RA, RB}},
++{"efssub", VX (4, 705), VX_MASK, PPCEFS, PPCNONE, {RS, RA, RB}},
++{"efsabs", VX (4, 708), VX_MASK, PPCEFS, PPCNONE, {RS, RA}},
++{"vsr", VX (4, 708), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"efsnabs", VX (4, 709), VX_MASK, PPCEFS, PPCNONE, {RS, RA}},
++{"efsneg", VX (4, 710), VX_MASK, PPCEFS, PPCNONE, {RS, RA}},
++{"vcmpgtfp", VXR(4, 710,0), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"efsmul", VX (4, 712), VX_MASK, PPCEFS, PPCNONE, {RS, RA, RB}},
++{"efsdiv", VX (4, 713), VX_MASK, PPCEFS, PPCNONE, {RS, RA, RB}},
++{"vrfim", VX (4, 714), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
++{"efscmpgt", VX (4, 716), VX_MASK, PPCEFS, PPCNONE, {CRFD, RA, RB}},
++{"efscmplt", VX (4, 717), VX_MASK, PPCEFS, PPCNONE, {CRFD, RA, RB}},
++{"efscmpeq", VX (4, 718), VX_MASK, PPCEFS, PPCNONE, {CRFD, RA, RB}},
++{"vupklsh", VX (4, 718), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
++{"efscfd", VX (4, 719), VX_MASK, PPCEFS, PPCNONE, {RS, RB}},
++{"efscfui", VX (4, 720), VX_MASK, PPCEFS, PPCNONE, {RS, RB}},
++{"efscfsi", VX (4, 721), VX_MASK, PPCEFS, PPCNONE, {RS, RB}},
++{"efscfuf", VX (4, 722), VX_MASK, PPCEFS, PPCNONE, {RS, RB}},
++{"efscfsf", VX (4, 723), VX_MASK, PPCEFS, PPCNONE, {RS, RB}},
++{"efsctui", VX (4, 724), VX_MASK, PPCEFS, PPCNONE, {RS, RB}},
++{"efsctsi", VX (4, 725), VX_MASK, PPCEFS, PPCNONE, {RS, RB}},
++{"efsctuf", VX (4, 726), VX_MASK, PPCEFS, PPCNONE, {RS, RB}},
++{"efsctsf", VX (4, 727), VX_MASK, PPCEFS, PPCNONE, {RS, RB}},
++{"efsctuiz", VX (4, 728), VX_MASK, PPCEFS, PPCNONE, {RS, RB}},
++{"nput", APU(4, 364,0), APU_RT_MASK, PPC405, PPCNONE, {RA, FSL}},
++{"efsctsiz", VX (4, 730), VX_MASK, PPCEFS, PPCNONE, {RS, RB}},
++{"efststgt", VX (4, 732), VX_MASK, PPCEFS, PPCNONE, {CRFD, RA, RB}},
++{"efststlt", VX (4, 733), VX_MASK, PPCEFS, PPCNONE, {CRFD, RA, RB}},
++{"efststeq", VX (4, 734), VX_MASK, PPCEFS, PPCNONE, {CRFD, RA, RB}},
++{"efdadd", VX (4, 736), VX_MASK, PPCEFS, PPCNONE, {RS, RA, RB}},
++{"efdsub", VX (4, 737), VX_MASK, PPCEFS, PPCNONE, {RS, RA, RB}},
++{"efdcfuid", VX (4, 738), VX_MASK, PPCEFS, PPCNONE, {RS, RB}},
++{"efdcfsid", VX (4, 739), VX_MASK, PPCEFS, PPCNONE, {RS, RB}},
++{"efdabs", VX (4, 740), VX_MASK, PPCEFS, PPCNONE, {RS, RA}},
++{"efdnabs", VX (4, 741), VX_MASK, PPCEFS, PPCNONE, {RS, RA}},
++{"efdneg", VX (4, 742), VX_MASK, PPCEFS, PPCNONE, {RS, RA}},
++{"efdmul", VX (4, 744), VX_MASK, PPCEFS, PPCNONE, {RS, RA, RB}},
++{"efddiv", VX (4, 745), VX_MASK, PPCEFS, PPCNONE, {RS, RA, RB}},
++{"efdctuidz", VX (4, 746), VX_MASK, PPCEFS, PPCNONE, {RS, RB}},
++{"efdctsidz", VX (4, 747), VX_MASK, PPCEFS, PPCNONE, {RS, RB}},
++{"efdcmpgt", VX (4, 748), VX_MASK, PPCEFS, PPCNONE, {CRFD, RA, RB}},
++{"efdcmplt", VX (4, 749), VX_MASK, PPCEFS, PPCNONE, {CRFD, RA, RB}},
++{"efdcmpeq", VX (4, 750), VX_MASK, PPCEFS, PPCNONE, {CRFD, RA, RB}},
++{"efdcfs", VX (4, 751), VX_MASK, PPCEFS, PPCNONE, {RS, RB}},
++{"efdcfui", VX (4, 752), VX_MASK, PPCEFS, PPCNONE, {RS, RB}},
++{"efdcfsi", VX (4, 753), VX_MASK, PPCEFS, PPCNONE, {RS, RB}},
++{"efdcfuf", VX (4, 754), VX_MASK, PPCEFS, PPCNONE, {RS, RB}},
++{"efdcfsf", VX (4, 755), VX_MASK, PPCEFS, PPCNONE, {RS, RB}},
++{"efdctui", VX (4, 756), VX_MASK, PPCEFS, PPCNONE, {RS, RB}},
++{"efdctsi", VX (4, 757), VX_MASK, PPCEFS, PPCNONE, {RS, RB}},
++{"efdctuf", VX (4, 758), VX_MASK, PPCEFS, PPCNONE, {RS, RB}},
++{"efdctsf", VX (4, 759), VX_MASK, PPCEFS, PPCNONE, {RS, RB}},
++{"efdctuiz", VX (4, 760), VX_MASK, PPCEFS, PPCNONE, {RS, RB}},
++{"ncput", APU(4, 380,0), APU_RT_MASK, PPC405, PPCNONE, {RA, FSL}},
++{"efdctsiz", VX (4, 762), VX_MASK, PPCEFS, PPCNONE, {RS, RB}},
++{"efdtstgt", VX (4, 764), VX_MASK, PPCEFS, PPCNONE, {CRFD, RA, RB}},
++{"efdtstlt", VX (4, 765), VX_MASK, PPCEFS, PPCNONE, {CRFD, RA, RB}},
++{"efdtsteq", VX (4, 766), VX_MASK, PPCEFS, PPCNONE, {CRFD, RA, RB}},
++{"evlddx", VX (4, 768), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"vaddsbs", VX (4, 768), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"evldd", VX (4, 769), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_8, RA}},
++{"evldwx", VX (4, 770), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"vminsb", VX (4, 770), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"evldw", VX (4, 771), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_8, RA}},
++{"evldhx", VX (4, 772), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"vsrab", VX (4, 772), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"evldh", VX (4, 773), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_8, RA}},
++{"vcmpgtsb", VXR(4, 774,0), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"evlhhesplatx",VX (4, 776), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"vmulesb", VX (4, 776), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"evlhhesplat", VX (4, 777), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_2, RA}},
++{"vcfux", VX (4, 778), VX_MASK, PPCVEC, PPCNONE, {VD, VB, UIMM}},
++{"evlhhousplatx",VX(4, 780), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"vspltisb", VX (4, 780), VX_MASK, PPCVEC, PPCNONE, {VD, SIMM}},
++{"evlhhousplat",VX (4, 781), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_2, RA}},
++{"evlhhossplatx",VX(4, 782), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"vpkpx", VX (4, 782), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"evlhhossplat",VX (4, 783), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_2, RA}},
++{"mullhwu", XRC(4, 392,0), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"evlwhex", VX (4, 784), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"mullhwu.", XRC(4, 392,1), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"evlwhe", VX (4, 785), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_4, RA}},
++{"evlwhoux", VX (4, 788), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evlwhou", VX (4, 789), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_4, RA}},
++{"evlwhosx", VX (4, 790), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evlwhos", VX (4, 791), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_4, RA}},
++{"maclhwu", XO (4, 396,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"evlwwsplatx", VX (4, 792), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"maclhwu.", XO (4, 396,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"evlwwsplat", VX (4, 793), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_4, RA}},
++{"evlwhsplatx", VX (4, 796), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evlwhsplat", VX (4, 797), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_4, RA}},
++{"evstddx", VX (4, 800), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evstdd", VX (4, 801), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_8, RA}},
++{"evstdwx", VX (4, 802), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evstdw", VX (4, 803), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_8, RA}},
++{"evstdhx", VX (4, 804), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evstdh", VX (4, 805), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_8, RA}},
++{"evstwhex", VX (4, 816), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evstwhe", VX (4, 817), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_4, RA}},
++{"evstwhox", VX (4, 820), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evstwho", VX (4, 821), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_4, RA}},
++{"evstwwex", VX (4, 824), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evstwwe", VX (4, 825), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_4, RA}},
++{"evstwwox", VX (4, 828), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evstwwo", VX (4, 829), VX_MASK, PPCSPE, PPCNONE, {RS, EVUIMM_4, RA}},
++{"vaddshs", VX (4, 832), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vminsh", VX (4, 834), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vsrah", VX (4, 836), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vcmpgtsh", VXR(4, 838,0), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vmulesh", VX (4, 840), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vcfsx", VX (4, 842), VX_MASK, PPCVEC, PPCNONE, {VD, VB, UIMM}},
++{"vspltish", VX (4, 844), VX_MASK, PPCVEC, PPCNONE, {VD, SIMM}},
++{"vupkhpx", VX (4, 846), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
++{"mullhw", XRC(4, 424,0), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"mullhw.", XRC(4, 424,1), X_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"maclhw", XO (4, 428,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"maclhw.", XO (4, 428,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"nmaclhw", XO (4, 430,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"nmaclhw.", XO (4, 430,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"vaddsws", VX (4, 896), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vminsw", VX (4, 898), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vsraw", VX (4, 900), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vcmpgtsw", VXR(4, 902,0), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vctuxs", VX (4, 906), VX_MASK, PPCVEC, PPCNONE, {VD, VB, UIMM}},
++{"vspltisw", VX (4, 908), VX_MASK, PPCVEC, PPCNONE, {VD, SIMM}},
++{"maclhwsu", XO (4, 460,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"maclhwsu.", XO (4, 460,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"vcmpbfp", VXR(4, 966,0), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vctsxs", VX (4, 970), VX_MASK, PPCVEC, PPCNONE, {VD, VB, UIMM}},
++{"vupklpx", VX (4, 974), VX_MASK, PPCVEC, PPCNONE, {VD, VB}},
++{"maclhws", XO (4, 492,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"maclhws.", XO (4, 492,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"nmaclhws", XO (4, 494,0,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"nmaclhws.", XO (4, 494,0,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"vsububm", VX (4,1024), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vavgub", VX (4,1026), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"evmhessf", VX (4,1027), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"vand", VX (4,1028), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vcmpequb.", VXR(4, 6,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"udi0fcm.", APU(4, 515,0), APU_MASK, PPC405|PPC440, PPCNONE, {URT, URA, URB}},
++{"udi0fcm", APU(4, 515,1), APU_MASK, PPC405|PPC440, PPCNONE, {URT, URA, URB}},
++{"evmhossf", VX (4,1031), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmheumi", VX (4,1032), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhesmi", VX (4,1033), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"vmaxfp", VX (4,1034), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"evmhesmf", VX (4,1035), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhoumi", VX (4,1036), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"vslo", VX (4,1036), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"evmhosmi", VX (4,1037), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhosmf", VX (4,1039), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"machhwuo", XO (4, 12,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"machhwuo.", XO (4, 12,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"ps_merge00", XOPS(4,528,0), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
++{"ps_merge00.", XOPS(4,528,1), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
++{"evmhessfa", VX (4,1059), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhossfa", VX (4,1063), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmheumia", VX (4,1064), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhesmia", VX (4,1065), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhesmfa", VX (4,1067), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhoumia", VX (4,1068), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhosmia", VX (4,1069), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhosmfa", VX (4,1071), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"vsubuhm", VX (4,1088), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vavguh", VX (4,1090), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vandc", VX (4,1092), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vcmpequh.", VXR(4, 70,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"udi1fcm.", APU(4, 547,0), APU_MASK, PPC405|PPC440, PPCNONE, {URT, URA, URB}},
++{"udi1fcm", APU(4, 547,1), APU_MASK, PPC405|PPC440, PPCNONE, {URT, URA, URB}},
++{"evmwhssf", VX (4,1095), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmwlumi", VX (4,1096), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"vminfp", VX (4,1098), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"evmwhumi", VX (4,1100), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"vsro", VX (4,1100), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"evmwhsmi", VX (4,1101), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmwhsmf", VX (4,1103), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmwssf", VX (4,1107), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"machhwo", XO (4, 44,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"evmwumi", VX (4,1112), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"machhwo.", XO (4, 44,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"evmwsmi", VX (4,1113), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmwsmf", VX (4,1115), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"nmachhwo", XO (4, 46,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"nmachhwo.", XO (4, 46,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"ps_merge01", XOPS(4,560,0), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
++{"ps_merge01.", XOPS(4,560,1), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
++{"evmwhssfa", VX (4,1127), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmwlumia", VX (4,1128), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmwhumia", VX (4,1132), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmwhsmia", VX (4,1133), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmwhsmfa", VX (4,1135), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmwssfa", VX (4,1139), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmwumia", VX (4,1144), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmwsmia", VX (4,1145), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmwsmfa", VX (4,1147), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"vsubuwm", VX (4,1152), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vavguw", VX (4,1154), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vor", VX (4,1156), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vcmpequw.", VXR(4, 134,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"udi2fcm.", APU(4, 579,0), APU_MASK, PPC405|PPC440, PPCNONE, {URT, URA, URB}},
++{"udi2fcm", APU(4, 579,1), APU_MASK, PPC405|PPC440, PPCNONE, {URT, URA, URB}},
++{"machhwsuo", XO (4, 76,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"machhwsuo.", XO (4, 76,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"ps_merge10", XOPS(4,592,0), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
++{"ps_merge10.", XOPS(4,592,1), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
++{"evaddusiaaw", VX (4,1216), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
++{"evaddssiaaw", VX (4,1217), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
++{"evsubfusiaaw",VX (4,1218), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
++{"evsubfssiaaw",VX (4,1219), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
++{"evmra", VX (4,1220), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
++{"vxor", VX (4,1220), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"evdivws", VX (4,1222), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"vcmpeqfp.", VXR(4, 198,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"udi3fcm.", APU(4, 611,0), APU_MASK, PPC405|PPC440, PPCNONE, {URT, URA, URB}},
++{"udi3fcm", APU(4, 611,1), APU_MASK, PPC405|PPC440, PPCNONE, {URT, URA, URB}},
++{"evdivwu", VX (4,1223), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evaddumiaaw", VX (4,1224), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
++{"evaddsmiaaw", VX (4,1225), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
++{"evsubfumiaaw",VX (4,1226), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
++{"evsubfsmiaaw",VX (4,1227), VX_MASK, PPCSPE, PPCNONE, {RS, RA}},
++{"machhwso", XO (4, 108,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"machhwso.", XO (4, 108,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"nmachhwso", XO (4, 110,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"nmachhwso.", XO (4, 110,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"ps_merge11", XOPS(4,624,0), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
++{"ps_merge11.", XOPS(4,624,1), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
++{"evmheusiaaw", VX (4,1280), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhessiaaw", VX (4,1281), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"vavgsb", VX (4,1282), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"evmhessfaaw", VX (4,1283), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhousiaaw", VX (4,1284), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"vnor", VX (4,1284), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"evmhossiaaw", VX (4,1285), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"udi4fcm.", APU(4, 643,0), APU_MASK, PPC405|PPC440, PPCNONE, {URT, URA, URB}},
++{"udi4fcm", APU(4, 643,1), APU_MASK, PPC405|PPC440, PPCNONE, {URT, URA, URB}},
++{"evmhossfaaw", VX (4,1287), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmheumiaaw", VX (4,1288), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhesmiaaw", VX (4,1289), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhesmfaaw", VX (4,1291), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhoumiaaw", VX (4,1292), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhosmiaaw", VX (4,1293), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhosmfaaw", VX (4,1295), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"macchwuo", XO (4, 140,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"macchwuo.", XO (4, 140,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"evmhegumiaa", VX (4,1320), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhegsmiaa", VX (4,1321), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhegsmfaa", VX (4,1323), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhogumiaa", VX (4,1324), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhogsmiaa", VX (4,1325), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhogsmfaa", VX (4,1327), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmwlusiaaw", VX (4,1344), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmwlssiaaw", VX (4,1345), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"vavgsh", VX (4,1346), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"udi5fcm.", APU(4, 675,0), APU_MASK, PPC405|PPC440, PPCNONE, {URT, URA, URB}},
++{"udi5fcm", APU(4, 675,1), APU_MASK, PPC405|PPC440, PPCNONE, {URT, URA, URB}},
++{"evmwlumiaaw", VX (4,1352), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmwlsmiaaw", VX (4,1353), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmwssfaa", VX (4,1363), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"macchwo", XO (4, 172,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"evmwumiaa", VX (4,1368), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"macchwo.", XO (4, 172,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"evmwsmiaa", VX (4,1369), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmwsmfaa", VX (4,1371), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"nmacchwo", XO (4, 174,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"nmacchwo.", XO (4, 174,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"evmheusianw", VX (4,1408), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"vsubcuw", VX (4,1408), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"evmhessianw", VX (4,1409), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"vavgsw", VX (4,1410), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"evmhessfanw", VX (4,1411), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhousianw", VX (4,1412), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhossianw", VX (4,1413), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"udi6fcm.", APU(4, 707,0), APU_MASK, PPC405|PPC440, PPCNONE, {URT, URA, URB}},
++{"udi6fcm", APU(4, 707,1), APU_MASK, PPC405|PPC440, PPCNONE, {URT, URA, URB}},
++{"evmhossfanw", VX (4,1415), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmheumianw", VX (4,1416), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhesmianw", VX (4,1417), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhesmfanw", VX (4,1419), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhoumianw", VX (4,1420), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhosmianw", VX (4,1421), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhosmfanw", VX (4,1423), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"macchwsuo", XO (4, 204,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"macchwsuo.", XO (4, 204,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"evmhegumian", VX (4,1448), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhegsmian", VX (4,1449), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhegsmfan", VX (4,1451), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhogumian", VX (4,1452), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhogsmian", VX (4,1453), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmhogsmfan", VX (4,1455), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmwlusianw", VX (4,1472), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmwlssianw", VX (4,1473), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"vcmpgefp.", VXR(4, 454,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"udi7fcm.", APU(4, 739,0), APU_MASK, PPC405|PPC440, PPCNONE, {URT, URA, URB}},
++{"udi7fcm", APU(4, 739,1), APU_MASK, PPC405|PPC440, PPCNONE, {URT, URA, URB}},
++{"evmwlumianw", VX (4,1480), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmwlsmianw", VX (4,1481), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmwssfan", VX (4,1491), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"macchwso", XO (4, 236,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"evmwumian", VX (4,1496), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"macchwso.", XO (4, 236,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"evmwsmian", VX (4,1497), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"evmwsmfan", VX (4,1499), VX_MASK, PPCSPE, PPCNONE, {RS, RA, RB}},
++{"nmacchwso", XO (4, 238,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"nmacchwso.", XO (4, 238,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"vsububs", VX (4,1536), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"mfvscr", VX (4,1540), VX_MASK, PPCVEC, PPCNONE, {VD}},
++{"vcmpgtub.", VXR(4, 518,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"udi8fcm.", APU(4, 771,0), APU_MASK, PPC440, PPCNONE, {URT, URA, URB}},
++{"udi8fcm", APU(4, 771,1), APU_MASK, PPC440, PPCNONE, {URT, URA, URB}},
++{"vsum4ubs", VX (4,1544), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vsubuhs", VX (4,1600), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"mtvscr", VX (4,1604), VX_MASK, PPCVEC, PPCNONE, {VB}},
++{"vcmpgtuh.", VXR(4, 582,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vsum4shs", VX (4,1608), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"udi9fcm.", APU(4, 804,0), APU_MASK, PPC440, PPCNONE, {URT, URA, URB}},
++{"udi9fcm", APU(4, 804,1), APU_MASK, PPC440, PPCNONE, {URT, URA, URB}},
++{"vsubuws", VX (4,1664), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vcmpgtuw.", VXR(4, 646,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"udi10fcm.", APU(4, 835,0), APU_MASK, PPC440, PPCNONE, {URT, URA, URB}},
++{"udi10fcm", APU(4, 835,1), APU_MASK, PPC440, PPCNONE, {URT, URA, URB}},
++{"vsum2sws", VX (4,1672), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vcmpgtfp.", VXR(4, 710,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"udi11fcm.", APU(4, 867,0), APU_MASK, PPC440, PPCNONE, {URT, URA, URB}},
++{"udi11fcm", APU(4, 867,1), APU_MASK, PPC440, PPCNONE, {URT, URA, URB}},
++{"vsubsbs", VX (4,1792), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vcmpgtsb.", VXR(4, 774,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"udi12fcm.", APU(4, 899,0), APU_MASK, PPC440, PPCNONE, {URT, URA, URB}},
++{"udi12fcm", APU(4, 899,1), APU_MASK, PPC440, PPCNONE, {URT, URA, URB}},
++{"vsum4sbs", VX (4,1800), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"maclhwuo", XO (4, 396,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"maclhwuo.", XO (4, 396,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"vsubshs", VX (4,1856), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vcmpgtsh.", VXR(4, 838,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"udi13fcm.", APU(4, 931,0), APU_MASK, PPC440, PPCNONE, {URT, URA, URB}},
++{"udi13fcm", APU(4, 931,1), APU_MASK, PPC440, PPCNONE, {URT, URA, URB}},
++{"maclhwo", XO (4, 428,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"maclhwo.", XO (4, 428,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"nmaclhwo", XO (4, 430,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"nmaclhwo.", XO (4, 430,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"vsubsws", VX (4,1920), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"vcmpgtsw.", VXR(4, 902,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"udi14fcm.", APU(4, 963,0), APU_MASK, PPC440, PPCNONE, {URT, URA, URB}},
++{"udi14fcm", APU(4, 963,1), APU_MASK, PPC440, PPCNONE, {URT, URA, URB}},
++{"vsumsws", VX (4,1928), VX_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"maclhwsuo", XO (4, 460,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"maclhwsuo.", XO (4, 460,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"vcmpbfp.", VXR(4, 966,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
++{"udi15fcm.", APU(4, 995,0), APU_MASK, PPC440, PPCNONE, {URT, URA, URB}},
++{"udi15fcm", APU(4, 995,1), APU_MASK, PPC440, PPCNONE, {URT, URA, URB}},
++{"maclhwso", XO (4, 492,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"maclhwso.", XO (4, 492,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"nmaclhwso", XO (4, 494,1,0),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"nmaclhwso.", XO (4, 494,1,1),XO_MASK, PPC405|PPC440, PPCNONE, {RT, RA, RB}},
++{"dcbz_l", X (4,1014), XRT_MASK, PPCPS, PPCNONE, {RA, RB}},
++
++{"mulli", OP(7), OP_MASK, PPCCOM, PPCNONE, {RT, RA, SI}},
++{"muli", OP(7), OP_MASK, PWRCOM, PPCNONE, {RT, RA, SI}},
++
++{"subfic", OP(8), OP_MASK, PPCCOM, PPCNONE, {RT, RA, SI}},
++{"sfi", OP(8), OP_MASK, PWRCOM, PPCNONE, {RT, RA, SI}},
++
++{"dozi", OP(9), OP_MASK, M601, PPCNONE, {RT, RA, SI}},
++
++{"cmplwi", OPL(10,0), OPL_MASK, PPCCOM, PPCNONE, {OBF, RA, UI}},
++{"cmpldi", OPL(10,1), OPL_MASK, PPC64, PPCNONE, {OBF, RA, UI}},
++{"cmpli", OP(10), OP_MASK, PPC, PPCNONE, {BF, L, RA, UI}},
++{"cmpli", OP(10), OP_MASK, PWRCOM, PPCNONE, {BF, RA, UI}},
++
++{"cmpwi", OPL(11,0), OPL_MASK, PPCCOM, PPCNONE, {OBF, RA, SI}},
++{"cmpdi", OPL(11,1), OPL_MASK, PPC64, PPCNONE, {OBF, RA, SI}},
++{"cmpi", OP(11), OP_MASK, PPC, PPCNONE, {BF, L, RA, SI}},
++{"cmpi", OP(11), OP_MASK, PWRCOM, PPCNONE, {BF, RA, SI}},
++
++{"addic", OP(12), OP_MASK, PPCCOM, PPCNONE, {RT, RA, SI}},
++{"ai", OP(12), OP_MASK, PWRCOM, PPCNONE, {RT, RA, SI}},
++{"subic", OP(12), OP_MASK, PPCCOM, PPCNONE, {RT, RA, NSI}},
++
++{"addic.", OP(13), OP_MASK, PPCCOM, PPCNONE, {RT, RA, SI}},
++{"ai.", OP(13), OP_MASK, PWRCOM, PPCNONE, {RT, RA, SI}},
++{"subic.", OP(13), OP_MASK, PPCCOM, PPCNONE, {RT, RA, NSI}},
++
++{"li", OP(14), DRA_MASK, PPCCOM, PPCNONE, {RT, SI}},
++{"lil", OP(14), DRA_MASK, PWRCOM, PPCNONE, {RT, SI}},
++{"addi", OP(14), OP_MASK, PPCCOM, PPCNONE, {RT, RA0, SI}},
++{"cal", OP(14), OP_MASK, PWRCOM, PPCNONE, {RT, D, RA0}},
++{"subi", OP(14), OP_MASK, PPCCOM, PPCNONE, {RT, RA0, NSI}},
++{"la", OP(14), OP_MASK, PPCCOM, PPCNONE, {RT, D, RA0}},
++
++{"lis", OP(15), DRA_MASK, PPCCOM, PPCNONE, {RT, SISIGNOPT}},
++{"liu", OP(15), DRA_MASK, PWRCOM, PPCNONE, {RT, SISIGNOPT}},
++{"addis", OP(15), OP_MASK, PPCCOM, PPCNONE, {RT, RA0, SISIGNOPT}},
++{"cau", OP(15), OP_MASK, PWRCOM, PPCNONE, {RT, RA0, SISIGNOPT}},
++{"subis", OP(15), OP_MASK, PPCCOM, PPCNONE, {RT, RA0, NSI}},
++
++{"bdnz-", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, PPCNONE, {BDM}},
++{"bdnz+", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, PPCNONE, {BDP}},
++{"bdnz", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, PPCNONE, {BD}},
++{"bdn", BBO(16,BODNZ,0,0), BBOATBI_MASK, PWRCOM, PPCNONE, {BD}},
++{"bdnzl-", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, PPCNONE, {BDM}},
++{"bdnzl+", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, PPCNONE, {BDP}},
++{"bdnzl", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, PPCNONE, {BD}},
++{"bdnl", BBO(16,BODNZ,0,1), BBOATBI_MASK, PWRCOM, PPCNONE, {BD}},
++{"bdnza-", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, PPCNONE, {BDMA}},
++{"bdnza+", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, PPCNONE, {BDPA}},
++{"bdnza", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, PPCNONE, {BDA}},
++{"bdna", BBO(16,BODNZ,1,0), BBOATBI_MASK, PWRCOM, PPCNONE, {BDA}},
++{"bdnzla-", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, PPCNONE, {BDMA}},
++{"bdnzla+", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, PPCNONE, {BDPA}},
++{"bdnzla", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, PPCNONE, {BDA}},
++{"bdnla", BBO(16,BODNZ,1,1), BBOATBI_MASK, PWRCOM, PPCNONE, {BDA}},
++{"bdz-", BBO(16,BODZ,0,0), BBOATBI_MASK, PPCCOM, PPCNONE, {BDM}},
++{"bdz+", BBO(16,BODZ,0,0), BBOATBI_MASK, PPCCOM, PPCNONE, {BDP}},
++{"bdz", BBO(16,BODZ,0,0), BBOATBI_MASK, COM, PPCNONE, {BD}},
++{"bdzl-", BBO(16,BODZ,0,1), BBOATBI_MASK, PPCCOM, PPCNONE, {BDM}},
++{"bdzl+", BBO(16,BODZ,0,1), BBOATBI_MASK, PPCCOM, PPCNONE, {BDP}},
++{"bdzl", BBO(16,BODZ,0,1), BBOATBI_MASK, COM, PPCNONE, {BD}},
++{"bdza-", BBO(16,BODZ,1,0), BBOATBI_MASK, PPCCOM, PPCNONE, {BDMA}},
++{"bdza+", BBO(16,BODZ,1,0), BBOATBI_MASK, PPCCOM, PPCNONE, {BDPA}},
++{"bdza", BBO(16,BODZ,1,0), BBOATBI_MASK, COM, PPCNONE, {BDA}},
++{"bdzla-", BBO(16,BODZ,1,1), BBOATBI_MASK, PPCCOM, PPCNONE, {BDMA}},
++{"bdzla+", BBO(16,BODZ,1,1), BBOATBI_MASK, PPCCOM, PPCNONE, {BDPA}},
++{"bdzla", BBO(16,BODZ,1,1), BBOATBI_MASK, COM, PPCNONE, {BDA}},
++
++{"bge-", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDM}},
++{"bge+", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDP}},
++{"bge", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, COM, PPCNONE, {CR, BD}},
++{"bnl-", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDM}},
++{"bnl+", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDP}},
++{"bnl", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, COM, PPCNONE, {CR, BD}},
++{"bgel-", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDM}},
++{"bgel+", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDP}},
++{"bgel", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, COM, PPCNONE, {CR, BD}},
++{"bnll-", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDM}},
++{"bnll+", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDP}},
++{"bnll", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, COM, PPCNONE, {CR, BD}},
++{"bgea-", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDMA}},
++{"bgea+", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDPA}},
++{"bgea", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, COM, PPCNONE, {CR, BDA}},
++{"bnla-", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDMA}},
++{"bnla+", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDPA}},
++{"bnla", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, COM, PPCNONE, {CR, BDA}},
++{"bgela-", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDMA}},
++{"bgela+", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDPA}},
++{"bgela", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, COM, PPCNONE, {CR, BDA}},
++{"bnlla-", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDMA}},
++{"bnlla+", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDPA}},
++{"bnlla", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, COM, PPCNONE, {CR, BDA}},
++{"ble-", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDM}},
++{"ble+", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDP}},
++{"ble", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, COM, PPCNONE, {CR, BD}},
++{"bng-", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDM}},
++{"bng+", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDP}},
++{"bng", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, COM, PPCNONE, {CR, BD}},
++{"blel-", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDM}},
++{"blel+", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDP}},
++{"blel", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, COM, PPCNONE, {CR, BD}},
++{"bngl-", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDM}},
++{"bngl+", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDP}},
++{"bngl", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, COM, PPCNONE, {CR, BD}},
++{"blea-", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDMA}},
++{"blea+", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDPA}},
++{"blea", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, COM, PPCNONE, {CR, BDA}},
++{"bnga-", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDMA}},
++{"bnga+", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDPA}},
++{"bnga", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, COM, PPCNONE, {CR, BDA}},
++{"blela-", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDMA}},
++{"blela+", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDPA}},
++{"blela", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, COM, PPCNONE, {CR, BDA}},
++{"bngla-", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDMA}},
++{"bngla+", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDPA}},
++{"bngla", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, COM, PPCNONE, {CR, BDA}},
++{"bne-", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDM}},
++{"bne+", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDP}},
++{"bne", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, COM, PPCNONE, {CR, BD}},
++{"bnel-", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDM}},
++{"bnel+", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDP}},
++{"bnel", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, COM, PPCNONE, {CR, BD}},
++{"bnea-", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDMA}},
++{"bnea+", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDPA}},
++{"bnea", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, COM, PPCNONE, {CR, BDA}},
++{"bnela-", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDMA}},
++{"bnela+", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDPA}},
++{"bnela", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, COM, PPCNONE, {CR, BDA}},
++{"bns-", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDM}},
++{"bns+", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDP}},
++{"bns", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, COM, PPCNONE, {CR, BD}},
++{"bnu-", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDM}},
++{"bnu+", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDP}},
++{"bnu", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BD}},
++{"bnsl-", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDM}},
++{"bnsl+", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDP}},
++{"bnsl", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, COM, PPCNONE, {CR, BD}},
++{"bnul-", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDM}},
++{"bnul+", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDP}},
++{"bnul", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BD}},
++{"bnsa-", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDMA}},
++{"bnsa+", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDPA}},
++{"bnsa", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, COM, PPCNONE, {CR, BDA}},
++{"bnua-", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDMA}},
++{"bnua+", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDPA}},
++{"bnua", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDA}},
++{"bnsla-", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDMA}},
++{"bnsla+", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDPA}},
++{"bnsla", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, COM, PPCNONE, {CR, BDA}},
++{"bnula-", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDMA}},
++{"bnula+", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDPA}},
++{"bnula", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDA}},
++
++{"blt-", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDM}},
++{"blt+", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDP}},
++{"blt", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, COM, PPCNONE, {CR, BD}},
++{"bltl-", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDM}},
++{"bltl+", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDP}},
++{"bltl", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, COM, PPCNONE, {CR, BD}},
++{"blta-", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDMA}},
++{"blta+", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDPA}},
++{"blta", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, COM, PPCNONE, {CR, BDA}},
++{"bltla-", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDMA}},
++{"bltla+", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDPA}},
++{"bltla", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, COM, PPCNONE, {CR, BDA}},
++{"bgt-", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDM}},
++{"bgt+", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDP}},
++{"bgt", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, COM, PPCNONE, {CR, BD}},
++{"bgtl-", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDM}},
++{"bgtl+", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDP}},
++{"bgtl", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, COM, PPCNONE, {CR, BD}},
++{"bgta-", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDMA}},
++{"bgta+", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDPA}},
++{"bgta", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, COM, PPCNONE, {CR, BDA}},
++{"bgtla-", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDMA}},
++{"bgtla+", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDPA}},
++{"bgtla", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, COM, PPCNONE, {CR, BDA}},
++{"beq-", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDM}},
++{"beq+", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDP}},
++{"beq", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, COM, PPCNONE, {CR, BD}},
++{"beql-", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDM}},
++{"beql+", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDP}},
++{"beql", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, COM, PPCNONE, {CR, BD}},
++{"beqa-", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDMA}},
++{"beqa+", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDPA}},
++{"beqa", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, COM, PPCNONE, {CR, BDA}},
++{"beqla-", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDMA}},
++{"beqla+", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDPA}},
++{"beqla", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, COM, PPCNONE, {CR, BDA}},
++{"bso-", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDM}},
++{"bso+", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDP}},
++{"bso", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, COM, PPCNONE, {CR, BD}},
++{"bun-", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDM}},
++{"bun+", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDP}},
++{"bun", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BD}},
++{"bsol-", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDM}},
++{"bsol+", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDP}},
++{"bsol", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, COM, PPCNONE, {CR, BD}},
++{"bunl-", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDM}},
++{"bunl+", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDP}},
++{"bunl", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BD}},
++{"bsoa-", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDMA}},
++{"bsoa+", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDPA}},
++{"bsoa", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, COM, PPCNONE, {CR, BDA}},
++{"buna-", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDMA}},
++{"buna+", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDPA}},
++{"buna", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDA}},
++{"bsola-", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDMA}},
++{"bsola+", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDPA}},
++{"bsola", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, COM, PPCNONE, {CR, BDA}},
++{"bunla-", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDMA}},
++{"bunla+", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDPA}},
++{"bunla", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCNONE, {CR, BDA}},
++
++{"bdnzf-", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, POWER4, {BI, BDM}},
++{"bdnzf+", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, POWER4, {BI, BDP}},
++{"bdnzf", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, PPCNONE, {BI, BD}},
++{"bdnzfl-", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, POWER4, {BI, BDM}},
++{"bdnzfl+", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, POWER4, {BI, BDP}},
++{"bdnzfl", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, PPCNONE, {BI, BD}},
++{"bdnzfa-", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, POWER4, {BI, BDMA}},
++{"bdnzfa+", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, POWER4, {BI, BDPA}},
++{"bdnzfa", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, PPCNONE, {BI, BDA}},
++{"bdnzfla-", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, POWER4, {BI, BDMA}},
++{"bdnzfla+", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, POWER4, {BI, BDPA}},
++{"bdnzfla", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, PPCNONE, {BI, BDA}},
++{"bdzf-", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, POWER4, {BI, BDM}},
++{"bdzf+", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, POWER4, {BI, BDP}},
++{"bdzf", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, PPCNONE, {BI, BD}},
++{"bdzfl-", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, POWER4, {BI, BDM}},
++{"bdzfl+", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, POWER4, {BI, BDP}},
++{"bdzfl", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, PPCNONE, {BI, BD}},
++{"bdzfa-", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, POWER4, {BI, BDMA}},
++{"bdzfa+", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, POWER4, {BI, BDPA}},
++{"bdzfa", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, PPCNONE, {BI, BDA}},
++{"bdzfla-", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, POWER4, {BI, BDMA}},
++{"bdzfla+", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, POWER4, {BI, BDPA}},
++{"bdzfla", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, PPCNONE, {BI, BDA}},
++
++{"bf-", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, PPCNONE, {BI, BDM}},
++{"bf+", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, PPCNONE, {BI, BDP}},
++{"bf", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, PPCNONE, {BI, BD}},
++{"bbf", BBO(16,BOF,0,0), BBOAT_MASK, PWRCOM, PPCNONE, {BI, BD}},
++{"bfl-", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, PPCNONE, {BI, BDM}},
++{"bfl+", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, PPCNONE, {BI, BDP}},
++{"bfl", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, PPCNONE, {BI, BD}},
++{"bbfl", BBO(16,BOF,0,1), BBOAT_MASK, PWRCOM, PPCNONE, {BI, BD}},
++{"bfa-", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, PPCNONE, {BI, BDMA}},
++{"bfa+", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, PPCNONE, {BI, BDPA}},
++{"bfa", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, PPCNONE, {BI, BDA}},
++{"bbfa", BBO(16,BOF,1,0), BBOAT_MASK, PWRCOM, PPCNONE, {BI, BDA}},
++{"bfla-", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, PPCNONE, {BI, BDMA}},
++{"bfla+", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, PPCNONE, {BI, BDPA}},
++{"bfla", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, PPCNONE, {BI, BDA}},
++{"bbfla", BBO(16,BOF,1,1), BBOAT_MASK, PWRCOM, PPCNONE, {BI, BDA}},
++
++{"bdnzt-", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, POWER4, {BI, BDM}},
++{"bdnzt+", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, POWER4, {BI, BDP}},
++{"bdnzt", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, PPCNONE, {BI, BD}},
++{"bdnztl-", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, POWER4, {BI, BDM}},
++{"bdnztl+", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, POWER4, {BI, BDP}},
++{"bdnztl", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, PPCNONE, {BI, BD}},
++{"bdnzta-", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, POWER4, {BI, BDMA}},
++{"bdnzta+", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, POWER4, {BI, BDPA}},
++{"bdnzta", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, PPCNONE, {BI, BDA}},
++{"bdnztla-", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, POWER4, {BI, BDMA}},
++{"bdnztla+", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, POWER4, {BI, BDPA}},
++{"bdnztla", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, PPCNONE, {BI, BDA}},
++{"bdzt-", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, POWER4, {BI, BDM}},
++{"bdzt+", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, POWER4, {BI, BDP}},
++{"bdzt", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, PPCNONE, {BI, BD}},
++{"bdztl-", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, POWER4, {BI, BDM}},
++{"bdztl+", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, POWER4, {BI, BDP}},
++{"bdztl", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, PPCNONE, {BI, BD}},
++{"bdzta-", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, POWER4, {BI, BDMA}},
++{"bdzta+", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, POWER4, {BI, BDPA}},
++{"bdzta", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, PPCNONE, {BI, BDA}},
++{"bdztla-", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, POWER4, {BI, BDMA}},
++{"bdztla+", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, POWER4, {BI, BDPA}},
++{"bdztla", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, PPCNONE, {BI, BDA}},
++
++{"bt-", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, PPCNONE, {BI, BDM}},
++{"bt+", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, PPCNONE, {BI, BDP}},
++{"bt", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, PPCNONE, {BI, BD}},
++{"bbt", BBO(16,BOT,0,0), BBOAT_MASK, PWRCOM, PPCNONE, {BI, BD}},
++{"btl-", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, PPCNONE, {BI, BDM}},
++{"btl+", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, PPCNONE, {BI, BDP}},
++{"btl", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, PPCNONE, {BI, BD}},
++{"bbtl", BBO(16,BOT,0,1), BBOAT_MASK, PWRCOM, PPCNONE, {BI, BD}},
++{"bta-", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, PPCNONE, {BI, BDMA}},
++{"bta+", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, PPCNONE, {BI, BDPA}},
++{"bta", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, PPCNONE, {BI, BDA}},
++{"bbta", BBO(16,BOT,1,0), BBOAT_MASK, PWRCOM, PPCNONE, {BI, BDA}},
++{"btla-", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, PPCNONE, {BI, BDMA}},
++{"btla+", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, PPCNONE, {BI, BDPA}},
++{"btla", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, PPCNONE, {BI, BDA}},
++{"bbtla", BBO(16,BOT,1,1), BBOAT_MASK, PWRCOM, PPCNONE, {BI, BDA}},
++
++{"bc-", B(16,0,0), B_MASK, PPCCOM, PPCNONE, {BOE, BI, BDM}},
++{"bc+", B(16,0,0), B_MASK, PPCCOM, PPCNONE, {BOE, BI, BDP}},
++{"bc", B(16,0,0), B_MASK, COM, PPCNONE, {BO, BI, BD}},
++{"bcl-", B(16,0,1), B_MASK, PPCCOM, PPCNONE, {BOE, BI, BDM}},
++{"bcl+", B(16,0,1), B_MASK, PPCCOM, PPCNONE, {BOE, BI, BDP}},
++{"bcl", B(16,0,1), B_MASK, COM, PPCNONE, {BO, BI, BD}},
++{"bca-", B(16,1,0), B_MASK, PPCCOM, PPCNONE, {BOE, BI, BDMA}},
++{"bca+", B(16,1,0), B_MASK, PPCCOM, PPCNONE, {BOE, BI, BDPA}},
++{"bca", B(16,1,0), B_MASK, COM, PPCNONE, {BO, BI, BDA}},
++{"bcla-", B(16,1,1), B_MASK, PPCCOM, PPCNONE, {BOE, BI, BDMA}},
++{"bcla+", B(16,1,1), B_MASK, PPCCOM, PPCNONE, {BOE, BI, BDPA}},
++{"bcla", B(16,1,1), B_MASK, COM, PPCNONE, {BO, BI, BDA}},
++
++{"svc", SC(17,0,0), SC_MASK, POWER, PPCNONE, {SVC_LEV, FL1, FL2}},
++{"svcl", SC(17,0,1), SC_MASK, POWER, PPCNONE, {SVC_LEV, FL1, FL2}},
++{"sc", SC(17,1,0), SC_MASK, PPC, PPCNONE, {LEV}},
++{"svca", SC(17,1,0), SC_MASK, PWRCOM, PPCNONE, {SV}},
++{"svcla", SC(17,1,1), SC_MASK, POWER, PPCNONE, {SV}},
++
++{"b", B(18,0,0), B_MASK, COM, PPCNONE, {LI}},
++{"bl", B(18,0,1), B_MASK, COM, PPCNONE, {LI}},
++{"ba", B(18,1,0), B_MASK, COM, PPCNONE, {LIA}},
++{"bla", B(18,1,1), B_MASK, COM, PPCNONE, {LIA}},
++
++{"mcrf", XL(19,0), XLBB_MASK|(3<<21)|(3<<16), COM, PPCNONE, {BF, BFA}},
++
++{"bdnzlr", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPCCOM, PPCNONE, {0}},
++{"bdnzlr-", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPCCOM, POWER4, {0}},
++{"bdnzlrl", XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPCCOM, PPCNONE, {0}},
++{"bdnzlrl-", XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPCCOM, POWER4, {0}},
++{"bdnzlr+", XLO(19,BODNZP,16,0), XLBOBIBB_MASK, PPCCOM, POWER4, {0}},
++{"bdnzlrl+", XLO(19,BODNZP,16,1), XLBOBIBB_MASK, PPCCOM, POWER4, {0}},
++{"bdzlr", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPCCOM, PPCNONE, {0}},
++{"bdzlr-", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPCCOM, POWER4, {0}},
++{"bdzlrl", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPCCOM, PPCNONE, {0}},
++{"bdzlrl-", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPCCOM, POWER4, {0}},
++{"bdzlr+", XLO(19,BODZP,16,0), XLBOBIBB_MASK, PPCCOM, POWER4, {0}},
++{"bdzlrl+", XLO(19,BODZP,16,1), XLBOBIBB_MASK, PPCCOM, POWER4, {0}},
++{"blr", XLO(19,BOU,16,0), XLBOBIBB_MASK, PPCCOM, PPCNONE, {0}},
++{"br", XLO(19,BOU,16,0), XLBOBIBB_MASK, PWRCOM, PPCNONE, {0}},
++{"blrl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PPCCOM, PPCNONE, {0}},
++{"brl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PWRCOM, PPCNONE, {0}},
++{"bdnzlr-", XLO(19,BODNZM4,16,0), XLBOBIBB_MASK, POWER4, PPCNONE, {0}},
++{"bdnzlrl-", XLO(19,BODNZM4,16,1), XLBOBIBB_MASK, POWER4, PPCNONE, {0}},
++{"bdnzlr+", XLO(19,BODNZP4,16,0), XLBOBIBB_MASK, POWER4, PPCNONE, {0}},
++{"bdnzlrl+", XLO(19,BODNZP4,16,1), XLBOBIBB_MASK, POWER4, PPCNONE, {0}},
++{"bdzlr-", XLO(19,BODZM4,16,0), XLBOBIBB_MASK, POWER4, PPCNONE, {0}},
++{"bdzlrl-", XLO(19,BODZM4,16,1), XLBOBIBB_MASK, POWER4, PPCNONE, {0}},
++{"bdzlr+", XLO(19,BODZP4,16,0), XLBOBIBB_MASK, POWER4, PPCNONE, {0}},
++{"bdzlrl+", XLO(19,BODZP4,16,1), XLBOBIBB_MASK, POWER4, PPCNONE, {0}},
++
++{"bgelr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bgelr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bger", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, PPCNONE, {CR}},
++{"bnllr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bnllr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnlr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, PPCNONE, {CR}},
++{"bgelrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bgelrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bgerl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, PPCNONE, {CR}},
++{"bnllrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bnllrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnlrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, PPCNONE, {CR}},
++{"blelr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"blelr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bler", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, PPCNONE, {CR}},
++{"bnglr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bnglr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bngr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, PPCNONE, {CR}},
++{"blelrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"blelrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"blerl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, PPCNONE, {CR}},
++{"bnglrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bnglrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bngrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, PPCNONE, {CR}},
++{"bnelr", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bnelr-", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bner", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, PPCNONE, {CR}},
++{"bnelrl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bnelrl-", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnerl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, PPCNONE, {CR}},
++{"bnslr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bnslr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnsr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, PPCNONE, {CR}},
++{"bnulr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bnulr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnslrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bnslrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnsrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, PPCNONE, {CR}},
++{"bnulrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bnulrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bgelr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnllr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bgelrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnllrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"blelr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnglr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"blelrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnglrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnelr+", XLOCB(19,BOFP,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnelrl+", XLOCB(19,BOFP,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnslr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnulr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnslrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnulrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bgelr-", XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnllr-", XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bgelrl-", XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnllrl-", XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"blelr-", XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnglr-", XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"blelrl-", XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnglrl-", XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnelr-", XLOCB(19,BOFM4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnelrl-", XLOCB(19,BOFM4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnslr-", XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnulr-", XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnslrl-", XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnulrl-", XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bgelr+", XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnllr+", XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bgelrl+", XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnllrl+", XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"blelr+", XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnglr+", XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"blelrl+", XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnglrl+", XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnelr+", XLOCB(19,BOFP4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnelrl+", XLOCB(19,BOFP4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnslr+", XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnulr+", XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnslrl+", XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnulrl+", XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bltlr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bltlr-", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bltr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, PPCNONE, {CR}},
++{"bltlrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bltlrl-", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bltrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, PPCNONE, {CR}},
++{"bgtlr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bgtlr-", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bgtr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, PPCNONE, {CR}},
++{"bgtlrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bgtlrl-", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bgtrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, PPCNONE, {CR}},
++{"beqlr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"beqlr-", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"beqr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, PPCNONE, {CR}},
++{"beqlrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"beqlrl-", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"beqrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, PPCNONE, {CR}},
++{"bsolr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bsolr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bsor", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, PPCNONE, {CR}},
++{"bunlr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bunlr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bsolrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bsolrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bsorl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, PPCNONE, {CR}},
++{"bunlrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bunlrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bltlr+", XLOCB(19,BOTP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bltlrl+", XLOCB(19,BOTP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bgtlr+", XLOCB(19,BOTP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bgtlrl+", XLOCB(19,BOTP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"beqlr+", XLOCB(19,BOTP,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"beqlrl+", XLOCB(19,BOTP,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bsolr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bunlr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bsolrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bunlrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bltlr-", XLOCB(19,BOTM4,CBLT,16,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bltlrl-", XLOCB(19,BOTM4,CBLT,16,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bgtlr-", XLOCB(19,BOTM4,CBGT,16,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bgtlrl-", XLOCB(19,BOTM4,CBGT,16,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"beqlr-", XLOCB(19,BOTM4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"beqlrl-", XLOCB(19,BOTM4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bsolr-", XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bunlr-", XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bsolrl-", XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bunlrl-", XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bltlr+", XLOCB(19,BOTP4,CBLT,16,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bltlrl+", XLOCB(19,BOTP4,CBLT,16,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bgtlr+", XLOCB(19,BOTP4,CBGT,16,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bgtlrl+", XLOCB(19,BOTP4,CBGT,16,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"beqlr+", XLOCB(19,BOTP4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"beqlrl+", XLOCB(19,BOTP4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bsolr+", XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bunlr+", XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bsolrl+", XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bunlrl+", XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++
++{"bdnzflr", XLO(19,BODNZF,16,0), XLBOBB_MASK, PPCCOM, PPCNONE, {BI}},
++{"bdnzflr-", XLO(19,BODNZF,16,0), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"bdnzflrl", XLO(19,BODNZF,16,1), XLBOBB_MASK, PPCCOM, PPCNONE, {BI}},
++{"bdnzflrl-",XLO(19,BODNZF,16,1), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"bdnzflr+", XLO(19,BODNZFP,16,0), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"bdnzflrl+",XLO(19,BODNZFP,16,1), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"bdzflr", XLO(19,BODZF,16,0), XLBOBB_MASK, PPCCOM, PPCNONE, {BI}},
++{"bdzflr-", XLO(19,BODZF,16,0), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"bdzflrl", XLO(19,BODZF,16,1), XLBOBB_MASK, PPCCOM, PPCNONE, {BI}},
++{"bdzflrl-", XLO(19,BODZF,16,1), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"bdzflr+", XLO(19,BODZFP,16,0), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"bdzflrl+", XLO(19,BODZFP,16,1), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"bflr", XLO(19,BOF,16,0), XLBOBB_MASK, PPCCOM, PPCNONE, {BI}},
++{"bflr-", XLO(19,BOF,16,0), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"bbfr", XLO(19,BOF,16,0), XLBOBB_MASK, PWRCOM, PPCNONE, {BI}},
++{"bflrl", XLO(19,BOF,16,1), XLBOBB_MASK, PPCCOM, PPCNONE, {BI}},
++{"bflrl-", XLO(19,BOF,16,1), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"bbfrl", XLO(19,BOF,16,1), XLBOBB_MASK, PWRCOM, PPCNONE, {BI}},
++{"bflr+", XLO(19,BOFP,16,0), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"bflrl+", XLO(19,BOFP,16,1), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"bflr-", XLO(19,BOFM4,16,0), XLBOBB_MASK, POWER4, PPCNONE, {BI}},
++{"bflrl-", XLO(19,BOFM4,16,1), XLBOBB_MASK, POWER4, PPCNONE, {BI}},
++{"bflr+", XLO(19,BOFP4,16,0), XLBOBB_MASK, POWER4, PPCNONE, {BI}},
++{"bflrl+", XLO(19,BOFP4,16,1), XLBOBB_MASK, POWER4, PPCNONE, {BI}},
++{"bdnztlr", XLO(19,BODNZT,16,0), XLBOBB_MASK, PPCCOM, PPCNONE, {BI}},
++{"bdnztlr-", XLO(19,BODNZT,16,0), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"bdnztlrl", XLO(19,BODNZT,16,1), XLBOBB_MASK, PPCCOM, PPCNONE, {BI}},
++{"bdnztlrl-",XLO(19,BODNZT,16,1), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"bdnztlr+", XLO(19,BODNZTP,16,0), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"bdnztlrl+",XLO(19,BODNZTP,16,1), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"bdztlr", XLO(19,BODZT,16,0), XLBOBB_MASK, PPCCOM, PPCNONE, {BI}},
++{"bdztlr-", XLO(19,BODZT,16,0), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"bdztlrl", XLO(19,BODZT,16,1), XLBOBB_MASK, PPCCOM, PPCNONE, {BI}},
++{"bdztlrl-", XLO(19,BODZT,16,1), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"bdztlr+", XLO(19,BODZTP,16,0), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"bdztlrl+", XLO(19,BODZTP,16,1), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"btlr", XLO(19,BOT,16,0), XLBOBB_MASK, PPCCOM, PPCNONE, {BI}},
++{"btlr-", XLO(19,BOT,16,0), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"bbtr", XLO(19,BOT,16,0), XLBOBB_MASK, PWRCOM, PPCNONE, {BI}},
++{"btlrl", XLO(19,BOT,16,1), XLBOBB_MASK, PPCCOM, PPCNONE, {BI}},
++{"btlrl-", XLO(19,BOT,16,1), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"bbtrl", XLO(19,BOT,16,1), XLBOBB_MASK, PWRCOM, PPCNONE, {BI}},
++{"btlr+", XLO(19,BOTP,16,0), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"btlrl+", XLO(19,BOTP,16,1), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"btlr-", XLO(19,BOTM4,16,0), XLBOBB_MASK, POWER4, PPCNONE, {BI}},
++{"btlrl-", XLO(19,BOTM4,16,1), XLBOBB_MASK, POWER4, PPCNONE, {BI}},
++{"btlr+", XLO(19,BOTP4,16,0), XLBOBB_MASK, POWER4, PPCNONE, {BI}},
++{"btlrl+", XLO(19,BOTP4,16,1), XLBOBB_MASK, POWER4, PPCNONE, {BI}},
++
++{"bclr-", XLYLK(19,16,0,0), XLYBB_MASK, PPCCOM, PPCNONE, {BOE, BI}},
++{"bclrl-", XLYLK(19,16,0,1), XLYBB_MASK, PPCCOM, PPCNONE, {BOE, BI}},
++{"bclr+", XLYLK(19,16,1,0), XLYBB_MASK, PPCCOM, PPCNONE, {BOE, BI}},
++{"bclrl+", XLYLK(19,16,1,1), XLYBB_MASK, PPCCOM, PPCNONE, {BOE, BI}},
++{"bclr", XLLK(19,16,0), XLBH_MASK, PPCCOM, PPCNONE, {BO, BI, BH}},
++{"bcr", XLLK(19,16,0), XLBB_MASK, PWRCOM, PPCNONE, {BO, BI}},
++{"bclrl", XLLK(19,16,1), XLBH_MASK, PPCCOM, PPCNONE, {BO, BI, BH}},
++{"bcrl", XLLK(19,16,1), XLBB_MASK, PWRCOM, PPCNONE, {BO, BI}},
++
++{"rfid", XL(19,18), 0xffffffff, PPC64, PPCNONE, {0}},
++
++{"crnot", XL(19,33), XL_MASK, PPCCOM, PPCNONE, {BT, BA, BBA}},
++{"crnor", XL(19,33), XL_MASK, COM, PPCNONE, {BT, BA, BB}},
++{"rfmci", X(19,38), 0xffffffff, PPCRFMCI, PPCNONE, {0}},
++
++{"rfdi", XL(19,39), 0xffffffff, E500MC, PPCNONE, {0}},
++{"rfi", XL(19,50), 0xffffffff, COM, PPCNONE, {0}},
++{"rfci", XL(19,51), 0xffffffff, PPC403|BOOKE|PPCE300, PPCNONE, {0}},
++
++{"rfsvc", XL(19,82), 0xffffffff, POWER, PPCNONE, {0}},
++
++{"rfgi", XL(19,102), 0xffffffff, E500MC, PPCNONE, {0}},
++
++{"crandc", XL(19,129), XL_MASK, COM, PPCNONE, {BT, BA, BB}},
++
++{"isync", XL(19,150), 0xffffffff, PPCCOM, PPCNONE, {0}},
++{"ics", XL(19,150), 0xffffffff, PWRCOM, PPCNONE, {0}},
++
++{"crclr", XL(19,193), XL_MASK, PPCCOM, PPCNONE, {BT, BAT, BBA}},
++{"crxor", XL(19,193), XL_MASK, COM, PPCNONE, {BT, BA, BB}},
++
++{"dnh", X(19,198), X_MASK, E500MC, PPCNONE, {DUI, DUIS}},
++
++{"crnand", XL(19,225), XL_MASK, COM, PPCNONE, {BT, BA, BB}},
++
++{"crand", XL(19,257), XL_MASK, COM, PPCNONE, {BT, BA, BB}},
++
++{"hrfid", XL(19,274), 0xffffffff, POWER5|CELL, PPCNONE, {0}},
++
++{"crset", XL(19,289), XL_MASK, PPCCOM, PPCNONE, {BT, BAT, BBA}},
++{"creqv", XL(19,289), XL_MASK, COM, PPCNONE, {BT, BA, BB}},
++
++{"doze", XL(19,402), 0xffffffff, POWER6, PPCNONE, {0}},
++
++{"crorc", XL(19,417), XL_MASK, COM, PPCNONE, {BT, BA, BB}},
++
++{"nap", XL(19,434), 0xffffffff, POWER6, PPCNONE, {0}},
++
++{"crmove", XL(19,449), XL_MASK, PPCCOM, PPCNONE, {BT, BA, BBA}},
++{"cror", XL(19,449), XL_MASK, COM, PPCNONE, {BT, BA, BB}},
++
++{"sleep", XL(19,466), 0xffffffff, POWER6, PPCNONE, {0}},
++{"rvwinkle", XL(19,498), 0xffffffff, POWER6, PPCNONE, {0}},
++
++{"bctr", XLO(19,BOU,528,0), XLBOBIBB_MASK, COM, PPCNONE, {0}},
++{"bctrl", XLO(19,BOU,528,1), XLBOBIBB_MASK, COM, PPCNONE, {0}},
++
++{"bgectr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bgectr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnlctr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bnlctr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bgectrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bgectrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnlctrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bnlctrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"blectr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"blectr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bngctr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bngctr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"blectrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"blectrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bngctrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bngctrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnectr", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bnectr-", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnectrl", XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bnectrl-",XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnsctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bnsctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnuctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bnuctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnsctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bnsctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnuctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bnuctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bgectr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnlctr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bgectrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnlctrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"blectr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bngctr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"blectrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bngctrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnectr+", XLOCB(19,BOFP,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnectrl+",XLOCB(19,BOFP,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnsctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnuctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnsctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bnuctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bgectr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnlctr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bgectrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnlctrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"blectr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bngctr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"blectrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bngctrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnectr-", XLOCB(19,BOFM4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnectrl-",XLOCB(19,BOFM4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnsctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnuctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnsctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnuctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bgectr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnlctr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bgectrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnlctrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"blectr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bngctr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"blectrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bngctrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnectr+", XLOCB(19,BOFP4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnectrl+",XLOCB(19,BOFP4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnsctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnuctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnsctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bnuctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bltctr", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bltctr-", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bltctrl", XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bltctrl-",XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bgtctr", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bgtctr-", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bgtctrl", XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bgtctrl-",XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"beqctr", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"beqctr-", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"beqctrl", XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"beqctrl-",XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bsoctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bsoctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bunctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bunctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bsoctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bsoctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bunctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCNONE, {CR}},
++{"bunctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bltctr+", XLOCB(19,BOTP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bltctrl+",XLOCB(19,BOTP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bgtctr+", XLOCB(19,BOTP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bgtctrl+",XLOCB(19,BOTP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"beqctr+", XLOCB(19,BOTP,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"beqctrl+",XLOCB(19,BOTP,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bsoctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bunctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bsoctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bunctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, POWER4, {CR}},
++{"bltctr-", XLOCB(19,BOTM4,CBLT,528,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bltctrl-",XLOCB(19,BOTM4,CBLT,528,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bgtctr-", XLOCB(19,BOTM4,CBGT,528,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bgtctrl-",XLOCB(19,BOTM4,CBGT,528,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"beqctr-", XLOCB(19,BOTM4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"beqctrl-",XLOCB(19,BOTM4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bsoctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bunctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bsoctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bunctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bltctr+", XLOCB(19,BOTP4,CBLT,528,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bltctrl+",XLOCB(19,BOTP4,CBLT,528,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bgtctr+", XLOCB(19,BOTP4,CBGT,528,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bgtctrl+",XLOCB(19,BOTP4,CBGT,528,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"beqctr+", XLOCB(19,BOTP4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"beqctrl+",XLOCB(19,BOTP4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bsoctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bunctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bsoctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++{"bunctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, PPCNONE, {CR}},
++
++{"bfctr", XLO(19,BOF,528,0), XLBOBB_MASK, PPCCOM, PPCNONE, {BI}},
++{"bfctr-", XLO(19,BOF,528,0), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"bfctrl", XLO(19,BOF,528,1), XLBOBB_MASK, PPCCOM, PPCNONE, {BI}},
++{"bfctrl-", XLO(19,BOF,528,1), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"bfctr+", XLO(19,BOFP,528,0), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"bfctrl+", XLO(19,BOFP,528,1), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"bfctr-", XLO(19,BOFM4,528,0), XLBOBB_MASK, POWER4, PPCNONE, {BI}},
++{"bfctrl-", XLO(19,BOFM4,528,1), XLBOBB_MASK, POWER4, PPCNONE, {BI}},
++{"bfctr+", XLO(19,BOFP4,528,0), XLBOBB_MASK, POWER4, PPCNONE, {BI}},
++{"bfctrl+", XLO(19,BOFP4,528,1), XLBOBB_MASK, POWER4, PPCNONE, {BI}},
++{"btctr", XLO(19,BOT,528,0), XLBOBB_MASK, PPCCOM, PPCNONE, {BI}},
++{"btctr-", XLO(19,BOT,528,0), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"btctrl", XLO(19,BOT,528,1), XLBOBB_MASK, PPCCOM, PPCNONE, {BI}},
++{"btctrl-", XLO(19,BOT,528,1), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"btctr+", XLO(19,BOTP,528,0), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"btctrl+", XLO(19,BOTP,528,1), XLBOBB_MASK, PPCCOM, POWER4, {BI}},
++{"btctr-", XLO(19,BOTM4,528,0), XLBOBB_MASK, POWER4, PPCNONE, {BI}},
++{"btctrl-", XLO(19,BOTM4,528,1), XLBOBB_MASK, POWER4, PPCNONE, {BI}},
++{"btctr+", XLO(19,BOTP4,528,0), XLBOBB_MASK, POWER4, PPCNONE, {BI}},
++{"btctrl+", XLO(19,BOTP4,528,1), XLBOBB_MASK, POWER4, PPCNONE, {BI}},
++
++{"bcctr-", XLYLK(19,528,0,0), XLYBB_MASK, PPCCOM, PPCNONE, {BOE, BI}},
++{"bcctrl-", XLYLK(19,528,0,1), XLYBB_MASK, PPCCOM, PPCNONE, {BOE, BI}},
++{"bcctr+", XLYLK(19,528,1,0), XLYBB_MASK, PPCCOM, PPCNONE, {BOE, BI}},
++{"bcctrl+", XLYLK(19,528,1,1), XLYBB_MASK, PPCCOM, PPCNONE, {BOE, BI}},
++{"bcctr", XLLK(19,528,0), XLBH_MASK, PPCCOM, PPCNONE, {BO, BI, BH}},
++{"bcc", XLLK(19,528,0), XLBB_MASK, PWRCOM, PPCNONE, {BO, BI}},
++{"bcctrl", XLLK(19,528,1), XLBH_MASK, PPCCOM, PPCNONE, {BO, BI, BH}},
++{"bccl", XLLK(19,528,1), XLBB_MASK, PWRCOM, PPCNONE, {BO, BI}},
++
++{"rlwimi", M(20,0), M_MASK, PPCCOM, PPCNONE, {RA, RS, SH, MBE, ME}},
++{"rlimi", M(20,0), M_MASK, PWRCOM, PPCNONE, {RA, RS, SH, MBE, ME}},
++
++{"rlwimi.", M(20,1), M_MASK, PPCCOM, PPCNONE, {RA, RS, SH, MBE, ME}},
++{"rlimi.", M(20,1), M_MASK, PWRCOM, PPCNONE, {RA, RS, SH, MBE, ME}},
++
++{"rotlwi", MME(21,31,0), MMBME_MASK, PPCCOM, PPCNONE, {RA, RS, SH}},
++{"clrlwi", MME(21,31,0), MSHME_MASK, PPCCOM, PPCNONE, {RA, RS, MB}},
++{"rlwinm", M(21,0), M_MASK, PPCCOM, PPCNONE, {RA, RS, SH, MBE, ME}},
++{"rlinm", M(21,0), M_MASK, PWRCOM, PPCNONE, {RA, RS, SH, MBE, ME}},
++{"rotlwi.", MME(21,31,1), MMBME_MASK, PPCCOM, PPCNONE, {RA, RS, SH}},
++{"clrlwi.", MME(21,31,1), MSHME_MASK, PPCCOM, PPCNONE, {RA, RS, MB}},
++{"rlwinm.", M(21,1), M_MASK, PPCCOM, PPCNONE, {RA, RS, SH, MBE, ME}},
++{"rlinm.", M(21,1), M_MASK, PWRCOM, PPCNONE, {RA, RS, SH, MBE, ME}},
++
++{"rlmi", M(22,0), M_MASK, M601, PPCNONE, {RA, RS, RB, MBE, ME}},
++{"rlmi.", M(22,1), M_MASK, M601, PPCNONE, {RA, RS, RB, MBE, ME}},
++
++{"rotlw", MME(23,31,0), MMBME_MASK, PPCCOM, PPCNONE, {RA, RS, RB}},
++{"rlwnm", M(23,0), M_MASK, PPCCOM, PPCNONE, {RA, RS, RB, MBE, ME}},
++{"rlnm", M(23,0), M_MASK, PWRCOM, PPCNONE, {RA, RS, RB, MBE, ME}},
++{"rotlw.", MME(23,31,1), MMBME_MASK, PPCCOM, PPCNONE, {RA, RS, RB}},
++{"rlwnm.", M(23,1), M_MASK, PPCCOM, PPCNONE, {RA, RS, RB, MBE, ME}},
++{"rlnm.", M(23,1), M_MASK, PWRCOM, PPCNONE, {RA, RS, RB, MBE, ME}},
++
++{"nop", OP(24), 0xffffffff, PPCCOM, PPCNONE, {0}},
++{"ori", OP(24), OP_MASK, PPCCOM, PPCNONE, {RA, RS, UI}},
++{"oril", OP(24), OP_MASK, PWRCOM, PPCNONE, {RA, RS, UI}},
++
++{"oris", OP(25), OP_MASK, PPCCOM, PPCNONE, {RA, RS, UI}},
++{"oriu", OP(25), OP_MASK, PWRCOM, PPCNONE, {RA, RS, UI}},
++
++{"xori", OP(26), OP_MASK, PPCCOM, PPCNONE, {RA, RS, UI}},
++{"xoril", OP(26), OP_MASK, PWRCOM, PPCNONE, {RA, RS, UI}},
++
++{"xoris", OP(27), OP_MASK, PPCCOM, PPCNONE, {RA, RS, UI}},
++{"xoriu", OP(27), OP_MASK, PWRCOM, PPCNONE, {RA, RS, UI}},
++
++{"andi.", OP(28), OP_MASK, PPCCOM, PPCNONE, {RA, RS, UI}},
++{"andil.", OP(28), OP_MASK, PWRCOM, PPCNONE, {RA, RS, UI}},
++
++{"andis.", OP(29), OP_MASK, PPCCOM, PPCNONE, {RA, RS, UI}},
++{"andiu.", OP(29), OP_MASK, PWRCOM, PPCNONE, {RA, RS, UI}},
++
++{"rotldi", MD(30,0,0), MDMB_MASK, PPC64, PPCNONE, {RA, RS, SH6}},
++{"clrldi", MD(30,0,0), MDSH_MASK, PPC64, PPCNONE, {RA, RS, MB6}},
++{"rldicl", MD(30,0,0), MD_MASK, PPC64, PPCNONE, {RA, RS, SH6, MB6}},
++{"rotldi.", MD(30,0,1), MDMB_MASK, PPC64, PPCNONE, {RA, RS, SH6}},
++{"clrldi.", MD(30,0,1), MDSH_MASK, PPC64, PPCNONE, {RA, RS, MB6}},
++{"rldicl.", MD(30,0,1), MD_MASK, PPC64, PPCNONE, {RA, RS, SH6, MB6}},
++
++{"rldicr", MD(30,1,0), MD_MASK, PPC64, PPCNONE, {RA, RS, SH6, ME6}},
++{"rldicr.", MD(30,1,1), MD_MASK, PPC64, PPCNONE, {RA, RS, SH6, ME6}},
++
++{"rldic", MD(30,2,0), MD_MASK, PPC64, PPCNONE, {RA, RS, SH6, MB6}},
++{"rldic.", MD(30,2,1), MD_MASK, PPC64, PPCNONE, {RA, RS, SH6, MB6}},
++
++{"rldimi", MD(30,3,0), MD_MASK, PPC64, PPCNONE, {RA, RS, SH6, MB6}},
++{"rldimi.", MD(30,3,1), MD_MASK, PPC64, PPCNONE, {RA, RS, SH6, MB6}},
++
++{"rotld", MDS(30,8,0), MDSMB_MASK, PPC64, PPCNONE, {RA, RS, RB}},
++{"rldcl", MDS(30,8,0), MDS_MASK, PPC64, PPCNONE, {RA, RS, RB, MB6}},
++{"rotld.", MDS(30,8,1), MDSMB_MASK, PPC64, PPCNONE, {RA, RS, RB}},
++{"rldcl.", MDS(30,8,1), MDS_MASK, PPC64, PPCNONE, {RA, RS, RB, MB6}},
++
++{"rldcr", MDS(30,9,0), MDS_MASK, PPC64, PPCNONE, {RA, RS, RB, ME6}},
++{"rldcr.", MDS(30,9,1), MDS_MASK, PPC64, PPCNONE, {RA, RS, RB, ME6}},
++
++{"cmpw", XOPL(31,0,0), XCMPL_MASK, PPCCOM, PPCNONE, {OBF, RA, RB}},
++{"cmpd", XOPL(31,0,1), XCMPL_MASK, PPC64, PPCNONE, {OBF, RA, RB}},
++{"cmp", X(31,0), XCMP_MASK, PPC, PPCNONE, {BF, L, RA, RB}},
++{"cmp", X(31,0), XCMPL_MASK, PWRCOM, PPCNONE, {BF, RA, RB}},
++
++{"twlgt", XTO(31,4,TOLGT), XTO_MASK, PPCCOM, PPCNONE, {RA, RB}},
++{"tlgt", XTO(31,4,TOLGT), XTO_MASK, PWRCOM, PPCNONE, {RA, RB}},
++{"twllt", XTO(31,4,TOLLT), XTO_MASK, PPCCOM, PPCNONE, {RA, RB}},
++{"tllt", XTO(31,4,TOLLT), XTO_MASK, PWRCOM, PPCNONE, {RA, RB}},
++{"tweq", XTO(31,4,TOEQ), XTO_MASK, PPCCOM, PPCNONE, {RA, RB}},
++{"teq", XTO(31,4,TOEQ), XTO_MASK, PWRCOM, PPCNONE, {RA, RB}},
++{"twlge", XTO(31,4,TOLGE), XTO_MASK, PPCCOM, PPCNONE, {RA, RB}},
++{"tlge", XTO(31,4,TOLGE), XTO_MASK, PWRCOM, PPCNONE, {RA, RB}},
++{"twlnl", XTO(31,4,TOLNL), XTO_MASK, PPCCOM, PPCNONE, {RA, RB}},
++{"tlnl", XTO(31,4,TOLNL), XTO_MASK, PWRCOM, PPCNONE, {RA, RB}},
++{"twlle", XTO(31,4,TOLLE), XTO_MASK, PPCCOM, PPCNONE, {RA, RB}},
++{"tlle", XTO(31,4,TOLLE), XTO_MASK, PWRCOM, PPCNONE, {RA, RB}},
++{"twlng", XTO(31,4,TOLNG), XTO_MASK, PPCCOM, PPCNONE, {RA, RB}},
++{"tlng", XTO(31,4,TOLNG), XTO_MASK, PWRCOM, PPCNONE, {RA, RB}},
++{"twgt", XTO(31,4,TOGT), XTO_MASK, PPCCOM, PPCNONE, {RA, RB}},
++{"tgt", XTO(31,4,TOGT), XTO_MASK, PWRCOM, PPCNONE, {RA, RB}},
++{"twge", XTO(31,4,TOGE), XTO_MASK, PPCCOM, PPCNONE, {RA, RB}},
++{"tge", XTO(31,4,TOGE), XTO_MASK, PWRCOM, PPCNONE, {RA, RB}},
++{"twnl", XTO(31,4,TONL), XTO_MASK, PPCCOM, PPCNONE, {RA, RB}},
++{"tnl", XTO(31,4,TONL), XTO_MASK, PWRCOM, PPCNONE, {RA, RB}},
++{"twlt", XTO(31,4,TOLT), XTO_MASK, PPCCOM, PPCNONE, {RA, RB}},
++{"tlt", XTO(31,4,TOLT), XTO_MASK, PWRCOM, PPCNONE, {RA, RB}},
++{"twle", XTO(31,4,TOLE), XTO_MASK, PPCCOM, PPCNONE, {RA, RB}},
++{"tle", XTO(31,4,TOLE), XTO_MASK, PWRCOM, PPCNONE, {RA, RB}},
++{"twng", XTO(31,4,TONG), XTO_MASK, PPCCOM, PPCNONE, {RA, RB}},
++{"tng", XTO(31,4,TONG), XTO_MASK, PWRCOM, PPCNONE, {RA, RB}},
++{"twne", XTO(31,4,TONE), XTO_MASK, PPCCOM, PPCNONE, {RA, RB}},
++{"tne", XTO(31,4,TONE), XTO_MASK, PWRCOM, PPCNONE, {RA, RB}},
++{"trap", XTO(31,4,TOU), 0xffffffff, PPCCOM, PPCNONE, {0}},
++{"tw", X(31,4), X_MASK, PPCCOM, PPCNONE, {TO, RA, RB}},
++{"t", X(31,4), X_MASK, PWRCOM, PPCNONE, {TO, RA, RB}},
++
++{"lvsl", X(31,6), X_MASK, PPCVEC, PPCNONE, {VD, RA, RB}},
++{"lvebx", X(31,7), X_MASK, PPCVEC, PPCNONE, {VD, RA, RB}},
++{"lbfcmx", APU(31,7,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
++
++{"subfc", XO(31,8,0,0), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
++{"sf", XO(31,8,0,0), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++{"subc", XO(31,8,0,0), XO_MASK, PPC, PPCNONE, {RT, RB, RA}},
++{"subfc.", XO(31,8,0,1), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
++{"sf.", XO(31,8,0,1), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++{"subc.", XO(31,8,0,1), XO_MASK, PPCCOM, PPCNONE, {RT, RB, RA}},
++
++{"mulhdu", XO(31,9,0,0), XO_MASK, PPC64, PPCNONE, {RT, RA, RB}},
++{"mulhdu.", XO(31,9,0,1), XO_MASK, PPC64, PPCNONE, {RT, RA, RB}},
++
++{"addc", XO(31,10,0,0), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
++{"a", XO(31,10,0,0), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++{"addc.", XO(31,10,0,1), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
++{"a.", XO(31,10,0,1), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++
++{"mulhwu", XO(31,11,0,0), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
++{"mulhwu.", XO(31,11,0,1), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
++
++{"isellt", X(31,15), X_MASK, PPCISEL, PPCNONE, {RT, RA, RB}},
++
++{"mfcr", XFXM(31,19,0,0), XRARB_MASK, COM, POWER4, {RT}},
++{"mfcr", XFXM(31,19,0,0), XFXFXM_MASK, POWER4, PPCNONE, {RT, FXM4}},
++{"mfocrf", XFXM(31,19,0,1), XFXFXM_MASK, COM, PPCNONE, {RT, FXM}},
++
++{"lwarx", X(31,20), XEH_MASK, PPC, PPCNONE, {RT, RA0, RB, EH}},
++
++{"ldx", X(31,21), X_MASK, PPC64, PPCNONE, {RT, RA0, RB}},
++
++{"icbt", X(31,22), X_MASK, BOOKE|PPCE300, PPCNONE, {CT, RA, RB}},
++
++{"lwzx", X(31,23), X_MASK, PPCCOM, PPCNONE, {RT, RA0, RB}},
++{"lx", X(31,23), X_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++
++{"slw", XRC(31,24,0), X_MASK, PPCCOM, PPCNONE, {RA, RS, RB}},
++{"sl", XRC(31,24,0), X_MASK, PWRCOM, PPCNONE, {RA, RS, RB}},
++{"slw.", XRC(31,24,1), X_MASK, PPCCOM, PPCNONE, {RA, RS, RB}},
++{"sl.", XRC(31,24,1), X_MASK, PWRCOM, PPCNONE, {RA, RS, RB}},
++
++{"cntlzw", XRC(31,26,0), XRB_MASK, PPCCOM, PPCNONE, {RA, RS}},
++{"cntlz", XRC(31,26,0), XRB_MASK, PWRCOM, PPCNONE, {RA, RS}},
++{"cntlzw.", XRC(31,26,1), XRB_MASK, PPCCOM, PPCNONE, {RA, RS}},
++{"cntlz.", XRC(31,26,1), XRB_MASK, PWRCOM, PPCNONE, {RA, RS}},
++
++{"sld", XRC(31,27,0), X_MASK, PPC64, PPCNONE, {RA, RS, RB}},
++{"sld.", XRC(31,27,1), X_MASK, PPC64, PPCNONE, {RA, RS, RB}},
++
++{"and", XRC(31,28,0), X_MASK, COM, PPCNONE, {RA, RS, RB}},
++{"and.", XRC(31,28,1), X_MASK, COM, PPCNONE, {RA, RS, RB}},
++
++{"maskg", XRC(31,29,0), X_MASK, M601, PPCNONE, {RA, RS, RB}},
++{"maskg.", XRC(31,29,1), X_MASK, M601, PPCNONE, {RA, RS, RB}},
++
++{"ldepx", X(31,29), X_MASK, E500MC, PPCNONE, {RT, RA, RB}},
++{"lwepx", X(31,31), X_MASK, E500MC, PPCNONE, {RT, RA, RB}},
++
++{"cmplw", XOPL(31,32,0), XCMPL_MASK, PPCCOM, PPCNONE, {OBF, RA, RB}},
++{"cmpld", XOPL(31,32,1), XCMPL_MASK, PPC64, PPCNONE, {OBF, RA, RB}},
++{"cmpl", X(31,32), XCMP_MASK, PPC, PPCNONE, {BF, L, RA, RB}},
++{"cmpl", X(31,32), XCMPL_MASK, PWRCOM, PPCNONE, {BF, RA, RB}},
++
++{"lvsr", X(31,38), X_MASK, PPCVEC, PPCNONE, {VD, RA, RB}},
++{"lvehx", X(31,39), X_MASK, PPCVEC, PPCNONE, {VD, RA, RB}},
++{"lhfcmx", APU(31,39,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
++
++{"iselgt", X(31,47), X_MASK, PPCISEL, PPCNONE, {RT, RA, RB}},
++
++{"lvewx", X(31,71), X_MASK, PPCVEC, PPCNONE, {VD, RA, RB}},
++
++{"addg6s", XO(31,74,0,0), XO_MASK, POWER6, PPCNONE, {RT, RA, RB}},
++
++{"iseleq", X(31,79), X_MASK, PPCISEL, PPCNONE, {RT, RA, RB}},
++
++{"isel", XISEL(31,15), XISEL_MASK, PPCISEL, PPCNONE, {RT, RA, RB, CRB}},
++
++{"subf", XO(31,40,0,0), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
++{"sub", XO(31,40,0,0), XO_MASK, PPC, PPCNONE, {RT, RB, RA}},
++{"subf.", XO(31,40,0,1), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
++{"sub.", XO(31,40,0,1), XO_MASK, PPC, PPCNONE, {RT, RB, RA}},
++
++{"lbarx", X(31,52), XEH_MASK, POWER7, PPCNONE, {RT, RA0, RB, EH}},
++
++{"ldux", X(31,53), X_MASK, PPC64, PPCNONE, {RT, RAL, RB}},
++
++{"dcbst", X(31,54), XRT_MASK, PPC, PPCNONE, {RA, RB}},
++
++{"lwzux", X(31,55), X_MASK, PPCCOM, PPCNONE, {RT, RAL, RB}},
++{"lux", X(31,55), X_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++
++{"cntlzd", XRC(31,58,0), XRB_MASK, PPC64, PPCNONE, {RA, RS}},
++{"cntlzd.", XRC(31,58,1), XRB_MASK, PPC64, PPCNONE, {RA, RS}},
++
++{"andc", XRC(31,60,0), X_MASK, COM, PPCNONE, {RA, RS, RB}},
++{"andc.", XRC(31,60,1), X_MASK, COM, PPCNONE, {RA, RS, RB}},
++
++{"waitrsv", X(31,62)|(1<<21), 0xffffffff, POWER7|E500MC, PPCNONE, {0}},
++{"waitimpl", X(31,62)|(2<<21), 0xffffffff, POWER7|E500MC, PPCNONE, {0}},
++{"wait", X(31,62), XWC_MASK, POWER7|E500MC, PPCNONE, {WC}},
++
++{"dcbstep", XRT(31,63,0), XRT_MASK, E500MC, PPCNONE, {RA, RB}},
++
++{"tdlgt", XTO(31,68,TOLGT), XTO_MASK, PPC64, PPCNONE, {RA, RB}},
++{"tdllt", XTO(31,68,TOLLT), XTO_MASK, PPC64, PPCNONE, {RA, RB}},
++{"tdeq", XTO(31,68,TOEQ), XTO_MASK, PPC64, PPCNONE, {RA, RB}},
++{"tdlge", XTO(31,68,TOLGE), XTO_MASK, PPC64, PPCNONE, {RA, RB}},
++{"tdlnl", XTO(31,68,TOLNL), XTO_MASK, PPC64, PPCNONE, {RA, RB}},
++{"tdlle", XTO(31,68,TOLLE), XTO_MASK, PPC64, PPCNONE, {RA, RB}},
++{"tdlng", XTO(31,68,TOLNG), XTO_MASK, PPC64, PPCNONE, {RA, RB}},
++{"tdgt", XTO(31,68,TOGT), XTO_MASK, PPC64, PPCNONE, {RA, RB}},
++{"tdge", XTO(31,68,TOGE), XTO_MASK, PPC64, PPCNONE, {RA, RB}},
++{"tdnl", XTO(31,68,TONL), XTO_MASK, PPC64, PPCNONE, {RA, RB}},
++{"tdlt", XTO(31,68,TOLT), XTO_MASK, PPC64, PPCNONE, {RA, RB}},
++{"tdle", XTO(31,68,TOLE), XTO_MASK, PPC64, PPCNONE, {RA, RB}},
++{"tdng", XTO(31,68,TONG), XTO_MASK, PPC64, PPCNONE, {RA, RB}},
++{"tdne", XTO(31,68,TONE), XTO_MASK, PPC64, PPCNONE, {RA, RB}},
++{"td", X(31,68), X_MASK, PPC64, PPCNONE, {TO, RA, RB}},
++
++{"lwfcmx", APU(31,71,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
++{"mulhd", XO(31,73,0,0), XO_MASK, PPC64, PPCNONE, {RT, RA, RB}},
++{"mulhd.", XO(31,73,0,1), XO_MASK, PPC64, PPCNONE, {RT, RA, RB}},
++
++{"mulhw", XO(31,75,0,0), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
++{"mulhw.", XO(31,75,0,1), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
++
++{"dlmzb", XRC(31,78,0), X_MASK, PPC403|PPC440, PPCNONE, {RA, RS, RB}},
++{"dlmzb.", XRC(31,78,1), X_MASK, PPC403|PPC440, PPCNONE, {RA, RS, RB}},
++
++{"mtsrd", X(31,82), XRB_MASK|(1<<20), PPC64, PPCNONE, {SR, RS}},
++
++{"mfmsr", X(31,83), XRARB_MASK, COM, PPCNONE, {RT}},
++
++{"ldarx", X(31,84), XEH_MASK, PPC64, PPCNONE, {RT, RA0, RB, EH}},
++
++{"dcbfl", XOPL(31,86,1), XRT_MASK, POWER5, PPCNONE, {RA, RB}},
++{"dcbf", X(31,86), XLRT_MASK, PPC, PPCNONE, {RA, RB, L}},
++
++{"lbzx", X(31,87), X_MASK, COM, PPCNONE, {RT, RA0, RB}},
++
++{"lbepx", X(31,95), X_MASK, E500MC, PPCNONE, {RT, RA, RB}},
++
++{"lvx", X(31,103), X_MASK, PPCVEC, PPCNONE, {VD, RA, RB}},
++{"lqfcmx", APU(31,103,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
++
++{"neg", XO(31,104,0,0), XORB_MASK, COM, PPCNONE, {RT, RA}},
++{"neg.", XO(31,104,0,1), XORB_MASK, COM, PPCNONE, {RT, RA}},
++
++{"mul", XO(31,107,0,0), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
++{"mul.", XO(31,107,0,1), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
++
++{"mtsrdin", X(31,114), XRA_MASK, PPC64, PPCNONE, {RS, RB}},
++
++{"lharx", X(31,116), XEH_MASK, POWER7, PPCNONE, {RT, RA0, RB, EH}},
++
++{"clf", X(31,118), XTO_MASK, POWER, PPCNONE, {RA, RB}},
++
++{"lbzux", X(31,119), X_MASK, COM, PPCNONE, {RT, RAL, RB}},
++
++{"popcntb", X(31,122), XRB_MASK, POWER5, PPCNONE, {RA, RS}},
++
++{"not", XRC(31,124,0), X_MASK, COM, PPCNONE, {RA, RS, RBS}},
++{"nor", XRC(31,124,0), X_MASK, COM, PPCNONE, {RA, RS, RB}},
++{"not.", XRC(31,124,1), X_MASK, COM, PPCNONE, {RA, RS, RBS}},
++{"nor.", XRC(31,124,1), X_MASK, COM, PPCNONE, {RA, RS, RB}},
++
++{"dcbfep", XRT(31,127,0), XRT_MASK, E500MC, PPCNONE, {RA, RB}},
++
++{"wrtee", X(31,131), XRARB_MASK, PPC403|BOOKE, PPCNONE, {RS}},
++
++{"dcbtstls", X(31,134), X_MASK, PPCCHLK, PPCNONE, {CT, RA, RB}},
++
++{"stvebx", X(31,135), X_MASK, PPCVEC, PPCNONE, {VS, RA, RB}},
++{"stbfcmx", APU(31,135,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
++
++{"subfe", XO(31,136,0,0), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
++{"sfe", XO(31,136,0,0), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++{"subfe.", XO(31,136,0,1), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
++{"sfe.", XO(31,136,0,1), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++
++{"adde", XO(31,138,0,0), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
++{"ae", XO(31,138,0,0), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++{"adde.", XO(31,138,0,1), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
++{"ae.", XO(31,138,0,1), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++
++{"dcbtstlse", X(31,142), X_MASK, PPCCHLK, PPCNONE, {CT, RA, RB}},
++
++{"mtcr", XFXM(31,144,0xff,0), XRARB_MASK, COM, PPCNONE, {RS}},
++{"mtcrf", XFXM(31,144,0,0), XFXFXM_MASK, COM, PPCNONE, {FXM, RS}},
++{"mtocrf", XFXM(31,144,0,1), XFXFXM_MASK, COM, PPCNONE, {FXM, RS}},
++
++{"mtmsr", X(31,146), XRLARB_MASK, COM, PPCNONE, {RS, A_L}},
++
++{"stdx", X(31,149), X_MASK, PPC64, PPCNONE, {RS, RA0, RB}},
++
++{"stwcx.", XRC(31,150,1), X_MASK, PPC, PPCNONE, {RS, RA0, RB}},
++
++{"stwx", X(31,151), X_MASK, PPCCOM, PPCNONE, {RS, RA0, RB}},
++{"stx", X(31,151), X_MASK, PWRCOM, PPCNONE, {RS, RA, RB}},
++
++{"slq", XRC(31,152,0), X_MASK, M601, PPCNONE, {RA, RS, RB}},
++{"slq.", XRC(31,152,1), X_MASK, M601, PPCNONE, {RA, RS, RB}},
++
++{"sle", XRC(31,153,0), X_MASK, M601, PPCNONE, {RA, RS, RB}},
++{"sle.", XRC(31,153,1), X_MASK, M601, PPCNONE, {RA, RS, RB}},
++
++{"prtyw", X(31,154), XRB_MASK, POWER6, PPCNONE, {RA, RS}},
++
++{"stdepx", X(31,157), X_MASK, E500MC, PPCNONE, {RS, RA, RB}},
++
++{"stwepx", X(31,159), X_MASK, E500MC, PPCNONE, {RS, RA, RB}},
++
++{"wrteei", X(31,163), XE_MASK, PPC403|BOOKE, PPCNONE, {E}},
++
++{"dcbtls", X(31,166), X_MASK, PPCCHLK, PPCNONE, {CT, RA, RB}},
++
++{"stvehx", X(31,167), X_MASK, PPCVEC, PPCNONE, {VS, RA, RB}},
++{"sthfcmx", APU(31,167,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
++
++{"dcbtlse", X(31,174), X_MASK, PPCCHLK, PPCNONE, {CT, RA, RB}},
++
++{"mtmsrd", X(31,178), XRLARB_MASK, PPC64, PPCNONE, {RS, A_L}},
++
++{"stdux", X(31,181), X_MASK, PPC64, PPCNONE, {RS, RAS, RB}},
++
++{"stwux", X(31,183), X_MASK, PPCCOM, PPCNONE, {RS, RAS, RB}},
++{"stux", X(31,183), X_MASK, PWRCOM, PPCNONE, {RS, RA0, RB}},
++
++{"sliq", XRC(31,184,0), X_MASK, M601, PPCNONE, {RA, RS, SH}},
++{"sliq.", XRC(31,184,1), X_MASK, M601, PPCNONE, {RA, RS, SH}},
++
++{"prtyd", X(31,186), XRB_MASK, POWER6, PPCNONE, {RA, RS}},
++
++{"stvewx", X(31,199), X_MASK, PPCVEC, PPCNONE, {VS, RA, RB}},
++{"stwfcmx", APU(31,199,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
++
++{"subfze", XO(31,200,0,0), XORB_MASK, PPCCOM, PPCNONE, {RT, RA}},
++{"sfze", XO(31,200,0,0), XORB_MASK, PWRCOM, PPCNONE, {RT, RA}},
++{"subfze.", XO(31,200,0,1), XORB_MASK, PPCCOM, PPCNONE, {RT, RA}},
++{"sfze.", XO(31,200,0,1), XORB_MASK, PWRCOM, PPCNONE, {RT, RA}},
++
++{"addze", XO(31,202,0,0), XORB_MASK, PPCCOM, PPCNONE, {RT, RA}},
++{"aze", XO(31,202,0,0), XORB_MASK, PWRCOM, PPCNONE, {RT, RA}},
++{"addze.", XO(31,202,0,1), XORB_MASK, PPCCOM, PPCNONE, {RT, RA}},
++{"aze.", XO(31,202,0,1), XORB_MASK, PWRCOM, PPCNONE, {RT, RA}},
++
++{"msgsnd", XRTRA(31,206,0,0),XRTRA_MASK,E500MC, PPCNONE, {RB}},
++
++{"mtsr", X(31,210), XRB_MASK|(1<<20), COM32, PPCNONE, {SR, RS}},
++
++{"stdcx.", XRC(31,214,1), X_MASK, PPC64, PPCNONE, {RS, RA0, RB}},
++
++{"stbx", X(31,215), X_MASK, COM, PPCNONE, {RS, RA0, RB}},
++
++{"sllq", XRC(31,216,0), X_MASK, M601, PPCNONE, {RA, RS, RB}},
++{"sllq.", XRC(31,216,1), X_MASK, M601, PPCNONE, {RA, RS, RB}},
++
++{"sleq", XRC(31,217,0), X_MASK, M601, PPCNONE, {RA, RS, RB}},
++{"sleq.", XRC(31,217,1), X_MASK, M601, PPCNONE, {RA, RS, RB}},
++
++{"stbepx", X(31,223), X_MASK, E500MC, PPCNONE, {RS, RA, RB}},
++
++{"icblc", X(31,230), X_MASK, PPCCHLK, PPCNONE, {CT, RA, RB}},
++
++{"stvx", X(31,231), X_MASK, PPCVEC, PPCNONE, {VS, RA, RB}},
++{"stqfcmx", APU(31,231,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
++
++{"subfme", XO(31,232,0,0), XORB_MASK, PPCCOM, PPCNONE, {RT, RA}},
++{"sfme", XO(31,232,0,0), XORB_MASK, PWRCOM, PPCNONE, {RT, RA}},
++{"subfme.", XO(31,232,0,1), XORB_MASK, PPCCOM, PPCNONE, {RT, RA}},
++{"sfme.", XO(31,232,0,1), XORB_MASK, PWRCOM, PPCNONE, {RT, RA}},
++
++{"mulld", XO(31,233,0,0), XO_MASK, PPC64, PPCNONE, {RT, RA, RB}},
++{"mulld.", XO(31,233,0,1), XO_MASK, PPC64, PPCNONE, {RT, RA, RB}},
++
++{"addme", XO(31,234,0,0), XORB_MASK, PPCCOM, PPCNONE, {RT, RA}},
++{"ame", XO(31,234,0,0), XORB_MASK, PWRCOM, PPCNONE, {RT, RA}},
++{"addme.", XO(31,234,0,1), XORB_MASK, PPCCOM, PPCNONE, {RT, RA}},
++{"ame.", XO(31,234,0,1), XORB_MASK, PWRCOM, PPCNONE, {RT, RA}},
++
++{"mullw", XO(31,235,0,0), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
++{"muls", XO(31,235,0,0), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++{"mullw.", XO(31,235,0,1), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
++{"muls.", XO(31,235,0,1), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++
++{"msgclr", XRTRA(31,238,0,0),XRTRA_MASK,E500MC, PPCNONE, {RB}},
++{"icblce", X(31,238), X_MASK, PPCCHLK, PPCNONE, {CT, RA, RB}},
++{"mtsrin", X(31,242), XRA_MASK, PPC32, PPCNONE, {RS, RB}},
++{"mtsri", X(31,242), XRA_MASK, POWER32, PPCNONE, {RS, RB}},
++
++{"dcbtstt", XRT(31,246,0x10), XRT_MASK, POWER7, PPCNONE, {RA, RB}},
++{"dcbtst", X(31,246), X_MASK, PPC, POWER4, {CT, RA, RB}},
++{"dcbtst", X(31,246), X_MASK, POWER4, PPCNONE, {RA, RB, CT}},
++
++{"stbux", X(31,247), X_MASK, COM, PPCNONE, {RS, RAS, RB}},
++
++{"slliq", XRC(31,248,0), X_MASK, M601, PPCNONE, {RA, RS, SH}},
++{"slliq.", XRC(31,248,1), X_MASK, M601, PPCNONE, {RA, RS, SH}},
++
++{"bpermd", X(31,252), X_MASK, POWER7, PPCNONE, {RA, RS, RB}},
++
++{"dcbtstep", XRT(31,255,0), X_MASK, E500MC, PPCNONE, {RT, RA, RB}},
++
++{"mfdcrx", X(31,259), X_MASK, BOOKE, PPCNONE, {RS, RA}},
++
++{"icbt", X(31,262), XRT_MASK, PPC403, PPCNONE, {RA, RB}},
++
++{"ldfcmx", APU(31,263,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
++{"doz", XO(31,264,0,0), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
++{"doz.", XO(31,264,0,1), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
++
++{"add", XO(31,266,0,0), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
++{"cax", XO(31,266,0,0), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++{"add.", XO(31,266,0,1), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
++{"cax.", XO(31,266,0,1), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++
++{"ehpriv", X(31,270), 0xffffffff, E500MC, PPCNONE, {0}},
++
++{"tlbiel", X(31,274), XRTLRA_MASK, POWER4, PPCNONE, {RB, L}},
++
++{"mfapidi", X(31,275), X_MASK, BOOKE, PPCNONE, {RT, RA}},
++
++{"lscbx", XRC(31,277,0), X_MASK, M601, PPCNONE, {RT, RA, RB}},
++{"lscbx.", XRC(31,277,1), X_MASK, M601, PPCNONE, {RT, RA, RB}},
++
++{"dcbtt", XRT(31,278,0x10), XRT_MASK, POWER7, PPCNONE, {RA, RB}},
++{"dcbt", X(31,278), X_MASK, PPC, POWER4, {CT, RA, RB}},
++{"dcbt", X(31,278), X_MASK, POWER4, PPCNONE, {RA, RB, CT}},
++
++{"lhzx", X(31,279), X_MASK, COM, PPCNONE, {RT, RA0, RB}},
++
++{"cdtbcd", X(31,282), XRB_MASK, POWER6, PPCNONE, {RA, RS}},
++
++{"eqv", XRC(31,284,0), X_MASK, COM, PPCNONE, {RA, RS, RB}},
++{"eqv.", XRC(31,284,1), X_MASK, COM, PPCNONE, {RA, RS, RB}},
++
++{"lhepx", X(31,287), X_MASK, E500MC, PPCNONE, {RT, RA, RB}},
++
++{"mfdcrux", X(31,291), X_MASK, PPC464, PPCNONE, {RS, RA}},
++
++{"tlbie", X(31,306), XRTLRA_MASK, PPC, PPCNONE, {RB, L}},
++{"tlbi", X(31,306), XRT_MASK, POWER, PPCNONE, {RA0, RB}},
++
++{"eciwx", X(31,310), X_MASK, PPC, PPCNONE, {RT, RA, RB}},
++
++{"lhzux", X(31,311), X_MASK, COM, PPCNONE, {RT, RAL, RB}},
++
++{"cbcdtd", X(31,314), XRB_MASK, POWER6, PPCNONE, {RA, RS}},
++
++{"xor", XRC(31,316,0), X_MASK, COM, PPCNONE, {RA, RS, RB}},
++{"xor.", XRC(31,316,1), X_MASK, COM, PPCNONE, {RA, RS, RB}},
++
++{"dcbtep", XRT(31,319,0), X_MASK, E500MC, PPCNONE, {RT, RA, RB}},
++
++{"mfexisr", XSPR(31,323, 64), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfexier", XSPR(31,323, 66), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfbr0", XSPR(31,323,128), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfbr1", XSPR(31,323,129), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfbr2", XSPR(31,323,130), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfbr3", XSPR(31,323,131), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfbr4", XSPR(31,323,132), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfbr5", XSPR(31,323,133), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfbr6", XSPR(31,323,134), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfbr7", XSPR(31,323,135), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfbear", XSPR(31,323,144), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfbesr", XSPR(31,323,145), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfiocr", XSPR(31,323,160), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdmacr0", XSPR(31,323,192), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdmact0", XSPR(31,323,193), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdmada0", XSPR(31,323,194), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdmasa0", XSPR(31,323,195), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdmacc0", XSPR(31,323,196), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdmacr1", XSPR(31,323,200), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdmact1", XSPR(31,323,201), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdmada1", XSPR(31,323,202), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdmasa1", XSPR(31,323,203), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdmacc1", XSPR(31,323,204), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdmacr2", XSPR(31,323,208), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdmact2", XSPR(31,323,209), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdmada2", XSPR(31,323,210), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdmasa2", XSPR(31,323,211), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdmacc2", XSPR(31,323,212), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdmacr3", XSPR(31,323,216), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdmact3", XSPR(31,323,217), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdmada3", XSPR(31,323,218), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdmasa3", XSPR(31,323,219), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdmacc3", XSPR(31,323,220), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdmasr", XSPR(31,323,224), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdcr", X(31,323), X_MASK, PPC403|BOOKE, PPCNONE, {RT, SPR}},
++
++{"div", XO(31,331,0,0), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
++{"div.", XO(31,331,0,1), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
++
++{"lxvdsx", X(31,332), XX1_MASK, PPCVSX, PPCNONE, {XT6, RA, RB}},
++
++{"mfpmr", X(31,334), X_MASK, PPCPMR|PPCE300, PPCNONE, {RT, PMR}},
++
++{"mfmq", XSPR(31,339, 0), XSPR_MASK, M601, PPCNONE, {RT}},
++{"mfxer", XSPR(31,339, 1), XSPR_MASK, COM, PPCNONE, {RT}},
++{"mfrtcu", XSPR(31,339, 4), XSPR_MASK, COM, PPCNONE, {RT}},
++{"mfrtcl", XSPR(31,339, 5), XSPR_MASK, COM, PPCNONE, {RT}},
++{"mfdec", XSPR(31,339, 6), XSPR_MASK, MFDEC1, PPCNONE, {RT}},
++{"mflr", XSPR(31,339, 8), XSPR_MASK, COM, PPCNONE, {RT}},
++{"mfctr", XSPR(31,339, 9), XSPR_MASK, COM, PPCNONE, {RT}},
++{"mftid", XSPR(31,339, 17), XSPR_MASK, POWER, PPCNONE, {RT}},
++{"mfdsisr", XSPR(31,339, 18), XSPR_MASK, COM, PPCNONE, {RT}},
++{"mfdar", XSPR(31,339, 19), XSPR_MASK, COM, PPCNONE, {RT}},
++{"mfdec", XSPR(31,339, 22), XSPR_MASK, MFDEC2, PPCNONE, {RT}},
++{"mfsdr0", XSPR(31,339, 24), XSPR_MASK, POWER, PPCNONE, {RT}},
++{"mfsdr1", XSPR(31,339, 25), XSPR_MASK, COM, PPCNONE, {RT}},
++{"mfsrr0", XSPR(31,339, 26), XSPR_MASK, COM, PPCNONE, {RT}},
++{"mfsrr1", XSPR(31,339, 27), XSPR_MASK, COM, PPCNONE, {RT}},
++{"mfcfar", XSPR(31,339, 28), XSPR_MASK, POWER6, PPCNONE, {RT}},
++{"mfpid", XSPR(31,339, 48), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfcsrr0", XSPR(31,339, 58), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfcsrr1", XSPR(31,339, 59), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfdear", XSPR(31,339, 61), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfesr", XSPR(31,339, 62), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfivpr", XSPR(31,339, 63), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfcmpa", XSPR(31,339,144), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfcmpb", XSPR(31,339,145), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfcmpc", XSPR(31,339,146), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfcmpd", XSPR(31,339,147), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mficr", XSPR(31,339,148), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfder", XSPR(31,339,149), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfcounta", XSPR(31,339,150), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfcountb", XSPR(31,339,151), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfcmpe", XSPR(31,339,152), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfcmpf", XSPR(31,339,153), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfcmpg", XSPR(31,339,154), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfcmph", XSPR(31,339,155), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mflctrl1", XSPR(31,339,156), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mflctrl2", XSPR(31,339,157), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfictrl", XSPR(31,339,158), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfbar", XSPR(31,339,159), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfvrsave", XSPR(31,339,256), XSPR_MASK, PPCVEC, PPCNONE, {RT}},
++{"mfusprg0", XSPR(31,339,256), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfsprg", XSPR(31,339,256), XSPRG_MASK, PPC, PPCNONE, {RT, SPRG}},
++{"mfsprg4", XSPR(31,339,260), XSPR_MASK, PPC405|BOOKE, PPCNONE, {RT}},
++{"mfsprg5", XSPR(31,339,261), XSPR_MASK, PPC405|BOOKE, PPCNONE, {RT}},
++{"mfsprg6", XSPR(31,339,262), XSPR_MASK, PPC405|BOOKE, PPCNONE, {RT}},
++{"mfsprg7", XSPR(31,339,263), XSPR_MASK, PPC405|BOOKE, PPCNONE, {RT}},
++{"mftb", XSPR(31,339,268), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mftbl", XSPR(31,339,268), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mftbu", XSPR(31,339,269), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfsprg0", XSPR(31,339,272), XSPR_MASK, PPC, PPCNONE, {RT}},
++{"mfsprg1", XSPR(31,339,273), XSPR_MASK, PPC, PPCNONE, {RT}},
++{"mfsprg2", XSPR(31,339,274), XSPR_MASK, PPC, PPCNONE, {RT}},
++{"mfsprg3", XSPR(31,339,275), XSPR_MASK, PPC, PPCNONE, {RT}},
++{"mfasr", XSPR(31,339,280), XSPR_MASK, PPC64, PPCNONE, {RT}},
++{"mfear", XSPR(31,339,282), XSPR_MASK, PPC, PPCNONE, {RT}},
++{"mfpir", XSPR(31,339,286), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfpvr", XSPR(31,339,287), XSPR_MASK, PPC, PPCNONE, {RT}},
++{"mfdbsr", XSPR(31,339,304), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfdbcr0", XSPR(31,339,308), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfdbcr1", XSPR(31,339,309), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfdbcr2", XSPR(31,339,310), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfiac1", XSPR(31,339,312), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfiac2", XSPR(31,339,313), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfiac3", XSPR(31,339,314), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfiac4", XSPR(31,339,315), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfdac1", XSPR(31,339,316), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfdac2", XSPR(31,339,317), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfdvc1", XSPR(31,339,318), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfdvc2", XSPR(31,339,319), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mftsr", XSPR(31,339,336), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mftcr", XSPR(31,339,340), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfivor0", XSPR(31,339,400), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfivor1", XSPR(31,339,401), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfivor2", XSPR(31,339,402), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfivor3", XSPR(31,339,403), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfivor4", XSPR(31,339,404), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfivor5", XSPR(31,339,405), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfivor6", XSPR(31,339,406), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfivor7", XSPR(31,339,407), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfivor8", XSPR(31,339,408), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfivor9", XSPR(31,339,409), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfivor10", XSPR(31,339,410), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfivor11", XSPR(31,339,411), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfivor12", XSPR(31,339,412), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfivor13", XSPR(31,339,413), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfivor14", XSPR(31,339,414), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfivor15", XSPR(31,339,415), XSPR_MASK, BOOKE, PPCNONE, {RT}},
++{"mfspefscr", XSPR(31,339,512), XSPR_MASK, PPCSPE, PPCNONE, {RT}},
++{"mfbbear", XSPR(31,339,513), XSPR_MASK, PPCBRLK, PPCNONE, {RT}},
++{"mfbbtar", XSPR(31,339,514), XSPR_MASK, PPCBRLK, PPCNONE, {RT}},
++{"mfivor32", XSPR(31,339,528), XSPR_MASK, PPCSPE, PPCNONE, {RT}},
++{"mfibatu", XSPR(31,339,528), XSPRBAT_MASK, PPC, PPCNONE, {RT, SPRBAT}},
++{"mfivor33", XSPR(31,339,529), XSPR_MASK, PPCSPE, PPCNONE, {RT}},
++{"mfibatl", XSPR(31,339,529), XSPRBAT_MASK, PPC, PPCNONE, {RT, SPRBAT}},
++{"mfivor34", XSPR(31,339,530), XSPR_MASK, PPCSPE, PPCNONE, {RT}},
++{"mfivor35", XSPR(31,339,531), XSPR_MASK, PPCPMR, PPCNONE, {RT}},
++{"mfdbatu", XSPR(31,339,536), XSPRBAT_MASK, PPC, PPCNONE, {RT, SPRBAT}},
++{"mfdbatl", XSPR(31,339,537), XSPRBAT_MASK, PPC, PPCNONE, {RT, SPRBAT}},
++{"mfic_cst", XSPR(31,339,560), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfic_adr", XSPR(31,339,561), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfic_dat", XSPR(31,339,562), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfdc_cst", XSPR(31,339,568), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfdc_adr", XSPR(31,339,569), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfdc_dat", XSPR(31,339,570), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfmcsrr0", XSPR(31,339,570), XSPR_MASK, PPCRFMCI, PPCNONE, {RT}},
++{"mfmcsrr1", XSPR(31,339,571), XSPR_MASK, PPCRFMCI, PPCNONE, {RT}},
++{"mfmcsr", XSPR(31,339,572), XSPR_MASK, PPCRFMCI, PPCNONE, {RT}},
++{"mfmcar", XSPR(31,339,573), XSPR_MASK, PPCRFMCI, PPCNONE, {RT}},
++{"mfdpdr", XSPR(31,339,630), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfdpir", XSPR(31,339,631), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfimmr", XSPR(31,339,638), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfmi_ctr", XSPR(31,339,784), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfmi_ap", XSPR(31,339,786), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfmi_epn", XSPR(31,339,787), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfmi_twc", XSPR(31,339,789), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfmi_rpn", XSPR(31,339,790), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfmd_ctr", XSPR(31,339,792), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfm_casid", XSPR(31,339,793), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfmd_ap", XSPR(31,339,794), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfmd_epn", XSPR(31,339,795), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfmd_twb", XSPR(31,339,796), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfmd_twc", XSPR(31,339,797), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfmd_rpn", XSPR(31,339,798), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfm_tw", XSPR(31,339,799), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfmi_dbcam", XSPR(31,339,816), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfmi_dbram0", XSPR(31,339,817), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfmi_dbram1", XSPR(31,339,818), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfmd_dbcam", XSPR(31,339,824), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfmd_dbram0", XSPR(31,339,825), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfmd_dbram1", XSPR(31,339,826), XSPR_MASK, PPC860, PPCNONE, {RT}},
++{"mfummcr0", XSPR(31,339,936), XSPR_MASK, PPC750, PPCNONE, {RT}},
++{"mfupmc1", XSPR(31,339,937), XSPR_MASK, PPC750, PPCNONE, {RT}},
++{"mfupmc2", XSPR(31,339,938), XSPR_MASK, PPC750, PPCNONE, {RT}},
++{"mfusia", XSPR(31,339,939), XSPR_MASK, PPC750, PPCNONE, {RT}},
++{"mfummcr1", XSPR(31,339,940), XSPR_MASK, PPC750, PPCNONE, {RT}},
++{"mfupmc3", XSPR(31,339,941), XSPR_MASK, PPC750, PPCNONE, {RT}},
++{"mfupmc4", XSPR(31,339,942), XSPR_MASK, PPC750, PPCNONE, {RT}},
++{"mfzpr", XSPR(31,339,944), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfpid", XSPR(31,339,945), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfccr0", XSPR(31,339,947), XSPR_MASK, PPC405, PPCNONE, {RT}},
++{"mfiac3", XSPR(31,339,948), XSPR_MASK, PPC405, PPCNONE, {RT}},
++{"mfiac4", XSPR(31,339,949), XSPR_MASK, PPC405, PPCNONE, {RT}},
++{"mfdvc1", XSPR(31,339,950), XSPR_MASK, PPC405, PPCNONE, {RT}},
++{"mfdvc2", XSPR(31,339,951), XSPR_MASK, PPC405, PPCNONE, {RT}},
++{"mfmmcr0", XSPR(31,339,952), XSPR_MASK, PPC750, PPCNONE, {RT}},
++{"mfpmc1", XSPR(31,339,953), XSPR_MASK, PPC750, PPCNONE, {RT}},
++{"mfsgr", XSPR(31,339,953), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdcwr", XSPR(31,339,954), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfpmc2", XSPR(31,339,954), XSPR_MASK, PPC750, PPCNONE, {RT}},
++{"mfsia", XSPR(31,339,955), XSPR_MASK, PPC750, PPCNONE, {RT}},
++{"mfsler", XSPR(31,339,955), XSPR_MASK, PPC405, PPCNONE, {RT}},
++{"mfmmcr1", XSPR(31,339,956), XSPR_MASK, PPC750, PPCNONE, {RT}},
++{"mfsu0r", XSPR(31,339,956), XSPR_MASK, PPC405, PPCNONE, {RT}},
++{"mfdbcr1", XSPR(31,339,957), XSPR_MASK, PPC405, PPCNONE, {RT}},
++{"mfpmc3", XSPR(31,339,957), XSPR_MASK, PPC750, PPCNONE, {RT}},
++{"mfpmc4", XSPR(31,339,958), XSPR_MASK, PPC750, PPCNONE, {RT}},
++{"mficdbdr", XSPR(31,339,979), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfesr", XSPR(31,339,980), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdear", XSPR(31,339,981), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfevpr", XSPR(31,339,982), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfcdbcr", XSPR(31,339,983), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mftsr", XSPR(31,339,984), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mftcr", XSPR(31,339,986), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfpit", XSPR(31,339,987), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mftbhi", XSPR(31,339,988), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mftblo", XSPR(31,339,989), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfsrr2", XSPR(31,339,990), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfsrr3", XSPR(31,339,991), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdbsr", XSPR(31,339,1008), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdbcr0", XSPR(31,339,1010), XSPR_MASK, PPC405, PPCNONE, {RT}},
++{"mfiac1", XSPR(31,339,1012), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfiac2", XSPR(31,339,1013), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdac1", XSPR(31,339,1014), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfdac2", XSPR(31,339,1015), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfl2cr", XSPR(31,339,1017), XSPR_MASK, PPC750, PPCNONE, {RT}},
++{"mfdccr", XSPR(31,339,1018), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mficcr", XSPR(31,339,1019), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfictc", XSPR(31,339,1019), XSPR_MASK, PPC750, PPCNONE, {RT}},
++{"mfpbl1", XSPR(31,339,1020), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfthrm1", XSPR(31,339,1020), XSPR_MASK, PPC750, PPCNONE, {RT}},
++{"mfpbu1", XSPR(31,339,1021), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfthrm2", XSPR(31,339,1021), XSPR_MASK, PPC750, PPCNONE, {RT}},
++{"mfpbl2", XSPR(31,339,1022), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfthrm3", XSPR(31,339,1022), XSPR_MASK, PPC750, PPCNONE, {RT}},
++{"mfpbu2", XSPR(31,339,1023), XSPR_MASK, PPC403, PPCNONE, {RT}},
++{"mfspr", X(31,339), X_MASK, COM, PPCNONE, {RT, SPR}},
++
++{"lwax", X(31,341), X_MASK, PPC64, PPCNONE, {RT, RA0, RB}},
++
++{"dst", XDSS(31,342,0), XDSS_MASK, PPCVEC, PPCNONE, {RA, RB, STRM}},
++
++{"lhax", X(31,343), X_MASK, COM, PPCNONE, {RT, RA0, RB}},
++
++{"lvxl", X(31,359), X_MASK, PPCVEC, PPCNONE, {VD, RA, RB}},
++
++{"abs", XO(31,360,0,0), XORB_MASK, M601, PPCNONE, {RT, RA}},
++{"abs.", XO(31,360,0,1), XORB_MASK, M601, PPCNONE, {RT, RA}},
++
++{"divs", XO(31,363,0,0), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
++{"divs.", XO(31,363,0,1), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
++
++{"tlbia", X(31,370), 0xffffffff, PPC, PPCNONE, {0}},
++
++{"mftbl", XSPR(31,371,268), XSPR_MASK, CLASSIC, PPCNONE, {RT}},
++{"mftbu", XSPR(31,371,269), XSPR_MASK, CLASSIC, PPCNONE, {RT}},
++{"mftb", X(31,371), X_MASK, CLASSIC, POWER7, {RT, TBR}},
++
++{"lwaux", X(31,373), X_MASK, PPC64, PPCNONE, {RT, RAL, RB}},
++
++{"dstst", XDSS(31,374,0), XDSS_MASK, PPCVEC, PPCNONE, {RA, RB, STRM}},
++
++{"lhaux", X(31,375), X_MASK, COM, PPCNONE, {RT, RAL, RB}},
++
++{"popcntw", X(31,378), XRB_MASK, POWER7, PPCNONE, {RA, RS}},
++
++{"mtdcrx", X(31,387), X_MASK, BOOKE, PPCNONE, {RA, RS}},
++
++{"dcblc", X(31,390), X_MASK, PPCCHLK, PPCNONE, {CT, RA, RB}},
++{"stdfcmx", APU(31,391,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
++
++{"divdeu", XO(31,393,0,0), XO_MASK, POWER7, PPCNONE, {RT, RA, RB}},
++{"divdeu.", XO(31,393,0,1), XO_MASK, POWER7, PPCNONE, {RT, RA, RB}},
++{"divweu", XO(31,395,0,0), XO_MASK, POWER7, PPCNONE, {RT, RA, RB}},
++{"divweu.", XO(31,395,0,1), XO_MASK, POWER7, PPCNONE, {RT, RA, RB}},
++
++{"dcblce", X(31,398), X_MASK, PPCCHLK, PPCNONE, {CT, RA, RB}},
++
++{"slbmte", X(31,402), XRA_MASK, PPC64, PPCNONE, {RS, RB}},
++
++{"sthx", X(31,407), X_MASK, COM, PPCNONE, {RS, RA0, RB}},
++
++{"orc", XRC(31,412,0), X_MASK, COM, PPCNONE, {RA, RS, RB}},
++{"orc.", XRC(31,412,1), X_MASK, COM, PPCNONE, {RA, RS, RB}},
++
++{"sthepx", X(31,415), X_MASK, E500MC, PPCNONE, {RS, RA, RB}},
++
++{"mtdcrux", X(31,419), X_MASK, PPC464, PPCNONE, {RA, RS}},
++
++{"divde", XO(31,425,0,0), XO_MASK, POWER7, PPCNONE, {RT, RA, RB}},
++{"divde.", XO(31,425,0,1), XO_MASK, POWER7, PPCNONE, {RT, RA, RB}},
++{"divwe", XO(31,427,0,0), XO_MASK, POWER7, PPCNONE, {RT, RA, RB}},
++{"divwe.", XO(31,427,0,1), XO_MASK, POWER7, PPCNONE, {RT, RA, RB}},
++
++{"slbie", X(31,434), XRTRA_MASK, PPC64, PPCNONE, {RB}},
++
++{"ecowx", X(31,438), X_MASK, PPC, PPCNONE, {RT, RA, RB}},
++
++{"sthux", X(31,439), X_MASK, COM, PPCNONE, {RS, RAS, RB}},
++
++{"mdors", 0x7f9ce378, 0xffffffff, E500MC, PPCNONE, {0}},
++
++{"mr", XRC(31,444,0), X_MASK, COM, PPCNONE, {RA, RS, RBS}},
++{"or", XRC(31,444,0), X_MASK, COM, PPCNONE, {RA, RS, RB}},
++{"mr.", XRC(31,444,1), X_MASK, COM, PPCNONE, {RA, RS, RBS}},
++{"or.", XRC(31,444,1), X_MASK, COM, PPCNONE, {RA, RS, RB}},
++
++{"mtexisr", XSPR(31,451, 64), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtexier", XSPR(31,451, 66), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtbr0", XSPR(31,451,128), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtbr1", XSPR(31,451,129), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtbr2", XSPR(31,451,130), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtbr3", XSPR(31,451,131), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtbr4", XSPR(31,451,132), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtbr5", XSPR(31,451,133), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtbr6", XSPR(31,451,134), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtbr7", XSPR(31,451,135), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtbear", XSPR(31,451,144), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtbesr", XSPR(31,451,145), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtiocr", XSPR(31,451,160), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdmacr0", XSPR(31,451,192), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdmact0", XSPR(31,451,193), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdmada0", XSPR(31,451,194), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdmasa0", XSPR(31,451,195), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdmacc0", XSPR(31,451,196), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdmacr1", XSPR(31,451,200), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdmact1", XSPR(31,451,201), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdmada1", XSPR(31,451,202), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdmasa1", XSPR(31,451,203), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdmacc1", XSPR(31,451,204), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdmacr2", XSPR(31,451,208), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdmact2", XSPR(31,451,209), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdmada2", XSPR(31,451,210), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdmasa2", XSPR(31,451,211), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdmacc2", XSPR(31,451,212), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdmacr3", XSPR(31,451,216), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdmact3", XSPR(31,451,217), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdmada3", XSPR(31,451,218), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdmasa3", XSPR(31,451,219), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdmacc3", XSPR(31,451,220), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdmasr", XSPR(31,451,224), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdcr", X(31,451), X_MASK, PPC403|BOOKE, PPCNONE, {SPR, RS}},
++
++{"dccci", X(31,454), XRT_MASK, PPC403|PPC440, PPCNONE, {RA, RB}},
++
++{"divdu", XO(31,457,0,0), XO_MASK, PPC64, PPCNONE, {RT, RA, RB}},
++{"divdu.", XO(31,457,0,1), XO_MASK, PPC64, PPCNONE, {RT, RA, RB}},
++
++{"divwu", XO(31,459,0,0), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
++{"divwu.", XO(31,459,0,1), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
++
++{"mtpmr", X(31,462), X_MASK, PPCPMR|PPCE300, PPCNONE, {PMR, RS}},
++
++{"mtmq", XSPR(31,467, 0), XSPR_MASK, M601, PPCNONE, {RS}},
++{"mtxer", XSPR(31,467, 1), XSPR_MASK, COM, PPCNONE, {RS}},
++{"mtlr", XSPR(31,467, 8), XSPR_MASK, COM, PPCNONE, {RS}},
++{"mtctr", XSPR(31,467, 9), XSPR_MASK, COM, PPCNONE, {RS}},
++{"mttid", XSPR(31,467, 17), XSPR_MASK, POWER, PPCNONE, {RS}},
++{"mtdsisr", XSPR(31,467, 18), XSPR_MASK, COM, PPCNONE, {RS}},
++{"mtdar", XSPR(31,467, 19), XSPR_MASK, COM, PPCNONE, {RS}},
++{"mtrtcu", XSPR(31,467, 20), XSPR_MASK, COM, PPCNONE, {RS}},
++{"mtrtcl", XSPR(31,467, 21), XSPR_MASK, COM, PPCNONE, {RS}},
++{"mtdec", XSPR(31,467, 22), XSPR_MASK, COM, PPCNONE, {RS}},
++{"mtsdr0", XSPR(31,467, 24), XSPR_MASK, POWER, PPCNONE, {RS}},
++{"mtsdr1", XSPR(31,467, 25), XSPR_MASK, COM, PPCNONE, {RS}},
++{"mtsrr0", XSPR(31,467, 26), XSPR_MASK, COM, PPCNONE, {RS}},
++{"mtsrr1", XSPR(31,467, 27), XSPR_MASK, COM, PPCNONE, {RS}},
++{"mtcfar", XSPR(31,467, 28), XSPR_MASK, POWER6, PPCNONE, {RS}},
++{"mtpid", XSPR(31,467, 48), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtdecar", XSPR(31,467, 54), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtcsrr0", XSPR(31,467, 58), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtcsrr1", XSPR(31,467, 59), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtdear", XSPR(31,467, 61), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtesr", XSPR(31,467, 62), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtivpr", XSPR(31,467, 63), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtcmpa", XSPR(31,467,144), XSPR_MASK, PPC860, PPCNONE, {RS}},
++{"mtcmpb", XSPR(31,467,145), XSPR_MASK, PPC860, PPCNONE, {RS}},
++{"mtcmpc", XSPR(31,467,146), XSPR_MASK, PPC860, PPCNONE, {RS}},
++{"mtcmpd", XSPR(31,467,147), XSPR_MASK, PPC860, PPCNONE, {RS}},
++{"mticr", XSPR(31,467,148), XSPR_MASK, PPC860, PPCNONE, {RS}},
++{"mtder", XSPR(31,467,149), XSPR_MASK, PPC860, PPCNONE, {RS}},
++{"mtcounta", XSPR(31,467,150), XSPR_MASK, PPC860, PPCNONE, {RS}},
++{"mtcountb", XSPR(31,467,151), XSPR_MASK, PPC860, PPCNONE, {RS}},
++{"mtcmpe", XSPR(31,467,152), XSPR_MASK, PPC860, PPCNONE, {RS}},
++{"mtcmpf", XSPR(31,467,153), XSPR_MASK, PPC860, PPCNONE, {RS}},
++{"mtcmpg", XSPR(31,467,154), XSPR_MASK, PPC860, PPCNONE, {RS}},
++{"mtcmph", XSPR(31,467,155), XSPR_MASK, PPC860, PPCNONE, {RS}},
++{"mtlctrl1", XSPR(31,467,156), XSPR_MASK, PPC860, PPCNONE, {RS}},
++{"mtlctrl2", XSPR(31,467,157), XSPR_MASK, PPC860, PPCNONE, {RS}},
++{"mtictrl", XSPR(31,467,158), XSPR_MASK, PPC860, PPCNONE, {RS}},
++{"mtbar", XSPR(31,467,159), XSPR_MASK, PPC860, PPCNONE, {RS}},
++{"mtvrsave", XSPR(31,467,256), XSPR_MASK, PPCVEC, PPCNONE, {RS}},
++{"mtusprg0", XSPR(31,467,256), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtsprg", XSPR(31,467,256), XSPRG_MASK,PPC, PPCNONE, {SPRG, RS}},
++{"mtsprg0", XSPR(31,467,272), XSPR_MASK, PPC, PPCNONE, {RS}},
++{"mtsprg1", XSPR(31,467,273), XSPR_MASK, PPC, PPCNONE, {RS}},
++{"mtsprg2", XSPR(31,467,274), XSPR_MASK, PPC, PPCNONE, {RS}},
++{"mtsprg3", XSPR(31,467,275), XSPR_MASK, PPC, PPCNONE, {RS}},
++{"mtsprg4", XSPR(31,467,276), XSPR_MASK, PPC405|BOOKE, PPCNONE, {RS}},
++{"mtsprg5", XSPR(31,467,277), XSPR_MASK, PPC405|BOOKE, PPCNONE, {RS}},
++{"mtsprg6", XSPR(31,467,278), XSPR_MASK, PPC405|BOOKE, PPCNONE, {RS}},
++{"mtsprg7", XSPR(31,467,279), XSPR_MASK, PPC405|BOOKE, PPCNONE, {RS}},
++{"mtasr", XSPR(31,467,280), XSPR_MASK, PPC64, PPCNONE, {RS}},
++{"mtear", XSPR(31,467,282), XSPR_MASK, PPC, PPCNONE, {RS}},
++{"mttbl", XSPR(31,467,284), XSPR_MASK, PPC, PPCNONE, {RS}},
++{"mttbu", XSPR(31,467,285), XSPR_MASK, PPC, PPCNONE, {RS}},
++{"mtdbsr", XSPR(31,467,304), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtdbcr0", XSPR(31,467,308), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtdbcr1", XSPR(31,467,309), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtdbcr2", XSPR(31,467,310), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtiac1", XSPR(31,467,312), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtiac2", XSPR(31,467,313), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtiac3", XSPR(31,467,314), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtiac4", XSPR(31,467,315), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtdac1", XSPR(31,467,316), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtdac2", XSPR(31,467,317), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtdvc1", XSPR(31,467,318), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtdvc2", XSPR(31,467,319), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mttsr", XSPR(31,467,336), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mttcr", XSPR(31,467,340), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtivor0", XSPR(31,467,400), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtivor1", XSPR(31,467,401), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtivor2", XSPR(31,467,402), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtivor3", XSPR(31,467,403), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtivor4", XSPR(31,467,404), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtivor5", XSPR(31,467,405), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtivor6", XSPR(31,467,406), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtivor7", XSPR(31,467,407), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtivor8", XSPR(31,467,408), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtivor9", XSPR(31,467,409), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtivor10", XSPR(31,467,410), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtivor11", XSPR(31,467,411), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtivor12", XSPR(31,467,412), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtivor13", XSPR(31,467,413), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtivor14", XSPR(31,467,414), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtivor15", XSPR(31,467,415), XSPR_MASK, BOOKE, PPCNONE, {RS}},
++{"mtspefscr", XSPR(31,467,512), XSPR_MASK, PPCSPE, PPCNONE, {RS}},
++{"mtbbear", XSPR(31,467,513), XSPR_MASK, PPCBRLK, PPCNONE, {RS}},
++{"mtbbtar", XSPR(31,467,514), XSPR_MASK, PPCBRLK, PPCNONE, {RS}},
++{"mtivor32", XSPR(31,467,528), XSPR_MASK, PPCSPE, PPCNONE, {RS}},
++{"mtibatu", XSPR(31,467,528), XSPRBAT_MASK, PPC, PPCNONE, {SPRBAT, RS}},
++{"mtivor33", XSPR(31,467,529), XSPR_MASK, PPCSPE, PPCNONE, {RS}},
++{"mtibatl", XSPR(31,467,529), XSPRBAT_MASK, PPC, PPCNONE, {SPRBAT, RS}},
++{"mtivor34", XSPR(31,467,530), XSPR_MASK, PPCSPE, PPCNONE, {RS}},
++{"mtivor35", XSPR(31,467,531), XSPR_MASK, PPCPMR, PPCNONE, {RS}},
++{"mtdbatu", XSPR(31,467,536), XSPRBAT_MASK, PPC, PPCNONE, {SPRBAT, RS}},
++{"mtdbatl", XSPR(31,467,537), XSPRBAT_MASK, PPC, PPCNONE, {SPRBAT, RS}},
++{"mtmcsrr0", XSPR(31,467,570), XSPR_MASK, PPCRFMCI, PPCNONE, {RS}},
++{"mtmcsrr1", XSPR(31,467,571), XSPR_MASK, PPCRFMCI, PPCNONE, {RS}},
++{"mtmcsr", XSPR(31,467,572), XSPR_MASK, PPCRFMCI, PPCNONE, {RS}},
++{"mtummcr0", XSPR(31,467,936), XSPR_MASK, PPC750, PPCNONE, {RS}},
++{"mtupmc1", XSPR(31,467,937), XSPR_MASK, PPC750, PPCNONE, {RS}},
++{"mtupmc2", XSPR(31,467,938), XSPR_MASK, PPC750, PPCNONE, {RS}},
++{"mtusia", XSPR(31,467,939), XSPR_MASK, PPC750, PPCNONE, {RS}},
++{"mtummcr1", XSPR(31,467,940), XSPR_MASK, PPC750, PPCNONE, {RS}},
++{"mtupmc3", XSPR(31,467,941), XSPR_MASK, PPC750, PPCNONE, {RS}},
++{"mtupmc4", XSPR(31,467,942), XSPR_MASK, PPC750, PPCNONE, {RS}},
++{"mtzpr", XSPR(31,467,944), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtpid", XSPR(31,467,945), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtccr0", XSPR(31,467,947), XSPR_MASK, PPC405, PPCNONE, {RS}},
++{"mtiac3", XSPR(31,467,948), XSPR_MASK, PPC405, PPCNONE, {RS}},
++{"mtiac4", XSPR(31,467,949), XSPR_MASK, PPC405, PPCNONE, {RS}},
++{"mtdvc1", XSPR(31,467,950), XSPR_MASK, PPC405, PPCNONE, {RS}},
++{"mtdvc2", XSPR(31,467,951), XSPR_MASK, PPC405, PPCNONE, {RS}},
++{"mtmmcr0", XSPR(31,467,952), XSPR_MASK, PPC750, PPCNONE, {RS}},
++{"mtpmc1", XSPR(31,467,953), XSPR_MASK, PPC750, PPCNONE, {RS}},
++{"mtsgr", XSPR(31,467,953), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdcwr", XSPR(31,467,954), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtpmc2", XSPR(31,467,954), XSPR_MASK, PPC750, PPCNONE, {RS}},
++{"mtsia", XSPR(31,467,955), XSPR_MASK, PPC750, PPCNONE, {RS}},
++{"mtsler", XSPR(31,467,955), XSPR_MASK, PPC405, PPCNONE, {RS}},
++{"mtmmcr1", XSPR(31,467,956), XSPR_MASK, PPC750, PPCNONE, {RS}},
++{"mtsu0r", XSPR(31,467,956), XSPR_MASK, PPC405, PPCNONE, {RS}},
++{"mtdbcr1", XSPR(31,467,957), XSPR_MASK, PPC405, PPCNONE, {RS}},
++{"mtpmc3", XSPR(31,467,957), XSPR_MASK, PPC750, PPCNONE, {RS}},
++{"mtpmc4", XSPR(31,467,958), XSPR_MASK, PPC750, PPCNONE, {RS}},
++{"mticdbdr", XSPR(31,467,979), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtesr", XSPR(31,467,980), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdear", XSPR(31,467,981), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtevpr", XSPR(31,467,982), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtcdbcr", XSPR(31,467,983), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mttsr", XSPR(31,467,984), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mttcr", XSPR(31,467,986), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtpit", XSPR(31,467,987), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mttbhi", XSPR(31,467,988), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mttblo", XSPR(31,467,989), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtsrr2", XSPR(31,467,990), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtsrr3", XSPR(31,467,991), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdbsr", XSPR(31,467,1008), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdbcr0", XSPR(31,467,1010), XSPR_MASK, PPC405, PPCNONE, {RS}},
++{"mtiac1", XSPR(31,467,1012), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtiac2", XSPR(31,467,1013), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdac1", XSPR(31,467,1014), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtdac2", XSPR(31,467,1015), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtl2cr", XSPR(31,467,1017), XSPR_MASK, PPC750, PPCNONE, {RS}},
++{"mtdccr", XSPR(31,467,1018), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mticcr", XSPR(31,467,1019), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtictc", XSPR(31,467,1019), XSPR_MASK, PPC750, PPCNONE, {RS}},
++{"mtpbl1", XSPR(31,467,1020), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtthrm1", XSPR(31,467,1020), XSPR_MASK, PPC750, PPCNONE, {RS}},
++{"mtpbu1", XSPR(31,467,1021), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtthrm2", XSPR(31,467,1021), XSPR_MASK, PPC750, PPCNONE, {RS}},
++{"mtpbl2", XSPR(31,467,1022), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtthrm3", XSPR(31,467,1022), XSPR_MASK, PPC750, PPCNONE, {RS}},
++{"mtpbu2", XSPR(31,467,1023), XSPR_MASK, PPC403, PPCNONE, {RS}},
++{"mtspr", X(31,467), X_MASK, COM, PPCNONE, {SPR, RS}},
++
++{"dcbi", X(31,470), XRT_MASK, PPC, PPCNONE, {RA, RB}},
++
++{"nand", XRC(31,476,0), X_MASK, COM, PPCNONE, {RA, RS, RB}},
++{"nand.", XRC(31,476,1), X_MASK, COM, PPCNONE, {RA, RS, RB}},
++
++{"dsn", X(31,483), XRT_MASK, E500MC, PPCNONE, {RA, RB}},
++
++{"dcread", X(31,486), X_MASK, PPC403|PPC440, PPCNONE, {RT, RA, RB}},
++
++{"icbtls", X(31,486), X_MASK, PPCCHLK, PPCNONE, {CT, RA, RB}},
++
++{"stvxl", X(31,487), X_MASK, PPCVEC, PPCNONE, {VS, RA, RB}},
++
++{"nabs", XO(31,488,0,0), XORB_MASK, M601, PPCNONE, {RT, RA}},
++{"nabs.", XO(31,488,0,1), XORB_MASK, M601, PPCNONE, {RT, RA}},
++
++{"divd", XO(31,489,0,0), XO_MASK, PPC64, PPCNONE, {RT, RA, RB}},
++{"divd.", XO(31,489,0,1), XO_MASK, PPC64, PPCNONE, {RT, RA, RB}},
++
++{"divw", XO(31,491,0,0), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
++{"divw.", XO(31,491,0,1), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
++
++{"icbtlse", X(31,494), X_MASK, PPCCHLK, PPCNONE, {CT, RA, RB}},
++
++{"slbia", X(31,498), 0xffffffff, PPC64, PPCNONE, {0}},
++
++{"cli", X(31,502), XRB_MASK, POWER, PPCNONE, {RT, RA}},
++
++{"popcntd", X(31,506), XRB_MASK, POWER7, PPCNONE, {RA, RS}},
++
++{"cmpb", X(31,508), X_MASK, POWER6, PPCNONE, {RA, RS, RB}},
++
++{"mcrxr", X(31,512), XRARB_MASK|(3<<21), COM, POWER7, {BF}},
++
++{"lbdx", X(31,515), X_MASK, E500MC, PPCNONE, {RT, RA, RB}},
++
++{"bblels", X(31,518), X_MASK, PPCBRLK, PPCNONE, {0}},
++
++{"lvlx", X(31,519), X_MASK, CELL, PPCNONE, {VD, RA0, RB}},
++{"lbfcmux", APU(31,519,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
++
++{"subfco", XO(31,8,1,0), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
++{"sfo", XO(31,8,1,0), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++{"subco", XO(31,8,1,0), XO_MASK, PPC, PPCNONE, {RT, RB, RA}},
++{"subfco.", XO(31,8,1,1), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
++{"sfo.", XO(31,8,1,1), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++{"subco.", XO(31,8,1,1), XO_MASK, PPC, PPCNONE, {RT, RB, RA}},
++
++{"addco", XO(31,10,1,0), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
++{"ao", XO(31,10,1,0), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++{"addco.", XO(31,10,1,1), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
++{"ao.", XO(31,10,1,1), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++
++{"clcs", X(31,531), XRB_MASK, M601, PPCNONE, {RT, RA}},
++
++{"ldbrx", X(31,532), X_MASK, CELL|POWER7, PPCNONE, {RT, RA0, RB}},
++
++{"lswx", X(31,533), X_MASK, PPCCOM, PPCNONE, {RT, RA0, RB}},
++{"lsx", X(31,533), X_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++
++{"lwbrx", X(31,534), X_MASK, PPCCOM, PPCNONE, {RT, RA0, RB}},
++{"lbrx", X(31,534), X_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++
++{"lfsx", X(31,535), X_MASK, COM, PPCNONE, {FRT, RA0, RB}},
++
++{"srw", XRC(31,536,0), X_MASK, PPCCOM, PPCNONE, {RA, RS, RB}},
++{"sr", XRC(31,536,0), X_MASK, PWRCOM, PPCNONE, {RA, RS, RB}},
++{"srw.", XRC(31,536,1), X_MASK, PPCCOM, PPCNONE, {RA, RS, RB}},
++{"sr.", XRC(31,536,1), X_MASK, PWRCOM, PPCNONE, {RA, RS, RB}},
++
++{"rrib", XRC(31,537,0), X_MASK, M601, PPCNONE, {RA, RS, RB}},
++{"rrib.", XRC(31,537,1), X_MASK, M601, PPCNONE, {RA, RS, RB}},
++
++{"srd", XRC(31,539,0), X_MASK, PPC64, PPCNONE, {RA, RS, RB}},
++{"srd.", XRC(31,539,1), X_MASK, PPC64, PPCNONE, {RA, RS, RB}},
++
++{"maskir", XRC(31,541,0), X_MASK, M601, PPCNONE, {RA, RS, RB}},
++{"maskir.", XRC(31,541,1), X_MASK, M601, PPCNONE, {RA, RS, RB}},
++
++{"lhdx", X(31,547), X_MASK, E500MC, PPCNONE, {RT, RA, RB}},
++
++{"bbelr", X(31,550), X_MASK, PPCBRLK, PPCNONE, {0}},
++
++{"lvrx", X(31,551), X_MASK, CELL, PPCNONE, {VD, RA0, RB}},
++{"lhfcmux", APU(31,551,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
++
++{"subfo", XO(31,40,1,0), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
++{"subo", XO(31,40,1,0), XO_MASK, PPC, PPCNONE, {RT, RB, RA}},
++{"subfo.", XO(31,40,1,1), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
++{"subo.", XO(31,40,1,1), XO_MASK, PPC, PPCNONE, {RT, RB, RA}},
++
++{"tlbsync", X(31,566), 0xffffffff, PPC, PPCNONE, {0}},
++
++{"lfsux", X(31,567), X_MASK, COM, PPCNONE, {FRT, RAS, RB}},
++
++{"lwdx", X(31,579), X_MASK, E500MC, PPCNONE, {RT, RA, RB}},
++
++{"lwfcmux", APU(31,583,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
++
++{"lxsdx", X(31,588), XX1_MASK, PPCVSX, PPCNONE, {XT6, RA, RB}},
++
++{"mfsr", X(31,595), XRB_MASK|(1<<20), COM32, PPCNONE, {RT, SR}},
++
++{"lswi", X(31,597), X_MASK, PPCCOM, PPCNONE, {RT, RA0, NB}},
++{"lsi", X(31,597), X_MASK, PWRCOM, PPCNONE, {RT, RA0, NB}},
++
++{"msync", X(31,598), 0xffffffff, BOOKE, PPCNONE, {0}},
++{"lwsync", XSYNC(31,598,1), 0xffffffff, PPC, PPCNONE, {0}},
++{"ptesync", XSYNC(31,598,2), 0xffffffff, PPC64, PPCNONE, {0}},
++{"sync", X(31,598), XSYNC_MASK, PPCCOM, PPCNONE, {LS}},
++{"dcs", X(31,598), 0xffffffff, PWRCOM, PPCNONE, {0}},
++
++{"lfdx", X(31,599), X_MASK, COM, PPCNONE, {FRT, RA0, RB}},
++
++{"lfdepx", X(31,607), X_MASK, E500MC, PPCNONE, {FRT, RA, RB}},
++{"mffgpr", XRC(31,607,0), XRA_MASK, POWER6, POWER7, {FRT, RB}},
++
++{"lddx", X(31,611), X_MASK, E500MC, PPCNONE, {RT, RA, RB}},
++
++{"lqfcmux", APU(31,615,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
++
++{"nego", XO(31,104,1,0), XORB_MASK, COM, PPCNONE, {RT, RA}},
++{"nego.", XO(31,104,1,1), XORB_MASK, COM, PPCNONE, {RT, RA}},
++
++{"mulo", XO(31,107,1,0), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
++{"mulo.", XO(31,107,1,1), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
++
++{"lxsdux", X(31,620), XX1_MASK, PPCVSX, PPCNONE, {XT6, RA, RB}},
++
++{"mfsri", X(31,627), X_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++
++{"dclst", X(31,630), XRB_MASK, PWRCOM, PPCNONE, {RS, RA}},
++
++{"lfdux", X(31,631), X_MASK, COM, PPCNONE, {FRT, RAS, RB}},
++
++{"stbdx", X(31,643), X_MASK, E500MC, PPCNONE, {RS, RA, RB}},
++
++{"stvlx", X(31,647), X_MASK, CELL, PPCNONE, {VS, RA0, RB}},
++{"stbfcmux", APU(31,647,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
++
++{"subfeo", XO(31,136,1,0), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
++{"sfeo", XO(31,136,1,0), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++{"subfeo.", XO(31,136,1,1), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
++{"sfeo.", XO(31,136,1,1), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++
++{"addeo", XO(31,138,1,0), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
++{"aeo", XO(31,138,1,0), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++{"addeo.", XO(31,138,1,1), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
++{"aeo.", XO(31,138,1,1), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++
++{"mfsrin", X(31,659), XRA_MASK, PPC32, PPCNONE, {RT, RB}},
++
++{"stdbrx", X(31,660), X_MASK, CELL|POWER7, PPCNONE, {RS, RA0, RB}},
++
++{"stswx", X(31,661), X_MASK, PPCCOM, PPCNONE, {RS, RA0, RB}},
++{"stsx", X(31,661), X_MASK, PWRCOM, PPCNONE, {RS, RA0, RB}},
++
++{"stwbrx", X(31,662), X_MASK, PPCCOM, PPCNONE, {RS, RA0, RB}},
++{"stbrx", X(31,662), X_MASK, PWRCOM, PPCNONE, {RS, RA0, RB}},
++
++{"stfsx", X(31,663), X_MASK, COM, PPCNONE, {FRS, RA0, RB}},
++
++{"srq", XRC(31,664,0), X_MASK, M601, PPCNONE, {RA, RS, RB}},
++{"srq.", XRC(31,664,1), X_MASK, M601, PPCNONE, {RA, RS, RB}},
++
++{"sre", XRC(31,665,0), X_MASK, M601, PPCNONE, {RA, RS, RB}},
++{"sre.", XRC(31,665,1), X_MASK, M601, PPCNONE, {RA, RS, RB}},
++
++{"sthdx", X(31,675), X_MASK, E500MC, PPCNONE, {RS, RA, RB}},
++
++{"stvrx", X(31,679), X_MASK, CELL, PPCNONE, {VS, RA0, RB}},
++{"sthfcmux", APU(31,679,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
++
++{"stbcx.", XRC(31,694,1), X_MASK, POWER7, PPCNONE, {RS, RA0, RB}},
++
++{"stfsux", X(31,695), X_MASK, COM, PPCNONE, {FRS, RAS, RB}},
++
++{"sriq", XRC(31,696,0), X_MASK, M601, PPCNONE, {RA, RS, SH}},
++{"sriq.", XRC(31,696,1), X_MASK, M601, PPCNONE, {RA, RS, SH}},
++
++{"stwdx", X(31,707), X_MASK, E500MC, PPCNONE, {RS, RA, RB}},
++
++{"stwfcmux", APU(31,711,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
++
++{"stxsdx", X(31,716), XX1_MASK, PPCVSX, PPCNONE, {XS6, RA, RB}},
++
++{"subfzeo", XO(31,200,1,0), XORB_MASK, PPCCOM, PPCNONE, {RT, RA}},
++{"sfzeo", XO(31,200,1,0), XORB_MASK, PWRCOM, PPCNONE, {RT, RA}},
++{"subfzeo.", XO(31,200,1,1), XORB_MASK, PPCCOM, PPCNONE, {RT, RA}},
++{"sfzeo.", XO(31,200,1,1), XORB_MASK, PWRCOM, PPCNONE, {RT, RA}},
++
++{"addzeo", XO(31,202,1,0), XORB_MASK, PPCCOM, PPCNONE, {RT, RA}},
++{"azeo", XO(31,202,1,0), XORB_MASK, PWRCOM, PPCNONE, {RT, RA}},
++{"addzeo.", XO(31,202,1,1), XORB_MASK, PPCCOM, PPCNONE, {RT, RA}},
++{"azeo.", XO(31,202,1,1), XORB_MASK, PWRCOM, PPCNONE, {RT, RA}},
++
++{"stswi", X(31,725), X_MASK, PPCCOM, PPCNONE, {RS, RA0, NB}},
++{"stsi", X(31,725), X_MASK, PWRCOM, PPCNONE, {RS, RA0, NB}},
++
++{"sthcx.", XRC(31,726,1), X_MASK, POWER7, PPCNONE, {RS, RA0, RB}},
++
++{"stfdx", X(31,727), X_MASK, COM, PPCNONE, {FRS, RA0, RB}},
++
++{"srlq", XRC(31,728,0), X_MASK, M601, PPCNONE, {RA, RS, RB}},
++{"srlq.", XRC(31,728,1), X_MASK, M601, PPCNONE, {RA, RS, RB}},
++
++{"sreq", XRC(31,729,0), X_MASK, M601, PPCNONE, {RA, RS, RB}},
++{"sreq.", XRC(31,729,1), X_MASK, M601, PPCNONE, {RA, RS, RB}},
++
++{"stfdepx", X(31,735), X_MASK, E500MC, PPCNONE, {FRS, RA, RB}},
++{"mftgpr", XRC(31,735,0), XRA_MASK, POWER6, POWER7, {RT, FRB}},
++
++{"stddx", X(31,739), X_MASK, E500MC, PPCNONE, {RS, RA, RB}},
++
++{"stqfcmux", APU(31,743,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
++
++{"stxsdux", X(31,748), XX1_MASK, PPCVSX, PPCNONE, {XS6, RA, RB}},
++
++{"subfmeo", XO(31,232,1,0), XORB_MASK, PPCCOM, PPCNONE, {RT, RA}},
++{"sfmeo", XO(31,232,1,0), XORB_MASK, PWRCOM, PPCNONE, {RT, RA}},
++{"subfmeo.", XO(31,232,1,1), XORB_MASK, PPCCOM, PPCNONE, {RT, RA}},
++{"sfmeo.", XO(31,232,1,1), XORB_MASK, PWRCOM, PPCNONE, {RT, RA}},
++
++{"mulldo", XO(31,233,1,0), XO_MASK, PPC64, PPCNONE, {RT, RA, RB}},
++{"mulldo.", XO(31,233,1,1), XO_MASK, PPC64, PPCNONE, {RT, RA, RB}},
++
++{"addmeo", XO(31,234,1,0), XORB_MASK, PPCCOM, PPCNONE, {RT, RA}},
++{"ameo", XO(31,234,1,0), XORB_MASK, PWRCOM, PPCNONE, {RT, RA}},
++{"addmeo.", XO(31,234,1,1), XORB_MASK, PPCCOM, PPCNONE, {RT, RA}},
++{"ameo.", XO(31,234,1,1), XORB_MASK, PWRCOM, PPCNONE, {RT, RA}},
++
++{"mullwo", XO(31,235,1,0), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
++{"mulso", XO(31,235,1,0), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++{"mullwo.", XO(31,235,1,1), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
++{"mulso.", XO(31,235,1,1), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++
++{"dcba", X(31,758), XRT_MASK, PPC405|PPC7450|BOOKE, PPCNONE, {RA, RB}},
++{"dcbal", XOPL(31,758,1), XRT_MASK, E500MC, PPCNONE, {RA, RB}},
++
++{"stfdux", X(31,759), X_MASK, COM, PPCNONE, {FRS, RAS, RB}},
++
++{"srliq", XRC(31,760,0), X_MASK, M601, PPCNONE, {RA, RS, SH}},
++{"srliq.", XRC(31,760,1), X_MASK, M601, PPCNONE, {RA, RS, SH}},
++
++{"lvlxl", X(31,775), X_MASK, CELL, PPCNONE, {VD, RA0, RB}},
++{"ldfcmux", APU(31,775,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
++
++{"dozo", XO(31,264,1,0), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
++{"dozo.", XO(31,264,1,1), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
++
++{"addo", XO(31,266,1,0), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
++{"caxo", XO(31,266,1,0), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++{"addo.", XO(31,266,1,1), XO_MASK, PPCCOM, PPCNONE, {RT, RA, RB}},
++{"caxo.", XO(31,266,1,1), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++
++{"lxvw4x", X(31,780), XX1_MASK, PPCVSX, PPCNONE, {XT6, RA, RB}},
++
++{"tlbivax", X(31,786), XRT_MASK, BOOKE, PPCNONE, {RA, RB}},
++{"tlbilx", X(31,787), X_MASK, E500MC, PPCNONE, {T, RA0, RB}},
++{"tlbilxlpid", XTO(31,787,0), XTO_MASK, E500MC, PPCNONE, {0}},
++{"tlbilxpid", XTO(31,787,1), XTO_MASK, E500MC, PPCNONE, {0}},
++{"tlbilxva", XTO(31,787,3), XTO_MASK, E500MC, PPCNONE, {RA0, RB}},
++
++{"lwzcix", X(31,789), X_MASK, POWER6, PPCNONE, {RT, RA0, RB}},
++
++{"lhbrx", X(31,790), X_MASK, COM, PPCNONE, {RT, RA0, RB}},
++
++{"lfdpx", X(31,791), X_MASK, POWER6, POWER7, {FRT, RA, RB}},
++{"lfqx", X(31,791), X_MASK, POWER2, PPCNONE, {FRT, RA, RB}},
++
++{"sraw", XRC(31,792,0), X_MASK, PPCCOM, PPCNONE, {RA, RS, RB}},
++{"sra", XRC(31,792,0), X_MASK, PWRCOM, PPCNONE, {RA, RS, RB}},
++{"sraw.", XRC(31,792,1), X_MASK, PPCCOM, PPCNONE, {RA, RS, RB}},
++{"sra.", XRC(31,792,1), X_MASK, PWRCOM, PPCNONE, {RA, RS, RB}},
++
++{"srad", XRC(31,794,0), X_MASK, PPC64, PPCNONE, {RA, RS, RB}},
++{"srad.", XRC(31,794,1), X_MASK, PPC64, PPCNONE, {RA, RS, RB}},
++
++{"lfddx", X(31,803), X_MASK, E500MC, PPCNONE, {FRT, RA, RB}},
++
++{"lvrxl", X(31,807), X_MASK, CELL, PPCNONE, {VD, RA0, RB}},
++
++{"lxvw4ux", X(31,812), XX1_MASK, PPCVSX, PPCNONE, {XT6, RA, RB}},
++
++{"rac", X(31,818), X_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
++
++{"lhzcix", X(31,821), X_MASK, POWER6, PPCNONE, {RT, RA0, RB}},
++
++{"dss", XDSS(31,822,0), XDSS_MASK, PPCVEC, PPCNONE, {STRM}},
++
++{"lfqux", X(31,823), X_MASK, POWER2, PPCNONE, {FRT, RA, RB}},
++
++{"srawi", XRC(31,824,0), X_MASK, PPCCOM, PPCNONE, {RA, RS, SH}},
++{"srai", XRC(31,824,0), X_MASK, PWRCOM, PPCNONE, {RA, RS, SH}},
++{"srawi.", XRC(31,824,1), X_MASK, PPCCOM, PPCNONE, {RA, RS, SH}},
++{"srai.", XRC(31,824,1), X_MASK, PWRCOM, PPCNONE, {RA, RS, SH}},
++
++{"sradi", XS(31,413,0), XS_MASK, PPC64, PPCNONE, {RA, RS, SH6}},
++{"sradi.", XS(31,413,1), XS_MASK, PPC64, PPCNONE, {RA, RS, SH6}},
++
++{"divo", XO(31,331,1,0), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
++{"divo.", XO(31,331,1,1), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
++
++{"lxvd2x", X(31,844), XX1_MASK, PPCVSX, PPCNONE, {XT6, RA, RB}},
++
++{"slbmfev", X(31,851), XRA_MASK, PPC64, PPCNONE, {RT, RB}},
++
++{"lbzcix", X(31,853), X_MASK, POWER6, PPCNONE, {RT, RA0, RB}},
++
++{"mbar", X(31,854), X_MASK, BOOKE, PPCNONE, {MO}},
++{"eieio", X(31,854), 0xffffffff, PPC, PPCNONE, {0}},
++
++{"lfiwax", X(31,855), X_MASK, POWER6, PPCNONE, {FRT, RA0, RB}},
++
++{"abso", XO(31,360,1,0), XORB_MASK, M601, PPCNONE, {RT, RA}},
++{"abso.", XO(31,360,1,1), XORB_MASK, M601, PPCNONE, {RT, RA}},
++
++{"divso", XO(31,363,1,0), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
++{"divso.", XO(31,363,1,1), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
++
++{"lxvd2ux", X(31,876), XX1_MASK, PPCVSX, PPCNONE, {XT6, RA, RB}},
++
++{"ldcix", X(31,885), X_MASK, POWER6, PPCNONE, {RT, RA0, RB}},
++
++{"lfiwzx", X(31,887), X_MASK, POWER7, PPCNONE, {FRT, RA0, RB}},
++
++{"stvlxl", X(31,903), X_MASK, CELL, PPCNONE, {VS, RA0, RB}},
++{"stdfcmux", APU(31,903,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
++
++{"divdeuo", XO(31,393,1,0), XO_MASK, POWER7, PPCNONE, {RT, RA, RB}},
++{"divdeuo.", XO(31,393,1,1), XO_MASK, POWER7, PPCNONE, {RT, RA, RB}},
++{"divweuo", XO(31,395,1,0), XO_MASK, POWER7, PPCNONE, {RT, RA, RB}},
++{"divweuo.", XO(31,395,1,1), XO_MASK, POWER7, PPCNONE, {RT, RA, RB}},
++
++{"stxvw4x", X(31,908), XX1_MASK, PPCVSX, PPCNONE, {XS6, RA, RB}},
++
++{"tlbsx", XRC(31,914,0), X_MASK, PPC403|BOOKE, PPCNONE, {RTO, RA, RB}},
++{"tlbsx.", XRC(31,914,1), X_MASK, PPC403|BOOKE, PPCNONE, {RTO, RA, RB}},
++
++{"slbmfee", X(31,915), XRA_MASK, PPC64, PPCNONE, {RT, RB}},
++
++{"stwcix", X(31,917), X_MASK, POWER6, PPCNONE, {RS, RA0, RB}},
++
++{"sthbrx", X(31,918), X_MASK, COM, PPCNONE, {RS, RA0, RB}},
++
++{"stfdpx", X(31,919), X_MASK, POWER6, PPCNONE, {FRS, RA, RB}},
++{"stfqx", X(31,919), X_MASK, POWER2, PPCNONE, {FRS, RA, RB}},
++
++{"sraq", XRC(31,920,0), X_MASK, M601, PPCNONE, {RA, RS, RB}},
++{"sraq.", XRC(31,920,1), X_MASK, M601, PPCNONE, {RA, RS, RB}},
++
++{"srea", XRC(31,921,0), X_MASK, M601, PPCNONE, {RA, RS, RB}},
++{"srea.", XRC(31,921,1), X_MASK, M601, PPCNONE, {RA, RS, RB}},
++
++{"extsh", XRC(31,922,0), XRB_MASK, PPCCOM, PPCNONE, {RA, RS}},
++{"exts", XRC(31,922,0), XRB_MASK, PWRCOM, PPCNONE, {RA, RS}},
++{"extsh.", XRC(31,922,1), XRB_MASK, PPCCOM, PPCNONE, {RA, RS}},
++{"exts.", XRC(31,922,1), XRB_MASK, PWRCOM, PPCNONE, {RA, RS}},
++
++{"stfddx", X(31,931), X_MASK, E500MC, PPCNONE, {FRS, RA, RB}},
++
++{"stvrxl", X(31,935), X_MASK, CELL, PPCNONE, {VS, RA0, RB}},
++
++{"divdeo", XO(31,425,1,0), XO_MASK, POWER7, PPCNONE, {RT, RA, RB}},
++{"divdeo.", XO(31,425,1,1), XO_MASK, POWER7, PPCNONE, {RT, RA, RB}},
++{"divweo", XO(31,427,1,0), XO_MASK, POWER7, PPCNONE, {RT, RA, RB}},
++{"divweo.", XO(31,427,1,1), XO_MASK, POWER7, PPCNONE, {RT, RA, RB}},
++
++{"stxvw4ux", X(31,940), XX1_MASK, PPCVSX, PPCNONE, {XS6, RA, RB}},
++
++{"tlbrehi", XTLB(31,946,0), XTLB_MASK, PPC403, PPCNONE, {RT, RA}},
++{"tlbrelo", XTLB(31,946,1), XTLB_MASK, PPC403, PPCNONE, {RT, RA}},
++{"tlbre", X(31,946), X_MASK, PPC403|BOOKE, PPCNONE, {RSO, RAOPT, SHO}},
++
++{"sthcix", X(31,949), X_MASK, POWER6, PPCNONE, {RS, RA0, RB}},
++
++{"stfqux", X(31,951), X_MASK, POWER2, PPCNONE, {FRS, RA, RB}},
++
++{"sraiq", XRC(31,952,0), X_MASK, M601, PPCNONE, {RA, RS, SH}},
++{"sraiq.", XRC(31,952,1), X_MASK, M601, PPCNONE, {RA, RS, SH}},
++
++{"extsb", XRC(31,954,0), XRB_MASK, PPC, PPCNONE, {RA, RS}},
++{"extsb.", XRC(31,954,1), XRB_MASK, PPC, PPCNONE, {RA, RS}},
++
++{"iccci", X(31,966), XRT_MASK, PPC403|PPC440, PPCNONE, {RA, RB}},
++
++{"divduo", XO(31,457,1,0), XO_MASK, PPC64, PPCNONE, {RT, RA, RB}},
++{"divduo.", XO(31,457,1,1), XO_MASK, PPC64, PPCNONE, {RT, RA, RB}},
++
++{"divwuo", XO(31,459,1,0), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
++{"divwuo.", XO(31,459,1,1), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
++
++{"stxvd2x", X(31,972), XX1_MASK, PPCVSX, PPCNONE, {XS6, RA, RB}},
++
++{"tlbwehi", XTLB(31,978,0), XTLB_MASK, PPC403, PPCNONE, {RT, RA}},
++{"tlbwelo", XTLB(31,978,1), XTLB_MASK, PPC403, PPCNONE, {RT, RA}},
++{"tlbwe", X(31,978), X_MASK, PPC403|BOOKE, PPCNONE, {RSO, RAOPT, SHO}},
++{"tlbld", X(31,978), XRTRA_MASK, PPC, PPCNONE, {RB}},
++
++{"stbcix", X(31,981), X_MASK, POWER6, PPCNONE, {RS, RA0, RB}},
++
++{"icbi", X(31,982), XRT_MASK, PPC, PPCNONE, {RA, RB}},
++
++{"stfiwx", X(31,983), X_MASK, PPC, PPCNONE, {FRS, RA0, RB}},
++
++{"extsw", XRC(31,986,0), XRB_MASK, PPC64, PPCNONE, {RA, RS}},
++{"extsw.", XRC(31,986,1), XRB_MASK, PPC64, PPCNONE, {RA, RS}},
++
++{"icbiep", XRT(31,991,0), XRT_MASK, E500MC, PPCNONE, {RA, RB}},
++
++{"icread", X(31,998), XRT_MASK, PPC403|PPC440, PPCNONE, {RA, RB}},
++
++{"nabso", XO(31,488,1,0), XORB_MASK, M601, PPCNONE, {RT, RA}},
++{"nabso.", XO(31,488,1,1), XORB_MASK, M601, PPCNONE, {RT, RA}},
++
++{"divdo", XO(31,489,1,0), XO_MASK, PPC64, PPCNONE, {RT, RA, RB}},
++{"divdo.", XO(31,489,1,1), XO_MASK, PPC64, PPCNONE, {RT, RA, RB}},
++
++{"divwo", XO(31,491,1,0), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
++{"divwo.", XO(31,491,1,1), XO_MASK, PPC, PPCNONE, {RT, RA, RB}},
++
++{"stxvd2ux", X(31,1004), XX1_MASK, PPCVSX, PPCNONE, {XS6, RA, RB}},
++
++{"tlbli", X(31,1010), XRTRA_MASK, PPC, PPCNONE, {RB}},
++
++{"stdcix", X(31,1013), X_MASK, POWER6, PPCNONE, {RS, RA0, RB}},
++
++{"dcbz", X(31,1014), XRT_MASK, PPC, PPCNONE, {RA, RB}},
++{"dclz", X(31,1014), XRT_MASK, PPC, PPCNONE, {RA, RB}},
++
++{"dcbzep", XRT(31,1023,0), XRT_MASK, E500MC, PPCNONE, {RA, RB}},
++
++{"dcbzl", XOPL(31,1014,1), XRT_MASK, POWER4, PPCNONE, {RA, RB}},
++{"dcbzl", XOPL(31,1014,1), XRT_MASK, PPCCOM|E500MC,POWER4, {RA, RB}},
++
++{"cctpl", 0x7c210b78, 0xffffffff, CELL, PPCNONE, {0}},
++{"cctpm", 0x7c421378, 0xffffffff, CELL, PPCNONE, {0}},
++{"cctph", 0x7c631b78, 0xffffffff, CELL, PPCNONE, {0}},
++
++{"dstt", XDSS(31,342,1), XDSS_MASK, PPCVEC, PPCNONE, {RA, RB, STRM}},
++{"dststt", XDSS(31,374,1), XDSS_MASK, PPCVEC, PPCNONE, {RA, RB, STRM}},
++{"dssall", XDSS(31,822,1), XDSS_MASK, PPCVEC, PPCNONE, {0}},
++
++{"db8cyc", 0x7f9ce378, 0xffffffff, CELL, PPCNONE, {0}},
++{"db10cyc", 0x7fbdeb78, 0xffffffff, CELL, PPCNONE, {0}},
++{"db12cyc", 0x7fdef378, 0xffffffff, CELL, PPCNONE, {0}},
++{"db16cyc", 0x7ffffb78, 0xffffffff, CELL, PPCNONE, {0}},
++
++{"lwz", OP(32), OP_MASK, PPCCOM, PPCNONE, {RT, D, RA0}},
++{"l", OP(32), OP_MASK, PWRCOM, PPCNONE, {RT, D, RA0}},
++
++{"lwzu", OP(33), OP_MASK, PPCCOM, PPCNONE, {RT, D, RAL}},
++{"lu", OP(33), OP_MASK, PWRCOM, PPCNONE, {RT, D, RA0}},
++
++{"lbz", OP(34), OP_MASK, COM, PPCNONE, {RT, D, RA0}},
++
++{"lbzu", OP(35), OP_MASK, COM, PPCNONE, {RT, D, RAL}},
++
++{"stw", OP(36), OP_MASK, PPCCOM, PPCNONE, {RS, D, RA0}},
++{"st", OP(36), OP_MASK, PWRCOM, PPCNONE, {RS, D, RA0}},
++
++{"stwu", OP(37), OP_MASK, PPCCOM, PPCNONE, {RS, D, RAS}},
++{"stu", OP(37), OP_MASK, PWRCOM, PPCNONE, {RS, D, RA0}},
++
++{"stb", OP(38), OP_MASK, COM, PPCNONE, {RS, D, RA0}},
++
++{"stbu", OP(39), OP_MASK, COM, PPCNONE, {RS, D, RAS}},
++
++{"lhz", OP(40), OP_MASK, COM, PPCNONE, {RT, D, RA0}},
++
++{"lhzu", OP(41), OP_MASK, COM, PPCNONE, {RT, D, RAL}},
++
++{"lha", OP(42), OP_MASK, COM, PPCNONE, {RT, D, RA0}},
++
++{"lhau", OP(43), OP_MASK, COM, PPCNONE, {RT, D, RAL}},
++
++{"sth", OP(44), OP_MASK, COM, PPCNONE, {RS, D, RA0}},
++
++{"sthu", OP(45), OP_MASK, COM, PPCNONE, {RS, D, RAS}},
++
++{"lmw", OP(46), OP_MASK, PPCCOM, PPCNONE, {RT, D, RAM}},
++{"lm", OP(46), OP_MASK, PWRCOM, PPCNONE, {RT, D, RA0}},
++
++{"stmw", OP(47), OP_MASK, PPCCOM, PPCNONE, {RS, D, RA0}},
++{"stm", OP(47), OP_MASK, PWRCOM, PPCNONE, {RS, D, RA0}},
++
++{"lfs", OP(48), OP_MASK, COM, PPCNONE, {FRT, D, RA0}},
++
++{"lfsu", OP(49), OP_MASK, COM, PPCNONE, {FRT, D, RAS}},
++
++{"lfd", OP(50), OP_MASK, COM, PPCNONE, {FRT, D, RA0}},
++
++{"lfdu", OP(51), OP_MASK, COM, PPCNONE, {FRT, D, RAS}},
++
++{"stfs", OP(52), OP_MASK, COM, PPCNONE, {FRS, D, RA0}},
++
++{"stfsu", OP(53), OP_MASK, COM, PPCNONE, {FRS, D, RAS}},
++
++{"stfd", OP(54), OP_MASK, COM, PPCNONE, {FRS, D, RA0}},
++
++{"stfdu", OP(55), OP_MASK, COM, PPCNONE, {FRS, D, RAS}},
++
++{"lq", OP(56), OP_MASK, POWER4, PPCNONE, {RTQ, DQ, RAQ}},
++
++{"lfq", OP(56), OP_MASK, POWER2, PPCNONE, {FRT, D, RA0}},
++
++{"psq_l", OP(56), OP_MASK, PPCPS, PPCNONE, {FRT,PSD,RA,PSW,PSQ}},
++
++{"lfdp", OP(57), OP_MASK, POWER6, POWER7, {FRT, D, RA0}},
++
++{"lfqu", OP(57), OP_MASK, POWER2, PPCNONE, {FRT, D, RA0}},
++
++{"psq_lu", OP(57), OP_MASK, PPCPS, PPCNONE, {FRT,PSD,RA,PSW,PSQ}},
++
++{"ld", DSO(58,0), DS_MASK, PPC64, PPCNONE, {RT, DS, RA0}},
++{"ldu", DSO(58,1), DS_MASK, PPC64, PPCNONE, {RT, DS, RAL}},
++{"lwa", DSO(58,2), DS_MASK, PPC64, PPCNONE, {RT, DS, RA0}},
++
++{"dadd", XRC(59,2,0), X_MASK, POWER6, PPCNONE, {FRT, FRA, FRB}},
++{"dadd.", XRC(59,2,1), X_MASK, POWER6, PPCNONE, {FRT, FRA, FRB}},
++
++{"dqua", ZRC(59,3,0), Z2_MASK, POWER6, PPCNONE, {FRT,FRA,FRB,RMC}},
++{"dqua.", ZRC(59,3,1), Z2_MASK, POWER6, PPCNONE, {FRT,FRA,FRB,RMC}},
++
++{"fdivs", A(59,18,0), AFRC_MASK, PPC, PPCNONE, {FRT, FRA, FRB}},
++{"fdivs.", A(59,18,1), AFRC_MASK, PPC, PPCNONE, {FRT, FRA, FRB}},
++
++{"fsubs", A(59,20,0), AFRC_MASK, PPC, PPCNONE, {FRT, FRA, FRB}},
++{"fsubs.", A(59,20,1), AFRC_MASK, PPC, PPCNONE, {FRT, FRA, FRB}},
++
++{"fadds", A(59,21,0), AFRC_MASK, PPC, PPCNONE, {FRT, FRA, FRB}},
++{"fadds.", A(59,21,1), AFRC_MASK, PPC, PPCNONE, {FRT, FRA, FRB}},
++
++{"fsqrts", A(59,22,0), AFRAFRC_MASK, PPC, PPCNONE, {FRT, FRB}},
++{"fsqrts.", A(59,22,1), AFRAFRC_MASK, PPC, PPCNONE, {FRT, FRB}},
++
++{"fres", A(59,24,0), AFRALFRC_MASK, PPC, POWER7, {FRT, FRB, A_L}},
++{"fres.", A(59,24,1), AFRALFRC_MASK, PPC, POWER7, {FRT, FRB, A_L}},
++{"fres", A(59,24,0), AFRAFRC_MASK, POWER7, PPCNONE, {FRT, FRB}},
++{"fres.", A(59,24,1), AFRAFRC_MASK, POWER7, PPCNONE, {FRT, FRB}},
++
++{"fmuls", A(59,25,0), AFRB_MASK, PPC, PPCNONE, {FRT, FRA, FRC}},
++{"fmuls.", A(59,25,1), AFRB_MASK, PPC, PPCNONE, {FRT, FRA, FRC}},
++
++{"frsqrtes", A(59,26,0), AFRALFRC_MASK, POWER5, POWER7, {FRT, FRB, A_L}},
++{"frsqrtes.", A(59,26,1), AFRALFRC_MASK, POWER5, POWER7, {FRT, FRB, A_L}},
++{"frsqrtes", A(59,26,0), AFRAFRC_MASK, POWER7, PPCNONE, {FRT, FRB}},
++{"frsqrtes.", A(59,26,1), AFRAFRC_MASK, POWER7, PPCNONE, {FRT, FRB}},
++
++{"fmsubs", A(59,28,0), A_MASK, PPC, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"fmsubs.", A(59,28,1), A_MASK, PPC, PPCNONE, {FRT, FRA, FRC, FRB}},
++
++{"fmadds", A(59,29,0), A_MASK, PPC, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"fmadds.", A(59,29,1), A_MASK, PPC, PPCNONE, {FRT, FRA, FRC, FRB}},
++
++{"fnmsubs", A(59,30,0), A_MASK, PPC, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"fnmsubs.", A(59,30,1), A_MASK, PPC, PPCNONE, {FRT, FRA, FRC, FRB}},
++
++{"fnmadds", A(59,31,0), A_MASK, PPC, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"fnmadds.", A(59,31,1), A_MASK, PPC, PPCNONE, {FRT, FRA, FRC, FRB}},
++
++{"dmul", XRC(59,34,0), X_MASK, POWER6, PPCNONE, {FRT, FRA, FRB}},
++{"dmul.", XRC(59,34,1), X_MASK, POWER6, PPCNONE, {FRT, FRA, FRB}},
++
++{"drrnd", ZRC(59,35,0), Z2_MASK, POWER6, PPCNONE, {FRT, FRA, FRB, RMC}},
++{"drrnd.", ZRC(59,35,1), Z2_MASK, POWER6, PPCNONE, {FRT, FRA, FRB, RMC}},
++
++{"dscli", ZRC(59,66,0), Z_MASK, POWER6, PPCNONE, {FRT, FRA, SH16}},
++{"dscli.", ZRC(59,66,1), Z_MASK, POWER6, PPCNONE, {FRT, FRA, SH16}},
++
++{"dquai", ZRC(59,67,0), Z2_MASK, POWER6, PPCNONE, {TE, FRT,FRB,RMC}},
++{"dquai.", ZRC(59,67,1), Z2_MASK, POWER6, PPCNONE, {TE, FRT,FRB,RMC}},
++
++{"dscri", ZRC(59,98,0), Z_MASK, POWER6, PPCNONE, {FRT, FRA, SH16}},
++{"dscri.", ZRC(59,98,1), Z_MASK, POWER6, PPCNONE, {FRT, FRA, SH16}},
++
++{"drintx", ZRC(59,99,0), Z2_MASK, POWER6, PPCNONE, {R, FRT, FRB, RMC}},
++{"drintx.", ZRC(59,99,1), Z2_MASK, POWER6, PPCNONE, {R, FRT, FRB, RMC}},
++
++{"dcmpo", X(59,130), X_MASK, POWER6, PPCNONE, {BF, FRA, FRB}},
++
++{"dtstex", X(59,162), X_MASK, POWER6, PPCNONE, {BF, FRA, FRB}},
++{"dtstdc", Z(59,194), Z_MASK, POWER6, PPCNONE, {BF, FRA, DCM}},
++{"dtstdg", Z(59,226), Z_MASK, POWER6, PPCNONE, {BF, FRA, DGM}},
++
++{"drintn", ZRC(59,227,0), Z2_MASK, POWER6, PPCNONE, {R, FRT, FRB, RMC}},
++{"drintn.", ZRC(59,227,1), Z2_MASK, POWER6, PPCNONE, {R, FRT, FRB, RMC}},
++
++{"dctdp", XRC(59,258,0), X_MASK, POWER6, PPCNONE, {FRT, FRB}},
++{"dctdp.", XRC(59,258,1), X_MASK, POWER6, PPCNONE, {FRT, FRB}},
++
++{"dctfix", XRC(59,290,0), X_MASK, POWER6, PPCNONE, {FRT, FRB}},
++{"dctfix.", XRC(59,290,1), X_MASK, POWER6, PPCNONE, {FRT, FRB}},
++
++{"ddedpd", XRC(59,322,0), X_MASK, POWER6, PPCNONE, {SP, FRT, FRB}},
++{"ddedpd.", XRC(59,322,1), X_MASK, POWER6, PPCNONE, {SP, FRT, FRB}},
++
++{"dxex", XRC(59,354,0), X_MASK, POWER6, PPCNONE, {FRT, FRB}},
++{"dxex.", XRC(59,354,1), X_MASK, POWER6, PPCNONE, {FRT, FRB}},
++
++{"dsub", XRC(59,514,0), X_MASK, POWER6, PPCNONE, {FRT, FRA, FRB}},
++{"dsub.", XRC(59,514,1), X_MASK, POWER6, PPCNONE, {FRT, FRA, FRB}},
++
++{"ddiv", XRC(59,546,0), X_MASK, POWER6, PPCNONE, {FRT, FRA, FRB}},
++{"ddiv.", XRC(59,546,1), X_MASK, POWER6, PPCNONE, {FRT, FRA, FRB}},
++
++{"dcmpu", X(59,642), X_MASK, POWER6, PPCNONE, {BF, FRA, FRB}},
++
++{"dtstsf", X(59,674), X_MASK, POWER6, PPCNONE, {BF, FRA, FRB}},
++
++{"drsp", XRC(59,770,0), X_MASK, POWER6, PPCNONE, {FRT, FRB}},
++{"drsp.", XRC(59,770,1), X_MASK, POWER6, PPCNONE, {FRT, FRB}},
++
++{"dcffix", XRC(59,802,0), X_MASK|FRA_MASK, POWER7, PPCNONE, {FRT, FRB}},
++{"dcffix.", XRC(59,802,1), X_MASK|FRA_MASK, POWER7, PPCNONE, {FRT, FRB}},
++
++{"denbcd", XRC(59,834,0), X_MASK, POWER6, PPCNONE, {S, FRT, FRB}},
++{"denbcd.", XRC(59,834,1), X_MASK, POWER6, PPCNONE, {S, FRT, FRB}},
++
++{"fcfids", XRC(59,846,0), XRA_MASK, POWER7, PPCNONE, {FRT, FRB}},
++{"fcfids.", XRC(59,846,1), XRA_MASK, POWER7, PPCNONE, {FRT, FRB}},
++
++{"diex", XRC(59,866,0), X_MASK, POWER6, PPCNONE, {FRT, FRA, FRB}},
++{"diex.", XRC(59,866,1), X_MASK, POWER6, PPCNONE, {FRT, FRA, FRB}},
++
++{"fcfidus", XRC(59,974,0), XRA_MASK, POWER7, PPCNONE, {FRT, FRB}},
++{"fcfidus.", XRC(59,974,1), XRA_MASK, POWER7, PPCNONE, {FRT, FRB}},
++
++{"xxsldwi", XX3(60,2), XX3SHW_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6, SHW}},
++{"xxsel", XX4(60,3), XX4_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6, XC6}},
++{"xxspltd", XX3(60,10), XX3DM_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6S, DMEX}},
++{"xxmrghd", XX3(60,10), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xxswapd", XX3(60,10)|(2<<8), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6S}},
++{"xxmrgld", XX3(60,10)|(3<<8), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xxpermdi", XX3(60,10), XX3DM_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6, DM}},
++{"xxmrghw", XX3(60,18), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xsadddp", XX3(60,32), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xsmaddadp", XX3(60,33), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xscmpudp", XX3(60,35), XX3BF_MASK, PPCVSX, PPCNONE, {BF, XA6, XB6}},
++{"xssubdp", XX3(60,40), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xsmaddmdp", XX3(60,41), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xscmpodp", XX3(60,43), XX3BF_MASK, PPCVSX, PPCNONE, {BF, XA6, XB6}},
++{"xsmuldp", XX3(60,48), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xsmsubadp", XX3(60,49), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xxmrglw", XX3(60,50), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xsdivdp", XX3(60,56), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xsmsubmdp", XX3(60,57), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xstdivdp", XX3(60,61), XX3BF_MASK, PPCVSX, PPCNONE, {BF, XA6, XB6}},
++{"xvaddsp", XX3(60,64), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvmaddasp", XX3(60,65), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvcmpeqsp", XX3RC(60,67,0), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvcmpeqsp.", XX3RC(60,67,1), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvsubsp", XX3(60,72), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xscvdpuxws", XX2(60,72), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvmaddmsp", XX3(60,73), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xsrdpi", XX2(60,73), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xsrsqrtedp", XX2(60,74), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xssqrtdp", XX2(60,75), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvcmpgtsp", XX3RC(60,75,0), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvcmpgtsp.", XX3RC(60,75,1), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvmulsp", XX3(60,80), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvmsubasp", XX3(60,81), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvcmpgesp", XX3RC(60,83,0), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvcmpgesp.", XX3RC(60,83,1), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvdivsp", XX3(60,88), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xscvdpsxws", XX2(60,88), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvmsubmsp", XX3(60,89), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xsrdpiz", XX2(60,89), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xsredp", XX2(60,90), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvtdivsp", XX3(60,93), XX3BF_MASK, PPCVSX, PPCNONE, {BF, XA6, XB6}},
++{"xvadddp", XX3(60,96), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvmaddadp", XX3(60,97), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvcmpeqdp", XX3RC(60,99,0), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvcmpeqdp.", XX3RC(60,99,1), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvsubdp", XX3(60,104), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvmaddmdp", XX3(60,105), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xsrdpip", XX2(60,105), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xstsqrtdp", XX2(60,106), XX2BF_MASK, PPCVSX, PPCNONE, {BF, XB6}},
++{"xsrdpic", XX2(60,107), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvcmpgtdp", XX3RC(60,107,0), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvcmpgtdp.", XX3RC(60,107,1), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvmuldp", XX3(60,112), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvmsubadp", XX3(60,113), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvcmpgedp", XX3RC(60,115,0), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvcmpgedp.", XX3RC(60,115,1), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvdivdp", XX3(60,120), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvmsubmdp", XX3(60,121), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xsrdpim", XX2(60,121), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvtdivdp", XX3(60,125), XX3BF_MASK, PPCVSX, PPCNONE, {BF, XA6, XB6}},
++{"xxland", XX3(60,130), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvcvspuxws", XX2(60,136), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvrspi", XX2(60,137), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xxlandc", XX3(60,138), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvrsqrtesp", XX2(60,138), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvsqrtsp", XX2(60,139), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xxlor", XX3(60,146), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvcvspsxws", XX2(60,152), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvrspiz", XX2(60,153), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xxlxor", XX3(60,154), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvresp", XX2(60,154), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xsmaxdp", XX3(60,160), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xsnmaddadp", XX3(60,161), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xxlnor", XX3(60,162), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xxspltw", XX2(60,164), XX2UIM_MASK, PPCVSX, PPCNONE, {XT6, XB6, UIM}},
++{"xsmindp", XX3(60,168), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvcvuxwsp", XX2(60,168), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xsnmaddmdp", XX3(60,169), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvrspip", XX2(60,169), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvtsqrtsp", XX2(60,170), XX2BF_MASK, PPCVSX, PPCNONE, {BF, XB6}},
++{"xvrspic", XX2(60,171), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xscpsgndp", XX3(60,176), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xsnmsubadp", XX3(60,177), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvcvsxwsp", XX2(60,184), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xsnmsubmdp", XX3(60,185), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvrspim", XX2(60,185), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvmaxsp", XX3(60,192), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvnmaddasp", XX3(60,193), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvminsp", XX3(60,200), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvcvdpuxws", XX2(60,200), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvnmaddmsp", XX3(60,201), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvrdpi", XX2(60,201), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvrsqrtedp", XX2(60,202), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvsqrtdp", XX2(60,203), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvmovsp", XX3(60,208), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6S}},
++{"xvcpsgnsp", XX3(60,208), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvnmsubasp", XX3(60,209), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvcvdpsxws", XX2(60,216), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvnmsubmsp", XX3(60,217), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvrdpiz", XX2(60,217), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvredp", XX2(60,218), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvmaxdp", XX3(60,224), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvnmaddadp", XX3(60,225), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvmindp", XX3(60,232), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvnmaddmdp", XX3(60,233), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvcvuxwdp", XX2(60,232), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvrdpip", XX2(60,233), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvtsqrtdp", XX2(60,234), XX2BF_MASK, PPCVSX, PPCNONE, {BF, XB6}},
++{"xvrdpic", XX2(60,235), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvmovdp", XX3(60,240), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6S}},
++{"xvcpsgndp", XX3(60,240), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvnmsubadp", XX3(60,241), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvcvsxwdp", XX2(60,248), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvnmsubmdp", XX3(60,249), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
++{"xvrdpim", XX2(60,249), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xscvdpsp", XX2(60,265), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xscvdpuxds", XX2(60,328), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xscvspdp", XX2(60,329), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xscvdpsxds", XX2(60,344), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xsabsdp", XX2(60,345), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xscvuxddp", XX2(60,360), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xsnabsdp", XX2(60,361), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xscvsxddp", XX2(60,376), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xsnegdp", XX2(60,377), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvcvspuxds", XX2(60,392), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvcvdpsp", XX2(60,393), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvcvspsxds", XX2(60,408), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvabssp", XX2(60,409), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvcvuxdsp", XX2(60,424), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvnabssp", XX2(60,425), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvcvsxdsp", XX2(60,440), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvnegsp", XX2(60,441), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvcvdpuxds", XX2(60,456), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvcvspdp", XX2(60,457), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvcvdpsxds", XX2(60,472), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvabsdp", XX2(60,473), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvcvuxddp", XX2(60,488), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvnabsdp", XX2(60,489), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvcvsxddp", XX2(60,504), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++{"xvnegdp", XX2(60,505), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
++
++{"stfq", OP(60), OP_MASK, POWER2, PPCNONE, {FRS, D, RA}},
++
++{"psq_st", OP(60), OP_MASK, PPCPS, PPCNONE, {FRS,PSD,RA,PSW,PSQ}},
++
++{"stfdp", OP(61), OP_MASK, POWER6, PPCNONE, {FRT, D, RA0}},
++
++{"stfqu", OP(61), OP_MASK, POWER2, PPCNONE, {FRS, D, RA}},
++
++{"psq_stu", OP(61), OP_MASK, PPCPS, PPCNONE, {FRS,PSD,RA,PSW,PSQ}},
++
++{"std", DSO(62,0), DS_MASK, PPC64, PPCNONE, {RS, DS, RA0}},
++{"stdu", DSO(62,1), DS_MASK, PPC64, PPCNONE, {RS, DS, RAS}},
++{"stq", DSO(62,2), DS_MASK, POWER4, PPCNONE, {RSQ, DS, RA0}},
++
++{"fcmpu", X(63,0), X_MASK|(3<<21), COM, PPCNONE, {BF, FRA, FRB}},
++
++{"daddq", XRC(63,2,0), X_MASK, POWER6, PPCNONE, {FRT, FRA, FRB}},
++{"daddq.", XRC(63,2,1), X_MASK, POWER6, PPCNONE, {FRT, FRA, FRB}},
++
++{"dquaq", ZRC(63,3,0), Z2_MASK, POWER6, PPCNONE, {FRT, FRA, FRB, RMC}},
++{"dquaq.", ZRC(63,3,1), Z2_MASK, POWER6, PPCNONE, {FRT, FRA, FRB, RMC}},
++
++{"fcpsgn", XRC(63,8,0), X_MASK, POWER6, PPCNONE, {FRT, FRA, FRB}},
++{"fcpsgn.", XRC(63,8,1), X_MASK, POWER6, PPCNONE, {FRT, FRA, FRB}},
++
++{"frsp", XRC(63,12,0), XRA_MASK, COM, PPCNONE, {FRT, FRB}},
++{"frsp.", XRC(63,12,1), XRA_MASK, COM, PPCNONE, {FRT, FRB}},
++
++{"fctiw", XRC(63,14,0), XRA_MASK, PPCCOM, PPCNONE, {FRT, FRB}},
++{"fcir", XRC(63,14,0), XRA_MASK, POWER2, PPCNONE, {FRT, FRB}},
++{"fctiw.", XRC(63,14,1), XRA_MASK, PPCCOM, PPCNONE, {FRT, FRB}},
++{"fcir.", XRC(63,14,1), XRA_MASK, POWER2, PPCNONE, {FRT, FRB}},
++
++{"fctiwz", XRC(63,15,0), XRA_MASK, PPCCOM, PPCNONE, {FRT, FRB}},
++{"fcirz", XRC(63,15,0), XRA_MASK, POWER2, PPCNONE, {FRT, FRB}},
++{"fctiwz.", XRC(63,15,1), XRA_MASK, PPCCOM, PPCNONE, {FRT, FRB}},
++{"fcirz.", XRC(63,15,1), XRA_MASK, POWER2, PPCNONE, {FRT, FRB}},
++
++{"fdiv", A(63,18,0), AFRC_MASK, PPCCOM, PPCNONE, {FRT, FRA, FRB}},
++{"fd", A(63,18,0), AFRC_MASK, PWRCOM, PPCNONE, {FRT, FRA, FRB}},
++{"fdiv.", A(63,18,1), AFRC_MASK, PPCCOM, PPCNONE, {FRT, FRA, FRB}},
++{"fd.", A(63,18,1), AFRC_MASK, PWRCOM, PPCNONE, {FRT, FRA, FRB}},
++
++{"fsub", A(63,20,0), AFRC_MASK, PPCCOM, PPCNONE, {FRT, FRA, FRB}},
++{"fs", A(63,20,0), AFRC_MASK, PWRCOM, PPCNONE, {FRT, FRA, FRB}},
++{"fsub.", A(63,20,1), AFRC_MASK, PPCCOM, PPCNONE, {FRT, FRA, FRB}},
++{"fs.", A(63,20,1), AFRC_MASK, PWRCOM, PPCNONE, {FRT, FRA, FRB}},
++
++{"fadd", A(63,21,0), AFRC_MASK, PPCCOM, PPCNONE, {FRT, FRA, FRB}},
++{"fa", A(63,21,0), AFRC_MASK, PWRCOM, PPCNONE, {FRT, FRA, FRB}},
++{"fadd.", A(63,21,1), AFRC_MASK, PPCCOM, PPCNONE, {FRT, FRA, FRB}},
++{"fa.", A(63,21,1), AFRC_MASK, PWRCOM, PPCNONE, {FRT, FRA, FRB}},
++
++{"fsqrt", A(63,22,0), AFRAFRC_MASK, PPCPWR2, PPCNONE, {FRT, FRB}},
++{"fsqrt.", A(63,22,1), AFRAFRC_MASK, PPCPWR2, PPCNONE, {FRT, FRB}},
++
++{"fsel", A(63,23,0), A_MASK, PPC, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"fsel.", A(63,23,1), A_MASK, PPC, PPCNONE, {FRT, FRA, FRC, FRB}},
++
++{"fre", A(63,24,0), AFRALFRC_MASK, POWER5, POWER7, {FRT, FRB, A_L}},
++{"fre.", A(63,24,1), AFRALFRC_MASK, POWER5, POWER7, {FRT, FRB, A_L}},
++{"fre", A(63,24,0), AFRAFRC_MASK, POWER7, PPCNONE, {FRT, FRB}},
++{"fre.", A(63,24,1), AFRAFRC_MASK, POWER7, PPCNONE, {FRT, FRB}},
++
++{"fmul", A(63,25,0), AFRB_MASK, PPCCOM, PPCNONE, {FRT, FRA, FRC}},
++{"fm", A(63,25,0), AFRB_MASK, PWRCOM, PPCNONE, {FRT, FRA, FRC}},
++{"fmul.", A(63,25,1), AFRB_MASK, PPCCOM, PPCNONE, {FRT, FRA, FRC}},
++{"fm.", A(63,25,1), AFRB_MASK, PWRCOM, PPCNONE, {FRT, FRA, FRC}},
++
++{"frsqrte", A(63,26,0), AFRALFRC_MASK, PPC, POWER7, {FRT, FRB, A_L}},
++{"frsqrte.", A(63,26,1), AFRALFRC_MASK, PPC, POWER7, {FRT, FRB, A_L}},
++{"frsqrte", A(63,26,0), AFRAFRC_MASK, POWER7, PPCNONE, {FRT, FRB}},
++{"frsqrte.", A(63,26,1), AFRAFRC_MASK, POWER7, PPCNONE, {FRT, FRB}},
++
++{"fmsub", A(63,28,0), A_MASK, PPCCOM, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"fms", A(63,28,0), A_MASK, PWRCOM, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"fmsub.", A(63,28,1), A_MASK, PPCCOM, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"fms.", A(63,28,1), A_MASK, PWRCOM, PPCNONE, {FRT, FRA, FRC, FRB}},
++
++{"fmadd", A(63,29,0), A_MASK, PPCCOM, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"fma", A(63,29,0), A_MASK, PWRCOM, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"fmadd.", A(63,29,1), A_MASK, PPCCOM, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"fma.", A(63,29,1), A_MASK, PWRCOM, PPCNONE, {FRT, FRA, FRC, FRB}},
++
++{"fnmsub", A(63,30,0), A_MASK, PPCCOM, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"fnms", A(63,30,0), A_MASK, PWRCOM, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"fnmsub.", A(63,30,1), A_MASK, PPCCOM, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"fnms.", A(63,30,1), A_MASK, PWRCOM, PPCNONE, {FRT, FRA, FRC, FRB}},
++
++{"fnmadd", A(63,31,0), A_MASK, PPCCOM, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"fnma", A(63,31,0), A_MASK, PWRCOM, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"fnmadd.", A(63,31,1), A_MASK, PPCCOM, PPCNONE, {FRT, FRA, FRC, FRB}},
++{"fnma.", A(63,31,1), A_MASK, PWRCOM, PPCNONE, {FRT, FRA, FRC, FRB}},
++
++{"fcmpo", X(63,32), X_MASK|(3<<21), COM, PPCNONE, {BF, FRA, FRB}},
++
++{"dmulq", XRC(63,34,0), X_MASK, POWER6, PPCNONE, {FRT, FRA, FRB}},
++{"dmulq.", XRC(63,34,1), X_MASK, POWER6, PPCNONE, {FRT, FRA, FRB}},
++
++{"drrndq", ZRC(63,35,0), Z2_MASK, POWER6, PPCNONE, {FRT, FRA, FRB, RMC}},
++{"drrndq.", ZRC(63,35,1), Z2_MASK, POWER6, PPCNONE, {FRT, FRA, FRB, RMC}},
++
++{"mtfsb1", XRC(63,38,0), XRARB_MASK, COM, PPCNONE, {BT}},
++{"mtfsb1.", XRC(63,38,1), XRARB_MASK, COM, PPCNONE, {BT}},
++
++{"fneg", XRC(63,40,0), XRA_MASK, COM, PPCNONE, {FRT, FRB}},
++{"fneg.", XRC(63,40,1), XRA_MASK, COM, PPCNONE, {FRT, FRB}},
++
++{"mcrfs", X(63,64), XRB_MASK|(3<<21)|(3<<16), COM, PPCNONE, {BF, BFA}},
++
++{"dscliq", ZRC(63,66,0), Z_MASK, POWER6, PPCNONE, {FRT, FRA, SH16}},
++{"dscliq.", ZRC(63,66,1), Z_MASK, POWER6, PPCNONE, {FRT, FRA, SH16}},
++
++{"dquaiq", ZRC(63,67,0), Z2_MASK, POWER6, PPCNONE, {TE, FRT, FRB, RMC}},
++{"dquaiq.", ZRC(63,67,1), Z2_MASK, POWER6, PPCNONE, {TE, FRT, FRB, RMC}},
++
++{"mtfsb0", XRC(63,70,0), XRARB_MASK, COM, PPCNONE, {BT}},
++{"mtfsb0.", XRC(63,70,1), XRARB_MASK, COM, PPCNONE, {BT}},
++
++{"fmr", XRC(63,72,0), XRA_MASK, COM, PPCNONE, {FRT, FRB}},
++{"fmr.", XRC(63,72,1), XRA_MASK, COM, PPCNONE, {FRT, FRB}},
++
++{"dscriq", ZRC(63,98,0), Z_MASK, POWER6, PPCNONE, {FRT, FRA, SH16}},
++{"dscriq.", ZRC(63,98,1), Z_MASK, POWER6, PPCNONE, {FRT, FRA, SH16}},
++
++{"drintxq", ZRC(63,99,0), Z2_MASK, POWER6, PPCNONE, {R, FRT, FRB, RMC}},
++{"drintxq.", ZRC(63,99,1), Z2_MASK, POWER6, PPCNONE, {R, FRT, FRB, RMC}},
++
++{"ftdiv", X(63,128), X_MASK|(3<<21), POWER7, PPCNONE, {BF, FRA, FRB}},
++
++{"dcmpoq", X(63,130), X_MASK, POWER6, PPCNONE, {BF, FRA, FRB}},
++
++{"mtfsfi", XRC(63,134,0), XRA_MASK|(3<<21)|(1<<11), COM, POWER6, {BFF, U}},
++{"mtfsfi", XRC(63,134,0), XWRA_MASK|(3<<21)|(1<<11), POWER6, PPCNONE, {BFF, U, W}},
++{"mtfsfi.", XRC(63,134,1), XRA_MASK|(3<<21)|(1<<11), COM, POWER6, {BFF, U}},
++{"mtfsfi.", XRC(63,134,1), XWRA_MASK|(3<<21)|(1<<11), POWER6, PPCNONE, {BFF, U, W}},
++
++{"fnabs", XRC(63,136,0), XRA_MASK, COM, PPCNONE, {FRT, FRB}},
++{"fnabs.", XRC(63,136,1), XRA_MASK, COM, PPCNONE, {FRT, FRB}},
++
++{"fctiwu", XRC(63,142,0), XRA_MASK, POWER7, PPCNONE, {FRT, FRB}},
++{"fctiwu.", XRC(63,142,1), XRA_MASK, POWER7, PPCNONE, {FRT, FRB}},
++{"fctiwuz", XRC(63,143,0), XRA_MASK, POWER7, PPCNONE, {FRT, FRB}},
++{"fctiwuz.", XRC(63,143,1), XRA_MASK, POWER7, PPCNONE, {FRT, FRB}},
++
++{"ftsqrt", X(63,160), X_MASK|(3<<21|FRA_MASK), POWER7, PPCNONE, {BF, FRB}},
++
++{"dtstexq", X(63,162), X_MASK, POWER6, PPCNONE, {BF, FRA, FRB}},
++{"dtstdcq", Z(63,194), Z_MASK, POWER6, PPCNONE, {BF, FRA, DCM}},
++{"dtstdgq", Z(63,226), Z_MASK, POWER6, PPCNONE, {BF, FRA, DGM}},
++
++{"drintnq", ZRC(63,227,0), Z2_MASK, POWER6, PPCNONE, {R, FRT, FRB, RMC}},
++{"drintnq.", ZRC(63,227,1), Z2_MASK, POWER6, PPCNONE, {R, FRT, FRB, RMC}},
++
++{"dctqpq", XRC(63,258,0), X_MASK, POWER6, PPCNONE, {FRT, FRB}},
++{"dctqpq.", XRC(63,258,1), X_MASK, POWER6, PPCNONE, {FRT, FRB}},
++
++{"fabs", XRC(63,264,0), XRA_MASK, COM, PPCNONE, {FRT, FRB}},
++{"fabs.", XRC(63,264,1), XRA_MASK, COM, PPCNONE, {FRT, FRB}},
++
++{"dctfixq", XRC(63,290,0), X_MASK, POWER6, PPCNONE, {FRT, FRB}},
++{"dctfixq.", XRC(63,290,1), X_MASK, POWER6, PPCNONE, {FRT, FRB}},
++
++{"ddedpdq", XRC(63,322,0), X_MASK, POWER6, PPCNONE, {SP, FRT, FRB}},
++{"ddedpdq.", XRC(63,322,1), X_MASK, POWER6, PPCNONE, {SP, FRT, FRB}},
++
++{"dxexq", XRC(63,354,0), X_MASK, POWER6, PPCNONE, {FRT, FRB}},
++{"dxexq.", XRC(63,354,1), X_MASK, POWER6, PPCNONE, {FRT, FRB}},
++
++{"frin", XRC(63,392,0), XRA_MASK, POWER5, PPCNONE, {FRT, FRB}},
++{"frin.", XRC(63,392,1), XRA_MASK, POWER5, PPCNONE, {FRT, FRB}},
++{"friz", XRC(63,424,0), XRA_MASK, POWER5, PPCNONE, {FRT, FRB}},
++{"friz.", XRC(63,424,1), XRA_MASK, POWER5, PPCNONE, {FRT, FRB}},
++{"frip", XRC(63,456,0), XRA_MASK, POWER5, PPCNONE, {FRT, FRB}},
++{"frip.", XRC(63,456,1), XRA_MASK, POWER5, PPCNONE, {FRT, FRB}},
++{"frim", XRC(63,488,0), XRA_MASK, POWER5, PPCNONE, {FRT, FRB}},
++{"frim.", XRC(63,488,1), XRA_MASK, POWER5, PPCNONE, {FRT, FRB}},
++
++{"dsubq", XRC(63,514,0), X_MASK, POWER6, PPCNONE, {FRT, FRA, FRB}},
++{"dsubq.", XRC(63,514,1), X_MASK, POWER6, PPCNONE, {FRT, FRA, FRB}},
++
++{"ddivq", XRC(63,546,0), X_MASK, POWER6, PPCNONE, {FRT, FRA, FRB}},
++{"ddivq.", XRC(63,546,1), X_MASK, POWER6, PPCNONE, {FRT, FRA, FRB}},
++
++{"mffs", XRC(63,583,0), XRARB_MASK, COM, PPCNONE, {FRT}},
++{"mffs.", XRC(63,583,1), XRARB_MASK, COM, PPCNONE, {FRT}},
++
++{"dcmpuq", X(63,642), X_MASK, POWER6, PPCNONE, {BF, FRA, FRB}},
++
++{"dtstsfq", X(63,674), X_MASK, POWER6, PPCNONE, {BF, FRA, FRB}},
++
++{"mtfsf", XFL(63,711,0), XFL_MASK, COM, POWER6, {FLM, FRB}},
++{"mtfsf", XFL(63,711,0), XFL_MASK, POWER6, PPCNONE, {FLM, FRB, XFL_L, W}},
++{"mtfsf.", XFL(63,711,1), XFL_MASK, COM, POWER6, {FLM, FRB}},
++{"mtfsf.", XFL(63,711,1), XFL_MASK, POWER6, PPCNONE, {FLM, FRB, XFL_L, W}},
++
++{"drdpq", XRC(63,770,0), X_MASK, POWER6, PPCNONE, {FRT, FRB}},
++{"drdpq.", XRC(63,770,1), X_MASK, POWER6, PPCNONE, {FRT, FRB}},
++
++{"dcffixq", XRC(63,802,0), X_MASK, POWER6, PPCNONE, {FRT, FRB}},
++{"dcffixq.", XRC(63,802,1), X_MASK, POWER6, PPCNONE, {FRT, FRB}},
++
++{"fctid", XRC(63,814,0), XRA_MASK, PPC64, PPCNONE, {FRT, FRB}},
++{"fctid.", XRC(63,814,1), XRA_MASK, PPC64, PPCNONE, {FRT, FRB}},
++
++{"fctidz", XRC(63,815,0), XRA_MASK, PPC64, PPCNONE, {FRT, FRB}},
++{"fctidz.", XRC(63,815,1), XRA_MASK, PPC64, PPCNONE, {FRT, FRB}},
++
++{"denbcdq", XRC(63,834,0), X_MASK, POWER6, PPCNONE, {S, FRT, FRB}},
++{"denbcdq.", XRC(63,834,1), X_MASK, POWER6, PPCNONE, {S, FRT, FRB}},
++
++{"fcfid", XRC(63,846,0), XRA_MASK, PPC64, PPCNONE, {FRT, FRB}},
++{"fcfid.", XRC(63,846,1), XRA_MASK, PPC64, PPCNONE, {FRT, FRB}},
++
++{"diexq", XRC(63,866,0), X_MASK, POWER6, PPCNONE, {FRT, FRA, FRB}},
++{"diexq.", XRC(63,866,1), X_MASK, POWER6, PPCNONE, {FRT, FRA, FRB}},
+
+-{"fcfid", XRC(63,846,0), XRA_MASK, PPC64, {FRT, FRB}},
+-{"fcfid.", XRC(63,846,1), XRA_MASK, PPC64, {FRT, FRB}},
++{"fctidu", XRC(63,942,0), XRA_MASK, POWER7, PPCNONE, {FRT, FRB}},
++{"fctidu.", XRC(63,942,1), XRA_MASK, POWER7, PPCNONE, {FRT, FRB}},
+
+-{"diexq", XRC(63,866,0), X_MASK, POWER6, {FRT, FRA, FRB}},
+-{"diexq.", XRC(63,866,1), X_MASK, POWER6, {FRT, FRA, FRB}},
++{"fctiduz", XRC(63,943,0), XRA_MASK, POWER7, PPCNONE, {FRT, FRB}},
++{"fctiduz.", XRC(63,943,1), XRA_MASK, POWER7, PPCNONE, {FRT, FRB}},
+
++{"fcfidu", XRC(63,974,0), XRA_MASK, POWER7, PPCNONE, {FRT, FRB}},
++{"fcfidu.", XRC(63,974,1), XRA_MASK, POWER7, PPCNONE, {FRT, FRB}},
+ };
+
+ const int powerpc_num_opcodes =