1958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Copyright 2014 the V8 project authors. All rights reserved.
2958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Use of this source code is governed by a BSD-style license that can be
3958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// found in the LICENSE file.
4958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
5958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#ifndef V8_PPC_CONSTANTS_PPC_H_
6958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#define V8_PPC_CONSTANTS_PPC_H_
7958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
8014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch#include <stdint.h>
9014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
10014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch#include "src/base/logging.h"
11014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch#include "src/base/macros.h"
12014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch#include "src/globals.h"
13014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
14958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Berniernamespace v8 {
15958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Berniernamespace internal {
16958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
17958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Number of registers
18958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierconst int kNumRegisters = 32;
19958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
20958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// FP support.
21014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochconst int kNumDoubleRegisters = 32;
22958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
23958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierconst int kNoRegister = -1;
24958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
25014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// Used in embedded constant pool builder - max reach in bits for
26014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// various load instructions (one less due to unsigned)
27014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochconst int kLoadPtrMaxReachBits = 15;
28014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochconst int kLoadDoubleMaxReachBits = 15;
29014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
30958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// sign-extend the least significant 16-bits of value <imm>
31958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#define SIGN_EXT_IMM16(imm) ((static_cast<int>(imm) << 16) >> 16)
32958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
33958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// sign-extend the least significant 26-bits of value <imm>
34958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#define SIGN_EXT_IMM26(imm) ((static_cast<int>(imm) << 6) >> 6)
35958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
36958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// -----------------------------------------------------------------------------
37958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Conditions.
38958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
39958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Defines constants and accessor classes to assemble, disassemble and
40958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// simulate PPC instructions.
41958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier//
42958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Section references in the code refer to the "PowerPC Microprocessor
43958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Family: The Programmer.s Reference Guide" from 10/95
44958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// https://www-01.ibm.com/chips/techlib/techlib.nsf/techdocs/852569B20050FF778525699600741775/$file/prg.pdf
45958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier//
46958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
47958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Constants for specific fields are defined in their respective named enums.
48958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// General constants are in an anonymous enum in class Instr.
49958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierenum Condition {
50958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  kNoCondition = -1,
51958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  eq = 0,         // Equal.
52958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  ne = 1,         // Not equal.
53958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  ge = 2,         // Greater or equal.
54958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  lt = 3,         // Less than.
55958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  gt = 4,         // Greater than.
56958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  le = 5,         // Less then or equal
57958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  unordered = 6,  // Floating-point unordered
58958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  ordered = 7,
59958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  overflow = 8,  // Summary overflow
60958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  nooverflow = 9,
61958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  al = 10  // Always.
62958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier};
63958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
64958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
65958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierinline Condition NegateCondition(Condition cond) {
66958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  DCHECK(cond != al);
67958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  return static_cast<Condition>(cond ^ ne);
68958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier}
69958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
70958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
71958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Commute a condition such that {a cond b == b cond' a}.
72958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierinline Condition CommuteCondition(Condition cond) {
73958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  switch (cond) {
74958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier    case lt:
75958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier      return gt;
76958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier    case gt:
77958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier      return lt;
78958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier    case ge:
79958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier      return le;
80958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier    case le:
81958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier      return ge;
82958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier    default:
83958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier      return cond;
84958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  }
85958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier}
86958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
87958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// -----------------------------------------------------------------------------
88958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Instructions encoding.
89958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
90958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Instr is merely used by the Assembler to distinguish 32bit integers
91958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// representing instructions from usual 32 bit values.
92958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Instruction objects are pointers to 32bit values, and provide methods to
93958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// access the various ISA fields.
9462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochtypedef uint32_t Instr;
9562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
9662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_XX3_OPCODE_LIST(V)                                                 \
9762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Add Double-Precision */                                        \
9862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsadddp, XSADDDP, 0xF0000100)                                              \
9962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Add Single-Precision */                                        \
10062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsaddsp, XSADDSP, 0xF0000000)                                              \
10162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Compare Ordered Double-Precision */                            \
10262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xscmpodp, XSCMPODP, 0xF0000158)                                            \
10362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Compare Unordered Double-Precision */                          \
10462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xscmpudp, XSCMPUDP, 0xF0000118)                                            \
10562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Copy Sign Double-Precision */                                  \
10662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xscpsgndp, XSCPSGNDP, 0xF0000580)                                          \
10762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Divide Double-Precision */                                     \
10862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsdivdp, XSDIVDP, 0xF00001C0)                                              \
10962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Divide Single-Precision */                                     \
11062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsdivsp, XSDIVSP, 0xF00000C0)                                              \
11162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Multiply-Add Type-A Double-Precision */                        \
11262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsmaddadp, XSMADDADP, 0xF0000108)                                          \
11362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Multiply-Add Type-A Single-Precision */                        \
11462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsmaddasp, XSMADDASP, 0xF0000008)                                          \
11562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Multiply-Add Type-M Double-Precision */                        \
11662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsmaddmdp, XSMADDMDP, 0xF0000148)                                          \
11762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Multiply-Add Type-M Single-Precision */                        \
11862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsmaddmsp, XSMADDMSP, 0xF0000048)                                          \
11962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Maximum Double-Precision */                                    \
12062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsmaxdp, XSMAXDP, 0xF0000500)                                              \
12162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Minimum Double-Precision */                                    \
12262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsmindp, XSMINDP, 0xF0000540)                                              \
12362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Multiply-Subtract Type-A Double-Precision */                   \
12462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsmsubadp, XSMSUBADP, 0xF0000188)                                          \
12562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Multiply-Subtract Type-A Single-Precision */                   \
12662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsmsubasp, XSMSUBASP, 0xF0000088)                                          \
12762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Multiply-Subtract Type-M Double-Precision */                   \
12862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsmsubmdp, XSMSUBMDP, 0xF00001C8)                                          \
12962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Multiply-Subtract Type-M Single-Precision */                   \
13062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsmsubmsp, XSMSUBMSP, 0xF00000C8)                                          \
13162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Multiply Double-Precision */                                   \
13262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsmuldp, XSMULDP, 0xF0000180)                                              \
13362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Multiply Single-Precision */                                   \
13462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsmulsp, XSMULSP, 0xF0000080)                                              \
13562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Negative Multiply-Add Type-A Double-Precision */               \
13662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsnmaddadp, XSNMADDADP, 0xF0000508)                                        \
13762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Negative Multiply-Add Type-A Single-Precision */               \
13862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsnmaddasp, XSNMADDASP, 0xF0000408)                                        \
13962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Negative Multiply-Add Type-M Double-Precision */               \
14062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsnmaddmdp, XSNMADDMDP, 0xF0000548)                                        \
14162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Negative Multiply-Add Type-M Single-Precision */               \
14262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsnmaddmsp, XSNMADDMSP, 0xF0000448)                                        \
14362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Negative Multiply-Subtract Type-A Double-Precision */          \
14462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsnmsubadp, XSNMSUBADP, 0xF0000588)                                        \
14562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Negative Multiply-Subtract Type-A Single-Precision */          \
14662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsnmsubasp, XSNMSUBASP, 0xF0000488)                                        \
14762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Negative Multiply-Subtract Type-M Double-Precision */          \
14862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsnmsubmdp, XSNMSUBMDP, 0xF00005C8)                                        \
14962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Negative Multiply-Subtract Type-M Single-Precision */          \
15062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsnmsubmsp, XSNMSUBMSP, 0xF00004C8)                                        \
15162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Reciprocal Estimate Double-Precision */                        \
15262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsredp, XSREDP, 0xF0000168)                                                \
15362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Reciprocal Estimate Single-Precision */                        \
15462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsresp, XSRESP, 0xF0000068)                                                \
15562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Subtract Double-Precision */                                   \
15662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xssubdp, XSSUBDP, 0xF0000140)                                              \
15762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Subtract Single-Precision */                                   \
15862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xssubsp, XSSUBSP, 0xF0000040)                                              \
15962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Test for software Divide Double-Precision */                   \
16062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xstdivdp, XSTDIVDP, 0xF00001E8)                                            \
16162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Add Double-Precision */                                        \
16262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvadddp, XVADDDP, 0xF0000300)                                              \
16362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Add Single-Precision */                                        \
16462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvaddsp, XVADDSP, 0xF0000200)                                              \
16562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Compare Equal To Double-Precision */                           \
16662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcmpeqdp, XVCMPEQDP, 0xF0000318)                                          \
16762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Compare Equal To Double-Precision & record CR6 */              \
16862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcmpeqdpx, XVCMPEQDPx, 0xF0000718)                                        \
16962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Compare Equal To Single-Precision */                           \
17062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcmpeqsp, XVCMPEQSP, 0xF0000218)                                          \
17162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Compare Equal To Single-Precision & record CR6 */              \
17262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcmpeqspx, XVCMPEQSPx, 0xF0000618)                                        \
17362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Compare Greater Than or Equal To Double-Precision */           \
17462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcmpgedp, XVCMPGEDP, 0xF0000398)                                          \
17562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Compare Greater Than or Equal To Double-Precision & record */  \
17662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* CR6 */                                                                    \
17762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcmpgedpx, XVCMPGEDPx, 0xF0000798)                                        \
17862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Compare Greater Than or Equal To Single-Precision */           \
17962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcmpgesp, XVCMPGESP, 0xF0000298)                                          \
18062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Compare Greater Than or Equal To Single-Precision & record */  \
18162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* CR6 */                                                                    \
18262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcmpgespx, XVCMPGESPx, 0xF0000698)                                        \
18362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Compare Greater Than Double-Precision */                       \
18462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcmpgtdp, XVCMPGTDP, 0xF0000358)                                          \
18562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Compare Greater Than Double-Precision & record CR6 */          \
18662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcmpgtdpx, XVCMPGTDPx, 0xF0000758)                                        \
18762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Compare Greater Than Single-Precision */                       \
18862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcmpgtsp, XVCMPGTSP, 0xF0000258)                                          \
18962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Compare Greater Than Single-Precision & record CR6 */          \
19062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcmpgtspx, XVCMPGTSPx, 0xF0000658)                                        \
19162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Copy Sign Double-Precision */                                  \
19262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcpsgndp, XVCPSGNDP, 0xF0000780)                                          \
19362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Copy Sign Single-Precision */                                  \
19462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcpsgnsp, XVCPSGNSP, 0xF0000680)                                          \
19562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Divide Double-Precision */                                     \
19662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvdivdp, XVDIVDP, 0xF00003C0)                                              \
19762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Divide Single-Precision */                                     \
19862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvdivsp, XVDIVSP, 0xF00002C0)                                              \
19962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Multiply-Add Type-A Double-Precision */                        \
20062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvmaddadp, XVMADDADP, 0xF0000308)                                          \
20162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Multiply-Add Type-A Single-Precision */                        \
20262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvmaddasp, XVMADDASP, 0xF0000208)                                          \
20362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Multiply-Add Type-M Double-Precision */                        \
20462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvmaddmdp, XVMADDMDP, 0xF0000348)                                          \
20562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Multiply-Add Type-M Single-Precision */                        \
20662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvmaddmsp, XVMADDMSP, 0xF0000248)                                          \
20762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Maximum Double-Precision */                                    \
20862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvmaxdp, XVMAXDP, 0xF0000700)                                              \
20962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Maximum Single-Precision */                                    \
21062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvmaxsp, XVMAXSP, 0xF0000600)                                              \
21162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Minimum Double-Precision */                                    \
21262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvmindp, XVMINDP, 0xF0000740)                                              \
21362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Minimum Single-Precision */                                    \
21462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvminsp, XVMINSP, 0xF0000640)                                              \
21562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Multiply-Subtract Type-A Double-Precision */                   \
21662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvmsubadp, XVMSUBADP, 0xF0000388)                                          \
21762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Multiply-Subtract Type-A Single-Precision */                   \
21862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvmsubasp, XVMSUBASP, 0xF0000288)                                          \
21962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Multiply-Subtract Type-M Double-Precision */                   \
22062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvmsubmdp, XVMSUBMDP, 0xF00003C8)                                          \
22162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Multiply-Subtract Type-M Single-Precision */                   \
22262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvmsubmsp, XVMSUBMSP, 0xF00002C8)                                          \
22362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Multiply Double-Precision */                                   \
22462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvmuldp, XVMULDP, 0xF0000380)                                              \
22562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Multiply Single-Precision */                                   \
22662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvmulsp, XVMULSP, 0xF0000280)                                              \
22762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Negative Multiply-Add Type-A Double-Precision */               \
22862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvnmaddadp, XVNMADDADP, 0xF0000708)                                        \
22962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Negative Multiply-Add Type-A Single-Precision */               \
23062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvnmaddasp, XVNMADDASP, 0xF0000608)                                        \
23162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Negative Multiply-Add Type-M Double-Precision */               \
23262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvnmaddmdp, XVNMADDMDP, 0xF0000748)                                        \
23362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Negative Multiply-Add Type-M Single-Precision */               \
23462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvnmaddmsp, XVNMADDMSP, 0xF0000648)                                        \
23562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Negative Multiply-Subtract Type-A Double-Precision */          \
23662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvnmsubadp, XVNMSUBADP, 0xF0000788)                                        \
23762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Negative Multiply-Subtract Type-A Single-Precision */          \
23862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvnmsubasp, XVNMSUBASP, 0xF0000688)                                        \
23962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Negative Multiply-Subtract Type-M Double-Precision */          \
24062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvnmsubmdp, XVNMSUBMDP, 0xF00007C8)                                        \
24162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Negative Multiply-Subtract Type-M Single-Precision */          \
24262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvnmsubmsp, XVNMSUBMSP, 0xF00006C8)                                        \
24362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Reciprocal Estimate Double-Precision */                        \
24462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvredp, XVREDP, 0xF0000368)                                                \
24562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Reciprocal Estimate Single-Precision */                        \
24662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvresp, XVRESP, 0xF0000268)                                                \
24762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Subtract Double-Precision */                                   \
24862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvsubdp, XVSUBDP, 0xF0000340)                                              \
24962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Subtract Single-Precision */                                   \
25062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvsubsp, XVSUBSP, 0xF0000240)                                              \
25162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Test for software Divide Double-Precision */                   \
25262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvtdivdp, XVTDIVDP, 0xF00003E8)                                            \
25362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Test for software Divide Single-Precision */                   \
25462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvtdivsp, XVTDIVSP, 0xF00002E8)                                            \
25562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Logical AND */                                                        \
25662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xxland, XXLAND, 0xF0000410)                                                \
25762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Logical AND with Complement */                                        \
25862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xxlandc, XXLANDC, 0xF0000450)                                              \
25962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Logical Equivalence */                                                \
26062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xxleqv, XXLEQV, 0xF00005D0)                                                \
26162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Logical NAND */                                                       \
26262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xxlnand, XXLNAND, 0xF0000590)                                              \
26362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Logical NOR */                                                        \
26462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xxlnor, XXLNOR, 0xF0000510)                                                \
26562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Logical OR */                                                         \
26662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xxlor, XXLOR, 0xF0000490)                                                  \
26762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Logical OR with Complement */                                         \
26862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xxlorc, XXLORC, 0xF0000550)                                                \
26962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Logical XOR */                                                        \
27062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xxlxor, XXLXOR, 0xF00004D0)                                                \
27162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Merge High Word */                                                    \
27262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xxmrghw, XXMRGHW, 0xF0000090)                                              \
27362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Merge Low Word */                                                     \
27462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xxmrglw, XXMRGLW, 0xF0000190)                                              \
27562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Permute Doubleword Immediate */                                       \
27662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xxpermdi, XXPERMDI, 0xF0000050)                                            \
27762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Shift Left Double by Word Immediate */                                \
27862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xxsldwi, XXSLDWI, 0xF0000010)                                              \
27962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Splat Word */                                                         \
28062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xxspltw, XXSPLTW, 0xF0000290)
28162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
28262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_Z23_OPCODE_LIST(V)                                                 \
28362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Quantize */                                                       \
28462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dqua, DQUA, 0xEC000006)                                                    \
28562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Quantize Immediate */                                             \
28662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dquai, DQUAI, 0xEC000086)                                                  \
28762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Quantize Immediate Quad */                                        \
28862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dquaiq, DQUAIQ, 0xFC000086)                                                \
28962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Quantize Quad */                                                  \
29062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dquaq, DQUAQ, 0xFC000006)                                                  \
29162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Round To FP Integer Without Inexact */                   \
29262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(drintn, DRINTN, 0xEC0001C6)                                                \
29362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Round To FP Integer Without Inexact Quad */              \
29462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(drintnq, DRINTNQ, 0xFC0001C6)                                              \
29562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Round To FP Integer With Inexact */                      \
29662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(drintx, DRINTX, 0xEC0000C6)                                                \
29762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Round To FP Integer With Inexact Quad */                 \
29862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(drintxq, DRINTXQ, 0xFC0000C6)                                              \
29962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Reround */                                               \
30062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(drrnd, DRRND, 0xEC000046)                                                  \
30162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Reround Quad */                                          \
30262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(drrndq, DRRNDQ, 0xFC000046)
30362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
30462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_Z22_OPCODE_LIST(V)                                                 \
30562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Shift Coefficient Left Immediate */                      \
30662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dscli, DSCLI, 0xEC000084)                                                  \
30762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Shift Coefficient Left Immediate Quad */                 \
30862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dscliq, DSCLIQ, 0xFC000084)                                                \
30962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Shift Coefficient Right Immediate */                     \
31062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dscri, DSCRI, 0xEC0000C4)                                                  \
31162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Shift Coefficient Right Immediate Quad */                \
31262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dscriq, DSCRIQ, 0xFC0000C4)                                                \
31362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Test Data Class */                                       \
31462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dtstdc, DTSTDC, 0xEC000184)                                                \
31562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Test Data Class Quad */                                  \
31662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dtstdcq, DTSTDCQ, 0xFC000184)                                              \
31762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Test Data Group */                                       \
31862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dtstdg, DTSTDG, 0xEC0001C4)                                                \
31962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Test Data Group Quad */                                  \
32062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dtstdgq, DTSTDGQ, 0xFC0001C4)
32162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
32262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_XX2_OPCODE_LIST(V)                                                 \
32362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move To VSR Doubleword */                                                 \
32462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mtvsrd, MTVSRD, 0x7C000166)                                                \
32562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move To VSR Word Algebraic */                                             \
32662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mtvsrwa, MTVSRWA, 0x7C0001A6)                                              \
32762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move To VSR Word and Zero */                                              \
32862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mtvsrwz, MTVSRWZ, 0x7C0001E6)                                              \
32962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Absolute Value Double-Precision */                             \
33062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsabsdp, XSABSDP, 0xF0000564)                                              \
33162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Convert Double-Precision to Single-Precision */                \
33262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xscvdpsp, XSCVDPSP, 0xF0000424)                                            \
33362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Convert Double-Precision to Single-Precision format Non- */    \
33462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* signalling */                                                             \
33562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xscvdpspn, XSCVDPSPN, 0xF000042C)                                          \
33662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Convert Double-Precision to Signed Fixed-Point Doubleword */   \
33762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Saturate */                                                               \
33862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xscvdpsxds, XSCVDPSXDS, 0xF0000560)                                        \
33962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Convert Double-Precision to Signed Fixed-Point Word */         \
34062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Saturate */                                                               \
34162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xscvdpsxws, XSCVDPSXWS, 0xF0000160)                                        \
34262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Convert Double-Precision to Unsigned Fixed-Point */            \
34362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Doubleword Saturate */                                                    \
34462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xscvdpuxds, XSCVDPUXDS, 0xF0000520)                                        \
34562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Convert Double-Precision to Unsigned Fixed-Point Word */       \
34662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Saturate */                                                               \
34762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xscvdpuxws, XSCVDPUXWS, 0xF0000120)                                        \
34862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Convert Single-Precision to Double-Precision (p=1) */          \
34962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xscvspdp, XSCVSPDP, 0xF0000524)                                            \
35062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Scalar Convert Single-Precision to Double-Precision format Non- */        \
35162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* signalling */                                                             \
35262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xscvspdpn, XSCVSPDPN, 0xF000052C)                                          \
35362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Convert Signed Fixed-Point Doubleword to Double-Precision */   \
35462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xscvsxddp, XSCVSXDDP, 0xF00005E0)                                          \
35562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Convert Signed Fixed-Point Doubleword to Single-Precision */   \
35662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xscvsxdsp, XSCVSXDSP, 0xF00004E0)                                          \
35762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Convert Unsigned Fixed-Point Doubleword to Double- */          \
35862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Precision */                                                              \
35962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xscvuxddp, XSCVUXDDP, 0xF00005A0)                                          \
36062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Convert Unsigned Fixed-Point Doubleword to Single- */          \
36162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Precision */                                                              \
36262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xscvuxdsp, XSCVUXDSP, 0xF00004A0)                                          \
36362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Negative Absolute Value Double-Precision */                    \
36462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsnabsdp, XSNABSDP, 0xF00005A4)                                            \
36562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Negate Double-Precision */                                     \
36662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsnegdp, XSNEGDP, 0xF00005E4)                                              \
36762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Round to Double-Precision Integer */                           \
36862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsrdpi, XSRDPI, 0xF0000124)                                                \
36962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Round to Double-Precision Integer using Current rounding */    \
37062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* mode */                                                                   \
37162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsrdpic, XSRDPIC, 0xF00001AC)                                              \
37262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Round to Double-Precision Integer toward -Infinity */          \
37362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsrdpim, XSRDPIM, 0xF00001E4)                                              \
37462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Round to Double-Precision Integer toward +Infinity */          \
37562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsrdpip, XSRDPIP, 0xF00001A4)                                              \
37662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Round to Double-Precision Integer toward Zero */               \
37762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsrdpiz, XSRDPIZ, 0xF0000164)                                              \
37862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Round to Single-Precision */                                   \
37962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsrsp, XSRSP, 0xF0000464)                                                  \
38062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Reciprocal Square Root Estimate Double-Precision */            \
38162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsrsqrtedp, XSRSQRTEDP, 0xF0000128)                                        \
38262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Reciprocal Square Root Estimate Single-Precision */            \
38362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xsrsqrtesp, XSRSQRTESP, 0xF0000028)                                        \
38462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Square Root Double-Precision */                                \
38562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xssqrtdp, XSSQRTDP, 0xF000012C)                                            \
38662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Square Root Single-Precision */                                \
38762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xssqrtsp, XSSQRTSP, 0xF000002C)                                            \
38862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Scalar Test for software Square Root Double-Precision */              \
38962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xstsqrtdp, XSTSQRTDP, 0xF00001A8)                                          \
39062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Absolute Value Double-Precision */                             \
39162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvabsdp, XVABSDP, 0xF0000764)                                              \
39262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Absolute Value Single-Precision */                             \
39362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvabssp, XVABSSP, 0xF0000664)                                              \
39462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Convert Double-Precision to Single-Precision */                \
39562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcvdpsp, XVCVDPSP, 0xF0000624)                                            \
39662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Convert Double-Precision to Signed Fixed-Point Doubleword */   \
39762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Saturate */                                                               \
39862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcvdpsxds, XVCVDPSXDS, 0xF0000760)                                        \
39962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Convert Double-Precision to Signed Fixed-Point Word */         \
40062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Saturate */                                                               \
40162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcvdpsxws, XVCVDPSXWS, 0xF0000360)                                        \
40262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Convert Double-Precision to Unsigned Fixed-Point */            \
40362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Doubleword Saturate */                                                    \
40462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcvdpuxds, XVCVDPUXDS, 0xF0000720)                                        \
40562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Convert Double-Precision to Unsigned Fixed-Point Word */       \
40662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Saturate */                                                               \
40762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcvdpuxws, XVCVDPUXWS, 0xF0000320)                                        \
40862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Convert Single-Precision to Double-Precision */                \
40962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcvspdp, XVCVSPDP, 0xF0000724)                                            \
41062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Convert Single-Precision to Signed Fixed-Point Doubleword */   \
41162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Saturate */                                                               \
41262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcvspsxds, XVCVSPSXDS, 0xF0000660)                                        \
41362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Convert Single-Precision to Signed Fixed-Point Word */         \
41462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Saturate */                                                               \
41562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcvspsxws, XVCVSPSXWS, 0xF0000260)                                        \
41662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Convert Single-Precision to Unsigned Fixed-Point */            \
41762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Doubleword Saturate */                                                    \
41862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcvspuxds, XVCVSPUXDS, 0xF0000620)                                        \
41962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Convert Single-Precision to Unsigned Fixed-Point Word */       \
42062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Saturate */                                                               \
42162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcvspuxws, XVCVSPUXWS, 0xF0000220)                                        \
42262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Convert Signed Fixed-Point Doubleword to Double-Precision */   \
42362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcvsxddp, XVCVSXDDP, 0xF00007E0)                                          \
42462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Convert Signed Fixed-Point Doubleword to Single-Precision */   \
42562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcvsxdsp, XVCVSXDSP, 0xF00006E0)                                          \
42662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Convert Signed Fixed-Point Word to Double-Precision */         \
42762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcvsxwdp, XVCVSXWDP, 0xF00003E0)                                          \
42862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Convert Signed Fixed-Point Word to Single-Precision */         \
42962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcvsxwsp, XVCVSXWSP, 0xF00002E0)                                          \
43062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Convert Unsigned Fixed-Point Doubleword to Double- */          \
43162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Precision */                                                              \
43262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcvuxddp, XVCVUXDDP, 0xF00007A0)                                          \
43362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Convert Unsigned Fixed-Point Doubleword to Single- */          \
43462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Precision */                                                              \
43562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcvuxdsp, XVCVUXDSP, 0xF00006A0)                                          \
43662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Convert Unsigned Fixed-Point Word to Double-Precision */       \
43762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcvuxwdp, XVCVUXWDP, 0xF00003A0)                                          \
43862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Convert Unsigned Fixed-Point Word to Single-Precision */       \
43962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvcvuxwsp, XVCVUXWSP, 0xF00002A0)                                          \
44062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Negative Absolute Value Double-Precision */                    \
44162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvnabsdp, XVNABSDP, 0xF00007A4)                                            \
44262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Negative Absolute Value Single-Precision */                    \
44362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvnabssp, XVNABSSP, 0xF00006A4)                                            \
44462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Negate Double-Precision */                                     \
44562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvnegdp, XVNEGDP, 0xF00007E4)                                              \
44662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Negate Single-Precision */                                     \
44762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvnegsp, XVNEGSP, 0xF00006E4)                                              \
44862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Round to Double-Precision Integer */                           \
44962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvrdpi, XVRDPI, 0xF0000324)                                                \
45062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Round to Double-Precision Integer using Current rounding */    \
45162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* mode */                                                                   \
45262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvrdpic, XVRDPIC, 0xF00003AC)                                              \
45362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Round to Double-Precision Integer toward -Infinity */          \
45462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvrdpim, XVRDPIM, 0xF00003E4)                                              \
45562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Round to Double-Precision Integer toward +Infinity */          \
45662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvrdpip, XVRDPIP, 0xF00003A4)                                              \
45762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Round to Double-Precision Integer toward Zero */               \
45862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvrdpiz, XVRDPIZ, 0xF0000364)                                              \
45962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Round to Single-Precision Integer */                           \
46062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvrspi, XVRSPI, 0xF0000224)                                                \
46162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Round to Single-Precision Integer using Current rounding */    \
46262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* mode */                                                                   \
46362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvrspic, XVRSPIC, 0xF00002AC)                                              \
46462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Round to Single-Precision Integer toward -Infinity */          \
46562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvrspim, XVRSPIM, 0xF00002E4)                                              \
46662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Round to Single-Precision Integer toward +Infinity */          \
46762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvrspip, XVRSPIP, 0xF00002A4)                                              \
46862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Round to Single-Precision Integer toward Zero */               \
46962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvrspiz, XVRSPIZ, 0xF0000264)                                              \
47062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Reciprocal Square Root Estimate Double-Precision */            \
47162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvrsqrtedp, XVRSQRTEDP, 0xF0000328)                                        \
47262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Reciprocal Square Root Estimate Single-Precision */            \
47362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvrsqrtesp, XVRSQRTESP, 0xF0000228)                                        \
47462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Square Root Double-Precision */                                \
47562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvsqrtdp, XVSQRTDP, 0xF000032C)                                            \
47662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Square Root Single-Precision */                                \
47762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvsqrtsp, XVSQRTSP, 0xF000022C)                                            \
47862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Test for software Square Root Double-Precision */              \
47962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvtsqrtdp, XVTSQRTDP, 0xF00003A8)                                          \
48062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Vector Test for software Square Root Single-Precision */              \
48162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xvtsqrtsp, XVTSQRTSP, 0xF00002A8)
48262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
48362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_EVX_OPCODE_LIST(V)                                                 \
48462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Load Double Word into Double Word by External PID Indexed */       \
48562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evlddepx, EVLDDEPX, 0x7C00063E)                                            \
48662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Store Double of Double by External PID Indexed */                  \
48762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evstddepx, EVSTDDEPX, 0x7C00073E)                                          \
48862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Bit Reversed Increment */                                                 \
48962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(brinc, BRINC, 0x1000020F)                                                  \
49062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Absolute Value */                                                  \
49162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evabs, EVABS, 0x10000208)                                                  \
49262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Add Immediate Word */                                              \
49362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evaddiw, EVADDIW, 0x10000202)                                              \
49462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Add Signed, Modulo, Integer to Accumulator Word */                 \
49562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evaddsmiaaw, EVADDSMIAAW, 0x100004C9)                                      \
49662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Add Signed, Saturate, Integer to Accumulator Word */               \
49762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evaddssiaaw, EVADDSSIAAW, 0x100004C1)                                      \
49862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Add Unsigned, Modulo, Integer to Accumulator Word */               \
49962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evaddumiaaw, EVADDUMIAAW, 0x100004C8)                                      \
50062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Add Unsigned, Saturate, Integer to Accumulator Word */             \
50162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evaddusiaaw, EVADDUSIAAW, 0x100004C0)                                      \
50262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Add Word */                                                        \
50362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evaddw, EVADDW, 0x10000200)                                                \
50462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector AND */                                                             \
50562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evand, EVAND, 0x10000211)                                                  \
50662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector AND with Complement */                                             \
50762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evandc, EVANDC, 0x10000212)                                                \
50862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Compare Equal */                                                   \
50962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evcmpeq, EVCMPEQ, 0x10000234)                                              \
51062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Compare Greater Than Signed */                                     \
51162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evcmpgts, EVCMPGTS, 0x10000231)                                            \
51262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Compare Greater Than Unsigned */                                   \
51362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evcmpgtu, EVCMPGTU, 0x10000230)                                            \
51462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Compare Less Than Signed */                                        \
51562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evcmplts, EVCMPLTS, 0x10000233)                                            \
51662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Compare Less Than Unsigned */                                      \
51762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evcmpltu, EVCMPLTU, 0x10000232)                                            \
51862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Count Leading Signed Bits Word */                                  \
51962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evcntlsw, EVCNTLSW, 0x1000020E)                                            \
52062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Count Leading Zeros Word */                                        \
52162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evcntlzw, EVCNTLZW, 0x1000020D)                                            \
52262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Divide Word Signed */                                              \
52362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evdivws, EVDIVWS, 0x100004C6)                                              \
52462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Divide Word Unsigned */                                            \
52562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evdivwu, EVDIVWU, 0x100004C7)                                              \
52662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Equivalent */                                                      \
52762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(eveqv, EVEQV, 0x10000219)                                                  \
52862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Extend Sign Byte */                                                \
52962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evextsb, EVEXTSB, 0x1000020A)                                              \
53062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Extend Sign Half Word */                                           \
53162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evextsh, EVEXTSH, 0x1000020B)                                              \
53262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Load Double Word into Double Word */                               \
53362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evldd, EVLDD, 0x10000301)                                                  \
53462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Load Double Word into Double Word Indexed */                       \
53562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evlddx, EVLDDX, 0x10000300)                                                \
53662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Load Double into Four Half Words */                                \
53762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evldh, EVLDH, 0x10000305)                                                  \
53862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Load Double into Four Half Words Indexed */                        \
53962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evldhx, EVLDHX, 0x10000304)                                                \
54062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Load Double into Two Words */                                      \
54162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evldw, EVLDW, 0x10000303)                                                  \
54262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Load Double into Two Words Indexed */                              \
54362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evldwx, EVLDWX, 0x10000302)                                                \
54462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Load Half Word into Half Words Even and Splat */                   \
54562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evlhhesplat, EVLHHESPLAT, 0x10000309)                                      \
54662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Load Half Word into Half Words Even and Splat Indexed */           \
54762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evlhhesplatx, EVLHHESPLATX, 0x10000308)                                    \
54862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Load Half Word into Half Word Odd Signed and Splat */              \
54962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evlhhossplat, EVLHHOSSPLAT, 0x1000030F)                                    \
55062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Load Half Word into Half Word Odd Signed and Splat Indexed */      \
55162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evlhhossplatx, EVLHHOSSPLATX, 0x1000030E)                                  \
55262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Load Half Word into Half Word Odd Unsigned and Splat */            \
55362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evlhhousplat, EVLHHOUSPLAT, 0x1000030D)                                    \
55462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Load Half Word into Half Word Odd Unsigned and Splat Indexed */    \
55562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evlhhousplatx, EVLHHOUSPLATX, 0x1000030C)                                  \
55662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Load Word into Two Half Words Even */                              \
55762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evlwhe, EVLWHE, 0x10000311)                                                \
55862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Load Word into Two Half Words Even Indexed */                      \
55962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evlwhex, EVLWHEX, 0x10000310)                                              \
56062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Load Word into Two Half Words Odd Signed (with sign extension) */  \
56162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evlwhos, EVLWHOS, 0x10000317)                                              \
56262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Load Word into Two Half Words Odd Signed Indexed (with sign */     \
56362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* extension) */                                                             \
56462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evlwhosx, EVLWHOSX, 0x10000316)                                            \
56562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Load Word into Two Half Words Odd Unsigned (zero-extended) */      \
56662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evlwhou, EVLWHOU, 0x10000315)                                              \
56762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Load Word into Two Half Words Odd Unsigned Indexed (zero- */       \
56862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* extended) */                                                              \
56962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evlwhoux, EVLWHOUX, 0x10000314)                                            \
57062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Load Word into Two Half Words and Splat */                         \
57162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evlwhsplat, EVLWHSPLAT, 0x1000031D)                                        \
57262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Load Word into Two Half Words and Splat Indexed */                 \
57362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evlwhsplatx, EVLWHSPLATX, 0x1000031C)                                      \
57462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Load Word into Word and Splat */                                   \
57562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evlwwsplat, EVLWWSPLAT, 0x10000319)                                        \
57662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Load Word into Word and Splat Indexed */                           \
57762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evlwwsplatx, EVLWWSPLATX, 0x10000318)                                      \
57862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Merge High */                                                      \
57962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmergehi, EVMERGEHI, 0x1000022C)                                          \
58062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Merge High/Low */                                                  \
58162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmergehilo, EVMERGEHILO, 0x1000022E)                                      \
58262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Merge Low */                                                       \
58362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmergelo, EVMERGELO, 0x1000022D)                                          \
58462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Merge Low/High */                                                  \
58562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmergelohi, EVMERGELOHI, 0x1000022F)                                      \
58662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Even, Guarded, Signed, Modulo, Fractional */  \
58762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* and Accumulate */                                                         \
58862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhegsmfaa, EVMHEGSMFAA, 0x1000052B)                                      \
58962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Even, Guarded, Signed, Modulo, Fractional */  \
59062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* and Accumulate Negative */                                                \
59162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhegsmfan, EVMHEGSMFAN, 0x100005AB)                                      \
59262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Even, Guarded, Signed, Modulo, Integer */     \
59362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* and Accumulate */                                                         \
59462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhegsmiaa, EVMHEGSMIAA, 0x10000529)                                      \
59562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Even, Guarded, Signed, Modulo, Integer */     \
59662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* and Accumulate Negative */                                                \
59762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhegsmian, EVMHEGSMIAN, 0x100005A9)                                      \
59862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Even, Guarded, Unsigned, Modulo, Integer */   \
59962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* and Accumulate */                                                         \
60062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhegumiaa, EVMHEGUMIAA, 0x10000528)                                      \
60162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Even, Guarded, Unsigned, Modulo, Integer */   \
60262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* and Accumulate Negative */                                                \
60362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhegumian, EVMHEGUMIAN, 0x100005A8)                                      \
60462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Even, Signed, Modulo, Fractional */           \
60562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhesmf, EVMHESMF, 0x1000040B)                                            \
60662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Even, Signed, Modulo, Fractional to */        \
60762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulator */                                                            \
60862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhesmfa, EVMHESMFA, 0x1000042B)                                          \
60962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Even, Signed, Modulo, Fractional and */       \
61062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulate into Words */                                                  \
61162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhesmfaaw, EVMHESMFAAW, 0x1000050B)                                      \
61262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Even, Signed, Modulo, Fractional and */       \
61362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulate Negative into Words */                                         \
61462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhesmfanw, EVMHESMFANW, 0x1000058B)                                      \
61562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Even, Signed, Modulo, Integer */              \
61662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhesmi, EVMHESMI, 0x10000409)                                            \
61762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Even, Signed, Modulo, Integer to */           \
61862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulator */                                                            \
61962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhesmia, EVMHESMIA, 0x10000429)                                          \
62062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Even, Signed, Modulo, Integer and */          \
62162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulate into Words */                                                  \
62262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhesmiaaw, EVMHESMIAAW, 0x10000509)                                      \
62362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Even, Signed, Modulo, Integer and */          \
62462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulate Negative into Words */                                         \
62562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhesmianw, EVMHESMIANW, 0x10000589)                                      \
62662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Even, Signed, Saturate, Fractional */         \
62762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhessf, EVMHESSF, 0x10000403)                                            \
62862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Even, Signed, Saturate, Fractional to */      \
62962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulator */                                                            \
63062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhessfa, EVMHESSFA, 0x10000423)                                          \
63162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Even, Signed, Saturate, Fractional and */     \
63262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulate into Words */                                                  \
63362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhessfaaw, EVMHESSFAAW, 0x10000503)                                      \
63462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Even, Signed, Saturate, Fractional and */     \
63562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulate Negative into Words */                                         \
63662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhessfanw, EVMHESSFANW, 0x10000583)                                      \
63762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Even, Signed, Saturate, Integer and */        \
63862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulate into Words */                                                  \
63962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhessiaaw, EVMHESSIAAW, 0x10000501)                                      \
64062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Even, Signed, Saturate, Integer and */        \
64162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulate Negative into Words */                                         \
64262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhessianw, EVMHESSIANW, 0x10000581)                                      \
64362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Even, Unsigned, Modulo, Integer */            \
64462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmheumi, EVMHEUMI, 0x10000408)                                            \
64562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Even, Unsigned, Modulo, Integer to */         \
64662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulator */                                                            \
64762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmheumia, EVMHEUMIA, 0x10000428)                                          \
64862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Even, Unsigned, Modulo, Integer and */        \
64962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulate into Words */                                                  \
65062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmheumiaaw, EVMHEUMIAAW, 0x10000508)                                      \
65162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Even, Unsigned, Modulo, Integer and */        \
65262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulate Negative into Words */                                         \
65362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmheumianw, EVMHEUMIANW, 0x10000588)                                      \
65462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Even, Unsigned, Saturate, Integer and */      \
65562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulate into Words */                                                  \
65662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmheusiaaw, EVMHEUSIAAW, 0x10000500)                                      \
65762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Even, Unsigned, Saturate, Integer and */      \
65862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulate Negative into Words */                                         \
65962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmheusianw, EVMHEUSIANW, 0x10000580)                                      \
66062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Odd, Guarded, Signed, Modulo, Fractional */   \
66162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* and Accumulate */                                                         \
66262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhogsmfaa, EVMHOGSMFAA, 0x1000052F)                                      \
66362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Odd, Guarded, Signed, Modulo, Fractional */   \
66462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* and Accumulate Negative */                                                \
66562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhogsmfan, EVMHOGSMFAN, 0x100005AF)                                      \
66662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Odd, Guarded, Signed, Modulo, Integer, */     \
66762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* and Accumulate */                                                         \
66862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhogsmiaa, EVMHOGSMIAA, 0x1000052D)                                      \
66962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Odd, Guarded, Signed, Modulo, Integer and */  \
67062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulate Negative */                                                    \
67162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhogsmian, EVMHOGSMIAN, 0x100005AD)                                      \
67262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Odd, Guarded, Unsigned, Modulo, Integer */    \
67362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* and Accumulate */                                                         \
67462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhogumiaa, EVMHOGUMIAA, 0x1000052C)                                      \
67562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Odd, Guarded, Unsigned, Modulo, Integer */    \
67662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* and Accumulate Negative */                                                \
67762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhogumian, EVMHOGUMIAN, 0x100005AC)                                      \
67862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Odd, Signed, Modulo, Fractional */            \
67962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhosmf, EVMHOSMF, 0x1000040F)                                            \
68062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Odd, Signed, Modulo, Fractional to */         \
68162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulator */                                                            \
68262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhosmfa, EVMHOSMFA, 0x1000042F)                                          \
68362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Odd, Signed, Modulo, Fractional and */        \
68462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulate into Words */                                                  \
68562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhosmfaaw, EVMHOSMFAAW, 0x1000050F)                                      \
68662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Odd, Signed, Modulo, Fractional and */        \
68762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulate Negative into Words */                                         \
68862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhosmfanw, EVMHOSMFANW, 0x1000058F)                                      \
68962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Odd, Signed, Modulo, Integer */               \
69062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhosmi, EVMHOSMI, 0x1000040D)                                            \
69162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Odd, Signed, Modulo, Integer to */            \
69262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulator */                                                            \
69362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhosmia, EVMHOSMIA, 0x1000042D)                                          \
69462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Odd, Signed, Modulo, Integer and */           \
69562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulate into Words */                                                  \
69662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhosmiaaw, EVMHOSMIAAW, 0x1000050D)                                      \
69762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Odd, Signed, Modulo, Integer and */           \
69862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulate Negative into Words */                                         \
69962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhosmianw, EVMHOSMIANW, 0x1000058D)                                      \
70062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Odd, Signed, Saturate, Fractional */          \
70162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhossf, EVMHOSSF, 0x10000407)                                            \
70262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Odd, Signed, Saturate, Fractional to */       \
70362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulator */                                                            \
70462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhossfa, EVMHOSSFA, 0x10000427)                                          \
70562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Odd, Signed, Saturate, Fractional and */      \
70662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulate into Words */                                                  \
70762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhossfaaw, EVMHOSSFAAW, 0x10000507)                                      \
70862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Odd, Signed, Saturate, Fractional and */      \
70962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulate Negative into Words */                                         \
71062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhossfanw, EVMHOSSFANW, 0x10000587)                                      \
71162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Odd, Signed, Saturate, Integer and */         \
71262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulate into Words */                                                  \
71362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhossiaaw, EVMHOSSIAAW, 0x10000505)                                      \
71462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Odd, Signed, Saturate, Integer and */         \
71562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulate Negative into Words */                                         \
71662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhossianw, EVMHOSSIANW, 0x10000585)                                      \
71762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Odd, Unsigned, Modulo, Integer */             \
71862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhoumi, EVMHOUMI, 0x1000040C)                                            \
71962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Odd, Unsigned, Modulo, Integer to */          \
72062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulator */                                                            \
72162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhoumia, EVMHOUMIA, 0x1000042C)                                          \
72262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Odd, Unsigned, Modulo, Integer and */         \
72362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulate into Words */                                                  \
72462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhoumiaaw, EVMHOUMIAAW, 0x1000050C)                                      \
72562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Odd, Unsigned, Modulo, Integer and */         \
72662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulate Negative into Words */                                         \
72762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhoumianw, EVMHOUMIANW, 0x1000058C)                                      \
72862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Odd, Unsigned, Saturate, Integer and */       \
72962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulate into Words */                                                  \
73062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhousiaaw, EVMHOUSIAAW, 0x10000504)                                      \
73162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Half Words, Odd, Unsigned, Saturate, Integer and */       \
73262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Accumulate Negative into Words */                                         \
73362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmhousianw, EVMHOUSIANW, 0x10000584)                                      \
73462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Initialize Accumulator */                                                 \
73562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmra, EVMRA, 0x100004C4)                                                  \
73662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word High Signed, Modulo, Fractional */                   \
73762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwhsmf, EVMWHSMF, 0x1000044F)                                            \
73862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word High Signed, Modulo, Fractional to Accumulator */    \
73962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwhsmfa, EVMWHSMFA, 0x1000046F)                                          \
74062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word High Signed, Modulo, Integer */                      \
74162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwhsmi, EVMWHSMI, 0x1000044D)                                            \
74262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word High Signed, Modulo, Integer to Accumulator */       \
74362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwhsmia, EVMWHSMIA, 0x1000046D)                                          \
74462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word High Signed, Saturate, Fractional */                 \
74562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwhssf, EVMWHSSF, 0x10000447)                                            \
74662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word High Signed, Saturate, Fractional to Accumulator */  \
74762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwhssfa, EVMWHSSFA, 0x10000467)                                          \
74862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word High Unsigned, Modulo, Integer */                    \
74962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwhumi, EVMWHUMI, 0x1000044C)                                            \
75062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word High Unsigned, Modulo, Integer to Accumulator */     \
75162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwhumia, EVMWHUMIA, 0x1000046C)                                          \
75262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word Low Signed, Modulo, Integer and Accumulate in */     \
75362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Words */                                                                  \
75462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwlsmiaaw, EVMWLSMIAAW, 0x10000549)                                      \
75562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word Low Signed, Modulo, Integer and Accumulate */        \
75662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Negative in Words */                                                      \
75762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwlsmianw, EVMWLSMIANW, 0x100005C9)                                      \
75862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word Low Signed, Saturate, Integer and Accumulate in */   \
75962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Words */                                                                  \
76062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwlssiaaw, EVMWLSSIAAW, 0x10000541)                                      \
76162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word Low Signed, Saturate, Integer and Accumulate */      \
76262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Negative in Words */                                                      \
76362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwlssianw, EVMWLSSIANW, 0x100005C1)                                      \
76462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word Low Unsigned, Modulo, Integer */                     \
76562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwlumi, EVMWLUMI, 0x10000448)                                            \
76662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word Low Unsigned, Modulo, Integer to Accumulator */      \
76762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwlumia, EVMWLUMIA, 0x10000468)                                          \
76862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word Low Unsigned, Modulo, Integer and Accumulate in */   \
76962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Words */                                                                  \
77062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwlumiaaw, EVMWLUMIAAW, 0x10000548)                                      \
77162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word Low Unsigned, Modulo, Integer and Accumulate */      \
77262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Negative in Words */                                                      \
77362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwlumianw, EVMWLUMIANW, 0x100005C8)                                      \
77462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word Low Unsigned, Saturate, Integer and Accumulate */    \
77562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* in Words */                                                               \
77662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwlusiaaw, EVMWLUSIAAW, 0x10000540)                                      \
77762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word Low Unsigned, Saturate, Integer and Accumulate */    \
77862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Negative in Words */                                                      \
77962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwlusianw, EVMWLUSIANW, 0x100005C0)                                      \
78062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word Signed, Modulo, Fractional */                        \
78162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwsmf, EVMWSMF, 0x1000045B)                                              \
78262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word Signed, Modulo, Fractional to Accumulator */         \
78362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwsmfa, EVMWSMFA, 0x1000047B)                                            \
78462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word Signed, Modulo, Fractional and Accumulate */         \
78562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwsmfaa, EVMWSMFAA, 0x1000055B)                                          \
78662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word Signed, Modulo, Fractional and Accumulate */         \
78762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Negative */                                                               \
78862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwsmfan, EVMWSMFAN, 0x100005DB)                                          \
78962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word Signed, Modulo, Integer */                           \
79062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwsmi, EVMWSMI, 0x10000459)                                              \
79162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word Signed, Modulo, Integer to Accumulator */            \
79262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwsmia, EVMWSMIA, 0x10000479)                                            \
79362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word Signed, Modulo, Integer and Accumulate */            \
79462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwsmiaa, EVMWSMIAA, 0x10000559)                                          \
79562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word Signed, Modulo, Integer and Accumulate Negative */   \
79662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwsmian, EVMWSMIAN, 0x100005D9)                                          \
79762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word Signed, Saturate, Fractional */                      \
79862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwssf, EVMWSSF, 0x10000453)                                              \
79962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word Signed, Saturate, Fractional to Accumulator */       \
80062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwssfa, EVMWSSFA, 0x10000473)                                            \
80162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word Signed, Saturate, Fractional and Accumulate */       \
80262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwssfaa, EVMWSSFAA, 0x10000553)                                          \
80362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word Signed, Saturate, Fractional and Accumulate */       \
80462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Negative */                                                               \
80562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwssfan, EVMWSSFAN, 0x100005D3)                                          \
80662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word Unsigned, Modulo, Integer */                         \
80762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwumi, EVMWUMI, 0x10000458)                                              \
80862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word Unsigned, Modulo, Integer to Accumulator */          \
80962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwumia, EVMWUMIA, 0x10000478)                                            \
81062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word Unsigned, Modulo, Integer and Accumulate */          \
81162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwumiaa, EVMWUMIAA, 0x10000558)                                          \
81262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Word Unsigned, Modulo, Integer and Accumulate */          \
81362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Negative */                                                               \
81462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evmwumian, EVMWUMIAN, 0x100005D8)                                          \
81562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector NAND */                                                            \
81662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evnand, EVNAND, 0x1000021E)                                                \
81762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Negate */                                                          \
81862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evneg, EVNEG, 0x10000209)                                                  \
81962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector NOR */                                                             \
82062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evnor, EVNOR, 0x10000218)                                                  \
82162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector OR */                                                              \
82262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evor, EVOR, 0x10000217)                                                    \
82362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector OR with Complement */                                              \
82462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evorc, EVORC, 0x1000021B)                                                  \
82562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Rotate Left Word */                                                \
82662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evrlw, EVRLW, 0x10000228)                                                  \
82762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Rotate Left Word Immediate */                                      \
82862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evrlwi, EVRLWI, 0x1000022A)                                                \
82962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Round Word */                                                      \
83062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evrndw, EVRNDW, 0x1000020C)                                                \
83162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Shift Left Word */                                                 \
83262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evslw, EVSLW, 0x10000224)                                                  \
83362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Shift Left Word Immediate */                                       \
83462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evslwi, EVSLWI, 0x10000226)                                                \
83562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Splat Fractional Immediate */                                      \
83662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evsplatfi, EVSPLATFI, 0x1000022B)                                          \
83762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Splat Immediate */                                                 \
83862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evsplati, EVSPLATI, 0x10000229)                                            \
83962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Shift Right Word Immediate Signed */                               \
84062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evsrwis, EVSRWIS, 0x10000223)                                              \
84162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Shift Right Word Immediate Unsigned */                             \
84262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evsrwiu, EVSRWIU, 0x10000222)                                              \
84362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Shift Right Word Signed */                                         \
84462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evsrws, EVSRWS, 0x10000221)                                                \
84562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Shift Right Word Unsigned */                                       \
84662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evsrwu, EVSRWU, 0x10000220)                                                \
84762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Store Double of Double */                                          \
84862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evstdd, EVSTDD, 0x10000321)                                                \
84962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Store Double of Double Indexed */                                  \
85062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evstddx, EVSTDDX, 0x10000320)                                              \
85162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Store Double of Four Half Words */                                 \
85262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evstdh, EVSTDH, 0x10000325)                                                \
85362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Store Double of Four Half Words Indexed */                         \
85462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evstdhx, EVSTDHX, 0x10000324)                                              \
85562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Store Double of Two Words */                                       \
85662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evstdw, EVSTDW, 0x10000323)                                                \
85762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Store Double of Two Words Indexed */                               \
85862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evstdwx, EVSTDWX, 0x10000322)                                              \
85962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Store Word of Two Half Words from Even */                          \
86062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evstwhe, EVSTWHE, 0x10000331)                                              \
86162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Store Word of Two Half Words from Even Indexed */                  \
86262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evstwhex, EVSTWHEX, 0x10000330)                                            \
86362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Store Word of Two Half Words from Odd */                           \
86462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evstwho, EVSTWHO, 0x10000335)                                              \
86562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Store Word of Two Half Words from Odd Indexed */                   \
86662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evstwhox, EVSTWHOX, 0x10000334)                                            \
86762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Store Word of Word from Even */                                    \
86862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evstwwe, EVSTWWE, 0x10000339)                                              \
86962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Store Word of Word from Even Indexed */                            \
87062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evstwwex, EVSTWWEX, 0x10000338)                                            \
87162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Store Word of Word from Odd */                                     \
87262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evstwwo, EVSTWWO, 0x1000033D)                                              \
87362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Store Word of Word from Odd Indexed */                             \
87462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evstwwox, EVSTWWOX, 0x1000033C)                                            \
87562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Subtract Signed, Modulo, Integer to Accumulator Word */            \
87662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evsubfsmiaaw, EVSUBFSMIAAW, 0x100004CB)                                    \
87762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Subtract Signed, Saturate, Integer to Accumulator Word */          \
87862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evsubfssiaaw, EVSUBFSSIAAW, 0x100004C3)                                    \
87962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Subtract Unsigned, Modulo, Integer to Accumulator Word */          \
88062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evsubfumiaaw, EVSUBFUMIAAW, 0x100004CA)                                    \
88162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Subtract Unsigned, Saturate, Integer to Accumulator Word */        \
88262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evsubfusiaaw, EVSUBFUSIAAW, 0x100004C2)                                    \
88362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Subtract from Word */                                              \
88462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evsubfw, EVSUBFW, 0x10000204)                                              \
88562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Subtract Immediate from Word */                                    \
88662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evsubifw, EVSUBIFW, 0x10000206)                                            \
88762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector XOR */                                                             \
88862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evxor, EVXOR, 0x10000216)                                                  \
88962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Double-Precision Absolute Value */                         \
89062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdabs, EFDABS, 0x100002E4)                                                \
89162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Double-Precision Add */                                    \
89262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdadd, EFDADD, 0x100002E0)                                                \
89362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Double-Precision Convert from Single-Precision */          \
89462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdcfs, EFDCFS, 0x100002EF)                                                \
89562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Convert Floating-Point Double-Precision from Signed Fraction */           \
89662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdcfsf, EFDCFSF, 0x100002F3)                                              \
89762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Convert Floating-Point Double-Precision from Signed Integer */            \
89862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdcfsi, EFDCFSI, 0x100002F1)                                              \
89962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Convert Floating-Point Double-Precision from Signed Integer */            \
90062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Doubleword */                                                             \
90162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdcfsid, EFDCFSID, 0x100002E3)                                            \
90262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Convert Floating-Point Double-Precision from Unsigned Fraction */         \
90362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdcfuf, EFDCFUF, 0x100002F2)                                              \
90462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Convert Floating-Point Double-Precision from Unsigned Integer */          \
90562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdcfui, EFDCFUI, 0x100002F0)                                              \
90662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Convert Floating-Point Double-Precision fromUnsigned Integer */           \
90762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Doubleword */                                                             \
90862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdcfuid, EFDCFUID, 0x100002E2)                                            \
90962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Double-Precision Compare Equal */                          \
91062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdcmpeq, EFDCMPEQ, 0x100002EE)                                            \
91162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Double-Precision Compare Greater Than */                   \
91262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdcmpgt, EFDCMPGT, 0x100002EC)                                            \
91362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Double-Precision Compare Less Than */                      \
91462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdcmplt, EFDCMPLT, 0x100002ED)                                            \
91562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Convert Floating-Point Double-Precision to Signed Fraction */             \
91662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdctsf, EFDCTSF, 0x100002F7)                                              \
91762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Convert Floating-Point Double-Precision to Signed Integer */              \
91862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdctsi, EFDCTSI, 0x100002F5)                                              \
91962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Convert Floating-Point Double-Precision to Signed Integer Doubleword */   \
92062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* with Round toward Zero */                                                 \
92162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdctsidz, EFDCTSIDZ, 0x100002EB)                                          \
92262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Convert Floating-Point Double-Precision to Signed Integer with Round */   \
92362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* toward Zero */                                                            \
92462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdctsiz, EFDCTSIZ, 0x100002FA)                                            \
92562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Convert Floating-Point Double-Precision to Unsigned Fraction */           \
92662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdctuf, EFDCTUF, 0x100002F6)                                              \
92762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Convert Floating-Point Double-Precision to Unsigned Integer */            \
92862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdctui, EFDCTUI, 0x100002F4)                                              \
92962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Convert Floating-Point Double-Precision to Unsigned Integer */            \
93062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Doubleword with Round toward Zero */                                      \
93162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdctuidz, EFDCTUIDZ, 0x100002EA)                                          \
93262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Convert Floating-Point Double-Precision to Unsigned Integer with */       \
93362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Round toward Zero */                                                      \
93462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdctuiz, EFDCTUIZ, 0x100002F8)                                            \
93562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Double-Precision Divide */                                 \
93662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efddiv, EFDDIV, 0x100002E9)                                                \
93762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Double-Precision Multiply */                               \
93862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdmul, EFDMUL, 0x100002E8)                                                \
93962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Double-Precision Negative Absolute Value */                \
94062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdnabs, EFDNABS, 0x100002E5)                                              \
94162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Double-Precision Negate */                                 \
94262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdneg, EFDNEG, 0x100002E6)                                                \
94362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Double-Precision Subtract */                               \
94462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdsub, EFDSUB, 0x100002E1)                                                \
94562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Double-Precision Test Equal */                             \
94662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdtsteq, EFDTSTEQ, 0x100002FE)                                            \
94762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Double-Precision Test Greater Than */                      \
94862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdtstgt, EFDTSTGT, 0x100002FC)                                            \
94962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Double-Precision Test Less Than */                         \
95062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efdtstlt, EFDTSTLT, 0x100002FD)                                            \
95162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Single-Precision Convert from Double-Precision */          \
95262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efscfd, EFSCFD, 0x100002CF)                                                \
95362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Absolute Value */                                          \
95462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efsabs, EFSABS, 0x100002C4)                                                \
95562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Add */                                                     \
95662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efsadd, EFSADD, 0x100002C0)                                                \
95762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Convert Floating-Point from Signed Fraction */                            \
95862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efscfsf, EFSCFSF, 0x100002D3)                                              \
95962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Convert Floating-Point from Signed Integer */                             \
96062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efscfsi, EFSCFSI, 0x100002D1)                                              \
96162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Convert Floating-Point from Unsigned Fraction */                          \
96262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efscfuf, EFSCFUF, 0x100002D2)                                              \
96362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Convert Floating-Point from Unsigned Integer */                           \
96462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efscfui, EFSCFUI, 0x100002D0)                                              \
96562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Compare Equal */                                           \
96662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efscmpeq, EFSCMPEQ, 0x100002CE)                                            \
96762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Compare Greater Than */                                    \
96862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efscmpgt, EFSCMPGT, 0x100002CC)                                            \
96962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Compare Less Than */                                       \
97062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efscmplt, EFSCMPLT, 0x100002CD)                                            \
97162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Convert Floating-Point to Signed Fraction */                              \
97262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efsctsf, EFSCTSF, 0x100002D7)                                              \
97362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Convert Floating-Point to Signed Integer */                               \
97462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efsctsi, EFSCTSI, 0x100002D5)                                              \
97562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Convert Floating-Point to Signed Integer with Round toward Zero */        \
97662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efsctsiz, EFSCTSIZ, 0x100002DA)                                            \
97762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Convert Floating-Point to Unsigned Fraction */                            \
97862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efsctuf, EFSCTUF, 0x100002D6)                                              \
97962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Convert Floating-Point to Unsigned Integer */                             \
98062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efsctui, EFSCTUI, 0x100002D4)                                              \
98162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Convert Floating-Point to Unsigned Integer with Round toward Zero */      \
98262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efsctuiz, EFSCTUIZ, 0x100002D8)                                            \
98362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Divide */                                                  \
98462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efsdiv, EFSDIV, 0x100002C9)                                                \
98562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Multiply */                                                \
98662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efsmul, EFSMUL, 0x100002C8)                                                \
98762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Negative Absolute Value */                                 \
98862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efsnabs, EFSNABS, 0x100002C5)                                              \
98962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Negate */                                                  \
99062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efsneg, EFSNEG, 0x100002C6)                                                \
99162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Subtract */                                                \
99262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efssub, EFSSUB, 0x100002C1)                                                \
99362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Test Equal */                                              \
99462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efststeq, EFSTSTEQ, 0x100002DE)                                            \
99562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Test Greater Than */                                       \
99662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efststgt, EFSTSTGT, 0x100002DC)                                            \
99762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating-Point Test Less Than */                                          \
99862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(efststlt, EFSTSTLT, 0x100002DD)                                            \
99962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Floating-Point Absolute Value */                                   \
100062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evfsabs, EVFSABS, 0x10000284)                                              \
100162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Floating-Point Add */                                              \
100262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evfsadd, EVFSADD, 0x10000280)                                              \
100362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Convert Floating-Point from Signed Fraction */                     \
100462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evfscfsf, EVFSCFSF, 0x10000293)                                            \
100562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Convert Floating-Point from Signed Integer */                      \
100662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evfscfsi, EVFSCFSI, 0x10000291)                                            \
100762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Convert Floating-Point from Unsigned Fraction */                   \
100862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evfscfuf, EVFSCFUF, 0x10000292)                                            \
100962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Convert Floating-Point from Unsigned Integer */                    \
101062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evfscfui, EVFSCFUI, 0x10000290)                                            \
101162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Floating-Point Compare Equal */                                    \
101262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evfscmpeq, EVFSCMPEQ, 0x1000028E)                                          \
101362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Floating-Point Compare Greater Than */                             \
101462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evfscmpgt, EVFSCMPGT, 0x1000028C)                                          \
101562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Floating-Point Compare Less Than */                                \
101662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evfscmplt, EVFSCMPLT, 0x1000028D)                                          \
101762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Convert Floating-Point to Signed Fraction */                       \
101862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evfsctsf, EVFSCTSF, 0x10000297)                                            \
101962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Convert Floating-Point to Signed Integer */                        \
102062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evfsctsi, EVFSCTSI, 0x10000295)                                            \
102162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Convert Floating-Point to Signed Integer with Round toward */      \
102262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Zero */                                                                   \
102362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evfsctsiz, EVFSCTSIZ, 0x1000029A)                                          \
102462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Convert Floating-Point to Unsigned Fraction */                     \
102562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evfsctuf, EVFSCTUF, 0x10000296)                                            \
102662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Convert Floating-Point to Unsigned Integer */                      \
102762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evfsctui, EVFSCTUI, 0x10000294)                                            \
102862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Convert Floating-Point to Unsigned Integer with Round toward */    \
102962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Zero */                                                                   \
103062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evfsctuiz, EVFSCTUIZ, 0x10000298)                                          \
103162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Floating-Point Divide */                                           \
103262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evfsdiv, EVFSDIV, 0x10000289)                                              \
103362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Floating-Point Multiply */                                         \
103462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evfsmul, EVFSMUL, 0x10000288)                                              \
103562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Floating-Point Negative Absolute Value */                          \
103662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evfsnabs, EVFSNABS, 0x10000285)                                            \
103762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Floating-Point Negate */                                           \
103862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evfsneg, EVFSNEG, 0x10000286)                                              \
103962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Floating-Point Subtract */                                         \
104062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evfssub, EVFSSUB, 0x10000281)                                              \
104162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Floating-Point Test Equal */                                       \
104262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evfststeq, EVFSTSTEQ, 0x1000029E)                                          \
104362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Floating-Point Test Greater Than */                                \
104462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evfststgt, EVFSTSTGT, 0x1000029C)                                          \
104562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Floating-Point Test Less Than */                                   \
104662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evfststlt, EVFSTSTLT, 0x1000029D)
104762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
104862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_VC_OPCODE_LIST(V)                                                  \
104962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Compare Bounds Single-Precision */                                 \
105062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vcmpbfp, VCMPBFP, 0x100003C6)                                              \
105162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Compare Equal To Single-Precision */                               \
105262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vcmpeqfp, VCMPEQFP, 0x100000C6)                                            \
105362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Compare Equal To Unsigned Byte */                                  \
105462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vcmpequb, VCMPEQUB, 0x10000006)                                            \
105562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Compare Equal To Unsigned Doubleword */                            \
105662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vcmpequd, VCMPEQUD, 0x100000C7)                                            \
105762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Compare Equal To Unsigned Halfword */                              \
105862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vcmpequh, VCMPEQUH, 0x10000046)                                            \
105962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Compare Equal To Unsigned Word */                                  \
106062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vcmpequw, VCMPEQUW, 0x10000086)                                            \
106162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Compare Greater Than or Equal To Single-Precision */               \
106262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vcmpgefp, VCMPGEFP, 0x100001C6)                                            \
106362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Compare Greater Than Single-Precision */                           \
106462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vcmpgtfp, VCMPGTFP, 0x100002C6)                                            \
106562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Compare Greater Than Signed Byte */                                \
106662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vcmpgtsb, VCMPGTSB, 0x10000306)                                            \
106762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Compare Greater Than Signed Doubleword */                          \
106862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vcmpgtsd, VCMPGTSD, 0x100003C7)                                            \
106962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Compare Greater Than Signed Halfword */                            \
107062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vcmpgtsh, VCMPGTSH, 0x10000346)                                            \
107162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Compare Greater Than Signed Word */                                \
107262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vcmpgtsw, VCMPGTSW, 0x10000386)                                            \
107362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Compare Greater Than Unsigned Byte */                              \
107462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vcmpgtub, VCMPGTUB, 0x10000206)                                            \
107562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Compare Greater Than Unsigned Doubleword */                        \
107662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vcmpgtud, VCMPGTUD, 0x100002C7)                                            \
107762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Compare Greater Than Unsigned Halfword */                          \
107862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vcmpgtuh, VCMPGTUH, 0x10000246)                                            \
107962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Compare Greater Than Unsigned Word */                              \
108062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vcmpgtuw, VCMPGTUW, 0x10000286)
108162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
108262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_X_OPCODE_LIST(V)                                                   \
108362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Bit Permute Doubleword */                                                 \
108462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(bpermd, BPERMD, 0x7C0001F8)                                                \
108562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Count Leading Zeros Doubleword */                                         \
108662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(cntlzd, CNTLZDX, 0x7C000074)                                               \
108762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Extend Sign Word */                                                       \
108862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(extsw, EXTSW, 0x7C0007B4)                                                  \
108962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Doubleword And Reserve Indexed */                                    \
109062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(ldarx, LDARX, 0x7C0000A8)                                                  \
109162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Doubleword Byte-Reverse Indexed */                                   \
109262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(ldbrx, LDBRX, 0x7C000428)                                                  \
109362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Doubleword with Update Indexed */                                    \
109462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(ldux, LDUX, 0x7C00006A)                                                    \
109562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Doubleword Indexed */                                                \
109662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(ldx, LDX, 0x7C00002A)                                                      \
109762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Word Algebraic with Update Indexed */                                \
109862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lwaux, LWAUX, 0x7C0002EA)                                                  \
109962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Word Algebraic Indexed */                                            \
110062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lwax, LWAX, 0x7C0002AA)                                                    \
110162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Modulo Signed Dword */                                                    \
110262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(modsd, MODSD, 0x7C000612)                                                  \
110362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /*  Modulo Unsigned Dword */                                                 \
110462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(modud, MODUD, 0x7C000212)                                                  \
110562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Population Count Doubleword */                                            \
110662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(popcntd, POPCNTD, 0x7C0003F4)                                              \
110762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Parity Doubleword */                                                      \
110862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(prtyd, PRTYD, 0x7C000174)                                                  \
110962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Shift Left Doubleword */                                                  \
111062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(sld, SLDX, 0x7C000036)                                                     \
111162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Shift Right Algebraic Doubleword */                                       \
111262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(srad, SRAD, 0x7C000634)                                                    \
111362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Shift Right Doubleword */                                                 \
111462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(srd, SRDX, 0x7C000436)                                                     \
111562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Doubleword Byte-Reverse Indexed */                                  \
111662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stdbrx, STDBRX, 0x7C000528)                                                \
111762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Doubleword Conditional Indexed & record CR0 */                      \
111862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stdcx, STDCX, 0x7C0001AD)                                                  \
111962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Doubleword with Update Indexed */                                   \
112062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stdux, STDUX, 0x7C00016A)                                                  \
112162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Doubleword Indexed */                                               \
112262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stdx, STDX, 0x7C00012A)                                                    \
112362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Trap Doubleword */                                                        \
112462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(td, TD, 0x7C000088)                                                        \
112562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* AND */                                                                    \
112662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(andx, ANDX, 0x7C000038)                                                    \
112762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* AND with Complement */                                                    \
112862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(andc, ANDCX, 0x7C000078)                                                   \
112962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Branch Conditional to Branch Target Address Register */                   \
113062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(bctar, BCTAR, 0x4C000460)                                                  \
113162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Compare */                                                                \
113262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(cmp, CMP, 0x7C000000)                                                      \
113362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Compare Byte */                                                           \
113462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(cmpb, CMPB, 0x7C0003F8)                                                    \
113562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Compare Logical */                                                        \
113662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(cmpl, CMPL, 0x7C000040)                                                    \
113762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Count Leading Zeros Word */                                               \
113862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(cntlzw, CNTLZWX, 0x7C000034)                                               \
113962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Data Cache Block Flush */                                                 \
114062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dcbf, DCBF, 0x7C0000AC)                                                    \
114162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Data Cache Block Store */                                                 \
114262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dcbst, DCBST, 0x7C00006C)                                                  \
114362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Data Cache Block Touch */                                                 \
114462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dcbt, DCBT, 0x7C00022C)                                                    \
114562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Data Cache Block Touch for Store */                                       \
114662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dcbtst, DCBTST, 0x7C0001EC)                                                \
114762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Data Cache Block Zero */                                                  \
114862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dcbz, DCBZ, 0x7C0007EC)                                                    \
114962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Equivalent */                                                             \
115062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(eqv, EQV, 0x7C000238)                                                      \
115162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Extend Sign Byte */                                                       \
115262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(extsb, EXTSB, 0x7C000774)                                                  \
115362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Extend Sign Halfword */                                                   \
115462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(extsh, EXTSH, 0x7C000734)                                                  \
115562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Instruction Cache Block Invalidate */                                     \
115662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(icbi, ICBI, 0x7C0007AC)                                                    \
115762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Byte And Reserve Indexed */                                          \
115862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lbarx, LBARX, 0x7C000068)                                                  \
115962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Byte and Zero with Update Indexed */                                 \
116062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lbzux, LBZUX, 0x7C0000EE)                                                  \
116162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Byte and Zero Indexed */                                             \
116262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lbzx, LBZX, 0x7C0000AE)                                                    \
116362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Halfword And Reserve Indexed Xform */                                \
116462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lharx, LHARX, 0x7C0000E8)                                                  \
116562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Halfword Algebraic with Update Indexed */                            \
116662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lhaux, LHAUX, 0x7C0002EE)                                                  \
116762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Halfword Algebraic Indexed */                                        \
116862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lhax, LHAX, 0x7C0002AE)                                                    \
116962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Halfword Byte-Reverse Indexed */                                     \
117062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lhbrx, LHBRX, 0x7C00062C)                                                  \
117162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Halfword and Zero with Update Indexed */                             \
117262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lhzux, LHZUX, 0x7C00026E)                                                  \
117362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Halfword and Zero Indexed */                                         \
117462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lhzx, LHZX, 0x7C00022E)                                                    \
117562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Word and Reserve Indexed */                                          \
117662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lwarx, LWARX, 0x7C000028)                                                  \
117762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Word Byte-Reverse Indexed */                                         \
117862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lwbrx, LWBRX, 0x7C00042C)                                                  \
117962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Word and Zero with Update Indexed */                                 \
118062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lwzux, LWZUX, 0x7C00006E)                                                  \
118162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Word and Zero Indexed */                                             \
118262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lwzx, LWZX, 0x7C00002E)                                                    \
118362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Modulo Signed Word */                                                     \
118462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mods, MODSW, 0x7C000616)                                                   \
118562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Modulo Unsigned Word */                                                   \
118662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(moduw, MODUW, 0x7C000216)                                                  \
118762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* NAND */                                                                   \
118862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(nand, NAND, 0x7C0003B8)                                                    \
118962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* NOR */                                                                    \
119062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(nor, NORX, 0x7C0000F8)                                                     \
119162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* OR */                                                                     \
119262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(orx, ORX, 0x7C000378)                                                      \
119362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* OR with Complement */                                                     \
119462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(orc, ORC, 0x7C000338)                                                      \
119562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Population Count Byte-wise */                                             \
119662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(popcntb, POPCNTB, 0x7C0000F4)                                              \
119762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Population Count Words */                                                 \
119862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(popcntw, POPCNTW, 0x7C0002F4)                                              \
119962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Parity Word */                                                            \
120062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(prtyw, PRTYW, 0x7C000134)                                                  \
120162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Shift Left Word */                                                        \
120262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(slw, SLWX, 0x7C000030)                                                     \
120362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Shift Right Algebraic Word */                                             \
120462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(sraw, SRAW, 0x7C000630)                                                    \
120562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Shift Right Algebraic Word Immediate */                                   \
120662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(srawi, SRAWIX, 0x7C000670)                                                 \
120762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Shift Right Word */                                                       \
120862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(srw, SRWX, 0x7C000430)                                                     \
120962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Byte Conditional Indexed */                                         \
121062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stbcx, STBCX, 0x7C00056D)                                                  \
121162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Byte with Update Indexed */                                         \
121262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stbux, STBUX, 0x7C0001EE)                                                  \
121362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Byte Indexed */                                                     \
121462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stbx, STBX, 0x7C0001AE)                                                    \
121562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Halfword Byte-Reverse Indexed */                                    \
121662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(sthbrx, STHBRX, 0x7C00072C)                                                \
121762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Halfword Conditional Indexed Xform */                               \
121862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(sthcx, STHCX, 0x7C0005AD)                                                  \
121962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Halfword with Update Indexed */                                     \
122062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(sthux, STHUX, 0x7C00036E)                                                  \
122162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Halfword Indexed */                                                 \
122262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(sthx, STHX, 0x7C00032E)                                                    \
122362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Word Byte-Reverse Indexed */                                        \
122462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stwbrx, STWBRX, 0x7C00052C)                                                \
122562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Word Conditional Indexed & record CR0 */                            \
122662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stwcx, STWCX, 0x7C00012D)                                                  \
122762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Word with Update Indexed */                                         \
122862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stwux, STWUX, 0x7C00016E)                                                  \
122962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Word Indexed */                                                     \
123062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stwx, STWX, 0x7C00012E)                                                    \
123162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Synchronize */                                                            \
123262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(sync, SYNC, 0x7C0004AC)                                                    \
123362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Trap Word */                                                              \
123462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(tw, TW, 0x7C000008)                                                        \
123562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* ExecuExecuted No Operation */                                             \
123662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xnop, XNOP, 0x68000000)                                                    \
123762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* XOR */                                                                    \
123862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xorx, XORX, 0x7C000278)                                                    \
123962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Convert Binary Coded Decimal To Declets */                                \
124062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(cbcdtd, CBCDTD, 0x7C000274)                                                \
124162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Convert Declets To Binary Coded Decimal */                                \
124262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(cdtbcd, CDTBCD, 0x7C000234)                                                \
124362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Add */                                                   \
124462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dadd, DADD, 0xEC000004)                                                    \
124562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Add Quad */                                              \
124662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(daddq, DADDQ, 0xFC000004)                                                  \
124762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Convert From Fixed */                                    \
124862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dcffix, DCFFIX, 0xEC000644)                                                \
124962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Convert From Fixed Quad */                               \
125062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dcffixq, DCFFIXQ, 0xFC000644)                                              \
125162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Compare Ordered */                                       \
125262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dcmpo, DCMPO, 0xEC000104)                                                  \
125362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Compare Ordered Quad */                                  \
125462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dcmpoq, DCMPOQ, 0xFC000104)                                                \
125562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Compare Unordered */                                     \
125662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dcmpu, DCMPU, 0xEC000504)                                                  \
125762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Compare Unordered Quad */                                \
125862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dcmpuq, DCMPUQ, 0xFC000504)                                                \
125962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Convert To DFP Long */                                   \
126062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dctdp, DCTDP, 0xEC000204)                                                  \
126162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Convert To Fixed */                                      \
126262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dctfix, DCTFIX, 0xEC000244)                                                \
126362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Convert To Fixed Quad */                                 \
126462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dctfixq, DCTFIXQ, 0xFC000244)                                              \
126562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Convert To DFP Extended */                               \
126662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dctqpq, DCTQPQ, 0xFC000204)                                                \
126762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Decode DPD To BCD */                                     \
126862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(ddedpd, DDEDPD, 0xEC000284)                                                \
126962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Decode DPD To BCD Quad */                                \
127062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(ddedpdq, DDEDPDQ, 0xFC000284)                                              \
127162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Divide */                                                \
127262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(ddiv, DDIV, 0xEC000444)                                                    \
127362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Divide Quad */                                           \
127462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(ddivq, DDIVQ, 0xFC000444)                                                  \
127562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Encode BCD To DPD */                                     \
127662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(denbcd, DENBCD, 0xEC000684)                                                \
127762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Encode BCD To DPD Quad */                                \
127862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(denbcdq, DENBCDQ, 0xFC000684)                                              \
127962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Insert Exponent */                                       \
128062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(diex, DIEX, 0xEC0006C4)                                                    \
128162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Insert Exponent Quad */                                  \
128262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(diexq, DIEXQ, 0xFC0006C4)                                                  \
128362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Multiply */                                              \
128462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dmul, DMUL, 0xEC000044)                                                    \
128562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Multiply Quad */                                         \
128662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dmulq, DMULQ, 0xFC000044)                                                  \
128762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Round To DFP Long */                                     \
128862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(drdpq, DRDPQ, 0xFC000604)                                                  \
128962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Round To DFP Short */                                    \
129062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(drsp, DRSP, 0xEC000604)                                                    \
129162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Subtract */                                              \
129262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dsub, DSUB, 0xEC000404)                                                    \
129362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Subtract Quad */                                         \
129462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dsubq, DSUBQ, 0xFC000404)                                                  \
129562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Test Exponent */                                         \
129662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dtstex, DTSTEX, 0xEC000144)                                                \
129762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Test Exponent Quad */                                    \
129862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dtstexq, DTSTEXQ, 0xFC000144)                                              \
129962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Test Significance */                                     \
130062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dtstsf, DTSTSF, 0xEC000544)                                                \
130162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Test Significance Quad */                                \
130262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dtstsfq, DTSTSFQ, 0xFC000544)                                              \
130362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Extract Exponent */                                      \
130462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dxex, DXEX, 0xEC0002C4)                                                    \
130562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Floating Extract Exponent Quad */                                 \
130662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dxexq, DXEXQ, 0xFC0002C4)                                                  \
130762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decorated Storage Notify */                                               \
130862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dsn, DSN, 0x7C0003C6)                                                      \
130962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Byte with Decoration Indexed */                                      \
131062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lbdx, LBDX, 0x7C000406)                                                    \
131162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Doubleword with Decoration Indexed */                                \
131262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lddx, LDDX, 0x7C0004C6)                                                    \
131362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Floating Doubleword with Decoration Indexed */                       \
131462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lfddx, LFDDX, 0x7C000646)                                                  \
131562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Halfword with Decoration Indexed */                                  \
131662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lhdx, LHDX, 0x7C000446)                                                    \
131762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Word with Decoration Indexed */                                      \
131862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lwdx, LWDX, 0x7C000486)                                                    \
131962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Byte with Decoration Indexed */                                     \
132062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stbdx, STBDX, 0x7C000506)                                                  \
132162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Doubleword with Decoration Indexed */                               \
132262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stddx, STDDX, 0x7C0005C6)                                                  \
132362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Floating Doubleword with Decoration Indexed */                      \
132462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stfddx, STFDDX, 0x7C000746)                                                \
132562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Halfword with Decoration Indexed */                                 \
132662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(sthdx, STHDX, 0x7C000546)                                                  \
132762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Word with Decoration Indexed */                                     \
132862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stwdx, STWDX, 0x7C000586)                                                  \
132962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Data Cache Block Allocate */                                              \
133062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dcba, DCBA, 0x7C0005EC)                                                    \
133162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Data Cache Block Invalidate */                                            \
133262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dcbi, DCBI, 0x7C0003AC)                                                    \
133362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Instruction Cache Block Touch */                                          \
133462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(icbt, ICBT, 0x7C00002C)                                                    \
133562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Memory Barrier */                                                         \
133662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mbar, MBAR, 0x7C0006AC)                                                    \
133762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move to Condition Register from XER */                                    \
133862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mcrxr, MCRXR, 0x7C000400)                                                  \
133962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* TLB Invalidate Local Indexed */                                           \
134062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(tlbilx, TLBILX, 0x7C000024)                                                \
134162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* TLB Invalidate Virtual Address Indexed */                                 \
134262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(tlbivax, TLBIVAX, 0x7C000624)                                              \
134362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* TLB Read Entry */                                                         \
134462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(tlbre, TLBRE, 0x7C000764)                                                  \
134562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* TLB Search Indexed */                                                     \
134662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(tlbsx, TLBSX, 0x7C000724)                                                  \
134762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* TLB Write Entry */                                                        \
134862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(tlbwe, TLBWE, 0x7C0007A4)                                                  \
134962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Write External Enable */                                                  \
135062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(wrtee, WRTEE, 0x7C000106)                                                  \
135162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Write External Enable Immediate */                                        \
135262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(wrteei, WRTEEI, 0x7C000146)                                                \
135362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Data Cache Read */                                                        \
135462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dcread, DCREAD, 0x7C00028C)                                                \
135562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Instruction Cache Read */                                                 \
135662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(icread, ICREAD, 0x7C0007CC)                                                \
135762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Data Cache Invalidate */                                                  \
135862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dci, DCI, 0x7C00038C)                                                      \
135962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Instruction Cache Invalidate */                                           \
136062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(ici, ICI, 0x7C00078C)                                                      \
136162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move From Device Control Register User Mode Indexed */                    \
136262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mfdcrux, MFDCRUX, 0x7C000246)                                              \
136362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move From Device Control Register Indexed */                              \
136462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mfdcrx, MFDCRX, 0x7C000206)                                                \
136562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move To Device Control Register User Mode Indexed */                      \
136662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mtdcrux, MTDCRUX, 0x7C000346)                                              \
136762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move To Device Control Register Indexed */                                \
136862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mtdcrx, MTDCRX, 0x7C000306)                                                \
136962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Return From Debug Interrupt */                                            \
137062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(rfdi, RFDI, 0x4C00004E)                                                    \
137162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Data Cache Block Flush by External PID */                                 \
137262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dcbfep, DCBFEP, 0x7C0000FE)                                                \
137362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Data Cache Block Store by External PID */                                 \
137462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dcbstep, DCBSTEP, 0x7C00007E)                                              \
137562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Data Cache Block Touch by External PID */                                 \
137662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dcbtep, DCBTEP, 0x7C00027E)                                                \
137762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Data Cache Block Touch for Store by External PID */                       \
137862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dcbtstep, DCBTSTEP, 0x7C0001FE)                                            \
137962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Data Cache Block Zero by External PID */                                  \
138062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dcbzep, DCBZEP, 0x7C0007FE)                                                \
138162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Instruction Cache Block Invalidate by External PID */                     \
138262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(icbiep, ICBIEP, 0x7C0007BE)                                                \
138362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Byte and Zero by External PID Indexed */                             \
138462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lbepx, LBEPX, 0x7C0000BE)                                                  \
138562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Floating-Point Double by External PID Indexed */                     \
138662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lfdepx, LFDEPX, 0x7C0004BE)                                                \
138762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Halfword and Zero by External PID Indexed */                         \
138862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lhepx, LHEPX, 0x7C00023E)                                                  \
138962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Vector by External PID Indexed */                                    \
139062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lvepx, LVEPX, 0x7C00024E)                                                  \
139162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Vector by External PID Indexed Last */                               \
139262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lvepxl, LVEPXL, 0x7C00020E)                                                \
139362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Word and Zero by External PID Indexed */                             \
139462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lwepx, LWEPX, 0x7C00003E)                                                  \
139562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Byte by External PID Indexed */                                     \
139662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stbepx, STBEPX, 0x7C0001BE)                                                \
139762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Floating-Point Double by External PID Indexed */                    \
139862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stfdepx, STFDEPX, 0x7C0005BE)                                              \
139962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Halfword by External PID Indexed */                                 \
140062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(sthepx, STHEPX, 0x7C00033E)                                                \
140162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Vector by External PID Indexed */                                   \
140262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stvepx, STVEPX, 0x7C00064E)                                                \
140362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Vector by External PID Indexed Last */                              \
140462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stvepxl, STVEPXL, 0x7C00060E)                                              \
140562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Word by External PID Indexed */                                     \
140662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stwepx, STWEPX, 0x7C00013E)                                                \
140762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Doubleword by External PID Indexed */                                \
140862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(ldepx, LDEPX, 0x7C00003A)                                                  \
140962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Doubleword by External PID Indexed */                               \
141062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stdepx, STDEPX, 0x7C00013A)                                                \
141162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* TLB Search and Reserve Indexed */                                         \
141262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(tlbsrx, TLBSRX, 0x7C0006A5)                                                \
141362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* External Control In Word Indexed */                                       \
141462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(eciwx, ECIWX, 0x7C00026C)                                                  \
141562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* External Control Out Word Indexed */                                      \
141662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(ecowx, ECOWX, 0x7C00036C)                                                  \
141762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Data Cache Block Lock Clear */                                            \
141862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dcblc, DCBLC, 0x7C00030C)                                                  \
141962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Data Cache Block Lock Query */                                            \
142062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dcblq, DCBLQ, 0x7C00034D)                                                  \
142162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Data Cache Block Touch and Lock Set */                                    \
142262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dcbtls, DCBTLS, 0x7C00014C)                                                \
142362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Data Cache Block Touch for Store and Lock Set */                          \
142462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dcbtstls, DCBTSTLS, 0x7C00010C)                                            \
142562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Instruction Cache Block Lock Clear */                                     \
142662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(icblc, ICBLC, 0x7C0001CC)                                                  \
142762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Instruction Cache Block Lock Query */                                     \
142862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(icblq, ICBLQ, 0x7C00018D)                                                  \
142962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Instruction Cache Block Touch and Lock Set */                             \
143062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(icbtls, ICBTLS, 0x7C0003CC)                                                \
143162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Compare Ordered */                                               \
143262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fcmpo, FCMPO, 0xFC000040)                                                  \
143362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Compare Unordered */                                             \
143462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fcmpu, FCMPU, 0xFC000000)                                                  \
143562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Test for software Divide */                                      \
143662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(ftdiv, FTDIV, 0xFC000100)                                                  \
143762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Test for software Square Root */                                 \
143862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(ftsqrt, FTSQRT, 0xFC000140)                                                \
143962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Floating-Point Double with Update Indexed */                         \
144062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lfdux, LFDUX, 0x7C0004EE)                                                  \
144162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Floating-Point Double Indexed */                                     \
144262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lfdx, LFDX, 0x7C0004AE)                                                    \
144362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Floating-Point as Integer Word Algebraic Indexed */                  \
144462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lfiwax, LFIWAX, 0x7C0006AE)                                                \
144562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Floating-Point as Integer Word and Zero Indexed */                   \
144662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lfiwzx, LFIWZX, 0x7C0006EE)                                                \
144762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Floating-Point Single with Update Indexed */                         \
144862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lfsux, LFSUX, 0x7C00046E)                                                  \
144962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Floating-Point Single Indexed */                                     \
145062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lfsx, LFSX, 0x7C00042E)                                                    \
145162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move To Condition Register from FPSCR */                                  \
145262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mcrfs, MCRFS, 0xFC000080)                                                  \
145362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Floating-Point Double with Update Indexed */                        \
145462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stfdux, STFDUX, 0x7C0005EE)                                                \
145562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Floating-Point Double Indexed */                                    \
145662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stfdx, STFDX, 0x7C0005AE)                                                  \
145762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Floating-Point as Integer Word Indexed */                           \
145862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stfiwx, STFIWX, 0x7C0007AE)                                                \
145962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Floating-Point Single with Update Indexed */                        \
146062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stfsux, STFSUX, 0x7C00056E)                                                \
146162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Floating-Point Single Indexed */                                    \
146262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stfsx, STFSX, 0x7C00052E)                                                  \
146362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Floating-Point Double Pair Indexed */                                \
146462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lfdpx, LFDPX, 0x7C00062E)                                                  \
146562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Floating-Point Double Pair Indexed */                               \
146662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stfdpx, STFDPX, 0x7C00072E)                                                \
146762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Absolute Value */                                                \
146862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fabs, FABS, 0xFC000210)                                                    \
146962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Convert From Integer Doubleword */                               \
147062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fcfid, FCFID, 0xFC00069C)                                                  \
147162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Convert From Integer Doubleword Single */                        \
147262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fcfids, FCFIDS, 0xEC00069C)                                                \
147362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Convert From Integer Doubleword Unsigned */                      \
147462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fcfidu, FCFIDU, 0xFC00079C)                                                \
147562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Convert From Integer Doubleword Unsigned Single */               \
147662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fcfidus, FCFIDUS, 0xEC00079C)                                              \
147762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Copy Sign */                                                     \
147862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fcpsgn, FCPSGN, 0xFC000010)                                                \
147962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Convert To Integer Doubleword */                                 \
148062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fctid, FCTID, 0xFC00065C)                                                  \
148162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Convert To Integer Doubleword Unsigned */                        \
148262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fctidu, FCTIDU, 0xFC00075C)                                                \
148362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Convert To Integer Doubleword Unsigned with round toward */      \
148462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Zero */                                                                   \
148562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fctiduz, FCTIDUZ, 0xFC00075E)                                              \
148662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Convert To Integer Doubleword with round toward Zero */          \
148762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fctidz, FCTIDZ, 0xFC00065E)                                                \
148862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Convert To Integer Word */                                       \
148962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fctiw, FCTIW, 0xFC00001C)                                                  \
149062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Convert To Integer Word Unsigned */                              \
149162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fctiwu, FCTIWU, 0xFC00011C)                                                \
149262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Convert To Integer Word Unsigned with round toward Zero */       \
149362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fctiwuz, FCTIWUZ, 0xFC00011E)                                              \
149462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Convert To Integer Word with round to Zero */                    \
149562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fctiwz, FCTIWZ, 0xFC00001E)                                                \
149662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Move Register */                                                 \
149762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fmr, FMR, 0xFC000090)                                                      \
149862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Negative Absolute Value */                                       \
149962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fnabs, FNABS, 0xFC000110)                                                  \
150062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Negate */                                                        \
150162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fneg, FNEG, 0xFC000050)                                                    \
150262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Round to Single-Precision */                                     \
150362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(frsp, FRSP, 0xFC000018)                                                    \
150462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move From FPSCR */                                                        \
150562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mffs, MFFS, 0xFC00048E)                                                    \
150662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move To FPSCR Bit 0 */                                                    \
150762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mtfsb0, MTFSB0, 0xFC00008C)                                                \
150862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move To FPSCR Bit 1 */                                                    \
150962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mtfsb1, MTFSB1, 0xFC00004C)                                                \
151062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move To FPSCR Field Immediate */                                          \
151162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mtfsfi, MTFSFI, 0xFC00010C)                                                \
151262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Round To Integer Minus */                                        \
151362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(frim, FRIM, 0xFC0003D0)                                                    \
151462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Round To Integer Nearest */                                      \
151562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(frin, FRIN, 0xFC000310)                                                    \
151662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Round To Integer Plus */                                         \
151762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(frip, FRIP, 0xFC000390)                                                    \
151862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Round To Integer toward Zero */                                  \
151962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(friz, FRIZ, 0xFC000350)                                                    \
152062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Cross Halfword to Word Signed */                                 \
152162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mulchw, MULCHW, 0x10000150)                                                \
152262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Cross Halfword to Word Unsigned */                               \
152362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mulchwu, MULCHWU, 0x10000110)                                              \
152462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply High Halfword to Word Signed */                                  \
152562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mulhhw, MULHHW, 0x10000050)                                                \
152662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply High Halfword to Word Unsigned */                                \
152762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mulhhwu, MULHHWU, 0x10000010)                                              \
152862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Low Halfword to Word Signed */                                   \
152962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mullhw, MULLHW, 0x10000350)                                                \
153062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Low Halfword to Word Unsigned */                                 \
153162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mullhwu, MULLHWU, 0x10000310)                                              \
153262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Determine Leftmost Zero Byte DQ 56 E0000000 P 58 LSQ lq Load Quadword */  \
153362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dlmzb, DLMZB, 0x7C00009C)                                                  \
153462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Quadword And Reserve Indexed */                                      \
153562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lqarx, LQARX, 0x7C000228)                                                  \
153662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Quadword Conditional Indexed and record CR0 */                      \
153762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stqcx, STQCX, 0x7C00016D)                                                  \
153862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load String Word Immediate */                                             \
153962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lswi, LSWI, 0x7C0004AA)                                                    \
154062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load String Word Indexed */                                               \
154162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lswx, LSWX, 0x7C00042A)                                                    \
154262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store String Word Immediate */                                            \
154362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stswi, STSWI, 0x7C0005AA)                                                  \
154462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store String Word Indexed */                                              \
154562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stswx, STSWX, 0x7C00052A)                                                  \
154662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Clear BHRB */                                                             \
154762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(clrbhrb, CLRBHRB, 0x7C00035C)                                              \
154862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Enforce In-order Execution of I/O */                                      \
154962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(eieio, EIEIO, 0x7C0006AC)                                                  \
155062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Byte and Zero Caching Inhibited Indexed */                           \
155162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lbzcix, LBZCIX, 0x7C0006AA)                                                \
155262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Doubleword Caching Inhibited Indexed */                              \
155362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(ldcix, LDCIX, 0x7C0006EA)                                                  \
155462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Halfword and Zero Caching Inhibited Indexed */                       \
155562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lhzcix, LHZCIX, 0x7C00066A)                                                \
155662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Word and Zero Caching Inhibited Indexed */                           \
155762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lwzcix, LWZCIX, 0x7C00062A)                                                \
155862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move From Segment Register */                                             \
155962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mfsr, MFSR, 0x7C0004A6)                                                    \
156062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move From Segment Register Indirect */                                    \
156162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mfsrin, MFSRIN, 0x7C000526)                                                \
156262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move To Machine State Register Doubleword */                              \
156362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mtmsrd, MTMSRD, 0x7C000164)                                                \
156462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move To Split Little Endian */                                            \
156562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mtsle, MTSLE, 0x7C000126)                                                  \
156662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move To Segment Register */                                               \
156762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mtsr, MTSR, 0x7C0001A4)                                                    \
156862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move To Segment Register Indirect */                                      \
156962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mtsrin, MTSRIN, 0x7C0001E4)                                                \
157062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* SLB Find Entry ESID */                                                    \
157162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(slbfee, SLBFEE, 0x7C0007A7)                                                \
157262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* SLB Invalidate All */                                                     \
157362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(slbia, SLBIA, 0x7C0003E4)                                                  \
157462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* SLB Invalidate Entry */                                                   \
157562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(slbie, SLBIE, 0x7C000364)                                                  \
157662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* SLB Move From Entry ESID */                                               \
157762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(slbmfee, SLBMFEE, 0x7C000726)                                              \
157862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* SLB Move From Entry VSID */                                               \
157962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(slbmfev, SLBMFEV, 0x7C0006A6)                                              \
158062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* SLB Move To Entry */                                                      \
158162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(slbmte, SLBMTE, 0x7C000324)                                                \
158262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Byte Caching Inhibited Indexed */                                   \
158362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stbcix, STBCIX, 0x7C0007AA)                                                \
158462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Doubleword Caching Inhibited Indexed */                             \
158562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stdcix, STDCIX, 0x7C0007EA)                                                \
158662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Halfword and Zero Caching Inhibited Indexed */                      \
158762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(sthcix, STHCIX, 0x7C00076A)                                                \
158862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Word and Zero Caching Inhibited Indexed */                          \
158962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stwcix, STWCIX, 0x7C00072A)                                                \
159062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* TLB Invalidate All */                                                     \
159162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(tlbia, TLBIA, 0x7C0002E4)                                                  \
159262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* TLB Invalidate Entry */                                                   \
159362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(tlbie, TLBIE, 0x7C000264)                                                  \
159462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* TLB Invalidate Entry Local */                                             \
159562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(tlbiel, TLBIEL, 0x7C000224)                                                \
159662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Message Clear Privileged */                                               \
159762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(msgclrp, MSGCLRP, 0x7C00015C)                                              \
159862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Message Send Privileged */                                                \
159962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(msgsndp, MSGSNDP, 0x7C00011C)                                              \
160062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Message Clear */                                                          \
160162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(msgclr, MSGCLR, 0x7C0001DC)                                                \
160262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Message Send */                                                           \
160362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(msgsnd, MSGSND, 0x7C00019C)                                                \
160462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move From Machine State Register */                                       \
160562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mfmsr, MFMSR, 0x7C0000A6)                                                  \
160662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move To Machine State Register */                                         \
160762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mtmsr, MTMSR, 0x7C000124)                                                  \
160862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* TLB Synchronize */                                                        \
160962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(tlbsync, TLBSYNC, 0x7C00046C)                                              \
161062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Transaction Abort */                                                      \
161162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(tabort, TABORT, 0x7C00071D)                                                \
161262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Transaction Abort Doubleword Conditional */                               \
161362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(tabortdc, TABORTDC, 0x7C00065D)                                            \
161462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Transaction Abort Doubleword Conditional Immediate */                     \
161562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(tabortdci, TABORTDCI, 0x7C0006DD)                                          \
161662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Transaction Abort Word Conditional */                                     \
161762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(tabortwc, TABORTWC, 0x7C00061D)                                            \
161862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Transaction Abort Word Conditional Immediate */                           \
161962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(tabortwci, TABORTWCI, 0x7C00069D)                                          \
162062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Transaction Begin */                                                      \
162162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(tbegin, TBEGIN, 0x7C00051D)                                                \
162262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Transaction Check */                                                      \
162362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(tcheck, TCHECK, 0x7C00059C)                                                \
162462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Transaction End */                                                        \
162562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(tend, TEND, 0x7C00055C)                                                    \
162662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Transaction Recheckpoint */                                               \
162762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(trechkpt, TRECHKPT, 0x7C0007DD)                                            \
162862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Transaction Reclaim */                                                    \
162962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(treclaim, TRECLAIM, 0x7C00075D)                                            \
163062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Transaction Suspend or Resume */                                          \
163162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(tsr, TSR, 0x7C0005DC)                                                      \
163262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Vector Element Byte Indexed */                                       \
163362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lvebx, LVEBX, 0x7C00000E)                                                  \
163462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Vector Element Halfword Indexed */                                   \
163562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lvehx, LVEHX, 0x7C00004E)                                                  \
163662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Vector Element Word Indexed */                                       \
163762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lvewx, LVEWX, 0x7C00008E)                                                  \
163862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Vector for Shift Left */                                             \
163962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lvsl, LVSL, 0x7C00000C)                                                    \
164062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Vector for Shift Right */                                            \
164162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lvsr, LVSR, 0x7C00004C)                                                    \
164262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Vector Indexed */                                                    \
164362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lvx, LVX, 0x7C0000CE)                                                      \
164462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Vector Indexed Last */                                               \
164562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lvxl, LVXL, 0x7C0002CE)                                                    \
164662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Vector Element Byte Indexed */                                      \
164762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stvebx, STVEBX, 0x7C00010E)                                                \
164862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Vector Element Halfword Indexed */                                  \
164962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stvehx, STVEHX, 0x7C00014E)                                                \
165062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Vector Element Word Indexed */                                      \
165162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stvewx, STVEWX, 0x7C00018E)                                                \
165262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Vector Indexed */                                                   \
165362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stvx, STVX, 0x7C0001CE)                                                    \
165462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Vector Indexed Last */                                              \
165562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stvxl, STVXL, 0x7C0003CE)                                                  \
165662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Minimum Signed Doubleword */                                       \
165762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vminsd, VMINSD, 0x100003C2)                                                \
165862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Merge Even Word */                                               \
165962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fmrgew, FMRGEW, 0xFC00078C)                                                \
166062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Merge Odd Word */                                                \
166162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fmrgow, FMRGOW, 0xFC00068C)                                                \
166262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Wait for Interrupt */                                                     \
166362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(wait, WAIT, 0x7C00007C)
166462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
166562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_EVS_OPCODE_LIST(V)                                                 \
166662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Select */                                                          \
166762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(evsel, EVSEL, 0x10000278)
166862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
166962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_DS_OPCODE_LIST(V)                                                  \
167062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Doubleword */                                                        \
167162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(ld, LD, 0xE8000000)                                                        \
167262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Doubleword with Update */                                            \
167362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(ldu, LDU, 0xE8000001)                                                      \
167462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Word Algebraic */                                                    \
167562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lwa, LWA, 0xE8000002)                                                      \
167662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Doubleword */                                                       \
167762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(std, STD, 0xF8000000)                                                      \
167862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Doubleword with Update */                                           \
167962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stdu, STDU, 0xF8000001)                                                    \
168062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Floating-Point Double Pair */                                        \
168162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lfdp, LFDP, 0xE4000000)                                                    \
168262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Floating-Point Double Pair */                                       \
168362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stfdp, STFDP, 0xF4000000)                                                  \
168462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Quadword */                                                         \
168562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stq, STQ, 0xF8000002)
168662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
168762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_D_OPCODE_LIST(V)                                                   \
168862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Trap Doubleword Immediate */                                              \
168962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(tdi, TDI, 0x08000000)                                                      \
169062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Add Immediate */                                                          \
169162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(addi, ADDI, 0x38000000)                                                    \
169262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Add Immediate Carrying */                                                 \
169362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(addic, ADDIC, 0x30000000)                                                  \
169462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Add Immediate Carrying & record CR0 */                                    \
169562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(addicx, ADDICx, 0x34000000)                                                \
169662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Add Immediate Shifted */                                                  \
169762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(addis, ADDIS, 0x3C000000)                                                  \
169862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* AND Immediate & record CR0 */                                             \
169962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(andix, ANDIx, 0x70000000)                                                  \
170062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* AND Immediate Shifted & record CR0 */                                     \
170162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(andisx, ANDISx, 0x74000000)                                                \
170262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Compare Immediate */                                                      \
170362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(cmpi, CMPI, 0x2C000000)                                                    \
170462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Compare Logical Immediate */                                              \
170562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(cmpli, CMPLI, 0x28000000)                                                  \
170662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Byte and Zero */                                                     \
170762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lbz, LBZ, 0x88000000)                                                      \
170862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Byte and Zero with Update */                                         \
170962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lbzu, LBZU, 0x8C000000)                                                    \
171062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Halfword Algebraic */                                                \
171162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lha, LHA, 0xA8000000)                                                      \
171262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Halfword Algebraic with Update */                                    \
171362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lhau, LHAU, 0xAC000000)                                                    \
171462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Halfword and Zero */                                                 \
171562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lhz, LHZ, 0xA0000000)                                                      \
171662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Halfword and Zero with Update */                                     \
171762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lhzu, LHZU, 0xA4000000)                                                    \
171862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Multiple Word */                                                     \
171962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lmw, LMW, 0xB8000000)                                                      \
172062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Word and Zero */                                                     \
172162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lwz, LWZ, 0x80000000)                                                      \
172262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Word and Zero with Update */                                         \
172362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lwzu, LWZU, 0x84000000)                                                    \
172462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Low Immediate */                                                 \
172562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mulli, MULLI, 0x1C000000)                                                  \
172662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* OR Immediate */                                                           \
172762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(ori, ORI, 0x60000000)                                                      \
172862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* OR Immediate Shifted */                                                   \
172962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(oris, ORIS, 0x64000000)                                                    \
173062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Byte */                                                             \
173162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stb, STB, 0x98000000)                                                      \
173262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Byte with Update */                                                 \
173362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stbu, STBU, 0x9C000000)                                                    \
173462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Halfword */                                                         \
173562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(sth, STH, 0xB0000000)                                                      \
173662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Halfword with Update */                                             \
173762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(sthu, STHU, 0xB4000000)                                                    \
173862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Multiple Word */                                                    \
173962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stmw, STMW, 0xBC000000)                                                    \
174062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Word */                                                             \
174162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stw, STW, 0x90000000)                                                      \
174262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Word with Update */                                                 \
174362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stwu, STWU, 0x94000000)                                                    \
174462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Subtract From Immediate Carrying */                                       \
174562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(subfic, SUBFIC, 0x20000000)                                                \
174662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Trap Word Immediate */                                                    \
174762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(twi, TWI, 0x0C000000)                                                      \
174862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* XOR Immediate */                                                          \
174962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xori, XORI, 0x68000000)                                                    \
175062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* XOR Immediate Shifted */                                                  \
175162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xoris, XORIS, 0x6C000000)                                                  \
175262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Floating-Point Double */                                             \
175362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lfd, LFD, 0xC8000000)                                                      \
175462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Floating-Point Double with Update */                                 \
175562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lfdu, LFDU, 0xCC000000)                                                    \
175662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Floating-Point Single */                                             \
175762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lfs, LFS, 0xC0000000)                                                      \
175862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load Floating-Point Single with Update */                                 \
175962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lfsu, LFSU, 0xC4000000)                                                    \
176062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Floating-Point Double */                                            \
176162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stfd, STFD, 0xD8000000)                                                    \
176262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Floating-Point Double with Update */                                \
176362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stfdu, STFDU, 0xDC000000)                                                  \
176462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Floating-Point Single */                                            \
176562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stfs, STFS, 0xD0000000)                                                    \
176662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store Floating-Point Single with Update */                                \
176762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stfsu, STFSU, 0xD4000000)
176862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
176962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_XFL_OPCODE_LIST(V)                                                 \
177062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move To FPSCR Fields */                                                   \
177162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mtfsf, MTFSF, 0xFC00058E)
177262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
177362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_XFX_OPCODE_LIST(V)                                                 \
177462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move From Condition Register */                                           \
177562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mfcr, MFCR, 0x7C000026)                                                    \
177662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move From One Condition Register Field */                                 \
177762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mfocrf, MFOCRF, 0x7C100026)                                                \
177862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move From Special Purpose Register */                                     \
177962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mfspr, MFSPR, 0x7C0002A6)                                                  \
178062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move To Condition Register Fields */                                      \
178162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mtcrf, MTCRF, 0x7C000120)                                                  \
178262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move To One Condition Register Field */                                   \
178362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mtocrf, MTOCRF, 0x7C100120)                                                \
178462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move To Special Purpose Register */                                       \
178562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mtspr, MTSPR, 0x7C0003A6)                                                  \
178662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Debugger Notify Halt */                                                   \
178762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(dnh, DNH, 0x4C00018C)                                                      \
178862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move From Device Control Register */                                      \
178962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mfdcr, MFDCR, 0x7C000286)                                                  \
179062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move To Device Control Register */                                        \
179162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mtdcr, MTDCR, 0x7C000386)                                                  \
179262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move from Performance Monitor Register */                                 \
179362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mfpmr, MFPMR, 0x7C00029C)                                                  \
179462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move To Performance Monitor Register */                                   \
179562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mtpmr, MTPMR, 0x7C00039C)                                                  \
179662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move From Branch History Rolling Buffer */                                \
179762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mfbhrbe, MFBHRBE, 0x7C00025C)                                              \
179862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move From Time Base */                                                    \
179962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mftb, MFTB, 0x7C0002E6)
180062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
180162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_MDS_OPCODE_LIST(V)                                                 \
180262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Rotate Left Doubleword then Clear Left */                                 \
180362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(rldcl, RLDCL, 0x78000010)                                                  \
180462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Rotate Left Doubleword then Clear Right */                                \
180562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(rldcr, RLDCR, 0x78000012)
180662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
180762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_A_OPCODE_LIST(V)                                                   \
180862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Integer Select */                                                         \
180962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(isel, ISEL, 0x7C00001E)                                                    \
181062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Add */                                                           \
181162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fadd, FADD, 0xFC00002A)                                                    \
181262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Add Single */                                                    \
181362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fadds, FADDS, 0xEC00002A)                                                  \
181462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Divide */                                                        \
181562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fdiv, FDIV, 0xFC000024)                                                    \
181662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Divide Single */                                                 \
181762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fdivs, FDIVS, 0xEC000024)                                                  \
181862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Multiply-Add */                                                  \
181962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fmadd, FMADD, 0xFC00003A)                                                  \
182062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Multiply-Add Single */                                           \
182162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fmadds, FMADDS, 0xEC00003A)                                                \
182262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Multiply-Subtract */                                             \
182362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fmsub, FMSUB, 0xFC000038)                                                  \
182462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Multiply-Subtract Single */                                      \
182562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fmsubs, FMSUBS, 0xEC000038)                                                \
182662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Multiply */                                                      \
182762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fmul, FMUL, 0xFC000032)                                                    \
182862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Multiply Single */                                               \
182962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fmuls, FMULS, 0xEC000032)                                                  \
183062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Negative Multiply-Add */                                         \
183162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fnmadd, FNMADD, 0xFC00003E)                                                \
183262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Negative Multiply-Add Single */                                  \
183362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fnmadds, FNMADDS, 0xEC00003E)                                              \
183462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Negative Multiply-Subtract */                                    \
183562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fnmsub, FNMSUB, 0xFC00003C)                                                \
183662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Negative Multiply-Subtract Single */                             \
183762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fnmsubs, FNMSUBS, 0xEC00003C)                                              \
183862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Reciprocal Estimate Single */                                    \
183962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fres, FRES, 0xEC000030)                                                    \
184062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Reciprocal Square Root Estimate */                               \
184162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(frsqrte, FRSQRTE, 0xFC000034)                                              \
184262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Select */                                                        \
184362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fsel, FSEL, 0xFC00002E)                                                    \
184462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Square Root */                                                   \
184562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fsqrt, FSQRT, 0xFC00002C)                                                  \
184662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Square Root Single */                                            \
184762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fsqrts, FSQRTS, 0xEC00002C)                                                \
184862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Subtract */                                                      \
184962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fsub, FSUB, 0xFC000028)                                                    \
185062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Subtract Single */                                               \
185162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fsubs, FSUBS, 0xEC000028)                                                  \
185262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Reciprocal Estimate */                                           \
185362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(fre, FRE, 0xFC000030)                                                      \
185462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Floating Reciprocal Square Root Estimate Single */                        \
185562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(frsqrtes, FRSQRTES, 0xEC000034)
185662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
185762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_VA_OPCODE_LIST(V)                                                  \
185862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Add Extended & write Carry Unsigned Quadword */                    \
185962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vaddecuq, VADDECUQ, 0x1000003D)                                            \
186062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Add Extended Unsigned Quadword Modulo */                           \
186162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vaddeuqm, VADDEUQM, 0x1000003C)                                            \
186262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply-Add Single-Precision */                                   \
186362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmaddfp, VMADDFP, 0x1000002E)                                              \
186462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply-High-Add Signed Halfword Saturate */                      \
186562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmhaddshs, VMHADDSHS, 0x10000020)                                          \
186662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply-High-Round-Add Signed Halfword Saturate */                \
186762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmhraddshs, VMHRADDSHS, 0x10000021)                                        \
186862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply-Low-Add Unsigned Halfword Modulo */                       \
186962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmladduhm, VMLADDUHM, 0x10000022)                                          \
187062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply-Sum Mixed Byte Modulo */                                  \
187162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmsummbm, VMSUMMBM, 0x10000025)                                            \
187262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply-Sum Signed Halfword Modulo */                             \
187362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmsumshm, VMSUMSHM, 0x10000028)                                            \
187462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply-Sum Signed Halfword Saturate */                           \
187562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmsumshs, VMSUMSHS, 0x10000029)                                            \
187662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply-Sum Unsigned Byte Modulo */                               \
187762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmsumubm, VMSUMUBM, 0x10000024)                                            \
187862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply-Sum Unsigned Halfword Modulo */                           \
187962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmsumuhm, VMSUMUHM, 0x10000026)                                            \
188062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply-Sum Unsigned Halfword Saturate */                         \
188162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmsumuhs, VMSUMUHS, 0x10000027)                                            \
188262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Negative Multiply-Subtract Single-Precision */                     \
188362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vnmsubfp, VNMSUBFP, 0x1000002F)                                            \
188462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Permute */                                                         \
188562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vperm, VPERM, 0x1000002B)                                                  \
188662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Select */                                                          \
188762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsel, VSEL, 0x1000002A)                                                    \
188862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Shift Left Double by Octet Immediate */                            \
188962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsldoi, VSLDOI, 0x1000002C)                                                \
189062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Subtract Extended & write Carry Unsigned Quadword */               \
189162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsubecuq, VSUBECUQ, 0x1000003F)                                            \
189262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Subtract Extended Unsigned Quadword Modulo */                      \
189362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsubeuqm, VSUBEUQM, 0x1000003E)                                            \
189462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Permute and Exclusive-OR */                                        \
189562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vpermxor, VPERMXOR, 0x1000002D)
189662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
189762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_XX1_OPCODE_LIST(V)                                                 \
189862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load VSR Scalar Doubleword Indexed */                                     \
189962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lxsdx, LXSDX, 0x7C000498)                                                  \
190062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load VSX Scalar as Integer Word Algebraic Indexed */                      \
190162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lxsiwax, LXSIWAX, 0x7C000098)                                              \
190262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load VSX Scalar as Integer Word and Zero Indexed */                       \
190362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lxsiwzx, LXSIWZX, 0x7C000018)                                              \
190462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load VSX Scalar Single-Precision Indexed */                               \
190562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lxsspx, LXSSPX, 0x7C000418)                                                \
190662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load VSR Vector Doubleword*2 Indexed */                                   \
190762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lxvd, LXVD, 0x7C000698)                                                    \
190862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load VSR Vector Doubleword & Splat Indexed */                             \
190962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lxvdsx, LXVDSX, 0x7C000298)                                                \
191062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Load VSR Vector Word*4 Indexed */                                         \
191162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(lxvw, LXVW, 0x7C000618)                                                    \
191262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move From VSR Doubleword */                                               \
191362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mfvsrd, MFVSRD, 0x7C000066)                                                \
191462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move From VSR Word and Zero */                                            \
191562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mfvsrwz, MFVSRWZ, 0x7C0000E6)                                              \
191662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store VSR Scalar Doubleword Indexed */                                    \
191762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stxsdx, STXSDX, 0x7C000598)                                                \
191862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store VSX Scalar as Integer Word Indexed */                               \
191962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stxsiwx, STXSIWX, 0x7C000118)                                              \
192062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store VSR Scalar Word Indexed */                                          \
192162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stxsspx, STXSSPX, 0x7C000518)                                              \
192262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store VSR Vector Doubleword*2 Indexed */                                  \
192362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stxvd, STXVD, 0x7C000798)                                                  \
192462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Store VSR Vector Word*4 Indexed */                                        \
192562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(stxvw, STXVW, 0x7C000718)
192662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
192762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_B_OPCODE_LIST(V)                                                   \
192862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Branch Conditional */                                                     \
192962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(bc, BCX, 0x40000000)
193062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
193162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_XO_OPCODE_LIST(V)                                                  \
193262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Divide Doubleword */                                                      \
193362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(divd, DIVD, 0x7C0003D2)                                                    \
193462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Divide Doubleword Extended */                                             \
193562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(divde, DIVDE, 0x7C000352)                                                  \
193662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Divide Doubleword Extended & record OV */                                 \
193762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(divdeo, DIVDEO, 0x7C000752)                                                \
193862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Divide Doubleword Extended Unsigned */                                    \
193962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(divdeu, DIVDEU, 0x7C000312)                                                \
194062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Divide Doubleword Extended Unsigned & record OV */                        \
194162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(divdeuo, DIVDEUO, 0x7C000712)                                              \
194262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Divide Doubleword & record OV */                                          \
194362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(divdo, DIVDO, 0x7C0007D2)                                                  \
194462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Divide Doubleword Unsigned */                                             \
194562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(divdu, DIVDU, 0x7C000392)                                                  \
194662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Divide Doubleword Unsigned & record OV */                                 \
194762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(divduo, DIVDUO, 0x7C000792)                                                \
194862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply High Doubleword */                                               \
194962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mulhd, MULHD, 0x7C000092)                                                  \
195062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply High Doubleword Unsigned */                                      \
195162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mulhdu, MULHDU, 0x7C000012)                                                \
195262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Low Doubleword */                                                \
195362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mulld, MULLD, 0x7C0001D2)                                                  \
195462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Low Doubleword & record OV */                                    \
195562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mulldo, MULLDO, 0x7C0005D2)                                                \
195662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Add */                                                                    \
195762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(add, ADDX, 0x7C000214)                                                     \
195862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Add Carrying */                                                           \
195962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(addc, ADDCX, 0x7C000014)                                                   \
196062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Add Carrying & record OV */                                               \
196162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(addco, ADDCO, 0x7C000414)                                                  \
196262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Add Extended */                                                           \
196362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(adde, ADDEX, 0x7C000114)                                                   \
196462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Add Extended & record OV & record OV */                                   \
196562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(addeo, ADDEO, 0x7C000514)                                                  \
196662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Add to Minus One Extended */                                              \
196762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(addme, ADDME, 0x7C0001D4)                                                  \
196862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Add to Minus One Extended & record OV */                                  \
196962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(addmeo, ADDMEO, 0x7C0005D4)                                                \
197062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Add & record OV */                                                        \
197162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(addo, ADDO, 0x7C000614)                                                    \
197262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Add to Zero Extended */                                                   \
197362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(addze, ADDZEX, 0x7C000194)                                                 \
197462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Add to Zero Extended & record OV */                                       \
197562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(addzeo, ADDZEO, 0x7C000594)                                                \
197662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Divide Word Format */                                                     \
197762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(divw, DIVW, 0x7C0003D6)                                                    \
197862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Divide Word Extended */                                                   \
197962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(divwe, DIVWE, 0x7C000356)                                                  \
198062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Divide Word Extended & record OV */                                       \
198162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(divweo, DIVWEO, 0x7C000756)                                                \
198262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Divide Word Extended Unsigned */                                          \
198362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(divweu, DIVWEU, 0x7C000316)                                                \
198462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Divide Word Extended Unsigned & record OV */                              \
198562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(divweuo, DIVWEUO, 0x7C000716)                                              \
198662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Divide Word & record OV */                                                \
198762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(divwo, DIVWO, 0x7C0007D6)                                                  \
198862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Divide Word Unsigned */                                                   \
198962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(divwu, DIVWU, 0x7C000396)                                                  \
199062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Divide Word Unsigned & record OV */                                       \
199162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(divwuo, DIVWUO, 0x7C000796)                                                \
199262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply High Word */                                                     \
199362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mulhw, MULHWX, 0x7C000096)                                                 \
199462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply High Word Unsigned */                                            \
199562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mulhwu, MULHWUX, 0x7C000016)                                               \
199662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Low Word */                                                      \
199762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mullw, MULLW, 0x7C0001D6)                                                  \
199862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Low Word & record OV */                                          \
199962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mullwo, MULLWO, 0x7C0005D6)                                                \
200062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Negate */                                                                 \
200162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(neg, NEGX, 0x7C0000D0)                                                     \
200262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Negate & record OV */                                                     \
200362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(nego, NEGO, 0x7C0004D0)                                                    \
200462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Subtract From */                                                          \
200562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(subf, SUBFX, 0x7C000050)                                                   \
200662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Subtract From Carrying */                                                 \
200762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(subfc, SUBFCX, 0x7C000010)                                                 \
200862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Subtract From Carrying & record OV */                                     \
200962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(subfco, SUBFCO, 0x7C000410)                                                \
201062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Subtract From Extended */                                                 \
201162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(subfe, SUBFEX, 0x7C000110)                                                 \
201262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Subtract From Extended & record OV */                                     \
201362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(subfeo, SUBFEO, 0x7C000510)                                                \
201462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Subtract From Minus One Extended */                                       \
201562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(subfme, SUBFME, 0x7C0001D0)                                                \
201662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Subtract From Minus One Extended & record OV */                           \
201762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(subfmeo, SUBFMEO, 0x7C0005D0)                                              \
201862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Subtract From & record OV */                                              \
201962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(subfo, SUBFO, 0x7C000450)                                                  \
202062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Subtract From Zero Extended */                                            \
202162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(subfze, SUBFZE, 0x7C000190)                                                \
202262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Subtract From Zero Extended & record OV */                                \
202362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(subfzeo, SUBFZEO, 0x7C000590)                                              \
202462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Add and Generate Sixes */                                                 \
202562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(addg, ADDG, 0x7C000094)                                                    \
202662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Accumulate Cross Halfword to Word Modulo Signed */               \
202762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(macchw, MACCHW, 0x10000158)                                                \
202862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Accumulate Cross Halfword to Word Modulo Signed & record OV */   \
202962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(macchwo, MACCHWO, 0x10000158)                                              \
203062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Accumulate Cross Halfword to Word Saturate Signed */             \
203162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(macchws, MACCHWS, 0x100001D8)                                              \
203262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Accumulate Cross Halfword to Word Saturate Signed & record */    \
203362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* OV */                                                                     \
203462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(macchwso, MACCHWSO, 0x100001D8)                                            \
203562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Accumulate Cross Halfword to Word Saturate Unsigned */           \
203662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(macchwsu, MACCHWSU, 0x10000198)                                            \
203762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Accumulate Cross Halfword to Word Saturate Unsigned & record */  \
203862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* OV */                                                                     \
203962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(macchwsuo, MACCHWSUO, 0x10000198)                                          \
204062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Accumulate Cross Halfword to Word Modulo Unsigned */             \
204162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(macchwu, MACCHWU, 0x10000118)                                              \
204262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Accumulate Cross Halfword to Word Modulo Unsigned & record */    \
204362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* OV */                                                                     \
204462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(macchwuo, MACCHWUO, 0x10000118)                                            \
204562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Accumulate High Halfword to Word Modulo Signed */                \
204662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(machhw, MACHHW, 0x10000058)                                                \
204762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Accumulate High Halfword to Word Modulo Signed & record OV */    \
204862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(machhwo, MACHHWO, 0x10000058)                                              \
204962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Accumulate High Halfword to Word Saturate Signed */              \
205062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(machhws, MACHHWS, 0x100000D8)                                              \
205162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Accumulate High Halfword to Word Saturate Signed & record OV */  \
205262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(machhwso, MACHHWSO, 0x100000D8)                                            \
205362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Accumulate High Halfword to Word Saturate Unsigned */            \
205462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(machhwsu, MACHHWSU, 0x10000098)                                            \
205562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Accumulate High Halfword to Word Saturate Unsigned & record */   \
205662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* OV */                                                                     \
205762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(machhwsuo, MACHHWSUO, 0x10000098)                                          \
205862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Accumulate High Halfword to Word Modulo Unsigned */              \
205962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(machhwu, MACHHWU, 0x10000018)                                              \
206062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Accumulate High Halfword to Word Modulo Unsigned & record OV */  \
206162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(machhwuo, MACHHWUO, 0x10000018)                                            \
206262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Accumulate Low Halfword to Word Modulo Signed */                 \
206362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(maclhw, MACLHW, 0x10000358)                                                \
206462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Accumulate Low Halfword to Word Modulo Signed & record OV */     \
206562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(maclhwo, MACLHWO, 0x10000358)                                              \
206662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Accumulate Low Halfword to Word Saturate Signed */               \
206762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(maclhws, MACLHWS, 0x100003D8)                                              \
206862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Accumulate Low Halfword to Word Saturate Signed & record OV */   \
206962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(maclhwso, MACLHWSO, 0x100003D8)                                            \
207062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Accumulate Low Halfword to Word Saturate Unsigned */             \
207162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(maclhwsu, MACLHWSU, 0x10000398)                                            \
207262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Accumulate Low Halfword to Word Saturate Unsigned & record */    \
207362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* OV */                                                                     \
207462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(maclhwsuo, MACLHWSUO, 0x10000398)                                          \
207562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Accumulate Low Halfword to Word Modulo Unsigned */               \
207662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(maclhwu, MACLHWU, 0x10000318)                                              \
207762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Multiply Accumulate Low Halfword to Word Modulo Unsigned & record OV */   \
207862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(maclhwuo, MACLHWUO, 0x10000318)                                            \
207962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Negative Multiply Accumulate Cross Halfword to Word Modulo Signed */      \
208062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(nmacchw, NMACCHW, 0x1000015C)                                              \
208162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Negative Multiply Accumulate Cross Halfword to Word Modulo Signed & */    \
208262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* record OV */                                                              \
208362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(nmacchwo, NMACCHWO, 0x1000015C)                                            \
208462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Negative Multiply Accumulate Cross Halfword to Word Saturate Signed */    \
208562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(nmacchws, NMACCHWS, 0x100001DC)                                            \
208662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Negative Multiply Accumulate Cross Halfword to Word Saturate Signed & */  \
208762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* record OV */                                                              \
208862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(nmacchwso, NMACCHWSO, 0x100001DC)                                          \
208962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Negative Multiply Accumulate High Halfword to Word Modulo Signed */       \
209062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(nmachhw, NMACHHW, 0x1000005C)                                              \
209162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Negative Multiply Accumulate High Halfword to Word Modulo Signed & */     \
209262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* record OV */                                                              \
209362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(nmachhwo, NMACHHWO, 0x1000005C)                                            \
209462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Negative Multiply Accumulate High Halfword to Word Saturate Signed */     \
209562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(nmachhws, NMACHHWS, 0x100000DC)                                            \
209662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Negative Multiply Accumulate High Halfword to Word Saturate Signed & */   \
209762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* record OV */                                                              \
209862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(nmachhwso, NMACHHWSO, 0x100000DC)                                          \
209962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Negative Multiply Accumulate Low Halfword to Word Modulo Signed */        \
210062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(nmaclhw, NMACLHW, 0x1000035C)                                              \
210162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Negative Multiply Accumulate Low Halfword to Word Modulo Signed & */      \
210262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* record OV */                                                              \
210362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(nmaclhwo, NMACLHWO, 0x1000035C)                                            \
210462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Negative Multiply Accumulate Low Halfword to Word Saturate Signed */      \
210562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(nmaclhws, NMACLHWS, 0x100003DC)                                            \
210662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Negative Multiply Accumulate Low Halfword to Word Saturate Signed & */    \
210762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* record OV */                                                              \
210862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(nmaclhwso, NMACLHWSO, 0x100003DC)
210962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
211062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_XL_OPCODE_LIST(V)                                                  \
211162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Branch Conditional to Count Register */                                   \
211262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(bcctr, BCCTRX, 0x4C000420)                                                 \
211362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Branch Conditional to Link Register */                                    \
211462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(bclr, BCLRX, 0x4C000020)                                                   \
211562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Condition Register AND */                                                 \
211662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(crand, CRAND, 0x4C000202)                                                  \
211762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Condition Register AND with Complement */                                 \
211862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(crandc, CRANDC, 0x4C000102)                                                \
211962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Condition Register Equivalent */                                          \
212062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(creqv, CREQV, 0x4C000242)                                                  \
212162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Condition Register NAND */                                                \
212262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(crnand, CRNAND, 0x4C0001C2)                                                \
212362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Condition Register NOR */                                                 \
212462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(crnor, CRNOR, 0x4C000042)                                                  \
212562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Condition Register OR */                                                  \
212662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(cror, CROR, 0x4C000382)                                                    \
212762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Condition Register OR with Complement */                                  \
212862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(crorc, CRORC, 0x4C000342)                                                  \
212962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Condition Register XOR */                                                 \
213062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(crxor, CRXOR, 0x4C000182)                                                  \
213162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Instruction Synchronize */                                                \
213262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(isync, ISYNC, 0x4C00012C)                                                  \
213362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move Condition Register Field */                                          \
213462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mcrf, MCRF, 0x4C000000)                                                    \
213562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Return From Critical Interrupt */                                         \
213662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(rfci, RFCI, 0x4C000066)                                                    \
213762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Return From Interrupt */                                                  \
213862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(rfi, RFI, 0x4C000064)                                                      \
213962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Return From Machine Check Interrupt */                                    \
214062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(rfmci, RFMCI, 0x4C00004C)                                                  \
214162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Embedded Hypervisor Privilege */                                          \
214262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(ehpriv, EHPRIV, 0x7C00021C)                                                \
214362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Return From Guest Interrupt */                                            \
214462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(rfgi, RFGI, 0x4C0000CC)                                                    \
214562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Doze */                                                                   \
214662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(doze, DOZE, 0x4C000324)                                                    \
214762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Return From Interrupt Doubleword Hypervisor */                            \
214862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(hrfid, HRFID, 0x4C000224)                                                  \
214962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Nap */                                                                    \
215062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(nap, NAP, 0x4C000364)                                                      \
215162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Return from Event Based Branch */                                         \
215262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(rfebb, RFEBB, 0x4C000124)                                                  \
215362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Return from Interrupt Doubleword */                                       \
215462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(rfid, RFID, 0x4C000024)                                                    \
215562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Rip Van Winkle */                                                         \
215662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(rvwinkle, RVWINKLE, 0x4C0003E4)                                            \
215762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Sleep */                                                                  \
215862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(sleep, SLEEP, 0x4C0003A4)
215962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
216062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_XX4_OPCODE_LIST(V)                                                 \
216162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* VSX Select */                                                             \
216262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(xxsel, XXSEL, 0xF0000030)
216362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
216462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_I_OPCODE_LIST(V)                                                   \
216562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Branch */                                                                 \
216662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(b, BX, 0x48000000)
216762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
216862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_M_OPCODE_LIST(V)                                                   \
216962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Rotate Left Word Immediate then Mask Insert */                            \
217062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(rlwimi, RLWIMIX, 0x50000000)                                               \
217162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Rotate Left Word Immediate then AND with Mask */                          \
217262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(rlwinm, RLWINMX, 0x54000000)                                               \
217362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Rotate Left Word then AND with Mask */                                    \
217462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(rlwnm, RLWNMX, 0x5C000000)
217562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
217662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_VX_OPCODE_LIST(V)                                                  \
217762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Add Modulo */                                                     \
217862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(bcdadd, BCDADD, 0xF0000400)                                                \
217962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Decimal Subtract Modulo */                                                \
218062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(bcdsub, BCDSUB, 0xF0000440)                                                \
218162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move From Vector Status and Control Register */                           \
218262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mfvscr, MFVSCR, 0x10000604)                                                \
218362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Move To Vector Status and Control Register */                             \
218462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(mtvscr, MTVSCR, 0x10000644)                                                \
218562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Add & write Carry Unsigned Quadword */                             \
218662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vaddcuq, VADDCUQ, 0x10000140)                                              \
218762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Add and Write Carry-Out Unsigned Word */                           \
218862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vaddcuw, VADDCUW, 0x10000180)                                              \
218962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Add Single-Precision */                                            \
219062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vaddfp, VADDFP, 0x1000000A)                                                \
219162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Add Signed Byte Saturate */                                        \
219262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vaddsbs, VADDSBS, 0x10000300)                                              \
219362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Add Signed Halfword Saturate */                                    \
219462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vaddshs, VADDSHS, 0x10000340)                                              \
219562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Add Signed Word Saturate */                                        \
219662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vaddsws, VADDSWS, 0x10000380)                                              \
219762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Add Unsigned Byte Modulo */                                        \
219862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vaddubm, VADDUBM, 0x10000000)                                              \
219962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Add Unsigned Byte Saturate */                                      \
220062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vaddubs, VADDUBS, 0x10000200)                                              \
220162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Add Unsigned Doubleword Modulo */                                  \
220262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vaddudm, VADDUDM, 0x100000C0)                                              \
220362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Add Unsigned Halfword Modulo */                                    \
220462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vadduhm, VADDUHM, 0x10000040)                                              \
220562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Add Unsigned Halfword Saturate */                                  \
220662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vadduhs, VADDUHS, 0x10000240)                                              \
220762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Add Unsigned Quadword Modulo */                                    \
220862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vadduqm, VADDUQM, 0x10000100)                                              \
220962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Add Unsigned Word Modulo */                                        \
221062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vadduwm, VADDUWM, 0x10000080)                                              \
221162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Add Unsigned Word Saturate */                                      \
221262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vadduws, VADDUWS, 0x10000280)                                              \
221362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Logical AND */                                                     \
221462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vand, VAND, 0x10000404)                                                    \
221562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Logical AND with Complement */                                     \
221662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vandc, VANDC, 0x10000444)                                                  \
221762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Average Signed Byte */                                             \
221862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vavgsb, VAVGSB, 0x10000502)                                                \
221962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Average Signed Halfword */                                         \
222062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vavgsh, VAVGSH, 0x10000542)                                                \
222162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Average Signed Word */                                             \
222262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vavgsw, VAVGSW, 0x10000582)                                                \
222362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Average Unsigned Byte */                                           \
222462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vavgub, VAVGUB, 0x10000402)                                                \
222562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Average Unsigned Halfword */                                       \
222662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vavguh, VAVGUH, 0x10000442)                                                \
222762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Average Unsigned Word */                                           \
222862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vavguw, VAVGUW, 0x10000482)                                                \
222962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Bit Permute Quadword */                                            \
223062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vbpermq, VBPERMQ, 0x1000054C)                                              \
223162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Convert From Signed Fixed-Point Word To Single-Precision */        \
223262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vcfsx, VCFSX, 0x1000034A)                                                  \
223362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Convert From Unsigned Fixed-Point Word To Single-Precision */      \
223462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vcfux, VCFUX, 0x1000030A)                                                  \
223562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Count Leading Zeros Byte */                                        \
223662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vclzb, VCLZB, 0x10000702)                                                  \
223762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Count Leading Zeros Doubleword */                                  \
223862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vclzd, VCLZD, 0x100007C2)                                                  \
223962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Count Leading Zeros Halfword */                                    \
224062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vclzh, VCLZH, 0x10000742)                                                  \
224162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Count Leading Zeros Word */                                        \
224262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vclzw, VCLZW, 0x10000782)                                                  \
224362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Convert From Single-Precision To Signed Fixed-Point Word */        \
224462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Saturate */                                                               \
224562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vctsxs, VCTSXS, 0x100003CA)                                                \
224662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Convert From Single-Precision To Unsigned Fixed-Point Word */      \
224762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Saturate */                                                               \
224862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vctuxs, VCTUXS, 0x1000038A)                                                \
224962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Equivalence */                                                     \
225062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(veqv, VEQV, 0x10000684)                                                    \
225162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector 2 Raised to the Exponent Estimate Single-Precision */              \
225262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vexptefp, VEXPTEFP, 0x1000018A)                                            \
225362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Gather Bits by Byte by Doubleword */                               \
225462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vgbbd, VGBBD, 0x1000050C)                                                  \
225562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Log Base 2 Estimate Single-Precision */                            \
225662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vlogefp, VLOGEFP, 0x100001CA)                                              \
225762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Maximum Single-Precision */                                        \
225862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmaxfp, VMAXFP, 0x1000040A)                                                \
225962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Maximum Signed Byte */                                             \
226062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmaxsb, VMAXSB, 0x10000102)                                                \
226162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Maximum Signed Doubleword */                                       \
226262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmaxsd, VMAXSD, 0x100001C2)                                                \
226362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Maximum Signed Halfword */                                         \
226462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmaxsh, VMAXSH, 0x10000142)                                                \
226562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Maximum Signed Word */                                             \
226662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmaxsw, VMAXSW, 0x10000182)                                                \
226762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Maximum Unsigned Byte */                                           \
226862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmaxub, VMAXUB, 0x10000002)                                                \
226962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Maximum Unsigned Doubleword */                                     \
227062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmaxud, VMAXUD, 0x100000C2)                                                \
227162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Maximum Unsigned Halfword */                                       \
227262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmaxuh, VMAXUH, 0x10000042)                                                \
227362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Maximum Unsigned Word */                                           \
227462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmaxuw, VMAXUW, 0x10000082)                                                \
227562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Minimum Single-Precision */                                        \
227662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vminfp, VMINFP, 0x1000044A)                                                \
227762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Minimum Signed Byte */                                             \
227862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vminsb, VMINSB, 0x10000302)                                                \
227962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Minimum Signed Halfword */                                         \
228062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vminsh, VMINSH, 0x10000342)                                                \
228162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Minimum Signed Word */                                             \
228262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vminsw, VMINSW, 0x10000382)                                                \
228362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Minimum Unsigned Byte */                                           \
228462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vminub, VMINUB, 0x10000202)                                                \
228562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Minimum Unsigned Doubleword */                                     \
228662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vminud, VMINUD, 0x100002C2)                                                \
228762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Minimum Unsigned Halfword */                                       \
228862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vminuh, VMINUH, 0x10000242)                                                \
228962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Minimum Unsigned Word */                                           \
229062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vminuw, VMINUW, 0x10000282)                                                \
229162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Merge High Byte */                                                 \
229262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmrghb, VMRGHB, 0x1000000C)                                                \
229362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Merge High Halfword */                                             \
229462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmrghh, VMRGHH, 0x1000004C)                                                \
229562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Merge High Word */                                                 \
229662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmrghw, VMRGHW, 0x1000008C)                                                \
229762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Merge Low Byte */                                                  \
229862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmrglb, VMRGLB, 0x1000010C)                                                \
229962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Merge Low Halfword */                                              \
230062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmrglh, VMRGLH, 0x1000014C)                                                \
230162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Merge Low Word */                                                  \
230262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmrglw, VMRGLW, 0x1000018C)                                                \
230362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Even Signed Byte */                                       \
230462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmulesb, VMULESB, 0x10000308)                                              \
230562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Even Signed Halfword */                                   \
230662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmulesh, VMULESH, 0x10000348)                                              \
230762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Even Signed Word */                                       \
230862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmulesw, VMULESW, 0x10000388)                                              \
230962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Even Unsigned Byte */                                     \
231062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmuleub, VMULEUB, 0x10000208)                                              \
231162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Even Unsigned Halfword */                                 \
231262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmuleuh, VMULEUH, 0x10000248)                                              \
231362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Even Unsigned Word */                                     \
231462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmuleuw, VMULEUW, 0x10000288)                                              \
231562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Odd Signed Byte */                                        \
231662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmulosb, VMULOSB, 0x10000108)                                              \
231762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Odd Signed Halfword */                                    \
231862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmulosh, VMULOSH, 0x10000148)                                              \
231962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Odd Signed Word */                                        \
232062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmulosw, VMULOSW, 0x10000188)                                              \
232162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Odd Unsigned Byte */                                      \
232262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmuloub, VMULOUB, 0x10000008)                                              \
232362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Odd Unsigned Halfword */                                  \
232462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmulouh, VMULOUH, 0x10000048)                                              \
232562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Odd Unsigned Word */                                      \
232662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmulouw, VMULOUW, 0x10000088)                                              \
232762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Multiply Unsigned Word Modulo */                                   \
232862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmuluwm, VMULUWM, 0x10000089)                                              \
232962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector NAND */                                                            \
233062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vnand, VNAND, 0x10000584)                                                  \
233162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Logical NOR */                                                     \
233262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vnor, VNOR, 0x10000504)                                                    \
233362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Logical OR */                                                      \
233462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vor, VOR, 0x10000484)                                                      \
233562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector OR with Complement */                                              \
233662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vorc, VORC, 0x10000544)                                                    \
233762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Pack Pixel */                                                      \
233862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vpkpx, VPKPX, 0x1000030E)                                                  \
233962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Pack Signed Doubleword Signed Saturate */                          \
234062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vpksdss, VPKSDSS, 0x100005CE)                                              \
234162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Pack Signed Doubleword Unsigned Saturate */                        \
234262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vpksdus, VPKSDUS, 0x1000054E)                                              \
234362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Pack Signed Halfword Signed Saturate */                            \
234462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vpkshss, VPKSHSS, 0x1000018E)                                              \
234562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Pack Signed Halfword Unsigned Saturate */                          \
234662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vpkshus, VPKSHUS, 0x1000010E)                                              \
234762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Pack Signed Word Signed Saturate */                                \
234862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vpkswss, VPKSWSS, 0x100001CE)                                              \
234962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Pack Signed Word Unsigned Saturate */                              \
235062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vpkswus, VPKSWUS, 0x1000014E)                                              \
235162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Pack Unsigned Doubleword Unsigned Modulo */                        \
235262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vpkudum, VPKUDUM, 0x1000044E)                                              \
235362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Pack Unsigned Doubleword Unsigned Saturate */                      \
235462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vpkudus, VPKUDUS, 0x100004CE)                                              \
235562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Pack Unsigned Halfword Unsigned Modulo */                          \
235662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vpkuhum, VPKUHUM, 0x1000000E)                                              \
235762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Pack Unsigned Halfword Unsigned Saturate */                        \
235862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vpkuhus, VPKUHUS, 0x1000008E)                                              \
235962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Pack Unsigned Word Unsigned Modulo */                              \
236062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vpkuwum, VPKUWUM, 0x1000004E)                                              \
236162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Pack Unsigned Word Unsigned Saturate */                            \
236262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vpkuwus, VPKUWUS, 0x100000CE)                                              \
236362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Polynomial Multiply-Sum Byte */                                    \
236462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vpmsumb, VPMSUMB, 0x10000408)                                              \
236562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Polynomial Multiply-Sum Doubleword */                              \
236662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vpmsumd, VPMSUMD, 0x100004C8)                                              \
236762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Polynomial Multiply-Sum Halfword */                                \
236862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vpmsumh, VPMSUMH, 0x10000448)                                              \
236962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Polynomial Multiply-Sum Word */                                    \
237062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vpmsumw, VPMSUMW, 0x10000488)                                              \
237162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Population Count Byte */                                           \
237262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vpopcntb, VPOPCNTB, 0x10000703)                                            \
237362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Population Count Doubleword */                                     \
237462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vpopcntd, VPOPCNTD, 0x100007C3)                                            \
237562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Population Count Halfword */                                       \
237662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vpopcnth, VPOPCNTH, 0x10000743)                                            \
237762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Population Count Word */                                           \
237862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vpopcntw, VPOPCNTW, 0x10000783)                                            \
237962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Reciprocal Estimate Single-Precision */                            \
238062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vrefp, VREFP, 0x1000010A)                                                  \
238162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Round to Single-Precision Integer toward -Infinity */              \
238262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vrfim, VRFIM, 0x100002CA)                                                  \
238362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Round to Single-Precision Integer Nearest */                       \
238462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vrfin, VRFIN, 0x1000020A)                                                  \
238562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Round to Single-Precision Integer toward +Infinity */              \
238662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vrfip, VRFIP, 0x1000028A)                                                  \
238762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Round to Single-Precision Integer toward Zero */                   \
238862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vrfiz, VRFIZ, 0x1000024A)                                                  \
238962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Rotate Left Byte */                                                \
239062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vrlb, VRLB, 0x10000004)                                                    \
239162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Rotate Left Doubleword */                                          \
239262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vrld, VRLD, 0x100000C4)                                                    \
239362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Rotate Left Halfword */                                            \
239462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vrlh, VRLH, 0x10000044)                                                    \
239562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Rotate Left Word */                                                \
239662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vrlw, VRLW, 0x10000084)                                                    \
239762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Reciprocal Square Root Estimate Single-Precision */                \
239862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vrsqrtefp, VRSQRTEFP, 0x1000014A)                                          \
239962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Shift Left */                                                      \
240062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsl, VSL, 0x100001C4)                                                      \
240162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Shift Left Byte */                                                 \
240262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vslb, VSLB, 0x10000104)                                                    \
240362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Shift Left Doubleword */                                           \
240462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsld, VSLD, 0x100005C4)                                                    \
240562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Shift Left Halfword */                                             \
240662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vslh, VSLH, 0x10000144)                                                    \
240762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Shift Left by Octet */                                             \
240862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vslo, VSLO, 0x1000040C)                                                    \
240962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Shift Left Word */                                                 \
241062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vslw, VSLW, 0x10000184)                                                    \
241162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Splat Byte */                                                      \
241262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vspltb, VSPLTB, 0x1000020C)                                                \
241362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Splat Halfword */                                                  \
241462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsplth, VSPLTH, 0x1000024C)                                                \
241562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Splat Immediate Signed Byte */                                     \
241662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vspltisb, VSPLTISB, 0x1000030C)                                            \
241762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Splat Immediate Signed Halfword */                                 \
241862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vspltish, VSPLTISH, 0x1000034C)                                            \
241962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Splat Immediate Signed Word */                                     \
242062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vspltisw, VSPLTISW, 0x1000038C)                                            \
242162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Splat Word */                                                      \
242262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vspltw, VSPLTW, 0x1000028C)                                                \
242362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Shift Right */                                                     \
242462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsr, VSR, 0x100002C4)                                                      \
242562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Shift Right Algebraic Byte */                                      \
242662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsrab, VSRAB, 0x10000304)                                                  \
242762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Shift Right Algebraic Doubleword */                                \
242862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsrad, VSRAD, 0x100003C4)                                                  \
242962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Shift Right Algebraic Halfword */                                  \
243062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsrah, VSRAH, 0x10000344)                                                  \
243162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Shift Right Algebraic Word */                                      \
243262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsraw, VSRAW, 0x10000384)                                                  \
243362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Shift Right Byte */                                                \
243462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsrb, VSRB, 0x10000204)                                                    \
243562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Shift Right Doubleword */                                          \
243662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsrd, VSRD, 0x100006C4)                                                    \
243762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Shift Right Halfword */                                            \
243862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsrh, VSRH, 0x10000244)                                                    \
243962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Shift Right by Octet */                                            \
244062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsro, VSRO, 0x1000044C)                                                    \
244162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Shift Right Word */                                                \
244262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsrw, VSRW, 0x10000284)                                                    \
244362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Subtract & write Carry Unsigned Quadword */                        \
244462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsubcuq, VSUBCUQ, 0x10000540)                                              \
244562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Subtract and Write Carry-Out Unsigned Word */                      \
244662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsubcuw, VSUBCUW, 0x10000580)                                              \
244762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Subtract Single-Precision */                                       \
244862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsubfp, VSUBFP, 0x1000004A)                                                \
244962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Subtract Signed Byte Saturate */                                   \
245062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsubsbs, VSUBSBS, 0x10000700)                                              \
245162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Subtract Signed Halfword Saturate */                               \
245262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsubshs, VSUBSHS, 0x10000740)                                              \
245362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Subtract Signed Word Saturate */                                   \
245462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsubsws, VSUBSWS, 0x10000780)                                              \
245562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Subtract Unsigned Byte Modulo */                                   \
245662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsububm, VSUBUBM, 0x10000400)                                              \
245762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Subtract Unsigned Byte Saturate */                                 \
245862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsububs, VSUBUBS, 0x10000600)                                              \
245962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Subtract Unsigned Doubleword Modulo */                             \
246062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsubudm, VSUBUDM, 0x100004C0)                                              \
246162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Subtract Unsigned Halfword Modulo */                               \
246262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsubuhm, VSUBUHM, 0x10000440)                                              \
246362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Subtract Unsigned Halfword Saturate */                             \
246462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsubuhs, VSUBUHS, 0x10000640)                                              \
246562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Subtract Unsigned Quadword Modulo */                               \
246662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsubuqm, VSUBUQM, 0x10000500)                                              \
246762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Subtract Unsigned Word Modulo */                                   \
246862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsubuwm, VSUBUWM, 0x10000480)                                              \
246962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Subtract Unsigned Word Saturate */                                 \
247062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsubuws, VSUBUWS, 0x10000680)                                              \
247162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Sum across Half Signed Word Saturate */                            \
247262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsum2sws, VSUM2SWS, 0x10000688)                                            \
247362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Sum across Quarter Signed Byte Saturate */                         \
247462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsum4sbs, VSUM4SBS, 0x10000708)                                            \
247562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Sum across Quarter Signed Halfword Saturate */                     \
247662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsum4shs, VSUM4SHS, 0x10000648)                                            \
247762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Sum across Quarter Unsigned Byte Saturate */                       \
247862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsum4bus, VSUM4BUS, 0x10000608)                                            \
247962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Sum across Signed Word Saturate */                                 \
248062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsumsws, VSUMSWS, 0x10000788)                                              \
248162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Unpack High Pixel */                                               \
248262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vupkhpx, VUPKHPX, 0x1000034E)                                              \
248362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Unpack High Signed Byte */                                         \
248462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vupkhsb, VUPKHSB, 0x1000020E)                                              \
248562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Unpack High Signed Halfword */                                     \
248662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vupkhsh, VUPKHSH, 0x1000024E)                                              \
248762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Unpack High Signed Word */                                         \
248862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vupkhsw, VUPKHSW, 0x1000064E)                                              \
248962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Unpack Low Pixel */                                                \
249062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vupklpx, VUPKLPX, 0x100003CE)                                              \
249162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Unpack Low Signed Byte */                                          \
249262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vupklsb, VUPKLSB, 0x1000028E)                                              \
249362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Unpack Low Signed Halfword */                                      \
249462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vupklsh, VUPKLSH, 0x100002CE)                                              \
249562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Unpack Low Signed Word */                                          \
249662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vupklsw, VUPKLSW, 0x100006CE)                                              \
249762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Logical XOR */                                                     \
249862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vxor, VXOR, 0x100004C4)                                                    \
249962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector AES Cipher */                                                      \
250062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vcipher, VCIPHER, 0x10000508)                                              \
250162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector AES Cipher Last */                                                 \
250262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vcipherlast, VCIPHERLAST, 0x10000509)                                      \
250362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector AES Inverse Cipher */                                              \
250462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vncipher, VNCIPHER, 0x10000548)                                            \
250562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector AES Inverse Cipher Last */                                         \
250662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vncipherlast, VNCIPHERLAST, 0x10000549)                                    \
250762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector AES S-Box */                                                       \
250862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vsbox, VSBOX, 0x100005C8)                                                  \
250962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector SHA-512 Sigma Doubleword */                                        \
251062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vshasigmad, VSHASIGMAD, 0x100006C2)                                        \
251162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector SHA-256 Sigma Word */                                              \
251262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vshasigmaw, VSHASIGMAW, 0x10000682)                                        \
251362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Merge Even Word */                                                 \
251462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmrgew, VMRGEW, 0x1000078C)                                                \
251562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Vector Merge Odd Word */                                                  \
251662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(vmrgow, VMRGOW, 0x1000068C)
251762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
251862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_XS_OPCODE_LIST(V)                                                  \
251962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Shift Right Algebraic Doubleword Immediate */                             \
252062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(sradi, SRADIX, 0x7C000674)
252162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
252262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_MD_OPCODE_LIST(V)                                                  \
252362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Rotate Left Doubleword Immediate then Clear */                            \
252462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(rldic, RLDIC, 0x78000008)                                                  \
252562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Rotate Left Doubleword Immediate then Clear Left */                       \
252662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(rldicl, RLDICL, 0x78000000)                                                \
252762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Rotate Left Doubleword Immediate then Clear Right */                      \
252862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(rldicr, RLDICR, 0x78000004)                                                \
252962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* Rotate Left Doubleword Immediate then Mask Insert */                      \
253062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(rldimi, RLDIMI, 0x7800000C)
253162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
253262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_SC_OPCODE_LIST(V)                                                  \
253362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /* System Call */                                                            \
253462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  V(sc, SC, 0x44000002)
253562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
253662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
253762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define PPC_OPCODE_LIST(V)    \
253862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_X_OPCODE_LIST(V)        \
253962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_XO_OPCODE_LIST(V)       \
254062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_DS_OPCODE_LIST(V)       \
254162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_MDS_OPCODE_LIST(V)      \
254262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_MD_OPCODE_LIST(V)       \
254362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_XS_OPCODE_LIST(V)       \
254462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_D_OPCODE_LIST(V)        \
254562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_I_OPCODE_LIST(V)        \
254662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_B_OPCODE_LIST(V)        \
254762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_XL_OPCODE_LIST(V)       \
254862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_A_OPCODE_LIST(V)        \
254962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_XFX_OPCODE_LIST(V)      \
255062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_M_OPCODE_LIST(V)        \
255162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_SC_OPCODE_LIST(V)       \
255262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_Z23_OPCODE_LIST(V)      \
255362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_Z22_OPCODE_LIST(V)      \
255462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_EVX_OPCODE_LIST(V)      \
255562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_XFL_OPCODE_LIST(V)      \
255662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_EVS_OPCODE_LIST(V)      \
255762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_VX_OPCODE_LIST(V)       \
255862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_VA_OPCODE_LIST(V)       \
255962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_VC_OPCODE_LIST(V)       \
256062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_XX1_OPCODE_LIST(V)      \
256162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_XX2_OPCODE_LIST(V)      \
256262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_XX3_OPCODE_LIST(V)      \
256362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_XX4_OPCODE_LIST(V)
256462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
256562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
256662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochenum Opcode : uint32_t {
256762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define DECLARE_INSTRUCTION(name, opcode_name, opcode_value)                   \
256862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  opcode_name = opcode_value,
256962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  PPC_OPCODE_LIST(DECLARE_INSTRUCTION)
257062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#undef DECLARE_INSTRUCTION
257162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  EXT1 = 0x4C000000,   // Extended code set 1
257262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  EXT2 = 0x7C000000,   // Extended code set 2
257362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  EXT3 = 0xEC000000,   // Extended code set 3
257462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  EXT4 = 0xFC000000,   // Extended code set 4
257562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  EXT5 = 0x78000000,   // Extended code set 5 - 64bit only
257662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  EXT6 = 0xF0000000,   // Extended code set 6
2577958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier};
2578958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2579958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Instruction encoding bits and masks.
2580958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierenum {
2581958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  // Instruction encoding bit
2582958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  B1 = 1 << 1,
258362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  B2 = 1 << 2,
258462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  B3 = 1 << 3,
2585958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  B4 = 1 << 4,
2586958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  B5 = 1 << 5,
2587958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  B7 = 1 << 7,
2588958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  B8 = 1 << 8,
2589958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  B9 = 1 << 9,
2590958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  B12 = 1 << 12,
2591958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  B18 = 1 << 18,
2592958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  B19 = 1 << 19,
2593958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  B20 = 1 << 20,
2594958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  B22 = 1 << 22,
2595958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  B23 = 1 << 23,
2596958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  B24 = 1 << 24,
2597958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  B25 = 1 << 25,
2598958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  B26 = 1 << 26,
2599958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  B27 = 1 << 27,
2600958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  B28 = 1 << 28,
2601958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  B6 = 1 << 6,
2602958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  B10 = 1 << 10,
2603958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  B11 = 1 << 11,
2604958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  B16 = 1 << 16,
2605958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  B17 = 1 << 17,
2606958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  B21 = 1 << 21,
2607958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2608958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  // Instruction bit masks
2609958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  kCondMask = 0x1F << 21,
2610958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  kOff12Mask = (1 << 12) - 1,
2611958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  kImm24Mask = (1 << 24) - 1,
2612958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  kOff16Mask = (1 << 16) - 1,
2613958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  kImm16Mask = (1 << 16) - 1,
2614958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  kImm26Mask = (1 << 26) - 1,
2615958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  kBOfieldMask = 0x1f << 21,
2616958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  kOpcodeMask = 0x3f << 26,
2617958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  kExt1OpcodeMask = 0x3ff << 1,
2618014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  kExt2OpcodeMask = 0x3ff << 1,
2619014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  kExt2OpcodeVariant2Mask = 0x1ff << 2,
2620958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  kExt5OpcodeMask = 0x3 << 2,
2621958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  kBOMask = 0x1f << 21,
2622958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  kBIMask = 0x1F << 16,
2623958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  kBDMask = 0x14 << 2,
2624958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  kAAMask = 0x01 << 1,
2625958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  kLKMask = 0x01,
2626958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  kRCMask = 0x01,
2627958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  kTOMask = 0x1f << 21
2628958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier};
2629958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2630958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// -----------------------------------------------------------------------------
2631958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Addressing modes and instruction variants.
2632958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2633958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Overflow Exception
2634958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierenum OEBit {
2635958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  SetOE = 1 << 10,   // Set overflow exception
2636958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  LeaveOE = 0 << 10  // No overflow exception
2637958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier};
2638958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2639958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Record bit
2640958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierenum RCBit {   // Bit 0
2641958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  SetRC = 1,   // LT,GT,EQ,SO
2642958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  LeaveRC = 0  // None
2643958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier};
2644958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2645958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Link bit
2646958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierenum LKBit {   // Bit 0
2647958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  SetLK = 1,   // Load effective address of next instruction
2648958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  LeaveLK = 0  // No action
2649958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier};
2650958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2651958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierenum BOfield {        // Bits 25-21
2652958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  DCBNZF = 0 << 21,   // Decrement CTR; branch if CTR != 0 and condition false
2653958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  DCBEZF = 2 << 21,   // Decrement CTR; branch if CTR == 0 and condition false
2654958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  BF = 4 << 21,       // Branch if condition false
2655958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  DCBNZT = 8 << 21,   // Decrement CTR; branch if CTR != 0 and condition true
2656958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  DCBEZT = 10 << 21,  // Decrement CTR; branch if CTR == 0 and condition true
2657958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  BT = 12 << 21,      // Branch if condition true
2658958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  DCBNZ = 16 << 21,   // Decrement CTR; branch if CTR != 0
2659958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  DCBEZ = 18 << 21,   // Decrement CTR; branch if CTR == 0
2660958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  BA = 20 << 21       // Branch always
2661958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier};
2662958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2663958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#if V8_OS_AIX
2664958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#undef CR_LT
2665958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#undef CR_GT
2666958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#undef CR_EQ
2667958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#undef CR_SO
2668958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#endif
2669958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2670958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierenum CRBit { CR_LT = 0, CR_GT = 1, CR_EQ = 2, CR_SO = 3, CR_FU = 3 };
2671958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2672958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#define CRWIDTH 4
2673958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2674014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// These are the documented bit positions biased down by 32
2675014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochenum FPSCRBit {
2676014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  VXSOFT = 21,  // 53: Software-Defined Condition
2677014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  VXSQRT = 22,  // 54: Invalid Square Root
2678014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  VXCVI = 23    // 55: Invalid Integer Convert
2679014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch};
2680014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
2681958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// -----------------------------------------------------------------------------
2682958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Supervisor Call (svc) specific support.
2683958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2684958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Special Software Interrupt codes when used in the presence of the PPC
2685958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// simulator.
2686958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// svc (formerly swi) provides a 24bit immediate value. Use bits 22:0 for
2687958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// standard SoftwareInterrupCode. Bit 23 is reserved for the stop feature.
2688958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierenum SoftwareInterruptCodes {
2689958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  // transition to C code
2690958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  kCallRtRedirected = 0x10,
2691958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  // break point
2692958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  kBreakpoint = 0x821008,  // bits23-0 of 0x7d821008 = twge r2, r2
2693958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  // stop
2694014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  kStopCode = 1 << 23
2695958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier};
2696958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierconst uint32_t kStopCodeMask = kStopCode - 1;
2697958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierconst uint32_t kMaxStopCode = kStopCode - 1;
2698958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierconst int32_t kDefaultStopCode = -1;
2699958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2700958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// FP rounding modes.
2701958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierenum FPRoundingMode {
2702958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  RN = 0,  // Round to Nearest.
2703958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  RZ = 1,  // Round towards zero.
2704958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  RP = 2,  // Round towards Plus Infinity.
2705958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  RM = 3,  // Round towards Minus Infinity.
2706958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2707958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  // Aliases.
2708958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  kRoundToNearest = RN,
2709958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  kRoundToZero = RZ,
2710958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  kRoundToPlusInf = RP,
2711958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  kRoundToMinusInf = RM
2712958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier};
2713958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2714958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierconst uint32_t kFPRoundingModeMask = 3;
2715958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2716958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierenum CheckForInexactConversion {
2717958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  kCheckForInexactConversion,
2718958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  kDontCheckForInexactConversion
2719958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier};
2720958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2721958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// -----------------------------------------------------------------------------
2722958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Specific instructions, constants, and masks.
2723958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// These constants are declared in assembler-arm.cc, as they use named registers
2724958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// and other constants.
2725958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2726958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2727958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// add(sp, sp, 4) instruction (aka Pop())
2728958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierextern const Instr kPopInstruction;
2729958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2730958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// str(r, MemOperand(sp, 4, NegPreIndex), al) instruction (aka push(r))
2731958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// register r is not encoded.
2732958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierextern const Instr kPushRegPattern;
2733958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2734958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// ldr(r, MemOperand(sp, 4, PostIndex), al) instruction (aka pop(r))
2735958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// register r is not encoded.
2736958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierextern const Instr kPopRegPattern;
2737958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2738958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// use TWI to indicate redirection call for simulation mode
2739958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierconst Instr rtCallRedirInstr = TWI;
2740958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2741958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// -----------------------------------------------------------------------------
2742958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Instruction abstraction.
2743958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2744958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// The class Instruction enables access to individual fields defined in the PPC
2745958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// architecture instruction set encoding.
2746958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Note that the Assembler uses typedef int32_t Instr.
2747958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier//
2748958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Example: Test whether the instruction at ptr does set the condition code
2749958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// bits.
2750958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier//
2751958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// bool InstructionSetsConditionCodes(byte* ptr) {
2752958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier//   Instruction* instr = Instruction::At(ptr);
2753958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier//   int type = instr->TypeValue();
2754958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier//   return ((type == 0) || (type == 1)) && instr->HasS();
2755958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// }
2756958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier//
2757958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierclass Instruction {
2758958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier public:
2759958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  enum { kInstrSize = 4, kInstrSizeLog2 = 2, kPCReadOffset = 8 };
2760958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2761958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Helper macro to define static accessors.
2762958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// We use the cast to char* trick to bypass the strict anti-aliasing rules.
2763958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#define DECLARE_STATIC_TYPED_ACCESSOR(return_type, Name) \
2764958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  static inline return_type Name(Instr instr) {          \
2765958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier    char* temp = reinterpret_cast<char*>(&instr);        \
2766958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier    return reinterpret_cast<Instruction*>(temp)->Name(); \
2767958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  }
2768958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2769958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#define DECLARE_STATIC_ACCESSOR(Name) DECLARE_STATIC_TYPED_ACCESSOR(int, Name)
2770958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2771958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  // Get the raw instruction bits.
2772958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  inline Instr InstructionBits() const {
2773958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier    return *reinterpret_cast<const Instr*>(this);
2774958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  }
2775958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2776958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  // Set the raw instruction bits to value.
2777958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  inline void SetInstructionBits(Instr value) {
2778958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier    *reinterpret_cast<Instr*>(this) = value;
2779958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  }
2780958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2781958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  // Read one particular bit out of the instruction bits.
2782958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  inline int Bit(int nr) const { return (InstructionBits() >> nr) & 1; }
2783958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2784958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  // Read a bit field's value out of the instruction bits.
2785958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  inline int Bits(int hi, int lo) const {
2786958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier    return (InstructionBits() >> lo) & ((2 << (hi - lo)) - 1);
2787958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  }
2788958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2789958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  // Read a bit field out of the instruction bits.
279062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  inline uint32_t BitField(int hi, int lo) const {
2791958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier    return InstructionBits() & (((2 << (hi - lo)) - 1) << lo);
2792958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  }
2793958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2794958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  // Static support.
2795958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2796958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  // Read one particular bit out of the instruction bits.
2797958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  static inline int Bit(Instr instr, int nr) { return (instr >> nr) & 1; }
2798958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2799958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  // Read the value of a bit field out of the instruction bits.
2800958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  static inline int Bits(Instr instr, int hi, int lo) {
2801958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier    return (instr >> lo) & ((2 << (hi - lo)) - 1);
2802958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  }
2803958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2804958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2805958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  // Read a bit field out of the instruction bits.
280662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  static inline uint32_t BitField(Instr instr, int hi, int lo) {
2807958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier    return instr & (((2 << (hi - lo)) - 1) << lo);
2808958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  }
2809958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2810958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  inline int RSValue() const { return Bits(25, 21); }
2811958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  inline int RTValue() const { return Bits(25, 21); }
2812958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  inline int RAValue() const { return Bits(20, 16); }
2813958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  DECLARE_STATIC_ACCESSOR(RAValue);
2814958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  inline int RBValue() const { return Bits(15, 11); }
2815958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  DECLARE_STATIC_ACCESSOR(RBValue);
2816958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  inline int RCValue() const { return Bits(10, 6); }
2817958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  DECLARE_STATIC_ACCESSOR(RCValue);
2818958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2819958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  inline int OpcodeValue() const { return static_cast<Opcode>(Bits(31, 26)); }
2820958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  inline Opcode OpcodeField() const {
282162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch    return static_cast<Opcode>(BitField(31, 26));
2822958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  }
2823958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2824958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  // Fields used in Software interrupt instructions
2825958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  inline SoftwareInterruptCodes SvcValue() const {
2826958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier    return static_cast<SoftwareInterruptCodes>(Bits(23, 0));
2827958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  }
2828958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2829958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  // Instructions are read of out a code stream. The only way to get a
2830958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  // reference to an instruction is to convert a pointer. There is no way
2831958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  // to allocate or create instances of class Instruction.
2832958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  // Use the At(pc) function to create references to Instruction.
2833958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  static Instruction* At(byte* pc) {
2834958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier    return reinterpret_cast<Instruction*>(pc);
2835958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  }
2836958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2837958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2838958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier private:
2839958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  // We need to prevent the creation of instances of class Instruction.
2840958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  DISALLOW_IMPLICIT_CONSTRUCTORS(Instruction);
2841958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier};
2842958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2843958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2844958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Helper functions for converting between register numbers and names.
2845958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierclass Registers {
2846958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier public:
2847958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  // Lookup the register number for the name provided.
2848958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  static int Number(const char* name);
2849958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2850958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier private:
2851958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  static const char* names_[kNumRegisters];
2852958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier};
2853958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2854958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Helper functions for converting between FP register numbers and names.
2855014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochclass DoubleRegisters {
2856958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier public:
2857958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  // Lookup the register number for the name provided.
2858958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  static int Number(const char* name);
2859958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2860958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier private:
2861014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  static const char* names_[kNumDoubleRegisters];
2862958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier};
2863014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}  // namespace internal
2864014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}  // namespace v8
2865958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
2866958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#endif  // V8_PPC_CONSTANTS_PPC_H_
2867