18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* ppc-dis.c -- Disassemble PowerPC instructions
25d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   Copyright 1994, 1995, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
35d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   Free Software Foundation, Inc.
48b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   Written by Ian Lance Taylor, Cygnus Support
58b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
68b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectThis file is part of GDB, GAS, and the GNU binutils.
78b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
88b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectGDB, GAS, and the GNU binutils are free software; you can redistribute
98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectthem and/or modify them under the terms of the GNU General Public
108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectLicense as published by the Free Software Foundation; either version
118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project2, or (at your option) any later version.
128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectGDB, GAS, and the GNU binutils are distributed in the hope that they
148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectwill be useful, but WITHOUT ANY WARRANTY; without even the implied
158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectwarranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectthe GNU General Public License for more details.
178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectYou should have received a copy of the GNU General Public License
192910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turneralong with this file; see the file COPYING.  If not,
202910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turnersee <http://www.gnu.org/licenses/>.  */
21cc33b2d8035092608c7cba4154e9c44452727e1bDavid 'Digit' Turner#include "disas/bfd.h"
225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BFD_DEFAULT_TARGET_SIZE 64
238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* ppc.h -- Header file for PowerPC opcode table
255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   Copyright 1994, 1995, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   2007 Free Software Foundation, Inc.
278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   Written by Ian Lance Taylor, Cygnus Support
288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectThis file is part of GDB, GAS, and the GNU binutils.
308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectGDB, GAS, and the GNU binutils are free software; you can redistribute
328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectthem and/or modify them under the terms of the GNU General Public
338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectLicense as published by the Free Software Foundation; either version
348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project1, or (at your option) any later version.
358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectGDB, GAS, and the GNU binutils are distributed in the hope that they
378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectwill be useful, but WITHOUT ANY WARRANTY; without even the implied
388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectwarranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectthe GNU General Public License for more details.
408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectYou should have received a copy of the GNU General Public License
422910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turneralong with this file; see the file COPYING.  If not,
432910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turnersee <http://www.gnu.org/licenses/>.  */
448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The opcode table is an array of struct powerpc_opcode.  */
468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct powerpc_opcode
488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The opcode name.  */
508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  const char *name;
518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The opcode itself.  Those bits which will be filled in with
538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     operands are zeroes.  */
545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  unsigned long opcode;
558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The opcode mask.  This is used by the disassembler.  This is a
578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     mask containing ones indicating those bits which must match the
588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     opcode field, and zeroes indicating those bits which need not
598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     match (and are presumably filled in by operands).  */
605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  unsigned long mask;
618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* One bit flags for the opcode.  These are used to indicate which
638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     specific processors support the instructions.  The defined values
648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     are listed below.  */
655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  unsigned long flags;
668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* An array of operand codes.  Each code is an index into the
688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     operand table.  They appear in the order which the operands must
698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     appear in assembly code, and are terminated by a zero.  */
708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned char operands[8];
718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project};
728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The table itself is sorted by major opcode number, and is otherwise
748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   in the order in which the disassembler should consider
758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   instructions.  */
768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern const struct powerpc_opcode powerpc_opcodes[];
778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern const int powerpc_num_opcodes;
788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Values defined for the flags field of a struct powerpc_opcode.  */
808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Opcode is defined for the PowerPC architecture.  */
825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_PPC			 1
838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Opcode is defined for the POWER (RS/6000) architecture.  */
855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_POWER		 2
868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Opcode is defined for the POWER2 (Rios 2) architecture.  */
885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_POWER2		 4
898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Opcode is only defined on 32 bit architectures.  */
915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_32			 8
928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Opcode is only defined on 64 bit architectures.  */
945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_64		      0x10
958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Opcode is supported by the Motorola PowerPC 601 processor.  The 601
978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   is assumed to support all PowerPC (PPC_OPCODE_PPC) instructions,
988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   but it also supports many additional POWER instructions.  */
995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_601		      0x20
1005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Opcode is supported in both the Power and PowerPC architectures
1025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   (ie, compiler's -mcpu=common or assembler's -mcom).  */
1035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_COMMON	      0x40
1045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Opcode is supported for any Power or PowerPC platform (this is
1065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   for the assembler's -many option, and it eliminates duplicates).  */
1075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_ANY		      0x80
1085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Opcode is supported as part of the 64-bit bridge.  */
1105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_64_BRIDGE	     0x100
1115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Opcode is supported by Altivec Vector Unit */
1135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_ALTIVEC	     0x200
1145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Opcode is supported by PowerPC 403 processor.  */
1165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_403		     0x400
1175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Opcode is supported by PowerPC BookE processor.  */
1195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_BOOKE	     0x800
1205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Opcode is only supported by 64-bit PowerPC BookE processor.  */
1225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_BOOKE64	    0x1000
1235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Opcode is supported by PowerPC 440 processor.  */
1255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_440		    0x2000
1265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Opcode is only supported by Power4 architecture.  */
1285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_POWER4	    0x4000
1295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Opcode isn't supported by Power4 architecture.  */
1315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_NOPOWER4	    0x8000
1325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Opcode is only supported by POWERPC Classic architecture.  */
1345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_CLASSIC	   0x10000
1355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Opcode is only supported by e500x2 Core.  */
1375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_SPE		   0x20000
1385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Opcode is supported by e500x2 Integer select APU.  */
1405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_ISEL		   0x40000
1415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Opcode is an e500 SPE floating point instruction.  */
1435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_EFS		   0x80000
1445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Opcode is supported by branch locking APU.  */
1465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_BRLOCK	  0x100000
1475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Opcode is supported by performance monitor APU.  */
1495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_PMR		  0x200000
1505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Opcode is supported by cache locking APU.  */
1525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_CACHELCK	  0x400000
1535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Opcode is supported by machine check APU.  */
1555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_RFMCI	  0x800000
1565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Opcode is only supported by Power5 architecture.  */
1585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_POWER5	 0x1000000
1595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Opcode is supported by PowerPC e300 family.  */
1615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_E300          0x2000000
1625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Opcode is only supported by Power6 architecture.  */
1645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_POWER6	 0x4000000
1655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Opcode is only supported by PowerPC Cell family.  */
1675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPCODE_CELL		 0x8000000
1688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* A macro to extract the major opcode from an instruction.  */
1708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PPC_OP(i) (((i) >> 26) & 0x3f)
1718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The operands table is an array of struct powerpc_operand.  */
1738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct powerpc_operand
1758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
1765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* A bitmask of bits in the operand.  */
1775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  unsigned int bitm;
1788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* How far the operand is left shifted in the instruction.
1805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner     -1 to indicate that BITM and SHIFT cannot be used to determine
1815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner     where the operand goes in the insn.  */
1828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  int shift;
1838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* Insertion function.  This is used by the assembler.  To insert an
1858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     operand value into an instruction, check this field.
1868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     If it is NULL, execute
1885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	 i |= (op & o->bitm) << o->shift;
1898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     (i is the instruction which we are filling in, o is a pointer to
1905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner     this structure, and op is the operand value).
1918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     If this field is not NULL, then simply call it with the
1938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     instruction and the operand value.  It will return the new value
1948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     of the instruction.  If the ERRMSG argument is not NULL, then if
1958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     the operand value is illegal, *ERRMSG will be set to a warning
1968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     string (the operand will be inserted in any case).  If the
1978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     operand value is legal, *ERRMSG will be unchanged (most operands
1988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     can accept any value).  */
1995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  unsigned long (*insert)
2005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    (unsigned long instruction, long op, int dialect, const char **errmsg);
2018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* Extraction function.  This is used by the disassembler.  To
2038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     extract this operand type from an instruction, check this field.
2048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     If it is NULL, compute
2065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	 op = (i >> o->shift) & o->bitm;
2075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	 if ((o->flags & PPC_OPERAND_SIGNED) != 0)
2085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	   sign_extend (op);
2098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     (i is the instruction, o is a pointer to this structure, and op
2105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner     is the result).
2118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     If this field is not NULL, then simply call it with the
2138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     instruction value.  It will return the value of the operand.  If
2148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     the INVALID argument is not NULL, *INVALID will be set to
2158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     non-zero if this operand type can not actually be extracted from
2168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     this operand (i.e., the instruction does not match).  If the
2178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     operand is valid, *INVALID will not be changed.  */
2185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  long (*extract) (unsigned long instruction, int dialect, int *invalid);
2198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* One bit syntax flags.  */
2215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  unsigned long flags;
2228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project};
2238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Elements in the table are retrieved by indexing with values from
2258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   the operands field of the powerpc_opcodes table.  */
2268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern const struct powerpc_operand powerpc_operands[];
2285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextern const unsigned int num_powerpc_operands;
2298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Values defined for the flags field of a struct powerpc_operand.  */
2318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This operand takes signed values.  */
2335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPERAND_SIGNED (0x1)
2348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This operand takes signed values, but also accepts a full positive
2368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   range of values when running in 32 bit mode.  That is, if bits is
2378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   16, it takes any value from -0x8000 to 0xffff.  In 64 bit mode,
2388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   this flag is ignored.  */
2395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPERAND_SIGNOPT (0x2)
2408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This operand does not actually exist in the assembler input.  This
2428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   is used to support extended mnemonics such as mr, for which two
2438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   operands fields are identical.  The assembler should call the
2448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   insert function with any op value.  The disassembler should call
2458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   the extract function, ignore the return value, and check the value
2468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   placed in the valid argument.  */
2475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPERAND_FAKE (0x4)
2488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The next operand should be wrapped in parentheses rather than
2508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   separated from this one by a comma.  This is used for the load and
2518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   store instructions which want their operands to look like
2528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project       reg,displacement(reg)
2538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   */
2545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPERAND_PARENS (0x8)
2558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This operand may use the symbolic names for the CR fields, which
2578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   are
2588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project       lt  0	gt  1	eq  2	so  3	un  3
2598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project       cr0 0	cr1 1	cr2 2	cr3 3
2608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project       cr4 4	cr5 5	cr6 6	cr7 7
2618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   These may be combined arithmetically, as in cr2*4+gt.  These are
2628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   only supported on the PowerPC, not the POWER.  */
2635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPERAND_CR (0x10)
2648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This operand names a register.  The disassembler uses this to print
2668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   register names with a leading 'r'.  */
2675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPERAND_GPR (0x20)
2685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
2695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Like PPC_OPERAND_GPR, but don't print a leading 'r' for r0.  */
2705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPERAND_GPR_0 (0x40)
2718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This operand names a floating point register.  The disassembler
2738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   prints these with a leading 'f'.  */
2745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPERAND_FPR (0x80)
2758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This operand is a relative branch displacement.  The disassembler
2778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   prints these symbolically if possible.  */
2785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPERAND_RELATIVE (0x100)
2798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This operand is an absolute branch address.  The disassembler
2818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   prints these symbolically if possible.  */
2825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPERAND_ABSOLUTE (0x200)
2838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This operand is optional, and is zero if omitted.  This is used for
2855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   example, in the optional BF field in the comparison instructions.  The
2868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   assembler must count the number of operands remaining on the line,
2878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   and the number of operands remaining for the opcode, and decide
2888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   whether this operand is present or not.  The disassembler should
2898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   print this operand out only if it is not zero.  */
2905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPERAND_OPTIONAL (0x400)
2918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This flag is only used with PPC_OPERAND_OPTIONAL.  If this operand
2938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   is omitted, then for the next operand use this operand value plus
2948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   1, ignoring the next operand field for the opcode.  This wretched
2958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   hack is needed because the Power rotate instructions can take
2968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   either 4 or 5 operands.  The disassembler should print this operand
2978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   out regardless of the PPC_OPERAND_OPTIONAL field.  */
2985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPERAND_NEXT (0x800)
2998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This operand should be regarded as a negative number for the
3018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   purposes of overflow checking (i.e., the normal most negative
3028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   number is disallowed and one more than the normal most positive
3038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   number is allowed).  This flag will only be set for a signed
3048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   operand.  */
3055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPERAND_NEGATIVE (0x1000)
3065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
3075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* This operand names a vector unit register.  The disassembler
3085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   prints these with a leading 'v'.  */
3095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPERAND_VR (0x2000)
3105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
3115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* This operand is for the DS field in a DS form instruction.  */
3125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPERAND_DS (0x4000)
3135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
3145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* This operand is for the DQ field in a DQ form instruction.  */
3155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPERAND_DQ (0x8000)
3165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
3175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Valid range of operand is 0..n rather than 0..n-1.  */
3185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC_OPERAND_PLUS1 (0x10000)
3198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The POWER and PowerPC assemblers use a few macros.  We keep them
3218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   with the operands table for simplicity.  The macro table is an
3228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   array of struct powerpc_macro.  */
3238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct powerpc_macro
3258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
3268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The macro name.  */
3278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  const char *name;
3288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The number of operands the macro takes.  */
3308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  unsigned int operands;
3318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* One bit flags for the opcode.  These are used to indicate which
3338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     specific processors support the instructions.  The values are the
3348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     same as those for the struct powerpc_opcode flags field.  */
3355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  unsigned long flags;
3368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* A format string to turn the macro into a normal instruction.
3388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     Each %N in the string is replaced with operand number N (zero
3398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     based).  */
3408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  const char *format;
3418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project};
3428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern const struct powerpc_macro powerpc_macros[];
3448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern const int powerpc_num_macros;
3458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* ppc-opc.c -- PowerPC opcode list
3475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   Copyright 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004,
3485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   2005, 2006, 2007 Free Software Foundation, Inc.
3498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   Written by Ian Lance Taylor, Cygnus Support
3508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   This file is part of GDB, GAS, and the GNU binutils.
3528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   GDB, GAS, and the GNU binutils are free software; you can redistribute
3545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   them and/or modify them under the terms of the GNU General Public
3555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   License as published by the Free Software Foundation; either version
3565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   2, or (at your option) any later version.
3578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   GDB, GAS, and the GNU binutils are distributed in the hope that they
3595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   will be useful, but WITHOUT ANY WARRANTY; without even the implied
3605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
3615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   the GNU General Public License for more details.
3628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   You should have received a copy of the GNU General Public License
3642910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner   along with this file; see the file COPYING.
3652910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner   If not, see <http://www.gnu.org/licenses/>.  */
3668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This file holds the PowerPC opcode table.  The opcode table
3688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   includes almost all of the extended instruction mnemonics.  This
3698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   permits the disassembler to use them, and simplifies the assembler
3708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   logic, at the cost of increasing the table size.  The table is
3718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   strictly constant data, so the compiler should be able to put it in
3728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   the .text section.
3738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   This file also holds the operand table.  All knowledge about
3758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   inserting operands into instructions and vice-versa is kept in this
3768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   file.  */
3778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Local insertion and extraction functions.  */
3798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
3805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic unsigned long insert_bat (unsigned long, long, int, const char **);
3815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic long extract_bat (unsigned long, int, int *);
3825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic unsigned long insert_bba (unsigned long, long, int, const char **);
3835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic long extract_bba (unsigned long, int, int *);
3845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic unsigned long insert_bdm (unsigned long, long, int, const char **);
3855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic long extract_bdm (unsigned long, int, int *);
3865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic unsigned long insert_bdp (unsigned long, long, int, const char **);
3875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic long extract_bdp (unsigned long, int, int *);
3885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic unsigned long insert_bo (unsigned long, long, int, const char **);
3895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic long extract_bo (unsigned long, int, int *);
3905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic unsigned long insert_boe (unsigned long, long, int, const char **);
3915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic long extract_boe (unsigned long, int, int *);
3925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic unsigned long insert_fxm (unsigned long, long, int, const char **);
3935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic long extract_fxm (unsigned long, int, int *);
3945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic unsigned long insert_mbe (unsigned long, long, int, const char **);
3955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic long extract_mbe (unsigned long, int, int *);
3965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic unsigned long insert_mb6 (unsigned long, long, int, const char **);
3975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic long extract_mb6 (unsigned long, int, int *);
3985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic long extract_nb (unsigned long, int, int *);
3995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic unsigned long insert_nsi (unsigned long, long, int, const char **);
4005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic long extract_nsi (unsigned long, int, int *);
4015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic unsigned long insert_ral (unsigned long, long, int, const char **);
4025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic unsigned long insert_ram (unsigned long, long, int, const char **);
4035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic unsigned long insert_raq (unsigned long, long, int, const char **);
4045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic unsigned long insert_ras (unsigned long, long, int, const char **);
4055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic unsigned long insert_rbs (unsigned long, long, int, const char **);
4065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic long extract_rbs (unsigned long, int, int *);
4075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic unsigned long insert_sh6 (unsigned long, long, int, const char **);
4085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic long extract_sh6 (unsigned long, int, int *);
4095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic unsigned long insert_spr (unsigned long, long, int, const char **);
4105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic long extract_spr (unsigned long, int, int *);
4115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic unsigned long insert_sprg (unsigned long, long, int, const char **);
4125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic long extract_sprg (unsigned long, int, int *);
4135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic unsigned long insert_tbr (unsigned long, long, int, const char **);
4145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic long extract_tbr (unsigned long, int, int *);
4158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The operands table.
4178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   The fields are bitm, shift, insert, extract, flags.
4195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
4205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   We used to put parens around the various additions, like the one
4215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   for BA just below.  However, that caused trouble with feeble
4225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   compilers with a limit on depth of a parenthesized expression, like
4235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   (reportedly) the compiler in Microsoft Developer Studio 5.  So we
4245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   omit the parens, since the macros are never used in a context where
4255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   the addition will be ambiguous.  */
4268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectconst struct powerpc_operand powerpc_operands[] =
4288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
4298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The zero index is used to indicate the end of the list of
4308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     operands.  */
4315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define UNUSED 0
4325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0, 0, NULL, NULL, 0 },
4338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The BA field in an XL form instruction.  */
4355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BA UNUSED + 1
4365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The BI field in a B form or XL form instruction.  */
4375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BI BA
4385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BI_MASK (0x1f << 16)
4395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 16, NULL, NULL, PPC_OPERAND_CR },
4408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The BA field in an XL form instruction when it must be the same
4428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     as the BT field in the same instruction.  */
4435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BAT BA + 1
4445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 16, insert_bat, extract_bat, PPC_OPERAND_FAKE },
4458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The BB field in an XL form instruction.  */
4475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BB BAT + 1
4488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BB_MASK (0x1f << 11)
4495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 11, NULL, NULL, PPC_OPERAND_CR },
4508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The BB field in an XL form instruction when it must be the same
4528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     as the BA field in the same instruction.  */
4535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BBA BB + 1
4545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 11, insert_bba, extract_bba, PPC_OPERAND_FAKE },
4558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The BD field in a B form instruction.  The lower two bits are
4578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     forced to zero.  */
4585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BD BBA + 1
4595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0xfffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
4608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The BD field in a B form instruction when absolute addressing is
4628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     used.  */
4635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BDA BD + 1
4645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0xfffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
4658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The BD field in a B form instruction when the - modifier is used.
4678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     This sets the y bit of the BO field appropriately.  */
4685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BDM BDA + 1
4695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0xfffc, 0, insert_bdm, extract_bdm,
4708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
4718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The BD field in a B form instruction when the - modifier is used
4738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     and absolute address is used.  */
4745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BDMA BDM + 1
4755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0xfffc, 0, insert_bdm, extract_bdm,
4768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
4778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The BD field in a B form instruction when the + modifier is used.
4798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     This sets the y bit of the BO field appropriately.  */
4805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BDP BDMA + 1
4815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0xfffc, 0, insert_bdp, extract_bdp,
4828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
4838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The BD field in a B form instruction when the + modifier is used
4858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     and absolute addressing is used.  */
4865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BDPA BDP + 1
4875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0xfffc, 0, insert_bdp, extract_bdp,
4888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
4898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
4908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The BF field in an X or XL form instruction.  */
4915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BF BDPA + 1
4925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The CRFD field in an X form instruction.  */
4935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define CRFD BF
4945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x7, 23, NULL, NULL, PPC_OPERAND_CR },
4955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
4965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The BF field in an X or XL form instruction.  */
4975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BFF BF + 1
4985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x7, 23, NULL, NULL, 0 },
4998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
5008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* An optional BF field.  This is used for comparison instructions,
5018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     in which an omitted BF field is taken as zero.  */
5025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define OBF BFF + 1
5035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x7, 23, NULL, NULL, PPC_OPERAND_CR | PPC_OPERAND_OPTIONAL },
5048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
5058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The BFA field in an X or XL form instruction.  */
5065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BFA OBF + 1
5075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x7, 18, NULL, NULL, PPC_OPERAND_CR },
5088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
5098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The BO field in a B form instruction.  Certain values are
5108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     illegal.  */
5115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BO BFA + 1
5128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BO_MASK (0x1f << 21)
5135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 21, insert_bo, extract_bo, 0 },
5148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
5158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The BO field in a B form instruction when the + or - modifier is
5168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     used.  This is like the BO field, but it must be even.  */
5175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BOE BO + 1
5185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1e, 21, insert_boe, extract_boe, 0 },
5195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
5205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BH BOE + 1
5215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x3, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
5228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
5238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The BT field in an X or XL form instruction.  */
5245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BT BH + 1
5255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 21, NULL, NULL, PPC_OPERAND_CR },
5268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
5278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The condition register number portion of the BI field in a B form
5288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     or XL form instruction.  This is used for the extended
5298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     conditional branch mnemonics, which set the lower two bits of the
5308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     BI field.  This field is optional.  */
5315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define CR BT + 1
5325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x7, 18, NULL, NULL, PPC_OPERAND_CR | PPC_OPERAND_OPTIONAL },
5335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
5345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The CRB field in an X form instruction.  */
5355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define CRB CR + 1
5365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The MB field in an M form instruction.  */
5375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define MB CRB
5385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define MB_MASK (0x1f << 6)
5395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 6, NULL, NULL, 0 },
5405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
5415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The CRFS field in an X form instruction.  */
5425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define CRFS CRB + 1
5435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x7, 0, NULL, NULL, PPC_OPERAND_CR },
5445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
5455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The CT field in an X form instruction.  */
5465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define CT CRFS + 1
5475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The MO field in an mbar instruction.  */
5485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define MO CT
5495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
5508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
5518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The D field in a D form instruction.  This is a displacement off
5528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     a register, and implies that the next operand is a register in
5538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     parentheses.  */
5545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define D CT + 1
5555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0xffff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
5565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
5575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The DE field in a DE form instruction.  This is like D, but is 12
5585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner     bits only.  */
5595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define DE D + 1
5605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0xfff, 4, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
5615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
5625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The DES field in a DES form instruction.  This is like DS, but is 14
5635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner     bits only (12 stored.)  */
5645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define DES DE + 1
5655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x3ffc, 2, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
5665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
5675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The DQ field in a DQ form instruction.  This is like D, but the
5685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner     lower four bits are forced to zero. */
5695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define DQ DES + 1
5705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0xfff0, 0, NULL, NULL,
5715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DQ },
5728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
5738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The DS field in a DS form instruction.  This is like D, but the
5748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     lower two bits are forced to zero.  */
5752910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner#undef DS
5765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define DS DQ + 1
5775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0xfffc, 0, NULL, NULL,
5785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DS },
5795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
5805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The E field in a wrteei instruction.  */
5815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define E DS + 1
5825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1, 15, NULL, NULL, 0 },
5838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
5848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The FL1 field in a POWER SC form instruction.  */
5855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define FL1 E + 1
5865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The U field in an X form instruction.  */
5875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define U FL1
5885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0xf, 12, NULL, NULL, 0 },
5898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
5908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The FL2 field in a POWER SC form instruction.  */
5915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define FL2 FL1 + 1
5925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x7, 2, NULL, NULL, 0 },
5938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
5948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The FLM field in an XFL form instruction.  */
5955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define FLM FL2 + 1
5965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0xff, 17, NULL, NULL, 0 },
5978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
5988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The FRA field in an X or A form instruction.  */
5995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define FRA FLM + 1
6008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define FRA_MASK (0x1f << 16)
6015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 16, NULL, NULL, PPC_OPERAND_FPR },
6028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The FRB field in an X or A form instruction.  */
6045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define FRB FRA + 1
6058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define FRB_MASK (0x1f << 11)
6065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 11, NULL, NULL, PPC_OPERAND_FPR },
6078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The FRC field in an A form instruction.  */
6095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define FRC FRB + 1
6108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define FRC_MASK (0x1f << 6)
6115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 6, NULL, NULL, PPC_OPERAND_FPR },
6128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The FRS field in an X form instruction or the FRT field in a D, X
6148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     or A form instruction.  */
6155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define FRS FRC + 1
6165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define FRT FRS
6175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 21, NULL, NULL, PPC_OPERAND_FPR },
6188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The FXM field in an XFX instruction.  */
6205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define FXM FRS + 1
6215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0xff, 12, insert_fxm, extract_fxm, 0 },
6225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
6235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* Power4 version for mfcr.  */
6245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define FXM4 FXM + 1
6255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0xff, 12, insert_fxm, extract_fxm, PPC_OPERAND_OPTIONAL },
6268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The L field in a D or X form instruction.  */
6285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define L FXM4 + 1
6295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
6308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The LEV field in a POWER SVC form instruction.  */
6325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define SVC_LEV L + 1
6335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x7f, 5, NULL, NULL, 0 },
6345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
6355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The LEV field in an SC form instruction.  */
6365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define LEV SVC_LEV + 1
6375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x7f, 5, NULL, NULL, PPC_OPERAND_OPTIONAL },
6388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The LI field in an I form instruction.  The lower two bits are
6408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     forced to zero.  */
6415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define LI LEV + 1
6425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
6438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The LI field in an I form instruction when used as an absolute
6458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     address.  */
6465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define LIA LI + 1
6475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
6488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The LS field in an X (sync) form instruction.  */
6505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define LS LIA + 1
6515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x3, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
6528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The ME field in an M form instruction.  */
6545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ME LS + 1
6558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ME_MASK (0x1f << 1)
6565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 1, NULL, NULL, 0 },
6578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The MB and ME fields in an M form instruction expressed a single
6598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     operand which is a bitmask indicating which bits to select.  This
6608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     is a two operand form using PPC_OPERAND_NEXT.  See the
6618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     description in opcode/ppc.h for what this means.  */
6625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define MBE ME + 1
6635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 6, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_NEXT },
6645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { -1, 0, insert_mbe, extract_mbe, 0 },
6658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The MB or ME field in an MD or MDS form instruction.  The high
6678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     bit is wrapped to the low end.  */
6685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define MB6 MBE + 2
6695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ME6 MB6
6708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MB6_MASK (0x3f << 5)
6715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x3f, 5, insert_mb6, extract_mb6, 0 },
6728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The NB field in an X form instruction.  The value 32 is stored as
6748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     0.  */
6755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define NB MB6 + 1
6765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 11, NULL, extract_nb, PPC_OPERAND_PLUS1 },
6778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The NSI field in a D form instruction.  This is the same as the
6798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     SI field, only negated.  */
6805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define NSI NB + 1
6815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0xffff, 0, insert_nsi, extract_nsi,
6828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
6838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The RA field in an D, DS, DQ, X, XO, M, or MDS form instruction.  */
6855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define RA NSI + 1
6868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RA_MASK (0x1f << 16)
6875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR },
6885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
6895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* As above, but 0 in the RA field means zero, not r0.  */
6905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define RA0 RA + 1
6915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR_0 },
6925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
6935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The RA field in the DQ form lq instruction, which has special
6945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner     value restrictions.  */
6955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define RAQ RA0 + 1
6965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 16, insert_raq, NULL, PPC_OPERAND_GPR_0 },
6978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
6988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The RA field in a D or X form instruction which is an updating
6998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     load, which means that the RA field may not be zero and may not
7008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     equal the RT field.  */
7015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define RAL RAQ + 1
7025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 16, insert_ral, NULL, PPC_OPERAND_GPR_0 },
7038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
7048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The RA field in an lmw instruction, which has special value
7058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     restrictions.  */
7065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define RAM RAL + 1
7075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 16, insert_ram, NULL, PPC_OPERAND_GPR_0 },
7088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
7098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The RA field in a D or X form instruction which is an updating
7108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     store or an updating floating point load, which means that the RA
7118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     field may not be zero.  */
7125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define RAS RAM + 1
7135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 16, insert_ras, NULL, PPC_OPERAND_GPR_0 },
7145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
7155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The RA field of the tlbwe instruction, which is optional.  */
7165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define RAOPT RAS + 1
7175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
7188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
7198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The RB field in an X, XO, M, or MDS form instruction.  */
7205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define RB RAOPT + 1
7218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RB_MASK (0x1f << 11)
7225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR },
7238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
7248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The RB field in an X form instruction when it must be the same as
7258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     the RS field in the instruction.  This is used for extended
7268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     mnemonics like mr.  */
7275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define RBS RB + 1
7285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 11, insert_rbs, extract_rbs, PPC_OPERAND_FAKE },
7298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
7308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The RS field in a D, DS, X, XFX, XS, M, MD or MDS form
7318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     instruction or the RT field in a D, DS, X, XFX or XO form
7328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     instruction.  */
7335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define RS RBS + 1
7345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define RT RS
7358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RT_MASK (0x1f << 21)
7365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR },
7375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
7385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The RS and RT fields of the DS form stq instruction, which have
7395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner     special value restrictions.  */
7405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define RSQ RS + 1
7415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define RTQ RSQ
7425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1e, 21, NULL, NULL, PPC_OPERAND_GPR_0 },
7435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
7445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The RS field of the tlbwe instruction, which is optional.  */
7455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define RSO RSQ + 1
7465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define RTO RSO
7475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
7488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
7498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The SH field in an X or M form instruction.  */
7505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define SH RSO + 1
7518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SH_MASK (0x1f << 11)
7525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The other UIMM field in a EVX form instruction.  */
7535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define EVUIMM SH
7545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 11, NULL, NULL, 0 },
7558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
7568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The SH field in an MD form instruction.  This is split.  */
7575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define SH6 SH + 1
7588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SH6_MASK ((0x1f << 11) | (1 << 1))
7595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x3f, -1, insert_sh6, extract_sh6, 0 },
7605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
7615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The SH field of the tlbwe instruction, which is optional.  */
7625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define SHO SH6 + 1
7635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
7648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
7658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The SI field in a D form instruction.  */
7665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define SI SHO + 1
7675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED },
7688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
7698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The SI field in a D form instruction when we accept a wide range
7708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     of positive values.  */
7715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define SISIGNOPT SI + 1
7725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
7738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
7748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The SPR field in an XFX form instruction.  This is flipped--the
7758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     lower 5 bits are stored in the upper 5 and vice- versa.  */
7765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define SPR SISIGNOPT + 1
7775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PMR SPR
7788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SPR_MASK (0x3ff << 11)
7795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x3ff, 11, insert_spr, extract_spr, 0 },
7808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
7818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The BAT index number in an XFX form m[ft]ibat[lu] instruction.  */
7825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define SPRBAT SPR + 1
7838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SPRBAT_MASK (0x3 << 17)
7845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x3, 17, NULL, NULL, 0 },
7858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
7868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The SPRG register number in an XFX form m[ft]sprg instruction.  */
7875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define SPRG SPRBAT + 1
7885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 16, insert_sprg, extract_sprg, 0 },
7898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
7908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The SR field in an X form instruction.  */
7915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define SR SPRG + 1
7925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0xf, 16, NULL, NULL, 0 },
7935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
7945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The STRM field in an X AltiVec form instruction.  */
7955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define STRM SR + 1
7965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x3, 21, NULL, NULL, 0 },
7978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
7988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The SV field in a POWER SC form instruction.  */
7995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define SV STRM + 1
8005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x3fff, 2, NULL, NULL, 0 },
8018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
8028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The TBR field in an XFX form instruction.  This is like the SPR
8038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     field, but it is optional.  */
8045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define TBR SV + 1
8055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x3ff, 11, insert_tbr, extract_tbr, PPC_OPERAND_OPTIONAL },
8068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
8078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The TO field in a D or X form instruction.  */
8085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define TO TBR + 1
8098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TO_MASK (0x1f << 21)
8105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 21, NULL, NULL, 0 },
8118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
8128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* The UI field in a D form instruction.  */
8135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define UI TO + 1
8145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0xffff, 0, NULL, NULL, 0 },
8155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
8165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The VA field in a VA, VX or VXR form instruction.  */
8175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define VA UI + 1
8185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 16, NULL, NULL, PPC_OPERAND_VR },
8195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
8205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The VB field in a VA, VX or VXR form instruction.  */
8215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define VB VA + 1
8225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 11, NULL, NULL, PPC_OPERAND_VR },
8235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
8245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The VC field in a VA form instruction.  */
8255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define VC VB + 1
8265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 6, NULL, NULL, PPC_OPERAND_VR },
8275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
8285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The VD or VS field in a VA, VX, VXR or X form instruction.  */
8295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define VD VC + 1
8305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define VS VD
8315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 21, NULL, NULL, PPC_OPERAND_VR },
8325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
8335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The SIMM field in a VX form instruction.  */
8345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define SIMM VD + 1
8355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 16, NULL, NULL, PPC_OPERAND_SIGNED},
8365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
8375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The UIMM field in a VX form instruction, and TE in Z form.  */
8385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define UIMM SIMM + 1
8395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define TE UIMM
8405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1f, 16, NULL, NULL, 0 },
8415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
8425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The SHB field in a VA form instruction.  */
8435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define SHB UIMM + 1
8445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0xf, 6, NULL, NULL, 0 },
8455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
8465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The other UIMM field in a half word EVX form instruction.  */
8475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define EVUIMM_2 SHB + 1
8485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x3e, 10, NULL, NULL, PPC_OPERAND_PARENS },
8495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
8505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The other UIMM field in a word EVX form instruction.  */
8515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define EVUIMM_4 EVUIMM_2 + 1
8525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x7c, 9, NULL, NULL, PPC_OPERAND_PARENS },
8535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
8545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The other UIMM field in a double EVX form instruction.  */
8555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define EVUIMM_8 EVUIMM_4 + 1
8565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0xf8, 8, NULL, NULL, PPC_OPERAND_PARENS },
8575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
8585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The WS field.  */
8595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define WS EVUIMM_8 + 1
8605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x7, 11, NULL, NULL, 0 },
8615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
8625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The L field in an mtmsrd or A form instruction or W in an X form.  */
8635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define A_L WS + 1
8645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define W A_L
8655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1, 16, NULL, NULL, PPC_OPERAND_OPTIONAL },
8665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
8675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define RMC A_L + 1
8685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x3, 9, NULL, NULL, 0 },
8695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
8705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define R RMC + 1
8715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1, 16, NULL, NULL, 0 },
8725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
8735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define SP R + 1
8745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x3, 19, NULL, NULL, 0 },
8755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
8765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define S SP + 1
8775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1, 20, NULL, NULL, 0 },
8785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
8795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* SH field starting at bit position 16.  */
8805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define SH16 S + 1
8815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The DCM and DGM fields in a Z form instruction.  */
8825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define DCM SH16
8835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define DGM DCM
8845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x3f, 10, NULL, NULL, 0 },
8855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
8865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The EH field in larx instruction.  */
8875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define EH SH16 + 1
8885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1, 0, NULL, NULL, PPC_OPERAND_OPTIONAL },
8895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
8905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* The L field in an mtfsf or XFL form instruction.  */
8915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XFL_L EH + 1
8925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  { 0x1, 25, NULL, NULL, PPC_OPERAND_OPTIONAL},
8938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project};
8948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
8955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerconst unsigned int num_powerpc_operands = (sizeof (powerpc_operands)
8965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner					   / sizeof (powerpc_operands[0]));
8975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
8988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The functions used to insert and extract complicated operands.  */
8998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The BA field in an XL form instruction when it must be the same as
9018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   the BT field in the same instruction.  This operand is marked FAKE.
9028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   The insertion function just copies the BT field into the BA field,
9038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   and the extraction function just checks that the fields are the
9048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   same.  */
9058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic unsigned long
9075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerinsert_bat (unsigned long insn,
9085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    long value ATTRIBUTE_UNUSED,
9095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    int dialect ATTRIBUTE_UNUSED,
9105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    const char **errmsg ATTRIBUTE_UNUSED)
9118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
9128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  return insn | (((insn >> 21) & 0x1f) << 16);
9138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
9148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic long
9165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextract_bat (unsigned long insn,
9175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int dialect ATTRIBUTE_UNUSED,
9185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int *invalid)
9198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
9205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if (((insn >> 21) & 0x1f) != ((insn >> 16) & 0x1f))
9218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    *invalid = 1;
9228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  return 0;
9238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
9248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The BB field in an XL form instruction when it must be the same as
9268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   the BA field in the same instruction.  This operand is marked FAKE.
9278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   The insertion function just copies the BA field into the BB field,
9288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   and the extraction function just checks that the fields are the
9298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   same.  */
9308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic unsigned long
9325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerinsert_bba (unsigned long insn,
9335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    long value ATTRIBUTE_UNUSED,
9345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    int dialect ATTRIBUTE_UNUSED,
9355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    const char **errmsg ATTRIBUTE_UNUSED)
9368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
9378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  return insn | (((insn >> 16) & 0x1f) << 11);
9388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
9398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic long
9415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextract_bba (unsigned long insn,
9425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int dialect ATTRIBUTE_UNUSED,
9435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int *invalid)
9448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
9455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if (((insn >> 16) & 0x1f) != ((insn >> 11) & 0x1f))
9468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    *invalid = 1;
9478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  return 0;
9488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
9498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The BD field in a B form instruction when the - modifier is used.
9518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   This modifier means that the branch is not expected to be taken.
9525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   For chips built to versions of the architecture prior to version 2
9535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   (ie. not Power4 compatible), we set the y bit of the BO field to 1
9545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   if the offset is negative.  When extracting, we require that the y
9555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   bit be 1 and that the offset be positive, since if the y bit is 0
9565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   we just want to print the normal form of the instruction.
9575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   Power4 compatible targets use two bits, "a", and "t", instead of
9585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   the "y" bit.  "at" == 00 => no hint, "at" == 01 => unpredictable,
9595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   "at" == 10 => not taken, "at" == 11 => taken.  The "t" bit is 00001
9605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   in BO field, the "a" bit is 00010 for branch on CR(BI) and 01000
9615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   for branch on CTR.  We only handle the taken/not-taken hint here.
9625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   Note that we don't relax the conditions tested here when
9635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   disassembling with -Many because insns using extract_bdm and
9645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   extract_bdp always occur in pairs.  One or the other will always
9655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   be valid.  */
9668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic unsigned long
9685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerinsert_bdm (unsigned long insn,
9695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    long value,
9705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    int dialect,
9715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    const char **errmsg ATTRIBUTE_UNUSED)
9728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
9735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if ((dialect & PPC_OPCODE_POWER4) == 0)
9745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    {
9755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      if ((value & 0x8000) != 0)
9765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	insn |= 1 << 21;
9775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    }
9785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  else
9795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    {
9805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      if ((insn & (0x14 << 21)) == (0x04 << 21))
9815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	insn |= 0x02 << 21;
9825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      else if ((insn & (0x14 << 21)) == (0x10 << 21))
9835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	insn |= 0x08 << 21;
9845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    }
9858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  return insn | (value & 0xfffc);
9868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
9878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
9888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic long
9895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextract_bdm (unsigned long insn,
9905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int dialect,
9915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int *invalid)
9928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
9935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if ((dialect & PPC_OPCODE_POWER4) == 0)
9945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    {
9955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      if (((insn & (1 << 21)) == 0) != ((insn & (1 << 15)) == 0))
9965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	*invalid = 1;
9975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    }
9988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  else
9995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    {
10005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      if ((insn & (0x17 << 21)) != (0x06 << 21)
10015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  && (insn & (0x1d << 21)) != (0x18 << 21))
10025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	*invalid = 1;
10035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    }
10045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
10055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
10068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
10078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
10088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The BD field in a B form instruction when the + modifier is used.
10098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   This is like BDM, above, except that the branch is expected to be
10108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   taken.  */
10118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
10128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic unsigned long
10135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerinsert_bdp (unsigned long insn,
10145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    long value,
10155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    int dialect,
10165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    const char **errmsg ATTRIBUTE_UNUSED)
10178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
10185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if ((dialect & PPC_OPCODE_POWER4) == 0)
10195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    {
10205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      if ((value & 0x8000) == 0)
10215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	insn |= 1 << 21;
10225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    }
10235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  else
10245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    {
10255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      if ((insn & (0x14 << 21)) == (0x04 << 21))
10265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	insn |= 0x03 << 21;
10275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      else if ((insn & (0x14 << 21)) == (0x10 << 21))
10285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	insn |= 0x09 << 21;
10295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    }
10308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  return insn | (value & 0xfffc);
10318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
10328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
10338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic long
10345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextract_bdp (unsigned long insn,
10355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int dialect,
10365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int *invalid)
10378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
10385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if ((dialect & PPC_OPCODE_POWER4) == 0)
10395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    {
10405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      if (((insn & (1 << 21)) == 0) == ((insn & (1 << 15)) == 0))
10415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	*invalid = 1;
10425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    }
10438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  else
10445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    {
10455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      if ((insn & (0x17 << 21)) != (0x07 << 21)
10465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  && (insn & (0x1d << 21)) != (0x19 << 21))
10475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	*invalid = 1;
10485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    }
10495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
10505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
10518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
10528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
10538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Check for legal values of a BO field.  */
10548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
10558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic int
10565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervalid_bo (long value, int dialect, int extract)
10578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
10585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if ((dialect & PPC_OPCODE_POWER4) == 0)
10598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    {
10605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      int valid;
10615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      /* Certain encodings have bits that are required to be zero.
10625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	 These are (z must be zero, y may be anything):
10635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     001zy
10645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     011zy
10655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     1z00y
10665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     1z01y
10675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     1z1zz
10685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      */
10695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      switch (value & 0x14)
10705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	{
10715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	default:
10725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	case 0:
10735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  valid = 1;
10745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  break;
10755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	case 0x4:
10765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  valid = (value & 0x2) == 0;
10775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  break;
10785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	case 0x10:
10795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  valid = (value & 0x8) == 0;
10805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  break;
10815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	case 0x14:
10825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  valid = value == 0x14;
10835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  break;
10845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	}
10855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      /* When disassembling with -Many, accept power4 encodings too.  */
10865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      if (valid
10875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  || (dialect & PPC_OPCODE_ANY) == 0
10885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  || !extract)
10895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	return valid;
10908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    }
10915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
10925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* Certain encodings have bits that are required to be zero.
10935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner     These are (z must be zero, a & t may be anything):
10945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	 0000z
10955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	 0001z
10965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	 0100z
10975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	 0101z
10985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	 001at
10995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	 011at
11005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	 1a00t
11015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	 1a01t
11025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	 1z1zz
11035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  */
11045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if ((value & 0x14) == 0)
11055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    return (value & 0x1) == 0;
11065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  else if ((value & 0x14) == 0x14)
11075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    return value == 0x14;
11085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  else
11095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    return 1;
11108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
11118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The BO field in a B form instruction.  Warn about attempts to set
11138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   the field to an illegal value.  */
11148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic unsigned long
11165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerinsert_bo (unsigned long insn,
11175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	   long value,
11185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	   int dialect,
11195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	   const char **errmsg)
11208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
11215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if (!valid_bo (value, dialect, 0))
11225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    *errmsg = _("invalid conditional option");
11238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  return insn | ((value & 0x1f) << 21);
11248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
11258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic long
11275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextract_bo (unsigned long insn,
11285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    int dialect,
11295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    int *invalid)
11308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
11315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  long value;
11328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  value = (insn >> 21) & 0x1f;
11345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if (!valid_bo (value, dialect, 1))
11358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    *invalid = 1;
11368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  return value;
11378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
11388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The BO field in a B form instruction when the + or - modifier is
11408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   used.  This is like the BO field, but it must be even.  When
11418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   extracting it, we force it to be even.  */
11428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic unsigned long
11445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerinsert_boe (unsigned long insn,
11455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    long value,
11465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    int dialect,
11475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    const char **errmsg)
11488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
11495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if (!valid_bo (value, dialect, 0))
11505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    *errmsg = _("invalid conditional option");
11515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  else if ((value & 1) != 0)
11525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    *errmsg = _("attempt to set y bit when using + or - modifier");
11535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
11548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  return insn | ((value & 0x1f) << 21);
11558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
11568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic long
11585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextract_boe (unsigned long insn,
11595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int dialect,
11605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int *invalid)
11618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
11625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  long value;
11638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  value = (insn >> 21) & 0x1f;
11655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if (!valid_bo (value, dialect, 1))
11668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    *invalid = 1;
11678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  return value & 0x1e;
11688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
11698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* FXM mask in mfcr and mtcrf instructions.  */
11718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
11728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic unsigned long
11735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerinsert_fxm (unsigned long insn,
11745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    long value,
11755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    int dialect,
11765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    const char **errmsg)
11778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
11785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* If we're handling the mfocrf and mtocrf insns ensure that exactly
11795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner     one bit of the mask field is set.  */
11805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if ((insn & (1 << 20)) != 0)
11815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    {
11825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      if (value == 0 || (value & -value) != value)
11835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	{
11845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  *errmsg = _("invalid mask field");
11855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  value = 0;
11865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	}
11875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    }
11885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
11895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* If the optional field on mfcr is missing that means we want to use
11905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner     the old form of the instruction that moves the whole cr.  In that
11915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner     case we'll have VALUE zero.  There doesn't seem to be a way to
11925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner     distinguish this from the case where someone writes mfcr %r3,0.  */
11935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  else if (value == 0)
11945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    ;
11955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
11965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* If only one bit of the FXM field is set, we can use the new form
11975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner     of the instruction, which is faster.  Unlike the Power4 branch hint
11985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner     encoding, this is not backward compatible.  Do not generate the
11995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner     new form unless -mpower4 has been given, or -many and the two
12005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner     operand form of mfcr was used.  */
12015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  else if ((value & -value) == value
12025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	   && ((dialect & PPC_OPCODE_POWER4) != 0
12035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	       || ((dialect & PPC_OPCODE_ANY) != 0
12045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner		   && (insn & (0x3ff << 1)) == 19 << 1)))
12055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    insn |= 1 << 20;
12065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
12075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* Any other value on mfcr is an error.  */
12085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  else if ((insn & (0x3ff << 1)) == 19 << 1)
12095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    {
12105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      *errmsg = _("ignoring invalid mfcr mask");
12115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      value = 0;
12125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    }
12135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
12145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  return insn | ((value & 0xff) << 12);
12158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
12168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
12178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic long
12185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextract_fxm (unsigned long insn,
12195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int dialect ATTRIBUTE_UNUSED,
12205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int *invalid)
12218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
12225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  long mask = (insn >> 12) & 0xff;
12238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
12245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* Is this a Power4 insn?  */
12255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if ((insn & (1 << 20)) != 0)
12265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    {
12275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      /* Exactly one bit of MASK should be set.  */
12285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      if (mask == 0 || (mask & -mask) != mask)
12295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	*invalid = 1;
12305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    }
12318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
12325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* Check that non-power4 form of mfcr has a zero MASK.  */
12335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  else if ((insn & (0x3ff << 1)) == 19 << 1)
12345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    {
12355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      if (mask != 0)
12365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	*invalid = 1;
12375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    }
12388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
12395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  return mask;
12408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
12418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
12428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The MB and ME fields in an M form instruction expressed as a single
12438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   operand which is itself a bitmask.  The extraction function always
12448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   marks it as invalid, since we never want to recognize an
12458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   instruction which uses a field of this type.  */
12468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
12478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic unsigned long
12485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerinsert_mbe (unsigned long insn,
12495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    long value,
12505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    int dialect ATTRIBUTE_UNUSED,
12515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    const char **errmsg)
12528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
12535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  unsigned long uval, mask;
12545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  int mb, me, mx, count, last;
12558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
12568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  uval = value;
12578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
12588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  if (uval == 0)
12598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    {
12605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      *errmsg = _("illegal bitmask");
12618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return insn;
12628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    }
12638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
12645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  mb = 0;
12655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  me = 32;
12665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if ((uval & 1) != 0)
12675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    last = 1;
12685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  else
12695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    last = 0;
12705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  count = 0;
12718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
12725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* mb: location of last 0->1 transition */
12735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* me: location of last 1->0 transition */
12745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* count: # transitions */
12758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
12765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  for (mx = 0, mask = 1L << 31; mx < 32; ++mx, mask >>= 1)
12778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    {
12785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      if ((uval & mask) && !last)
12795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	{
12805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  ++count;
12815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  mb = mx;
12825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  last = 1;
12835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	}
12845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      else if (!(uval & mask) && last)
12855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	{
12865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  ++count;
12875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  me = mx;
12885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  last = 0;
12895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	}
12908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    }
12915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if (me == 0)
12925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    me = 32;
12935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
12945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if (count != 2 && (count != 0 || ! last))
12955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    *errmsg = _("illegal bitmask");
12968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
12975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  return insn | (mb << 6) | ((me - 1) << 1);
12988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
12998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
13008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic long
13015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextract_mbe (unsigned long insn,
13025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int dialect ATTRIBUTE_UNUSED,
13035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int *invalid)
13048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
13058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  long ret;
13068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  int mb, me;
13078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  int i;
13088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
13095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  *invalid = 1;
13108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
13118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  mb = (insn >> 6) & 0x1f;
13128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  me = (insn >> 1) & 0x1f;
13135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if (mb < me + 1)
13145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    {
13155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      ret = 0;
13165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      for (i = mb; i <= me; i++)
13175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	ret |= 1L << (31 - i);
13185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    }
13195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  else if (mb == me + 1)
13205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    ret = ~0;
13215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  else /* (mb > me + 1) */
13225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    {
13235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      ret = ~0;
13245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      for (i = me + 1; i < mb; i++)
13255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	ret &= ~(1L << (31 - i));
13265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    }
13278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  return ret;
13288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
13298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
13308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The MB or ME field in an MD or MDS form instruction.  The high bit
13318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   is wrapped to the low end.  */
13328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
13338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic unsigned long
13345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerinsert_mb6 (unsigned long insn,
13355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    long value,
13365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    int dialect ATTRIBUTE_UNUSED,
13375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    const char **errmsg ATTRIBUTE_UNUSED)
13388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
13398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  return insn | ((value & 0x1f) << 6) | (value & 0x20);
13408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
13418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
13428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic long
13435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextract_mb6 (unsigned long insn,
13445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int dialect ATTRIBUTE_UNUSED,
13455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int *invalid ATTRIBUTE_UNUSED)
13468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
13478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  return ((insn >> 6) & 0x1f) | (insn & 0x20);
13488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
13498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
13508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The NB field in an X form instruction.  The value 32 is stored as
13518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   0.  */
13528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
13538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic long
13545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextract_nb (unsigned long insn,
13555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    int dialect ATTRIBUTE_UNUSED,
13565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    int *invalid ATTRIBUTE_UNUSED)
13578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
13588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  long ret;
13598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
13608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  ret = (insn >> 11) & 0x1f;
13618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  if (ret == 0)
13628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    ret = 32;
13638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  return ret;
13648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
13658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
13668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The NSI field in a D form instruction.  This is the same as the SI
13678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   field, only negated.  The extraction function always marks it as
13688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   invalid, since we never want to recognize an instruction which uses
13698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   a field of this type.  */
13708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
13718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic unsigned long
13725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerinsert_nsi (unsigned long insn,
13735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    long value,
13745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    int dialect ATTRIBUTE_UNUSED,
13755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    const char **errmsg ATTRIBUTE_UNUSED)
13768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
13775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  return insn | (-value & 0xffff);
13788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
13798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
13808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic long
13815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextract_nsi (unsigned long insn,
13825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int dialect ATTRIBUTE_UNUSED,
13835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int *invalid)
13848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
13855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  *invalid = 1;
13865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  return -(((insn & 0xffff) ^ 0x8000) - 0x8000);
13878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
13888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
13898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The RA field in a D or X form instruction which is an updating
13908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   load, which means that the RA field may not be zero and may not
13918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   equal the RT field.  */
13928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
13938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic unsigned long
13945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerinsert_ral (unsigned long insn,
13955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    long value,
13965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    int dialect ATTRIBUTE_UNUSED,
13975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    const char **errmsg)
13988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
13998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  if (value == 0
14005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      || (unsigned long) value == ((insn >> 21) & 0x1f))
14018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    *errmsg = "invalid register operand when updating";
14028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  return insn | ((value & 0x1f) << 16);
14038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
14048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
14058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The RA field in an lmw instruction, which has special value
14068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   restrictions.  */
14078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
14088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic unsigned long
14095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerinsert_ram (unsigned long insn,
14105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    long value,
14115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    int dialect ATTRIBUTE_UNUSED,
14125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    const char **errmsg)
14135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
14145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if ((unsigned long) value >= ((insn >> 21) & 0x1f))
14155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    *errmsg = _("index register in load range");
14165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  return insn | ((value & 0x1f) << 16);
14175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
14185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
14195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* The RA field in the DQ form lq instruction, which has special
14205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   value restrictions.  */
14215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
14225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic unsigned long
14235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerinsert_raq (unsigned long insn,
14245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    long value,
14255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    int dialect ATTRIBUTE_UNUSED,
14265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    const char **errmsg)
14278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
14285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  long rtvalue = (insn & RT_MASK) >> 21;
14295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
14305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if (value == rtvalue)
14315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    *errmsg = _("source and target register operands must be different");
14328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  return insn | ((value & 0x1f) << 16);
14338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
14348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
14358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The RA field in a D or X form instruction which is an updating
14368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   store or an updating floating point load, which means that the RA
14378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   field may not be zero.  */
14388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
14398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic unsigned long
14405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerinsert_ras (unsigned long insn,
14415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    long value,
14425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    int dialect ATTRIBUTE_UNUSED,
14435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    const char **errmsg)
14448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
14458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  if (value == 0)
14465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    *errmsg = _("invalid register operand when updating");
14478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  return insn | ((value & 0x1f) << 16);
14488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
14498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
14508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The RB field in an X form instruction when it must be the same as
14518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   the RS field in the instruction.  This is used for extended
14528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   mnemonics like mr.  This operand is marked FAKE.  The insertion
14538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   function just copies the BT field into the BA field, and the
14548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   extraction function just checks that the fields are the same.  */
14558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
14568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic unsigned long
14575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerinsert_rbs (unsigned long insn,
14585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    long value ATTRIBUTE_UNUSED,
14595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    int dialect ATTRIBUTE_UNUSED,
14605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    const char **errmsg ATTRIBUTE_UNUSED)
14618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
14628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  return insn | (((insn >> 21) & 0x1f) << 11);
14638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
14648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
14658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic long
14665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextract_rbs (unsigned long insn,
14675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int dialect ATTRIBUTE_UNUSED,
14685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int *invalid)
14698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
14705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if (((insn >> 21) & 0x1f) != ((insn >> 11) & 0x1f))
14718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    *invalid = 1;
14728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  return 0;
14738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
14748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
14758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The SH field in an MD form instruction.  This is split.  */
14768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
14778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic unsigned long
14785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerinsert_sh6 (unsigned long insn,
14795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    long value,
14805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    int dialect ATTRIBUTE_UNUSED,
14815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    const char **errmsg ATTRIBUTE_UNUSED)
14828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
14838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
14848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
14858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
14868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic long
14875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextract_sh6 (unsigned long insn,
14885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int dialect ATTRIBUTE_UNUSED,
14895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int *invalid ATTRIBUTE_UNUSED)
14908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
14918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  return ((insn >> 11) & 0x1f) | ((insn << 4) & 0x20);
14928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
14938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
14948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The SPR field in an XFX form instruction.  This is flipped--the
14958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   lower 5 bits are stored in the upper 5 and vice- versa.  */
14968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
14978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic unsigned long
14985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerinsert_spr (unsigned long insn,
14995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    long value,
15005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    int dialect ATTRIBUTE_UNUSED,
15015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    const char **errmsg ATTRIBUTE_UNUSED)
15028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
15038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
15048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
15058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
15068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic long
15075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextract_spr (unsigned long insn,
15085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int dialect ATTRIBUTE_UNUSED,
15095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int *invalid ATTRIBUTE_UNUSED)
15108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
15118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  return ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
15128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
15138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
15145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Some dialects have 8 SPRG registers instead of the standard 4.  */
15155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
15165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic unsigned long
15175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerinsert_sprg (unsigned long insn,
15185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     long value,
15195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int dialect,
15205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     const char **errmsg)
15215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
15225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* This check uses PPC_OPCODE_403 because PPC405 is later defined
15235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner     as a synonym.  If ever a 405 specific dialect is added this
15245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner     check should use that instead.  */
15255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if (value > 7
15265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      || (value > 3
15275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  && (dialect & (PPC_OPCODE_BOOKE | PPC_OPCODE_403)) == 0))
15285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    *errmsg = _("invalid sprg number");
15295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
15305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* If this is mfsprg4..7 then use spr 260..263 which can be read in
15315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner     user mode.  Anything else must use spr 272..279.  */
15325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if (value <= 3 || (insn & 0x100) != 0)
15335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    value |= 0x10;
15345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
15355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  return insn | ((value & 0x17) << 16);
15365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
15375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
15385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic long
15395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextract_sprg (unsigned long insn,
15405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	      int dialect,
15415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	      int *invalid)
15425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
15435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  unsigned long val = (insn >> 16) & 0x1f;
15445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
15455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* mfsprg can use 260..263 and 272..279.  mtsprg only uses spr 272..279
15465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner     If not BOOKE or 405, then both use only 272..275.  */
15475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if (val <= 3
15485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      || (val < 0x10 && (insn & 0x100) != 0)
15495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      || (val - 0x10 > 3
15505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  && (dialect & (PPC_OPCODE_BOOKE | PPC_OPCODE_403)) == 0))
15515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    *invalid = 1;
15525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  return val & 7;
15535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
15545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
15558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The TBR field in an XFX instruction.  This is just like SPR, but it
15568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   is optional.  When TBR is omitted, it must be inserted as 268 (the
15578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   magic number of the TB register).  These functions treat 0
15588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   (indicating an omitted optional operand) as 268.  This means that
15598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   ``mftb 4,0'' is not handled correctly.  This does not matter very
15608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   much, since the architecture manual does not define mftb as
15618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   accepting any values other than 268 or 269.  */
15628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
15638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TB (268)
15648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
15658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic unsigned long
15665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerinsert_tbr (unsigned long insn,
15675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    long value,
15685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    int dialect ATTRIBUTE_UNUSED,
15695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    const char **errmsg ATTRIBUTE_UNUSED)
15708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
15718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  if (value == 0)
15728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    value = TB;
15738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
15748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
15758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
15768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic long
15775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerextract_tbr (unsigned long insn,
15785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int dialect ATTRIBUTE_UNUSED,
15795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     int *invalid ATTRIBUTE_UNUSED)
15808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
15818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  long ret;
15828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
15838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  ret = ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
15848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  if (ret == TB)
15858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    ret = 0;
15868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  return ret;
15878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
15888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
15898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Macros used to form opcodes.  */
15908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
15918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The main opcode.  */
15925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define OP(x) ((((unsigned long)(x)) & 0x3f) << 26)
15938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define OP_MASK OP (0x3f)
15948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
15958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The main opcode combined with a trap code in the TO field of a D
15968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   form instruction.  Used for extended mnemonics for the trap
15978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   instructions.  */
15985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define OPTO(x,to) (OP (x) | ((((unsigned long)(to)) & 0x1f) << 21))
15998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define OPTO_MASK (OP_MASK | TO_MASK)
16008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
16018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The main opcode combined with a comparison size bit in the L field
16028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   of a D form or X form instruction.  Used for extended mnemonics for
16038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   the comparison instructions.  */
16045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define OPL(x,l) (OP (x) | ((((unsigned long)(l)) & 1) << 21))
16058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define OPL_MASK OPL (0x3f,1)
16068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
16078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An A form instruction.  */
16085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define A(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1) | (((unsigned long)(rc)) & 1))
16098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define A_MASK A (0x3f, 0x1f, 1)
16108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
16118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An A_MASK with the FRB field fixed.  */
16128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AFRB_MASK (A_MASK | FRB_MASK)
16138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
16148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An A_MASK with the FRC field fixed.  */
16158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AFRC_MASK (A_MASK | FRC_MASK)
16168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
16178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An A_MASK with the FRA and FRC fields fixed.  */
16188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define AFRAFRC_MASK (A_MASK | FRA_MASK | FRC_MASK)
16198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
16205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* An AFRAFRC_MASK, but with L bit clear.  */
16215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define AFRALFRC_MASK (AFRAFRC_MASK & ~((unsigned long) 1 << 16))
16225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
16238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* A B form instruction.  */
16245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define B(op, aa, lk) (OP (op) | ((((unsigned long)(aa)) & 1) << 1) | ((lk) & 1))
16258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define B_MASK B (0x3f, 1, 1)
16268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
16278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* A B form instruction setting the BO field.  */
16285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BBO(op, bo, aa, lk) (B ((op), (aa), (lk)) | ((((unsigned long)(bo)) & 0x1f) << 21))
16298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BBO_MASK BBO (0x3f, 0x1f, 1, 1)
16308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
16318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* A BBO_MASK with the y bit of the BO field removed.  This permits
16328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   matching a conditional branch regardless of the setting of the y
16335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   bit.  Similarly for the 'at' bits used for power4 branch hints.  */
16345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define Y_MASK   (((unsigned long) 1) << 21)
16355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define AT1_MASK (((unsigned long) 3) << 21)
16365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define AT2_MASK (((unsigned long) 9) << 21)
16375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BBOY_MASK  (BBO_MASK &~ Y_MASK)
16385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BBOAT_MASK (BBO_MASK &~ AT1_MASK)
16398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
16408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* A B form instruction setting the BO field and the condition bits of
16418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   the BI field.  */
16428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BBOCB(op, bo, cb, aa, lk) \
16435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  (BBO ((op), (bo), (aa), (lk)) | ((((unsigned long)(cb)) & 0x3) << 16))
16448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BBOCB_MASK BBOCB (0x3f, 0x1f, 0x3, 1, 1)
16458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
16468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* A BBOCB_MASK with the y bit of the BO field removed.  */
16478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BBOYCB_MASK (BBOCB_MASK &~ Y_MASK)
16485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BBOATCB_MASK (BBOCB_MASK &~ AT1_MASK)
16495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BBOAT2CB_MASK (BBOCB_MASK &~ AT2_MASK)
16508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
16518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* A BBOYCB_MASK in which the BI field is fixed.  */
16528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BBOYBI_MASK (BBOYCB_MASK | BI_MASK)
16535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BBOATBI_MASK (BBOAT2CB_MASK | BI_MASK)
16545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
16555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* An Context form instruction.  */
16565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define CTX(op, xop)   (OP (op) | (((unsigned long)(xop)) & 0x7))
16575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define CTX_MASK CTX(0x3f, 0x7)
16585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
16595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* An User Context form instruction.  */
16605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define UCTX(op, xop)  (OP (op) | (((unsigned long)(xop)) & 0x1f))
16615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define UCTX_MASK UCTX(0x3f, 0x1f)
16628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
16638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The main opcode mask with the RA field clear.  */
16648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DRA_MASK (OP_MASK | RA_MASK)
16658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
16668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* A DS form instruction.  */
16678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DSO(op, xop) (OP (op) | ((xop) & 0x3))
16688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DS_MASK DSO (0x3f, 3)
16698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
16705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* A DE form instruction.  */
16715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define DEO(op, xop) (OP (op) | ((xop) & 0xf))
16725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define DE_MASK DEO (0x3e, 0xf)
16735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
16745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* An EVSEL form instruction.  */
16755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define EVSEL(op, xop) (OP (op) | (((unsigned long)(xop)) & 0xff) << 3)
16765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define EVSEL_MASK EVSEL(0x3f, 0xff)
16775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
16788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An M form instruction.  */
16798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define M(op, rc) (OP (op) | ((rc) & 1))
16808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define M_MASK M (0x3f, 1)
16818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
16828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An M form instruction with the ME field specified.  */
16835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define MME(op, me, rc) (M ((op), (rc)) | ((((unsigned long)(me)) & 0x1f) << 1))
16848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
16858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An M_MASK with the MB and ME fields fixed.  */
16868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MMBME_MASK (M_MASK | MB_MASK | ME_MASK)
16878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
16888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An M_MASK with the SH and ME fields fixed.  */
16898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MSHME_MASK (M_MASK | SH_MASK | ME_MASK)
16908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
16918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An MD form instruction.  */
16925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define MD(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x7) << 2) | ((rc) & 1))
16938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MD_MASK MD (0x3f, 0x7, 1)
16948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
16958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An MD_MASK with the MB field fixed.  */
16968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MDMB_MASK (MD_MASK | MB6_MASK)
16978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
16988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An MD_MASK with the SH field fixed.  */
16998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MDSH_MASK (MD_MASK | SH6_MASK)
17008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
17018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An MDS form instruction.  */
17025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define MDS(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0xf) << 1) | ((rc) & 1))
17038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MDS_MASK MDS (0x3f, 0xf, 1)
17048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
17058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An MDS_MASK with the MB field fixed.  */
17068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MDSMB_MASK (MDS_MASK | MB6_MASK)
17078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
17088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An SC form instruction.  */
17095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define SC(op, sa, lk) (OP (op) | ((((unsigned long)(sa)) & 1) << 1) | ((lk) & 1))
17105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define SC_MASK (OP_MASK | (((unsigned long)0x3ff) << 16) | (((unsigned long)1) << 1) | 1)
17115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
17125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* An VX form instruction.  */
17135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define VX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x7ff))
17145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
17155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* The mask for an VX form instruction.  */
17165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define VX_MASK	VX(0x3f, 0x7ff)
17175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
17185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* An VA form instruction.  */
17195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define VXA(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x03f))
17205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
17215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* The mask for an VA form instruction.  */
17225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define VXA_MASK VXA(0x3f, 0x3f)
17235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
17245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* An VXR form instruction.  */
17255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define VXR(op, xop, rc) (OP (op) | (((rc) & 1) << 10) | (((unsigned long)(xop)) & 0x3ff))
17265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
17275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* The mask for a VXR form instruction.  */
17285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define VXR_MASK VXR(0x3f, 0x3ff, 1)
17298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
17308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An X form instruction.  */
17315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define X(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1))
17325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
17335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* A Z form instruction.  */
17345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define Z(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 1))
17358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
17368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An X form instruction with the RC bit specified.  */
17378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define XRC(op, xop, rc) (X ((op), (xop)) | ((rc) & 1))
17388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
17395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* A Z form instruction with the RC bit specified.  */
17405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ZRC(op, xop, rc) (Z ((op), (xop)) | ((rc) & 1))
17415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
17428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The mask for an X form instruction.  */
17438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define X_MASK XRC (0x3f, 0x3ff, 1)
17448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
17455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* The mask for a Z form instruction.  */
17465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define Z_MASK ZRC (0x3f, 0x1ff, 1)
17475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define Z2_MASK ZRC (0x3f, 0xff, 1)
17485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
17498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An X_MASK with the RA field fixed.  */
17508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define XRA_MASK (X_MASK | RA_MASK)
17518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
17525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* An XRA_MASK with the W field clear.  */
17535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XWRA_MASK (XRA_MASK & ~((unsigned long) 1 << 16))
17545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
17558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An X_MASK with the RB field fixed.  */
17568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define XRB_MASK (X_MASK | RB_MASK)
17578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
17588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An X_MASK with the RT field fixed.  */
17598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define XRT_MASK (X_MASK | RT_MASK)
17608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
17615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* An XRT_MASK mask with the L bits clear.  */
17625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XLRT_MASK (XRT_MASK & ~((unsigned long) 0x3 << 21))
17635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
17648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An X_MASK with the RA and RB fields fixed.  */
17658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define XRARB_MASK (X_MASK | RA_MASK | RB_MASK)
17668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
17675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* An XRARB_MASK, but with the L bit clear.  */
17685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XRLARB_MASK (XRARB_MASK & ~((unsigned long) 1 << 16))
17695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
17708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An X_MASK with the RT and RA fields fixed.  */
17718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define XRTRA_MASK (X_MASK | RT_MASK | RA_MASK)
17728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
17735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* An XRTRA_MASK, but with L bit clear.  */
17745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XRTLRA_MASK (XRTRA_MASK & ~((unsigned long) 1 << 21))
17755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
17765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* An X form instruction with the L bit specified.  */
17775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XOPL(op, xop, l) (X ((op), (xop)) | ((((unsigned long)(l)) & 1) << 21))
17788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
17798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The mask for an X form comparison instruction.  */
17805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XCMP_MASK (X_MASK | (((unsigned long)1) << 22))
17818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
17828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The mask for an X form comparison instruction with the L field
17838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   fixed.  */
17845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XCMPL_MASK (XCMP_MASK | (((unsigned long)1) << 21))
17858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
17868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An X form trap instruction with the TO field specified.  */
17875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XTO(op, xop, to) (X ((op), (xop)) | ((((unsigned long)(to)) & 0x1f) << 21))
17888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define XTO_MASK (X_MASK | TO_MASK)
17898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
17905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* An X form tlb instruction with the SH field specified.  */
17915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XTLB(op, xop, sh) (X ((op), (xop)) | ((((unsigned long)(sh)) & 0x1f) << 11))
17925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XTLB_MASK (X_MASK | SH_MASK)
17935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
17945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* An X form sync instruction.  */
17955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XSYNC(op, xop, l) (X ((op), (xop)) | ((((unsigned long)(l)) & 3) << 21))
17965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
17975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* An X form sync instruction with everything filled in except the LS field.  */
17985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XSYNC_MASK (0xff9fffff)
17995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
18005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* An X_MASK, but with the EH bit clear.  */
18015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XEH_MASK (X_MASK & ~((unsigned long )1))
18025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
18035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* An X form AltiVec dss instruction.  */
18045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XDSS(op, xop, a) (X ((op), (xop)) | ((((unsigned long)(a)) & 1) << 25))
18055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XDSS_MASK XDSS(0x3f, 0x3ff, 1)
18065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
18078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An XFL form instruction.  */
18085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XFL(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1) | (((unsigned long)(rc)) & 1))
18095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XFL_MASK XFL (0x3f, 0x3ff, 1)
18105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
18115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* An X form isel instruction.  */
18125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XISEL(op, xop)  (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1))
18135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XISEL_MASK      XISEL(0x3f, 0x1f)
18148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
18158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An XL form instruction with the LK field set to 0.  */
18165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XL(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1))
18178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
18188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An XL form instruction which uses the LK field.  */
18198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define XLLK(op, xop, lk) (XL ((op), (xop)) | ((lk) & 1))
18208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
18218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The mask for an XL form instruction.  */
18228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define XL_MASK XLLK (0x3f, 0x3ff, 1)
18238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
18248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An XL form instruction which explicitly sets the BO field.  */
18258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define XLO(op, bo, xop, lk) \
18265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  (XLLK ((op), (xop), (lk)) | ((((unsigned long)(bo)) & 0x1f) << 21))
18278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define XLO_MASK (XL_MASK | BO_MASK)
18288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
18298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An XL form instruction which explicitly sets the y bit of the BO
18308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   field.  */
18315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XLYLK(op, xop, y, lk) (XLLK ((op), (xop), (lk)) | ((((unsigned long)(y)) & 1) << 21))
18328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define XLYLK_MASK (XL_MASK | Y_MASK)
18338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
18348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An XL form instruction which sets the BO field and the condition
18358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   bits of the BI field.  */
18368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define XLOCB(op, bo, cb, xop, lk) \
18375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  (XLO ((op), (bo), (xop), (lk)) | ((((unsigned long)(cb)) & 3) << 16))
18388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define XLOCB_MASK XLOCB (0x3f, 0x1f, 0x3, 0x3ff, 1)
18398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
18408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An XL_MASK or XLYLK_MASK or XLOCB_MASK with the BB field fixed.  */
18418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define XLBB_MASK (XL_MASK | BB_MASK)
18428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define XLYBB_MASK (XLYLK_MASK | BB_MASK)
18438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define XLBOCBBB_MASK (XLOCB_MASK | BB_MASK)
18448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
18455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* A mask for branch instructions using the BH field.  */
18465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XLBH_MASK (XL_MASK | (0x1c << 11))
18475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
18488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An XL_MASK with the BO and BB fields fixed.  */
18498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define XLBOBB_MASK (XL_MASK | BO_MASK | BB_MASK)
18508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
18518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An XL_MASK with the BO, BI and BB fields fixed.  */
18528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define XLBOBIBB_MASK (XL_MASK | BO_MASK | BI_MASK | BB_MASK)
18538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
18548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An XO form instruction.  */
18558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define XO(op, xop, oe, rc) \
18565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 1) | ((((unsigned long)(oe)) & 1) << 10) | (((unsigned long)(rc)) & 1))
18578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define XO_MASK XO (0x3f, 0x1ff, 1, 1)
18588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
18598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An XO_MASK with the RB field fixed.  */
18608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define XORB_MASK (XO_MASK | RB_MASK)
18618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
18628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An XS form instruction.  */
18635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XS(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 2) | (((unsigned long)(rc)) & 1))
18648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define XS_MASK XS (0x3f, 0x1ff, 1)
18658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
18668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* A mask for the FXM version of an XFX form instruction.  */
18675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XFXFXM_MASK (X_MASK | (1 << 11) | (1 << 20))
18688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
18698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An XFX form instruction with the FXM field filled in.  */
18705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XFXM(op, xop, fxm, p4) \
18715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  (X ((op), (xop)) | ((((unsigned long)(fxm)) & 0xff) << 12) \
18725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   | ((unsigned long)(p4) << 20))
18738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
18748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An XFX form instruction with the SPR field filled in.  */
18758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define XSPR(op, xop, spr) \
18765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  (X ((op), (xop)) | ((((unsigned long)(spr)) & 0x1f) << 16) | ((((unsigned long)(spr)) & 0x3e0) << 6))
18778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define XSPR_MASK (X_MASK | SPR_MASK)
18788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
18798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An XFX form instruction with the SPR field filled in except for the
18808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   SPRBAT field.  */
18818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define XSPRBAT_MASK (XSPR_MASK &~ SPRBAT_MASK)
18828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
18838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* An XFX form instruction with the SPR field filled in except for the
18848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   SPRG field.  */
18855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XSPRG_MASK (XSPR_MASK & ~(0x1f << 16))
18865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
18875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* An X form instruction with everything filled in except the E field.  */
18885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XE_MASK (0xffff7fff)
18895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
18905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* An X form user context instruction.  */
18915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XUC(op, xop)  (OP (op) | (((unsigned long)(xop)) & 0x1f))
18925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define XUC_MASK      XUC(0x3f, 0x1f)
18938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
18948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The BO encodings used in extended conditional branch mnemonics.  */
18958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BODNZF	(0x0)
18968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BODNZFP	(0x1)
18978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BODZF	(0x2)
18988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BODZFP	(0x3)
18998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BODNZT	(0x8)
19008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BODNZTP	(0x9)
19018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BODZT	(0xa)
19028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BODZTP	(0xb)
19035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
19045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BOF	(0x4)
19055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BOFP	(0x5)
19065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BOFM4	(0x6)
19075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BOFP4	(0x7)
19088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BOT	(0xc)
19098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BOTP	(0xd)
19105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BOTM4	(0xe)
19115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BOTP4	(0xf)
19125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
19138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BODNZ	(0x10)
19148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BODNZP	(0x11)
19158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BODZ	(0x12)
19168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BODZP	(0x13)
19175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BODNZM4 (0x18)
19185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BODNZP4 (0x19)
19195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BODZM4	(0x1a)
19205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BODZP4	(0x1b)
19215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
19228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BOU	(0x14)
19238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
19248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The BI condition bit encodings used in extended conditional branch
19258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   mnemonics.  */
19268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CBLT	(0)
19278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CBGT	(1)
19288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CBEQ	(2)
19298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CBSO	(3)
19308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
19318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The TO encodings used in extended trap mnemonics.  */
19328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TOLGT	(0x1)
19338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TOLLT	(0x2)
19348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TOEQ	(0x4)
19358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TOLGE	(0x5)
19368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TOLNL	(0x5)
19378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TOLLE	(0x6)
19388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TOLNG	(0x6)
19398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TOGT	(0x8)
19408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TOGE	(0xc)
19418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TONL	(0xc)
19428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TOLT	(0x10)
19438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TOLE	(0x14)
19448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TONG	(0x14)
19458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TONE	(0x18)
19468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TOU	(0x1f)
19478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
19488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Smaller names for the flags so each entry in the opcodes table will
19498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   fit on a single line.  */
19505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#undef	PPC
19515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC     PPC_OPCODE_PPC
19525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPCCOM	PPC_OPCODE_PPC | PPC_OPCODE_COMMON
19535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define NOPOWER4 PPC_OPCODE_NOPOWER4 | PPCCOM
19545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define POWER4	PPC_OPCODE_POWER4
19555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define POWER5	PPC_OPCODE_POWER5
19565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define POWER6	PPC_OPCODE_POWER6
19575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define CELL	PPC_OPCODE_CELL
19585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC32   PPC_OPCODE_32 | PPC_OPCODE_PPC
19595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC64   PPC_OPCODE_64 | PPC_OPCODE_PPC
19605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC403	PPC_OPCODE_403
19615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC405	PPC403
19625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC440	PPC_OPCODE_440
19635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC750	PPC
19645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPC860	PPC
19655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPCVEC	PPC_OPCODE_ALTIVEC
19665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define	POWER   PPC_OPCODE_POWER
19675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define	POWER2	PPC_OPCODE_POWER | PPC_OPCODE_POWER2
19685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPCPWR2	PPC_OPCODE_PPC | PPC_OPCODE_POWER | PPC_OPCODE_POWER2
19695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define	POWER32	PPC_OPCODE_POWER | PPC_OPCODE_32
19705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define	COM     PPC_OPCODE_POWER | PPC_OPCODE_PPC | PPC_OPCODE_COMMON
19715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define	COM32   PPC_OPCODE_POWER | PPC_OPCODE_PPC | PPC_OPCODE_COMMON | PPC_OPCODE_32
19725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define	M601    PPC_OPCODE_POWER | PPC_OPCODE_601
19735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PWRCOM	PPC_OPCODE_POWER | PPC_OPCODE_601 | PPC_OPCODE_COMMON
19745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define	MFDEC1	PPC_OPCODE_POWER
19755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define	MFDEC2	PPC_OPCODE_PPC | PPC_OPCODE_601 | PPC_OPCODE_BOOKE
19765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BOOKE	PPC_OPCODE_BOOKE
19775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define BOOKE64	PPC_OPCODE_BOOKE64
19785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define CLASSIC	PPC_OPCODE_CLASSIC
19795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPCE300 PPC_OPCODE_E300
19805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPCSPE	PPC_OPCODE_SPE
19815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPCISEL	PPC_OPCODE_ISEL
19825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPCEFS	PPC_OPCODE_EFS
19835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPCBRLK	PPC_OPCODE_BRLOCK
19845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPCPMR	PPC_OPCODE_PMR
19855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPCCHLK	PPC_OPCODE_CACHELCK
19865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPCCHLK64	PPC_OPCODE_CACHELCK | PPC_OPCODE_BOOKE64
19875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define PPCRFMCI	PPC_OPCODE_RFMCI
19888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
19898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The opcode table.
19908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
19918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   The format of the opcode table is:
19928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
19938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   NAME	     OPCODE	MASK		FLAGS		{ OPERANDS }
19948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
19958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   NAME is the name of the instruction.
19968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   OPCODE is the instruction opcode.
19978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   MASK is the opcode mask; this is used to tell the disassembler
19988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     which bits in the actual opcode must match OPCODE.
19998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   FLAGS are flags indicated what processors support the instruction.
20008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   OPERANDS is the list of operands.
20018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
20028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   The disassembler reads the table in order and prints the first
20038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   instruction which matches, so this table is sorted to put more
20048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   specific instructions before more general instructions.  It is also
20058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   sorted by major opcode.  */
20068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
20078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectconst struct powerpc_opcode powerpc_opcodes[] = {
20085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "attn",    X(0,256), X_MASK,		POWER4,		{ 0 } },
20095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdlgti",  OPTO(2,TOLGT), OPTO_MASK,	PPC64,		{ RA, SI } },
20105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdllti",  OPTO(2,TOLLT), OPTO_MASK,	PPC64,		{ RA, SI } },
20115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdeqi",   OPTO(2,TOEQ), OPTO_MASK,	PPC64,		{ RA, SI } },
20125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdlgei",  OPTO(2,TOLGE), OPTO_MASK,	PPC64,		{ RA, SI } },
20135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdlnli",  OPTO(2,TOLNL), OPTO_MASK,	PPC64,		{ RA, SI } },
20145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdllei",  OPTO(2,TOLLE), OPTO_MASK,	PPC64,		{ RA, SI } },
20155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdlngi",  OPTO(2,TOLNG), OPTO_MASK,	PPC64,		{ RA, SI } },
20165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdgti",   OPTO(2,TOGT), OPTO_MASK,	PPC64,		{ RA, SI } },
20175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdgei",   OPTO(2,TOGE), OPTO_MASK,	PPC64,		{ RA, SI } },
20185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdnli",   OPTO(2,TONL), OPTO_MASK,	PPC64,		{ RA, SI } },
20195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdlti",   OPTO(2,TOLT), OPTO_MASK,	PPC64,		{ RA, SI } },
20205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdlei",   OPTO(2,TOLE), OPTO_MASK,	PPC64,		{ RA, SI } },
20215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdngi",   OPTO(2,TONG), OPTO_MASK,	PPC64,		{ RA, SI } },
20225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdnei",   OPTO(2,TONE), OPTO_MASK,	PPC64,		{ RA, SI } },
20235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdi",     OP(2),	OP_MASK,	PPC64,		{ TO, RA, SI } },
20245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
20255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twlgti",  OPTO(3,TOLGT), OPTO_MASK,	PPCCOM,		{ RA, SI } },
20265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlgti",   OPTO(3,TOLGT), OPTO_MASK,	PWRCOM,		{ RA, SI } },
20275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twllti",  OPTO(3,TOLLT), OPTO_MASK,	PPCCOM,		{ RA, SI } },
20285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tllti",   OPTO(3,TOLLT), OPTO_MASK,	PWRCOM,		{ RA, SI } },
20295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tweqi",   OPTO(3,TOEQ), OPTO_MASK,	PPCCOM,		{ RA, SI } },
20305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "teqi",    OPTO(3,TOEQ), OPTO_MASK,	PWRCOM,		{ RA, SI } },
20315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twlgei",  OPTO(3,TOLGE), OPTO_MASK,	PPCCOM,		{ RA, SI } },
20325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlgei",   OPTO(3,TOLGE), OPTO_MASK,	PWRCOM,		{ RA, SI } },
20335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twlnli",  OPTO(3,TOLNL), OPTO_MASK,	PPCCOM,		{ RA, SI } },
20345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlnli",   OPTO(3,TOLNL), OPTO_MASK,	PWRCOM,		{ RA, SI } },
20355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twllei",  OPTO(3,TOLLE), OPTO_MASK,	PPCCOM,		{ RA, SI } },
20365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tllei",   OPTO(3,TOLLE), OPTO_MASK,	PWRCOM,		{ RA, SI } },
20375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twlngi",  OPTO(3,TOLNG), OPTO_MASK,	PPCCOM,		{ RA, SI } },
20385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlngi",   OPTO(3,TOLNG), OPTO_MASK,	PWRCOM,		{ RA, SI } },
20395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twgti",   OPTO(3,TOGT), OPTO_MASK,	PPCCOM,		{ RA, SI } },
20405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tgti",    OPTO(3,TOGT), OPTO_MASK,	PWRCOM,		{ RA, SI } },
20415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twgei",   OPTO(3,TOGE), OPTO_MASK,	PPCCOM,		{ RA, SI } },
20425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tgei",    OPTO(3,TOGE), OPTO_MASK,	PWRCOM,		{ RA, SI } },
20435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twnli",   OPTO(3,TONL), OPTO_MASK,	PPCCOM,		{ RA, SI } },
20445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tnli",    OPTO(3,TONL), OPTO_MASK,	PWRCOM,		{ RA, SI } },
20455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twlti",   OPTO(3,TOLT), OPTO_MASK,	PPCCOM,		{ RA, SI } },
20465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlti",    OPTO(3,TOLT), OPTO_MASK,	PWRCOM,		{ RA, SI } },
20475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twlei",   OPTO(3,TOLE), OPTO_MASK,	PPCCOM,		{ RA, SI } },
20485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlei",    OPTO(3,TOLE), OPTO_MASK,	PWRCOM,		{ RA, SI } },
20495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twngi",   OPTO(3,TONG), OPTO_MASK,	PPCCOM,		{ RA, SI } },
20505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tngi",    OPTO(3,TONG), OPTO_MASK,	PWRCOM,		{ RA, SI } },
20515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twnei",   OPTO(3,TONE), OPTO_MASK,	PPCCOM,		{ RA, SI } },
20525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tnei",    OPTO(3,TONE), OPTO_MASK,	PWRCOM,		{ RA, SI } },
20535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twi",     OP(3),	OP_MASK,	PPCCOM,		{ TO, RA, SI } },
20545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ti",      OP(3),	OP_MASK,	PWRCOM,		{ TO, RA, SI } },
20555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
20565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "macchw",	XO(4,172,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "macchw.",	XO(4,172,0,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "macchwo",	XO(4,172,1,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "macchwo.",	XO(4,172,1,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "macchws",	XO(4,236,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "macchws.",	XO(4,236,0,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "macchwso",	XO(4,236,1,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "macchwso.",	XO(4,236,1,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "macchwsu",	XO(4,204,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "macchwsu.",	XO(4,204,0,1), XO_MASK, PPC405|PPC440,	{ RT, RA, RB } },
20665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "macchwsuo",	XO(4,204,1,0), XO_MASK, PPC405|PPC440,	{ RT, RA, RB } },
20675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "macchwsuo.",	XO(4,204,1,1), XO_MASK, PPC405|PPC440,	{ RT, RA, RB } },
20685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "macchwu",	XO(4,140,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "macchwu.",	XO(4,140,0,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "macchwuo",	XO(4,140,1,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "macchwuo.",	XO(4,140,1,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "machhw",	XO(4,44,0,0),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "machhw.",	XO(4,44,0,1),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "machhwo",	XO(4,44,1,0),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "machhwo.",	XO(4,44,1,1),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "machhws",	XO(4,108,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "machhws.",	XO(4,108,0,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "machhwso",	XO(4,108,1,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "machhwso.",	XO(4,108,1,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "machhwsu",	XO(4,76,0,0),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "machhwsu.",	XO(4,76,0,1),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "machhwsuo",	XO(4,76,1,0),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "machhwsuo.",	XO(4,76,1,1),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "machhwu",	XO(4,12,0,0),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "machhwu.",	XO(4,12,0,1),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "machhwuo",	XO(4,12,1,0),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "machhwuo.",	XO(4,12,1,1),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "maclhw",	XO(4,428,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "maclhw.",	XO(4,428,0,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "maclhwo",	XO(4,428,1,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "maclhwo.",	XO(4,428,1,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "maclhws",	XO(4,492,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "maclhws.",	XO(4,492,0,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "maclhwso",	XO(4,492,1,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "maclhwso.",	XO(4,492,1,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "maclhwsu",	XO(4,460,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "maclhwsu.",	XO(4,460,0,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "maclhwsuo",	XO(4,460,1,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
20995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "maclhwsuo.",	XO(4,460,1,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "maclhwu",	XO(4,396,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "maclhwu.",	XO(4,396,0,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "maclhwuo",	XO(4,396,1,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "maclhwuo.",	XO(4,396,1,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mulchw",	XRC(4,168,0),  X_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mulchw.",	XRC(4,168,1),  X_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mulchwu",	XRC(4,136,0),  X_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mulchwu.",	XRC(4,136,1),  X_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mulhhw",	XRC(4,40,0),   X_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mulhhw.",	XRC(4,40,1),   X_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mulhhwu",	XRC(4,8,0),    X_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mulhhwu.",	XRC(4,8,1),    X_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mullhw",	XRC(4,424,0),  X_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mullhw.",	XRC(4,424,1),  X_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mullhwu",	XRC(4,392,0),  X_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mullhwu.",	XRC(4,392,1),  X_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nmacchw",	XO(4,174,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nmacchw.",	XO(4,174,0,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nmacchwo",	XO(4,174,1,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nmacchwo.",	XO(4,174,1,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nmacchws",	XO(4,238,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nmacchws.",	XO(4,238,0,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nmacchwso",	XO(4,238,1,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nmacchwso.",	XO(4,238,1,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nmachhw",	XO(4,46,0,0),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nmachhw.",	XO(4,46,0,1),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nmachhwo",	XO(4,46,1,0),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nmachhwo.",	XO(4,46,1,1),  XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nmachhws",	XO(4,110,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nmachhws.",	XO(4,110,0,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nmachhwso",	XO(4,110,1,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nmachhwso.",	XO(4,110,1,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nmaclhw",	XO(4,430,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nmaclhw.",	XO(4,430,0,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nmaclhwo",	XO(4,430,1,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nmaclhwo.",	XO(4,430,1,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nmaclhws",	XO(4,494,0,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nmaclhws.",	XO(4,494,0,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nmaclhwso",	XO(4,494,1,0), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nmaclhwso.",	XO(4,494,1,1), XO_MASK,	PPC405|PPC440,	{ RT, RA, RB } },
21405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfvscr",  VX(4, 1540), VX_MASK,	PPCVEC,		{ VD } },
21415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtvscr",  VX(4, 1604), VX_MASK,	PPCVEC,		{ VB } },
21425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
21435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* Double-precision opcodes.  */
21445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* Some of these conflict with AltiVec, so move them before, since
21455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner     PPCVEC includes the PPC_OPCODE_PPC set.  */
21465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efscfd",   VX(4, 719), VX_MASK,	PPCEFS,		{ RS, RB } },
21475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdabs",   VX(4, 740), VX_MASK,	PPCEFS,		{ RS, RA } },
21485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdnabs",  VX(4, 741), VX_MASK,	PPCEFS,		{ RS, RA } },
21495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdneg",   VX(4, 742), VX_MASK,	PPCEFS,		{ RS, RA } },
21505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdadd",   VX(4, 736), VX_MASK,	PPCEFS,		{ RS, RA, RB } },
21515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdsub",   VX(4, 737), VX_MASK,	PPCEFS,		{ RS, RA, RB } },
21525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdmul",   VX(4, 744), VX_MASK,	PPCEFS,		{ RS, RA, RB } },
21535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efddiv",   VX(4, 745), VX_MASK,	PPCEFS,		{ RS, RA, RB } },
21545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdcmpgt", VX(4, 748), VX_MASK,	PPCEFS,		{ CRFD, RA, RB } },
21555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdcmplt", VX(4, 749), VX_MASK,	PPCEFS,		{ CRFD, RA, RB } },
21565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdcmpeq", VX(4, 750), VX_MASK,	PPCEFS,		{ CRFD, RA, RB } },
21575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdtstgt", VX(4, 764), VX_MASK,	PPCEFS,		{ CRFD, RA, RB } },
21585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdtstlt", VX(4, 765), VX_MASK,	PPCEFS,		{ CRFD, RA, RB } },
21595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdtsteq", VX(4, 766), VX_MASK,	PPCEFS,		{ CRFD, RA, RB } },
21605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdcfsi",  VX(4, 753), VX_MASK,	PPCEFS,		{ RS, RB } },
21615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdcfsid", VX(4, 739), VX_MASK,	PPCEFS,		{ RS, RB } },
21625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdcfui",  VX(4, 752), VX_MASK,	PPCEFS,		{ RS, RB } },
21635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdcfuid", VX(4, 738), VX_MASK,	PPCEFS,		{ RS, RB } },
21645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdcfsf",  VX(4, 755), VX_MASK,	PPCEFS,		{ RS, RB } },
21655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdcfuf",  VX(4, 754), VX_MASK,	PPCEFS,		{ RS, RB } },
21665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdctsi",  VX(4, 757), VX_MASK,	PPCEFS,		{ RS, RB } },
21675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdctsidz",VX(4, 747), VX_MASK,	PPCEFS,		{ RS, RB } },
21685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdctsiz", VX(4, 762), VX_MASK,	PPCEFS,		{ RS, RB } },
21695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdctui",  VX(4, 756), VX_MASK,	PPCEFS,		{ RS, RB } },
21705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdctuidz",VX(4, 746), VX_MASK,	PPCEFS,		{ RS, RB } },
21715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdctuiz", VX(4, 760), VX_MASK,	PPCEFS,		{ RS, RB } },
21725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdctsf",  VX(4, 759), VX_MASK,	PPCEFS,		{ RS, RB } },
21735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdctuf",  VX(4, 758), VX_MASK,	PPCEFS,		{ RS, RB } },
21745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efdcfs",   VX(4, 751), VX_MASK,	PPCEFS,		{ RS, RB } },
21755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* End of double-precision opcodes.  */
21765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
21775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vaddcuw", VX(4,  384), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
21785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vaddfp",  VX(4,   10), VX_MASK, 	PPCVEC,		{ VD, VA, VB } },
21795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vaddsbs", VX(4,  768), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
21805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vaddshs", VX(4,  832), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
21815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vaddsws", VX(4,  896), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
21825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vaddubm", VX(4,    0), VX_MASK, 	PPCVEC,		{ VD, VA, VB } },
21835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vaddubs", VX(4,  512), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
21845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vadduhm", VX(4,   64), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
21855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vadduhs", VX(4,  576), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
21865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vadduwm", VX(4,  128), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
21875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vadduws", VX(4,  640), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
21885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vand",    VX(4, 1028), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
21895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vandc",   VX(4, 1092), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
21905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vavgsb",  VX(4, 1282), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
21915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vavgsh",  VX(4, 1346), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
21925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vavgsw",  VX(4, 1410), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
21935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vavgub",  VX(4, 1026), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
21945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vavguh",  VX(4, 1090), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
21955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vavguw",  VX(4, 1154), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
21965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcfsx",   VX(4,  842), VX_MASK,	PPCVEC,		{ VD, VB, UIMM } },
21975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcfux",   VX(4,  778), VX_MASK,	PPCVEC,		{ VD, VB, UIMM } },
21985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcmpbfp",   VXR(4, 966, 0), VXR_MASK, PPCVEC,	{ VD, VA, VB } },
21995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcmpbfp.",  VXR(4, 966, 1), VXR_MASK, PPCVEC,	{ VD, VA, VB } },
22005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcmpeqfp",  VXR(4, 198, 0), VXR_MASK, PPCVEC,	{ VD, VA, VB } },
22015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcmpeqfp.", VXR(4, 198, 1), VXR_MASK, PPCVEC,	{ VD, VA, VB } },
22025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcmpequb",  VXR(4,   6, 0), VXR_MASK, PPCVEC,	{ VD, VA, VB } },
22035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcmpequb.", VXR(4,   6, 1), VXR_MASK, PPCVEC,	{ VD, VA, VB } },
22045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcmpequh",  VXR(4,  70, 0), VXR_MASK, PPCVEC,	{ VD, VA, VB } },
22055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcmpequh.", VXR(4,  70, 1), VXR_MASK, PPCVEC,	{ VD, VA, VB } },
22065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcmpequw",  VXR(4, 134, 0), VXR_MASK, PPCVEC,	{ VD, VA, VB } },
22075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcmpequw.", VXR(4, 134, 1), VXR_MASK, PPCVEC,	{ VD, VA, VB } },
22085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcmpgefp",  VXR(4, 454, 0), VXR_MASK, PPCVEC,	{ VD, VA, VB } },
22095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcmpgefp.", VXR(4, 454, 1), VXR_MASK, PPCVEC,	{ VD, VA, VB } },
22105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcmpgtfp",  VXR(4, 710, 0), VXR_MASK, PPCVEC,	{ VD, VA, VB } },
22115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcmpgtfp.", VXR(4, 710, 1), VXR_MASK, PPCVEC,	{ VD, VA, VB } },
22125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcmpgtsb",  VXR(4, 774, 0), VXR_MASK, PPCVEC,	{ VD, VA, VB } },
22135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcmpgtsb.", VXR(4, 774, 1), VXR_MASK, PPCVEC,	{ VD, VA, VB } },
22145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcmpgtsh",  VXR(4, 838, 0), VXR_MASK, PPCVEC,	{ VD, VA, VB } },
22155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcmpgtsh.", VXR(4, 838, 1), VXR_MASK, PPCVEC,	{ VD, VA, VB } },
22165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcmpgtsw",  VXR(4, 902, 0), VXR_MASK, PPCVEC,	{ VD, VA, VB } },
22175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcmpgtsw.", VXR(4, 902, 1), VXR_MASK, PPCVEC,	{ VD, VA, VB } },
22185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcmpgtub",  VXR(4, 518, 0), VXR_MASK, PPCVEC,	{ VD, VA, VB } },
22195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcmpgtub.", VXR(4, 518, 1), VXR_MASK, PPCVEC,	{ VD, VA, VB } },
22205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcmpgtuh",  VXR(4, 582, 0), VXR_MASK, PPCVEC,	{ VD, VA, VB } },
22215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcmpgtuh.", VXR(4, 582, 1), VXR_MASK, PPCVEC,	{ VD, VA, VB } },
22225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcmpgtuw",  VXR(4, 646, 0), VXR_MASK, PPCVEC,	{ VD, VA, VB } },
22235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vcmpgtuw.", VXR(4, 646, 1), VXR_MASK, PPCVEC,	{ VD, VA, VB } },
22245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vctsxs",    VX(4,  970), VX_MASK,	PPCVEC,		{ VD, VB, UIMM } },
22255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vctuxs",    VX(4,  906), VX_MASK,	PPCVEC,		{ VD, VB, UIMM } },
22265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vexptefp",  VX(4,  394), VX_MASK,	PPCVEC,		{ VD, VB } },
22275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vlogefp",   VX(4,  458), VX_MASK,	PPCVEC,		{ VD, VB } },
22285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmaddfp",   VXA(4,  46), VXA_MASK,	PPCVEC,		{ VD, VA, VC, VB } },
22295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmaxfp",    VX(4, 1034), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmaxsb",    VX(4,  258), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmaxsh",    VX(4,  322), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmaxsw",    VX(4,  386), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmaxub",    VX(4,    2), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmaxuh",    VX(4,   66), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmaxuw",    VX(4,  130), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmhaddshs", VXA(4,  32), VXA_MASK,	PPCVEC,		{ VD, VA, VB, VC } },
22375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmhraddshs", VXA(4, 33), VXA_MASK,	PPCVEC,		{ VD, VA, VB, VC } },
22385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vminfp",    VX(4, 1098), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vminsb",    VX(4,  770), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vminsh",    VX(4,  834), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vminsw",    VX(4,  898), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vminub",    VX(4,  514), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vminuh",    VX(4,  578), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vminuw",    VX(4,  642), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmladduhm", VXA(4,  34), VXA_MASK,	PPCVEC,		{ VD, VA, VB, VC } },
22465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmrghb",    VX(4,   12), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmrghh",    VX(4,   76), VX_MASK,    PPCVEC,		{ VD, VA, VB } },
22485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmrghw",    VX(4,  140), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmrglb",    VX(4,  268), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmrglh",    VX(4,  332), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmrglw",    VX(4,  396), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmsummbm",  VXA(4,  37), VXA_MASK,	PPCVEC,		{ VD, VA, VB, VC } },
22535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmsumshm",  VXA(4,  40), VXA_MASK,	PPCVEC,		{ VD, VA, VB, VC } },
22545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmsumshs",  VXA(4,  41), VXA_MASK,	PPCVEC,		{ VD, VA, VB, VC } },
22555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmsumubm",  VXA(4,  36), VXA_MASK,   PPCVEC,		{ VD, VA, VB, VC } },
22565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmsumuhm",  VXA(4,  38), VXA_MASK,   PPCVEC,		{ VD, VA, VB, VC } },
22575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmsumuhs",  VXA(4,  39), VXA_MASK,   PPCVEC,		{ VD, VA, VB, VC } },
22585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmulesb",   VX(4,  776), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmulesh",   VX(4,  840), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmuleub",   VX(4,  520), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmuleuh",   VX(4,  584), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmulosb",   VX(4,  264), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmulosh",   VX(4,  328), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmuloub",   VX(4,    8), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vmulouh",   VX(4,   72), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vnmsubfp",  VXA(4,  47), VXA_MASK,	PPCVEC,		{ VD, VA, VC, VB } },
22675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vnor",      VX(4, 1284), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vor",       VX(4, 1156), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vperm",     VXA(4,  43), VXA_MASK,	PPCVEC,		{ VD, VA, VB, VC } },
22705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vpkpx",     VX(4,  782), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vpkshss",   VX(4,  398), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vpkshus",   VX(4,  270), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vpkswss",   VX(4,  462), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vpkswus",   VX(4,  334), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vpkuhum",   VX(4,   14), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vpkuhus",   VX(4,  142), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vpkuwum",   VX(4,   78), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vpkuwus",   VX(4,  206), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vrefp",     VX(4,  266), VX_MASK,	PPCVEC,		{ VD, VB } },
22805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vrfim",     VX(4,  714), VX_MASK,	PPCVEC,		{ VD, VB } },
22815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vrfin",     VX(4,  522), VX_MASK,	PPCVEC,		{ VD, VB } },
22825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vrfip",     VX(4,  650), VX_MASK,	PPCVEC,		{ VD, VB } },
22835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vrfiz",     VX(4,  586), VX_MASK,	PPCVEC,		{ VD, VB } },
22845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vrlb",      VX(4,    4), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vrlh",      VX(4,   68), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vrlw",      VX(4,  132), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vrsqrtefp", VX(4,  330), VX_MASK,	PPCVEC,		{ VD, VB } },
22885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsel",      VXA(4,  42), VXA_MASK,	PPCVEC,		{ VD, VA, VB, VC } },
22895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsl",       VX(4,  452), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vslb",      VX(4,  260), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsldoi",    VXA(4,  44), VXA_MASK,	PPCVEC,		{ VD, VA, VB, SHB } },
22925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vslh",      VX(4,  324), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vslo",      VX(4, 1036), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vslw",      VX(4,  388), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
22955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vspltb",    VX(4,  524), VX_MASK,	PPCVEC,		{ VD, VB, UIMM } },
22965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsplth",    VX(4,  588), VX_MASK,	PPCVEC,		{ VD, VB, UIMM } },
22975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vspltisb",  VX(4,  780), VX_MASK,	PPCVEC,		{ VD, SIMM } },
22985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vspltish",  VX(4,  844), VX_MASK,	PPCVEC,		{ VD, SIMM } },
22995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vspltisw",  VX(4,  908), VX_MASK,	PPCVEC,		{ VD, SIMM } },
23005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vspltw",    VX(4,  652), VX_MASK,	PPCVEC,		{ VD, VB, UIMM } },
23015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsr",       VX(4,  708), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
23025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsrab",     VX(4,  772), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
23035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsrah",     VX(4,  836), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
23045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsraw",     VX(4,  900), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
23055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsrb",      VX(4,  516), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
23065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsrh",      VX(4,  580), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
23075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsro",      VX(4, 1100), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
23085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsrw",      VX(4,  644), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
23095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsubcuw",   VX(4, 1408), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
23105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsubfp",    VX(4,   74), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
23115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsubsbs",   VX(4, 1792), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
23125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsubshs",   VX(4, 1856), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
23135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsubsws",   VX(4, 1920), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
23145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsububm",   VX(4, 1024), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
23155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsububs",   VX(4, 1536), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
23165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsubuhm",   VX(4, 1088), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
23175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsubuhs",   VX(4, 1600), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
23185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsubuwm",   VX(4, 1152), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
23195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsubuws",   VX(4, 1664), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
23205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsumsws",   VX(4, 1928), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
23215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsum2sws",  VX(4, 1672), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
23225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsum4sbs",  VX(4, 1800), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
23235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsum4shs",  VX(4, 1608), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
23245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vsum4ubs",  VX(4, 1544), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
23255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vupkhpx",   VX(4,  846), VX_MASK,	PPCVEC,		{ VD, VB } },
23265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vupkhsb",   VX(4,  526), VX_MASK,	PPCVEC,		{ VD, VB } },
23275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vupkhsh",   VX(4,  590), VX_MASK,	PPCVEC,		{ VD, VB } },
23285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vupklpx",   VX(4,  974), VX_MASK,	PPCVEC,		{ VD, VB } },
23295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vupklsb",   VX(4,  654), VX_MASK,	PPCVEC,		{ VD, VB } },
23305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vupklsh",   VX(4,  718), VX_MASK,	PPCVEC,		{ VD, VB } },
23315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "vxor",      VX(4, 1220), VX_MASK,	PPCVEC,		{ VD, VA, VB } },
23325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
23335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evaddw",    VX(4, 512), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evaddiw",   VX(4, 514), VX_MASK,	PPCSPE,		{ RS, RB, UIMM } },
23355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evsubfw",   VX(4, 516), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evsubw",    VX(4, 516), VX_MASK,	PPCSPE,		{ RS, RB, RA } },
23375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evsubifw",  VX(4, 518), VX_MASK,	PPCSPE,		{ RS, UIMM, RB } },
23385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evsubiw",   VX(4, 518), VX_MASK,	PPCSPE,		{ RS, RB, UIMM } },
23395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evabs",     VX(4, 520), VX_MASK,	PPCSPE,		{ RS, RA } },
23405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evneg",     VX(4, 521), VX_MASK,	PPCSPE,		{ RS, RA } },
23415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evextsb",   VX(4, 522), VX_MASK,	PPCSPE,		{ RS, RA } },
23425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evextsh",   VX(4, 523), VX_MASK,	PPCSPE,		{ RS, RA } },
23435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evrndw",    VX(4, 524), VX_MASK,	PPCSPE,		{ RS, RA } },
23445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evcntlzw",  VX(4, 525), VX_MASK,	PPCSPE,		{ RS, RA } },
23455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evcntlsw",  VX(4, 526), VX_MASK,	PPCSPE,		{ RS, RA } },
23465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
23475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "brinc",     VX(4, 527), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
23495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evand",     VX(4, 529), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evandc",    VX(4, 530), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmr",      VX(4, 535), VX_MASK,	PPCSPE,		{ RS, RA, BBA } },
23525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evor",      VX(4, 535), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evorc",     VX(4, 539), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evxor",     VX(4, 534), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "eveqv",     VX(4, 537), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evnand",    VX(4, 542), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evnot",     VX(4, 536), VX_MASK,	PPCSPE,		{ RS, RA, BBA } },
23585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evnor",     VX(4, 536), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
23605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evrlw",     VX(4, 552), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evrlwi",    VX(4, 554), VX_MASK,	PPCSPE,		{ RS, RA, EVUIMM } },
23625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evslw",     VX(4, 548), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evslwi",    VX(4, 550), VX_MASK,	PPCSPE,		{ RS, RA, EVUIMM } },
23645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evsrws",    VX(4, 545), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evsrwu",    VX(4, 544), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evsrwis",   VX(4, 547), VX_MASK,	PPCSPE,		{ RS, RA, EVUIMM } },
23675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evsrwiu",   VX(4, 546), VX_MASK,	PPCSPE,		{ RS, RA, EVUIMM } },
23685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evsplati",  VX(4, 553), VX_MASK,	PPCSPE,		{ RS, SIMM } },
23695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evsplatfi", VX(4, 555), VX_MASK,	PPCSPE,		{ RS, SIMM } },
23705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmergehi", VX(4, 556), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmergelo", VX(4, 557), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmergehilo",VX(4,558), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmergelohi",VX(4,559), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
23755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evcmpgts",  VX(4, 561), VX_MASK,	PPCSPE,		{ CRFD, RA, RB } },
23765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evcmpgtu",  VX(4, 560), VX_MASK,	PPCSPE,		{ CRFD, RA, RB } },
23775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evcmplts",  VX(4, 563), VX_MASK,	PPCSPE,		{ CRFD, RA, RB } },
23785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evcmpltu",  VX(4, 562), VX_MASK,	PPCSPE,		{ CRFD, RA, RB } },
23795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evcmpeq",   VX(4, 564), VX_MASK,	PPCSPE,		{ CRFD, RA, RB } },
23805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evsel",     EVSEL(4,79),EVSEL_MASK,	PPCSPE,		{ RS, RA, RB, CRFS } },
23815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
23825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evldd",     VX(4, 769), VX_MASK,	PPCSPE,		{ RS, EVUIMM_8, RA } },
23835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evlddx",    VX(4, 768), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evldw",     VX(4, 771), VX_MASK,	PPCSPE,		{ RS, EVUIMM_8, RA } },
23855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evldwx",    VX(4, 770), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evldh",     VX(4, 773), VX_MASK,	PPCSPE,		{ RS, EVUIMM_8, RA } },
23875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evldhx",    VX(4, 772), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evlwhe",    VX(4, 785), VX_MASK,	PPCSPE,		{ RS, EVUIMM_4, RA } },
23895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evlwhex",   VX(4, 784), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evlwhou",   VX(4, 789), VX_MASK,	PPCSPE,		{ RS, EVUIMM_4, RA } },
23915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evlwhoux",  VX(4, 788), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evlwhos",   VX(4, 791), VX_MASK,	PPCSPE,		{ RS, EVUIMM_4, RA } },
23935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evlwhosx",  VX(4, 790), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evlwwsplat",VX(4, 793), VX_MASK,	PPCSPE,		{ RS, EVUIMM_4, RA } },
23955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evlwwsplatx",VX(4, 792), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evlwhsplat",VX(4, 797), VX_MASK,	PPCSPE,		{ RS, EVUIMM_4, RA } },
23975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evlwhsplatx",VX(4, 796), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
23985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evlhhesplat",VX(4, 777), VX_MASK,	PPCSPE,		{ RS, EVUIMM_2, RA } },
23995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evlhhesplatx",VX(4, 776), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evlhhousplat",VX(4, 781), VX_MASK,	PPCSPE,		{ RS, EVUIMM_2, RA } },
24015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evlhhousplatx",VX(4, 780), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evlhhossplat",VX(4, 783), VX_MASK,	PPCSPE,		{ RS, EVUIMM_2, RA } },
24035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evlhhossplatx",VX(4, 782), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
24055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evstdd",    VX(4, 801), VX_MASK,	PPCSPE,		{ RS, EVUIMM_8, RA } },
24065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evstddx",   VX(4, 800), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evstdw",    VX(4, 803), VX_MASK,	PPCSPE,		{ RS, EVUIMM_8, RA } },
24085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evstdwx",   VX(4, 802), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evstdh",    VX(4, 805), VX_MASK,	PPCSPE,		{ RS, EVUIMM_8, RA } },
24105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evstdhx",   VX(4, 804), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evstwwe",   VX(4, 825), VX_MASK,	PPCSPE,		{ RS, EVUIMM_4, RA } },
24125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evstwwex",  VX(4, 824), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evstwwo",   VX(4, 829), VX_MASK,	PPCSPE,		{ RS, EVUIMM_4, RA } },
24145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evstwwox",  VX(4, 828), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evstwhe",   VX(4, 817), VX_MASK,	PPCSPE,		{ RS, EVUIMM_4, RA } },
24165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evstwhex",  VX(4, 816), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evstwho",   VX(4, 821), VX_MASK,	PPCSPE,		{ RS, EVUIMM_4, RA } },
24185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evstwhox",  VX(4, 820), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
24205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evfsabs",   VX(4, 644), VX_MASK,	PPCSPE,		{ RS, RA } },
24215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evfsnabs",  VX(4, 645), VX_MASK,	PPCSPE,		{ RS, RA } },
24225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evfsneg",   VX(4, 646), VX_MASK,	PPCSPE,		{ RS, RA } },
24235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evfsadd",   VX(4, 640), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evfssub",   VX(4, 641), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evfsmul",   VX(4, 648), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evfsdiv",   VX(4, 649), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evfscmpgt", VX(4, 652), VX_MASK,	PPCSPE,		{ CRFD, RA, RB } },
24285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evfscmplt", VX(4, 653), VX_MASK,	PPCSPE,		{ CRFD, RA, RB } },
24295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evfscmpeq", VX(4, 654), VX_MASK,	PPCSPE,		{ CRFD, RA, RB } },
24305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evfststgt", VX(4, 668), VX_MASK,	PPCSPE,		{ CRFD, RA, RB } },
24315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evfststlt", VX(4, 669), VX_MASK,	PPCSPE,		{ CRFD, RA, RB } },
24325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evfststeq", VX(4, 670), VX_MASK,	PPCSPE,		{ CRFD, RA, RB } },
24335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evfscfui",  VX(4, 656), VX_MASK,	PPCSPE,		{ RS, RB } },
24345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evfsctuiz", VX(4, 664), VX_MASK,	PPCSPE,		{ RS, RB } },
24355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evfscfsi",  VX(4, 657), VX_MASK,	PPCSPE,		{ RS, RB } },
24365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evfscfuf",  VX(4, 658), VX_MASK,	PPCSPE,		{ RS, RB } },
24375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evfscfsf",  VX(4, 659), VX_MASK,	PPCSPE,		{ RS, RB } },
24385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evfsctui",  VX(4, 660), VX_MASK,	PPCSPE,		{ RS, RB } },
24395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evfsctsi",  VX(4, 661), VX_MASK,	PPCSPE,		{ RS, RB } },
24405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evfsctsiz", VX(4, 666), VX_MASK,	PPCSPE,		{ RS, RB } },
24415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evfsctuf",  VX(4, 662), VX_MASK,	PPCSPE,		{ RS, RB } },
24425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evfsctsf",  VX(4, 663), VX_MASK,	PPCSPE,		{ RS, RB } },
24435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
24445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efsabs",   VX(4, 708), VX_MASK,	PPCEFS,		{ RS, RA } },
24455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efsnabs",  VX(4, 709), VX_MASK,	PPCEFS,		{ RS, RA } },
24465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efsneg",   VX(4, 710), VX_MASK,	PPCEFS,		{ RS, RA } },
24475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efsadd",   VX(4, 704), VX_MASK,	PPCEFS,		{ RS, RA, RB } },
24485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efssub",   VX(4, 705), VX_MASK,	PPCEFS,		{ RS, RA, RB } },
24495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efsmul",   VX(4, 712), VX_MASK,	PPCEFS,		{ RS, RA, RB } },
24505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efsdiv",   VX(4, 713), VX_MASK,	PPCEFS,		{ RS, RA, RB } },
24515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efscmpgt", VX(4, 716), VX_MASK,	PPCEFS,		{ CRFD, RA, RB } },
24525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efscmplt", VX(4, 717), VX_MASK,	PPCEFS,		{ CRFD, RA, RB } },
24535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efscmpeq", VX(4, 718), VX_MASK,	PPCEFS,		{ CRFD, RA, RB } },
24545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efststgt", VX(4, 732), VX_MASK,	PPCEFS,		{ CRFD, RA, RB } },
24555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efststlt", VX(4, 733), VX_MASK,	PPCEFS,		{ CRFD, RA, RB } },
24565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efststeq", VX(4, 734), VX_MASK,	PPCEFS,		{ CRFD, RA, RB } },
24575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efscfui",  VX(4, 720), VX_MASK,	PPCEFS,		{ RS, RB } },
24585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efsctuiz", VX(4, 728), VX_MASK,	PPCEFS,		{ RS, RB } },
24595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efscfsi",  VX(4, 721), VX_MASK,	PPCEFS,		{ RS, RB } },
24605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efscfuf",  VX(4, 722), VX_MASK,	PPCEFS,		{ RS, RB } },
24615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efscfsf",  VX(4, 723), VX_MASK,	PPCEFS,		{ RS, RB } },
24625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efsctui",  VX(4, 724), VX_MASK,	PPCEFS,		{ RS, RB } },
24635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efsctsi",  VX(4, 725), VX_MASK,	PPCEFS,		{ RS, RB } },
24645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efsctsiz", VX(4, 730), VX_MASK,	PPCEFS,		{ RS, RB } },
24655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efsctuf",  VX(4, 726), VX_MASK,	PPCEFS,		{ RS, RB } },
24665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "efsctsf",  VX(4, 727), VX_MASK,	PPCEFS,		{ RS, RB } },
24675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
24685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhossf",  VX(4, 1031), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhossfa", VX(4, 1063), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhosmf",  VX(4, 1039), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhosmfa", VX(4, 1071), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhosmi",  VX(4, 1037), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhosmia", VX(4, 1069), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhoumi",  VX(4, 1036), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhoumia", VX(4, 1068), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhessf",  VX(4, 1027), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhessfa", VX(4, 1059), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhesmf",  VX(4, 1035), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhesmfa", VX(4, 1067), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhesmi",  VX(4, 1033), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhesmia", VX(4, 1065), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmheumi",  VX(4, 1032), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmheumia", VX(4, 1064), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
24855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhossfaaw",VX(4, 1287), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhossiaaw",VX(4, 1285), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhosmfaaw",VX(4, 1295), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhosmiaaw",VX(4, 1293), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhousiaaw",VX(4, 1284), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhoumiaaw",VX(4, 1292), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhessfaaw",VX(4, 1283), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhessiaaw",VX(4, 1281), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhesmfaaw",VX(4, 1291), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhesmiaaw",VX(4, 1289), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmheusiaaw",VX(4, 1280), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmheumiaaw",VX(4, 1288), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
24985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhossfanw",VX(4, 1415), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
24995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhossianw",VX(4, 1413), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhosmfanw",VX(4, 1423), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhosmianw",VX(4, 1421), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhousianw",VX(4, 1412), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhoumianw",VX(4, 1420), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhessfanw",VX(4, 1411), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhessianw",VX(4, 1409), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhesmfanw",VX(4, 1419), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhesmianw",VX(4, 1417), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmheusianw",VX(4, 1408), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmheumianw",VX(4, 1416), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
25115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhogsmfaa",VX(4, 1327), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhogsmiaa",VX(4, 1325), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhogumiaa",VX(4, 1324), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhegsmfaa",VX(4, 1323), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhegsmiaa",VX(4, 1321), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhegumiaa",VX(4, 1320), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
25185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhogsmfan",VX(4, 1455), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhogsmian",VX(4, 1453), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhogumian",VX(4, 1452), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhegsmfan",VX(4, 1451), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhegsmian",VX(4, 1449), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmhegumian",VX(4, 1448), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
25255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwhssf",  VX(4, 1095), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwhssfa", VX(4, 1127), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwhsmf",  VX(4, 1103), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwhsmfa", VX(4, 1135), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwhsmi",  VX(4, 1101), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwhsmia", VX(4, 1133), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwhumi",  VX(4, 1100), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwhumia", VX(4, 1132), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
25345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwlumi",  VX(4, 1096), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwlumia", VX(4, 1128), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
25375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwlssiaaw",VX(4, 1345), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwlsmiaaw",VX(4, 1353), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwlusiaaw",VX(4, 1344), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwlumiaaw",VX(4, 1352), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
25425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwlssianw",VX(4, 1473), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwlsmianw",VX(4, 1481), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwlusianw",VX(4, 1472), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwlumianw",VX(4, 1480), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
25475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwssf",   VX(4, 1107), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwssfa",  VX(4, 1139), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwsmf",   VX(4, 1115), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwsmfa",  VX(4, 1147), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwsmi",   VX(4, 1113), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwsmia",  VX(4, 1145), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwumi",   VX(4, 1112), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwumia",  VX(4, 1144), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
25565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwssfaa", VX(4, 1363), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwsmfaa", VX(4, 1371), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwsmiaa", VX(4, 1369), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwumiaa", VX(4, 1368), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
25615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwssfan", VX(4, 1491), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwsmfan", VX(4, 1499), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwsmian", VX(4, 1497), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmwumian", VX(4, 1496), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
25665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evaddssiaaw",VX(4, 1217), VX_MASK,	PPCSPE,		{ RS, RA } },
25675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evaddsmiaaw",VX(4, 1225), VX_MASK,	PPCSPE,		{ RS, RA } },
25685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evaddusiaaw",VX(4, 1216), VX_MASK,	PPCSPE,		{ RS, RA } },
25695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evaddumiaaw",VX(4, 1224), VX_MASK,	PPCSPE,		{ RS, RA } },
25705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
25715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evsubfssiaaw",VX(4, 1219), VX_MASK,	PPCSPE,		{ RS, RA } },
25725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evsubfsmiaaw",VX(4, 1227), VX_MASK,	PPCSPE,		{ RS, RA } },
25735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evsubfusiaaw",VX(4, 1218), VX_MASK,	PPCSPE,		{ RS, RA } },
25745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evsubfumiaaw",VX(4, 1226), VX_MASK,	PPCSPE,		{ RS, RA } },
25755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
25765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evmra",    VX(4, 1220), VX_MASK,	PPCSPE,		{ RS, RA } },
25775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
25785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evdivws",  VX(4, 1222), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "evdivwu",  VX(4, 1223), VX_MASK,	PPCSPE,		{ RS, RA, RB } },
25805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
25815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mulli",   OP(7),	OP_MASK,	PPCCOM,		{ RT, RA, SI } },
25825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "muli",    OP(7),	OP_MASK,	PWRCOM,		{ RT, RA, SI } },
25835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
25845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subfic",  OP(8),	OP_MASK,	PPCCOM,		{ RT, RA, SI } },
25855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sfi",     OP(8),	OP_MASK,	PWRCOM,		{ RT, RA, SI } },
25865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
25875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dozi",    OP(9),	OP_MASK,	M601,		{ RT, RA, SI } },
25885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
25895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bce",     B(9,0,0),	B_MASK,		BOOKE64,	{ BO, BI, BD } },
25905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bcel",    B(9,0,1),	B_MASK,		BOOKE64,	{ BO, BI, BD } },
25915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bcea",    B(9,1,0),	B_MASK,		BOOKE64,	{ BO, BI, BDA } },
25925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bcela",   B(9,1,1),	B_MASK,		BOOKE64,	{ BO, BI, BDA } },
25935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
25945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cmplwi",  OPL(10,0),	OPL_MASK,	PPCCOM,		{ OBF, RA, UI } },
25955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cmpldi",  OPL(10,1), OPL_MASK,	PPC64,		{ OBF, RA, UI } },
25968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "cmpli",   OP(10),	OP_MASK,	PPC,		{ BF, L, RA, UI } },
25975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cmpli",   OP(10),	OP_MASK,	PWRCOM,		{ BF, RA, UI } },
25988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
25995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cmpwi",   OPL(11,0),	OPL_MASK,	PPCCOM,		{ OBF, RA, SI } },
26005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cmpdi",   OPL(11,1),	OPL_MASK,	PPC64,		{ OBF, RA, SI } },
26018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "cmpi",    OP(11),	OP_MASK,	PPC,		{ BF, L, RA, SI } },
26025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cmpi",    OP(11),	OP_MASK,	PWRCOM,		{ BF, RA, SI } },
26035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
26045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "addic",   OP(12),	OP_MASK,	PPCCOM,		{ RT, RA, SI } },
26055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ai",	     OP(12),	OP_MASK,	PWRCOM,		{ RT, RA, SI } },
26065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subic",   OP(12),	OP_MASK,	PPCCOM,		{ RT, RA, NSI } },
26075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
26085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "addic.",  OP(13),	OP_MASK,	PPCCOM,		{ RT, RA, SI } },
26095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ai.",     OP(13),	OP_MASK,	PWRCOM,		{ RT, RA, SI } },
26105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subic.",  OP(13),	OP_MASK,	PPCCOM,		{ RT, RA, NSI } },
26115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
26125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "li",	     OP(14),	DRA_MASK,	PPCCOM,		{ RT, SI } },
26135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lil",     OP(14),	DRA_MASK,	PWRCOM,		{ RT, SI } },
26145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "addi",    OP(14),	OP_MASK,	PPCCOM,		{ RT, RA0, SI } },
26155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cal",     OP(14),	OP_MASK,	PWRCOM,		{ RT, D, RA0 } },
26165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subi",    OP(14),	OP_MASK,	PPCCOM,		{ RT, RA0, NSI } },
26175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "la",	     OP(14),	OP_MASK,	PPCCOM,		{ RT, D, RA0 } },
26185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
26195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lis",     OP(15),	DRA_MASK,	PPCCOM,		{ RT, SISIGNOPT } },
26205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "liu",     OP(15),	DRA_MASK,	PWRCOM,		{ RT, SISIGNOPT } },
26215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "addis",   OP(15),	OP_MASK,	PPCCOM,		{ RT,RA0,SISIGNOPT } },
26225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cau",     OP(15),	OP_MASK,	PWRCOM,		{ RT,RA0,SISIGNOPT } },
26235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subis",   OP(15),	OP_MASK,	PPCCOM,		{ RT, RA0, NSI } },
26245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
26255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnz-",   BBO(16,BODNZ,0,0),      BBOATBI_MASK, PPCCOM,	{ BDM } },
26265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnz+",   BBO(16,BODNZ,0,0),      BBOATBI_MASK, PPCCOM,	{ BDP } },
26275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnz",    BBO(16,BODNZ,0,0),      BBOATBI_MASK, PPCCOM,	{ BD } },
26285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdn",     BBO(16,BODNZ,0,0),      BBOATBI_MASK, PWRCOM,	{ BD } },
26295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzl-",  BBO(16,BODNZ,0,1),      BBOATBI_MASK, PPCCOM,	{ BDM } },
26305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzl+",  BBO(16,BODNZ,0,1),      BBOATBI_MASK, PPCCOM,	{ BDP } },
26315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzl",   BBO(16,BODNZ,0,1),      BBOATBI_MASK, PPCCOM,	{ BD } },
26325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnl",    BBO(16,BODNZ,0,1),      BBOATBI_MASK, PWRCOM,	{ BD } },
26335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnza-",  BBO(16,BODNZ,1,0),      BBOATBI_MASK, PPCCOM,	{ BDMA } },
26345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnza+",  BBO(16,BODNZ,1,0),      BBOATBI_MASK, PPCCOM,	{ BDPA } },
26355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnza",   BBO(16,BODNZ,1,0),      BBOATBI_MASK, PPCCOM,	{ BDA } },
26365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdna",    BBO(16,BODNZ,1,0),      BBOATBI_MASK, PWRCOM,	{ BDA } },
26375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzla-", BBO(16,BODNZ,1,1),      BBOATBI_MASK, PPCCOM,	{ BDMA } },
26385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzla+", BBO(16,BODNZ,1,1),      BBOATBI_MASK, PPCCOM,	{ BDPA } },
26395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzla",  BBO(16,BODNZ,1,1),      BBOATBI_MASK, PPCCOM,	{ BDA } },
26405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnla",   BBO(16,BODNZ,1,1),      BBOATBI_MASK, PWRCOM,	{ BDA } },
26415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdz-",    BBO(16,BODZ,0,0),       BBOATBI_MASK, PPCCOM,	{ BDM } },
26425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdz+",    BBO(16,BODZ,0,0),       BBOATBI_MASK, PPCCOM,	{ BDP } },
26435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdz",     BBO(16,BODZ,0,0),       BBOATBI_MASK, COM,		{ BD } },
26445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzl-",   BBO(16,BODZ,0,1),       BBOATBI_MASK, PPCCOM,	{ BDM } },
26455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzl+",   BBO(16,BODZ,0,1),       BBOATBI_MASK, PPCCOM,	{ BDP } },
26465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzl",    BBO(16,BODZ,0,1),       BBOATBI_MASK, COM,		{ BD } },
26475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdza-",   BBO(16,BODZ,1,0),       BBOATBI_MASK, PPCCOM,	{ BDMA } },
26485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdza+",   BBO(16,BODZ,1,0),       BBOATBI_MASK, PPCCOM,	{ BDPA } },
26495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdza",    BBO(16,BODZ,1,0),       BBOATBI_MASK, COM,		{ BDA } },
26505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzla-",  BBO(16,BODZ,1,1),       BBOATBI_MASK, PPCCOM,	{ BDMA } },
26515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzla+",  BBO(16,BODZ,1,1),       BBOATBI_MASK, PPCCOM,	{ BDPA } },
26525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzla",   BBO(16,BODZ,1,1),       BBOATBI_MASK, COM,		{ BDA } },
26535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blt-",    BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, PPCCOM,	{ CR, BDM } },
26545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blt+",    BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, PPCCOM,	{ CR, BDP } },
26555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blt",     BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, COM,		{ CR, BD } },
26565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltl-",   BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, PPCCOM,	{ CR, BDM } },
26575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltl+",   BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, PPCCOM,	{ CR, BDP } },
26585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltl",    BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, COM,		{ CR, BD } },
26595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blta-",   BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, PPCCOM,	{ CR, BDMA } },
26605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blta+",   BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, PPCCOM,	{ CR, BDPA } },
26615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blta",    BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, COM,		{ CR, BDA } },
26625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltla-",  BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, PPCCOM,	{ CR, BDMA } },
26635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltla+",  BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, PPCCOM,	{ CR, BDPA } },
26645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltla",   BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, COM,		{ CR, BDA } },
26655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgt-",    BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, PPCCOM,	{ CR, BDM } },
26665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgt+",    BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, PPCCOM,	{ CR, BDP } },
26675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgt",     BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, COM,		{ CR, BD } },
26685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtl-",   BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, PPCCOM,	{ CR, BDM } },
26695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtl+",   BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, PPCCOM,	{ CR, BDP } },
26705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtl",    BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, COM,		{ CR, BD } },
26715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgta-",   BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, PPCCOM,	{ CR, BDMA } },
26725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgta+",   BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, PPCCOM,	{ CR, BDPA } },
26735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgta",    BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, COM,		{ CR, BDA } },
26745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtla-",  BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, PPCCOM,	{ CR, BDMA } },
26755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtla+",  BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, PPCCOM,	{ CR, BDPA } },
26765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtla",   BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, COM,		{ CR, BDA } },
26775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beq-",    BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, PPCCOM,	{ CR, BDM } },
26785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beq+",    BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, PPCCOM,	{ CR, BDP } },
26795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beq",     BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, COM,		{ CR, BD } },
26805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beql-",   BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, PPCCOM,	{ CR, BDM } },
26815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beql+",   BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, PPCCOM,	{ CR, BDP } },
26825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beql",    BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, COM,		{ CR, BD } },
26835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqa-",   BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, PPCCOM,	{ CR, BDMA } },
26845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqa+",   BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, PPCCOM,	{ CR, BDPA } },
26855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqa",    BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, COM,		{ CR, BDA } },
26865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqla-",  BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, PPCCOM,	{ CR, BDMA } },
26875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqla+",  BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, PPCCOM,	{ CR, BDPA } },
26885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqla",   BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, COM,		{ CR, BDA } },
26895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bso-",    BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM,	{ CR, BDM } },
26905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bso+",    BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM,	{ CR, BDP } },
26915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bso",     BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, COM,		{ CR, BD } },
26925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsol-",   BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM,	{ CR, BDM } },
26935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsol+",   BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM,	{ CR, BDP } },
26945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsol",    BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, COM,		{ CR, BD } },
26955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsoa-",   BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM,	{ CR, BDMA } },
26965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsoa+",   BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM,	{ CR, BDPA } },
26975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsoa",    BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, COM,		{ CR, BDA } },
26985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsola-",  BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM,	{ CR, BDMA } },
26995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsola+",  BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM,	{ CR, BDPA } },
27005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsola",   BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, COM,		{ CR, BDA } },
27015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bun-",    BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM,	{ CR, BDM } },
27025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bun+",    BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM,	{ CR, BDP } },
27035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bun",     BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM,	{ CR, BD } },
27045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bunl-",   BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM,	{ CR, BDM } },
27055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bunl+",   BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM,	{ CR, BDP } },
27065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bunl",    BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM,	{ CR, BD } },
27075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "buna-",   BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM,	{ CR, BDMA } },
27085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "buna+",   BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM,	{ CR, BDPA } },
27095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "buna",    BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM,	{ CR, BDA } },
27105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bunla-",  BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM,	{ CR, BDMA } },
27115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bunla+",  BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM,	{ CR, BDPA } },
27125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bunla",   BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM,	{ CR, BDA } },
27135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bge-",    BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM,	{ CR, BDM } },
27145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bge+",    BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM,	{ CR, BDP } },
27155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bge",     BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, COM,		{ CR, BD } },
27165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgel-",   BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM,	{ CR, BDM } },
27175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgel+",   BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM,	{ CR, BDP } },
27185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgel",    BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, COM,		{ CR, BD } },
27195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgea-",   BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM,	{ CR, BDMA } },
27205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgea+",   BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM,	{ CR, BDPA } },
27215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgea",    BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, COM,		{ CR, BDA } },
27225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgela-",  BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM,	{ CR, BDMA } },
27235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgela+",  BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM,	{ CR, BDPA } },
27245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgela",   BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, COM,		{ CR, BDA } },
27255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnl-",    BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM,	{ CR, BDM } },
27265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnl+",    BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM,	{ CR, BDP } },
27275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnl",     BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, COM,		{ CR, BD } },
27285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnll-",   BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM,	{ CR, BDM } },
27295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnll+",   BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM,	{ CR, BDP } },
27305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnll",    BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, COM,		{ CR, BD } },
27315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnla-",   BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM,	{ CR, BDMA } },
27325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnla+",   BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM,	{ CR, BDPA } },
27335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnla",    BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, COM,		{ CR, BDA } },
27345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnlla-",  BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM,	{ CR, BDMA } },
27355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnlla+",  BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM,	{ CR, BDPA } },
27365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnlla",   BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, COM,		{ CR, BDA } },
27375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ble-",    BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM,	{ CR, BDM } },
27385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ble+",    BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM,	{ CR, BDP } },
27395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ble",     BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, COM,		{ CR, BD } },
27405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blel-",   BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM,	{ CR, BDM } },
27415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blel+",   BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM,	{ CR, BDP } },
27425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blel",    BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, COM,		{ CR, BD } },
27435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blea-",   BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM,	{ CR, BDMA } },
27445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blea+",   BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM,	{ CR, BDPA } },
27455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blea",    BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, COM,		{ CR, BDA } },
27465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blela-",  BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM,	{ CR, BDMA } },
27475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blela+",  BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM,	{ CR, BDPA } },
27485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blela",   BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, COM,		{ CR, BDA } },
27495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bng-",    BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM,	{ CR, BDM } },
27505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bng+",    BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM,	{ CR, BDP } },
27515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bng",     BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, COM,		{ CR, BD } },
27525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bngl-",   BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM,	{ CR, BDM } },
27535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bngl+",   BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM,	{ CR, BDP } },
27545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bngl",    BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, COM,		{ CR, BD } },
27555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnga-",   BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM,	{ CR, BDMA } },
27565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnga+",   BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM,	{ CR, BDPA } },
27575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnga",    BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, COM,		{ CR, BDA } },
27585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bngla-",  BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM,	{ CR, BDMA } },
27595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bngla+",  BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM,	{ CR, BDPA } },
27605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bngla",   BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, COM,		{ CR, BDA } },
27615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bne-",    BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, PPCCOM,	{ CR, BDM } },
27625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bne+",    BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, PPCCOM,	{ CR, BDP } },
27635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bne",     BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, COM,		{ CR, BD } },
27645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnel-",   BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, PPCCOM,	{ CR, BDM } },
27655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnel+",   BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, PPCCOM,	{ CR, BDP } },
27665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnel",    BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, COM,		{ CR, BD } },
27675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnea-",   BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, PPCCOM,	{ CR, BDMA } },
27685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnea+",   BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, PPCCOM,	{ CR, BDPA } },
27695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnea",    BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, COM,		{ CR, BDA } },
27705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnela-",  BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, PPCCOM,	{ CR, BDMA } },
27715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnela+",  BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, PPCCOM,	{ CR, BDPA } },
27725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnela",   BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, COM,		{ CR, BDA } },
27735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bns-",    BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM,	{ CR, BDM } },
27745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bns+",    BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM,	{ CR, BDP } },
27755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bns",     BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, COM,		{ CR, BD } },
27765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnsl-",   BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM,	{ CR, BDM } },
27775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnsl+",   BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM,	{ CR, BDP } },
27785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnsl",    BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, COM,		{ CR, BD } },
27795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnsa-",   BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM,	{ CR, BDMA } },
27805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnsa+",   BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM,	{ CR, BDPA } },
27815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnsa",    BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, COM,		{ CR, BDA } },
27825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnsla-",  BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM,	{ CR, BDMA } },
27835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnsla+",  BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM,	{ CR, BDPA } },
27845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnsla",   BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, COM,		{ CR, BDA } },
27855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnu-",    BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM,	{ CR, BDM } },
27865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnu+",    BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM,	{ CR, BDP } },
27875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnu",     BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM,	{ CR, BD } },
27885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnul-",   BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM,	{ CR, BDM } },
27895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnul+",   BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM,	{ CR, BDP } },
27905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnul",    BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM,	{ CR, BD } },
27915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnua-",   BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM,	{ CR, BDMA } },
27925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnua+",   BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM,	{ CR, BDPA } },
27935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnua",    BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM,	{ CR, BDA } },
27945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnula-",  BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM,	{ CR, BDMA } },
27955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnula+",  BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM,	{ CR, BDPA } },
27965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnula",   BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM,	{ CR, BDA } },
27975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzt-",  BBO(16,BODNZT,0,0), BBOY_MASK, NOPOWER4,	{ BI, BDM } },
27985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzt+",  BBO(16,BODNZT,0,0), BBOY_MASK, NOPOWER4,	{ BI, BDP } },
27995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzt",   BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM,	{ BI, BD } },
28005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnztl-", BBO(16,BODNZT,0,1), BBOY_MASK, NOPOWER4,	{ BI, BDM } },
28015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnztl+", BBO(16,BODNZT,0,1), BBOY_MASK, NOPOWER4,	{ BI, BDP } },
28025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnztl",  BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM,	{ BI, BD } },
28035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzta-", BBO(16,BODNZT,1,0), BBOY_MASK, NOPOWER4,	{ BI, BDMA } },
28045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzta+", BBO(16,BODNZT,1,0), BBOY_MASK, NOPOWER4,	{ BI, BDPA } },
28055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzta",  BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM,	{ BI, BDA } },
28065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnztla-",BBO(16,BODNZT,1,1), BBOY_MASK, NOPOWER4,	{ BI, BDMA } },
28075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnztla+",BBO(16,BODNZT,1,1), BBOY_MASK, NOPOWER4,	{ BI, BDPA } },
28085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnztla", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM,	{ BI, BDA } },
28095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzf-",  BBO(16,BODNZF,0,0), BBOY_MASK, NOPOWER4,	{ BI, BDM } },
28105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzf+",  BBO(16,BODNZF,0,0), BBOY_MASK, NOPOWER4,	{ BI, BDP } },
28115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzf",   BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM,	{ BI, BD } },
28125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzfl-", BBO(16,BODNZF,0,1), BBOY_MASK, NOPOWER4,	{ BI, BDM } },
28135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzfl+", BBO(16,BODNZF,0,1), BBOY_MASK, NOPOWER4,	{ BI, BDP } },
28145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzfl",  BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM,	{ BI, BD } },
28155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzfa-", BBO(16,BODNZF,1,0), BBOY_MASK, NOPOWER4,	{ BI, BDMA } },
28165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzfa+", BBO(16,BODNZF,1,0), BBOY_MASK, NOPOWER4,	{ BI, BDPA } },
28175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzfa",  BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM,	{ BI, BDA } },
28185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzfla-",BBO(16,BODNZF,1,1), BBOY_MASK, NOPOWER4,	{ BI, BDMA } },
28195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzfla+",BBO(16,BODNZF,1,1), BBOY_MASK, NOPOWER4,	{ BI, BDPA } },
28205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzfla", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM,	{ BI, BDA } },
28215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bt-",     BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM,	{ BI, BDM } },
28225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bt+",     BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM,	{ BI, BDP } },
28235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bt",	     BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM,	{ BI, BD } },
28245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bbt",     BBO(16,BOT,0,0), BBOAT_MASK, PWRCOM,	{ BI, BD } },
28255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "btl-",    BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM,	{ BI, BDM } },
28265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "btl+",    BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM,	{ BI, BDP } },
28275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "btl",     BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM,	{ BI, BD } },
28285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bbtl",    BBO(16,BOT,0,1), BBOAT_MASK, PWRCOM,	{ BI, BD } },
28295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bta-",    BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM,	{ BI, BDMA } },
28305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bta+",    BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM,	{ BI, BDPA } },
28315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bta",     BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM,	{ BI, BDA } },
28325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bbta",    BBO(16,BOT,1,0), BBOAT_MASK, PWRCOM,	{ BI, BDA } },
28335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "btla-",   BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM,	{ BI, BDMA } },
28345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "btla+",   BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM,	{ BI, BDPA } },
28355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "btla",    BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM,	{ BI, BDA } },
28365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bbtla",   BBO(16,BOT,1,1), BBOAT_MASK, PWRCOM,	{ BI, BDA } },
28375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bf-",     BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM,	{ BI, BDM } },
28385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bf+",     BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM,	{ BI, BDP } },
28395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bf",	     BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM,	{ BI, BD } },
28405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bbf",     BBO(16,BOF,0,0), BBOAT_MASK, PWRCOM,	{ BI, BD } },
28415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bfl-",    BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM,	{ BI, BDM } },
28425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bfl+",    BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM,	{ BI, BDP } },
28435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bfl",     BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM,	{ BI, BD } },
28445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bbfl",    BBO(16,BOF,0,1), BBOAT_MASK, PWRCOM,	{ BI, BD } },
28455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bfa-",    BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM,	{ BI, BDMA } },
28465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bfa+",    BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM,	{ BI, BDPA } },
28475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bfa",     BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM,	{ BI, BDA } },
28485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bbfa",    BBO(16,BOF,1,0), BBOAT_MASK, PWRCOM,	{ BI, BDA } },
28495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bfla-",   BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM,	{ BI, BDMA } },
28505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bfla+",   BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM,	{ BI, BDPA } },
28515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bfla",    BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM,	{ BI, BDA } },
28525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bbfla",   BBO(16,BOF,1,1), BBOAT_MASK, PWRCOM,	{ BI, BDA } },
28535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzt-",   BBO(16,BODZT,0,0), BBOY_MASK, NOPOWER4,	{ BI, BDM } },
28545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzt+",   BBO(16,BODZT,0,0), BBOY_MASK, NOPOWER4,	{ BI, BDP } },
28555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzt",    BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM,	{ BI, BD } },
28565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdztl-",  BBO(16,BODZT,0,1), BBOY_MASK, NOPOWER4,	{ BI, BDM } },
28575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdztl+",  BBO(16,BODZT,0,1), BBOY_MASK, NOPOWER4,	{ BI, BDP } },
28585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdztl",   BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM,	{ BI, BD } },
28595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzta-",  BBO(16,BODZT,1,0), BBOY_MASK, NOPOWER4,	{ BI, BDMA } },
28605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzta+",  BBO(16,BODZT,1,0), BBOY_MASK, NOPOWER4,	{ BI, BDPA } },
28615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzta",   BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM,	{ BI, BDA } },
28625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdztla-", BBO(16,BODZT,1,1), BBOY_MASK, NOPOWER4,	{ BI, BDMA } },
28635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdztla+", BBO(16,BODZT,1,1), BBOY_MASK, NOPOWER4,	{ BI, BDPA } },
28645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdztla",  BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM,	{ BI, BDA } },
28655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzf-",   BBO(16,BODZF,0,0), BBOY_MASK, NOPOWER4,	{ BI, BDM } },
28665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzf+",   BBO(16,BODZF,0,0), BBOY_MASK, NOPOWER4,	{ BI, BDP } },
28675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzf",    BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM,	{ BI, BD } },
28685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzfl-",  BBO(16,BODZF,0,1), BBOY_MASK, NOPOWER4,	{ BI, BDM } },
28695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzfl+",  BBO(16,BODZF,0,1), BBOY_MASK, NOPOWER4,	{ BI, BDP } },
28705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzfl",   BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM,	{ BI, BD } },
28715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzfa-",  BBO(16,BODZF,1,0), BBOY_MASK, NOPOWER4,	{ BI, BDMA } },
28725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzfa+",  BBO(16,BODZF,1,0), BBOY_MASK, NOPOWER4,	{ BI, BDPA } },
28735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzfa",   BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM,	{ BI, BDA } },
28745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzfla-", BBO(16,BODZF,1,1), BBOY_MASK, NOPOWER4,	{ BI, BDMA } },
28755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzfla+", BBO(16,BODZF,1,1), BBOY_MASK, NOPOWER4,	{ BI, BDPA } },
28765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzfla",  BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM,	{ BI, BDA } },
28775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bc-",     B(16,0,0),	B_MASK,		PPCCOM,		{ BOE, BI, BDM } },
28785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bc+",     B(16,0,0),	B_MASK,		PPCCOM,		{ BOE, BI, BDP } },
28795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bc",	     B(16,0,0),	B_MASK,		COM,		{ BO, BI, BD } },
28805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bcl-",    B(16,0,1),	B_MASK,		PPCCOM,		{ BOE, BI, BDM } },
28815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bcl+",    B(16,0,1),	B_MASK,		PPCCOM,		{ BOE, BI, BDP } },
28825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bcl",     B(16,0,1),	B_MASK,		COM,		{ BO, BI, BD } },
28835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bca-",    B(16,1,0),	B_MASK,		PPCCOM,		{ BOE, BI, BDMA } },
28845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bca+",    B(16,1,0),	B_MASK,		PPCCOM,		{ BOE, BI, BDPA } },
28855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bca",     B(16,1,0),	B_MASK,		COM,		{ BO, BI, BDA } },
28865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bcla-",   B(16,1,1),	B_MASK,		PPCCOM,		{ BOE, BI, BDMA } },
28875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bcla+",   B(16,1,1),	B_MASK,		PPCCOM,		{ BOE, BI, BDPA } },
28885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bcla",    B(16,1,1),	B_MASK,		COM,		{ BO, BI, BDA } },
28895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
28905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sc",      SC(17,1,0), SC_MASK,	PPC,		{ LEV } },
28915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "svc",     SC(17,0,0), SC_MASK,	POWER,		{ SVC_LEV, FL1, FL2 } },
28925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "svcl",    SC(17,0,1), SC_MASK,	POWER,		{ SVC_LEV, FL1, FL2 } },
28935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "svca",    SC(17,1,0), SC_MASK,	PWRCOM,		{ SV } },
28948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "svcla",   SC(17,1,1), SC_MASK,	POWER,		{ SV } },
28958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
28965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "b",	     B(18,0,0),	B_MASK,		COM,		{ LI } },
28975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bl",      B(18,0,1),	B_MASK,		COM,		{ LI } },
28985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ba",      B(18,1,0),	B_MASK,		COM,		{ LIA } },
28995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bla",     B(18,1,1),	B_MASK,		COM,		{ LIA } },
29005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
29015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mcrf",    XL(19,0),	XLBB_MASK|(3 << 21)|(3 << 16), COM,	{ BF, BFA } },
29025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
29035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blr",     XLO(19,BOU,16,0), XLBOBIBB_MASK, PPCCOM,	{ 0 } },
29045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "br",      XLO(19,BOU,16,0), XLBOBIBB_MASK, PWRCOM,	{ 0 } },
29055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blrl",    XLO(19,BOU,16,1), XLBOBIBB_MASK, PPCCOM,	{ 0 } },
29065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "brl",     XLO(19,BOU,16,1), XLBOBIBB_MASK, PWRCOM,	{ 0 } },
29075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzlr",  XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPCCOM,	{ 0 } },
29085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzlr-", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, NOPOWER4,	{ 0 } },
29095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzlr-", XLO(19,BODNZM4,16,0), XLBOBIBB_MASK, POWER4,	{ 0 } },
29105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzlr+", XLO(19,BODNZP,16,0), XLBOBIBB_MASK, NOPOWER4,	{ 0 } },
29115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzlr+", XLO(19,BODNZP4,16,0), XLBOBIBB_MASK, POWER4,	{ 0 } },
29125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzlrl", XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPCCOM,	{ 0 } },
29135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzlrl-",XLO(19,BODNZ,16,1), XLBOBIBB_MASK, NOPOWER4,	{ 0 } },
29145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzlrl-",XLO(19,BODNZM4,16,1), XLBOBIBB_MASK, POWER4,	{ 0 } },
29155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzlrl+",XLO(19,BODNZP,16,1), XLBOBIBB_MASK, NOPOWER4,	{ 0 } },
29165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzlrl+",XLO(19,BODNZP4,16,1), XLBOBIBB_MASK, POWER4,	{ 0 } },
29175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzlr",   XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPCCOM,	{ 0 } },
29185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzlr-",  XLO(19,BODZ,16,0), XLBOBIBB_MASK, NOPOWER4,	{ 0 } },
29195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzlr-",  XLO(19,BODZM4,16,0), XLBOBIBB_MASK, POWER4,	{ 0 } },
29205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzlr+",  XLO(19,BODZP,16,0), XLBOBIBB_MASK, NOPOWER4,	{ 0 } },
29215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzlr+",  XLO(19,BODZP4,16,0), XLBOBIBB_MASK, POWER4,	{ 0 } },
29225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzlrl",  XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPCCOM,	{ 0 } },
29235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzlrl-", XLO(19,BODZ,16,1), XLBOBIBB_MASK, NOPOWER4,	{ 0 } },
29245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzlrl-", XLO(19,BODZM4,16,1), XLBOBIBB_MASK, POWER4,	{ 0 } },
29255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzlrl+", XLO(19,BODZP,16,1), XLBOBIBB_MASK, NOPOWER4,	{ 0 } },
29265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzlrl+", XLO(19,BODZP4,16,1), XLBOBIBB_MASK, POWER4,	{ 0 } },
29275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltlr",   XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
29285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltlr-",  XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
29295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltlr-",  XLOCB(19,BOTM4,CBLT,16,0), XLBOCBBB_MASK, POWER4, { CR } },
29305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltlr+",  XLOCB(19,BOTP,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
29315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltlr+",  XLOCB(19,BOTP4,CBLT,16,0), XLBOCBBB_MASK, POWER4, { CR } },
29325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltr",    XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
29335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltlrl",  XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
29345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltlrl-", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
29355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltlrl-", XLOCB(19,BOTM4,CBLT,16,1), XLBOCBBB_MASK, POWER4, { CR } },
29365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltlrl+", XLOCB(19,BOTP,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
29375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltlrl+", XLOCB(19,BOTP4,CBLT,16,1), XLBOCBBB_MASK, POWER4, { CR } },
29385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltrl",   XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
29395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtlr",   XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
29405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtlr-",  XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
29415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtlr-",  XLOCB(19,BOTM4,CBGT,16,0), XLBOCBBB_MASK, POWER4, { CR } },
29425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtlr+",  XLOCB(19,BOTP,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
29435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtlr+",  XLOCB(19,BOTP4,CBGT,16,0), XLBOCBBB_MASK, POWER4, { CR } },
29445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtr",    XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
29455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtlrl",  XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
29465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtlrl-", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
29475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtlrl-", XLOCB(19,BOTM4,CBGT,16,1), XLBOCBBB_MASK, POWER4, { CR } },
29485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtlrl+", XLOCB(19,BOTP,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
29495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtlrl+", XLOCB(19,BOTP4,CBGT,16,1), XLBOCBBB_MASK, POWER4, { CR } },
29505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtrl",   XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
29515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqlr",   XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
29525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqlr-",  XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
29535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqlr-",  XLOCB(19,BOTM4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, { CR } },
29545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqlr+",  XLOCB(19,BOTP,CBEQ,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
29555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqlr+",  XLOCB(19,BOTP4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, { CR } },
29565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqr",    XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
29575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqlrl",  XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
29585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqlrl-", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
29595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqlrl-", XLOCB(19,BOTM4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, { CR } },
29605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqlrl+", XLOCB(19,BOTP,CBEQ,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
29615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqlrl+", XLOCB(19,BOTP4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, { CR } },
29625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqrl",   XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
29635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsolr",   XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
29645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsolr-",  XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
29655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsolr-",  XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } },
29665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsolr+",  XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
29675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsolr+",  XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } },
29685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsor",    XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
29695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsolrl",  XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
29705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsolrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
29715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsolrl-", XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } },
29725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsolrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
29735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsolrl+", XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } },
29745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsorl",   XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
29755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bunlr",   XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
29765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bunlr-",  XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
29775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bunlr-",  XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } },
29785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bunlr+",  XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
29795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bunlr+",  XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } },
29805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bunlrl",  XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
29815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bunlrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
29825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bunlrl-", XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } },
29835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bunlrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
29845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bunlrl+", XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } },
29855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgelr",   XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
29865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgelr-",  XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
29875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgelr-",  XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, POWER4, { CR } },
29885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgelr+",  XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
29895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgelr+",  XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, POWER4, { CR } },
29905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bger",    XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
29915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgelrl",  XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
29925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgelrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
29935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgelrl-", XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, POWER4, { CR } },
29945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgelrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
29955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgelrl+", XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, POWER4, { CR } },
29965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgerl",   XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
29975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnllr",   XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
29985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnllr-",  XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
29995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnllr-",  XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, POWER4, { CR } },
30005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnllr+",  XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
30015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnllr+",  XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, POWER4, { CR } },
30025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnlr",    XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
30035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnllrl",  XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
30045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnllrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
30055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnllrl-", XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, POWER4, { CR } },
30065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnllrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
30075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnllrl+", XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, POWER4, { CR } },
30085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnlrl",   XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
30095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blelr",   XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
30105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blelr-",  XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
30115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blelr-",  XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, POWER4, { CR } },
30125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blelr+",  XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
30135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blelr+",  XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, POWER4, { CR } },
30145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bler",    XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
30155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blelrl",  XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
30165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blelrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
30175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blelrl-", XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, POWER4, { CR } },
30185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blelrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
30195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blelrl+", XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, POWER4, { CR } },
30205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blerl",   XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
30215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnglr",   XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
30225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnglr-",  XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
30235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnglr-",  XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, POWER4, { CR } },
30245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnglr+",  XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
30255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnglr+",  XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, POWER4, { CR } },
30265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bngr",    XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
30275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnglrl",  XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
30285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnglrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
30295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnglrl-", XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, POWER4, { CR } },
30305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnglrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
30315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnglrl+", XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, POWER4, { CR } },
30325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bngrl",   XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
30335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnelr",   XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
30345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnelr-",  XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
30355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnelr-",  XLOCB(19,BOFM4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, { CR } },
30365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnelr+",  XLOCB(19,BOFP,CBEQ,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
30375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnelr+",  XLOCB(19,BOFP4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, { CR } },
30385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bner",    XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
30395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnelrl",  XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
30405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnelrl-", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
30415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnelrl-", XLOCB(19,BOFM4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, { CR } },
30425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnelrl+", XLOCB(19,BOFP,CBEQ,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
30435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnelrl+", XLOCB(19,BOFP4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, { CR } },
30445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnerl",   XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
30455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnslr",   XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
30465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnslr-",  XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
30475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnslr-",  XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } },
30485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnslr+",  XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
30495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnslr+",  XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } },
30505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnsr",    XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
30515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnslrl",  XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
30525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnslrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
30535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnslrl-", XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } },
30545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnslrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
30555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnslrl+", XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } },
30565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnsrl",   XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
30575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnulr",   XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
30585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnulr-",  XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
30595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnulr-",  XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } },
30605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnulr+",  XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
30615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnulr+",  XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } },
30625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnulrl",  XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
30635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnulrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
30645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnulrl-", XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } },
30655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnulrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
30665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnulrl+", XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } },
30675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "btlr",    XLO(19,BOT,16,0), XLBOBB_MASK, PPCCOM,	{ BI } },
30685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "btlr-",   XLO(19,BOT,16,0), XLBOBB_MASK, NOPOWER4,	{ BI } },
30695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "btlr-",   XLO(19,BOTM4,16,0), XLBOBB_MASK, POWER4,	{ BI } },
30705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "btlr+",   XLO(19,BOTP,16,0), XLBOBB_MASK, NOPOWER4,	{ BI } },
30715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "btlr+",   XLO(19,BOTP4,16,0), XLBOBB_MASK, POWER4,	{ BI } },
30725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bbtr",    XLO(19,BOT,16,0), XLBOBB_MASK, PWRCOM,	{ BI } },
30735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "btlrl",   XLO(19,BOT,16,1), XLBOBB_MASK, PPCCOM,	{ BI } },
30745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "btlrl-",  XLO(19,BOT,16,1), XLBOBB_MASK, NOPOWER4,	{ BI } },
30755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "btlrl-",  XLO(19,BOTM4,16,1), XLBOBB_MASK, POWER4,	{ BI } },
30765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "btlrl+",  XLO(19,BOTP,16,1), XLBOBB_MASK, NOPOWER4,	{ BI } },
30775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "btlrl+",  XLO(19,BOTP4,16,1), XLBOBB_MASK, POWER4,	{ BI } },
30785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bbtrl",   XLO(19,BOT,16,1), XLBOBB_MASK, PWRCOM,	{ BI } },
30795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bflr",    XLO(19,BOF,16,0), XLBOBB_MASK, PPCCOM,	{ BI } },
30805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bflr-",   XLO(19,BOF,16,0), XLBOBB_MASK, NOPOWER4,	{ BI } },
30815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bflr-",   XLO(19,BOFM4,16,0), XLBOBB_MASK, POWER4,	{ BI } },
30825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bflr+",   XLO(19,BOFP,16,0), XLBOBB_MASK, NOPOWER4,	{ BI } },
30835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bflr+",   XLO(19,BOFP4,16,0), XLBOBB_MASK, POWER4,	{ BI } },
30845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bbfr",    XLO(19,BOF,16,0), XLBOBB_MASK, PWRCOM,	{ BI } },
30855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bflrl",   XLO(19,BOF,16,1), XLBOBB_MASK, PPCCOM,	{ BI } },
30865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bflrl-",  XLO(19,BOF,16,1), XLBOBB_MASK, NOPOWER4,	{ BI } },
30875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bflrl-",  XLO(19,BOFM4,16,1), XLBOBB_MASK, POWER4,	{ BI } },
30885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bflrl+",  XLO(19,BOFP,16,1), XLBOBB_MASK, NOPOWER4,	{ BI } },
30895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bflrl+",  XLO(19,BOFP4,16,1), XLBOBB_MASK, POWER4,	{ BI } },
30905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bbfrl",   XLO(19,BOF,16,1), XLBOBB_MASK, PWRCOM,	{ BI } },
30915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnztlr", XLO(19,BODNZT,16,0), XLBOBB_MASK, PPCCOM,	{ BI } },
30925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnztlr-",XLO(19,BODNZT,16,0), XLBOBB_MASK, NOPOWER4, { BI } },
30935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnztlr+",XLO(19,BODNZTP,16,0), XLBOBB_MASK, NOPOWER4, { BI } },
30945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnztlrl",XLO(19,BODNZT,16,1), XLBOBB_MASK, PPCCOM,	{ BI } },
30955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnztlrl-",XLO(19,BODNZT,16,1), XLBOBB_MASK, NOPOWER4, { BI } },
30965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnztlrl+",XLO(19,BODNZTP,16,1), XLBOBB_MASK, NOPOWER4, { BI } },
30975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzflr", XLO(19,BODNZF,16,0), XLBOBB_MASK, PPCCOM,	{ BI } },
30985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzflr-",XLO(19,BODNZF,16,0), XLBOBB_MASK, NOPOWER4, { BI } },
30995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzflr+",XLO(19,BODNZFP,16,0), XLBOBB_MASK, NOPOWER4, { BI } },
31005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzflrl",XLO(19,BODNZF,16,1), XLBOBB_MASK, PPCCOM,	{ BI } },
31015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzflrl-",XLO(19,BODNZF,16,1), XLBOBB_MASK, NOPOWER4, { BI } },
31025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdnzflrl+",XLO(19,BODNZFP,16,1), XLBOBB_MASK, NOPOWER4, { BI } },
31035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdztlr",  XLO(19,BODZT,16,0), XLBOBB_MASK, PPCCOM,	{ BI } },
31045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdztlr-", XLO(19,BODZT,16,0), XLBOBB_MASK, NOPOWER4,	{ BI } },
31055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdztlr+", XLO(19,BODZTP,16,0), XLBOBB_MASK, NOPOWER4, { BI } },
31065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdztlrl", XLO(19,BODZT,16,1), XLBOBB_MASK, PPCCOM,	{ BI } },
31075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdztlrl-",XLO(19,BODZT,16,1), XLBOBB_MASK, NOPOWER4,	{ BI } },
31085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdztlrl+",XLO(19,BODZTP,16,1), XLBOBB_MASK, NOPOWER4, { BI } },
31095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzflr",  XLO(19,BODZF,16,0), XLBOBB_MASK, PPCCOM,	{ BI } },
31105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzflr-", XLO(19,BODZF,16,0), XLBOBB_MASK, NOPOWER4,	{ BI } },
31115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzflr+", XLO(19,BODZFP,16,0), XLBOBB_MASK, NOPOWER4, { BI } },
31125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzflrl", XLO(19,BODZF,16,1), XLBOBB_MASK, PPCCOM,	{ BI } },
31135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzflrl-",XLO(19,BODZF,16,1), XLBOBB_MASK, NOPOWER4,	{ BI } },
31145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bdzflrl+",XLO(19,BODZFP,16,1), XLBOBB_MASK, NOPOWER4, { BI } },
31155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bclr+",   XLYLK(19,16,1,0), XLYBB_MASK, PPCCOM,	{ BOE, BI } },
31165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bclrl+",  XLYLK(19,16,1,1), XLYBB_MASK, PPCCOM,	{ BOE, BI } },
31175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bclr-",   XLYLK(19,16,0,0), XLYBB_MASK, PPCCOM,	{ BOE, BI } },
31185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bclrl-",  XLYLK(19,16,0,1), XLYBB_MASK, PPCCOM,	{ BOE, BI } },
31195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bclr",    XLLK(19,16,0), XLBH_MASK,	PPCCOM,		{ BO, BI, BH } },
31205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bclrl",   XLLK(19,16,1), XLBH_MASK,	PPCCOM,		{ BO, BI, BH } },
31215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bcr",     XLLK(19,16,0), XLBB_MASK,	PWRCOM,		{ BO, BI } },
31225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bcrl",    XLLK(19,16,1), XLBB_MASK,	PWRCOM,		{ BO, BI } },
31235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bclre",   XLLK(19,17,0), XLBB_MASK,	BOOKE64,	{ BO, BI } },
31245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bclrel",  XLLK(19,17,1), XLBB_MASK,	BOOKE64,	{ BO, BI } },
31255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
31265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rfid",    XL(19,18),	0xffffffff,	PPC64,		{ 0 } },
31275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
31285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "crnot",   XL(19,33), XL_MASK,	PPCCOM,		{ BT, BA, BBA } },
31295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "crnor",   XL(19,33),	XL_MASK,	COM,		{ BT, BA, BB } },
31305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rfmci",    X(19,38), 0xffffffff,	PPCRFMCI,	{ 0 } },
31315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
31325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rfi",     XL(19,50),	0xffffffff,	COM,		{ 0 } },
31335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rfci",    XL(19,51),	0xffffffff,	PPC403 | BOOKE,	{ 0 } },
31348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
31358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "rfsvc",   XL(19,82),	0xffffffff,	POWER,		{ 0 } },
31368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
31375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "crandc",  XL(19,129), XL_MASK,	COM,		{ BT, BA, BB } },
31385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
31395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "isync",   XL(19,150), 0xffffffff,	PPCCOM,		{ 0 } },
31405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ics",     XL(19,150), 0xffffffff,	PWRCOM,		{ 0 } },
31415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
31425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "crclr",   XL(19,193), XL_MASK,	PPCCOM,		{ BT, BAT, BBA } },
31435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "crxor",   XL(19,193), XL_MASK,	COM,		{ BT, BA, BB } },
31445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
31455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "crnand",  XL(19,225), XL_MASK,	COM,		{ BT, BA, BB } },
31465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
31475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "crand",   XL(19,257), XL_MASK,	COM,		{ BT, BA, BB } },
31485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
31495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "hrfid",   XL(19,274), 0xffffffff,	POWER5 | CELL,	{ 0 } },
31505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
31515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "crset",   XL(19,289), XL_MASK,	PPCCOM,		{ BT, BAT, BBA } },
31525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "creqv",   XL(19,289), XL_MASK,	COM,		{ BT, BA, BB } },
31535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
31545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "doze",    XL(19,402), 0xffffffff,	POWER6,		{ 0 } },
31555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
31565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "crorc",   XL(19,417), XL_MASK,	COM,		{ BT, BA, BB } },
31575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
31585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nap",     XL(19,434), 0xffffffff,	POWER6,		{ 0 } },
31595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
31605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "crmove",  XL(19,449), XL_MASK,	PPCCOM,		{ BT, BA, BBA } },
31615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cror",    XL(19,449), XL_MASK,	COM,		{ BT, BA, BB } },
31625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
31635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sleep",   XL(19,466), 0xffffffff,	POWER6,		{ 0 } },
31645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rvwinkle", XL(19,498), 0xffffffff,	POWER6,		{ 0 } },
31655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
31665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bctr",    XLO(19,BOU,528,0), XLBOBIBB_MASK, COM,	{ 0 } },
31675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bctrl",   XLO(19,BOU,528,1), XLBOBIBB_MASK, COM,	{ 0 } },
31685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltctr",  XLOCB(19,BOT,CBLT,528,0),  XLBOCBBB_MASK, PPCCOM,	{ CR } },
31695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltctr-", XLOCB(19,BOT,CBLT,528,0),  XLBOCBBB_MASK, NOPOWER4, { CR } },
31705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltctr-", XLOCB(19,BOTM4,CBLT,528,0), XLBOCBBB_MASK, POWER4, { CR } },
31715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltctr+", XLOCB(19,BOTP,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
31725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltctr+", XLOCB(19,BOTP4,CBLT,528,0), XLBOCBBB_MASK, POWER4, { CR } },
31735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltctrl", XLOCB(19,BOT,CBLT,528,1),  XLBOCBBB_MASK, PPCCOM,	{ CR } },
31745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltctrl-",XLOCB(19,BOT,CBLT,528,1),  XLBOCBBB_MASK, NOPOWER4, { CR } },
31755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltctrl-",XLOCB(19,BOTM4,CBLT,528,1), XLBOCBBB_MASK, POWER4, { CR } },
31765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltctrl+",XLOCB(19,BOTP,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
31775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bltctrl+",XLOCB(19,BOTP4,CBLT,528,1), XLBOCBBB_MASK, POWER4, { CR } },
31785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtctr",  XLOCB(19,BOT,CBGT,528,0),  XLBOCBBB_MASK, PPCCOM,	{ CR } },
31795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtctr-", XLOCB(19,BOT,CBGT,528,0),  XLBOCBBB_MASK, NOPOWER4, { CR } },
31805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtctr-", XLOCB(19,BOTM4,CBGT,528,0), XLBOCBBB_MASK, POWER4, { CR } },
31815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtctr+", XLOCB(19,BOTP,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
31825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtctr+", XLOCB(19,BOTP4,CBGT,528,0), XLBOCBBB_MASK, POWER4, { CR } },
31835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtctrl", XLOCB(19,BOT,CBGT,528,1),  XLBOCBBB_MASK, PPCCOM,	{ CR } },
31845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtctrl-",XLOCB(19,BOT,CBGT,528,1),  XLBOCBBB_MASK, NOPOWER4, { CR } },
31855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtctrl-",XLOCB(19,BOTM4,CBGT,528,1), XLBOCBBB_MASK, POWER4, { CR } },
31865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtctrl+",XLOCB(19,BOTP,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
31875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgtctrl+",XLOCB(19,BOTP4,CBGT,528,1), XLBOCBBB_MASK, POWER4, { CR } },
31885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqctr",  XLOCB(19,BOT,CBEQ,528,0),  XLBOCBBB_MASK, PPCCOM,	{ CR } },
31895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqctr-", XLOCB(19,BOT,CBEQ,528,0),  XLBOCBBB_MASK, NOPOWER4, { CR } },
31905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqctr-", XLOCB(19,BOTM4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, { CR } },
31915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqctr+", XLOCB(19,BOTP,CBEQ,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
31925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqctr+", XLOCB(19,BOTP4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, { CR } },
31935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqctrl", XLOCB(19,BOT,CBEQ,528,1),  XLBOCBBB_MASK, PPCCOM,	{ CR } },
31945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqctrl-",XLOCB(19,BOT,CBEQ,528,1),  XLBOCBBB_MASK, NOPOWER4, { CR } },
31955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqctrl-",XLOCB(19,BOTM4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, { CR } },
31965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqctrl+",XLOCB(19,BOTP,CBEQ,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
31975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "beqctrl+",XLOCB(19,BOTP4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, { CR } },
31985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsoctr",  XLOCB(19,BOT,CBSO,528,0),  XLBOCBBB_MASK, PPCCOM,	{ CR } },
31995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsoctr-", XLOCB(19,BOT,CBSO,528,0),  XLBOCBBB_MASK, NOPOWER4, { CR } },
32005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsoctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } },
32015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsoctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
32025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsoctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } },
32035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsoctrl", XLOCB(19,BOT,CBSO,528,1),  XLBOCBBB_MASK, PPCCOM,	{ CR } },
32045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsoctrl-",XLOCB(19,BOT,CBSO,528,1),  XLBOCBBB_MASK, NOPOWER4, { CR } },
32055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsoctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } },
32065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsoctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
32075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bsoctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } },
32085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bunctr",  XLOCB(19,BOT,CBSO,528,0),  XLBOCBBB_MASK, PPCCOM,	{ CR } },
32095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bunctr-", XLOCB(19,BOT,CBSO,528,0),  XLBOCBBB_MASK, NOPOWER4, { CR } },
32105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bunctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } },
32115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bunctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
32125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bunctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } },
32135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bunctrl", XLOCB(19,BOT,CBSO,528,1),  XLBOCBBB_MASK, PPCCOM,	{ CR } },
32145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bunctrl-",XLOCB(19,BOT,CBSO,528,1),  XLBOCBBB_MASK, NOPOWER4, { CR } },
32155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bunctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } },
32165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bunctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
32175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bunctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } },
32185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgectr",  XLOCB(19,BOF,CBLT,528,0),  XLBOCBBB_MASK, PPCCOM,	{ CR } },
32195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgectr-", XLOCB(19,BOF,CBLT,528,0),  XLBOCBBB_MASK, NOPOWER4, { CR } },
32205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgectr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, POWER4, { CR } },
32215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgectr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
32225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgectr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, POWER4, { CR } },
32235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgectrl", XLOCB(19,BOF,CBLT,528,1),  XLBOCBBB_MASK, PPCCOM,	{ CR } },
32245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgectrl-",XLOCB(19,BOF,CBLT,528,1),  XLBOCBBB_MASK, NOPOWER4, { CR } },
32255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgectrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, POWER4, { CR } },
32265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgectrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
32275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bgectrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, POWER4, { CR } },
32285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnlctr",  XLOCB(19,BOF,CBLT,528,0),  XLBOCBBB_MASK, PPCCOM,	{ CR } },
32295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnlctr-", XLOCB(19,BOF,CBLT,528,0),  XLBOCBBB_MASK, NOPOWER4, { CR } },
32305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnlctr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, POWER4, { CR } },
32315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnlctr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
32325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnlctr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, POWER4, { CR } },
32335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnlctrl", XLOCB(19,BOF,CBLT,528,1),  XLBOCBBB_MASK, PPCCOM,	{ CR } },
32345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnlctrl-",XLOCB(19,BOF,CBLT,528,1),  XLBOCBBB_MASK, NOPOWER4, { CR } },
32355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnlctrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, POWER4, { CR } },
32365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnlctrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
32375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnlctrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, POWER4, { CR } },
32385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blectr",  XLOCB(19,BOF,CBGT,528,0),  XLBOCBBB_MASK, PPCCOM,	{ CR } },
32395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blectr-", XLOCB(19,BOF,CBGT,528,0),  XLBOCBBB_MASK, NOPOWER4, { CR } },
32405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blectr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, POWER4, { CR } },
32415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blectr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
32425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blectr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, POWER4, { CR } },
32435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blectrl", XLOCB(19,BOF,CBGT,528,1),  XLBOCBBB_MASK, PPCCOM,	{ CR } },
32445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blectrl-",XLOCB(19,BOF,CBGT,528,1),  XLBOCBBB_MASK, NOPOWER4, { CR } },
32455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blectrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, POWER4, { CR } },
32465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blectrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
32475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "blectrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, POWER4, { CR } },
32485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bngctr",  XLOCB(19,BOF,CBGT,528,0),  XLBOCBBB_MASK, PPCCOM,	{ CR } },
32495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bngctr-", XLOCB(19,BOF,CBGT,528,0),  XLBOCBBB_MASK, NOPOWER4, { CR } },
32505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bngctr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, POWER4, { CR } },
32515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bngctr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
32525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bngctr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, POWER4, { CR } },
32535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bngctrl", XLOCB(19,BOF,CBGT,528,1),  XLBOCBBB_MASK, PPCCOM,	{ CR } },
32545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bngctrl-",XLOCB(19,BOF,CBGT,528,1),  XLBOCBBB_MASK, NOPOWER4, { CR } },
32555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bngctrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, POWER4, { CR } },
32565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bngctrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
32575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bngctrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, POWER4, { CR } },
32585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnectr",  XLOCB(19,BOF,CBEQ,528,0),  XLBOCBBB_MASK, PPCCOM,	{ CR } },
32595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnectr-", XLOCB(19,BOF,CBEQ,528,0),  XLBOCBBB_MASK, NOPOWER4, { CR } },
32605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnectr-", XLOCB(19,BOFM4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, { CR } },
32615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnectr+", XLOCB(19,BOFP,CBEQ,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
32625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnectr+", XLOCB(19,BOFP4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, { CR } },
32635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnectrl", XLOCB(19,BOF,CBEQ,528,1),  XLBOCBBB_MASK, PPCCOM,	{ CR } },
32645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnectrl-",XLOCB(19,BOF,CBEQ,528,1),  XLBOCBBB_MASK, NOPOWER4, { CR } },
32655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnectrl-",XLOCB(19,BOFM4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, { CR } },
32665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnectrl+",XLOCB(19,BOFP,CBEQ,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
32675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnectrl+",XLOCB(19,BOFP4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, { CR } },
32685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnsctr",  XLOCB(19,BOF,CBSO,528,0),  XLBOCBBB_MASK, PPCCOM,	{ CR } },
32695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnsctr-", XLOCB(19,BOF,CBSO,528,0),  XLBOCBBB_MASK, NOPOWER4, { CR } },
32705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnsctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } },
32715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnsctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
32725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnsctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } },
32735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnsctrl", XLOCB(19,BOF,CBSO,528,1),  XLBOCBBB_MASK, PPCCOM,	{ CR } },
32745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnsctrl-",XLOCB(19,BOF,CBSO,528,1),  XLBOCBBB_MASK, NOPOWER4, { CR } },
32755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnsctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } },
32765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnsctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
32775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnsctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } },
32785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnuctr",  XLOCB(19,BOF,CBSO,528,0),  XLBOCBBB_MASK, PPCCOM,	{ CR } },
32795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnuctr-", XLOCB(19,BOF,CBSO,528,0),  XLBOCBBB_MASK, NOPOWER4, { CR } },
32805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnuctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } },
32815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnuctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
32825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnuctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } },
32835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnuctrl", XLOCB(19,BOF,CBSO,528,1),  XLBOCBBB_MASK, PPCCOM,	{ CR } },
32845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnuctrl-",XLOCB(19,BOF,CBSO,528,1),  XLBOCBBB_MASK, NOPOWER4, { CR } },
32855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnuctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } },
32865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnuctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
32875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bnuctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } },
32885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "btctr",   XLO(19,BOT,528,0),  XLBOBB_MASK, PPCCOM,	{ BI } },
32895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "btctr-",  XLO(19,BOT,528,0),  XLBOBB_MASK, NOPOWER4,	{ BI } },
32905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "btctr-",  XLO(19,BOTM4,528,0), XLBOBB_MASK, POWER4, { BI } },
32915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "btctr+",  XLO(19,BOTP,528,0), XLBOBB_MASK, NOPOWER4,	{ BI } },
32925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "btctr+",  XLO(19,BOTP4,528,0), XLBOBB_MASK, POWER4, { BI } },
32935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "btctrl",  XLO(19,BOT,528,1),  XLBOBB_MASK, PPCCOM,	{ BI } },
32945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "btctrl-", XLO(19,BOT,528,1),  XLBOBB_MASK, NOPOWER4,	{ BI } },
32955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "btctrl-", XLO(19,BOTM4,528,1), XLBOBB_MASK, POWER4, { BI } },
32965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "btctrl+", XLO(19,BOTP,528,1), XLBOBB_MASK, NOPOWER4,	{ BI } },
32975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "btctrl+", XLO(19,BOTP4,528,1), XLBOBB_MASK, POWER4, { BI } },
32985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bfctr",   XLO(19,BOF,528,0),  XLBOBB_MASK, PPCCOM,	{ BI } },
32995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bfctr-",  XLO(19,BOF,528,0),  XLBOBB_MASK, NOPOWER4, { BI } },
33005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bfctr-",  XLO(19,BOFM4,528,0), XLBOBB_MASK, POWER4, { BI } },
33015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bfctr+",  XLO(19,BOFP,528,0), XLBOBB_MASK, NOPOWER4, { BI } },
33025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bfctr+",  XLO(19,BOFP4,528,0), XLBOBB_MASK, POWER4, { BI } },
33035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bfctrl",  XLO(19,BOF,528,1),  XLBOBB_MASK, PPCCOM,	{ BI } },
33045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bfctrl-", XLO(19,BOF,528,1),  XLBOBB_MASK, NOPOWER4, { BI } },
33055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bfctrl-", XLO(19,BOFM4,528,1), XLBOBB_MASK, POWER4, { BI } },
33065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bfctrl+", XLO(19,BOFP,528,1), XLBOBB_MASK, NOPOWER4, { BI } },
33075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bfctrl+", XLO(19,BOFP4,528,1), XLBOBB_MASK, POWER4, { BI } },
33085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bcctr-",  XLYLK(19,528,0,0),  XLYBB_MASK,  PPCCOM,	{ BOE, BI } },
33095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bcctr+",  XLYLK(19,528,1,0),  XLYBB_MASK,  PPCCOM,	{ BOE, BI } },
33105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bcctrl-", XLYLK(19,528,0,1),  XLYBB_MASK,  PPCCOM,	{ BOE, BI } },
33115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bcctrl+", XLYLK(19,528,1,1),  XLYBB_MASK,  PPCCOM,	{ BOE, BI } },
33125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bcctr",   XLLK(19,528,0),     XLBH_MASK,   PPCCOM,	{ BO, BI, BH } },
33135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bcctrl",  XLLK(19,528,1),     XLBH_MASK,   PPCCOM,	{ BO, BI, BH } },
33145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bcc",     XLLK(19,528,0),     XLBB_MASK,   PWRCOM,	{ BO, BI } },
33155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bccl",    XLLK(19,528,1),     XLBB_MASK,   PWRCOM,	{ BO, BI } },
33165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bcctre",  XLLK(19,529,0),     XLBB_MASK,   BOOKE64,	{ BO, BI } },
33175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bcctrel", XLLK(19,529,1),     XLBB_MASK,   BOOKE64,	{ BO, BI } },
33185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
33195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rlwimi",  M(20,0),	M_MASK,		PPCCOM,		{ RA,RS,SH,MBE,ME } },
33205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rlimi",   M(20,0),	M_MASK,		PWRCOM,		{ RA,RS,SH,MBE,ME } },
33215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
33225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rlwimi.", M(20,1),	M_MASK,		PPCCOM,		{ RA,RS,SH,MBE,ME } },
33235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rlimi.",  M(20,1),	M_MASK,		PWRCOM,		{ RA,RS,SH,MBE,ME } },
33245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
33255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rotlwi",  MME(21,31,0), MMBME_MASK,	PPCCOM,		{ RA, RS, SH } },
33265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "clrlwi",  MME(21,31,0), MSHME_MASK,	PPCCOM,		{ RA, RS, MB } },
33275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rlwinm",  M(21,0),	M_MASK,		PPCCOM,		{ RA,RS,SH,MBE,ME } },
33285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rlinm",   M(21,0),	M_MASK,		PWRCOM,		{ RA,RS,SH,MBE,ME } },
33295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rotlwi.", MME(21,31,1), MMBME_MASK,	PPCCOM,		{ RA,RS,SH } },
33305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "clrlwi.", MME(21,31,1), MSHME_MASK,	PPCCOM,		{ RA, RS, MB } },
33315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rlwinm.", M(21,1),	M_MASK,		PPCCOM,		{ RA,RS,SH,MBE,ME } },
33325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rlinm.",  M(21,1),	M_MASK,		PWRCOM,		{ RA,RS,SH,MBE,ME } },
33335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
33345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rlmi",    M(22,0),	M_MASK,		M601,		{ RA,RS,RB,MBE,ME } },
33355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rlmi.",   M(22,1),	M_MASK,		M601,		{ RA,RS,RB,MBE,ME } },
33365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
33375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "be",	     B(22,0,0),	B_MASK,		BOOKE64,	{ LI } },
33385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bel",     B(22,0,1),	B_MASK,		BOOKE64,	{ LI } },
33395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bea",     B(22,1,0),	B_MASK,		BOOKE64,	{ LIA } },
33405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bela",    B(22,1,1),	B_MASK,		BOOKE64,	{ LIA } },
33415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
33425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rotlw",   MME(23,31,0), MMBME_MASK,	PPCCOM,		{ RA, RS, RB } },
33435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rlwnm",   M(23,0),	M_MASK,		PPCCOM,		{ RA,RS,RB,MBE,ME } },
33445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rlnm",    M(23,0),	M_MASK,		PWRCOM,		{ RA,RS,RB,MBE,ME } },
33455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rotlw.",  MME(23,31,1), MMBME_MASK,	PPCCOM,		{ RA, RS, RB } },
33465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rlwnm.",  M(23,1),	M_MASK,		PPCCOM,		{ RA,RS,RB,MBE,ME } },
33475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rlnm.",   M(23,1),	M_MASK,		PWRCOM,		{ RA,RS,RB,MBE,ME } },
33485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
33495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nop",     OP(24),	0xffffffff,	PPCCOM,		{ 0 } },
33505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ori",     OP(24),	OP_MASK,	PPCCOM,		{ RA, RS, UI } },
33515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "oril",    OP(24),	OP_MASK,	PWRCOM,		{ RA, RS, UI } },
33525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
33535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "oris",    OP(25),	OP_MASK,	PPCCOM,		{ RA, RS, UI } },
33545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "oriu",    OP(25),	OP_MASK,	PWRCOM,		{ RA, RS, UI } },
33555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
33565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "xori",    OP(26),	OP_MASK,	PPCCOM,		{ RA, RS, UI } },
33575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "xoril",   OP(26),	OP_MASK,	PWRCOM,		{ RA, RS, UI } },
33585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
33595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "xoris",   OP(27),	OP_MASK,	PPCCOM,		{ RA, RS, UI } },
33605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "xoriu",   OP(27),	OP_MASK,	PWRCOM,		{ RA, RS, UI } },
33615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
33625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "andi.",   OP(28),	OP_MASK,	PPCCOM,		{ RA, RS, UI } },
33635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "andil.",  OP(28),	OP_MASK,	PWRCOM,		{ RA, RS, UI } },
33645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
33655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "andis.",  OP(29),	OP_MASK,	PPCCOM,		{ RA, RS, UI } },
33665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "andiu.",  OP(29),	OP_MASK,	PWRCOM,		{ RA, RS, UI } },
33675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
33685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rotldi",  MD(30,0,0), MDMB_MASK,	PPC64,		{ RA, RS, SH6 } },
33695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "clrldi",  MD(30,0,0), MDSH_MASK,	PPC64,		{ RA, RS, MB6 } },
33705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rldicl",  MD(30,0,0), MD_MASK,	PPC64,		{ RA, RS, SH6, MB6 } },
33715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rotldi.", MD(30,0,1), MDMB_MASK,	PPC64,		{ RA, RS, SH6 } },
33725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "clrldi.", MD(30,0,1), MDSH_MASK,	PPC64,		{ RA, RS, MB6 } },
33735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rldicl.", MD(30,0,1), MD_MASK,	PPC64,		{ RA, RS, SH6, MB6 } },
33745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
33755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rldicr",  MD(30,1,0), MD_MASK,	PPC64,		{ RA, RS, SH6, ME6 } },
33765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rldicr.", MD(30,1,1), MD_MASK,	PPC64,		{ RA, RS, SH6, ME6 } },
33775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
33785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rldic",   MD(30,2,0), MD_MASK,	PPC64,		{ RA, RS, SH6, MB6 } },
33795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rldic.",  MD(30,2,1), MD_MASK,	PPC64,		{ RA, RS, SH6, MB6 } },
33805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
33815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rldimi",  MD(30,3,0), MD_MASK,	PPC64,		{ RA, RS, SH6, MB6 } },
33825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rldimi.", MD(30,3,1), MD_MASK,	PPC64,		{ RA, RS, SH6, MB6 } },
33835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
33845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rotld",   MDS(30,8,0), MDSMB_MASK,	PPC64,		{ RA, RS, RB } },
33855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rldcl",   MDS(30,8,0), MDS_MASK,	PPC64,		{ RA, RS, RB, MB6 } },
33865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rotld.",  MDS(30,8,1), MDSMB_MASK,	PPC64,		{ RA, RS, RB } },
33875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rldcl.",  MDS(30,8,1), MDS_MASK,	PPC64,		{ RA, RS, RB, MB6 } },
33885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
33895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rldcr",   MDS(30,9,0), MDS_MASK,	PPC64,		{ RA, RS, RB, ME6 } },
33905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rldcr.",  MDS(30,9,1), MDS_MASK,	PPC64,		{ RA, RS, RB, ME6 } },
33915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
33925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cmpw",    XOPL(31,0,0), XCMPL_MASK, PPCCOM,		{ OBF, RA, RB } },
33935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cmpd",    XOPL(31,0,1), XCMPL_MASK, PPC64,		{ OBF, RA, RB } },
33948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "cmp",     X(31,0),	XCMP_MASK,	PPC,		{ BF, L, RA, RB } },
33955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cmp",     X(31,0),	XCMPL_MASK,	PWRCOM,		{ BF, RA, RB } },
33965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
33975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twlgt",   XTO(31,4,TOLGT), XTO_MASK, PPCCOM,		{ RA, RB } },
33985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlgt",    XTO(31,4,TOLGT), XTO_MASK, PWRCOM,		{ RA, RB } },
33995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twllt",   XTO(31,4,TOLLT), XTO_MASK, PPCCOM,		{ RA, RB } },
34005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tllt",    XTO(31,4,TOLLT), XTO_MASK, PWRCOM,		{ RA, RB } },
34015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tweq",    XTO(31,4,TOEQ), XTO_MASK,	PPCCOM,		{ RA, RB } },
34025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "teq",     XTO(31,4,TOEQ), XTO_MASK,	PWRCOM,		{ RA, RB } },
34035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twlge",   XTO(31,4,TOLGE), XTO_MASK, PPCCOM,		{ RA, RB } },
34045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlge",    XTO(31,4,TOLGE), XTO_MASK, PWRCOM,		{ RA, RB } },
34055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twlnl",   XTO(31,4,TOLNL), XTO_MASK, PPCCOM,		{ RA, RB } },
34065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlnl",    XTO(31,4,TOLNL), XTO_MASK, PWRCOM,		{ RA, RB } },
34075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twlle",   XTO(31,4,TOLLE), XTO_MASK, PPCCOM,		{ RA, RB } },
34085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlle",    XTO(31,4,TOLLE), XTO_MASK, PWRCOM,		{ RA, RB } },
34095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twlng",   XTO(31,4,TOLNG), XTO_MASK, PPCCOM,		{ RA, RB } },
34105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlng",    XTO(31,4,TOLNG), XTO_MASK, PWRCOM,		{ RA, RB } },
34115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twgt",    XTO(31,4,TOGT), XTO_MASK,	PPCCOM,		{ RA, RB } },
34125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tgt",     XTO(31,4,TOGT), XTO_MASK,	PWRCOM,		{ RA, RB } },
34135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twge",    XTO(31,4,TOGE), XTO_MASK,	PPCCOM,		{ RA, RB } },
34145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tge",     XTO(31,4,TOGE), XTO_MASK,	PWRCOM,		{ RA, RB } },
34155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twnl",    XTO(31,4,TONL), XTO_MASK,	PPCCOM,		{ RA, RB } },
34165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tnl",     XTO(31,4,TONL), XTO_MASK,	PWRCOM,		{ RA, RB } },
34175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twlt",    XTO(31,4,TOLT), XTO_MASK,	PPCCOM,		{ RA, RB } },
34185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlt",     XTO(31,4,TOLT), XTO_MASK,	PWRCOM,		{ RA, RB } },
34195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twle",    XTO(31,4,TOLE), XTO_MASK,	PPCCOM,		{ RA, RB } },
34205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tle",     XTO(31,4,TOLE), XTO_MASK,	PWRCOM,		{ RA, RB } },
34215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twng",    XTO(31,4,TONG), XTO_MASK,	PPCCOM,		{ RA, RB } },
34225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tng",     XTO(31,4,TONG), XTO_MASK,	PWRCOM,		{ RA, RB } },
34235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "twne",    XTO(31,4,TONE), XTO_MASK,	PPCCOM,		{ RA, RB } },
34245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tne",     XTO(31,4,TONE), XTO_MASK,	PWRCOM,		{ RA, RB } },
34255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "trap",    XTO(31,4,TOU), 0xffffffff,	PPCCOM,		{ 0 } },
34265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tw",      X(31,4),	X_MASK,		PPCCOM,		{ TO, RA, RB } },
34275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "t",       X(31,4),	X_MASK,		PWRCOM,		{ TO, RA, RB } },
34285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
34295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subfc",   XO(31,8,0,0), XO_MASK,	PPCCOM,		{ RT, RA, RB } },
34305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sf",      XO(31,8,0,0), XO_MASK,	PWRCOM,		{ RT, RA, RB } },
34318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "subc",    XO(31,8,0,0), XO_MASK,	PPC,		{ RT, RB, RA } },
34325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subfc.",  XO(31,8,0,1), XO_MASK,	PPCCOM,		{ RT, RA, RB } },
34335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sf.",     XO(31,8,0,1), XO_MASK,	PWRCOM,		{ RT, RA, RB } },
34345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subc.",   XO(31,8,0,1), XO_MASK,	PPCCOM,		{ RT, RB, RA } },
34355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subfco",  XO(31,8,1,0), XO_MASK,	PPCCOM,		{ RT, RA, RB } },
34365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sfo",     XO(31,8,1,0), XO_MASK,	PWRCOM,		{ RT, RA, RB } },
34378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "subco",   XO(31,8,1,0), XO_MASK,	PPC,		{ RT, RB, RA } },
34385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subfco.", XO(31,8,1,1), XO_MASK,	PPCCOM,		{ RT, RA, RB } },
34395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sfo.",    XO(31,8,1,1), XO_MASK,	PWRCOM,		{ RT, RA, RB } },
34408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "subco.",  XO(31,8,1,1), XO_MASK,	PPC,		{ RT, RB, RA } },
34418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
34425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mulhdu",  XO(31,9,0,0), XO_MASK,	PPC64,		{ RT, RA, RB } },
34435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mulhdu.", XO(31,9,0,1), XO_MASK,	PPC64,		{ RT, RA, RB } },
34448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
34455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "addc",    XO(31,10,0,0), XO_MASK,	PPCCOM,		{ RT, RA, RB } },
34465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "a",       XO(31,10,0,0), XO_MASK,	PWRCOM,		{ RT, RA, RB } },
34475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "addc.",   XO(31,10,0,1), XO_MASK,	PPCCOM,		{ RT, RA, RB } },
34485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "a.",      XO(31,10,0,1), XO_MASK,	PWRCOM,		{ RT, RA, RB } },
34495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "addco",   XO(31,10,1,0), XO_MASK,	PPCCOM,		{ RT, RA, RB } },
34505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ao",      XO(31,10,1,0), XO_MASK,	PWRCOM,		{ RT, RA, RB } },
34515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "addco.",  XO(31,10,1,1), XO_MASK,	PPCCOM,		{ RT, RA, RB } },
34525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ao.",     XO(31,10,1,1), XO_MASK,	PWRCOM,		{ RT, RA, RB } },
34538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
34548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "mulhwu",  XO(31,11,0,0), XO_MASK,	PPC,		{ RT, RA, RB } },
34558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "mulhwu.", XO(31,11,0,1), XO_MASK,	PPC,		{ RT, RA, RB } },
34568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
34575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "isellt",  X(31,15),      X_MASK,	PPCISEL,	{ RT, RA, RB } },
34585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "iselgt",  X(31,47),      X_MASK,	PPCISEL,	{ RT, RA, RB } },
34595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "iseleq",  X(31,79),      X_MASK,	PPCISEL,	{ RT, RA, RB } },
34605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "isel",    XISEL(31,15),  XISEL_MASK,	PPCISEL,	{ RT, RA, RB, CRB } },
34615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
34625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfocrf",  XFXM(31,19,0,1), XFXFXM_MASK, COM,		{ RT, FXM } },
34635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfcr",    X(31,19),	XRARB_MASK,	NOPOWER4 | COM,	{ RT } },
34645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfcr",    X(31,19),	XFXFXM_MASK,	POWER4,		{ RT, FXM4 } },
34655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
34665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lwarx",   X(31,20),	XEH_MASK,	PPC,		{ RT, RA0, RB, EH } },
34678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
34685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ldx",     X(31,21),	X_MASK,		PPC64,		{ RT, RA0, RB } },
34698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
34705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "icbt",    X(31,22),	X_MASK,		BOOKE|PPCE300,	{ CT, RA, RB } },
34715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "icbt",    X(31,262),	XRT_MASK,	PPC403,		{ RA, RB } },
34728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
34735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lwzx",    X(31,23),	X_MASK,		PPCCOM,		{ RT, RA0, RB } },
34745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lx",      X(31,23),	X_MASK,		PWRCOM,		{ RT, RA, RB } },
34758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
34765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "slw",     XRC(31,24,0), X_MASK,	PPCCOM,		{ RA, RS, RB } },
34775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sl",      XRC(31,24,0), X_MASK,	PWRCOM,		{ RA, RS, RB } },
34785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "slw.",    XRC(31,24,1), X_MASK,	PPCCOM,		{ RA, RS, RB } },
34795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sl.",     XRC(31,24,1), X_MASK,	PWRCOM,		{ RA, RS, RB } },
34808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
34815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cntlzw",  XRC(31,26,0), XRB_MASK,	PPCCOM,		{ RA, RS } },
34825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cntlz",   XRC(31,26,0), XRB_MASK,	PWRCOM,		{ RA, RS } },
34835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cntlzw.", XRC(31,26,1), XRB_MASK,	PPCCOM,		{ RA, RS } },
34845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cntlz.",  XRC(31,26,1), XRB_MASK, 	PWRCOM,		{ RA, RS } },
34858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
34865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sld",     XRC(31,27,0), X_MASK,	PPC64,		{ RA, RS, RB } },
34875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sld.",    XRC(31,27,1), X_MASK,	PPC64,		{ RA, RS, RB } },
34888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
34895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "and",     XRC(31,28,0), X_MASK,	COM,		{ RA, RS, RB } },
34905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "and.",    XRC(31,28,1), X_MASK,	COM,		{ RA, RS, RB } },
34918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
34925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "maskg",   XRC(31,29,0), X_MASK,	M601,		{ RA, RS, RB } },
34935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "maskg.",  XRC(31,29,1), X_MASK,	M601,		{ RA, RS, RB } },
34948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
34955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "icbte",   X(31,30),	X_MASK,		BOOKE64,	{ CT, RA, RB } },
34965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
34975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lwzxe",   X(31,31),	X_MASK,		BOOKE64,	{ RT, RA0, RB } },
34985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
34995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cmplw",   XOPL(31,32,0), XCMPL_MASK, PPCCOM,	{ OBF, RA, RB } },
35005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cmpld",   XOPL(31,32,1), XCMPL_MASK, PPC64,		{ OBF, RA, RB } },
35015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cmpl",    X(31,32),	XCMP_MASK,	 PPC,		{ BF, L, RA, RB } },
35025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cmpl",    X(31,32),	XCMPL_MASK,	 PWRCOM,	{ BF, RA, RB } },
35038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
35048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "subf",    XO(31,40,0,0), XO_MASK,	PPC,		{ RT, RA, RB } },
35058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "sub",     XO(31,40,0,0), XO_MASK,	PPC,		{ RT, RB, RA } },
35068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "subf.",   XO(31,40,0,1), XO_MASK,	PPC,		{ RT, RA, RB } },
35078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "sub.",    XO(31,40,0,1), XO_MASK,	PPC,		{ RT, RB, RA } },
35088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "subfo",   XO(31,40,1,0), XO_MASK,	PPC,		{ RT, RA, RB } },
35098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "subo",    XO(31,40,1,0), XO_MASK,	PPC,		{ RT, RB, RA } },
35108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "subfo.",  XO(31,40,1,1), XO_MASK,	PPC,		{ RT, RA, RB } },
35118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "subo.",   XO(31,40,1,1), XO_MASK,	PPC,		{ RT, RB, RA } },
35128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
35135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ldux",    X(31,53),	X_MASK,		PPC64,		{ RT, RAL, RB } },
35148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
35158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "dcbst",   X(31,54),	XRT_MASK,	PPC,		{ RA, RB } },
35168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
35175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lwzux",   X(31,55),	X_MASK,		PPCCOM,		{ RT, RAL, RB } },
35185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lux",     X(31,55),	X_MASK,		PWRCOM,		{ RT, RA, RB } },
35195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
35205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcbste",  X(31,62),	XRT_MASK,	BOOKE64,	{ RA, RB } },
35215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
35225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lwzuxe",  X(31,63),	X_MASK,		BOOKE64,	{ RT, RAL, RB } },
35235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
35245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cntlzd",  XRC(31,58,0), XRB_MASK,	PPC64,		{ RA, RS } },
35255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cntlzd.", XRC(31,58,1), XRB_MASK,	PPC64,		{ RA, RS } },
35265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
35275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "andc",    XRC(31,60,0), X_MASK,	COM,		{ RA, RS, RB } },
35285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "andc.",   XRC(31,60,1), X_MASK,	COM,		{ RA, RS, RB } },
35295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
35305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdlgt",   XTO(31,68,TOLGT), XTO_MASK, PPC64,		{ RA, RB } },
35315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdllt",   XTO(31,68,TOLLT), XTO_MASK, PPC64,		{ RA, RB } },
35325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdeq",    XTO(31,68,TOEQ), XTO_MASK,  PPC64,		{ RA, RB } },
35335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdlge",   XTO(31,68,TOLGE), XTO_MASK, PPC64,		{ RA, RB } },
35345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdlnl",   XTO(31,68,TOLNL), XTO_MASK, PPC64,		{ RA, RB } },
35355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdlle",   XTO(31,68,TOLLE), XTO_MASK, PPC64,		{ RA, RB } },
35365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdlng",   XTO(31,68,TOLNG), XTO_MASK, PPC64,		{ RA, RB } },
35375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdgt",    XTO(31,68,TOGT), XTO_MASK,  PPC64,		{ RA, RB } },
35385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdge",    XTO(31,68,TOGE), XTO_MASK,  PPC64,		{ RA, RB } },
35395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdnl",    XTO(31,68,TONL), XTO_MASK,  PPC64,		{ RA, RB } },
35405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdlt",    XTO(31,68,TOLT), XTO_MASK,  PPC64,		{ RA, RB } },
35415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdle",    XTO(31,68,TOLE), XTO_MASK,  PPC64,		{ RA, RB } },
35425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdng",    XTO(31,68,TONG), XTO_MASK,  PPC64,		{ RA, RB } },
35435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tdne",    XTO(31,68,TONE), XTO_MASK,  PPC64,		{ RA, RB } },
35445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "td",	     X(31,68),	X_MASK,		 PPC64,		{ TO, RA, RB } },
35455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
35465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mulhd",   XO(31,73,0,0), XO_MASK,	 PPC64,		{ RT, RA, RB } },
35475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mulhd.",  XO(31,73,0,1), XO_MASK,	 PPC64,		{ RT, RA, RB } },
35488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
35498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "mulhw",   XO(31,75,0,0), XO_MASK,	PPC,		{ RT, RA, RB } },
35508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "mulhw.",  XO(31,75,0,1), XO_MASK,	PPC,		{ RT, RA, RB } },
35518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
35525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dlmzb",   XRC(31,78,0),  X_MASK,	PPC403|PPC440,	{ RA, RS, RB } },
35535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dlmzb.",  XRC(31,78,1),  X_MASK,	PPC403|PPC440,	{ RA, RS, RB } },
35545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
35555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtsrd",   X(31,82),	XRB_MASK|(1<<20), PPC64,	{ SR, RS } },
35565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
35575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfmsr",   X(31,83),	XRARB_MASK,	COM,		{ RT } },
35585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
35595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ldarx",   X(31,84),	XEH_MASK,	PPC64,		{ RT, RA0, RB, EH } },
35605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
35615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcbfl",   XOPL(31,86,1), XRT_MASK,	POWER5,		{ RA, RB } },
35625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcbf",    X(31,86),	XLRT_MASK,	PPC,		{ RA, RB, L } },
35635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
35645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lbzx",    X(31,87),	X_MASK,		COM,		{ RT, RA0, RB } },
35655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
35665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcbfe",   X(31,94),	XRT_MASK,	BOOKE64,	{ RA, RB } },
35675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
35685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lbzxe",   X(31,95),	X_MASK,		BOOKE64,	{ RT, RA0, RB } },
35695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
35705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "neg",     XO(31,104,0,0), XORB_MASK,	COM,		{ RT, RA } },
35715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "neg.",    XO(31,104,0,1), XORB_MASK,	COM,		{ RT, RA } },
35725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nego",    XO(31,104,1,0), XORB_MASK,	COM,		{ RT, RA } },
35735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nego.",   XO(31,104,1,1), XORB_MASK,	COM,		{ RT, RA } },
35748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
35755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mul",     XO(31,107,0,0), XO_MASK,	M601,		{ RT, RA, RB } },
35765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mul.",    XO(31,107,0,1), XO_MASK,	M601,		{ RT, RA, RB } },
35775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mulo",    XO(31,107,1,0), XO_MASK,	M601,		{ RT, RA, RB } },
35785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mulo.",   XO(31,107,1,1), XO_MASK,	M601,		{ RT, RA, RB } },
35798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
35805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtsrdin", X(31,114),	XRA_MASK,	PPC64,		{ RS, RB } },
35818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
35825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "clf",     X(31,118), XTO_MASK,	POWER,		{ RA, RB } },
35838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
35845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lbzux",   X(31,119),	X_MASK,		COM,		{ RT, RAL, RB } },
35858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
35865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "popcntb", X(31,122), XRB_MASK,	POWER5,		{ RA, RS } },
35878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
35885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "not",     XRC(31,124,0), X_MASK,	COM,		{ RA, RS, RBS } },
35895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nor",     XRC(31,124,0), X_MASK,	COM,		{ RA, RS, RB } },
35905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "not.",    XRC(31,124,1), X_MASK,	COM,		{ RA, RS, RBS } },
35915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nor.",    XRC(31,124,1), X_MASK,	COM,		{ RA, RS, RB } },
35928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
35935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lwarxe",  X(31,126),	X_MASK,		BOOKE64,	{ RT, RA0, RB } },
35948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
35955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lbzuxe",  X(31,127),	X_MASK,		BOOKE64,	{ RT, RAL, RB } },
35968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
35975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "wrtee",   X(31,131),	XRARB_MASK,	PPC403 | BOOKE,	{ RS } },
35988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
35995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcbtstls",X(31,134),	X_MASK,		PPCCHLK,	{ CT, RA, RB }},
36008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subfe",   XO(31,136,0,0), XO_MASK,	PPCCOM,		{ RT, RA, RB } },
36025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sfe",     XO(31,136,0,0), XO_MASK,	PWRCOM,		{ RT, RA, RB } },
36035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subfe.",  XO(31,136,0,1), XO_MASK,	PPCCOM,		{ RT, RA, RB } },
36045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sfe.",    XO(31,136,0,1), XO_MASK,	PWRCOM,		{ RT, RA, RB } },
36055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subfeo",  XO(31,136,1,0), XO_MASK,	PPCCOM,		{ RT, RA, RB } },
36065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sfeo",    XO(31,136,1,0), XO_MASK,	PWRCOM,		{ RT, RA, RB } },
36075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subfeo.", XO(31,136,1,1), XO_MASK,	PPCCOM,		{ RT, RA, RB } },
36085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sfeo.",   XO(31,136,1,1), XO_MASK,	PWRCOM,		{ RT, RA, RB } },
36098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "adde",    XO(31,138,0,0), XO_MASK,	PPCCOM,		{ RT, RA, RB } },
36115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ae",      XO(31,138,0,0), XO_MASK,	PWRCOM,		{ RT, RA, RB } },
36125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "adde.",   XO(31,138,0,1), XO_MASK,	PPCCOM,		{ RT, RA, RB } },
36135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ae.",     XO(31,138,0,1), XO_MASK,	PWRCOM,		{ RT, RA, RB } },
36145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "addeo",   XO(31,138,1,0), XO_MASK,	PPCCOM,		{ RT, RA, RB } },
36155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "aeo",     XO(31,138,1,0), XO_MASK,	PWRCOM,		{ RT, RA, RB } },
36165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "addeo.",  XO(31,138,1,1), XO_MASK,	PPCCOM,		{ RT, RA, RB } },
36175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "aeo.",    XO(31,138,1,1), XO_MASK,	PWRCOM,		{ RT, RA, RB } },
36188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcbtstlse",X(31,142),X_MASK,		PPCCHLK64,	{ CT, RA, RB }},
36208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtocrf",  XFXM(31,144,0,1), XFXFXM_MASK, COM,	{ FXM, RS } },
36225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtcr",    XFXM(31,144,0xff,0), XRARB_MASK, COM,	{ RS }},
36235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtcrf",   X(31,144),	XFXFXM_MASK,	COM,		{ FXM, RS } },
36248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtmsr",   X(31,146),	XRARB_MASK,	COM,		{ RS } },
36268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stdx",    X(31,149), X_MASK,		PPC64,		{ RS, RA0, RB } },
36288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stwcx.",  XRC(31,150,1), X_MASK,	PPC,		{ RS, RA0, RB } },
36308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stwx",    X(31,151), X_MASK,		PPCCOM,		{ RS, RA0, RB } },
36325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stx",     X(31,151), X_MASK,		PWRCOM,		{ RS, RA, RB } },
36338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stwcxe.", XRC(31,158,1), X_MASK,	BOOKE64,	{ RS, RA0, RB } },
36358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stwxe",   X(31,159), X_MASK,		BOOKE64,	{ RS, RA0, RB } },
36378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "slq",     XRC(31,152,0), X_MASK,	M601,		{ RA, RS, RB } },
36395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "slq.",    XRC(31,152,1), X_MASK,	M601,		{ RA, RS, RB } },
36408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sle",     XRC(31,153,0), X_MASK,	M601,		{ RA, RS, RB } },
36425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sle.",    XRC(31,153,1), X_MASK,	M601,		{ RA, RS, RB } },
36438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "prtyw",   X(31,154),	XRB_MASK,	POWER6,		{ RA, RS } },
36458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "wrteei",  X(31,163),	XE_MASK,	PPC403 | BOOKE,	{ E } },
36478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcbtls",  X(31,166),	X_MASK,		PPCCHLK,	{ CT, RA, RB }},
36495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcbtlse", X(31,174),	X_MASK,		PPCCHLK64,	{ CT, RA, RB }},
36508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtmsrd",  X(31,178),	XRLARB_MASK,	PPC64,		{ RS, A_L } },
36528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stdux",   X(31,181),	X_MASK,		PPC64,		{ RS, RAS, RB } },
36548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stwux",   X(31,183),	X_MASK,		PPCCOM,		{ RS, RAS, RB } },
36565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stux",    X(31,183),	X_MASK,		PWRCOM,		{ RS, RA0, RB } },
36578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sliq",    XRC(31,184,0), X_MASK,	M601,		{ RA, RS, SH } },
36595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sliq.",   XRC(31,184,1), X_MASK,	M601,		{ RA, RS, SH } },
36608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "prtyd",   X(31,186),	XRB_MASK,	POWER6,		{ RA, RS } },
36628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stwuxe",  X(31,191),	X_MASK,		BOOKE64,	{ RS, RAS, RB } },
36648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subfze",  XO(31,200,0,0), XORB_MASK, PPCCOM,		{ RT, RA } },
36665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sfze",    XO(31,200,0,0), XORB_MASK, PWRCOM,		{ RT, RA } },
36675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subfze.", XO(31,200,0,1), XORB_MASK, PPCCOM,		{ RT, RA } },
36685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sfze.",   XO(31,200,0,1), XORB_MASK, PWRCOM,		{ RT, RA } },
36695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subfzeo", XO(31,200,1,0), XORB_MASK, PPCCOM,		{ RT, RA } },
36705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sfzeo",   XO(31,200,1,0), XORB_MASK, PWRCOM,		{ RT, RA } },
36715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subfzeo.",XO(31,200,1,1), XORB_MASK, PPCCOM,		{ RT, RA } },
36725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sfzeo.",  XO(31,200,1,1), XORB_MASK, PWRCOM,		{ RT, RA } },
36738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "addze",   XO(31,202,0,0), XORB_MASK, PPCCOM,		{ RT, RA } },
36755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "aze",     XO(31,202,0,0), XORB_MASK, PWRCOM,		{ RT, RA } },
36765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "addze.",  XO(31,202,0,1), XORB_MASK, PPCCOM,		{ RT, RA } },
36775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "aze.",    XO(31,202,0,1), XORB_MASK, PWRCOM,		{ RT, RA } },
36785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "addzeo",  XO(31,202,1,0), XORB_MASK, PPCCOM,		{ RT, RA } },
36795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "azeo",    XO(31,202,1,0), XORB_MASK, PWRCOM,		{ RT, RA } },
36805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "addzeo.", XO(31,202,1,1), XORB_MASK, PPCCOM,		{ RT, RA } },
36815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "azeo.",   XO(31,202,1,1), XORB_MASK, PWRCOM,		{ RT, RA } },
36828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtsr",    X(31,210),	XRB_MASK|(1<<20), COM32,	{ SR, RS } },
36848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stdcx.",  XRC(31,214,1), X_MASK,	PPC64,		{ RS, RA0, RB } },
36868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stbx",    X(31,215),	X_MASK,		COM,		{ RS, RA0, RB } },
36888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sllq",    XRC(31,216,0), X_MASK,	M601,		{ RA, RS, RB } },
36905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sllq.",   XRC(31,216,1), X_MASK,	M601,		{ RA, RS, RB } },
36918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sleq",    XRC(31,217,0), X_MASK,	M601,		{ RA, RS, RB } },
36935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sleq.",   XRC(31,217,1), X_MASK,	M601,		{ RA, RS, RB } },
36948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
36955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stbxe",   X(31,223),	X_MASK,		BOOKE64,	{ RS, RA0, RB } },
36965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
36975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "icblc",   X(31,230),	X_MASK,		PPCCHLK,	{ CT, RA, RB }},
36985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
36995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subfme",  XO(31,232,0,0), XORB_MASK, PPCCOM,		{ RT, RA } },
37005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sfme",    XO(31,232,0,0), XORB_MASK, PWRCOM,		{ RT, RA } },
37015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subfme.", XO(31,232,0,1), XORB_MASK, PPCCOM,		{ RT, RA } },
37025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sfme.",   XO(31,232,0,1), XORB_MASK, PWRCOM,		{ RT, RA } },
37035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subfmeo", XO(31,232,1,0), XORB_MASK, PPCCOM,		{ RT, RA } },
37045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sfmeo",   XO(31,232,1,0), XORB_MASK, PWRCOM,		{ RT, RA } },
37055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subfmeo.",XO(31,232,1,1), XORB_MASK, PPCCOM,		{ RT, RA } },
37065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sfmeo.",  XO(31,232,1,1), XORB_MASK, PWRCOM,		{ RT, RA } },
37075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
37085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mulld",   XO(31,233,0,0), XO_MASK,	PPC64,		{ RT, RA, RB } },
37095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mulld.",  XO(31,233,0,1), XO_MASK,	PPC64,		{ RT, RA, RB } },
37105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mulldo",  XO(31,233,1,0), XO_MASK,	PPC64,		{ RT, RA, RB } },
37115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mulldo.", XO(31,233,1,1), XO_MASK,	PPC64,		{ RT, RA, RB } },
37125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
37135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "addme",   XO(31,234,0,0), XORB_MASK, PPCCOM,		{ RT, RA } },
37145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ame",     XO(31,234,0,0), XORB_MASK, PWRCOM,		{ RT, RA } },
37155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "addme.",  XO(31,234,0,1), XORB_MASK, PPCCOM,		{ RT, RA } },
37165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ame.",    XO(31,234,0,1), XORB_MASK, PWRCOM,		{ RT, RA } },
37175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "addmeo",  XO(31,234,1,0), XORB_MASK, PPCCOM,		{ RT, RA } },
37185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ameo",    XO(31,234,1,0), XORB_MASK, PWRCOM,		{ RT, RA } },
37195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "addmeo.", XO(31,234,1,1), XORB_MASK, PPCCOM,		{ RT, RA } },
37205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ameo.",   XO(31,234,1,1), XORB_MASK, PWRCOM,		{ RT, RA } },
37215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
37225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mullw",   XO(31,235,0,0), XO_MASK,	PPCCOM,		{ RT, RA, RB } },
37235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "muls",    XO(31,235,0,0), XO_MASK,	PWRCOM,		{ RT, RA, RB } },
37245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mullw.",  XO(31,235,0,1), XO_MASK,	PPCCOM,		{ RT, RA, RB } },
37255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "muls.",   XO(31,235,0,1), XO_MASK,	PWRCOM,		{ RT, RA, RB } },
37265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mullwo",  XO(31,235,1,0), XO_MASK,	PPCCOM,		{ RT, RA, RB } },
37275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mulso",   XO(31,235,1,0), XO_MASK,	PWRCOM,		{ RT, RA, RB } },
37285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mullwo.", XO(31,235,1,1), XO_MASK,	PPCCOM,		{ RT, RA, RB } },
37295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mulso.",  XO(31,235,1,1), XO_MASK,	PWRCOM,		{ RT, RA, RB } },
37305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
37315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "icblce",  X(31,238),	X_MASK,		PPCCHLK64,	{ CT, RA, RB }},
37325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtsrin",  X(31,242),	XRA_MASK,	PPC32,		{ RS, RB } },
37335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtsri",   X(31,242),	XRA_MASK,	POWER32,	{ RS, RB } },
37345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
37355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcbtst",  X(31,246),	X_MASK,	PPC,			{ CT, RA, RB } },
37365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
37375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stbux",   X(31,247),	X_MASK,		COM,		{ RS, RAS, RB } },
37385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
37395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "slliq",   XRC(31,248,0), X_MASK,	M601,		{ RA, RS, SH } },
37405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "slliq.",  XRC(31,248,1), X_MASK,	M601,		{ RA, RS, SH } },
37415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
37425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcbtste", X(31,253),	X_MASK,		BOOKE64,	{ CT, RA, RB } },
37435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
37445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stbuxe",  X(31,255),	X_MASK,		BOOKE64,	{ RS, RAS, RB } },
37455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
37465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdcrx",  X(31,259),	X_MASK,		BOOKE,		{ RS, RA } },
37475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
37485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "doz",     XO(31,264,0,0), XO_MASK,	M601,		{ RT, RA, RB } },
37495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "doz.",    XO(31,264,0,1), XO_MASK,	M601,		{ RT, RA, RB } },
37505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dozo",    XO(31,264,1,0), XO_MASK,	M601,		{ RT, RA, RB } },
37515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dozo.",   XO(31,264,1,1), XO_MASK,	M601,		{ RT, RA, RB } },
37525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
37535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "add",     XO(31,266,0,0), XO_MASK,	PPCCOM,		{ RT, RA, RB } },
37545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cax",     XO(31,266,0,0), XO_MASK,	PWRCOM,		{ RT, RA, RB } },
37555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "add.",    XO(31,266,0,1), XO_MASK,	PPCCOM,		{ RT, RA, RB } },
37565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cax.",    XO(31,266,0,1), XO_MASK,	PWRCOM,		{ RT, RA, RB } },
37575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "addo",    XO(31,266,1,0), XO_MASK,	PPCCOM,		{ RT, RA, RB } },
37585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "caxo",    XO(31,266,1,0), XO_MASK,	PWRCOM,		{ RT, RA, RB } },
37595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "addo.",   XO(31,266,1,1), XO_MASK,	PPCCOM,		{ RT, RA, RB } },
37605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "caxo.",   XO(31,266,1,1), XO_MASK,	PWRCOM,		{ RT, RA, RB } },
37615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
37625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlbiel",  X(31,274), XRTLRA_MASK,	POWER4,		{ RB, L } },
37635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
37645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfapidi", X(31,275), X_MASK,		BOOKE,		{ RT, RA } },
37655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
37665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lscbx",   XRC(31,277,0), X_MASK,	M601,		{ RT, RA, RB } },
37675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lscbx.",  XRC(31,277,1), X_MASK,	M601,		{ RT, RA, RB } },
37685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
37695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcbt",    X(31,278),	X_MASK,		PPC,		{ CT, RA, RB } },
37705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
37715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lhzx",    X(31,279),	X_MASK,		COM,		{ RT, RA0, RB } },
37725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
37735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "eqv",     XRC(31,284,0), X_MASK,	COM,		{ RA, RS, RB } },
37745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "eqv.",    XRC(31,284,1), X_MASK,	COM,		{ RA, RS, RB } },
37755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
37765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcbte",   X(31,286),	X_MASK,		BOOKE64,	{ CT, RA, RB } },
37775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
37785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lhzxe",   X(31,287),	X_MASK,		BOOKE64,	{ RT, RA0, RB } },
37795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
37805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlbie",   X(31,306),	XRTLRA_MASK,	PPC,		{ RB, L } },
37815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlbi",    X(31,306),	XRT_MASK,	POWER,		{ RA0, RB } },
37828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
37838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "eciwx",   X(31,310), X_MASK,		PPC,		{ RT, RA, RB } },
37848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
37855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lhzux",   X(31,311),	X_MASK,		COM,		{ RT, RAL, RB } },
37865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
37875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "xor",     XRC(31,316,0), X_MASK,	COM,		{ RA, RS, RB } },
37885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "xor.",    XRC(31,316,1), X_MASK,	COM,		{ RA, RS, RB } },
37895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
37905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lhzuxe",  X(31,319),	X_MASK,		BOOKE64,	{ RT, RAL, RB } },
37915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
37925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfexisr",  XSPR(31,323,64),  XSPR_MASK, PPC403,	{ RT } },
37935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfexier",  XSPR(31,323,66),  XSPR_MASK, PPC403,	{ RT } },
37945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfbr0",    XSPR(31,323,128), XSPR_MASK, PPC403,	{ RT } },
37955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfbr1",    XSPR(31,323,129), XSPR_MASK, PPC403,	{ RT } },
37965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfbr2",    XSPR(31,323,130), XSPR_MASK, PPC403,	{ RT } },
37975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfbr3",    XSPR(31,323,131), XSPR_MASK, PPC403,	{ RT } },
37985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfbr4",    XSPR(31,323,132), XSPR_MASK, PPC403,	{ RT } },
37995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfbr5",    XSPR(31,323,133), XSPR_MASK, PPC403,	{ RT } },
38005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfbr6",    XSPR(31,323,134), XSPR_MASK, PPC403,	{ RT } },
38015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfbr7",    XSPR(31,323,135), XSPR_MASK, PPC403,	{ RT } },
38025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfbear",   XSPR(31,323,144), XSPR_MASK, PPC403,	{ RT } },
38035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfbesr",   XSPR(31,323,145), XSPR_MASK, PPC403,	{ RT } },
38045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfiocr",   XSPR(31,323,160), XSPR_MASK, PPC403,	{ RT } },
38055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdmacr0", XSPR(31,323,192), XSPR_MASK, PPC403,	{ RT } },
38065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdmact0", XSPR(31,323,193), XSPR_MASK, PPC403,	{ RT } },
38075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdmada0", XSPR(31,323,194), XSPR_MASK, PPC403,	{ RT } },
38085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdmasa0", XSPR(31,323,195), XSPR_MASK, PPC403,	{ RT } },
38095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdmacc0", XSPR(31,323,196), XSPR_MASK, PPC403,	{ RT } },
38105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdmacr1", XSPR(31,323,200), XSPR_MASK, PPC403,	{ RT } },
38115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdmact1", XSPR(31,323,201), XSPR_MASK, PPC403,	{ RT } },
38125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdmada1", XSPR(31,323,202), XSPR_MASK, PPC403,	{ RT } },
38135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdmasa1", XSPR(31,323,203), XSPR_MASK, PPC403,	{ RT } },
38145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdmacc1", XSPR(31,323,204), XSPR_MASK, PPC403,	{ RT } },
38155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdmacr2", XSPR(31,323,208), XSPR_MASK, PPC403,	{ RT } },
38165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdmact2", XSPR(31,323,209), XSPR_MASK, PPC403,	{ RT } },
38175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdmada2", XSPR(31,323,210), XSPR_MASK, PPC403,	{ RT } },
38185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdmasa2", XSPR(31,323,211), XSPR_MASK, PPC403,	{ RT } },
38195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdmacc2", XSPR(31,323,212), XSPR_MASK, PPC403,	{ RT } },
38205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdmacr3", XSPR(31,323,216), XSPR_MASK, PPC403,	{ RT } },
38215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdmact3", XSPR(31,323,217), XSPR_MASK, PPC403,	{ RT } },
38225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdmada3", XSPR(31,323,218), XSPR_MASK, PPC403,	{ RT } },
38235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdmasa3", XSPR(31,323,219), XSPR_MASK, PPC403,	{ RT } },
38245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdmacc3", XSPR(31,323,220), XSPR_MASK, PPC403,	{ RT } },
38255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdmasr",  XSPR(31,323,224), XSPR_MASK, PPC403,	{ RT } },
38265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdcr",    X(31,323),	X_MASK,	PPC403 | BOOKE,	{ RT, SPR } },
38275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
38285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "div",     XO(31,331,0,0), XO_MASK,	M601,		{ RT, RA, RB } },
38295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "div.",    XO(31,331,0,1), XO_MASK,	M601,		{ RT, RA, RB } },
38305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "divo",    XO(31,331,1,0), XO_MASK,	M601,		{ RT, RA, RB } },
38315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "divo.",   XO(31,331,1,1), XO_MASK,	M601,		{ RT, RA, RB } },
38325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
38335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfpmr",   X(31,334),	X_MASK,		PPCPMR,		{ RT, PMR }},
38345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
38355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfmq",       XSPR(31,339,0),    XSPR_MASK, M601,	{ RT } },
38365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfxer",      XSPR(31,339,1),    XSPR_MASK, COM,	{ RT } },
38375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfrtcu",     XSPR(31,339,4),    XSPR_MASK, COM,	{ RT } },
38385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfrtcl",     XSPR(31,339,5),    XSPR_MASK, COM,	{ RT } },
38395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdec",      XSPR(31,339,6),    XSPR_MASK, MFDEC1,	{ RT } },
38405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdec",      XSPR(31,339,22),   XSPR_MASK, MFDEC2,	{ RT } },
38415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mflr",       XSPR(31,339,8),    XSPR_MASK, COM,	{ RT } },
38425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfctr",      XSPR(31,339,9),    XSPR_MASK, COM,	{ RT } },
38435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mftid",      XSPR(31,339,17),   XSPR_MASK, POWER,	{ RT } },
38445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdsisr",    XSPR(31,339,18),   XSPR_MASK, COM,	{ RT } },
38455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdar",      XSPR(31,339,19),   XSPR_MASK, COM,	{ RT } },
38465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfsdr0",     XSPR(31,339,24),   XSPR_MASK, POWER,	{ RT } },
38475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfsdr1",     XSPR(31,339,25),   XSPR_MASK, COM,	{ RT } },
38485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfsrr0",     XSPR(31,339,26),   XSPR_MASK, COM,	{ RT } },
38495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfsrr1",     XSPR(31,339,27),   XSPR_MASK, COM,	{ RT } },
38505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfcfar",     XSPR(31,339,28),   XSPR_MASK, POWER6,	{ RT } },
38515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfpid",      XSPR(31,339,48),   XSPR_MASK, BOOKE,    { RT } },
38525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfpid",      XSPR(31,339,945),  XSPR_MASK, PPC403,	{ RT } },
38535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfcsrr0",    XSPR(31,339,58),   XSPR_MASK, BOOKE,    { RT } },
38545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfcsrr1",    XSPR(31,339,59),   XSPR_MASK, BOOKE,    { RT } },
38555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdear",     XSPR(31,339,61),   XSPR_MASK, BOOKE,    { RT } },
38565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdear",     XSPR(31,339,981),  XSPR_MASK, PPC403,	{ RT } },
38575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfesr",      XSPR(31,339,62),   XSPR_MASK, BOOKE,    { RT } },
38585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfesr",      XSPR(31,339,980),  XSPR_MASK, PPC403,	{ RT } },
38595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfivpr",     XSPR(31,339,63),   XSPR_MASK, BOOKE,    { RT } },
38605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfcmpa",     XSPR(31,339,144),  XSPR_MASK, PPC860,	{ RT } },
38615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfcmpb",     XSPR(31,339,145),  XSPR_MASK, PPC860,	{ RT } },
38625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfcmpc",     XSPR(31,339,146),  XSPR_MASK, PPC860,	{ RT } },
38635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfcmpd",     XSPR(31,339,147),  XSPR_MASK, PPC860,	{ RT } },
38645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mficr",      XSPR(31,339,148),  XSPR_MASK, PPC860,	{ RT } },
38655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfder",      XSPR(31,339,149),  XSPR_MASK, PPC860,	{ RT } },
38665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfcounta",   XSPR(31,339,150),  XSPR_MASK, PPC860,	{ RT } },
38675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfcountb",   XSPR(31,339,151),  XSPR_MASK, PPC860,	{ RT } },
38685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfcmpe",     XSPR(31,339,152),  XSPR_MASK, PPC860,	{ RT } },
38695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfcmpf",     XSPR(31,339,153),  XSPR_MASK, PPC860,	{ RT } },
38705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfcmpg",     XSPR(31,339,154),  XSPR_MASK, PPC860,	{ RT } },
38715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfcmph",     XSPR(31,339,155),  XSPR_MASK, PPC860,	{ RT } },
38725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mflctrl1",   XSPR(31,339,156),  XSPR_MASK, PPC860,	{ RT } },
38735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mflctrl2",   XSPR(31,339,157),  XSPR_MASK, PPC860,	{ RT } },
38745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfictrl",    XSPR(31,339,158),  XSPR_MASK, PPC860,	{ RT } },
38755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfbar",      XSPR(31,339,159),  XSPR_MASK, PPC860,	{ RT } },
38765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfvrsave",   XSPR(31,339,256),  XSPR_MASK, PPCVEC,	{ RT } },
38775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfusprg0",   XSPR(31,339,256),  XSPR_MASK, BOOKE,    { RT } },
38785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mftb",       X(31,371),	   X_MASK,    CLASSIC,	{ RT, TBR } },
38795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mftb",       XSPR(31,339,268),  XSPR_MASK, BOOKE,    { RT } },
38805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mftbl",      XSPR(31,371,268),  XSPR_MASK, CLASSIC,	{ RT } },
38815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mftbl",      XSPR(31,339,268),  XSPR_MASK, BOOKE,    { RT } },
38825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mftbu",      XSPR(31,371,269),  XSPR_MASK, CLASSIC,	{ RT } },
38835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mftbu",      XSPR(31,339,269),  XSPR_MASK, BOOKE,    { RT } },
38845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfsprg",     XSPR(31,339,256),  XSPRG_MASK, PPC,	{ RT, SPRG } },
38855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfsprg0",    XSPR(31,339,272),  XSPR_MASK, PPC,	{ RT } },
38865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfsprg1",    XSPR(31,339,273),  XSPR_MASK, PPC,	{ RT } },
38875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfsprg2",    XSPR(31,339,274),  XSPR_MASK, PPC,	{ RT } },
38885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfsprg3",    XSPR(31,339,275),  XSPR_MASK, PPC,	{ RT } },
38895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfsprg4",    XSPR(31,339,260),  XSPR_MASK, PPC405 | BOOKE,	{ RT } },
38905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfsprg5",    XSPR(31,339,261),  XSPR_MASK, PPC405 | BOOKE,	{ RT } },
38915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfsprg6",    XSPR(31,339,262),  XSPR_MASK, PPC405 | BOOKE,	{ RT } },
38925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfsprg7",    XSPR(31,339,263),  XSPR_MASK, PPC405 | BOOKE,	{ RT } },
38935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfasr",      XSPR(31,339,280),  XSPR_MASK, PPC64,	{ RT } },
38945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfear",      XSPR(31,339,282),  XSPR_MASK, PPC,	{ RT } },
38955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfpir",      XSPR(31,339,286),  XSPR_MASK, BOOKE,    { RT } },
38965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfpvr",      XSPR(31,339,287),  XSPR_MASK, PPC,	{ RT } },
38975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdbsr",     XSPR(31,339,304),  XSPR_MASK, BOOKE,    { RT } },
38985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdbsr",     XSPR(31,339,1008), XSPR_MASK, PPC403,	{ RT } },
38995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdbcr0",    XSPR(31,339,308),  XSPR_MASK, BOOKE,    { RT } },
39005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdbcr0",    XSPR(31,339,1010), XSPR_MASK, PPC405,	{ RT } },
39015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdbcr1",    XSPR(31,339,309),  XSPR_MASK, BOOKE,    { RT } },
39025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdbcr1",    XSPR(31,339,957),  XSPR_MASK, PPC405,	{ RT } },
39035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdbcr2",    XSPR(31,339,310),  XSPR_MASK, BOOKE,    { RT } },
39045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfiac1",     XSPR(31,339,312),  XSPR_MASK, BOOKE,    { RT } },
39055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfiac1",     XSPR(31,339,1012), XSPR_MASK, PPC403,	{ RT } },
39065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfiac2",     XSPR(31,339,313),  XSPR_MASK, BOOKE,    { RT } },
39075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfiac2",     XSPR(31,339,1013), XSPR_MASK, PPC403,	{ RT } },
39085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfiac3",     XSPR(31,339,314),  XSPR_MASK, BOOKE,    { RT } },
39095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfiac3",     XSPR(31,339,948),  XSPR_MASK, PPC405,	{ RT } },
39105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfiac4",     XSPR(31,339,315),  XSPR_MASK, BOOKE,    { RT } },
39115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfiac4",     XSPR(31,339,949),  XSPR_MASK, PPC405,	{ RT } },
39125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdac1",     XSPR(31,339,316),  XSPR_MASK, BOOKE,    { RT } },
39135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdac1",     XSPR(31,339,1014), XSPR_MASK, PPC403,	{ RT } },
39145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdac2",     XSPR(31,339,317),  XSPR_MASK, BOOKE,    { RT } },
39155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdac2",     XSPR(31,339,1015), XSPR_MASK, PPC403,	{ RT } },
39165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdvc1",     XSPR(31,339,318),  XSPR_MASK, BOOKE,    { RT } },
39175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdvc1",     XSPR(31,339,950),  XSPR_MASK, PPC405,	{ RT } },
39185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdvc2",     XSPR(31,339,319),  XSPR_MASK, BOOKE,    { RT } },
39195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdvc2",     XSPR(31,339,951),  XSPR_MASK, PPC405,	{ RT } },
39205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mftsr",      XSPR(31,339,336),  XSPR_MASK, BOOKE,    { RT } },
39215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mftsr",      XSPR(31,339,984),  XSPR_MASK, PPC403,	{ RT } },
39225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mftcr",      XSPR(31,339,340),  XSPR_MASK, BOOKE,    { RT } },
39235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mftcr",      XSPR(31,339,986),  XSPR_MASK, PPC403,	{ RT } },
39245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfivor0",    XSPR(31,339,400),  XSPR_MASK, BOOKE,    { RT } },
39255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfivor1",    XSPR(31,339,401),  XSPR_MASK, BOOKE,    { RT } },
39265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfivor2",    XSPR(31,339,402),  XSPR_MASK, BOOKE,    { RT } },
39275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfivor3",    XSPR(31,339,403),  XSPR_MASK, BOOKE,    { RT } },
39285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfivor4",    XSPR(31,339,404),  XSPR_MASK, BOOKE,    { RT } },
39295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfivor5",    XSPR(31,339,405),  XSPR_MASK, BOOKE,    { RT } },
39305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfivor6",    XSPR(31,339,406),  XSPR_MASK, BOOKE,    { RT } },
39315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfivor7",    XSPR(31,339,407),  XSPR_MASK, BOOKE,    { RT } },
39325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfivor8",    XSPR(31,339,408),  XSPR_MASK, BOOKE,    { RT } },
39335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfivor9",    XSPR(31,339,409),  XSPR_MASK, BOOKE,    { RT } },
39345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfivor10",   XSPR(31,339,410),  XSPR_MASK, BOOKE,    { RT } },
39355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfivor11",   XSPR(31,339,411),  XSPR_MASK, BOOKE,    { RT } },
39365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfivor12",   XSPR(31,339,412),  XSPR_MASK, BOOKE,    { RT } },
39375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfivor13",   XSPR(31,339,413),  XSPR_MASK, BOOKE,    { RT } },
39385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfivor14",   XSPR(31,339,414),  XSPR_MASK, BOOKE,    { RT } },
39395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfivor15",   XSPR(31,339,415),  XSPR_MASK, BOOKE,    { RT } },
39405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfspefscr",  XSPR(31,339,512),  XSPR_MASK, PPCSPE,	{ RT } },
39415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfbbear",    XSPR(31,339,513),  XSPR_MASK, PPCBRLK,  { RT } },
39425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfbbtar",    XSPR(31,339,514),  XSPR_MASK, PPCBRLK,  { RT } },
39435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfivor32",   XSPR(31,339,528),  XSPR_MASK, PPCSPE,	{ RT } },
39445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfivor33",   XSPR(31,339,529),  XSPR_MASK, PPCSPE,	{ RT } },
39455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfivor34",   XSPR(31,339,530),  XSPR_MASK, PPCSPE,	{ RT } },
39465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfivor35",   XSPR(31,339,531),  XSPR_MASK, PPCPMR,	{ RT } },
39475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfibatu",    XSPR(31,339,528),  XSPRBAT_MASK, PPC,	{ RT, SPRBAT } },
39485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfibatl",    XSPR(31,339,529),  XSPRBAT_MASK, PPC,	{ RT, SPRBAT } },
39495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdbatu",    XSPR(31,339,536),  XSPRBAT_MASK, PPC,	{ RT, SPRBAT } },
39505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdbatl",    XSPR(31,339,537),  XSPRBAT_MASK, PPC,	{ RT, SPRBAT } },
39515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfic_cst",   XSPR(31,339,560),  XSPR_MASK, PPC860,	{ RT } },
39525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfic_adr",   XSPR(31,339,561),  XSPR_MASK, PPC860,	{ RT } },
39535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfic_dat",   XSPR(31,339,562),  XSPR_MASK, PPC860,	{ RT } },
39545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdc_cst",   XSPR(31,339,568),  XSPR_MASK, PPC860,	{ RT } },
39555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdc_adr",   XSPR(31,339,569),  XSPR_MASK, PPC860,	{ RT } },
39565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfmcsrr0",   XSPR(31,339,570),  XSPR_MASK, PPCRFMCI, { RT } },
39575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdc_dat",   XSPR(31,339,570),  XSPR_MASK, PPC860,	{ RT } },
39585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfmcsrr1",   XSPR(31,339,571),  XSPR_MASK, PPCRFMCI, { RT } },
39595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfmcsr",     XSPR(31,339,572),  XSPR_MASK, PPCRFMCI, { RT } },
39605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfmcar",     XSPR(31,339,573),  XSPR_MASK, PPCRFMCI, { RT } },
39615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdpdr",     XSPR(31,339,630),  XSPR_MASK, PPC860,	{ RT } },
39625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdpir",     XSPR(31,339,631),  XSPR_MASK, PPC860,	{ RT } },
39635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfimmr",     XSPR(31,339,638),  XSPR_MASK, PPC860,	{ RT } },
39645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfmi_ctr",   XSPR(31,339,784),  XSPR_MASK, PPC860,	{ RT } },
39655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfmi_ap",    XSPR(31,339,786),  XSPR_MASK, PPC860,	{ RT } },
39665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfmi_epn",   XSPR(31,339,787),  XSPR_MASK, PPC860,	{ RT } },
39675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfmi_twc",   XSPR(31,339,789),  XSPR_MASK, PPC860,	{ RT } },
39685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfmi_rpn",   XSPR(31,339,790),  XSPR_MASK, PPC860,	{ RT } },
39695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfmd_ctr",   XSPR(31,339,792),  XSPR_MASK, PPC860,	{ RT } },
39705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfm_casid",  XSPR(31,339,793),  XSPR_MASK, PPC860,	{ RT } },
39715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfmd_ap",    XSPR(31,339,794),  XSPR_MASK, PPC860,	{ RT } },
39725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfmd_epn",   XSPR(31,339,795),  XSPR_MASK, PPC860,	{ RT } },
39735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfmd_twb",   XSPR(31,339,796),  XSPR_MASK, PPC860,	{ RT } },
39745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfmd_twc",   XSPR(31,339,797),  XSPR_MASK, PPC860,	{ RT } },
39755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfmd_rpn",   XSPR(31,339,798),  XSPR_MASK, PPC860,	{ RT } },
39765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfm_tw",     XSPR(31,339,799),  XSPR_MASK, PPC860,	{ RT } },
39775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfmi_dbcam", XSPR(31,339,816),  XSPR_MASK, PPC860,	{ RT } },
39785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfmi_dbram0",XSPR(31,339,817),  XSPR_MASK, PPC860,	{ RT } },
39795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfmi_dbram1",XSPR(31,339,818),  XSPR_MASK, PPC860,	{ RT } },
39805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfmd_dbcam", XSPR(31,339,824),  XSPR_MASK, PPC860,	{ RT } },
39815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfmd_dbram0",XSPR(31,339,825),  XSPR_MASK, PPC860,	{ RT } },
39825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfmd_dbram1",XSPR(31,339,826),  XSPR_MASK, PPC860,	{ RT } },
39835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfummcr0",   XSPR(31,339,936),  XSPR_MASK, PPC750,   { RT } },
39845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfupmc1",    XSPR(31,339,937),  XSPR_MASK, PPC750,   { RT } },
39855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfupmc2",    XSPR(31,339,938),  XSPR_MASK, PPC750,   { RT } },
39865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfusia",     XSPR(31,339,939),  XSPR_MASK, PPC750,   { RT } },
39875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfummcr1",   XSPR(31,339,940),  XSPR_MASK, PPC750,   { RT } },
39885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfupmc3",    XSPR(31,339,941),  XSPR_MASK, PPC750,   { RT } },
39895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfupmc4",    XSPR(31,339,942),  XSPR_MASK, PPC750,   { RT } },
39905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfzpr",   	XSPR(31,339,944),  XSPR_MASK, PPC403,	{ RT } },
39915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfccr0",  	XSPR(31,339,947),  XSPR_MASK, PPC405,	{ RT } },
39925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfmmcr0",	XSPR(31,339,952),  XSPR_MASK, PPC750,	{ RT } },
39935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfpmc1",	XSPR(31,339,953),  XSPR_MASK, PPC750,	{ RT } },
39945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfsgr",	XSPR(31,339,953),  XSPR_MASK, PPC403,	{ RT } },
39955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfpmc2",	XSPR(31,339,954),  XSPR_MASK, PPC750,	{ RT } },
39965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdcwr", 	XSPR(31,339,954),  XSPR_MASK, PPC403,	{ RT } },
39975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfsia",	XSPR(31,339,955),  XSPR_MASK, PPC750,	{ RT } },
39985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfsler",	XSPR(31,339,955),  XSPR_MASK, PPC405,	{ RT } },
39995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfmmcr1",	XSPR(31,339,956),  XSPR_MASK, PPC750,	{ RT } },
40005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfsu0r",	XSPR(31,339,956),  XSPR_MASK, PPC405,	{ RT } },
40015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfpmc3",	XSPR(31,339,957),  XSPR_MASK, PPC750,	{ RT } },
40025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfpmc4",	XSPR(31,339,958),  XSPR_MASK, PPC750,	{ RT } },
40035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mficdbdr",   XSPR(31,339,979),  XSPR_MASK, PPC403,   { RT } },
40045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfevpr",     XSPR(31,339,982),  XSPR_MASK, PPC403,	{ RT } },
40055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfcdbcr",    XSPR(31,339,983),  XSPR_MASK, PPC403,	{ RT } },
40065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfpit",      XSPR(31,339,987),  XSPR_MASK, PPC403,	{ RT } },
40075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mftbhi",     XSPR(31,339,988),  XSPR_MASK, PPC403,	{ RT } },
40085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mftblo",     XSPR(31,339,989),  XSPR_MASK, PPC403,	{ RT } },
40095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfsrr2",     XSPR(31,339,990),  XSPR_MASK, PPC403,	{ RT } },
40105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfsrr3",     XSPR(31,339,991),  XSPR_MASK, PPC403,	{ RT } },
40115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfl2cr",     XSPR(31,339,1017), XSPR_MASK, PPC750,   { RT } },
40125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfdccr",     XSPR(31,339,1018), XSPR_MASK, PPC403,	{ RT } },
40135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mficcr",     XSPR(31,339,1019), XSPR_MASK, PPC403,	{ RT } },
40145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfictc",     XSPR(31,339,1019), XSPR_MASK, PPC750,   { RT } },
40155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfpbl1",     XSPR(31,339,1020), XSPR_MASK, PPC403,	{ RT } },
40165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfthrm1",    XSPR(31,339,1020), XSPR_MASK, PPC750,   { RT } },
40175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfpbu1",     XSPR(31,339,1021), XSPR_MASK, PPC403,	{ RT } },
40185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfthrm2",    XSPR(31,339,1021), XSPR_MASK, PPC750,   { RT } },
40195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfpbl2",     XSPR(31,339,1022), XSPR_MASK, PPC403,	{ RT } },
40205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfthrm3",    XSPR(31,339,1022), XSPR_MASK, PPC750,   { RT } },
40215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfpbu2",     XSPR(31,339,1023), XSPR_MASK, PPC403,	{ RT } },
40225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfspr",      X(31,339),	   X_MASK,    COM,	{ RT, SPR } },
40235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
40245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lwax",    X(31,341),	X_MASK,		PPC64,		{ RT, RA0, RB } },
40255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
40265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dst",     XDSS(31,342,0), XDSS_MASK,	PPCVEC,		{ RA, RB, STRM } },
40275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dstt",    XDSS(31,342,1), XDSS_MASK,	PPCVEC,		{ RA, RB, STRM } },
40285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
40295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lhax",    X(31,343),	X_MASK,		COM,		{ RT, RA0, RB } },
40305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
40315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lhaxe",   X(31,351),	X_MASK,		BOOKE64,	{ RT, RA0, RB } },
40325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
40335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dstst",   XDSS(31,374,0), XDSS_MASK,	PPCVEC,		{ RA, RB, STRM } },
40345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dststt",  XDSS(31,374,1), XDSS_MASK,	PPCVEC,		{ RA, RB, STRM } },
40355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
40365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dccci",   X(31,454),	XRT_MASK,	PPC403|PPC440,	{ RA, RB } },
40375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
40385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "abs",     XO(31,360,0,0), XORB_MASK, M601,		{ RT, RA } },
40395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "abs.",    XO(31,360,0,1), XORB_MASK, M601,		{ RT, RA } },
40405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "abso",    XO(31,360,1,0), XORB_MASK, M601,		{ RT, RA } },
40415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "abso.",   XO(31,360,1,1), XORB_MASK, M601,		{ RT, RA } },
40425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
40435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "divs",    XO(31,363,0,0), XO_MASK,	M601,		{ RT, RA, RB } },
40445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "divs.",   XO(31,363,0,1), XO_MASK,	M601,		{ RT, RA, RB } },
40455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "divso",   XO(31,363,1,0), XO_MASK,	M601,		{ RT, RA, RB } },
40465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "divso.",  XO(31,363,1,1), XO_MASK,	M601,		{ RT, RA, RB } },
40478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
40488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "tlbia",   X(31,370),	0xffffffff,	PPC,		{ 0 } },
40498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
40505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lwaux",   X(31,373),	X_MASK,		PPC64,		{ RT, RAL, RB } },
40515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
40525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lhaux",   X(31,375),	X_MASK,		COM,		{ RT, RAL, RB } },
40535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
40545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lhauxe",  X(31,383),	X_MASK,		BOOKE64,	{ RT, RAL, RB } },
40555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
40565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdcrx",  X(31,387),	X_MASK,		BOOKE,		{ RA, RS } },
40575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
40585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcblc",   X(31,390),	X_MASK,		PPCCHLK,	{ CT, RA, RB }},
40595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
40605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subfe64", XO(31,392,0,0), XO_MASK,	BOOKE64,	{ RT, RA, RB } },
40615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subfe64o",XO(31,392,1,0), XO_MASK,	BOOKE64,	{ RT, RA, RB } },
40628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
40635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "adde64",  XO(31,394,0,0), XO_MASK,	BOOKE64,	{ RT, RA, RB } },
40645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "adde64o", XO(31,394,1,0), XO_MASK,	BOOKE64,	{ RT, RA, RB } },
40658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
40665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcblce",  X(31,398),	X_MASK,		PPCCHLK64,	{ CT, RA, RB }},
40678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
40685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "slbmte",  X(31,402), XRA_MASK,	PPC64,		{ RS, RB } },
40695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
40705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sthx",    X(31,407),	X_MASK,		COM,		{ RS, RA0, RB } },
40715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
40725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cmpb",    X(31,508),	X_MASK,		POWER6,		{ RA, RS, RB } },
40738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
40748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "lfqx",    X(31,791),	X_MASK,		POWER2,		{ FRT, RA, RB } },
40758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
40765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lfdpx",   X(31,791),	X_MASK,		POWER6,		{ FRT, RA, RB } },
40775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
40788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "lfqux",   X(31,823),	X_MASK,		POWER2,		{ FRT, RA, RB } },
40798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
40808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "stfqx",   X(31,919),	X_MASK,		POWER2,		{ FRS, RA, RB } },
40818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
40825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stfdpx",  X(31,919),	X_MASK,		POWER6,		{ FRS, RA, RB } },
40838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
40845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stfqux",  X(31,951),	X_MASK,		POWER2,		{ FRS, RA, RB } },
40858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
40865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "orc",     XRC(31,412,0), X_MASK,	COM,		{ RA, RS, RB } },
40875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "orc.",    XRC(31,412,1), X_MASK,	COM,		{ RA, RS, RB } },
40888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
40895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sradi",   XS(31,413,0), XS_MASK,	PPC64,		{ RA, RS, SH6 } },
40905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sradi.",  XS(31,413,1), XS_MASK,	PPC64,		{ RA, RS, SH6 } },
40918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
40925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sthxe",   X(31,415),	X_MASK,		BOOKE64,	{ RS, RA0, RB } },
40938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
40945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "slbie",   X(31,434),	XRTRA_MASK,	PPC64,		{ RB } },
40958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
40965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ecowx",   X(31,438),	X_MASK,		PPC,		{ RT, RA, RB } },
40978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
40985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sthux",   X(31,439),	X_MASK,		COM,		{ RS, RAS, RB } },
40995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
41005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sthuxe",  X(31,447),	X_MASK,		BOOKE64,	{ RS, RAS, RB } },
41015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
41025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cctpl",   0x7c210b78,    0xffffffff,	CELL,		{ 0 }},
41035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cctpm",   0x7c421378,    0xffffffff,	CELL,		{ 0 }},
41045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "cctph",   0x7c631b78,    0xffffffff,	CELL,		{ 0 }},
41055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "db8cyc",  0x7f9ce378,    0xffffffff,	CELL,		{ 0 }},
41065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "db10cyc", 0x7fbdeb78,    0xffffffff,	CELL,		{ 0 }},
41075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "db12cyc", 0x7fdef378,    0xffffffff,	CELL,		{ 0 }},
41085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "db16cyc", 0x7ffffb78,    0xffffffff,	CELL,		{ 0 }},
41095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mr",	     XRC(31,444,0), X_MASK,	COM,		{ RA, RS, RBS } },
41105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "or",      XRC(31,444,0), X_MASK,	COM,		{ RA, RS, RB } },
41115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mr.",     XRC(31,444,1), X_MASK,	COM,		{ RA, RS, RBS } },
41125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "or.",     XRC(31,444,1), X_MASK,	COM,		{ RA, RS, RB } },
41135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
41145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtexisr",  XSPR(31,451,64),  XSPR_MASK, PPC403,	{ RS } },
41155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtexier",  XSPR(31,451,66),  XSPR_MASK, PPC403,	{ RS } },
41165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtbr0",    XSPR(31,451,128), XSPR_MASK, PPC403,	{ RS } },
41175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtbr1",    XSPR(31,451,129), XSPR_MASK, PPC403,	{ RS } },
41185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtbr2",    XSPR(31,451,130), XSPR_MASK, PPC403,	{ RS } },
41195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtbr3",    XSPR(31,451,131), XSPR_MASK, PPC403,	{ RS } },
41205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtbr4",    XSPR(31,451,132), XSPR_MASK, PPC403,	{ RS } },
41215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtbr5",    XSPR(31,451,133), XSPR_MASK, PPC403,	{ RS } },
41225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtbr6",    XSPR(31,451,134), XSPR_MASK, PPC403,	{ RS } },
41235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtbr7",    XSPR(31,451,135), XSPR_MASK, PPC403,	{ RS } },
41245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtbear",   XSPR(31,451,144), XSPR_MASK, PPC403,	{ RS } },
41255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtbesr",   XSPR(31,451,145), XSPR_MASK, PPC403,	{ RS } },
41265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtiocr",   XSPR(31,451,160), XSPR_MASK, PPC403,	{ RS } },
41275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdmacr0", XSPR(31,451,192), XSPR_MASK, PPC403,	{ RS } },
41285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdmact0", XSPR(31,451,193), XSPR_MASK, PPC403,	{ RS } },
41295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdmada0", XSPR(31,451,194), XSPR_MASK, PPC403,	{ RS } },
41305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdmasa0", XSPR(31,451,195), XSPR_MASK, PPC403,	{ RS } },
41315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdmacc0", XSPR(31,451,196), XSPR_MASK, PPC403,	{ RS } },
41325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdmacr1", XSPR(31,451,200), XSPR_MASK, PPC403,	{ RS } },
41335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdmact1", XSPR(31,451,201), XSPR_MASK, PPC403,	{ RS } },
41345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdmada1", XSPR(31,451,202), XSPR_MASK, PPC403,	{ RS } },
41355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdmasa1", XSPR(31,451,203), XSPR_MASK, PPC403,	{ RS } },
41365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdmacc1", XSPR(31,451,204), XSPR_MASK, PPC403,	{ RS } },
41375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdmacr2", XSPR(31,451,208), XSPR_MASK, PPC403,	{ RS } },
41385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdmact2", XSPR(31,451,209), XSPR_MASK, PPC403,	{ RS } },
41395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdmada2", XSPR(31,451,210), XSPR_MASK, PPC403,	{ RS } },
41405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdmasa2", XSPR(31,451,211), XSPR_MASK, PPC403,	{ RS } },
41415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdmacc2", XSPR(31,451,212), XSPR_MASK, PPC403,	{ RS } },
41425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdmacr3", XSPR(31,451,216), XSPR_MASK, PPC403,	{ RS } },
41435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdmact3", XSPR(31,451,217), XSPR_MASK, PPC403,	{ RS } },
41445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdmada3", XSPR(31,451,218), XSPR_MASK, PPC403,	{ RS } },
41455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdmasa3", XSPR(31,451,219), XSPR_MASK, PPC403,	{ RS } },
41465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdmacc3", XSPR(31,451,220), XSPR_MASK, PPC403,	{ RS } },
41475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdmasr",  XSPR(31,451,224), XSPR_MASK, PPC403,	{ RS } },
41485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdcr",    X(31,451),	X_MASK,	PPC403 | BOOKE,	{ SPR, RS } },
41495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
41505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subfze64",XO(31,456,0,0), XORB_MASK, BOOKE64,	{ RT, RA } },
41515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subfze64o",XO(31,456,1,0), XORB_MASK, BOOKE64,	{ RT, RA } },
41525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
41535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "divdu",   XO(31,457,0,0), XO_MASK,	PPC64,		{ RT, RA, RB } },
41545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "divdu.",  XO(31,457,0,1), XO_MASK,	PPC64,		{ RT, RA, RB } },
41555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "divduo",  XO(31,457,1,0), XO_MASK,	PPC64,		{ RT, RA, RB } },
41565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "divduo.", XO(31,457,1,1), XO_MASK,	PPC64,		{ RT, RA, RB } },
41575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
41585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "addze64", XO(31,458,0,0), XORB_MASK, BOOKE64,	{ RT, RA } },
41595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "addze64o",XO(31,458,1,0), XORB_MASK, BOOKE64,	{ RT, RA } },
41608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
41618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "divwu",   XO(31,459,0,0), XO_MASK,	PPC,		{ RT, RA, RB } },
41628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "divwu.",  XO(31,459,0,1), XO_MASK,	PPC,		{ RT, RA, RB } },
41638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "divwuo",  XO(31,459,1,0), XO_MASK,	PPC,		{ RT, RA, RB } },
41648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "divwuo.", XO(31,459,1,1), XO_MASK,	PPC,		{ RT, RA, RB } },
41658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
41665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtmq",      XSPR(31,467,0),    XSPR_MASK, M601,	{ RS } },
41675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtxer",     XSPR(31,467,1),    XSPR_MASK, COM,	{ RS } },
41685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtlr",      XSPR(31,467,8),    XSPR_MASK, COM,	{ RS } },
41695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtctr",     XSPR(31,467,9),    XSPR_MASK, COM,	{ RS } },
41705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mttid",     XSPR(31,467,17),   XSPR_MASK, POWER,	{ RS } },
41715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdsisr",   XSPR(31,467,18),   XSPR_MASK, COM,	{ RS } },
41725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdar",     XSPR(31,467,19),   XSPR_MASK, COM,	{ RS } },
41735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtrtcu",    XSPR(31,467,20),   XSPR_MASK, COM,	{ RS } },
41745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtrtcl",    XSPR(31,467,21),   XSPR_MASK, COM,	{ RS } },
41755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdec",     XSPR(31,467,22),   XSPR_MASK, COM,	{ RS } },
41765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtsdr0",    XSPR(31,467,24),   XSPR_MASK, POWER,	{ RS } },
41775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtsdr1",    XSPR(31,467,25),   XSPR_MASK, COM,	{ RS } },
41785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtsrr0",    XSPR(31,467,26),   XSPR_MASK, COM,	{ RS } },
41795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtsrr1",    XSPR(31,467,27),   XSPR_MASK, COM,	{ RS } },
41805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtcfar",    XSPR(31,467,28),   XSPR_MASK, POWER6,	{ RS } },
41815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtpid",     XSPR(31,467,48),   XSPR_MASK, BOOKE,     { RS } },
41825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtpid",     XSPR(31,467,945),  XSPR_MASK, PPC403,	{ RS } },
41835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdecar",   XSPR(31,467,54),   XSPR_MASK, BOOKE,     { RS } },
41845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtcsrr0",   XSPR(31,467,58),   XSPR_MASK, BOOKE,     { RS } },
41855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtcsrr1",   XSPR(31,467,59),   XSPR_MASK, BOOKE,     { RS } },
41865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdear",    XSPR(31,467,61),   XSPR_MASK, BOOKE,     { RS } },
41875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdear",    XSPR(31,467,981),  XSPR_MASK, PPC403,	{ RS } },
41885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtesr",     XSPR(31,467,62),   XSPR_MASK, BOOKE,     { RS } },
41895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtesr",     XSPR(31,467,980),  XSPR_MASK, PPC403,	{ RS } },
41905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtivpr",    XSPR(31,467,63),   XSPR_MASK, BOOKE,     { RS } },
41915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtcmpa",    XSPR(31,467,144),  XSPR_MASK, PPC860,	{ RS } },
41925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtcmpb",    XSPR(31,467,145),  XSPR_MASK, PPC860,	{ RS } },
41935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtcmpc",    XSPR(31,467,146),  XSPR_MASK, PPC860,	{ RS } },
41945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtcmpd",    XSPR(31,467,147),  XSPR_MASK, PPC860,	{ RS } },
41955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mticr",     XSPR(31,467,148),  XSPR_MASK, PPC860,	{ RS } },
41965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtder",     XSPR(31,467,149),  XSPR_MASK, PPC860,	{ RS } },
41975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtcounta",  XSPR(31,467,150),  XSPR_MASK, PPC860,	{ RS } },
41985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtcountb",  XSPR(31,467,151),  XSPR_MASK, PPC860,	{ RS } },
41995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtcmpe",    XSPR(31,467,152),  XSPR_MASK, PPC860,	{ RS } },
42005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtcmpf",    XSPR(31,467,153),  XSPR_MASK, PPC860,	{ RS } },
42015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtcmpg",    XSPR(31,467,154),  XSPR_MASK, PPC860,	{ RS } },
42025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtcmph",    XSPR(31,467,155),  XSPR_MASK, PPC860,	{ RS } },
42035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtlctrl1",  XSPR(31,467,156),  XSPR_MASK, PPC860,	{ RS } },
42045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtlctrl2",  XSPR(31,467,157),  XSPR_MASK, PPC860,	{ RS } },
42055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtictrl",   XSPR(31,467,158),  XSPR_MASK, PPC860,	{ RS } },
42065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtbar",     XSPR(31,467,159),  XSPR_MASK, PPC860,	{ RS } },
42075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtvrsave",  XSPR(31,467,256),  XSPR_MASK, PPCVEC,	{ RS } },
42085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtusprg0",  XSPR(31,467,256),  XSPR_MASK, BOOKE,     { RS } },
42095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtsprg",    XSPR(31,467,256),  XSPRG_MASK,PPC,	{ SPRG, RS } },
42105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtsprg0",   XSPR(31,467,272),  XSPR_MASK, PPC,	{ RS } },
42115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtsprg1",   XSPR(31,467,273),  XSPR_MASK, PPC,	{ RS } },
42125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtsprg2",   XSPR(31,467,274),  XSPR_MASK, PPC,	{ RS } },
42135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtsprg3",   XSPR(31,467,275),  XSPR_MASK, PPC,	{ RS } },
42145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtsprg4",   XSPR(31,467,276),  XSPR_MASK, PPC405 | BOOKE, { RS } },
42155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtsprg5",   XSPR(31,467,277),  XSPR_MASK, PPC405 | BOOKE, { RS } },
42165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtsprg6",   XSPR(31,467,278),  XSPR_MASK, PPC405 | BOOKE, { RS } },
42175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtsprg7",   XSPR(31,467,279),  XSPR_MASK, PPC405 | BOOKE, { RS } },
42185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtasr",     XSPR(31,467,280),  XSPR_MASK, PPC64,	{ RS } },
42195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtear",     XSPR(31,467,282),  XSPR_MASK, PPC,	{ RS } },
42205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mttbl",     XSPR(31,467,284),  XSPR_MASK, PPC,	{ RS } },
42215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mttbu",     XSPR(31,467,285),  XSPR_MASK, PPC,	{ RS } },
42225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdbsr",    XSPR(31,467,304),  XSPR_MASK, BOOKE,     { RS } },
42235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdbsr",    XSPR(31,467,1008), XSPR_MASK, PPC403,	{ RS } },
42245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdbcr0",   XSPR(31,467,308),  XSPR_MASK, BOOKE,     { RS } },
42255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdbcr0",   XSPR(31,467,1010), XSPR_MASK, PPC405,	{ RS } },
42265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdbcr1",   XSPR(31,467,309),  XSPR_MASK, BOOKE,     { RS } },
42275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdbcr1",   XSPR(31,467,957),  XSPR_MASK, PPC405,	{ RS } },
42285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdbcr2",   XSPR(31,467,310),  XSPR_MASK, BOOKE,     { RS } },
42295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtiac1",    XSPR(31,467,312),  XSPR_MASK, BOOKE,     { RS } },
42305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtiac1",    XSPR(31,467,1012), XSPR_MASK, PPC403,	{ RS } },
42315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtiac2",    XSPR(31,467,313),  XSPR_MASK, BOOKE,     { RS } },
42325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtiac2",    XSPR(31,467,1013), XSPR_MASK, PPC403,	{ RS } },
42335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtiac3",    XSPR(31,467,314),  XSPR_MASK, BOOKE,     { RS } },
42345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtiac3",    XSPR(31,467,948),  XSPR_MASK, PPC405,	{ RS } },
42355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtiac4",    XSPR(31,467,315),  XSPR_MASK, BOOKE,     { RS } },
42365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtiac4",    XSPR(31,467,949),  XSPR_MASK, PPC405,	{ RS } },
42375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdac1",    XSPR(31,467,316),  XSPR_MASK, BOOKE,     { RS } },
42385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdac1",    XSPR(31,467,1014), XSPR_MASK, PPC403,	{ RS } },
42395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdac2",    XSPR(31,467,317),  XSPR_MASK, BOOKE,     { RS } },
42405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdac2",    XSPR(31,467,1015), XSPR_MASK, PPC403,	{ RS } },
42415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdvc1",    XSPR(31,467,318),  XSPR_MASK, BOOKE,     { RS } },
42425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdvc1",    XSPR(31,467,950),  XSPR_MASK, PPC405,	{ RS } },
42435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdvc2",    XSPR(31,467,319),  XSPR_MASK, BOOKE,     { RS } },
42445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdvc2",    XSPR(31,467,951),  XSPR_MASK, PPC405,	{ RS } },
42455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mttsr",     XSPR(31,467,336),  XSPR_MASK, BOOKE,     { RS } },
42465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mttsr",     XSPR(31,467,984),  XSPR_MASK, PPC403,	{ RS } },
42475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mttcr",     XSPR(31,467,340),  XSPR_MASK, BOOKE,     { RS } },
42485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mttcr",     XSPR(31,467,986),  XSPR_MASK, PPC403,	{ RS } },
42495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtivor0",   XSPR(31,467,400),  XSPR_MASK, BOOKE,     { RS } },
42505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtivor1",   XSPR(31,467,401),  XSPR_MASK, BOOKE,     { RS } },
42515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtivor2",   XSPR(31,467,402),  XSPR_MASK, BOOKE,     { RS } },
42525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtivor3",   XSPR(31,467,403),  XSPR_MASK, BOOKE,     { RS } },
42535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtivor4",   XSPR(31,467,404),  XSPR_MASK, BOOKE,     { RS } },
42545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtivor5",   XSPR(31,467,405),  XSPR_MASK, BOOKE,     { RS } },
42555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtivor6",   XSPR(31,467,406),  XSPR_MASK, BOOKE,     { RS } },
42565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtivor7",   XSPR(31,467,407),  XSPR_MASK, BOOKE,     { RS } },
42575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtivor8",   XSPR(31,467,408),  XSPR_MASK, BOOKE,     { RS } },
42585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtivor9",   XSPR(31,467,409),  XSPR_MASK, BOOKE,     { RS } },
42595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtivor10",  XSPR(31,467,410),  XSPR_MASK, BOOKE,     { RS } },
42605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtivor11",  XSPR(31,467,411),  XSPR_MASK, BOOKE,     { RS } },
42615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtivor12",  XSPR(31,467,412),  XSPR_MASK, BOOKE,     { RS } },
42625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtivor13",  XSPR(31,467,413),  XSPR_MASK, BOOKE,     { RS } },
42635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtivor14",  XSPR(31,467,414),  XSPR_MASK, BOOKE,     { RS } },
42645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtivor15",  XSPR(31,467,415),  XSPR_MASK, BOOKE,     { RS } },
42655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtspefscr",  XSPR(31,467,512),  XSPR_MASK, PPCSPE,   { RS } },
42665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtbbear",   XSPR(31,467,513),  XSPR_MASK, PPCBRLK,   { RS } },
42675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtbbtar",   XSPR(31,467,514),  XSPR_MASK, PPCBRLK,  { RS } },
42685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtivor32",  XSPR(31,467,528),  XSPR_MASK, PPCSPE,	{ RS } },
42695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtivor33",  XSPR(31,467,529),  XSPR_MASK, PPCSPE,	{ RS } },
42705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtivor34",  XSPR(31,467,530),  XSPR_MASK, PPCSPE,	{ RS } },
42715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtivor35",  XSPR(31,467,531),  XSPR_MASK, PPCPMR,	{ RS } },
42725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtibatu",   XSPR(31,467,528),  XSPRBAT_MASK, PPC,	{ SPRBAT, RS } },
42735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtibatl",   XSPR(31,467,529),  XSPRBAT_MASK, PPC,	{ SPRBAT, RS } },
42745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdbatu",   XSPR(31,467,536),  XSPRBAT_MASK, PPC,	{ SPRBAT, RS } },
42755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdbatl",   XSPR(31,467,537),  XSPRBAT_MASK, PPC,	{ SPRBAT, RS } },
42765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtmcsrr0",  XSPR(31,467,570),  XSPR_MASK, PPCRFMCI,  { RS } },
42775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtmcsrr1",  XSPR(31,467,571),  XSPR_MASK, PPCRFMCI,  { RS } },
42785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtmcsr",    XSPR(31,467,572),  XSPR_MASK, PPCRFMCI,  { RS } },
42795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtummcr0",  XSPR(31,467,936),  XSPR_MASK, PPC750,    { RS } },
42805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtupmc1",   XSPR(31,467,937),  XSPR_MASK, PPC750,    { RS } },
42815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtupmc2",   XSPR(31,467,938),  XSPR_MASK, PPC750,    { RS } },
42825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtusia",    XSPR(31,467,939),  XSPR_MASK, PPC750,    { RS } },
42835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtummcr1",  XSPR(31,467,940),  XSPR_MASK, PPC750,    { RS } },
42845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtupmc3",   XSPR(31,467,941),  XSPR_MASK, PPC750,    { RS } },
42855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtupmc4",   XSPR(31,467,942),  XSPR_MASK, PPC750,    { RS } },
42865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtzpr",     XSPR(31,467,944),  XSPR_MASK, PPC403,	{ RS } },
42875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtccr0",    XSPR(31,467,947),  XSPR_MASK, PPC405,	{ RS } },
42885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtmmcr0",   XSPR(31,467,952),  XSPR_MASK, PPC750,    { RS } },
42895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtsgr",     XSPR(31,467,953),  XSPR_MASK, PPC403,	{ RS } },
42905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtpmc1",    XSPR(31,467,953),  XSPR_MASK, PPC750,    { RS } },
42915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdcwr",    XSPR(31,467,954),  XSPR_MASK, PPC403,	{ RS } },
42925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtpmc2",    XSPR(31,467,954),  XSPR_MASK, PPC750,    { RS } },
42935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtsler",    XSPR(31,467,955),  XSPR_MASK, PPC405,	{ RS } },
42945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtsia",     XSPR(31,467,955),  XSPR_MASK, PPC750,    { RS } },
42955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtsu0r",    XSPR(31,467,956),  XSPR_MASK, PPC405,	{ RS } },
42965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtmmcr1",   XSPR(31,467,956),  XSPR_MASK, PPC750,    { RS } },
42975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtpmc3",    XSPR(31,467,957),  XSPR_MASK, PPC750,    { RS } },
42985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtpmc4",    XSPR(31,467,958),  XSPR_MASK, PPC750,    { RS } },
42995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mticdbdr",  XSPR(31,467,979),  XSPR_MASK, PPC403,	{ RS } },
43005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtevpr",    XSPR(31,467,982),  XSPR_MASK, PPC403,	{ RS } },
43015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtcdbcr",   XSPR(31,467,983),  XSPR_MASK, PPC403,	{ RS } },
43025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtpit",     XSPR(31,467,987),  XSPR_MASK, PPC403,	{ RS } },
43035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mttbhi",    XSPR(31,467,988),  XSPR_MASK, PPC403,	{ RS } },
43045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mttblo",    XSPR(31,467,989),  XSPR_MASK, PPC403,	{ RS } },
43055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtsrr2",    XSPR(31,467,990),  XSPR_MASK, PPC403,	{ RS } },
43065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtsrr3",    XSPR(31,467,991),  XSPR_MASK, PPC403,	{ RS } },
43075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtl2cr",    XSPR(31,467,1017), XSPR_MASK, PPC750,    { RS } },
43085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtdccr",    XSPR(31,467,1018), XSPR_MASK, PPC403,	{ RS } },
43095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mticcr",    XSPR(31,467,1019), XSPR_MASK, PPC403,	{ RS } },
43105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtictc",    XSPR(31,467,1019), XSPR_MASK, PPC750,    { RS } },
43115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtpbl1",    XSPR(31,467,1020), XSPR_MASK, PPC403,	{ RS } },
43125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtthrm1",   XSPR(31,467,1020), XSPR_MASK, PPC750,    { RS } },
43135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtpbu1",    XSPR(31,467,1021), XSPR_MASK, PPC403,	{ RS } },
43145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtthrm2",   XSPR(31,467,1021), XSPR_MASK, PPC750,    { RS } },
43155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtpbl2",    XSPR(31,467,1022), XSPR_MASK, PPC403,	{ RS } },
43165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtthrm3",   XSPR(31,467,1022), XSPR_MASK, PPC750,    { RS } },
43175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtpbu2",    XSPR(31,467,1023), XSPR_MASK, PPC403,	{ RS } },
43185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtspr",     X(31,467),	  X_MASK,    COM,	{ SPR, RS } },
43198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
43208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "dcbi",    X(31,470),	XRT_MASK,	PPC,		{ RA, RB } },
43218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
43225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nand",    XRC(31,476,0), X_MASK,	COM,		{ RA, RS, RB } },
43235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nand.",   XRC(31,476,1), X_MASK,	COM,		{ RA, RS, RB } },
43245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
43255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcbie",   X(31,478),	XRT_MASK,	BOOKE64,	{ RA, RB } },
43265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
43275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcread",  X(31,486),	X_MASK,		PPC403|PPC440,	{ RT, RA, RB }},
43285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
43295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtpmr",   X(31,462),	X_MASK,		PPCPMR,		{ PMR, RS }},
43308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
43315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "icbtls",  X(31,486),	X_MASK,		PPCCHLK,	{ CT, RA, RB }},
43328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
43335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nabs",    XO(31,488,0,0), XORB_MASK, M601,		{ RT, RA } },
43345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subfme64",XO(31,488,0,0), XORB_MASK, BOOKE64,	{ RT, RA } },
43355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nabs.",   XO(31,488,0,1), XORB_MASK, M601,		{ RT, RA } },
43365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nabso",   XO(31,488,1,0), XORB_MASK, M601,		{ RT, RA } },
43375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "subfme64o",XO(31,488,1,0), XORB_MASK, BOOKE64,	{ RT, RA } },
43385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "nabso.",  XO(31,488,1,1), XORB_MASK, M601,		{ RT, RA } },
43395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
43405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "divd",    XO(31,489,0,0), XO_MASK,	PPC64,		{ RT, RA, RB } },
43415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "divd.",   XO(31,489,0,1), XO_MASK,	PPC64,		{ RT, RA, RB } },
43425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "divdo",   XO(31,489,1,0), XO_MASK,	PPC64,		{ RT, RA, RB } },
43435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "divdo.",  XO(31,489,1,1), XO_MASK,	PPC64,		{ RT, RA, RB } },
43445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
43455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "addme64", XO(31,490,0,0), XORB_MASK, BOOKE64,	{ RT, RA } },
43465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "addme64o",XO(31,490,1,0), XORB_MASK, BOOKE64,	{ RT, RA } },
43478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
43488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "divw",    XO(31,491,0,0), XO_MASK,	PPC,		{ RT, RA, RB } },
43498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "divw.",   XO(31,491,0,1), XO_MASK,	PPC,		{ RT, RA, RB } },
43508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "divwo",   XO(31,491,1,0), XO_MASK,	PPC,		{ RT, RA, RB } },
43518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "divwo.",  XO(31,491,1,1), XO_MASK,	PPC,		{ RT, RA, RB } },
43528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
43535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "icbtlse", X(31,494),	X_MASK,		PPCCHLK64,	{ CT, RA, RB }},
43545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
43555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "slbia",   X(31,498),	0xffffffff,	PPC64,		{ 0 } },
43568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
43578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "cli",     X(31,502), XRB_MASK,	POWER,		{ RT, RA } },
43588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
43595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stdcxe.", XRC(31,511,1), X_MASK,	BOOKE64,	{ RS, RA, RB } },
43608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
43615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mcrxr",   X(31,512),	XRARB_MASK|(3<<21), COM,	{ BF } },
43628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
43635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bblels",  X(31,518),	X_MASK,		PPCBRLK,	{ 0 }},
43645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mcrxr64", X(31,544),	XRARB_MASK|(3<<21), BOOKE64,	{ BF } },
43658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
43665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "clcs",    X(31,531), XRB_MASK,	M601,		{ RT, RA } },
43678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
43685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ldbrx",   X(31,532),	X_MASK,		CELL,		{ RT, RA0, RB } },
43698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
43705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lswx",    X(31,533),	X_MASK,		PPCCOM,		{ RT, RA0, RB } },
43715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lsx",     X(31,533),	X_MASK,		PWRCOM,		{ RT, RA, RB } },
43728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
43735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lwbrx",   X(31,534),	X_MASK,		PPCCOM,		{ RT, RA0, RB } },
43745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lbrx",    X(31,534),	X_MASK,		PWRCOM,		{ RT, RA, RB } },
43758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
43765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lfsx",    X(31,535),	X_MASK,		COM,		{ FRT, RA0, RB } },
43778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
43785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "srw",     XRC(31,536,0), X_MASK,	PPCCOM,		{ RA, RS, RB } },
43795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sr",      XRC(31,536,0), X_MASK,	PWRCOM,		{ RA, RS, RB } },
43805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "srw.",    XRC(31,536,1), X_MASK,	PPCCOM,		{ RA, RS, RB } },
43815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sr.",     XRC(31,536,1), X_MASK,	PWRCOM,		{ RA, RS, RB } },
43825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
43835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rrib",    XRC(31,537,0), X_MASK,	M601,		{ RA, RS, RB } },
43845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rrib.",   XRC(31,537,1), X_MASK,	M601,		{ RA, RS, RB } },
43855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
43865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "srd",     XRC(31,539,0), X_MASK,	PPC64,		{ RA, RS, RB } },
43875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "srd.",    XRC(31,539,1), X_MASK,	PPC64,		{ RA, RS, RB } },
43885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
43895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "maskir",  XRC(31,541,0), X_MASK,	M601,		{ RA, RS, RB } },
43905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "maskir.", XRC(31,541,1), X_MASK,	M601,		{ RA, RS, RB } },
43915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
43925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lwbrxe",  X(31,542),	X_MASK,		BOOKE64,	{ RT, RA0, RB } },
43935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
43945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lfsxe",   X(31,543),	X_MASK,		BOOKE64,	{ FRT, RA0, RB } },
43955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
43965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "bbelr",   X(31,550),	X_MASK,		PPCBRLK,	{ 0 }},
43978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
43988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "tlbsync", X(31,566),	0xffffffff,	PPC,		{ 0 } },
43998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lfsux",   X(31,567),	X_MASK,		COM,		{ FRT, RAS, RB } },
44015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
44025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lfsuxe",  X(31,575),	X_MASK,		BOOKE64,	{ FRT, RAS, RB } },
44035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
44045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfsr",    X(31,595),	XRB_MASK|(1<<20), COM32,	{ RT, SR } },
44055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
44065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lswi",    X(31,597),	X_MASK,		PPCCOM,		{ RT, RA0, NB } },
44075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lsi",     X(31,597),	X_MASK,		PWRCOM,		{ RT, RA0, NB } },
44085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
44095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lwsync",  XSYNC(31,598,1), 0xffffffff, PPC,		{ 0 } },
44105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ptesync", XSYNC(31,598,2), 0xffffffff, PPC64,	{ 0 } },
44115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "msync",   X(31,598), 0xffffffff,	BOOKE,		{ 0 } },
44125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sync",    X(31,598), XSYNC_MASK,	PPCCOM,		{ LS } },
44135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcs",     X(31,598), 0xffffffff,	PWRCOM,		{ 0 } },
44145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
44155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lfdx",    X(31,599), X_MASK,		COM,		{ FRT, RA0, RB } },
44165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
44175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lfdxe",   X(31,607), X_MASK,		BOOKE64,	{ FRT, RA0, RB } },
44185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
44195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mffgpr",  XRC(31,607,0), XRA_MASK,	POWER6,		{ FRT, RB } },
44205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
44215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfsri",   X(31,627), X_MASK,		PWRCOM,		{ RT, RA, RB } },
44228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dclst",   X(31,630), XRB_MASK,	PWRCOM,		{ RS, RA } },
44248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lfdux",   X(31,631), X_MASK,		COM,		{ FRT, RAS, RB } },
44268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lfduxe",  X(31,639), X_MASK,		BOOKE64,	{ FRT, RAS, RB } },
44288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mfsrin",  X(31,659), XRA_MASK,	PPC32,		{ RT, RB } },
44308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stdbrx",  X(31,660), X_MASK,		CELL,		{ RS, RA0, RB } },
44328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stswx",   X(31,661), X_MASK,		PPCCOM,		{ RS, RA0, RB } },
44345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stsx",    X(31,661), X_MASK,		PWRCOM,		{ RS, RA0, RB } },
44358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stwbrx",  X(31,662), X_MASK,		PPCCOM,		{ RS, RA0, RB } },
44375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stbrx",   X(31,662), X_MASK,		PWRCOM,		{ RS, RA0, RB } },
44388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stfsx",   X(31,663), X_MASK,		COM,		{ FRS, RA0, RB } },
44408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "srq",     XRC(31,664,0), X_MASK,	M601,		{ RA, RS, RB } },
44425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "srq.",    XRC(31,664,1), X_MASK,	M601,		{ RA, RS, RB } },
44438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sre",     XRC(31,665,0), X_MASK,	M601,		{ RA, RS, RB } },
44455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sre.",    XRC(31,665,1), X_MASK,	M601,		{ RA, RS, RB } },
44468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stwbrxe", X(31,670), X_MASK,		BOOKE64,	{ RS, RA0, RB } },
44488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stfsxe",  X(31,671), X_MASK,		BOOKE64,	{ FRS, RA0, RB } },
44508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stfsux",  X(31,695),	X_MASK,		COM,		{ FRS, RAS, RB } },
44528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sriq",    XRC(31,696,0), X_MASK,	M601,		{ RA, RS, SH } },
44545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sriq.",   XRC(31,696,1), X_MASK,	M601,		{ RA, RS, SH } },
44558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stfsuxe", X(31,703),	X_MASK,		BOOKE64,	{ FRS, RAS, RB } },
44578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stswi",   X(31,725),	X_MASK,		PPCCOM,		{ RS, RA0, NB } },
44595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stsi",    X(31,725),	X_MASK,		PWRCOM,		{ RS, RA0, NB } },
44608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stfdx",   X(31,727),	X_MASK,		COM,		{ FRS, RA0, RB } },
44628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "srlq",    XRC(31,728,0), X_MASK,	M601,		{ RA, RS, RB } },
44645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "srlq.",   XRC(31,728,1), X_MASK,	M601,		{ RA, RS, RB } },
44658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sreq",    XRC(31,729,0), X_MASK,	M601,		{ RA, RS, RB } },
44675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sreq.",   XRC(31,729,1), X_MASK,	M601,		{ RA, RS, RB } },
44688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stfdxe",  X(31,735),	X_MASK,		BOOKE64,	{ FRS, RA0, RB } },
44708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mftgpr",  XRC(31,735,0), XRA_MASK,	POWER6,		{ RT, FRB } },
44728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcba",    X(31,758),	XRT_MASK,	PPC405 | BOOKE,	{ RA, RB } },
44748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stfdux",  X(31,759),	X_MASK,		COM,		{ FRS, RAS, RB } },
44768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "srliq",   XRC(31,760,0), X_MASK,	M601,		{ RA, RS, SH } },
44785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "srliq.",  XRC(31,760,1), X_MASK,	M601,		{ RA, RS, SH } },
44798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcbae",   X(31,766),	XRT_MASK,	BOOKE64,	{ RA, RB } },
44818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stfduxe", X(31,767),	X_MASK,		BOOKE64,	{ FRS, RAS, RB } },
44838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
44845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlbivax", X(31,786),	XRT_MASK,	BOOKE,		{ RA, RB } },
44855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlbivaxe",X(31,787),	XRT_MASK,	BOOKE64,	{ RA, RB } },
44865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
44875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lwzcix",  X(31,789),	X_MASK,		POWER6,		{ RT, RA0, RB } },
44885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
44895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lhbrx",   X(31,790),	X_MASK,		COM,		{ RT, RA0, RB } },
44905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
44915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sraw",    XRC(31,792,0), X_MASK,	PPCCOM,		{ RA, RS, RB } },
44925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sra",     XRC(31,792,0), X_MASK,	PWRCOM,		{ RA, RS, RB } },
44935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sraw.",   XRC(31,792,1), X_MASK,	PPCCOM,		{ RA, RS, RB } },
44945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sra.",    XRC(31,792,1), X_MASK,	PWRCOM,		{ RA, RS, RB } },
44955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
44965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "srad",    XRC(31,794,0), X_MASK,	PPC64,		{ RA, RS, RB } },
44975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "srad.",   XRC(31,794,1), X_MASK,	PPC64,		{ RA, RS, RB } },
44985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
44995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lhbrxe",  X(31,798),	X_MASK,		BOOKE64,	{ RT, RA0, RB } },
45005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
45015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ldxe",    X(31,799),	X_MASK,		BOOKE64,	{ RT, RA0, RB } },
45025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lduxe",   X(31,831),	X_MASK,		BOOKE64,	{ RT, RA0, RB } },
45035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
45045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rac",     X(31,818),	X_MASK,		PWRCOM,		{ RT, RA, RB } },
45055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
45065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lhzcix",  X(31,821),	X_MASK,		POWER6,		{ RT, RA0, RB } },
45075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
45085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dss",     XDSS(31,822,0), XDSS_MASK,	PPCVEC,		{ STRM } },
45095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dssall",  XDSS(31,822,1), XDSS_MASK,	PPCVEC,		{ 0 } },
45105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
45115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "srawi",   XRC(31,824,0), X_MASK,	PPCCOM,		{ RA, RS, SH } },
45125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "srai",    XRC(31,824,0), X_MASK,	PWRCOM,		{ RA, RS, SH } },
45135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "srawi.",  XRC(31,824,1), X_MASK,	PPCCOM,		{ RA, RS, SH } },
45145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "srai.",   XRC(31,824,1), X_MASK,	PWRCOM,		{ RA, RS, SH } },
45155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
45165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "slbmfev", X(31,851), XRA_MASK,	PPC64,		{ RT, RB } },
45175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
45185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lbzcix",  X(31,853),	X_MASK,		POWER6,		{ RT, RA0, RB } },
45195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
45205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mbar",    X(31,854),	X_MASK,		BOOKE,		{ MO } },
45218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "eieio",   X(31,854),	0xffffffff,	PPC,		{ 0 } },
45228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
45235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lfiwax",  X(31,855),	X_MASK,		POWER6,		{ FRT, RA0, RB } },
45245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
45255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ldcix",   X(31,885),	X_MASK,		POWER6,		{ RT, RA0, RB } },
45268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
45275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlbsx",   XRC(31,914,0), X_MASK, 	PPC403|BOOKE,	{ RTO, RA, RB } },
45285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlbsx.",  XRC(31,914,1), X_MASK, 	PPC403|BOOKE,	{ RTO, RA, RB } },
45295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlbsxe",  XRC(31,915,0), X_MASK,	BOOKE64,	{ RTO, RA, RB } },
45305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlbsxe.", XRC(31,915,1), X_MASK,	BOOKE64,	{ RTO, RA, RB } },
45318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
45325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "slbmfee", X(31,915), XRA_MASK,	PPC64,		{ RT, RB } },
45338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
45345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stwcix",  X(31,917),	X_MASK,		POWER6,		{ RS, RA0, RB } },
45358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
45365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sthbrx",  X(31,918),	X_MASK,		COM,		{ RS, RA0, RB } },
45375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
45385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sraq",    XRC(31,920,0), X_MASK,	M601,		{ RA, RS, RB } },
45395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sraq.",   XRC(31,920,1), X_MASK,	M601,		{ RA, RS, RB } },
45405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
45415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "srea",    XRC(31,921,0), X_MASK,	M601,		{ RA, RS, RB } },
45425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "srea.",   XRC(31,921,1), X_MASK,	M601,		{ RA, RS, RB } },
45435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
45445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "extsh",   XRC(31,922,0), XRB_MASK,	PPCCOM,		{ RA, RS } },
45455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "exts",    XRC(31,922,0), XRB_MASK,	PWRCOM,		{ RA, RS } },
45465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "extsh.",  XRC(31,922,1), XRB_MASK,	PPCCOM,		{ RA, RS } },
45475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "exts.",   XRC(31,922,1), XRB_MASK,	PWRCOM,		{ RA, RS } },
45485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
45495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sthbrxe", X(31,926),	X_MASK,		BOOKE64,	{ RS, RA0, RB } },
45505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
45515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stdxe",   X(31,927), X_MASK,		BOOKE64,	{ RS, RA0, RB } },
45525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
45535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlbrehi", XTLB(31,946,0), XTLB_MASK,	PPC403,		{ RT, RA } },
45545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlbrelo", XTLB(31,946,1), XTLB_MASK,	PPC403,		{ RT, RA } },
45555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlbre",   X(31,946),	X_MASK,		PPC403|BOOKE,	{ RSO, RAOPT, SHO } },
45565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
45575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sthcix",  X(31,949),	X_MASK,		POWER6,		{ RS, RA0, RB } },
45585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
45595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sraiq",   XRC(31,952,0), X_MASK,	M601,		{ RA, RS, SH } },
45605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sraiq.",  XRC(31,952,1), X_MASK,	M601,		{ RA, RS, SH } },
45618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
45628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "extsb",   XRC(31,954,0), XRB_MASK,	PPC,		{ RA, RS} },
45638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "extsb.",  XRC(31,954,1), XRB_MASK,	PPC,		{ RA, RS} },
45648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
45655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stduxe",  X(31,959),	X_MASK,		BOOKE64,	{ RS, RAS, RB } },
45665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
45675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "iccci",   X(31,966),	XRT_MASK,	PPC403|PPC440,	{ RA, RB } },
45685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
45695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlbwehi", XTLB(31,978,0), XTLB_MASK,	PPC403,		{ RT, RA } },
45705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlbwelo", XTLB(31,978,1), XTLB_MASK,	PPC403,		{ RT, RA } },
45715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlbwe",   X(31,978),	X_MASK,		PPC403|BOOKE,	{ RSO, RAOPT, SHO } },
45725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlbld",   X(31,978),	XRTRA_MASK,	PPC,		{ RB } },
45735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
45745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stbcix",  X(31,981),	X_MASK,		POWER6,		{ RS, RA0, RB } },
45758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
45768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "icbi",    X(31,982),	XRT_MASK,	PPC,		{ RA, RB } },
45778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
45785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stfiwx",  X(31,983),	X_MASK,		PPC,		{ FRS, RA0, RB } },
45795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
45805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "extsw",   XRC(31,986,0), XRB_MASK,	PPC64 | BOOKE64,{ RA, RS } },
45815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "extsw.",  XRC(31,986,1), XRB_MASK,	PPC64,		{ RA, RS } },
45825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
45835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "icread",  X(31,998),	XRT_MASK,	PPC403|PPC440,	{ RA, RB } },
45845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
45855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "icbie",   X(31,990),	XRT_MASK,	BOOKE64,	{ RA, RB } },
45865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stfiwxe", X(31,991),	X_MASK,		BOOKE64,	{ FRS, RA0, RB } },
45878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
45885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "tlbli",   X(31,1010), XRTRA_MASK,	PPC,		{ RB } },
45898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
45905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stdcix",  X(31,1013), X_MASK,	POWER6,		{ RS, RA0, RB } },
45915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
45925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcbzl",   XOPL(31,1014,1), XRT_MASK,POWER4,            { RA, RB } },
45938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "dcbz",    X(31,1014), XRT_MASK,	PPC,		{ RA, RB } },
45948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "dclz",    X(31,1014), XRT_MASK,	PPC,		{ RA, RB } },
45958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
45965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcbze",   X(31,1022), XRT_MASK,	BOOKE64,	{ RA, RB } },
45975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
45985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lvebx",   X(31,   7), X_MASK,	PPCVEC,		{ VD, RA, RB } },
45995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lvehx",   X(31,  39), X_MASK,	PPCVEC,		{ VD, RA, RB } },
46005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lvewx",   X(31,  71), X_MASK,	PPCVEC,		{ VD, RA, RB } },
46015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lvsl",    X(31,   6), X_MASK,	PPCVEC,		{ VD, RA, RB } },
46025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lvsr",    X(31,  38), X_MASK,	PPCVEC,		{ VD, RA, RB } },
46035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lvx",     X(31, 103), X_MASK,	PPCVEC,		{ VD, RA, RB } },
46045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lvxl",    X(31, 359), X_MASK,	PPCVEC,		{ VD, RA, RB } },
46055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stvebx",  X(31, 135), X_MASK,	PPCVEC,		{ VS, RA, RB } },
46065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stvehx",  X(31, 167), X_MASK,	PPCVEC,		{ VS, RA, RB } },
46075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stvewx",  X(31, 199), X_MASK,	PPCVEC,		{ VS, RA, RB } },
46085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stvx",    X(31, 231), X_MASK,	PPCVEC,		{ VS, RA, RB } },
46095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stvxl",   X(31, 487), X_MASK,	PPCVEC,		{ VS, RA, RB } },
46105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
46115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* New load/store left/right index vector instructions that are in the Cell only.  */
46125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lvlx",    X(31, 519), X_MASK,	CELL,		{ VD, RA0, RB } },
46135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lvlxl",   X(31, 775), X_MASK,	CELL,		{ VD, RA0, RB } },
46145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lvrx",    X(31, 551), X_MASK,	CELL,		{ VD, RA0, RB } },
46155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lvrxl",   X(31, 807), X_MASK,	CELL,		{ VD, RA0, RB } },
46165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stvlx",   X(31, 647), X_MASK,	CELL,		{ VS, RA0, RB } },
46175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stvlxl",  X(31, 903), X_MASK,	CELL,		{ VS, RA0, RB } },
46185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stvrx",   X(31, 679), X_MASK,	CELL,		{ VS, RA0, RB } },
46195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stvrxl",  X(31, 935), X_MASK,	CELL,		{ VS, RA0, RB } },
46205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
46215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lwz",     OP(32),	OP_MASK,	PPCCOM,		{ RT, D, RA0 } },
46225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "l",	     OP(32),	OP_MASK,	PWRCOM,		{ RT, D, RA0 } },
46235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
46245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lwzu",    OP(33),	OP_MASK,	PPCCOM,		{ RT, D, RAL } },
46255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lu",      OP(33),	OP_MASK,	PWRCOM,		{ RT, D, RA0 } },
46265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
46275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lbz",     OP(34),	OP_MASK,	COM,		{ RT, D, RA0 } },
46285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
46295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lbzu",    OP(35),	OP_MASK,	COM,		{ RT, D, RAL } },
46308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
46315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stw",     OP(36),	OP_MASK,	PPCCOM,		{ RS, D, RA0 } },
46325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "st",      OP(36),	OP_MASK,	PWRCOM,		{ RS, D, RA0 } },
46338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
46345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stwu",    OP(37),	OP_MASK,	PPCCOM,		{ RS, D, RAS } },
46355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stu",     OP(37),	OP_MASK,	PWRCOM,		{ RS, D, RA0 } },
46368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
46375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stb",     OP(38),	OP_MASK,	COM,		{ RS, D, RA0 } },
46388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
46395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stbu",    OP(39),	OP_MASK,	COM,		{ RS, D, RAS } },
46408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
46415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lhz",     OP(40),	OP_MASK,	COM,		{ RT, D, RA0 } },
46428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
46435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lhzu",    OP(41),	OP_MASK,	COM,		{ RT, D, RAL } },
46448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
46455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lha",     OP(42),	OP_MASK,	COM,		{ RT, D, RA0 } },
46468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
46475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lhau",    OP(43),	OP_MASK,	COM,		{ RT, D, RAL } },
46488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
46495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sth",     OP(44),	OP_MASK,	COM,		{ RS, D, RA0 } },
46508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
46515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sthu",    OP(45),	OP_MASK,	COM,		{ RS, D, RAS } },
46528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
46535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lmw",     OP(46),	OP_MASK,	PPCCOM,		{ RT, D, RAM } },
46545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lm",      OP(46),	OP_MASK,	PWRCOM,		{ RT, D, RA0 } },
46558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
46565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stmw",    OP(47),	OP_MASK,	PPCCOM,		{ RS, D, RA0 } },
46575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stm",     OP(47),	OP_MASK,	PWRCOM,		{ RS, D, RA0 } },
46588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
46595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lfs",     OP(48),	OP_MASK,	COM,		{ FRT, D, RA0 } },
46608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
46615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lfsu",    OP(49),	OP_MASK,	COM,		{ FRT, D, RAS } },
46628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
46635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lfd",     OP(50),	OP_MASK,	COM,		{ FRT, D, RA0 } },
46648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
46655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lfdu",    OP(51),	OP_MASK,	COM,		{ FRT, D, RAS } },
46668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
46675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stfs",    OP(52),	OP_MASK,	COM,		{ FRS, D, RA0 } },
46688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
46695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stfsu",   OP(53),	OP_MASK,	COM,		{ FRS, D, RAS } },
46708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
46715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stfd",    OP(54),	OP_MASK,	COM,		{ FRS, D, RA0 } },
46728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
46735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stfdu",   OP(55),	OP_MASK,	COM,		{ FRS, D, RAS } },
46748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
46755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lq",      OP(56),	OP_MASK,	POWER4,		{ RTQ, DQ, RAQ } },
46768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
46775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lfq",     OP(56),	OP_MASK,	POWER2,		{ FRT, D, RA0 } },
46788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
46795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lfqu",    OP(57),	OP_MASK,	POWER2,		{ FRT, D, RA0 } },
46808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
46815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lfdp",    OP(57),	OP_MASK,	POWER6,		{ FRT, D, RA0 } },
46828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
46835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lbze",    DEO(58,0), DE_MASK,	BOOKE64,	{ RT, DE, RA0 } },
46845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lbzue",   DEO(58,1), DE_MASK,	BOOKE64,	{ RT, DE, RAL } },
46855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lhze",    DEO(58,2), DE_MASK,	BOOKE64,	{ RT, DE, RA0 } },
46865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lhzue",   DEO(58,3), DE_MASK,	BOOKE64,	{ RT, DE, RAL } },
46875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lhae",    DEO(58,4), DE_MASK,	BOOKE64,	{ RT, DE, RA0 } },
46885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lhaue",   DEO(58,5), DE_MASK,	BOOKE64,	{ RT, DE, RAL } },
46895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lwze",    DEO(58,6), DE_MASK,	BOOKE64,	{ RT, DE, RA0 } },
46905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lwzue",   DEO(58,7), DE_MASK,	BOOKE64,	{ RT, DE, RAL } },
46915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stbe",    DEO(58,8), DE_MASK,	BOOKE64,	{ RS, DE, RA0 } },
46925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stbue",   DEO(58,9), DE_MASK,	BOOKE64,	{ RS, DE, RAS } },
46935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sthe",    DEO(58,10), DE_MASK,	BOOKE64,	{ RS, DE, RA0 } },
46945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sthue",   DEO(58,11), DE_MASK,	BOOKE64,	{ RS, DE, RAS } },
46955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stwe",    DEO(58,14), DE_MASK,	BOOKE64,	{ RS, DE, RA0 } },
46965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stwue",   DEO(58,15), DE_MASK,	BOOKE64,	{ RS, DE, RAS } },
46978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
46985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ld",      DSO(58,0),	DS_MASK,	PPC64,		{ RT, DS, RA0 } },
46998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
47005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ldu",     DSO(58,1), DS_MASK,	PPC64,		{ RT, DS, RAL } },
47018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
47025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lwa",     DSO(58,2), DS_MASK,	PPC64,		{ RT, DS, RA0 } },
47035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
47045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dadd",    XRC(59,2,0), X_MASK,	POWER6,		{ FRT, FRA, FRB } },
47055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dadd.",   XRC(59,2,1), X_MASK,	POWER6,		{ FRT, FRA, FRB } },
47065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
47075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dqua",    ZRC(59,3,0), Z2_MASK,	POWER6,		{ FRT, FRA, FRB, RMC } },
47085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dqua.",   ZRC(59,3,1), Z2_MASK,	POWER6,		{ FRT, FRA, FRB, RMC } },
47098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
47108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "fdivs",   A(59,18,0), AFRC_MASK,	PPC,		{ FRT, FRA, FRB } },
47118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "fdivs.",  A(59,18,1), AFRC_MASK,	PPC,		{ FRT, FRA, FRB } },
47128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
47138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "fsubs",   A(59,20,0), AFRC_MASK,	PPC,		{ FRT, FRA, FRB } },
47148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "fsubs.",  A(59,20,1), AFRC_MASK,	PPC,		{ FRT, FRA, FRB } },
47158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
47168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "fadds",   A(59,21,0), AFRC_MASK,	PPC,		{ FRT, FRA, FRB } },
47178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "fadds.",  A(59,21,1), AFRC_MASK,	PPC,		{ FRT, FRA, FRB } },
47188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
47198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "fsqrts",  A(59,22,0), AFRAFRC_MASK,	PPC,		{ FRT, FRB } },
47208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "fsqrts.", A(59,22,1), AFRAFRC_MASK,	PPC,		{ FRT, FRB } },
47218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
47225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fres",    A(59,24,0), AFRALFRC_MASK,	PPC,		{ FRT, FRB, A_L } },
47235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fres.",   A(59,24,1), AFRALFRC_MASK,	PPC,		{ FRT, FRB, A_L } },
47248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
47258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "fmuls",   A(59,25,0), AFRB_MASK,	PPC,		{ FRT, FRA, FRC } },
47268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "fmuls.",  A(59,25,1), AFRB_MASK,	PPC,		{ FRT, FRA, FRC } },
47278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
47285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "frsqrtes", A(59,26,0), AFRALFRC_MASK,POWER5,		{ FRT, FRB, A_L } },
47295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "frsqrtes.",A(59,26,1), AFRALFRC_MASK,POWER5,		{ FRT, FRB, A_L } },
47305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
47318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "fmsubs",  A(59,28,0), A_MASK,	PPC,		{ FRT,FRA,FRC,FRB } },
47328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "fmsubs.", A(59,28,1), A_MASK,	PPC,		{ FRT,FRA,FRC,FRB } },
47338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
47348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "fmadds",  A(59,29,0), A_MASK,	PPC,		{ FRT,FRA,FRC,FRB } },
47358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "fmadds.", A(59,29,1), A_MASK,	PPC,		{ FRT,FRA,FRC,FRB } },
47368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
47378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "fnmsubs", A(59,30,0), A_MASK,	PPC,		{ FRT,FRA,FRC,FRB } },
47388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "fnmsubs.",A(59,30,1), A_MASK,	PPC,		{ FRT,FRA,FRC,FRB } },
47398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
47408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "fnmadds", A(59,31,0), A_MASK,	PPC,		{ FRT,FRA,FRC,FRB } },
47418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "fnmadds.",A(59,31,1), A_MASK,	PPC,		{ FRT,FRA,FRC,FRB } },
47428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
47435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dmul",    XRC(59,34,0), X_MASK,	POWER6,		{ FRT, FRA, FRB } },
47445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dmul.",   XRC(59,34,1), X_MASK,	POWER6,		{ FRT, FRA, FRB } },
47455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
47465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "drrnd",   ZRC(59,35,0), Z2_MASK,	POWER6,		{ FRT, FRA, FRB, RMC } },
47475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "drrnd.",  ZRC(59,35,1), Z2_MASK,	POWER6,		{ FRT, FRA, FRB, RMC } },
47485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
47495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dscli",   ZRC(59,66,0), Z_MASK,	POWER6,		{ FRT, FRA, SH16 } },
47505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dscli.",  ZRC(59,66,1), Z_MASK,	POWER6,		{ FRT, FRA, SH16 } },
47515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
47525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dquai",   ZRC(59,67,0), Z2_MASK,	POWER6,		{ TE,  FRT, FRB, RMC } },
47535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dquai.",  ZRC(59,67,1), Z2_MASK,	POWER6,		{ TE,  FRT, FRB, RMC } },
47545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
47555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dscri",   ZRC(59,98,0), Z_MASK,	POWER6,		{ FRT, FRA, SH16 } },
47565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dscri.",  ZRC(59,98,1), Z_MASK,	POWER6,		{ FRT, FRA, SH16 } },
47575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
47585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "drintx",  ZRC(59,99,0), Z2_MASK,	POWER6,		{ R, FRT, FRB, RMC } },
47595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "drintx.", ZRC(59,99,1), Z2_MASK,	POWER6,		{ R, FRT, FRB, RMC } },
47605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
47615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcmpo",   X(59,130),	   X_MASK,	POWER6,		{ BF,  FRA, FRB } },
47625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
47635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dtstex",  X(59,162),	   X_MASK,	POWER6,		{ BF,  FRA, FRB } },
47645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dtstdc",  Z(59,194),	   Z_MASK,	POWER6,		{ BF,  FRA, DCM } },
47655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dtstdg",  Z(59,226),	   Z_MASK,	POWER6,		{ BF,  FRA, DGM } },
47665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
47675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "drintn",  ZRC(59,227,0), Z2_MASK,	POWER6,		{ R, FRT, FRB, RMC } },
47685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "drintn.", ZRC(59,227,1), Z2_MASK,	POWER6,		{ R, FRT, FRB, RMC } },
47695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
47705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dctdp",   XRC(59,258,0), X_MASK,	POWER6,		{ FRT, FRB } },
47715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dctdp.",  XRC(59,258,1), X_MASK,	POWER6,		{ FRT, FRB } },
47725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
47735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dctfix",  XRC(59,290,0), X_MASK,	POWER6,		{ FRT, FRB } },
47745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dctfix.", XRC(59,290,1), X_MASK,	POWER6,		{ FRT, FRB } },
47755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
47765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ddedpd",  XRC(59,322,0), X_MASK,	POWER6,		{ SP, FRT, FRB } },
47775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ddedpd.", XRC(59,322,1), X_MASK,	POWER6,		{ SP, FRT, FRB } },
47785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
47795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dxex",    XRC(59,354,0), X_MASK,	POWER6,		{ FRT, FRB } },
47805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dxex.",   XRC(59,354,1), X_MASK,	POWER6,		{ FRT, FRB } },
47815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
47825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dsub",    XRC(59,514,0), X_MASK,	POWER6,		{ FRT, FRA, FRB } },
47835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dsub.",   XRC(59,514,1), X_MASK,	POWER6,		{ FRT, FRA, FRB } },
47845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
47855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ddiv",    XRC(59,546,0), X_MASK,	POWER6,		{ FRT, FRA, FRB } },
47865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ddiv.",   XRC(59,546,1), X_MASK,	POWER6,		{ FRT, FRA, FRB } },
47875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
47885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcmpu",   X(59,642),	    X_MASK,	POWER6,		{ BF,  FRA, FRB } },
47895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
47905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dtstsf",  X(59,674),	   X_MASK,	POWER6,		{ BF,  FRA, FRB } },
47915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
47925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "drsp",    XRC(59,770,0), X_MASK,	POWER6,		{ FRT, FRB } },
47935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "drsp.",   XRC(59,770,1), X_MASK,	POWER6,		{ FRT, FRB } },
47945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
47955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcffix",  XRC(59,802,0), X_MASK,	POWER6,		{ FRT, FRB } },
47965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcffix.", XRC(59,802,1), X_MASK,	POWER6,		{ FRT, FRB } },
47975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
47985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "denbcd",  XRC(59,834,0), X_MASK,	POWER6,		{ S, FRT, FRB } },
47995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "denbcd.", XRC(59,834,1), X_MASK,	POWER6,		{ S, FRT, FRB } },
48005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
48015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "diex",    XRC(59,866,0), X_MASK,	POWER6,		{ FRT, FRA, FRB } },
48025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "diex.",   XRC(59,866,1), X_MASK,	POWER6,		{ FRT, FRA, FRB } },
48035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
48048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "stfq",    OP(60),	OP_MASK,	POWER2,		{ FRS, D, RA } },
48058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
48068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "stfqu",   OP(61),	OP_MASK,	POWER2,		{ FRS, D, RA } },
48078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
48085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stfdp",   OP(61),	OP_MASK,	POWER6,		{ FRT, D, RA0 } },
48095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
48105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lde",     DEO(62,0), DE_MASK,	BOOKE64,	{ RT, DES, RA0 } },
48115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ldue",    DEO(62,1), DE_MASK,	BOOKE64,	{ RT, DES, RA0 } },
48125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lfse",    DEO(62,4), DE_MASK,	BOOKE64,	{ FRT, DES, RA0 } },
48135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lfsue",   DEO(62,5), DE_MASK,	BOOKE64,	{ FRT, DES, RAS } },
48145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lfde",    DEO(62,6), DE_MASK,	BOOKE64,	{ FRT, DES, RA0 } },
48155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "lfdue",   DEO(62,7), DE_MASK,	BOOKE64,	{ FRT, DES, RAS } },
48165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stde",    DEO(62,8), DE_MASK,	BOOKE64,	{ RS, DES, RA0 } },
48175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stdue",   DEO(62,9), DE_MASK,	BOOKE64,	{ RS, DES, RAS } },
48185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stfse",   DEO(62,12), DE_MASK,	BOOKE64,	{ FRS, DES, RA0 } },
48195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stfsue",  DEO(62,13), DE_MASK,	BOOKE64,	{ FRS, DES, RAS } },
48205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stfde",   DEO(62,14), DE_MASK,	BOOKE64,	{ FRS, DES, RA0 } },
48215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stfdue",  DEO(62,15), DE_MASK,	BOOKE64,	{ FRS, DES, RAS } },
48225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
48235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "std",     DSO(62,0),	DS_MASK,	PPC64,		{ RS, DS, RA0 } },
48245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
48255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stdu",    DSO(62,1),	DS_MASK,	PPC64,		{ RS, DS, RAS } },
48268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
48275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "stq",     DSO(62,2),	DS_MASK,	POWER4,		{ RSQ, DS, RA0 } },
48288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
48295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fcmpu",   X(63,0),	X_MASK|(3<<21),	COM,		{ BF, FRA, FRB } },
48308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
48315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "daddq",   XRC(63,2,0), X_MASK,	POWER6,		{ FRT, FRA, FRB } },
48325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "daddq.",  XRC(63,2,1), X_MASK,	POWER6,		{ FRT, FRA, FRB } },
48338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
48345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dquaq",   ZRC(63,3,0), Z2_MASK,	POWER6,		{ FRT, FRA, FRB, RMC } },
48355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dquaq.",  ZRC(63,3,1), Z2_MASK,	POWER6,		{ FRT, FRA, FRB, RMC } },
48365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
48375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fcpsgn",  XRC(63,8,0), X_MASK,	POWER6,		{ FRT, FRA, FRB } },
48385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fcpsgn.", XRC(63,8,1), X_MASK,	POWER6,		{ FRT, FRA, FRB } },
48395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
48405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "frsp",    XRC(63,12,0), XRA_MASK,	COM,		{ FRT, FRB } },
48415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "frsp.",   XRC(63,12,1), XRA_MASK,	COM,		{ FRT, FRB } },
48425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
48435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fctiw",   XRC(63,14,0), XRA_MASK,	PPCCOM,		{ FRT, FRB } },
48448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "fcir",    XRC(63,14,0), XRA_MASK,	POWER2,		{ FRT, FRB } },
48455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fctiw.",  XRC(63,14,1), XRA_MASK,	PPCCOM,		{ FRT, FRB } },
48468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "fcir.",   XRC(63,14,1), XRA_MASK,	POWER2,		{ FRT, FRB } },
48478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
48485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fctiwz",  XRC(63,15,0), XRA_MASK,	PPCCOM,		{ FRT, FRB } },
48498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "fcirz",   XRC(63,15,0), XRA_MASK,	POWER2,		{ FRT, FRB } },
48505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fctiwz.", XRC(63,15,1), XRA_MASK,	PPCCOM,		{ FRT, FRB } },
48518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "fcirz.",  XRC(63,15,1), XRA_MASK,	POWER2,		{ FRT, FRB } },
48528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
48535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fdiv",    A(63,18,0), AFRC_MASK,	PPCCOM,		{ FRT, FRA, FRB } },
48545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fd",      A(63,18,0), AFRC_MASK,	PWRCOM,		{ FRT, FRA, FRB } },
48555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fdiv.",   A(63,18,1), AFRC_MASK,	PPCCOM,		{ FRT, FRA, FRB } },
48565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fd.",     A(63,18,1), AFRC_MASK,	PWRCOM,		{ FRT, FRA, FRB } },
48578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
48585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fsub",    A(63,20,0), AFRC_MASK,	PPCCOM,		{ FRT, FRA, FRB } },
48595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fs",      A(63,20,0), AFRC_MASK,	PWRCOM,		{ FRT, FRA, FRB } },
48605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fsub.",   A(63,20,1), AFRC_MASK,	PPCCOM,		{ FRT, FRA, FRB } },
48615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fs.",     A(63,20,1), AFRC_MASK,	PWRCOM,		{ FRT, FRA, FRB } },
48628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
48635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fadd",    A(63,21,0), AFRC_MASK,	PPCCOM,		{ FRT, FRA, FRB } },
48645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fa",      A(63,21,0), AFRC_MASK,	PWRCOM,		{ FRT, FRA, FRB } },
48655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fadd.",   A(63,21,1), AFRC_MASK,	PPCCOM,		{ FRT, FRA, FRB } },
48665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fa.",     A(63,21,1), AFRC_MASK,	PWRCOM,		{ FRT, FRA, FRB } },
48678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
48685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fsqrt",   A(63,22,0), AFRAFRC_MASK,	PPCPWR2,	{ FRT, FRB } },
48695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fsqrt.",  A(63,22,1), AFRAFRC_MASK,	PPCPWR2,	{ FRT, FRB } },
48708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
48718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "fsel",    A(63,23,0), A_MASK,	PPC,		{ FRT,FRA,FRC,FRB } },
48728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ "fsel.",   A(63,23,1), A_MASK,	PPC,		{ FRT,FRA,FRC,FRB } },
48738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
48745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fre",     A(63,24,0), AFRALFRC_MASK,	POWER5,		{ FRT, FRB, A_L } },
48755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fre.",    A(63,24,1), AFRALFRC_MASK,	POWER5,		{ FRT, FRB, A_L } },
48765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
48775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fmul",    A(63,25,0), AFRB_MASK,	PPCCOM,		{ FRT, FRA, FRC } },
48785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fm",      A(63,25,0), AFRB_MASK,	PWRCOM,		{ FRT, FRA, FRC } },
48795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fmul.",   A(63,25,1), AFRB_MASK,	PPCCOM,		{ FRT, FRA, FRC } },
48805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fm.",     A(63,25,1), AFRB_MASK,	PWRCOM,		{ FRT, FRA, FRC } },
48815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
48825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "frsqrte", A(63,26,0), AFRALFRC_MASK,	PPC,		{ FRT, FRB, A_L } },
48835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "frsqrte.",A(63,26,1), AFRALFRC_MASK,	PPC,		{ FRT, FRB, A_L } },
48845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
48855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fmsub",   A(63,28,0), A_MASK,	PPCCOM,		{ FRT,FRA,FRC,FRB } },
48865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fms",     A(63,28,0), A_MASK,	PWRCOM,		{ FRT,FRA,FRC,FRB } },
48875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fmsub.",  A(63,28,1), A_MASK,	PPCCOM,		{ FRT,FRA,FRC,FRB } },
48885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fms.",    A(63,28,1), A_MASK,	PWRCOM,		{ FRT,FRA,FRC,FRB } },
48895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
48905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fmadd",   A(63,29,0), A_MASK,	PPCCOM,		{ FRT,FRA,FRC,FRB } },
48915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fma",     A(63,29,0), A_MASK,	PWRCOM,		{ FRT,FRA,FRC,FRB } },
48925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fmadd.",  A(63,29,1), A_MASK,	PPCCOM,		{ FRT,FRA,FRC,FRB } },
48935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fma.",    A(63,29,1), A_MASK,	PWRCOM,		{ FRT,FRA,FRC,FRB } },
48945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
48955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fnmsub",  A(63,30,0), A_MASK,	PPCCOM,		{ FRT,FRA,FRC,FRB } },
48965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fnms",    A(63,30,0), A_MASK,	PWRCOM,		{ FRT,FRA,FRC,FRB } },
48975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fnmsub.", A(63,30,1), A_MASK,	PPCCOM,		{ FRT,FRA,FRC,FRB } },
48985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fnms.",   A(63,30,1), A_MASK,	PWRCOM,		{ FRT,FRA,FRC,FRB } },
48995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
49005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fnmadd",  A(63,31,0), A_MASK,	PPCCOM,		{ FRT,FRA,FRC,FRB } },
49015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fnma",    A(63,31,0), A_MASK,	PWRCOM,		{ FRT,FRA,FRC,FRB } },
49025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fnmadd.", A(63,31,1), A_MASK,	PPCCOM,		{ FRT,FRA,FRC,FRB } },
49035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fnma.",   A(63,31,1), A_MASK,	PWRCOM,		{ FRT,FRA,FRC,FRB } },
49045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
49055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fcmpo",   X(63,32),	X_MASK|(3<<21),	COM,		{ BF, FRA, FRB } },
49065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
49075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dmulq",   XRC(63,34,0), X_MASK,	POWER6,		{ FRT, FRA, FRB } },
49085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dmulq.",  XRC(63,34,1), X_MASK,	POWER6,		{ FRT, FRA, FRB } },
49095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
49105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "drrndq",  ZRC(63,35,0), Z2_MASK,	POWER6,		{ FRT, FRA, FRB, RMC } },
49115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "drrndq.", ZRC(63,35,1), Z2_MASK,	POWER6,		{ FRT, FRA, FRB, RMC } },
49125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
49135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtfsb1",  XRC(63,38,0), XRARB_MASK,	COM,		{ BT } },
49145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtfsb1.", XRC(63,38,1), XRARB_MASK,	COM,		{ BT } },
49155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
49165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fneg",    XRC(63,40,0), XRA_MASK,	COM,		{ FRT, FRB } },
49175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fneg.",   XRC(63,40,1), XRA_MASK,	COM,		{ FRT, FRB } },
49185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
49195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mcrfs",   X(63,64),	XRB_MASK|(3<<21)|(3<<16), COM,	{ BF, BFA } },
49205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
49215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dscliq",  ZRC(63,66,0), Z_MASK,	POWER6,		{ FRT, FRA, SH16 } },
49225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dscliq.", ZRC(63,66,1), Z_MASK,	POWER6,		{ FRT, FRA, SH16 } },
49235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
49245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dquaiq",  ZRC(63,67,0), Z2_MASK,	POWER6,		{ TE,  FRT, FRB, RMC } },
49255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dquaiq.", ZRC(63,67,1), Z2_MASK,	POWER6,		{ FRT, FRA, FRB, RMC } },
49265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
49275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtfsb0",  XRC(63,70,0), XRARB_MASK,	COM,		{ BT } },
49285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtfsb0.", XRC(63,70,1), XRARB_MASK,	COM,		{ BT } },
49295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
49305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fmr",     XRC(63,72,0), XRA_MASK,	COM,		{ FRT, FRB } },
49315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fmr.",    XRC(63,72,1), XRA_MASK,	COM,		{ FRT, FRB } },
49325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
49335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dscriq",  ZRC(63,98,0), Z_MASK,	POWER6,		{ FRT, FRA, SH16 } },
49345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dscriq.", ZRC(63,98,1), Z_MASK,	POWER6,		{ FRT, FRA, SH16 } },
49355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
49365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "drintxq", ZRC(63,99,0), Z2_MASK,	POWER6,		{ R, FRT, FRB, RMC } },
49375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "drintxq.",ZRC(63,99,1), Z2_MASK,	POWER6,		{ R, FRT, FRB, RMC } },
49388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
49395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcmpoq",  X(63,130),	   X_MASK,	POWER6,		{ BF,  FRA, FRB } },
49408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
49415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtfsfi",  XRC(63,134,0), XWRA_MASK|(3<<21)|(1<<11), COM, { BFF, U, W } },
49425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtfsfi.", XRC(63,134,1), XWRA_MASK|(3<<21)|(1<<11), COM, { BFF, U, W } },
49438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
49445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fnabs",   XRC(63,136,0), XRA_MASK,	COM,		{ FRT, FRB } },
49455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fnabs.",  XRC(63,136,1), XRA_MASK,	COM,		{ FRT, FRB } },
49468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
49475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dtstexq", X(63,162),	    X_MASK,	POWER6,		{ BF,  FRA, FRB } },
49485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dtstdcq", Z(63,194),	    Z_MASK,	POWER6,		{ BF,  FRA, DCM } },
49495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dtstdgq", Z(63,226),	    Z_MASK,	POWER6,		{ BF,  FRA, DGM } },
49508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
49515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "drintnq", ZRC(63,227,0), Z2_MASK,	POWER6,		{ R, FRT, FRB, RMC } },
49525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "drintnq.",ZRC(63,227,1), Z2_MASK,	POWER6,		{ R, FRT, FRB, RMC } },
49538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
49545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dctqpq",  XRC(63,258,0), X_MASK,	POWER6,		{ FRT, FRB } },
49555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dctqpq.", XRC(63,258,1), X_MASK,	POWER6,		{ FRT, FRB } },
49568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
49575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fabs",    XRC(63,264,0), XRA_MASK,	COM,		{ FRT, FRB } },
49585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fabs.",   XRC(63,264,1), XRA_MASK,	COM,		{ FRT, FRB } },
49598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
49605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dctfixq", XRC(63,290,0), X_MASK,	POWER6,		{ FRT, FRB } },
49615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dctfixq.",XRC(63,290,1), X_MASK,	POWER6,		{ FRT, FRB } },
49628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
49635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ddedpdq", XRC(63,322,0), X_MASK,	POWER6,		{ SP, FRT, FRB } },
49645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ddedpdq.",XRC(63,322,1), X_MASK,	POWER6,		{ SP, FRT, FRB } },
49658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
49665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dxexq",   XRC(63,354,0), X_MASK,	POWER6,		{ FRT, FRB } },
49675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dxexq.",  XRC(63,354,1), X_MASK,	POWER6,		{ FRT, FRB } },
49688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
49695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "frin",    XRC(63,392,0), XRA_MASK,	POWER5,		{ FRT, FRB } },
49705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "frin.",   XRC(63,392,1), XRA_MASK,	POWER5,		{ FRT, FRB } },
49715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "friz",    XRC(63,424,0), XRA_MASK,	POWER5,		{ FRT, FRB } },
49725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "friz.",   XRC(63,424,1), XRA_MASK,	POWER5,		{ FRT, FRB } },
49735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "frip",    XRC(63,456,0), XRA_MASK,	POWER5,		{ FRT, FRB } },
49745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "frip.",   XRC(63,456,1), XRA_MASK,	POWER5,		{ FRT, FRB } },
49755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "frim",    XRC(63,488,0), XRA_MASK,	POWER5,		{ FRT, FRB } },
49765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "frim.",   XRC(63,488,1), XRA_MASK,	POWER5,		{ FRT, FRB } },
49778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
49785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dsubq",   XRC(63,514,0), X_MASK,	POWER6,		{ FRT, FRA, FRB } },
49795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dsubq.",  XRC(63,514,1), X_MASK,	POWER6,		{ FRT, FRA, FRB } },
49808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
49815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ddivq",   XRC(63,546,0), X_MASK,	POWER6,		{ FRT, FRA, FRB } },
49825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "ddivq.",  XRC(63,546,1), X_MASK,	POWER6,		{ FRT, FRA, FRB } },
49838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
49845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mffs",    XRC(63,583,0), XRARB_MASK,	COM,		{ FRT } },
49855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mffs.",   XRC(63,583,1), XRARB_MASK,	COM,		{ FRT } },
49868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
49875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcmpuq",  X(63,642),	    X_MASK,	POWER6,		{ BF,  FRA, FRB } },
49888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
49895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dtstsfq", X(63,674),	    X_MASK,	POWER6,		{ BF,  FRA, FRB } },
49908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
49915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtfsf",   XFL(63,711,0), XFL_MASK,	COM,		{ FLM, FRB, XFL_L, W } },
49925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "mtfsf.",  XFL(63,711,1), XFL_MASK,	COM,		{ FLM, FRB, XFL_L, W } },
49938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
49945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "drdpq",   XRC(63,770,0), X_MASK,	POWER6,		{ FRT, FRB } },
49955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "drdpq.",  XRC(63,770,1), X_MASK,	POWER6,		{ FRT, FRB } },
49968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
49975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcffixq", XRC(63,802,0), X_MASK,	POWER6,		{ FRT, FRB } },
49985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "dcffixq.",XRC(63,802,1), X_MASK,	POWER6,		{ FRT, FRB } },
49995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
50005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fctid",   XRC(63,814,0), XRA_MASK,	PPC64,		{ FRT, FRB } },
50015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fctid.",  XRC(63,814,1), XRA_MASK,	PPC64,		{ FRT, FRB } },
50025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
50035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fctidz",  XRC(63,815,0), XRA_MASK,	PPC64,		{ FRT, FRB } },
50045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fctidz.", XRC(63,815,1), XRA_MASK,	PPC64,		{ FRT, FRB } },
50055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
50065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "denbcdq", XRC(63,834,0), X_MASK,	POWER6,		{ S, FRT, FRB } },
50075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "denbcdq.",XRC(63,834,1), X_MASK,	POWER6,		{ S, FRT, FRB } },
50085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
50095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fcfid",   XRC(63,846,0), XRA_MASK,	PPC64,		{ FRT, FRB } },
50105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "fcfid.",  XRC(63,846,1), XRA_MASK,	PPC64,		{ FRT, FRB } },
50115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
50125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "diexq",   XRC(63,866,0), X_MASK,	POWER6,		{ FRT, FRA, FRB } },
50135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "diexq.",  XRC(63,866,1), X_MASK,	POWER6,		{ FRT, FRA, FRB } },
50148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
50158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project};
50168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
50178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectconst int powerpc_num_opcodes =
50188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  sizeof (powerpc_opcodes) / sizeof (powerpc_opcodes[0]);
50198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
50208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The macro table.  This is only used by the assembler.  */
50218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
50225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* The expressions of the form (-x ! 31) & (x | 31) have the value 0
50235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   when x=0; 32-x when x is between 1 and 31; are negative if x is
50245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   negative; and are 32 or more otherwise.  This is what you want
50255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   when, for instance, you are emulating a right shift by a
50265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   rotate-left-and-mask, because the underlying instructions support
50275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   shifts of size 0 but not shifts of size 32.  By comparison, when
50285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   extracting x bits from some word you want to use just 32-x, because
50295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   the underlying instructions don't support extracting 0 bits but do
50305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   support extracting the whole word (32 bits in this case).  */
50318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
50325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerconst struct powerpc_macro powerpc_macros[] = {
50335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "extldi",  4,   PPC64,	"rldicr %0,%1,%3,(%2)-1" },
50345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "extldi.", 4,   PPC64,	"rldicr. %0,%1,%3,(%2)-1" },
50355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "extrdi",  4,   PPC64,	"rldicl %0,%1,(%2)+(%3),64-(%2)" },
50365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "extrdi.", 4,   PPC64,	"rldicl. %0,%1,(%2)+(%3),64-(%2)" },
50375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "insrdi",  4,   PPC64,	"rldimi %0,%1,64-((%2)+(%3)),%3" },
50385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "insrdi.", 4,   PPC64,	"rldimi. %0,%1,64-((%2)+(%3)),%3" },
50395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rotrdi",  3,   PPC64,	"rldicl %0,%1,(-(%2)!63)&((%2)|63),0" },
50405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rotrdi.", 3,   PPC64,	"rldicl. %0,%1,(-(%2)!63)&((%2)|63),0" },
50415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sldi",    3,   PPC64,	"rldicr %0,%1,%2,63-(%2)" },
50425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sldi.",   3,   PPC64,	"rldicr. %0,%1,%2,63-(%2)" },
50435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "srdi",    3,   PPC64,	"rldicl %0,%1,(-(%2)!63)&((%2)|63),%2" },
50445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "srdi.",   3,   PPC64,	"rldicl. %0,%1,(-(%2)!63)&((%2)|63),%2" },
50455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "clrrdi",  3,   PPC64,	"rldicr %0,%1,0,63-(%2)" },
50465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "clrrdi.", 3,   PPC64,	"rldicr. %0,%1,0,63-(%2)" },
50475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "clrlsldi",4,   PPC64,	"rldic %0,%1,%3,(%2)-(%3)" },
50485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "clrlsldi.",4,  PPC64,	"rldic. %0,%1,%3,(%2)-(%3)" },
50495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
50505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "extlwi",  4,   PPCCOM,	"rlwinm %0,%1,%3,0,(%2)-1" },
50515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "extlwi.", 4,   PPCCOM,	"rlwinm. %0,%1,%3,0,(%2)-1" },
50525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "extrwi",  4,   PPCCOM,	"rlwinm %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31" },
50535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "extrwi.", 4,   PPCCOM,	"rlwinm. %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31" },
50545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "inslwi",  4,   PPCCOM,	"rlwimi %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1" },
50555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "inslwi.", 4,   PPCCOM,	"rlwimi. %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"},
50565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "insrwi",  4,   PPCCOM,	"rlwimi %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1" },
50575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "insrwi.", 4,   PPCCOM,	"rlwimi. %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"},
50585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rotrwi",  3,   PPCCOM,	"rlwinm %0,%1,(-(%2)!31)&((%2)|31),0,31" },
50595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "rotrwi.", 3,   PPCCOM,	"rlwinm. %0,%1,(-(%2)!31)&((%2)|31),0,31" },
50605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "slwi",    3,   PPCCOM,	"rlwinm %0,%1,%2,0,31-(%2)" },
50615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sli",     3,   PWRCOM,	"rlinm %0,%1,%2,0,31-(%2)" },
50625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "slwi.",   3,   PPCCOM,	"rlwinm. %0,%1,%2,0,31-(%2)" },
50635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sli.",    3,   PWRCOM,	"rlinm. %0,%1,%2,0,31-(%2)" },
50645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "srwi",    3,   PPCCOM,	"rlwinm %0,%1,(-(%2)!31)&((%2)|31),%2,31" },
50655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sri",     3,   PWRCOM,	"rlinm %0,%1,(-(%2)!31)&((%2)|31),%2,31" },
50665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "srwi.",   3,   PPCCOM,	"rlwinm. %0,%1,(-(%2)!31)&((%2)|31),%2,31" },
50675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "sri.",    3,   PWRCOM,	"rlinm. %0,%1,(-(%2)!31)&((%2)|31),%2,31" },
50685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "clrrwi",  3,   PPCCOM,	"rlwinm %0,%1,0,0,31-(%2)" },
50695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "clrrwi.", 3,   PPCCOM,	"rlwinm. %0,%1,0,0,31-(%2)" },
50705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "clrlslwi",4,   PPCCOM,	"rlwinm %0,%1,%3,(%2)-(%3),31-(%3)" },
50715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ "clrlslwi.",4,  PPCCOM,	"rlwinm. %0,%1,%3,(%2)-(%3),31-(%3)" },
50728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project};
50738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
50748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectconst int powerpc_num_macros =
50758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  sizeof (powerpc_macros) / sizeof (powerpc_macros[0]);
50768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
50775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
50785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* This file provides several disassembler functions, all of which use
50795aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner   the disassembler interface defined in dis-asm.h.  Several functions
50805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   are provided because this file handles disassembly for the PowerPC
50815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   in both big and little endian mode and also for the POWER (RS/6000)
50825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   chip.  */
50835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
50845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic int print_insn_powerpc (bfd_vma, struct disassemble_info *, int, int);
50855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
50865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Determine which set of machines to disassemble for.  PPC403/601 or
50875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   BookE.  For convenience, also disassemble instructions supported
50885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner   by the AltiVec vector unit.  */
50895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
50908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic int
50915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerpowerpc_dialect (struct disassemble_info *info)
50925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
50935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  int dialect = PPC_OPCODE_PPC;
50945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
50955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if (BFD_DEFAULT_TARGET_SIZE == 64)
50965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    dialect |= PPC_OPCODE_64;
50975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
50985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if (info->disassembler_options
50995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      && strstr (info->disassembler_options, "booke") != NULL)
51005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    dialect |= PPC_OPCODE_BOOKE | PPC_OPCODE_BOOKE64;
51015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  else if ((info->mach == bfd_mach_ppc_e500)
51025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	   || (info->disassembler_options
51035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	       && strstr (info->disassembler_options, "e500") != NULL))
51045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    dialect |= (PPC_OPCODE_BOOKE
51055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner		| PPC_OPCODE_SPE | PPC_OPCODE_ISEL
51065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner		| PPC_OPCODE_EFS | PPC_OPCODE_BRLOCK
51075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner		| PPC_OPCODE_PMR | PPC_OPCODE_CACHELCK
51085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner		| PPC_OPCODE_RFMCI);
51095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  else if (info->disassembler_options
51105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	   && strstr (info->disassembler_options, "efs") != NULL)
51115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    dialect |= PPC_OPCODE_EFS;
51125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  else if (info->disassembler_options
51135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	   && strstr (info->disassembler_options, "e300") != NULL)
51145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    dialect |= PPC_OPCODE_E300 | PPC_OPCODE_CLASSIC | PPC_OPCODE_COMMON;
51155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  else if (info->disassembler_options
51165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	   && strstr (info->disassembler_options, "440") != NULL)
51175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    dialect |= PPC_OPCODE_BOOKE | PPC_OPCODE_32
51185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      | PPC_OPCODE_440 | PPC_OPCODE_ISEL | PPC_OPCODE_RFMCI;
51195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  else
51205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    dialect |= (PPC_OPCODE_403 | PPC_OPCODE_601 | PPC_OPCODE_CLASSIC
51215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner		| PPC_OPCODE_COMMON | PPC_OPCODE_ALTIVEC);
51225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
51235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if (info->disassembler_options
51245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      && strstr (info->disassembler_options, "power4") != NULL)
51255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    dialect |= PPC_OPCODE_POWER4;
51265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
51275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if (info->disassembler_options
51285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      && strstr (info->disassembler_options, "power5") != NULL)
51295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    dialect |= PPC_OPCODE_POWER4 | PPC_OPCODE_POWER5;
51305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
51315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if (info->disassembler_options
51325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      && strstr (info->disassembler_options, "cell") != NULL)
51335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    dialect |= PPC_OPCODE_POWER4 | PPC_OPCODE_CELL | PPC_OPCODE_ALTIVEC;
51345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
51355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if (info->disassembler_options
51365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      && strstr (info->disassembler_options, "power6") != NULL)
51375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    dialect |= PPC_OPCODE_POWER4 | PPC_OPCODE_POWER5 | PPC_OPCODE_POWER6 | PPC_OPCODE_ALTIVEC;
51385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
51395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if (info->disassembler_options
51405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      && strstr (info->disassembler_options, "any") != NULL)
51415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    dialect |= PPC_OPCODE_ANY;
51425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
51435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if (info->disassembler_options)
51445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    {
51455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      if (strstr (info->disassembler_options, "32") != NULL)
51465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	dialect &= ~PPC_OPCODE_64;
51475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      else if (strstr (info->disassembler_options, "64") != NULL)
51485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	dialect |= PPC_OPCODE_64;
51495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    }
51505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
51515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  info->private_data = (char *) 0 + dialect;
51525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  return dialect;
51535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
51545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
51555aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner/* QEMU default */
51565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint
51575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerprint_insn_ppc (bfd_vma memaddr, struct disassemble_info *info)
51585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
51595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  int dialect = (char *) info->private_data - (char *) 0;
51605aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner  return print_insn_powerpc (memaddr, info, info->endian == BFD_ENDIAN_BIG,
51615aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner                             dialect);
51625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
51635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
51645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Print a big endian PowerPC instruction.  */
51658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
51665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint
51675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerprint_insn_big_powerpc (bfd_vma memaddr, struct disassemble_info *info)
51685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
51695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  int dialect = (char *) info->private_data - (char *) 0;
51705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  return print_insn_powerpc (memaddr, info, 1, dialect);
51715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
51725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
51735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Print a little endian PowerPC instruction.  */
51745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
51755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint
51765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerprint_insn_little_powerpc (bfd_vma memaddr, struct disassemble_info *info)
51775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
51785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  int dialect = (char *) info->private_data - (char *) 0;
51795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  return print_insn_powerpc (memaddr, info, 0, dialect);
51805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
51815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
51825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Print a POWER (RS/6000) instruction.  */
51835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
51845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint
51855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerprint_insn_rs6000 (bfd_vma memaddr, struct disassemble_info *info)
51865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
51875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  return print_insn_powerpc (memaddr, info, 1, PPC_OPCODE_POWER);
51885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
51895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
51905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Extract the operand value from the PowerPC or POWER instruction.  */
51915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
51925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic long
51935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turneroperand_value_powerpc (const struct powerpc_operand *operand,
51945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner		       unsigned long insn, int dialect)
51955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
51965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  long value;
51975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  int invalid;
51985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  /* Extract the value from the instruction.  */
51995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if (operand->extract)
52005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    value = (*operand->extract) (insn, dialect, &invalid);
52015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  else
52025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    {
52035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      value = (insn >> operand->shift) & operand->bitm;
52045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      if ((operand->flags & PPC_OPERAND_SIGNED) != 0)
52055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	{
52065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  /* BITM is always some number of zeros followed by some
52075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     number of ones, followed by some numer of zeros.  */
52085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  unsigned long top = operand->bitm;
52095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  /* top & -top gives the rightmost 1 bit, so this
52105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     fills in any trailing zeros.  */
52115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  top |= (top & -top) - 1;
52125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  top &= ~(top >> 1);
52135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  value = (value ^ top) - top;
52145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	}
52155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    }
52165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
52175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  return value;
52185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
52198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
52205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* Determine whether the optional operand(s) should be printed.  */
52215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
52225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstatic int
52235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerskip_optional_operands (const unsigned char *opindex,
52245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner			unsigned long insn, int dialect)
52258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
52265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  const struct powerpc_operand *operand;
52275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
52285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  for (; *opindex != 0; opindex++)
52295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    {
52305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      operand = &powerpc_operands[*opindex];
52315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      if ((operand->flags & PPC_OPERAND_NEXT) != 0
52325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  || ((operand->flags & PPC_OPERAND_OPTIONAL) != 0
52335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	      && operand_value_powerpc (operand, insn, dialect) != 0))
52345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	return 0;
52358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    }
52365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
52375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  return 1;
52388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
52398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
52408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Print a PowerPC or POWER instruction.  */
52418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
52428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic int
52435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerprint_insn_powerpc (bfd_vma memaddr,
52445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner		    struct disassemble_info *info,
52455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner		    int bigendian,
52468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project		    int dialect)
52478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
52485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  bfd_byte buffer[4];
52495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  int status;
52505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  unsigned long insn;
52518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  const struct powerpc_opcode *opcode;
52528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  const struct powerpc_opcode *opcode_end;
52535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  unsigned long op;
52545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
52555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if (dialect == 0)
52565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    dialect = powerpc_dialect (info);
52575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
52585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  status = (*info->read_memory_func) (memaddr, buffer, 4, info);
52595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if (status != 0)
52605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    {
52615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      (*info->memory_error_func) (status, memaddr, info);
52625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      return -1;
52635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    }
52645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
52655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if (bigendian)
52665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    insn = bfd_getb32 (buffer);
52675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  else
52685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    insn = bfd_getl32 (buffer);
52698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
52708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* Get the major opcode of the instruction.  */
52718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  op = PPC_OP (insn);
52728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
52738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* Find the first match in the opcode table.  We could speed this up
52748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project     a bit by doing a binary search on the major opcode.  */
52758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  opcode_end = powerpc_opcodes + powerpc_num_opcodes;
52765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner again:
52778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  for (opcode = powerpc_opcodes; opcode < opcode_end; opcode++)
52788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    {
52795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      unsigned long table_op;
52808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      const unsigned char *opindex;
52818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      const struct powerpc_operand *operand;
52828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      int invalid;
52838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      int need_comma;
52848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      int need_paren;
52855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      int skip_optional;
52868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
52878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      table_op = PPC_OP (opcode->opcode);
52888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (op < table_op)
52895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	break;
52908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (op > table_op)
52915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	continue;
52928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
52938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if ((insn & opcode->mask) != opcode->opcode
52948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project	  || (opcode->flags & dialect) == 0)
52955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	continue;
52968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
52978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      /* Make two passes over the operands.  First see if any of them
52985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	 have extraction functions, and, if they do, make sure the
52995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	 instruction is valid.  */
53008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      invalid = 0;
53018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      for (opindex = opcode->operands; *opindex != 0; opindex++)
53025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	{
53035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  operand = powerpc_operands + *opindex;
53045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  if (operand->extract)
53055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    (*operand->extract) (insn, dialect, &invalid);
53065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	}
53078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (invalid)
53085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	continue;
53098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
53108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      /* The instruction is valid.  */
53118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      if (opcode->operands[0] != 0)
53125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	(*info->fprintf_func) (info->stream, "%-7s ", opcode->name);
53135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      else
53145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	(*info->fprintf_func) (info->stream, "%s", opcode->name);
53158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
53168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      /* Now extract and print the operands.  */
53178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      need_comma = 0;
53188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      need_paren = 0;
53195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      skip_optional = -1;
53208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      for (opindex = opcode->operands; *opindex != 0; opindex++)
53215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	{
53225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  long value;
53235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
53245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  operand = powerpc_operands + *opindex;
53255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
53265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  /* Operands that are marked FAKE are simply ignored.  We
53275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     already made sure that the extract function considered
53285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     the instruction to be valid.  */
53295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  if ((operand->flags & PPC_OPERAND_FAKE) != 0)
53305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    continue;
53315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
53325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  /* If all of the optional operands have the value zero,
53335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	     then don't print any of them.  */
53345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  if ((operand->flags & PPC_OPERAND_OPTIONAL) != 0)
53355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    {
53365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	      if (skip_optional < 0)
53375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner		skip_optional = skip_optional_operands (opindex, insn,
53385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner							dialect);
53395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	      if (skip_optional)
53405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner		continue;
53415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    }
53425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
53435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  value = operand_value_powerpc (operand, insn, dialect);
53445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
53455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  if (need_comma)
53465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    {
53475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	      (*info->fprintf_func) (info->stream, ",");
53485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	      need_comma = 0;
53495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    }
53505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
53515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  /* Print the operand as directed by the flags.  */
53525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  if ((operand->flags & PPC_OPERAND_GPR) != 0
53535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	      || ((operand->flags & PPC_OPERAND_GPR_0) != 0 && value != 0))
53545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    (*info->fprintf_func) (info->stream, "r%ld", value);
53555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  else if ((operand->flags & PPC_OPERAND_FPR) != 0)
53565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    (*info->fprintf_func) (info->stream, "f%ld", value);
53575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  else if ((operand->flags & PPC_OPERAND_VR) != 0)
53585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    (*info->fprintf_func) (info->stream, "v%ld", value);
53595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  else if ((operand->flags & PPC_OPERAND_RELATIVE) != 0)
53605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    (*info->print_address_func) (memaddr + value, info);
53615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  else if ((operand->flags & PPC_OPERAND_ABSOLUTE) != 0)
53625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    (*info->print_address_func) ((bfd_vma) value & 0xffffffff, info);
53635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  else if ((operand->flags & PPC_OPERAND_CR) == 0
53645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner		   || (dialect & PPC_OPCODE_PPC) == 0)
53655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    (*info->fprintf_func) (info->stream, "%ld", value);
53665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	  else
53675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	    {
53685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	      if (operand->bitm == 7)
53695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner		(*info->fprintf_func) (info->stream, "cr%ld", value);
53705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	      else
53718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project		{
53725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner		  static const char *cbnames[4] = { "lt", "gt", "eq", "so" };
53735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner		  int cr;
53745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner		  int cc;
53755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
53765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner		  cr = value >> 2;
53775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner		  if (cr != 0)
53785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner		    (*info->fprintf_func) (info->stream, "4*cr%d+", cr);
53795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner		  cc = value & 3;
53805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner		  (*info->fprintf_func) (info->stream, "%s", cbnames[cc]);
53815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner		}
53828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project	    }
53838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
53848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project	  if (need_paren)
53858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project	    {
53865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	      (*info->fprintf_func) (info->stream, ")");
53878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project	      need_paren = 0;
53888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project	    }
53898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
53908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project	  if ((operand->flags & PPC_OPERAND_PARENS) == 0)
53918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project	    need_comma = 1;
53928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project	  else
53938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project	    {
53945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner	      (*info->fprintf_func) (info->stream, "(");
53958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project	      need_paren = 1;
53968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project	    }
53978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project	}
53988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
53998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      /* We have found and printed an instruction; return.  */
54008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project      return 4;
54018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    }
54028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
54035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  if ((dialect & PPC_OPCODE_ANY) != 0)
54045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    {
54055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      dialect = ~PPC_OPCODE_ANY;
54065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner      goto again;
54075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    }
54085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
54098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  /* We could not find a match.  */
54105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner  (*info->fprintf_func) (info->stream, ".long 0x%lx", insn);
54118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
54128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  return 4;
54138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
5414