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