From 69e0d4ccc0fd99ca2db6a9a1ed16b8afa9be1625 Mon Sep 17 00:00:00 2001 From: Jose V Beneyto Date: Tue, 8 Dec 2009 00:55:04 +0100 Subject: [PATCH] Added Makefile and vars.mk which are also uptodate: - linux-headers 2.6.30.1 - libgmp 4.3.1 - libmpfr 2.4.2 - glibc 2.10.1 - gcc 4.2.4 --- Makefile | 269 + vars.mk | 20 + work/binutils-2.19.1-branch_update-5.patch | 12468 +++++++++++++++++++ 3 files changed, 12757 insertions(+) create mode 100644 Makefile create mode 100644 vars.mk create mode 100644 work/binutils-2.19.1-branch_update-5.patch diff --git a/Makefile b/Makefile new file mode 100644 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 ' > $(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 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 index 0000000..36882aa --- /dev/null +++ b/work/binutils-2.19.1-branch_update-5.patch @@ -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 ++ ++ 2009-02-15 Alan Modra ++ * 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 ++ * 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 ++ * 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 ++ 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 ++ 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 ++ * 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 ++ 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 ++ * 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 ++ 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 ++ PR 7023 ++ * elf.c (bfd_section_from_shdr ): Fail on invalid sh_info. ++ ++ 2008-11-11 Alan Modra ++ 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 ++ * elf32-ppc.c (ppc_elf_merge_obj_attributes): Merge ++ Tag_GNU_Power_ABI_Struct_Return. ++ ++ 2008-10-03 Alan Modra ++ * 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 ++ * 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 ++ ++ PR 9841 ++ * elf32-avr.c: Handle case where no local symbos exist correctly. ++ ++2009-02-04 Eric B. Weddington ++ ++ * elf32-avr.c (avr_final_link_relocate): Allow avr25 to wraparound. ++ ++2009-02-03 Tristan Gingold ++ ++ * Makefile.am (RELEASE): Unset. ++ * Makefile.in: Regenerated. ++ + 2009-02-02 Tristan Gingold + + * 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; + } + +-/* 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 , + based on elf32-ppc.c by Ian Lance Taylor. + Largely rewritten by Alan Modra +@@ -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 ++ ++ 2008-12-04 Ben Elliston ++ * doc/binutils.texi (objdump): Update booke documentation. ++ * NEWS: Document user-visible changes to command line options. ++ ++ 2008-10-10 Nathan Froyd ++ * readelf.c (display_power_gnu_attribute): Decode ++ Tag_GNU_Power_ABI_Struct_Return. ++ ++ 2008-09-28 Alan Modra ++ * objcopy.c (setup_section): Set elf_group_id. ++ + 2008-12-23 Nick Clifton + + * 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 ++ ++ * Import this patch: ++ ++ 2008-11-14 Peter Jansen ++ ++ PR 7026 ++ * config/tc-arm.c: Ensure that all uses of as_bad have a ++ formatting string. ++ ++2009-03-04 Alan Modra ++ ++ * config/tc-ppc.c (md_assemble): APUinfo only for e500. ++ ++2009-03-02 Alan Modra ++ ++ 2009-02-26 Peter Bergner ++ * 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 ++ * config/tc-ppc.c (ppc_setup_opcodes): Remove PPC_OPCODE_NOPOWER4 test. ++ Test the new "deprecated" opcode field. ++ ++ 2008-12-04 Ben Elliston ++ * 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 ++ * config/tc-ppc.c (ppc_setup_opcodes): Simplify POWER4/NOPOWER4 test. ++ Remove POWER5 and POWER6 tests. ++ + 2009-01-14 Jakub Jelinek + + * 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 + + * 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 ++ ++ 2009-02-26 Peter Bergner ++ * 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 ++ * gas/ppc/e500mc.d ("lfdepx", "stfdepx"): Fix tests to expect a ++ floating point register. ++ ++ 2009-02-05 Peter Bergner ++ * 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 ++ * gas/ppc/power6.s ("mtfsf", "mtfsf.", "mtfsfi", "mtfsfi."): Add tests. ++ * gas/ppc/power6.d: Likewise. ++ ++ 2008-12-04 Ben Elliston ++ * 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 ++ * 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 + + * 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 : +- 0: 24 25 00 30 bce 1,4\*cr1\+gt,30 +- 4: 24 46 00 3d bcel 2,4\*cr1\+eq,40 +- 8: 24 67 00 52 bcea 3,4\*cr1\+so,50 +- 8: R_PPC(64)?_ADDR14 \.text\+0x50 +- c: 24 88 00 73 bcela 4,4\*cr2\+lt,70 +- 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 +- 24: 58 00 00 89 bel ac +- 28: 58 00 00 f6 bea f4 +- 28: R_PPC(64)?_ADDR24 \.text\+0xf4 +- 2c: 58 00 01 2b bela 128 +- 2c: R_PPC(64)?_ADDR24 \.text\+0x128 +- +-0+0000030 : +- 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 : +- 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 : +- 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 : +- 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 : +- 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 : +- 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 : +- 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 : +- 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 : ++ 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 : ++ 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 : ++ ++ 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 ++ 14: 40 01 00 00 bdnzf- gt,14 ++ 18: 40 85 00 02 blea- cr1,0 ++ 1c: 40 43 00 01 bdzfl- so,1c ++ 20: 41 47 00 03 bdztla- 4\*cr1\+so,0 ++ 24: 4e 80 04 20 bctr ++ 28: 4e 80 04 21 bctrl ++ 2c: 42 40 00 02 bdza- 0 ++ 30: 42 40 00 00 bdz- 30 ++ 34: 42 40 00 03 bdzla- 0 ++ 38: 42 40 00 01 bdzl- 38 ++ 3c: 41 82 00 00 beq- 3c ++ 40: 41 8a 00 02 beqa- cr2,0 ++ 44: 41 86 00 01 beql- cr1,44 ++ 48: 41 8e 00 03 beqla- cr3,0 ++ 4c: 40 80 00 00 bge- 4c ++ 50: 40 90 00 02 bgea- cr4,0 ++ 54: 40 88 00 01 bgel- cr2,54 ++ 58: 40 98 00 03 bgela- cr6,0 ++ 5c: 41 91 00 00 bgt- cr4,5c ++ 60: 41 99 00 02 bgta- cr6,0 ++ 64: 41 95 00 01 bgtl- cr5,64 ++ 68: 41 9d 00 03 bgtla- cr7,0 ++ 6c: 48 00 00 00 b 6c ++ 70: 48 00 00 03 bla 0 ++ 74: 40 81 00 00 ble- 74 ++ 78: 40 91 00 02 blea- cr4,0 ++ 7c: 40 89 00 01 blel- cr2,7c ++ 80: 40 99 00 03 blela- cr6,0 ++ 84: 48 00 00 01 bl 84 ++ 88: 41 80 00 00 blt- 88 ++ 8c: 41 88 00 02 blta- cr2,0 ++ 90: 41 84 00 01 bltl- cr1,90 ++ 94: 41 8c 00 03 bltla- cr3,0 ++ 98: 40 82 00 00 bne- 98 ++ 9c: 40 8a 00 02 bnea- cr2,0 ++ a0: 40 86 00 01 bnel- cr1,a0 ++ a4: 40 8e 00 03 bnela- cr3,0 ++ a8: 40 85 00 00 ble- cr1,a8 ++ ac: 40 95 00 02 blea- cr5,0 ++ b0: 40 8d 00 01 blel- cr3,b0 ++ b4: 40 9d 00 03 blela- cr7,0 ++ b8: 40 84 00 00 bge- cr1,b8 ++ bc: 40 94 00 02 bgea- cr5,0 ++ c0: 40 8c 00 01 bgel- cr3,c0 ++ c4: 40 9c 00 03 bgela- cr7,0 ++ c8: 40 93 00 00 bns- cr4,c8 ++ cc: 40 9b 00 02 bnsa- cr6,0 ++ d0: 40 97 00 01 bnsl- cr5,d0 ++ d4: 40 9f 00 03 bnsla- cr7,0 ++ d8: 41 93 00 00 bso- cr4,d8 ++ dc: 41 9b 00 02 bsoa- cr6,0 ++ e0: 41 97 00 01 bsol- cr5,e0 ++ e4: 41 9f 00 03 bsola- cr7,0 ++ 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 : ++0+00 : + 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 : ++ 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 : ++ 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 ++ ++ 2008-11-14 Nathan Sidwell ++ * internal.h (struct elf_segment_map): Add header_size field. ++ ++ 2008-10-10 Nathan Froyd ++ * ppc.h: Add Tag_GNU_Power_ABI_Struct_Return. ++ + 2008-08-20 Bob Wilson + + * 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 ++ ++ 2009-02-26 Peter Bergner ++ * ppc.h (PPC_OPCODE_POWER7): New. ++ ++ 2009-01-09 Peter Bergner ++ * ppc.h (struct powerpc_opcode): New field "deprecated". ++ (PPC_OPCODE_NOPOWER4): Delete. ++ + 2008-08-28 H.J. Lu + + * 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 ++ ++ 2009-02-16 Alan Modra ++ * 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 ++ PR 6931 ++ * ldemul.c (ldemul_place_orphan): Add "constraint" param. ++ * ldemul.h (ldemul_place_orphan): Update prototype. ++ (struct ld_emulation_xfer_struct ): 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 ++ PR 6931 ++ * ldemul.c (ldemul_place_orphan): Add "name" param. ++ * ldemul.h (ldemul_place_orphan): Update prototype. ++ (struct ld_emulation_xfer_struct ): 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 ++ * ldexp.c (fold_binary): Evaluate rhs when lhs not valid. ++ + 2009-02-02 Tristan Gingold + + * 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 <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 <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 <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 + + 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 ++ ++ 2009-02-01 Jan Kratochvil ++ * 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 ++ * 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 ++ * ld-elf/linkoncerdiff.d, ld-elf/linkoncerdiff1.s, ++ ld-elf/linkoncerdiff2.s: New. ++ ++ 2008-10-10 Nathan Froyd ++ * 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 + + * 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 ++ ++ * 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 ++ ++ 2009-02-26 Peter Bergner ++ * 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 ++ * ppc-opc.c (powerpc_opcodes) <"lfdepx", "stfdepx">: Fix the first ++ operand to be a float point register (FRT/FRS). ++ ++ 2009-02-05 Peter Bergner ++ * 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 ++ * ppc-dis.c (print_insn_powerpc): Skip insn if it is deprecated. ++ * ppc-opc.c (powerpc_opcodes) : Deprecate the two ++ operand form and enable the four operand form for POWER6 and later. ++ : Deprecate the two operand form and enable the ++ three operand form for POWER6 and later. ++ ++ 2009-01-09 Peter Bergner ++ * ppc-opc.c (PPCNONE): Define. ++ (NOPOWER4): Delete. ++ (powerpc_opcodes): Initialize the new "deprecated" field. ++ ++ 2008-12-04 Ben Elliston ++ * 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 + + * 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 *); + + /* 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; ++} + + /* 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 @@ + + /* 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 + +@@ -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 = -- 2.26.2