CRUX-ARM : Home

Home :: Documentation :: Download :: Development :: Community :: Ports :: Packages :: Bugs :: Links :: About :: Donors
Added Makefile and vars.mk which are also uptodate:
authorJose V Beneyto <sepen@crux.nu>
Mon, 7 Dec 2009 23:55:04 +0000 (00:55 +0100)
committerJose V Beneyto <sepen@crux.nu>
Mon, 7 Dec 2009 23:55:04 +0000 (00:55 +0100)
- linux-headers 2.6.30.1
- libgmp 4.3.1
- libmpfr 2.4.2
- glibc 2.10.1
- gcc 4.2.4

Makefile [new file with mode: 0644]
vars.mk [new file with mode: 0644]
work/binutils-2.19.1-branch_update-5.patch [new file with mode: 0644]

diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..d209adc
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,269 @@
+#
+# Makefile
+#
+
+include vars.mk
+
+.PHONY: all clean distclean
+
+all: linux-headers libgmp libmpfr binutils gcc-static glibc gcc-final test
+
+clean: linux-headers-clean libgmp-clean libmpfr-clean binutils-clean gcc-static-clean glibc-clean gcc-final-clean test-clean
+
+distclean: clean linux-headers-distclean libgmp-distclean libmpfr-distclean binutils-distclean gcc-static-distclean glibc-distclean gcc-final-distclean test-distclean
+
+
+# LINUX HEADERS
+$(WORK)/linux-$(KERNEL_HEADERS_VERSION).tar.bz2:
+       wget -P $(WORK) -c ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$(KERNEL_HEADERS_VERSION).tar.bz2
+
+$(WORK)/linux-$(KERNEL_HEADERS_VERSION): $(WORK)/linux-$(KERNEL_HEADERS_VERSION).tar.bz2
+       tar -C $(WORK) -xvjf $(WORK)/linux-$(KERNEL_HEADERS_VERSION).tar.bz2
+       touch $(WORK)/linux-$(KERNEL_HEADERS_VERSION)
+
+$(CLFS)/usr/include/asm: $(WORK)/linux-$(KERNEL_HEADERS_VERSION)
+       mkdir -p $(CLFS)/usr/include
+       cd $(WORK)/linux-$(KERNEL_HEADERS_VERSION) && \
+               make mrproper && \
+               make ARCH=arm headers_check && \
+               make ARCH=arm INSTALL_HDR_PATH=$(CLFS)/usr headers_install
+       touch $(CLFS)/usr/include/asm
+
+linux-headers: $(CLFS)/usr/include/asm
+
+linux-headers-clean:
+       rm -vrf $(WORK)/linux-$(KERNEL_HEADERS_VERSION)
+
+linux-headers-distclean: linux-headers-clean
+       rm -vf $(WORK)/linux-$(KERNEL_HEADERS_VERSION).tar.bz2
+
+
+# LIBGMP
+$(WORK)/gmp-$(LIBGMP_VERSION).tar.bz2:
+       wget -P $(WORK) -c ftp://ftp.gnu.org/gnu/gmp/gmp-$(LIBGMP_VERSION).tar.bz2
+
+$(WORK)/gmp-$(LIBGMP_VERSION): $(WORK)/gmp-$(LIBGMP_VERSION).tar.bz2
+       tar -C $(WORK) -xvjf $(WORK)/gmp-$(LIBGMP_VERSION).tar.bz2
+       touch $(WORK)/gmp-$(LIBGMP_VERSION)
+
+$(WORK)/build-libgmp: $(WORK)/gmp-$(LIBGMP_VERSION)
+       mkdir -p $(WORK)/build-libgmp
+       touch $(WORK)/build-libgmp
+
+$(CROSSTOOLS)/lib/libgmp.so: $(WORK)/build-libgmp
+       cd $(WORK)/build-libgmp && \
+               unset CFLAGS && unset CXXFLAGS && \
+               CPPFLAGS=-fexceptions \
+               $(WORK)/gmp-$(LIBGMP_VERSION)/configure --prefix=$(CROSSTOOLS) --enable-cxx && \
+               make && make install || exit 1
+       touch $(CROSSTOOLS)/lib/libgmp.so
+
+libgmp: $(CROSSTOOLS)/lib/libgmp.so
+
+libgmp-clean:
+       rm -vrf $(WORK)/build-libgmp $(WORK)/gmp-$(LIBGMP_VERSION)
+
+libgmp-distclean: libgmp-clean
+       rm -vrf $(WORK)/gmp-$(LIBGMP_VERSION).tar.bz2
+
+
+# LIBMPFR
+$(WORK)/mpfr-$(LIBMPFR_VERSION).tar.bz2:
+       wget -P $(WORK) -c http://www.mpfr.org/mpfr-current/mpfr-$(LIBMPFR_VERSION).tar.bz2
+
+$(WORK)/mpfr-$(LIBMPFR_VERSION): $(WORK)/mpfr-$(LIBMPFR_VERSION).tar.bz2
+       tar -C $(WORK) -xvjf $(WORK)/mpfr-$(LIBMPFR_VERSION).tar.bz2
+       touch $(WORK)/mpfr-$(LIBMPFR_VERSION)
+
+$(WORK)/build-libmpfr: $(WORK)/mpfr-$(LIBMPFR_VERSION)
+       mkdir -p $(WORK)/build-libmpfr
+       touch $(WORK)/build-libmpfr
+
+$(CROSSTOOLS)/lib/libmpfr.so: $(WORK)/build-libmpfr
+       cd $(WORK)/build-libmpfr && \
+               unset CFLAGS && unset CXXFLAGS && \
+               LDFLAGS="-Wl,-rpath,$(CROSSTOOLS)/lib" && \
+               $(WORK)/mpfr-$(LIBMPFR_VERSION)/configure --prefix=$(CROSSTOOLS) --enable-shared --with-gmp=$(CROSSTOOLS) && \
+               make && make install || exit 1
+       touch $(CROSSTOOLS)/lib/libmpfr.so
+
+libmpfr: $(CROSSTOOLS)/lib/libmpfr.so
+
+libmpfr-clean:
+       rm -vrf $(WORK)/build-libmpfr $(WORK)/mpfr-$(LIBMPFR_VERSION)
+
+libmpfr-distclean: libmpfr-clean
+       rm -vrf $(WORK)/mpfr-$(LIBMPFR_VERSION).tar.bz2
+
+
+# BINUTILS
+$(WORK)/binutils-$(BINUTILS_VERSION).tar.bz2:
+       wget -P $(WORK) -c ftp://ftp.gnu.org/gnu/binutils/binutils-$(BINUTILS_VERSION).tar.bz2
+
+$(WORK)/binutils-$(BINUTILS_VERSION): $(WORK)/binutils-$(BINUTILS_VERSION).tar.bz2 $(WORK)/binutils-$(BINUTILS_VERSION)-branch_update-5.patch
+       tar -C $(WORK) -xvjf $(WORK)/binutils-$(BINUTILS_VERSION).tar.bz2
+       cd $(WORK)/binutils-$(BINUTILS_VERSION) && \
+               patch -p1 -i $(WORK)/binutils-$(BINUTILS_VERSION)-branch_update-5.patch
+       touch $(WORK)/binutils-$(BINUTILS_VERSION)
+
+$(WORK)/build-binutils: $(WORK)/binutils-$(BINUTILS_VERSION)
+       mkdir -p $(WORK)/build-binutils
+       touch $(WORK)/build-binutils-build
+
+$(CLFS)/usr/include/libiberty.h: $(WORK)/build-binutils
+       cd $(WORK)/build-binutils && \
+               unset CFLAGS && unset CXXFLAGS && \
+               AR=ar AS=as \
+               $(WORK)/binutils-$(BINUTILS_VERSION)/configure --prefix=$(CROSSTOOLS) \
+               --host=$(HOST) --target=$(TARGET) --with-sysroot=$(CLFS) \
+               --disable-nls --enable-shared --disable-multilib && \
+               make configure-host && make && make install || exit 1
+       cp -va $(WORK)/binutils-$(BINUTILS_VERSION)/include/libiberty.h $(CLFS)/usr/include
+       touch $(CLFS)/usr/include/libiberty.h
+               
+binutils: linux-headers $(CLFS)/usr/include/libiberty.h
+
+binutils-clean:
+       rm -vrf $(WORK)/build-binutils $(WORK)/binutils-$(BINUTILS_VERSION)
+
+binutils-distclean: binutils-clean
+       rm -f $(WORK)/binutils-$(BINUTILS_VERSION).tar.bz2
+
+
+# GCC-STATIC
+$(WORK)/gcc-$(GCC_VERSION).tar.bz2:
+       wget -P $(WORK) -c ftp://sources.redhat.com/pub/gcc/releases/gcc-$(GCC_VERSION)/gcc-$(GCC_VERSION).tar.bz2
+
+$(WORK)/gcc-$(GCC_VERSION): $(WORK)/gcc-$(GCC_VERSION).tar.bz2
+       tar -C $(WORK) -xvjf $(WORK)/gcc-$(GCC_VERSION).tar.bz2
+       touch $(WORK)/gcc-$(GCC_VERSION)
+
+$(WORK)/build-gcc-static: $(WORK)/gcc-$(GCC_VERSION)
+       mkdir -p $(WORK)/build-gcc-static
+       touch $(WORK)/build-gcc-static
+
+$(CROSSTOOLS)/lib/gcc: $(WORK)/build-gcc-static $(WORK)/gcc-$(GCC_VERSION)
+       cd $(WORK)/build-gcc-static && \
+               unset CFLAGS && unset CXXFLAGS && \
+               AR=ar LDFLAGS="-Wl,-rpath,$(CROSSTOOLS)/lib" \
+               $(WORK)/gcc-$(GCC_VERSION)/configure --prefix=$(CROSSTOOLS) \
+               --build=$(HOST) --host=$(HOST) --target=$(TARGET) \
+               --disable-multilib --with-sysroot=$(CLFS) --disable-nls \
+               --without-headers --with-newlib --disable-decimal-float \
+               --disable-libgomp --disable-libmudflap --disable-libssp \
+               --with-mpfr=$(CROSSTOOLS) --with-gmp=$(CROSSTOOLS) \
+               --disable-shared --disable-threads --enable-languages=c && \
+               make && make install || exit 1
+       touch $(CROSSTOOLS)/lib/gcc
+
+gcc-static: linux-headers libgmp libmpfr binutils $(CROSSTOOLS)/lib/gcc
+
+gcc-static-clean:
+       rm -vrf $(WORK)/build-gcc-static $(WORK)/gcc-$(GCC_VERSION)
+
+gcc-static-distclean: gcc-static-clean
+       rm -vf $(WORK)/gcc-$(GCC_VERSION).tar.bz2
+
+
+# GLIBC
+$(WORK)/glibc-$(GLIBC_VERSION).tar.bz2:
+       wget -P $(WORK) -c ftp://ftp.gnu.org/gnu/glibc/glibc-$(GLIBC_VERSION).tar.bz2
+
+$(WORK)/glibc-ports-$(GLIBC_VERSION).tar.bz2:
+       wget -P $(WORK) -c ftp://ftp.gnu.org/gnu/glibc/glibc-ports-$(GLIBC_VERSION).tar.bz2
+$(WORK)/glibc-$(GLIBC_VERSION): $(WORK)/glibc-$(GLIBC_VERSION).tar.bz2 $(WORK)/glibc-ports-$(GLIBC_VERSION).tar.bz2
+
+       tar -C $(WORK) -xvjf $(WORK)/glibc-$(GLIBC_VERSION).tar.bz2
+       cd $(WORK)/glibc-$(GLIBC_VERSION) && \
+               tar xvjf $(WORK)/glibc-ports-$(GLIBC_VERSION).tar.bz2 && \
+               mv glibc-ports-$(GLIBC_VERSION) ports && \
+               sed -e 's/-lgcc_eh//g' -i Makeconfig
+       touch $(WORK)/glibc-$(GLIBC_VERSION)
+
+$(WORK)/build-glibc: $(WORK)/glibc-$(GLIBC_VERSION)
+       mkdir -p $(WORK)/build-glibc
+       touch $(WORK)/build-glibc
+       
+$(CLFS)/usr/lib/libc.so: $(WORK)/build-glibc $(WORK)/glibc-$(GLIBC_VERSION)
+       cd $(WORK)/build-glibc && \
+               export PATH=$(CROSSTOOLS)/bin:$$PATH && \
+               echo "libc_cv_forced_unwind=yes" > config.cache && \
+               echo "libc_cv_c_cleanup=yes" >> config.cache && \
+               echo "libc_cv_gnu89_inline=yes" >> config.cache && \
+               echo "install_root=$(CLFS)" > configparms && \
+               unset CFLAGS && unset CXXFLAGS && \
+               BUILD_CC="gcc" CC="$(TARGET)-gcc" AR="$(TARGET)-ar" \
+               RANLIB="$(TARGET)-ranlib" \
+               $(WORK)/glibc-$(GLIBC_VERSION)/configure --prefix=/usr \
+               --libexecdir=/usr/lib/glibc --host=$(TARGET) --build=$(HOST) \
+               --disable-profile --enable-addons --with-tls --enable-kernel=2.6.0 \
+               --with-__thread --with-binutils=$(CROSSTOOLS)/bin \
+               --with-headers=$(CLFS)/usr/include --cache-file=config.cache && \
+               make && make install || exit 1
+       touch $(CLFS)/usr/lib/libc.so
+
+glibc: binutils gcc-static $(CLFS)/usr/lib/libc.so
+
+glibc-clean:
+       rm -vrf $(WORK)/build-glibc $(WORK)/glibc-$(GLIBC_VERSION)
+
+glibc-distclean: glibc-clean
+       rm -vf $(WORK)/glibc-$(GLIBC_VERSION).tar.bz2 $(WORK)/glibc-ports-$(GLIBC_VERSION).tar.bz2
+
+
+# GCC-FINAL
+$(WORK)/build-gcc-final: $(WORK)/gcc-$(GCC_VERSION)
+       mkdir -p $(WORK)/build-gcc-final
+       touch $(WORK)/build-gcc-final
+
+$(CLFS)/lib/gcc: $(WORK)/build-gcc-final $(WORK)/gcc-$(GCC_VERSION)
+       cd $(WORK)/build-gcc-final && \
+               export PATH=$$PATH:$(CROSSTOOLS)/bin && \
+               unset CFLAGS && unset CXXFLAGS && unset CC && \
+               AR=ar LDFLAGS="-Wl,-rpath,$(CROSSTOOLS)/lib" \
+               $(WORK)/gcc-$(GCC_VERSION)/configure --prefix=$(CROSSTOOLS) \
+               --build=$(HOST) --host=$(HOST) --target=$(TARGET) \
+               --disable-multilib --with-sysroot=$(CLFS) --disable-nls \
+               --enable-languages=c,c++ --enable-__cxa_atexit \
+               --with-mpfr=$(CROSSTOOLS) --with-gmp=$(CROSSTOOLS) \
+               --enable-c99 --enable-long-long --enable-threads=posix && \
+               make AS_FOR_TARGET="$(TARGET)-as" LD_FOR_TARGET="$(TARGET)-ld" && \
+               make install || exit 1
+       touch $(CLFS)/lib/gcc
+               
+gcc-final: libgmp libmpfr glibc $(CLFS)/lib/gcc
+
+gcc-final-clean:
+       rm -vrf $(WORK)/build-gcc-final $(WORK)/gcc-$(GCC_VERSION)
+
+gcc-final-distclean: gcc-final-clean
+       rm -vf $(WORK)/gcc-$(GCC_VERSION).tar.bz2
+
+
+# TEST THE TOOLCHAIN
+$(WORK)/build-test:
+       mkdir -p $(WORK)/build-test
+       touch $(WORK)/build-test
+
+$(WORK)/build-test/hello.c: $(WORK)/build-test
+       echo '#include <stdio.h>' > $(WORK)/build-test/hello.c
+       echo 'int main(int argc,char ** argv){printf("Hello World!\n");return 0;}' >> $(WORK)/build-test/hello.c
+       touch $(WORK)/build-test/hello.c
+
+$(WORK)/build-test/hello: $(WORK)/build-test/hello.c
+       cd $(WORK)/build-test && \
+               export PATH=$$PATH:$(CROSSTOOLS)/bin && \
+               unset CFLAGS && unset CXXFLAGS && unset CC && \
+               AR=ar LDFLAGS="-Wl,-rpath,$(CROSSTOOLS)/lib" \
+               $(TARGET)-gcc -Wall -o hello hello.c
+       [ "$$(file -b $(WORK)/build-test/hello | cut -d',' -f2 | sed 's| ||g' )" == "ARM"  ] || exit 1
+       touch $(WORK)/build-test/hello
+
+test: gcc-final $(WORK)/build-test/hello
+
+test-clean:
+       rm -vrf $(WORK)/build-test
+
+test-distclean: test-clean
+
+# End of file
diff --git a/vars.mk b/vars.mk
new file mode 100644 (file)
index 0000000..9db7953
--- /dev/null
+++ b/vars.mk
@@ -0,0 +1,20 @@
+#
+# vars.mk
+#
+
+HOST = $(shell echo $$MACHTYPE | sed "s/$$(echo $$MACHTYPE | cut -d- -f2)/cross/")
+TARGET = arm-unknown-linux-gnu
+
+PWD  = $(shell pwd)
+CLFS = $(PWD)/clfs
+CROSSTOOLS = $(PWD)/crosstools
+WORK = $(PWD)/work
+
+KERNEL_HEADERS_VERSION = 2.6.30.1
+LIBGMP_VERSION = 4.3.1
+LIBMPFR_VERSION = 2.4.2
+BINUTILS_VERSION = 2.19.1
+GCC_VERSION = 4.4.2
+GLIBC_VERSION = 2.10.1
+
+# End of file
diff --git a/work/binutils-2.19.1-branch_update-5.patch b/work/binutils-2.19.1-branch_update-5.patch
new file mode 100644 (file)
index 0000000..36882aa
--- /dev/null
@@ -0,0 +1,12468 @@
+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 =