xref: /OK3568_Linux_fs/kernel/arch/powerpc/xmon/ppc-opc.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0-or-later
2*4882a593Smuzhiyun /* ppc-opc.c -- PowerPC opcode list
3*4882a593Smuzhiyun    Copyright (C) 1994-2016 Free Software Foundation, Inc.
4*4882a593Smuzhiyun    Written by Ian Lance Taylor, Cygnus Support
5*4882a593Smuzhiyun 
6*4882a593Smuzhiyun    This file is part of GDB, GAS, and the GNU binutils.
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun  */
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun #include <linux/stddef.h>
11*4882a593Smuzhiyun #include <linux/kernel.h>
12*4882a593Smuzhiyun #include <linux/bug.h>
13*4882a593Smuzhiyun #include "nonstdio.h"
14*4882a593Smuzhiyun #include "ppc.h"
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun #define ATTRIBUTE_UNUSED
17*4882a593Smuzhiyun #define _(x)	x
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun /* This file holds the PowerPC opcode table.  The opcode table
20*4882a593Smuzhiyun    includes almost all of the extended instruction mnemonics.  This
21*4882a593Smuzhiyun    permits the disassembler to use them, and simplifies the assembler
22*4882a593Smuzhiyun    logic, at the cost of increasing the table size.  The table is
23*4882a593Smuzhiyun    strictly constant data, so the compiler should be able to put it in
24*4882a593Smuzhiyun    the .text section.
25*4882a593Smuzhiyun 
26*4882a593Smuzhiyun    This file also holds the operand table.  All knowledge about
27*4882a593Smuzhiyun    inserting operands into instructions and vice-versa is kept in this
28*4882a593Smuzhiyun    file.  */
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun /* Local insertion and extraction functions.  */
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun static unsigned long insert_arx (unsigned long, long, ppc_cpu_t, const char **);
33*4882a593Smuzhiyun static long extract_arx (unsigned long, ppc_cpu_t, int *);
34*4882a593Smuzhiyun static unsigned long insert_ary (unsigned long, long, ppc_cpu_t, const char **);
35*4882a593Smuzhiyun static long extract_ary (unsigned long, ppc_cpu_t, int *);
36*4882a593Smuzhiyun static unsigned long insert_bat (unsigned long, long, ppc_cpu_t, const char **);
37*4882a593Smuzhiyun static long extract_bat (unsigned long, ppc_cpu_t, int *);
38*4882a593Smuzhiyun static unsigned long insert_bba (unsigned long, long, ppc_cpu_t, const char **);
39*4882a593Smuzhiyun static long extract_bba (unsigned long, ppc_cpu_t, int *);
40*4882a593Smuzhiyun static unsigned long insert_bdm (unsigned long, long, ppc_cpu_t, const char **);
41*4882a593Smuzhiyun static long extract_bdm (unsigned long, ppc_cpu_t, int *);
42*4882a593Smuzhiyun static unsigned long insert_bdp (unsigned long, long, ppc_cpu_t, const char **);
43*4882a593Smuzhiyun static long extract_bdp (unsigned long, ppc_cpu_t, int *);
44*4882a593Smuzhiyun static unsigned long insert_bo (unsigned long, long, ppc_cpu_t, const char **);
45*4882a593Smuzhiyun static long extract_bo (unsigned long, ppc_cpu_t, int *);
46*4882a593Smuzhiyun static unsigned long insert_boe (unsigned long, long, ppc_cpu_t, const char **);
47*4882a593Smuzhiyun static long extract_boe (unsigned long, ppc_cpu_t, int *);
48*4882a593Smuzhiyun static unsigned long insert_esync (unsigned long, long, ppc_cpu_t, const char **);
49*4882a593Smuzhiyun static unsigned long insert_dcmxs (unsigned long, long, ppc_cpu_t, const char **);
50*4882a593Smuzhiyun static long extract_dcmxs (unsigned long, ppc_cpu_t, int *);
51*4882a593Smuzhiyun static unsigned long insert_dxd (unsigned long, long, ppc_cpu_t, const char **);
52*4882a593Smuzhiyun static long extract_dxd (unsigned long, ppc_cpu_t, int *);
53*4882a593Smuzhiyun static unsigned long insert_dxdn (unsigned long, long, ppc_cpu_t, const char **);
54*4882a593Smuzhiyun static long extract_dxdn (unsigned long, ppc_cpu_t, int *);
55*4882a593Smuzhiyun static unsigned long insert_fxm (unsigned long, long, ppc_cpu_t, const char **);
56*4882a593Smuzhiyun static long extract_fxm (unsigned long, ppc_cpu_t, int *);
57*4882a593Smuzhiyun static unsigned long insert_li20 (unsigned long, long, ppc_cpu_t, const char **);
58*4882a593Smuzhiyun static long extract_li20 (unsigned long, ppc_cpu_t, int *);
59*4882a593Smuzhiyun static unsigned long insert_ls (unsigned long, long, ppc_cpu_t, const char **);
60*4882a593Smuzhiyun static unsigned long insert_mbe (unsigned long, long, ppc_cpu_t, const char **);
61*4882a593Smuzhiyun static long extract_mbe (unsigned long, ppc_cpu_t, int *);
62*4882a593Smuzhiyun static unsigned long insert_mb6 (unsigned long, long, ppc_cpu_t, const char **);
63*4882a593Smuzhiyun static long extract_mb6 (unsigned long, ppc_cpu_t, int *);
64*4882a593Smuzhiyun static long extract_nb (unsigned long, ppc_cpu_t, int *);
65*4882a593Smuzhiyun static unsigned long insert_nbi (unsigned long, long, ppc_cpu_t, const char **);
66*4882a593Smuzhiyun static unsigned long insert_nsi (unsigned long, long, ppc_cpu_t, const char **);
67*4882a593Smuzhiyun static long extract_nsi (unsigned long, ppc_cpu_t, int *);
68*4882a593Smuzhiyun static unsigned long insert_oimm (unsigned long, long, ppc_cpu_t, const char **);
69*4882a593Smuzhiyun static long extract_oimm (unsigned long, ppc_cpu_t, int *);
70*4882a593Smuzhiyun static unsigned long insert_ral (unsigned long, long, ppc_cpu_t, const char **);
71*4882a593Smuzhiyun static unsigned long insert_ram (unsigned long, long, ppc_cpu_t, const char **);
72*4882a593Smuzhiyun static unsigned long insert_raq (unsigned long, long, ppc_cpu_t, const char **);
73*4882a593Smuzhiyun static unsigned long insert_ras (unsigned long, long, ppc_cpu_t, const char **);
74*4882a593Smuzhiyun static unsigned long insert_rbs (unsigned long, long, ppc_cpu_t, const char **);
75*4882a593Smuzhiyun static long extract_rbs (unsigned long, ppc_cpu_t, int *);
76*4882a593Smuzhiyun static unsigned long insert_rbx (unsigned long, long, ppc_cpu_t, const char **);
77*4882a593Smuzhiyun static unsigned long insert_rx (unsigned long, long, ppc_cpu_t, const char **);
78*4882a593Smuzhiyun static long extract_rx (unsigned long, ppc_cpu_t, int *);
79*4882a593Smuzhiyun static unsigned long insert_ry (unsigned long, long, ppc_cpu_t, const char **);
80*4882a593Smuzhiyun static long extract_ry (unsigned long, ppc_cpu_t, int *);
81*4882a593Smuzhiyun static unsigned long insert_sh6 (unsigned long, long, ppc_cpu_t, const char **);
82*4882a593Smuzhiyun static long extract_sh6 (unsigned long, ppc_cpu_t, int *);
83*4882a593Smuzhiyun static unsigned long insert_sci8 (unsigned long, long, ppc_cpu_t, const char **);
84*4882a593Smuzhiyun static long extract_sci8 (unsigned long, ppc_cpu_t, int *);
85*4882a593Smuzhiyun static unsigned long insert_sci8n (unsigned long, long, ppc_cpu_t, const char **);
86*4882a593Smuzhiyun static long extract_sci8n (unsigned long, ppc_cpu_t, int *);
87*4882a593Smuzhiyun static unsigned long insert_sd4h (unsigned long, long, ppc_cpu_t, const char **);
88*4882a593Smuzhiyun static long extract_sd4h (unsigned long, ppc_cpu_t, int *);
89*4882a593Smuzhiyun static unsigned long insert_sd4w (unsigned long, long, ppc_cpu_t, const char **);
90*4882a593Smuzhiyun static long extract_sd4w (unsigned long, ppc_cpu_t, int *);
91*4882a593Smuzhiyun static unsigned long insert_spr (unsigned long, long, ppc_cpu_t, const char **);
92*4882a593Smuzhiyun static long extract_spr (unsigned long, ppc_cpu_t, int *);
93*4882a593Smuzhiyun static unsigned long insert_sprg (unsigned long, long, ppc_cpu_t, const char **);
94*4882a593Smuzhiyun static long extract_sprg (unsigned long, ppc_cpu_t, int *);
95*4882a593Smuzhiyun static unsigned long insert_tbr (unsigned long, long, ppc_cpu_t, const char **);
96*4882a593Smuzhiyun static long extract_tbr (unsigned long, ppc_cpu_t, int *);
97*4882a593Smuzhiyun static unsigned long insert_xt6 (unsigned long, long, ppc_cpu_t, const char **);
98*4882a593Smuzhiyun static long extract_xt6 (unsigned long, ppc_cpu_t, int *);
99*4882a593Smuzhiyun static unsigned long insert_xtq6 (unsigned long, long, ppc_cpu_t, const char **);
100*4882a593Smuzhiyun static long extract_xtq6 (unsigned long, ppc_cpu_t, int *);
101*4882a593Smuzhiyun static unsigned long insert_xa6 (unsigned long, long, ppc_cpu_t, const char **);
102*4882a593Smuzhiyun static long extract_xa6 (unsigned long, ppc_cpu_t, int *);
103*4882a593Smuzhiyun static unsigned long insert_xb6 (unsigned long, long, ppc_cpu_t, const char **);
104*4882a593Smuzhiyun static long extract_xb6 (unsigned long, ppc_cpu_t, int *);
105*4882a593Smuzhiyun static unsigned long insert_xb6s (unsigned long, long, ppc_cpu_t, const char **);
106*4882a593Smuzhiyun static long extract_xb6s (unsigned long, ppc_cpu_t, int *);
107*4882a593Smuzhiyun static unsigned long insert_xc6 (unsigned long, long, ppc_cpu_t, const char **);
108*4882a593Smuzhiyun static long extract_xc6 (unsigned long, ppc_cpu_t, int *);
109*4882a593Smuzhiyun static unsigned long insert_dm (unsigned long, long, ppc_cpu_t, const char **);
110*4882a593Smuzhiyun static long extract_dm (unsigned long, ppc_cpu_t, int *);
111*4882a593Smuzhiyun static unsigned long insert_vlesi (unsigned long, long, ppc_cpu_t, const char **);
112*4882a593Smuzhiyun static long extract_vlesi (unsigned long, ppc_cpu_t, int *);
113*4882a593Smuzhiyun static unsigned long insert_vlensi (unsigned long, long, ppc_cpu_t, const char **);
114*4882a593Smuzhiyun static long extract_vlensi (unsigned long, ppc_cpu_t, int *);
115*4882a593Smuzhiyun static unsigned long insert_vleui (unsigned long, long, ppc_cpu_t, const char **);
116*4882a593Smuzhiyun static long extract_vleui (unsigned long, ppc_cpu_t, int *);
117*4882a593Smuzhiyun static unsigned long insert_vleil (unsigned long, long, ppc_cpu_t, const char **);
118*4882a593Smuzhiyun static long extract_vleil (unsigned long, ppc_cpu_t, int *);
119*4882a593Smuzhiyun 
120*4882a593Smuzhiyun /* The operands table.
121*4882a593Smuzhiyun 
122*4882a593Smuzhiyun    The fields are bitm, shift, insert, extract, flags.
123*4882a593Smuzhiyun 
124*4882a593Smuzhiyun    We used to put parens around the various additions, like the one
125*4882a593Smuzhiyun    for BA just below.  However, that caused trouble with feeble
126*4882a593Smuzhiyun    compilers with a limit on depth of a parenthesized expression, like
127*4882a593Smuzhiyun    (reportedly) the compiler in Microsoft Developer Studio 5.  So we
128*4882a593Smuzhiyun    omit the parens, since the macros are never used in a context where
129*4882a593Smuzhiyun    the addition will be ambiguous.  */
130*4882a593Smuzhiyun 
131*4882a593Smuzhiyun const struct powerpc_operand powerpc_operands[] =
132*4882a593Smuzhiyun {
133*4882a593Smuzhiyun   /* The zero index is used to indicate the end of the list of
134*4882a593Smuzhiyun      operands.  */
135*4882a593Smuzhiyun #define UNUSED 0
136*4882a593Smuzhiyun   { 0, 0, NULL, NULL, 0 },
137*4882a593Smuzhiyun 
138*4882a593Smuzhiyun   /* The BA field in an XL form instruction.  */
139*4882a593Smuzhiyun #define BA UNUSED + 1
140*4882a593Smuzhiyun   /* The BI field in a B form or XL form instruction.  */
141*4882a593Smuzhiyun #define BI BA
142*4882a593Smuzhiyun #define BI_MASK (0x1f << 16)
143*4882a593Smuzhiyun   { 0x1f, 16, NULL, NULL, PPC_OPERAND_CR_BIT },
144*4882a593Smuzhiyun 
145*4882a593Smuzhiyun   /* The BA field in an XL form instruction when it must be the same
146*4882a593Smuzhiyun      as the BT field in the same instruction.  */
147*4882a593Smuzhiyun #define BAT BA + 1
148*4882a593Smuzhiyun   { 0x1f, 16, insert_bat, extract_bat, PPC_OPERAND_FAKE },
149*4882a593Smuzhiyun 
150*4882a593Smuzhiyun   /* The BB field in an XL form instruction.  */
151*4882a593Smuzhiyun #define BB BAT + 1
152*4882a593Smuzhiyun #define BB_MASK (0x1f << 11)
153*4882a593Smuzhiyun   { 0x1f, 11, NULL, NULL, PPC_OPERAND_CR_BIT },
154*4882a593Smuzhiyun 
155*4882a593Smuzhiyun   /* The BB field in an XL form instruction when it must be the same
156*4882a593Smuzhiyun      as the BA field in the same instruction.  */
157*4882a593Smuzhiyun #define BBA BB + 1
158*4882a593Smuzhiyun   /* The VB field in a VX form instruction when it must be the same
159*4882a593Smuzhiyun      as the VA field in the same instruction.  */
160*4882a593Smuzhiyun #define VBA BBA
161*4882a593Smuzhiyun   { 0x1f, 11, insert_bba, extract_bba, PPC_OPERAND_FAKE },
162*4882a593Smuzhiyun 
163*4882a593Smuzhiyun   /* The BD field in a B form instruction.  The lower two bits are
164*4882a593Smuzhiyun      forced to zero.  */
165*4882a593Smuzhiyun #define BD BBA + 1
166*4882a593Smuzhiyun   { 0xfffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
167*4882a593Smuzhiyun 
168*4882a593Smuzhiyun   /* The BD field in a B form instruction when absolute addressing is
169*4882a593Smuzhiyun      used.  */
170*4882a593Smuzhiyun #define BDA BD + 1
171*4882a593Smuzhiyun   { 0xfffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
172*4882a593Smuzhiyun 
173*4882a593Smuzhiyun   /* The BD field in a B form instruction when the - modifier is used.
174*4882a593Smuzhiyun      This sets the y bit of the BO field appropriately.  */
175*4882a593Smuzhiyun #define BDM BDA + 1
176*4882a593Smuzhiyun   { 0xfffc, 0, insert_bdm, extract_bdm,
177*4882a593Smuzhiyun     PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
178*4882a593Smuzhiyun 
179*4882a593Smuzhiyun   /* The BD field in a B form instruction when the - modifier is used
180*4882a593Smuzhiyun      and absolute address is used.  */
181*4882a593Smuzhiyun #define BDMA BDM + 1
182*4882a593Smuzhiyun   { 0xfffc, 0, insert_bdm, extract_bdm,
183*4882a593Smuzhiyun     PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
184*4882a593Smuzhiyun 
185*4882a593Smuzhiyun   /* The BD field in a B form instruction when the + modifier is used.
186*4882a593Smuzhiyun      This sets the y bit of the BO field appropriately.  */
187*4882a593Smuzhiyun #define BDP BDMA + 1
188*4882a593Smuzhiyun   { 0xfffc, 0, insert_bdp, extract_bdp,
189*4882a593Smuzhiyun     PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
190*4882a593Smuzhiyun 
191*4882a593Smuzhiyun   /* The BD field in a B form instruction when the + modifier is used
192*4882a593Smuzhiyun      and absolute addressing is used.  */
193*4882a593Smuzhiyun #define BDPA BDP + 1
194*4882a593Smuzhiyun   { 0xfffc, 0, insert_bdp, extract_bdp,
195*4882a593Smuzhiyun     PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
196*4882a593Smuzhiyun 
197*4882a593Smuzhiyun   /* The BF field in an X or XL form instruction.  */
198*4882a593Smuzhiyun #define BF BDPA + 1
199*4882a593Smuzhiyun   /* The CRFD field in an X form instruction.  */
200*4882a593Smuzhiyun #define CRFD BF
201*4882a593Smuzhiyun   /* The CRD field in an XL form instruction.  */
202*4882a593Smuzhiyun #define CRD BF
203*4882a593Smuzhiyun   { 0x7, 23, NULL, NULL, PPC_OPERAND_CR_REG },
204*4882a593Smuzhiyun 
205*4882a593Smuzhiyun   /* The BF field in an X or XL form instruction.  */
206*4882a593Smuzhiyun #define BFF BF + 1
207*4882a593Smuzhiyun   { 0x7, 23, NULL, NULL, 0 },
208*4882a593Smuzhiyun 
209*4882a593Smuzhiyun   /* An optional BF field.  This is used for comparison instructions,
210*4882a593Smuzhiyun      in which an omitted BF field is taken as zero.  */
211*4882a593Smuzhiyun #define OBF BFF + 1
212*4882a593Smuzhiyun   { 0x7, 23, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
213*4882a593Smuzhiyun 
214*4882a593Smuzhiyun   /* The BFA field in an X or XL form instruction.  */
215*4882a593Smuzhiyun #define BFA OBF + 1
216*4882a593Smuzhiyun   { 0x7, 18, NULL, NULL, PPC_OPERAND_CR_REG },
217*4882a593Smuzhiyun 
218*4882a593Smuzhiyun   /* The BO field in a B form instruction.  Certain values are
219*4882a593Smuzhiyun      illegal.  */
220*4882a593Smuzhiyun #define BO BFA + 1
221*4882a593Smuzhiyun #define BO_MASK (0x1f << 21)
222*4882a593Smuzhiyun   { 0x1f, 21, insert_bo, extract_bo, 0 },
223*4882a593Smuzhiyun 
224*4882a593Smuzhiyun   /* The BO field in a B form instruction when the + or - modifier is
225*4882a593Smuzhiyun      used.  This is like the BO field, but it must be even.  */
226*4882a593Smuzhiyun #define BOE BO + 1
227*4882a593Smuzhiyun   { 0x1e, 21, insert_boe, extract_boe, 0 },
228*4882a593Smuzhiyun 
229*4882a593Smuzhiyun   /* The RM field in an X form instruction.  */
230*4882a593Smuzhiyun #define RM BOE + 1
231*4882a593Smuzhiyun   { 0x3, 11, NULL, NULL, 0 },
232*4882a593Smuzhiyun 
233*4882a593Smuzhiyun #define BH RM + 1
234*4882a593Smuzhiyun   { 0x3, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
235*4882a593Smuzhiyun 
236*4882a593Smuzhiyun   /* The BT field in an X or XL form instruction.  */
237*4882a593Smuzhiyun #define BT BH + 1
238*4882a593Smuzhiyun   { 0x1f, 21, NULL, NULL, PPC_OPERAND_CR_BIT },
239*4882a593Smuzhiyun 
240*4882a593Smuzhiyun   /* The BI16 field in a BD8 form instruction.  */
241*4882a593Smuzhiyun #define BI16 BT + 1
242*4882a593Smuzhiyun   { 0x3, 8, NULL, NULL, PPC_OPERAND_CR_BIT },
243*4882a593Smuzhiyun 
244*4882a593Smuzhiyun   /* The BI32 field in a BD15 form instruction.  */
245*4882a593Smuzhiyun #define BI32 BI16 + 1
246*4882a593Smuzhiyun   { 0xf, 16, NULL, NULL, PPC_OPERAND_CR_BIT },
247*4882a593Smuzhiyun 
248*4882a593Smuzhiyun   /* The BO32 field in a BD15 form instruction.  */
249*4882a593Smuzhiyun #define BO32 BI32 + 1
250*4882a593Smuzhiyun   { 0x3, 20, NULL, NULL, 0 },
251*4882a593Smuzhiyun 
252*4882a593Smuzhiyun   /* The B8 field in a BD8 form instruction.  */
253*4882a593Smuzhiyun #define B8 BO32 + 1
254*4882a593Smuzhiyun   { 0x1fe, -1, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
255*4882a593Smuzhiyun 
256*4882a593Smuzhiyun   /* The B15 field in a BD15 form instruction.  The lowest bit is
257*4882a593Smuzhiyun      forced to zero.  */
258*4882a593Smuzhiyun #define B15 B8 + 1
259*4882a593Smuzhiyun   { 0xfffe, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
260*4882a593Smuzhiyun 
261*4882a593Smuzhiyun   /* The B24 field in a BD24 form instruction.  The lowest bit is
262*4882a593Smuzhiyun      forced to zero.  */
263*4882a593Smuzhiyun #define B24 B15 + 1
264*4882a593Smuzhiyun   { 0x1fffffe, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
265*4882a593Smuzhiyun 
266*4882a593Smuzhiyun   /* The condition register number portion of the BI field in a B form
267*4882a593Smuzhiyun      or XL form instruction.  This is used for the extended
268*4882a593Smuzhiyun      conditional branch mnemonics, which set the lower two bits of the
269*4882a593Smuzhiyun      BI field.  This field is optional.  */
270*4882a593Smuzhiyun #define CR B24 + 1
271*4882a593Smuzhiyun   { 0x7, 18, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
272*4882a593Smuzhiyun 
273*4882a593Smuzhiyun   /* The CRB field in an X form instruction.  */
274*4882a593Smuzhiyun #define CRB CR + 1
275*4882a593Smuzhiyun   /* The MB field in an M form instruction.  */
276*4882a593Smuzhiyun #define MB CRB
277*4882a593Smuzhiyun #define MB_MASK (0x1f << 6)
278*4882a593Smuzhiyun   { 0x1f, 6, NULL, NULL, 0 },
279*4882a593Smuzhiyun 
280*4882a593Smuzhiyun   /* The CRD32 field in an XL form instruction.  */
281*4882a593Smuzhiyun #define CRD32 CRB + 1
282*4882a593Smuzhiyun   { 0x3, 21, NULL, NULL, PPC_OPERAND_CR_REG },
283*4882a593Smuzhiyun 
284*4882a593Smuzhiyun   /* The CRFS field in an X form instruction.  */
285*4882a593Smuzhiyun #define CRFS CRD32 + 1
286*4882a593Smuzhiyun   { 0x7, 0, NULL, NULL, PPC_OPERAND_CR_REG },
287*4882a593Smuzhiyun 
288*4882a593Smuzhiyun #define CRS CRFS + 1
289*4882a593Smuzhiyun   { 0x3, 18, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
290*4882a593Smuzhiyun 
291*4882a593Smuzhiyun   /* The CT field in an X form instruction.  */
292*4882a593Smuzhiyun #define CT CRS + 1
293*4882a593Smuzhiyun   /* The MO field in an mbar instruction.  */
294*4882a593Smuzhiyun #define MO CT
295*4882a593Smuzhiyun   { 0x1f, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
296*4882a593Smuzhiyun 
297*4882a593Smuzhiyun   /* The D field in a D form instruction.  This is a displacement off
298*4882a593Smuzhiyun      a register, and implies that the next operand is a register in
299*4882a593Smuzhiyun      parentheses.  */
300*4882a593Smuzhiyun #define D CT + 1
301*4882a593Smuzhiyun   { 0xffff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
302*4882a593Smuzhiyun 
303*4882a593Smuzhiyun   /* The D8 field in a D form instruction.  This is a displacement off
304*4882a593Smuzhiyun      a register, and implies that the next operand is a register in
305*4882a593Smuzhiyun      parentheses.  */
306*4882a593Smuzhiyun #define D8 D + 1
307*4882a593Smuzhiyun   { 0xff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
308*4882a593Smuzhiyun 
309*4882a593Smuzhiyun   /* The DCMX field in an X form instruction.  */
310*4882a593Smuzhiyun #define DCMX D8 + 1
311*4882a593Smuzhiyun   { 0x7f, 16, NULL, NULL, 0 },
312*4882a593Smuzhiyun 
313*4882a593Smuzhiyun   /* The split DCMX field in an X form instruction.  */
314*4882a593Smuzhiyun #define DCMXS DCMX + 1
315*4882a593Smuzhiyun   { 0x7f, PPC_OPSHIFT_INV, insert_dcmxs, extract_dcmxs, 0 },
316*4882a593Smuzhiyun 
317*4882a593Smuzhiyun   /* The DQ field in a DQ form instruction.  This is like D, but the
318*4882a593Smuzhiyun      lower four bits are forced to zero. */
319*4882a593Smuzhiyun #define DQ DCMXS + 1
320*4882a593Smuzhiyun   { 0xfff0, 0, NULL, NULL,
321*4882a593Smuzhiyun     PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DQ },
322*4882a593Smuzhiyun 
323*4882a593Smuzhiyun   /* The DS field in a DS form instruction.  This is like D, but the
324*4882a593Smuzhiyun      lower two bits are forced to zero.  */
325*4882a593Smuzhiyun #define DS DQ + 1
326*4882a593Smuzhiyun   { 0xfffc, 0, NULL, NULL,
327*4882a593Smuzhiyun     PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DS },
328*4882a593Smuzhiyun 
329*4882a593Smuzhiyun   /* The DUIS or BHRBE fields in a XFX form instruction, 10 bits
330*4882a593Smuzhiyun      unsigned imediate */
331*4882a593Smuzhiyun #define DUIS DS + 1
332*4882a593Smuzhiyun #define BHRBE DUIS
333*4882a593Smuzhiyun   { 0x3ff, 11, NULL, NULL, 0 },
334*4882a593Smuzhiyun 
335*4882a593Smuzhiyun   /* The split D field in a DX form instruction.  */
336*4882a593Smuzhiyun #define DXD DUIS + 1
337*4882a593Smuzhiyun   { 0xffff, PPC_OPSHIFT_INV, insert_dxd, extract_dxd,
338*4882a593Smuzhiyun     PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT},
339*4882a593Smuzhiyun 
340*4882a593Smuzhiyun   /* The split ND field in a DX form instruction.
341*4882a593Smuzhiyun      This is the same as the DX field, only negated.  */
342*4882a593Smuzhiyun #define NDXD DXD + 1
343*4882a593Smuzhiyun   { 0xffff, PPC_OPSHIFT_INV, insert_dxdn, extract_dxdn,
344*4882a593Smuzhiyun     PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT},
345*4882a593Smuzhiyun 
346*4882a593Smuzhiyun   /* The E field in a wrteei instruction.  */
347*4882a593Smuzhiyun   /* And the W bit in the pair singles instructions.  */
348*4882a593Smuzhiyun   /* And the ST field in a VX form instruction.  */
349*4882a593Smuzhiyun #define E NDXD + 1
350*4882a593Smuzhiyun #define PSW E
351*4882a593Smuzhiyun #define ST E
352*4882a593Smuzhiyun   { 0x1, 15, NULL, NULL, 0 },
353*4882a593Smuzhiyun 
354*4882a593Smuzhiyun   /* The FL1 field in a POWER SC form instruction.  */
355*4882a593Smuzhiyun #define FL1 E + 1
356*4882a593Smuzhiyun   /* The U field in an X form instruction.  */
357*4882a593Smuzhiyun #define U FL1
358*4882a593Smuzhiyun   { 0xf, 12, NULL, NULL, 0 },
359*4882a593Smuzhiyun 
360*4882a593Smuzhiyun   /* The FL2 field in a POWER SC form instruction.  */
361*4882a593Smuzhiyun #define FL2 FL1 + 1
362*4882a593Smuzhiyun   { 0x7, 2, NULL, NULL, 0 },
363*4882a593Smuzhiyun 
364*4882a593Smuzhiyun   /* The FLM field in an XFL form instruction.  */
365*4882a593Smuzhiyun #define FLM FL2 + 1
366*4882a593Smuzhiyun   { 0xff, 17, NULL, NULL, 0 },
367*4882a593Smuzhiyun 
368*4882a593Smuzhiyun   /* The FRA field in an X or A form instruction.  */
369*4882a593Smuzhiyun #define FRA FLM + 1
370*4882a593Smuzhiyun #define FRA_MASK (0x1f << 16)
371*4882a593Smuzhiyun   { 0x1f, 16, NULL, NULL, PPC_OPERAND_FPR },
372*4882a593Smuzhiyun 
373*4882a593Smuzhiyun   /* The FRAp field of DFP instructions.  */
374*4882a593Smuzhiyun #define FRAp FRA + 1
375*4882a593Smuzhiyun   { 0x1e, 16, NULL, NULL, PPC_OPERAND_FPR },
376*4882a593Smuzhiyun 
377*4882a593Smuzhiyun   /* The FRB field in an X or A form instruction.  */
378*4882a593Smuzhiyun #define FRB FRAp + 1
379*4882a593Smuzhiyun #define FRB_MASK (0x1f << 11)
380*4882a593Smuzhiyun   { 0x1f, 11, NULL, NULL, PPC_OPERAND_FPR },
381*4882a593Smuzhiyun 
382*4882a593Smuzhiyun   /* The FRBp field of DFP instructions.  */
383*4882a593Smuzhiyun #define FRBp FRB + 1
384*4882a593Smuzhiyun   { 0x1e, 11, NULL, NULL, PPC_OPERAND_FPR },
385*4882a593Smuzhiyun 
386*4882a593Smuzhiyun   /* The FRC field in an A form instruction.  */
387*4882a593Smuzhiyun #define FRC FRBp + 1
388*4882a593Smuzhiyun #define FRC_MASK (0x1f << 6)
389*4882a593Smuzhiyun   { 0x1f, 6, NULL, NULL, PPC_OPERAND_FPR },
390*4882a593Smuzhiyun 
391*4882a593Smuzhiyun   /* The FRS field in an X form instruction or the FRT field in a D, X
392*4882a593Smuzhiyun      or A form instruction.  */
393*4882a593Smuzhiyun #define FRS FRC + 1
394*4882a593Smuzhiyun #define FRT FRS
395*4882a593Smuzhiyun   { 0x1f, 21, NULL, NULL, PPC_OPERAND_FPR },
396*4882a593Smuzhiyun 
397*4882a593Smuzhiyun   /* The FRSp field of stfdp or the FRTp field of lfdp and DFP
398*4882a593Smuzhiyun      instructions.  */
399*4882a593Smuzhiyun #define FRSp FRS + 1
400*4882a593Smuzhiyun #define FRTp FRSp
401*4882a593Smuzhiyun   { 0x1e, 21, NULL, NULL, PPC_OPERAND_FPR },
402*4882a593Smuzhiyun 
403*4882a593Smuzhiyun   /* The FXM field in an XFX instruction.  */
404*4882a593Smuzhiyun #define FXM FRSp + 1
405*4882a593Smuzhiyun   { 0xff, 12, insert_fxm, extract_fxm, 0 },
406*4882a593Smuzhiyun 
407*4882a593Smuzhiyun   /* Power4 version for mfcr.  */
408*4882a593Smuzhiyun #define FXM4 FXM + 1
409*4882a593Smuzhiyun   { 0xff, 12, insert_fxm, extract_fxm,
410*4882a593Smuzhiyun     PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL_VALUE},
411*4882a593Smuzhiyun   /* If the FXM4 operand is ommitted, use the sentinel value -1.  */
412*4882a593Smuzhiyun   { -1, -1, NULL, NULL, 0},
413*4882a593Smuzhiyun 
414*4882a593Smuzhiyun   /* The IMM20 field in an LI instruction.  */
415*4882a593Smuzhiyun #define IMM20 FXM4 + 2
416*4882a593Smuzhiyun   { 0xfffff, PPC_OPSHIFT_INV, insert_li20, extract_li20, PPC_OPERAND_SIGNED},
417*4882a593Smuzhiyun 
418*4882a593Smuzhiyun   /* The L field in a D or X form instruction.  */
419*4882a593Smuzhiyun #define L IMM20 + 1
420*4882a593Smuzhiyun   { 0x1, 21, NULL, NULL, 0 },
421*4882a593Smuzhiyun 
422*4882a593Smuzhiyun   /* The optional L field in tlbie and tlbiel instructions.  */
423*4882a593Smuzhiyun #define LOPT L + 1
424*4882a593Smuzhiyun   /* The R field in a HTM X form instruction.  */
425*4882a593Smuzhiyun #define HTM_R LOPT
426*4882a593Smuzhiyun   { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
427*4882a593Smuzhiyun 
428*4882a593Smuzhiyun   /* The optional (for 32-bit) L field in cmp[l][i] instructions.  */
429*4882a593Smuzhiyun #define L32OPT LOPT + 1
430*4882a593Smuzhiyun   { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL32 },
431*4882a593Smuzhiyun 
432*4882a593Smuzhiyun   /* The L field in dcbf instruction.  */
433*4882a593Smuzhiyun #define L2OPT L32OPT + 1
434*4882a593Smuzhiyun   { 0x3, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
435*4882a593Smuzhiyun 
436*4882a593Smuzhiyun   /* The LEV field in a POWER SVC form instruction.  */
437*4882a593Smuzhiyun #define SVC_LEV L2OPT + 1
438*4882a593Smuzhiyun   { 0x7f, 5, NULL, NULL, 0 },
439*4882a593Smuzhiyun 
440*4882a593Smuzhiyun   /* The LEV field in an SC form instruction.  */
441*4882a593Smuzhiyun #define LEV SVC_LEV + 1
442*4882a593Smuzhiyun   { 0x7f, 5, NULL, NULL, PPC_OPERAND_OPTIONAL },
443*4882a593Smuzhiyun 
444*4882a593Smuzhiyun   /* The LI field in an I form instruction.  The lower two bits are
445*4882a593Smuzhiyun      forced to zero.  */
446*4882a593Smuzhiyun #define LI LEV + 1
447*4882a593Smuzhiyun   { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
448*4882a593Smuzhiyun 
449*4882a593Smuzhiyun   /* The LI field in an I form instruction when used as an absolute
450*4882a593Smuzhiyun      address.  */
451*4882a593Smuzhiyun #define LIA LI + 1
452*4882a593Smuzhiyun   { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
453*4882a593Smuzhiyun 
454*4882a593Smuzhiyun   /* The LS or WC field in an X (sync or wait) form instruction.  */
455*4882a593Smuzhiyun #define LS LIA + 1
456*4882a593Smuzhiyun #define WC LS
457*4882a593Smuzhiyun   { 0x3, 21, insert_ls, NULL, PPC_OPERAND_OPTIONAL },
458*4882a593Smuzhiyun 
459*4882a593Smuzhiyun   /* The ME field in an M form instruction.  */
460*4882a593Smuzhiyun #define ME LS + 1
461*4882a593Smuzhiyun #define ME_MASK (0x1f << 1)
462*4882a593Smuzhiyun   { 0x1f, 1, NULL, NULL, 0 },
463*4882a593Smuzhiyun 
464*4882a593Smuzhiyun   /* The MB and ME fields in an M form instruction expressed a single
465*4882a593Smuzhiyun      operand which is a bitmask indicating which bits to select.  This
466*4882a593Smuzhiyun      is a two operand form using PPC_OPERAND_NEXT.  See the
467*4882a593Smuzhiyun      description in opcode/ppc.h for what this means.  */
468*4882a593Smuzhiyun #define MBE ME + 1
469*4882a593Smuzhiyun   { 0x1f, 6, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_NEXT },
470*4882a593Smuzhiyun   { -1, 0, insert_mbe, extract_mbe, 0 },
471*4882a593Smuzhiyun 
472*4882a593Smuzhiyun   /* The MB or ME field in an MD or MDS form instruction.  The high
473*4882a593Smuzhiyun      bit is wrapped to the low end.  */
474*4882a593Smuzhiyun #define MB6 MBE + 2
475*4882a593Smuzhiyun #define ME6 MB6
476*4882a593Smuzhiyun #define MB6_MASK (0x3f << 5)
477*4882a593Smuzhiyun   { 0x3f, 5, insert_mb6, extract_mb6, 0 },
478*4882a593Smuzhiyun 
479*4882a593Smuzhiyun   /* The NB field in an X form instruction.  The value 32 is stored as
480*4882a593Smuzhiyun      0.  */
481*4882a593Smuzhiyun #define NB MB6 + 1
482*4882a593Smuzhiyun   { 0x1f, 11, NULL, extract_nb, PPC_OPERAND_PLUS1 },
483*4882a593Smuzhiyun 
484*4882a593Smuzhiyun   /* The NBI field in an lswi instruction, which has special value
485*4882a593Smuzhiyun      restrictions.  The value 32 is stored as 0.  */
486*4882a593Smuzhiyun #define NBI NB + 1
487*4882a593Smuzhiyun   { 0x1f, 11, insert_nbi, extract_nb, PPC_OPERAND_PLUS1 },
488*4882a593Smuzhiyun 
489*4882a593Smuzhiyun   /* The NSI field in a D form instruction.  This is the same as the
490*4882a593Smuzhiyun      SI field, only negated.  */
491*4882a593Smuzhiyun #define NSI NBI + 1
492*4882a593Smuzhiyun   { 0xffff, 0, insert_nsi, extract_nsi,
493*4882a593Smuzhiyun     PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
494*4882a593Smuzhiyun 
495*4882a593Smuzhiyun   /* The NSI field in a D form instruction when we accept a wide range
496*4882a593Smuzhiyun      of positive values.  */
497*4882a593Smuzhiyun #define NSISIGNOPT NSI + 1
498*4882a593Smuzhiyun   { 0xffff, 0, insert_nsi, extract_nsi,
499*4882a593Smuzhiyun     PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
500*4882a593Smuzhiyun 
501*4882a593Smuzhiyun   /* The RA field in an D, DS, DQ, X, XO, M, or MDS form instruction.  */
502*4882a593Smuzhiyun #define RA NSISIGNOPT + 1
503*4882a593Smuzhiyun #define RA_MASK (0x1f << 16)
504*4882a593Smuzhiyun   { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR },
505*4882a593Smuzhiyun 
506*4882a593Smuzhiyun   /* As above, but 0 in the RA field means zero, not r0.  */
507*4882a593Smuzhiyun #define RA0 RA + 1
508*4882a593Smuzhiyun   { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR_0 },
509*4882a593Smuzhiyun 
510*4882a593Smuzhiyun   /* The RA field in the DQ form lq or an lswx instruction, which have special
511*4882a593Smuzhiyun      value restrictions.  */
512*4882a593Smuzhiyun #define RAQ RA0 + 1
513*4882a593Smuzhiyun #define RAX RAQ
514*4882a593Smuzhiyun   { 0x1f, 16, insert_raq, NULL, PPC_OPERAND_GPR_0 },
515*4882a593Smuzhiyun 
516*4882a593Smuzhiyun   /* The RA field in a D or X form instruction which is an updating
517*4882a593Smuzhiyun      load, which means that the RA field may not be zero and may not
518*4882a593Smuzhiyun      equal the RT field.  */
519*4882a593Smuzhiyun #define RAL RAQ + 1
520*4882a593Smuzhiyun   { 0x1f, 16, insert_ral, NULL, PPC_OPERAND_GPR_0 },
521*4882a593Smuzhiyun 
522*4882a593Smuzhiyun   /* The RA field in an lmw instruction, which has special value
523*4882a593Smuzhiyun      restrictions.  */
524*4882a593Smuzhiyun #define RAM RAL + 1
525*4882a593Smuzhiyun   { 0x1f, 16, insert_ram, NULL, PPC_OPERAND_GPR_0 },
526*4882a593Smuzhiyun 
527*4882a593Smuzhiyun   /* The RA field in a D or X form instruction which is an updating
528*4882a593Smuzhiyun      store or an updating floating point load, which means that the RA
529*4882a593Smuzhiyun      field may not be zero.  */
530*4882a593Smuzhiyun #define RAS RAM + 1
531*4882a593Smuzhiyun   { 0x1f, 16, insert_ras, NULL, PPC_OPERAND_GPR_0 },
532*4882a593Smuzhiyun 
533*4882a593Smuzhiyun   /* The RA field of the tlbwe, dccci and iccci instructions,
534*4882a593Smuzhiyun      which are optional.  */
535*4882a593Smuzhiyun #define RAOPT RAS + 1
536*4882a593Smuzhiyun   { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
537*4882a593Smuzhiyun 
538*4882a593Smuzhiyun   /* The RB field in an X, XO, M, or MDS form instruction.  */
539*4882a593Smuzhiyun #define RB RAOPT + 1
540*4882a593Smuzhiyun #define RB_MASK (0x1f << 11)
541*4882a593Smuzhiyun   { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR },
542*4882a593Smuzhiyun 
543*4882a593Smuzhiyun   /* The RB field in an X form instruction when it must be the same as
544*4882a593Smuzhiyun      the RS field in the instruction.  This is used for extended
545*4882a593Smuzhiyun      mnemonics like mr.  */
546*4882a593Smuzhiyun #define RBS RB + 1
547*4882a593Smuzhiyun   { 0x1f, 11, insert_rbs, extract_rbs, PPC_OPERAND_FAKE },
548*4882a593Smuzhiyun 
549*4882a593Smuzhiyun   /* The RB field in an lswx instruction, which has special value
550*4882a593Smuzhiyun      restrictions.  */
551*4882a593Smuzhiyun #define RBX RBS + 1
552*4882a593Smuzhiyun   { 0x1f, 11, insert_rbx, NULL, PPC_OPERAND_GPR },
553*4882a593Smuzhiyun 
554*4882a593Smuzhiyun   /* The RB field of the dccci and iccci instructions, which are optional.  */
555*4882a593Smuzhiyun #define RBOPT RBX + 1
556*4882a593Smuzhiyun   { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
557*4882a593Smuzhiyun 
558*4882a593Smuzhiyun   /* The RC register field in an maddld, maddhd or maddhdu instruction.  */
559*4882a593Smuzhiyun #define RC RBOPT + 1
560*4882a593Smuzhiyun   { 0x1f, 6, NULL, NULL, PPC_OPERAND_GPR },
561*4882a593Smuzhiyun 
562*4882a593Smuzhiyun   /* The RS field in a D, DS, X, XFX, XS, M, MD or MDS form
563*4882a593Smuzhiyun      instruction or the RT field in a D, DS, X, XFX or XO form
564*4882a593Smuzhiyun      instruction.  */
565*4882a593Smuzhiyun #define RS RC + 1
566*4882a593Smuzhiyun #define RT RS
567*4882a593Smuzhiyun #define RT_MASK (0x1f << 21)
568*4882a593Smuzhiyun #define RD RS
569*4882a593Smuzhiyun   { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR },
570*4882a593Smuzhiyun 
571*4882a593Smuzhiyun   /* The RS and RT fields of the DS form stq and DQ form lq instructions,
572*4882a593Smuzhiyun      which have special value restrictions.  */
573*4882a593Smuzhiyun #define RSQ RS + 1
574*4882a593Smuzhiyun #define RTQ RSQ
575*4882a593Smuzhiyun   { 0x1e, 21, NULL, NULL, PPC_OPERAND_GPR },
576*4882a593Smuzhiyun 
577*4882a593Smuzhiyun   /* The RS field of the tlbwe instruction, which is optional.  */
578*4882a593Smuzhiyun #define RSO RSQ + 1
579*4882a593Smuzhiyun #define RTO RSO
580*4882a593Smuzhiyun   { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
581*4882a593Smuzhiyun 
582*4882a593Smuzhiyun   /* The RX field of the SE_RR form instruction.  */
583*4882a593Smuzhiyun #define RX RSO + 1
584*4882a593Smuzhiyun   { 0x1f, PPC_OPSHIFT_INV, insert_rx, extract_rx, PPC_OPERAND_GPR },
585*4882a593Smuzhiyun 
586*4882a593Smuzhiyun   /* The ARX field of the SE_RR form instruction.  */
587*4882a593Smuzhiyun #define ARX RX + 1
588*4882a593Smuzhiyun   { 0x1f, PPC_OPSHIFT_INV, insert_arx, extract_arx, PPC_OPERAND_GPR },
589*4882a593Smuzhiyun 
590*4882a593Smuzhiyun   /* The RY field of the SE_RR form instruction.  */
591*4882a593Smuzhiyun #define RY ARX + 1
592*4882a593Smuzhiyun #define RZ RY
593*4882a593Smuzhiyun   { 0x1f, PPC_OPSHIFT_INV, insert_ry, extract_ry, PPC_OPERAND_GPR },
594*4882a593Smuzhiyun 
595*4882a593Smuzhiyun   /* The ARY field of the SE_RR form instruction.  */
596*4882a593Smuzhiyun #define ARY RY + 1
597*4882a593Smuzhiyun   { 0x1f, PPC_OPSHIFT_INV, insert_ary, extract_ary, PPC_OPERAND_GPR },
598*4882a593Smuzhiyun 
599*4882a593Smuzhiyun   /* The SCLSCI8 field in a D form instruction.  */
600*4882a593Smuzhiyun #define SCLSCI8 ARY + 1
601*4882a593Smuzhiyun   { 0xffffffff, PPC_OPSHIFT_INV, insert_sci8, extract_sci8, 0 },
602*4882a593Smuzhiyun 
603*4882a593Smuzhiyun   /* The SCLSCI8N field in a D form instruction.  This is the same as the
604*4882a593Smuzhiyun      SCLSCI8 field, only negated.  */
605*4882a593Smuzhiyun #define SCLSCI8N SCLSCI8 + 1
606*4882a593Smuzhiyun   { 0xffffffff, PPC_OPSHIFT_INV, insert_sci8n, extract_sci8n,
607*4882a593Smuzhiyun     PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
608*4882a593Smuzhiyun 
609*4882a593Smuzhiyun   /* The SD field of the SD4 form instruction.  */
610*4882a593Smuzhiyun #define SE_SD SCLSCI8N + 1
611*4882a593Smuzhiyun   { 0xf, 8, NULL, NULL, PPC_OPERAND_PARENS },
612*4882a593Smuzhiyun 
613*4882a593Smuzhiyun   /* The SD field of the SD4 form instruction, for halfword.  */
614*4882a593Smuzhiyun #define SE_SDH SE_SD + 1
615*4882a593Smuzhiyun   { 0x1e, PPC_OPSHIFT_INV, insert_sd4h, extract_sd4h, PPC_OPERAND_PARENS },
616*4882a593Smuzhiyun 
617*4882a593Smuzhiyun   /* The SD field of the SD4 form instruction, for word.  */
618*4882a593Smuzhiyun #define SE_SDW SE_SDH + 1
619*4882a593Smuzhiyun   { 0x3c, PPC_OPSHIFT_INV, insert_sd4w, extract_sd4w, PPC_OPERAND_PARENS },
620*4882a593Smuzhiyun 
621*4882a593Smuzhiyun   /* The SH field in an X or M form instruction.  */
622*4882a593Smuzhiyun #define SH SE_SDW + 1
623*4882a593Smuzhiyun #define SH_MASK (0x1f << 11)
624*4882a593Smuzhiyun   /* The other UIMM field in a EVX form instruction.  */
625*4882a593Smuzhiyun #define EVUIMM SH
626*4882a593Smuzhiyun   /* The FC field in an atomic X form instruction.  */
627*4882a593Smuzhiyun #define FC SH
628*4882a593Smuzhiyun   { 0x1f, 11, NULL, NULL, 0 },
629*4882a593Smuzhiyun 
630*4882a593Smuzhiyun   /* The SI field in a HTM X form instruction.  */
631*4882a593Smuzhiyun #define HTM_SI SH + 1
632*4882a593Smuzhiyun   { 0x1f, 11, NULL, NULL, PPC_OPERAND_SIGNED },
633*4882a593Smuzhiyun 
634*4882a593Smuzhiyun   /* The SH field in an MD form instruction.  This is split.  */
635*4882a593Smuzhiyun #define SH6 HTM_SI + 1
636*4882a593Smuzhiyun #define SH6_MASK ((0x1f << 11) | (1 << 1))
637*4882a593Smuzhiyun   { 0x3f, PPC_OPSHIFT_INV, insert_sh6, extract_sh6, 0 },
638*4882a593Smuzhiyun 
639*4882a593Smuzhiyun   /* The SH field of the tlbwe instruction, which is optional.  */
640*4882a593Smuzhiyun #define SHO SH6 + 1
641*4882a593Smuzhiyun   { 0x1f, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
642*4882a593Smuzhiyun 
643*4882a593Smuzhiyun   /* The SI field in a D form instruction.  */
644*4882a593Smuzhiyun #define SI SHO + 1
645*4882a593Smuzhiyun   { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED },
646*4882a593Smuzhiyun 
647*4882a593Smuzhiyun   /* The SI field in a D form instruction when we accept a wide range
648*4882a593Smuzhiyun      of positive values.  */
649*4882a593Smuzhiyun #define SISIGNOPT SI + 1
650*4882a593Smuzhiyun   { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
651*4882a593Smuzhiyun 
652*4882a593Smuzhiyun   /* The SI8 field in a D form instruction.  */
653*4882a593Smuzhiyun #define SI8 SISIGNOPT + 1
654*4882a593Smuzhiyun   { 0xff, 0, NULL, NULL, PPC_OPERAND_SIGNED },
655*4882a593Smuzhiyun 
656*4882a593Smuzhiyun   /* The SPR field in an XFX form instruction.  This is flipped--the
657*4882a593Smuzhiyun      lower 5 bits are stored in the upper 5 and vice- versa.  */
658*4882a593Smuzhiyun #define SPR SI8 + 1
659*4882a593Smuzhiyun #define PMR SPR
660*4882a593Smuzhiyun #define TMR SPR
661*4882a593Smuzhiyun #define SPR_MASK (0x3ff << 11)
662*4882a593Smuzhiyun   { 0x3ff, 11, insert_spr, extract_spr, 0 },
663*4882a593Smuzhiyun 
664*4882a593Smuzhiyun   /* The BAT index number in an XFX form m[ft]ibat[lu] instruction.  */
665*4882a593Smuzhiyun #define SPRBAT SPR + 1
666*4882a593Smuzhiyun #define SPRBAT_MASK (0x3 << 17)
667*4882a593Smuzhiyun   { 0x3, 17, NULL, NULL, 0 },
668*4882a593Smuzhiyun 
669*4882a593Smuzhiyun   /* The SPRG register number in an XFX form m[ft]sprg instruction.  */
670*4882a593Smuzhiyun #define SPRG SPRBAT + 1
671*4882a593Smuzhiyun   { 0x1f, 16, insert_sprg, extract_sprg, 0 },
672*4882a593Smuzhiyun 
673*4882a593Smuzhiyun   /* The SR field in an X form instruction.  */
674*4882a593Smuzhiyun #define SR SPRG + 1
675*4882a593Smuzhiyun   /* The 4-bit UIMM field in a VX form instruction.  */
676*4882a593Smuzhiyun #define UIMM4 SR
677*4882a593Smuzhiyun   { 0xf, 16, NULL, NULL, 0 },
678*4882a593Smuzhiyun 
679*4882a593Smuzhiyun   /* The STRM field in an X AltiVec form instruction.  */
680*4882a593Smuzhiyun #define STRM SR + 1
681*4882a593Smuzhiyun   /* The T field in a tlbilx form instruction.  */
682*4882a593Smuzhiyun #define T STRM
683*4882a593Smuzhiyun   /* The L field in wclr instructions.  */
684*4882a593Smuzhiyun #define L2 STRM
685*4882a593Smuzhiyun   { 0x3, 21, NULL, NULL, 0 },
686*4882a593Smuzhiyun 
687*4882a593Smuzhiyun   /* The ESYNC field in an X (sync) form instruction.  */
688*4882a593Smuzhiyun #define ESYNC STRM + 1
689*4882a593Smuzhiyun   { 0xf, 16, insert_esync, NULL, PPC_OPERAND_OPTIONAL },
690*4882a593Smuzhiyun 
691*4882a593Smuzhiyun   /* The SV field in a POWER SC form instruction.  */
692*4882a593Smuzhiyun #define SV ESYNC + 1
693*4882a593Smuzhiyun   { 0x3fff, 2, NULL, NULL, 0 },
694*4882a593Smuzhiyun 
695*4882a593Smuzhiyun   /* The TBR field in an XFX form instruction.  This is like the SPR
696*4882a593Smuzhiyun      field, but it is optional.  */
697*4882a593Smuzhiyun #define TBR SV + 1
698*4882a593Smuzhiyun   { 0x3ff, 11, insert_tbr, extract_tbr,
699*4882a593Smuzhiyun     PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL_VALUE},
700*4882a593Smuzhiyun   /* If the TBR operand is ommitted, use the value 268.  */
701*4882a593Smuzhiyun   { -1, 268, NULL, NULL, 0},
702*4882a593Smuzhiyun 
703*4882a593Smuzhiyun   /* The TO field in a D or X form instruction.  */
704*4882a593Smuzhiyun #define TO TBR + 2
705*4882a593Smuzhiyun #define DUI TO
706*4882a593Smuzhiyun #define TO_MASK (0x1f << 21)
707*4882a593Smuzhiyun   { 0x1f, 21, NULL, NULL, 0 },
708*4882a593Smuzhiyun 
709*4882a593Smuzhiyun   /* The UI field in a D form instruction.  */
710*4882a593Smuzhiyun #define UI TO + 1
711*4882a593Smuzhiyun   { 0xffff, 0, NULL, NULL, 0 },
712*4882a593Smuzhiyun 
713*4882a593Smuzhiyun #define UISIGNOPT UI + 1
714*4882a593Smuzhiyun   { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNOPT },
715*4882a593Smuzhiyun 
716*4882a593Smuzhiyun   /* The IMM field in an SE_IM5 instruction.  */
717*4882a593Smuzhiyun #define UI5 UISIGNOPT + 1
718*4882a593Smuzhiyun   { 0x1f, 4, NULL, NULL, 0 },
719*4882a593Smuzhiyun 
720*4882a593Smuzhiyun   /* The OIMM field in an SE_OIM5 instruction.  */
721*4882a593Smuzhiyun #define OIMM5 UI5 + 1
722*4882a593Smuzhiyun   { 0x1f, PPC_OPSHIFT_INV, insert_oimm, extract_oimm, PPC_OPERAND_PLUS1 },
723*4882a593Smuzhiyun 
724*4882a593Smuzhiyun   /* The UI7 field in an SE_LI instruction.  */
725*4882a593Smuzhiyun #define UI7 OIMM5 + 1
726*4882a593Smuzhiyun   { 0x7f, 4, NULL, NULL, 0 },
727*4882a593Smuzhiyun 
728*4882a593Smuzhiyun   /* The VA field in a VA, VX or VXR form instruction.  */
729*4882a593Smuzhiyun #define VA UI7 + 1
730*4882a593Smuzhiyun   { 0x1f, 16, NULL, NULL, PPC_OPERAND_VR },
731*4882a593Smuzhiyun 
732*4882a593Smuzhiyun   /* The VB field in a VA, VX or VXR form instruction.  */
733*4882a593Smuzhiyun #define VB VA + 1
734*4882a593Smuzhiyun   { 0x1f, 11, NULL, NULL, PPC_OPERAND_VR },
735*4882a593Smuzhiyun 
736*4882a593Smuzhiyun   /* The VC field in a VA form instruction.  */
737*4882a593Smuzhiyun #define VC VB + 1
738*4882a593Smuzhiyun   { 0x1f, 6, NULL, NULL, PPC_OPERAND_VR },
739*4882a593Smuzhiyun 
740*4882a593Smuzhiyun   /* The VD or VS field in a VA, VX, VXR or X form instruction.  */
741*4882a593Smuzhiyun #define VD VC + 1
742*4882a593Smuzhiyun #define VS VD
743*4882a593Smuzhiyun   { 0x1f, 21, NULL, NULL, PPC_OPERAND_VR },
744*4882a593Smuzhiyun 
745*4882a593Smuzhiyun   /* The SIMM field in a VX form instruction, and TE in Z form.  */
746*4882a593Smuzhiyun #define SIMM VD + 1
747*4882a593Smuzhiyun #define TE SIMM
748*4882a593Smuzhiyun   { 0x1f, 16, NULL, NULL, PPC_OPERAND_SIGNED},
749*4882a593Smuzhiyun 
750*4882a593Smuzhiyun   /* The UIMM field in a VX form instruction.  */
751*4882a593Smuzhiyun #define UIMM SIMM + 1
752*4882a593Smuzhiyun #define DCTL UIMM
753*4882a593Smuzhiyun   { 0x1f, 16, NULL, NULL, 0 },
754*4882a593Smuzhiyun 
755*4882a593Smuzhiyun   /* The 3-bit UIMM field in a VX form instruction.  */
756*4882a593Smuzhiyun #define UIMM3 UIMM + 1
757*4882a593Smuzhiyun   { 0x7, 16, NULL, NULL, 0 },
758*4882a593Smuzhiyun 
759*4882a593Smuzhiyun   /* The 6-bit UIM field in a X form instruction.  */
760*4882a593Smuzhiyun #define UIM6 UIMM3 + 1
761*4882a593Smuzhiyun   { 0x3f, 16, NULL, NULL, 0 },
762*4882a593Smuzhiyun 
763*4882a593Smuzhiyun   /* The SIX field in a VX form instruction.  */
764*4882a593Smuzhiyun #define SIX UIM6 + 1
765*4882a593Smuzhiyun   { 0xf, 11, NULL, NULL, 0 },
766*4882a593Smuzhiyun 
767*4882a593Smuzhiyun   /* The PS field in a VX form instruction.  */
768*4882a593Smuzhiyun #define PS SIX + 1
769*4882a593Smuzhiyun   { 0x1, 9, NULL, NULL, 0 },
770*4882a593Smuzhiyun 
771*4882a593Smuzhiyun   /* The SHB field in a VA form instruction.  */
772*4882a593Smuzhiyun #define SHB PS + 1
773*4882a593Smuzhiyun   { 0xf, 6, NULL, NULL, 0 },
774*4882a593Smuzhiyun 
775*4882a593Smuzhiyun   /* The other UIMM field in a half word EVX form instruction.  */
776*4882a593Smuzhiyun #define EVUIMM_2 SHB + 1
777*4882a593Smuzhiyun   { 0x3e, 10, NULL, NULL, PPC_OPERAND_PARENS },
778*4882a593Smuzhiyun 
779*4882a593Smuzhiyun   /* The other UIMM field in a word EVX form instruction.  */
780*4882a593Smuzhiyun #define EVUIMM_4 EVUIMM_2 + 1
781*4882a593Smuzhiyun   { 0x7c, 9, NULL, NULL, PPC_OPERAND_PARENS },
782*4882a593Smuzhiyun 
783*4882a593Smuzhiyun   /* The other UIMM field in a double EVX form instruction.  */
784*4882a593Smuzhiyun #define EVUIMM_8 EVUIMM_4 + 1
785*4882a593Smuzhiyun   { 0xf8, 8, NULL, NULL, PPC_OPERAND_PARENS },
786*4882a593Smuzhiyun 
787*4882a593Smuzhiyun   /* The WS or DRM field in an X form instruction.  */
788*4882a593Smuzhiyun #define WS EVUIMM_8 + 1
789*4882a593Smuzhiyun #define DRM WS
790*4882a593Smuzhiyun   { 0x7, 11, NULL, NULL, 0 },
791*4882a593Smuzhiyun 
792*4882a593Smuzhiyun   /* PowerPC paired singles extensions.  */
793*4882a593Smuzhiyun   /* W bit in the pair singles instructions for x type instructions.  */
794*4882a593Smuzhiyun #define PSWM WS + 1
795*4882a593Smuzhiyun   /* The BO16 field in a BD8 form instruction.  */
796*4882a593Smuzhiyun #define BO16 PSWM
797*4882a593Smuzhiyun   {  0x1, 10, 0, 0, 0 },
798*4882a593Smuzhiyun 
799*4882a593Smuzhiyun   /* IDX bits for quantization in the pair singles instructions.  */
800*4882a593Smuzhiyun #define PSQ PSWM + 1
801*4882a593Smuzhiyun   {  0x7, 12, 0, 0, 0 },
802*4882a593Smuzhiyun 
803*4882a593Smuzhiyun   /* IDX bits for quantization in the pair singles x-type instructions.  */
804*4882a593Smuzhiyun #define PSQM PSQ + 1
805*4882a593Smuzhiyun   {  0x7, 7, 0, 0, 0 },
806*4882a593Smuzhiyun 
807*4882a593Smuzhiyun   /* Smaller D field for quantization in the pair singles instructions.  */
808*4882a593Smuzhiyun #define PSD PSQM + 1
809*4882a593Smuzhiyun   {  0xfff, 0, 0, 0,  PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
810*4882a593Smuzhiyun 
811*4882a593Smuzhiyun   /* The L field in an mtmsrd or A form instruction or R or W in an X form.  */
812*4882a593Smuzhiyun #define A_L PSD + 1
813*4882a593Smuzhiyun #define W A_L
814*4882a593Smuzhiyun #define X_R A_L
815*4882a593Smuzhiyun   { 0x1, 16, NULL, NULL, PPC_OPERAND_OPTIONAL },
816*4882a593Smuzhiyun 
817*4882a593Smuzhiyun   /* The RMC or CY field in a Z23 form instruction.  */
818*4882a593Smuzhiyun #define RMC A_L + 1
819*4882a593Smuzhiyun #define CY RMC
820*4882a593Smuzhiyun   { 0x3, 9, NULL, NULL, 0 },
821*4882a593Smuzhiyun 
822*4882a593Smuzhiyun #define R RMC + 1
823*4882a593Smuzhiyun   { 0x1, 16, NULL, NULL, 0 },
824*4882a593Smuzhiyun 
825*4882a593Smuzhiyun #define RIC R + 1
826*4882a593Smuzhiyun   { 0x3, 18, NULL, NULL, PPC_OPERAND_OPTIONAL },
827*4882a593Smuzhiyun 
828*4882a593Smuzhiyun #define PRS RIC + 1
829*4882a593Smuzhiyun   { 0x1, 17, NULL, NULL, PPC_OPERAND_OPTIONAL },
830*4882a593Smuzhiyun 
831*4882a593Smuzhiyun #define SP PRS + 1
832*4882a593Smuzhiyun   { 0x3, 19, NULL, NULL, 0 },
833*4882a593Smuzhiyun 
834*4882a593Smuzhiyun #define S SP + 1
835*4882a593Smuzhiyun   { 0x1, 20, NULL, NULL, 0 },
836*4882a593Smuzhiyun 
837*4882a593Smuzhiyun   /* The S field in a XL form instruction.  */
838*4882a593Smuzhiyun #define SXL S + 1
839*4882a593Smuzhiyun   { 0x1, 11, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL_VALUE},
840*4882a593Smuzhiyun   /* If the SXL operand is ommitted, use the value 1.  */
841*4882a593Smuzhiyun   { -1, 1, NULL, NULL, 0},
842*4882a593Smuzhiyun 
843*4882a593Smuzhiyun   /* SH field starting at bit position 16.  */
844*4882a593Smuzhiyun #define SH16 SXL + 2
845*4882a593Smuzhiyun   /* The DCM and DGM fields in a Z form instruction.  */
846*4882a593Smuzhiyun #define DCM SH16
847*4882a593Smuzhiyun #define DGM DCM
848*4882a593Smuzhiyun   { 0x3f, 10, NULL, NULL, 0 },
849*4882a593Smuzhiyun 
850*4882a593Smuzhiyun   /* The EH field in larx instruction.  */
851*4882a593Smuzhiyun #define EH SH16 + 1
852*4882a593Smuzhiyun   { 0x1, 0, NULL, NULL, PPC_OPERAND_OPTIONAL },
853*4882a593Smuzhiyun 
854*4882a593Smuzhiyun   /* The L field in an mtfsf or XFL form instruction.  */
855*4882a593Smuzhiyun   /* The A field in a HTM X form instruction.  */
856*4882a593Smuzhiyun #define XFL_L EH + 1
857*4882a593Smuzhiyun #define HTM_A XFL_L
858*4882a593Smuzhiyun   { 0x1, 25, NULL, NULL, PPC_OPERAND_OPTIONAL},
859*4882a593Smuzhiyun 
860*4882a593Smuzhiyun   /* Xilinx APU related masks and macros */
861*4882a593Smuzhiyun #define FCRT XFL_L + 1
862*4882a593Smuzhiyun #define FCRT_MASK (0x1f << 21)
863*4882a593Smuzhiyun   { 0x1f, 21, 0, 0, PPC_OPERAND_FCR },
864*4882a593Smuzhiyun 
865*4882a593Smuzhiyun   /* Xilinx FSL related masks and macros */
866*4882a593Smuzhiyun #define FSL FCRT + 1
867*4882a593Smuzhiyun #define FSL_MASK (0x1f << 11)
868*4882a593Smuzhiyun   { 0x1f, 11, 0, 0, PPC_OPERAND_FSL },
869*4882a593Smuzhiyun 
870*4882a593Smuzhiyun   /* Xilinx UDI related masks and macros */
871*4882a593Smuzhiyun #define URT FSL + 1
872*4882a593Smuzhiyun   { 0x1f, 21, 0, 0, PPC_OPERAND_UDI },
873*4882a593Smuzhiyun 
874*4882a593Smuzhiyun #define URA URT + 1
875*4882a593Smuzhiyun   { 0x1f, 16, 0, 0, PPC_OPERAND_UDI },
876*4882a593Smuzhiyun 
877*4882a593Smuzhiyun #define URB URA + 1
878*4882a593Smuzhiyun   { 0x1f, 11, 0, 0, PPC_OPERAND_UDI },
879*4882a593Smuzhiyun 
880*4882a593Smuzhiyun #define URC URB + 1
881*4882a593Smuzhiyun   { 0x1f, 6, 0, 0, PPC_OPERAND_UDI },
882*4882a593Smuzhiyun 
883*4882a593Smuzhiyun   /* The VLESIMM field in a D form instruction.  */
884*4882a593Smuzhiyun #define VLESIMM URC + 1
885*4882a593Smuzhiyun   { 0xffff, PPC_OPSHIFT_INV, insert_vlesi, extract_vlesi,
886*4882a593Smuzhiyun     PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
887*4882a593Smuzhiyun 
888*4882a593Smuzhiyun   /* The VLENSIMM field in a D form instruction.  */
889*4882a593Smuzhiyun #define VLENSIMM VLESIMM + 1
890*4882a593Smuzhiyun   { 0xffff, PPC_OPSHIFT_INV, insert_vlensi, extract_vlensi,
891*4882a593Smuzhiyun     PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
892*4882a593Smuzhiyun 
893*4882a593Smuzhiyun   /* The VLEUIMM field in a D form instruction.  */
894*4882a593Smuzhiyun #define VLEUIMM VLENSIMM + 1
895*4882a593Smuzhiyun   { 0xffff, PPC_OPSHIFT_INV, insert_vleui, extract_vleui, 0 },
896*4882a593Smuzhiyun 
897*4882a593Smuzhiyun   /* The VLEUIMML field in a D form instruction.  */
898*4882a593Smuzhiyun #define VLEUIMML VLEUIMM + 1
899*4882a593Smuzhiyun   { 0xffff, PPC_OPSHIFT_INV, insert_vleil, extract_vleil, 0 },
900*4882a593Smuzhiyun 
901*4882a593Smuzhiyun   /* The XT and XS fields in an XX1 or XX3 form instruction.  This is split.  */
902*4882a593Smuzhiyun #define XS6 VLEUIMML + 1
903*4882a593Smuzhiyun #define XT6 XS6
904*4882a593Smuzhiyun   { 0x3f, PPC_OPSHIFT_INV, insert_xt6, extract_xt6, PPC_OPERAND_VSR },
905*4882a593Smuzhiyun 
906*4882a593Smuzhiyun   /* The XT and XS fields in an DQ form VSX instruction.  This is split.  */
907*4882a593Smuzhiyun #define XSQ6 XT6 + 1
908*4882a593Smuzhiyun #define XTQ6 XSQ6
909*4882a593Smuzhiyun   { 0x3f, PPC_OPSHIFT_INV, insert_xtq6, extract_xtq6, PPC_OPERAND_VSR },
910*4882a593Smuzhiyun 
911*4882a593Smuzhiyun   /* The XA field in an XX3 form instruction.  This is split.  */
912*4882a593Smuzhiyun #define XA6 XTQ6 + 1
913*4882a593Smuzhiyun   { 0x3f, PPC_OPSHIFT_INV, insert_xa6, extract_xa6, PPC_OPERAND_VSR },
914*4882a593Smuzhiyun 
915*4882a593Smuzhiyun   /* The XB field in an XX2 or XX3 form instruction.  This is split.  */
916*4882a593Smuzhiyun #define XB6 XA6 + 1
917*4882a593Smuzhiyun   { 0x3f, PPC_OPSHIFT_INV, insert_xb6, extract_xb6, PPC_OPERAND_VSR },
918*4882a593Smuzhiyun 
919*4882a593Smuzhiyun   /* The XB field in an XX3 form instruction when it must be the same as
920*4882a593Smuzhiyun      the XA field in the instruction.  This is used in extended mnemonics
921*4882a593Smuzhiyun      like xvmovdp.  This is split.  */
922*4882a593Smuzhiyun #define XB6S XB6 + 1
923*4882a593Smuzhiyun   { 0x3f, PPC_OPSHIFT_INV, insert_xb6s, extract_xb6s, PPC_OPERAND_FAKE },
924*4882a593Smuzhiyun 
925*4882a593Smuzhiyun   /* The XC field in an XX4 form instruction.  This is split.  */
926*4882a593Smuzhiyun #define XC6 XB6S + 1
927*4882a593Smuzhiyun   { 0x3f, PPC_OPSHIFT_INV, insert_xc6, extract_xc6, PPC_OPERAND_VSR },
928*4882a593Smuzhiyun 
929*4882a593Smuzhiyun   /* The DM or SHW field in an XX3 form instruction.  */
930*4882a593Smuzhiyun #define DM XC6 + 1
931*4882a593Smuzhiyun #define SHW DM
932*4882a593Smuzhiyun   { 0x3, 8, NULL, NULL, 0 },
933*4882a593Smuzhiyun 
934*4882a593Smuzhiyun   /* The DM field in an extended mnemonic XX3 form instruction.  */
935*4882a593Smuzhiyun #define DMEX DM + 1
936*4882a593Smuzhiyun   { 0x3, 8, insert_dm, extract_dm, 0 },
937*4882a593Smuzhiyun 
938*4882a593Smuzhiyun   /* The UIM field in an XX2 form instruction.  */
939*4882a593Smuzhiyun #define UIM DMEX + 1
940*4882a593Smuzhiyun   /* The 2-bit UIMM field in a VX form instruction.  */
941*4882a593Smuzhiyun #define UIMM2 UIM
942*4882a593Smuzhiyun   /* The 2-bit L field in a darn instruction.  */
943*4882a593Smuzhiyun #define LRAND UIM
944*4882a593Smuzhiyun   { 0x3, 16, NULL, NULL, 0 },
945*4882a593Smuzhiyun 
946*4882a593Smuzhiyun #define ERAT_T UIM + 1
947*4882a593Smuzhiyun   { 0x7, 21, NULL, NULL, 0 },
948*4882a593Smuzhiyun 
949*4882a593Smuzhiyun #define IH ERAT_T + 1
950*4882a593Smuzhiyun   { 0x7, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
951*4882a593Smuzhiyun 
952*4882a593Smuzhiyun   /* The 8-bit IMM8 field in a XX1 form instruction.  */
953*4882a593Smuzhiyun #define IMM8 IH + 1
954*4882a593Smuzhiyun   { 0xff, 11, NULL, NULL, PPC_OPERAND_SIGNOPT },
955*4882a593Smuzhiyun };
956*4882a593Smuzhiyun 
957*4882a593Smuzhiyun const unsigned int num_powerpc_operands = (sizeof (powerpc_operands)
958*4882a593Smuzhiyun 					   / sizeof (powerpc_operands[0]));
959*4882a593Smuzhiyun 
960*4882a593Smuzhiyun /* The functions used to insert and extract complicated operands.  */
961*4882a593Smuzhiyun 
962*4882a593Smuzhiyun /* The ARX, ARY, RX and RY operands are alternate encodings of GPRs.  */
963*4882a593Smuzhiyun 
964*4882a593Smuzhiyun static unsigned long
insert_arx(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)965*4882a593Smuzhiyun insert_arx (unsigned long insn,
966*4882a593Smuzhiyun 	    long value,
967*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
968*4882a593Smuzhiyun 	    const char **errmsg ATTRIBUTE_UNUSED)
969*4882a593Smuzhiyun {
970*4882a593Smuzhiyun   if (value >= 8 && value < 24)
971*4882a593Smuzhiyun     return insn | ((value - 8) & 0xf);
972*4882a593Smuzhiyun   else
973*4882a593Smuzhiyun     {
974*4882a593Smuzhiyun       *errmsg = _("invalid register");
975*4882a593Smuzhiyun       return 0;
976*4882a593Smuzhiyun     }
977*4882a593Smuzhiyun }
978*4882a593Smuzhiyun 
979*4882a593Smuzhiyun static long
extract_arx(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid ATTRIBUTE_UNUSED)980*4882a593Smuzhiyun extract_arx (unsigned long insn,
981*4882a593Smuzhiyun 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
982*4882a593Smuzhiyun 	     int *invalid ATTRIBUTE_UNUSED)
983*4882a593Smuzhiyun {
984*4882a593Smuzhiyun   return (insn & 0xf) + 8;
985*4882a593Smuzhiyun }
986*4882a593Smuzhiyun 
987*4882a593Smuzhiyun static unsigned long
insert_ary(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)988*4882a593Smuzhiyun insert_ary (unsigned long insn,
989*4882a593Smuzhiyun 	    long value,
990*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
991*4882a593Smuzhiyun 	    const char **errmsg ATTRIBUTE_UNUSED)
992*4882a593Smuzhiyun {
993*4882a593Smuzhiyun   if (value >= 8 && value < 24)
994*4882a593Smuzhiyun     return insn | (((value - 8) & 0xf) << 4);
995*4882a593Smuzhiyun   else
996*4882a593Smuzhiyun     {
997*4882a593Smuzhiyun       *errmsg = _("invalid register");
998*4882a593Smuzhiyun       return 0;
999*4882a593Smuzhiyun     }
1000*4882a593Smuzhiyun }
1001*4882a593Smuzhiyun 
1002*4882a593Smuzhiyun static long
extract_ary(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid ATTRIBUTE_UNUSED)1003*4882a593Smuzhiyun extract_ary (unsigned long insn,
1004*4882a593Smuzhiyun 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1005*4882a593Smuzhiyun 	     int *invalid ATTRIBUTE_UNUSED)
1006*4882a593Smuzhiyun {
1007*4882a593Smuzhiyun   return ((insn >> 4) & 0xf) + 8;
1008*4882a593Smuzhiyun }
1009*4882a593Smuzhiyun 
1010*4882a593Smuzhiyun static unsigned long
insert_rx(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg)1011*4882a593Smuzhiyun insert_rx (unsigned long insn,
1012*4882a593Smuzhiyun 	   long value,
1013*4882a593Smuzhiyun 	   ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1014*4882a593Smuzhiyun 	   const char **errmsg)
1015*4882a593Smuzhiyun {
1016*4882a593Smuzhiyun   if (value >= 0 && value < 8)
1017*4882a593Smuzhiyun     return insn | value;
1018*4882a593Smuzhiyun   else if (value >= 24 && value <= 31)
1019*4882a593Smuzhiyun     return insn | (value - 16);
1020*4882a593Smuzhiyun   else
1021*4882a593Smuzhiyun     {
1022*4882a593Smuzhiyun       *errmsg = _("invalid register");
1023*4882a593Smuzhiyun       return 0;
1024*4882a593Smuzhiyun     }
1025*4882a593Smuzhiyun }
1026*4882a593Smuzhiyun 
1027*4882a593Smuzhiyun static long
extract_rx(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid ATTRIBUTE_UNUSED)1028*4882a593Smuzhiyun extract_rx (unsigned long insn,
1029*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1030*4882a593Smuzhiyun 	    int *invalid ATTRIBUTE_UNUSED)
1031*4882a593Smuzhiyun {
1032*4882a593Smuzhiyun   int value = insn & 0xf;
1033*4882a593Smuzhiyun   if (value >= 0 && value < 8)
1034*4882a593Smuzhiyun     return value;
1035*4882a593Smuzhiyun   else
1036*4882a593Smuzhiyun     return value + 16;
1037*4882a593Smuzhiyun }
1038*4882a593Smuzhiyun 
1039*4882a593Smuzhiyun static unsigned long
insert_ry(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg)1040*4882a593Smuzhiyun insert_ry (unsigned long insn,
1041*4882a593Smuzhiyun 	   long value,
1042*4882a593Smuzhiyun 	   ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1043*4882a593Smuzhiyun 	   const char **errmsg)
1044*4882a593Smuzhiyun {
1045*4882a593Smuzhiyun   if (value >= 0 && value < 8)
1046*4882a593Smuzhiyun     return insn | (value << 4);
1047*4882a593Smuzhiyun   else if (value >= 24 && value <= 31)
1048*4882a593Smuzhiyun     return insn | ((value - 16) << 4);
1049*4882a593Smuzhiyun   else
1050*4882a593Smuzhiyun     {
1051*4882a593Smuzhiyun       *errmsg = _("invalid register");
1052*4882a593Smuzhiyun       return 0;
1053*4882a593Smuzhiyun     }
1054*4882a593Smuzhiyun }
1055*4882a593Smuzhiyun 
1056*4882a593Smuzhiyun static long
extract_ry(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid ATTRIBUTE_UNUSED)1057*4882a593Smuzhiyun extract_ry (unsigned long insn,
1058*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1059*4882a593Smuzhiyun 	    int *invalid ATTRIBUTE_UNUSED)
1060*4882a593Smuzhiyun {
1061*4882a593Smuzhiyun   int value = (insn >> 4) & 0xf;
1062*4882a593Smuzhiyun   if (value >= 0 && value < 8)
1063*4882a593Smuzhiyun     return value;
1064*4882a593Smuzhiyun   else
1065*4882a593Smuzhiyun     return value + 16;
1066*4882a593Smuzhiyun }
1067*4882a593Smuzhiyun 
1068*4882a593Smuzhiyun /* The BA field in an XL form instruction when it must be the same as
1069*4882a593Smuzhiyun    the BT field in the same instruction.  This operand is marked FAKE.
1070*4882a593Smuzhiyun    The insertion function just copies the BT field into the BA field,
1071*4882a593Smuzhiyun    and the extraction function just checks that the fields are the
1072*4882a593Smuzhiyun    same.  */
1073*4882a593Smuzhiyun 
1074*4882a593Smuzhiyun static unsigned long
insert_bat(unsigned long insn,long value ATTRIBUTE_UNUSED,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)1075*4882a593Smuzhiyun insert_bat (unsigned long insn,
1076*4882a593Smuzhiyun 	    long value ATTRIBUTE_UNUSED,
1077*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1078*4882a593Smuzhiyun 	    const char **errmsg ATTRIBUTE_UNUSED)
1079*4882a593Smuzhiyun {
1080*4882a593Smuzhiyun   return insn | (((insn >> 21) & 0x1f) << 16);
1081*4882a593Smuzhiyun }
1082*4882a593Smuzhiyun 
1083*4882a593Smuzhiyun static long
extract_bat(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid)1084*4882a593Smuzhiyun extract_bat (unsigned long insn,
1085*4882a593Smuzhiyun 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1086*4882a593Smuzhiyun 	     int *invalid)
1087*4882a593Smuzhiyun {
1088*4882a593Smuzhiyun   if (((insn >> 21) & 0x1f) != ((insn >> 16) & 0x1f))
1089*4882a593Smuzhiyun     *invalid = 1;
1090*4882a593Smuzhiyun   return 0;
1091*4882a593Smuzhiyun }
1092*4882a593Smuzhiyun 
1093*4882a593Smuzhiyun /* The BB field in an XL form instruction when it must be the same as
1094*4882a593Smuzhiyun    the BA field in the same instruction.  This operand is marked FAKE.
1095*4882a593Smuzhiyun    The insertion function just copies the BA field into the BB field,
1096*4882a593Smuzhiyun    and the extraction function just checks that the fields are the
1097*4882a593Smuzhiyun    same.  */
1098*4882a593Smuzhiyun 
1099*4882a593Smuzhiyun static unsigned long
insert_bba(unsigned long insn,long value ATTRIBUTE_UNUSED,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)1100*4882a593Smuzhiyun insert_bba (unsigned long insn,
1101*4882a593Smuzhiyun 	    long value ATTRIBUTE_UNUSED,
1102*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1103*4882a593Smuzhiyun 	    const char **errmsg ATTRIBUTE_UNUSED)
1104*4882a593Smuzhiyun {
1105*4882a593Smuzhiyun   return insn | (((insn >> 16) & 0x1f) << 11);
1106*4882a593Smuzhiyun }
1107*4882a593Smuzhiyun 
1108*4882a593Smuzhiyun static long
extract_bba(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid)1109*4882a593Smuzhiyun extract_bba (unsigned long insn,
1110*4882a593Smuzhiyun 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1111*4882a593Smuzhiyun 	     int *invalid)
1112*4882a593Smuzhiyun {
1113*4882a593Smuzhiyun   if (((insn >> 16) & 0x1f) != ((insn >> 11) & 0x1f))
1114*4882a593Smuzhiyun     *invalid = 1;
1115*4882a593Smuzhiyun   return 0;
1116*4882a593Smuzhiyun }
1117*4882a593Smuzhiyun 
1118*4882a593Smuzhiyun /* The BD field in a B form instruction when the - modifier is used.
1119*4882a593Smuzhiyun    This modifier means that the branch is not expected to be taken.
1120*4882a593Smuzhiyun    For chips built to versions of the architecture prior to version 2
1121*4882a593Smuzhiyun    (ie. not Power4 compatible), we set the y bit of the BO field to 1
1122*4882a593Smuzhiyun    if the offset is negative.  When extracting, we require that the y
1123*4882a593Smuzhiyun    bit be 1 and that the offset be positive, since if the y bit is 0
1124*4882a593Smuzhiyun    we just want to print the normal form of the instruction.
1125*4882a593Smuzhiyun    Power4 compatible targets use two bits, "a", and "t", instead of
1126*4882a593Smuzhiyun    the "y" bit.  "at" == 00 => no hint, "at" == 01 => unpredictable,
1127*4882a593Smuzhiyun    "at" == 10 => not taken, "at" == 11 => taken.  The "t" bit is 00001
1128*4882a593Smuzhiyun    in BO field, the "a" bit is 00010 for branch on CR(BI) and 01000
1129*4882a593Smuzhiyun    for branch on CTR.  We only handle the taken/not-taken hint here.
1130*4882a593Smuzhiyun    Note that we don't relax the conditions tested here when
1131*4882a593Smuzhiyun    disassembling with -Many because insns using extract_bdm and
1132*4882a593Smuzhiyun    extract_bdp always occur in pairs.  One or the other will always
1133*4882a593Smuzhiyun    be valid.  */
1134*4882a593Smuzhiyun 
1135*4882a593Smuzhiyun #define ISA_V2 (PPC_OPCODE_POWER4 | PPC_OPCODE_E500MC | PPC_OPCODE_TITAN)
1136*4882a593Smuzhiyun 
1137*4882a593Smuzhiyun static unsigned long
insert_bdm(unsigned long insn,long value,ppc_cpu_t dialect,const char ** errmsg ATTRIBUTE_UNUSED)1138*4882a593Smuzhiyun insert_bdm (unsigned long insn,
1139*4882a593Smuzhiyun 	    long value,
1140*4882a593Smuzhiyun 	    ppc_cpu_t dialect,
1141*4882a593Smuzhiyun 	    const char **errmsg ATTRIBUTE_UNUSED)
1142*4882a593Smuzhiyun {
1143*4882a593Smuzhiyun   if ((dialect & ISA_V2) == 0)
1144*4882a593Smuzhiyun     {
1145*4882a593Smuzhiyun       if ((value & 0x8000) != 0)
1146*4882a593Smuzhiyun 	insn |= 1 << 21;
1147*4882a593Smuzhiyun     }
1148*4882a593Smuzhiyun   else
1149*4882a593Smuzhiyun     {
1150*4882a593Smuzhiyun       if ((insn & (0x14 << 21)) == (0x04 << 21))
1151*4882a593Smuzhiyun 	insn |= 0x02 << 21;
1152*4882a593Smuzhiyun       else if ((insn & (0x14 << 21)) == (0x10 << 21))
1153*4882a593Smuzhiyun 	insn |= 0x08 << 21;
1154*4882a593Smuzhiyun     }
1155*4882a593Smuzhiyun   return insn | (value & 0xfffc);
1156*4882a593Smuzhiyun }
1157*4882a593Smuzhiyun 
1158*4882a593Smuzhiyun static long
extract_bdm(unsigned long insn,ppc_cpu_t dialect,int * invalid)1159*4882a593Smuzhiyun extract_bdm (unsigned long insn,
1160*4882a593Smuzhiyun 	     ppc_cpu_t dialect,
1161*4882a593Smuzhiyun 	     int *invalid)
1162*4882a593Smuzhiyun {
1163*4882a593Smuzhiyun   if ((dialect & ISA_V2) == 0)
1164*4882a593Smuzhiyun     {
1165*4882a593Smuzhiyun       if (((insn & (1 << 21)) == 0) != ((insn & (1 << 15)) == 0))
1166*4882a593Smuzhiyun 	*invalid = 1;
1167*4882a593Smuzhiyun     }
1168*4882a593Smuzhiyun   else
1169*4882a593Smuzhiyun     {
1170*4882a593Smuzhiyun       if ((insn & (0x17 << 21)) != (0x06 << 21)
1171*4882a593Smuzhiyun 	  && (insn & (0x1d << 21)) != (0x18 << 21))
1172*4882a593Smuzhiyun 	*invalid = 1;
1173*4882a593Smuzhiyun     }
1174*4882a593Smuzhiyun 
1175*4882a593Smuzhiyun   return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
1176*4882a593Smuzhiyun }
1177*4882a593Smuzhiyun 
1178*4882a593Smuzhiyun /* The BD field in a B form instruction when the + modifier is used.
1179*4882a593Smuzhiyun    This is like BDM, above, except that the branch is expected to be
1180*4882a593Smuzhiyun    taken.  */
1181*4882a593Smuzhiyun 
1182*4882a593Smuzhiyun static unsigned long
insert_bdp(unsigned long insn,long value,ppc_cpu_t dialect,const char ** errmsg ATTRIBUTE_UNUSED)1183*4882a593Smuzhiyun insert_bdp (unsigned long insn,
1184*4882a593Smuzhiyun 	    long value,
1185*4882a593Smuzhiyun 	    ppc_cpu_t dialect,
1186*4882a593Smuzhiyun 	    const char **errmsg ATTRIBUTE_UNUSED)
1187*4882a593Smuzhiyun {
1188*4882a593Smuzhiyun   if ((dialect & ISA_V2) == 0)
1189*4882a593Smuzhiyun     {
1190*4882a593Smuzhiyun       if ((value & 0x8000) == 0)
1191*4882a593Smuzhiyun 	insn |= 1 << 21;
1192*4882a593Smuzhiyun     }
1193*4882a593Smuzhiyun   else
1194*4882a593Smuzhiyun     {
1195*4882a593Smuzhiyun       if ((insn & (0x14 << 21)) == (0x04 << 21))
1196*4882a593Smuzhiyun 	insn |= 0x03 << 21;
1197*4882a593Smuzhiyun       else if ((insn & (0x14 << 21)) == (0x10 << 21))
1198*4882a593Smuzhiyun 	insn |= 0x09 << 21;
1199*4882a593Smuzhiyun     }
1200*4882a593Smuzhiyun   return insn | (value & 0xfffc);
1201*4882a593Smuzhiyun }
1202*4882a593Smuzhiyun 
1203*4882a593Smuzhiyun static long
extract_bdp(unsigned long insn,ppc_cpu_t dialect,int * invalid)1204*4882a593Smuzhiyun extract_bdp (unsigned long insn,
1205*4882a593Smuzhiyun 	     ppc_cpu_t dialect,
1206*4882a593Smuzhiyun 	     int *invalid)
1207*4882a593Smuzhiyun {
1208*4882a593Smuzhiyun   if ((dialect & ISA_V2) == 0)
1209*4882a593Smuzhiyun     {
1210*4882a593Smuzhiyun       if (((insn & (1 << 21)) == 0) == ((insn & (1 << 15)) == 0))
1211*4882a593Smuzhiyun 	*invalid = 1;
1212*4882a593Smuzhiyun     }
1213*4882a593Smuzhiyun   else
1214*4882a593Smuzhiyun     {
1215*4882a593Smuzhiyun       if ((insn & (0x17 << 21)) != (0x07 << 21)
1216*4882a593Smuzhiyun 	  && (insn & (0x1d << 21)) != (0x19 << 21))
1217*4882a593Smuzhiyun 	*invalid = 1;
1218*4882a593Smuzhiyun     }
1219*4882a593Smuzhiyun 
1220*4882a593Smuzhiyun   return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
1221*4882a593Smuzhiyun }
1222*4882a593Smuzhiyun 
1223*4882a593Smuzhiyun static inline int
valid_bo_pre_v2(long value)1224*4882a593Smuzhiyun valid_bo_pre_v2 (long value)
1225*4882a593Smuzhiyun {
1226*4882a593Smuzhiyun   /* Certain encodings have bits that are required to be zero.
1227*4882a593Smuzhiyun      These are (z must be zero, y may be anything):
1228*4882a593Smuzhiyun 	 0000y
1229*4882a593Smuzhiyun 	 0001y
1230*4882a593Smuzhiyun 	 001zy
1231*4882a593Smuzhiyun 	 0100y
1232*4882a593Smuzhiyun 	 0101y
1233*4882a593Smuzhiyun 	 011zy
1234*4882a593Smuzhiyun 	 1z00y
1235*4882a593Smuzhiyun 	 1z01y
1236*4882a593Smuzhiyun 	 1z1zz
1237*4882a593Smuzhiyun   */
1238*4882a593Smuzhiyun   if ((value & 0x14) == 0)
1239*4882a593Smuzhiyun     return 1;
1240*4882a593Smuzhiyun   else if ((value & 0x14) == 0x4)
1241*4882a593Smuzhiyun     return (value & 0x2) == 0;
1242*4882a593Smuzhiyun   else if ((value & 0x14) == 0x10)
1243*4882a593Smuzhiyun     return (value & 0x8) == 0;
1244*4882a593Smuzhiyun   else
1245*4882a593Smuzhiyun     return value == 0x14;
1246*4882a593Smuzhiyun }
1247*4882a593Smuzhiyun 
1248*4882a593Smuzhiyun static inline int
valid_bo_post_v2(long value)1249*4882a593Smuzhiyun valid_bo_post_v2 (long value)
1250*4882a593Smuzhiyun {
1251*4882a593Smuzhiyun   /* Certain encodings have bits that are required to be zero.
1252*4882a593Smuzhiyun      These are (z must be zero, a & t may be anything):
1253*4882a593Smuzhiyun 	 0000z
1254*4882a593Smuzhiyun 	 0001z
1255*4882a593Smuzhiyun 	 001at
1256*4882a593Smuzhiyun 	 0100z
1257*4882a593Smuzhiyun 	 0101z
1258*4882a593Smuzhiyun 	 011at
1259*4882a593Smuzhiyun 	 1a00t
1260*4882a593Smuzhiyun 	 1a01t
1261*4882a593Smuzhiyun 	 1z1zz
1262*4882a593Smuzhiyun   */
1263*4882a593Smuzhiyun   if ((value & 0x14) == 0)
1264*4882a593Smuzhiyun     return (value & 0x1) == 0;
1265*4882a593Smuzhiyun   else if ((value & 0x14) == 0x14)
1266*4882a593Smuzhiyun     return value == 0x14;
1267*4882a593Smuzhiyun   else
1268*4882a593Smuzhiyun     return 1;
1269*4882a593Smuzhiyun }
1270*4882a593Smuzhiyun 
1271*4882a593Smuzhiyun /* Check for legal values of a BO field.  */
1272*4882a593Smuzhiyun 
1273*4882a593Smuzhiyun static int
valid_bo(long value,ppc_cpu_t dialect,int extract)1274*4882a593Smuzhiyun valid_bo (long value, ppc_cpu_t dialect, int extract)
1275*4882a593Smuzhiyun {
1276*4882a593Smuzhiyun   int valid_y = valid_bo_pre_v2 (value);
1277*4882a593Smuzhiyun   int valid_at = valid_bo_post_v2 (value);
1278*4882a593Smuzhiyun 
1279*4882a593Smuzhiyun   /* When disassembling with -Many, accept either encoding on the
1280*4882a593Smuzhiyun      second pass through opcodes.  */
1281*4882a593Smuzhiyun   if (extract && dialect == ~(ppc_cpu_t) PPC_OPCODE_ANY)
1282*4882a593Smuzhiyun     return valid_y || valid_at;
1283*4882a593Smuzhiyun   if ((dialect & ISA_V2) == 0)
1284*4882a593Smuzhiyun     return valid_y;
1285*4882a593Smuzhiyun   else
1286*4882a593Smuzhiyun     return valid_at;
1287*4882a593Smuzhiyun }
1288*4882a593Smuzhiyun 
1289*4882a593Smuzhiyun /* The BO field in a B form instruction.  Warn about attempts to set
1290*4882a593Smuzhiyun    the field to an illegal value.  */
1291*4882a593Smuzhiyun 
1292*4882a593Smuzhiyun static unsigned long
insert_bo(unsigned long insn,long value,ppc_cpu_t dialect,const char ** errmsg)1293*4882a593Smuzhiyun insert_bo (unsigned long insn,
1294*4882a593Smuzhiyun 	   long value,
1295*4882a593Smuzhiyun 	   ppc_cpu_t dialect,
1296*4882a593Smuzhiyun 	   const char **errmsg)
1297*4882a593Smuzhiyun {
1298*4882a593Smuzhiyun   if (!valid_bo (value, dialect, 0))
1299*4882a593Smuzhiyun     *errmsg = _("invalid conditional option");
1300*4882a593Smuzhiyun   else if (PPC_OP (insn) == 19 && (insn & 0x400) && ! (value & 4))
1301*4882a593Smuzhiyun     *errmsg = _("invalid counter access");
1302*4882a593Smuzhiyun   return insn | ((value & 0x1f) << 21);
1303*4882a593Smuzhiyun }
1304*4882a593Smuzhiyun 
1305*4882a593Smuzhiyun static long
extract_bo(unsigned long insn,ppc_cpu_t dialect,int * invalid)1306*4882a593Smuzhiyun extract_bo (unsigned long insn,
1307*4882a593Smuzhiyun 	    ppc_cpu_t dialect,
1308*4882a593Smuzhiyun 	    int *invalid)
1309*4882a593Smuzhiyun {
1310*4882a593Smuzhiyun   long value;
1311*4882a593Smuzhiyun 
1312*4882a593Smuzhiyun   value = (insn >> 21) & 0x1f;
1313*4882a593Smuzhiyun   if (!valid_bo (value, dialect, 1))
1314*4882a593Smuzhiyun     *invalid = 1;
1315*4882a593Smuzhiyun   return value;
1316*4882a593Smuzhiyun }
1317*4882a593Smuzhiyun 
1318*4882a593Smuzhiyun /* The BO field in a B form instruction when the + or - modifier is
1319*4882a593Smuzhiyun    used.  This is like the BO field, but it must be even.  When
1320*4882a593Smuzhiyun    extracting it, we force it to be even.  */
1321*4882a593Smuzhiyun 
1322*4882a593Smuzhiyun static unsigned long
insert_boe(unsigned long insn,long value,ppc_cpu_t dialect,const char ** errmsg)1323*4882a593Smuzhiyun insert_boe (unsigned long insn,
1324*4882a593Smuzhiyun 	    long value,
1325*4882a593Smuzhiyun 	    ppc_cpu_t dialect,
1326*4882a593Smuzhiyun 	    const char **errmsg)
1327*4882a593Smuzhiyun {
1328*4882a593Smuzhiyun   if (!valid_bo (value, dialect, 0))
1329*4882a593Smuzhiyun     *errmsg = _("invalid conditional option");
1330*4882a593Smuzhiyun   else if (PPC_OP (insn) == 19 && (insn & 0x400) && ! (value & 4))
1331*4882a593Smuzhiyun     *errmsg = _("invalid counter access");
1332*4882a593Smuzhiyun   else if ((value & 1) != 0)
1333*4882a593Smuzhiyun     *errmsg = _("attempt to set y bit when using + or - modifier");
1334*4882a593Smuzhiyun 
1335*4882a593Smuzhiyun   return insn | ((value & 0x1f) << 21);
1336*4882a593Smuzhiyun }
1337*4882a593Smuzhiyun 
1338*4882a593Smuzhiyun static long
extract_boe(unsigned long insn,ppc_cpu_t dialect,int * invalid)1339*4882a593Smuzhiyun extract_boe (unsigned long insn,
1340*4882a593Smuzhiyun 	     ppc_cpu_t dialect,
1341*4882a593Smuzhiyun 	     int *invalid)
1342*4882a593Smuzhiyun {
1343*4882a593Smuzhiyun   long value;
1344*4882a593Smuzhiyun 
1345*4882a593Smuzhiyun   value = (insn >> 21) & 0x1f;
1346*4882a593Smuzhiyun   if (!valid_bo (value, dialect, 1))
1347*4882a593Smuzhiyun     *invalid = 1;
1348*4882a593Smuzhiyun   return value & 0x1e;
1349*4882a593Smuzhiyun }
1350*4882a593Smuzhiyun 
1351*4882a593Smuzhiyun /* The DCMX field in a X form instruction when the field is split
1352*4882a593Smuzhiyun    into separate DC, DM and DX fields.  */
1353*4882a593Smuzhiyun 
1354*4882a593Smuzhiyun static unsigned long
insert_dcmxs(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)1355*4882a593Smuzhiyun insert_dcmxs (unsigned long insn,
1356*4882a593Smuzhiyun 	    long value,
1357*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1358*4882a593Smuzhiyun 	    const char **errmsg ATTRIBUTE_UNUSED)
1359*4882a593Smuzhiyun {
1360*4882a593Smuzhiyun   return insn | ((value & 0x1f) << 16) | ((value & 0x20) >> 3) | (value & 0x40);
1361*4882a593Smuzhiyun }
1362*4882a593Smuzhiyun 
1363*4882a593Smuzhiyun static long
extract_dcmxs(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid ATTRIBUTE_UNUSED)1364*4882a593Smuzhiyun extract_dcmxs (unsigned long insn,
1365*4882a593Smuzhiyun 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1366*4882a593Smuzhiyun 	     int *invalid ATTRIBUTE_UNUSED)
1367*4882a593Smuzhiyun {
1368*4882a593Smuzhiyun   return (insn & 0x40) | ((insn << 3) & 0x20) | ((insn >> 16) & 0x1f);
1369*4882a593Smuzhiyun }
1370*4882a593Smuzhiyun 
1371*4882a593Smuzhiyun /* The D field in a DX form instruction when the field is split
1372*4882a593Smuzhiyun    into separate D0, D1 and D2 fields.  */
1373*4882a593Smuzhiyun 
1374*4882a593Smuzhiyun static unsigned long
insert_dxd(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)1375*4882a593Smuzhiyun insert_dxd (unsigned long insn,
1376*4882a593Smuzhiyun 	    long value,
1377*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1378*4882a593Smuzhiyun 	    const char **errmsg ATTRIBUTE_UNUSED)
1379*4882a593Smuzhiyun {
1380*4882a593Smuzhiyun   return insn | (value & 0xffc1) | ((value & 0x3e) << 15);
1381*4882a593Smuzhiyun }
1382*4882a593Smuzhiyun 
1383*4882a593Smuzhiyun static long
extract_dxd(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid ATTRIBUTE_UNUSED)1384*4882a593Smuzhiyun extract_dxd (unsigned long insn,
1385*4882a593Smuzhiyun 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1386*4882a593Smuzhiyun 	     int *invalid ATTRIBUTE_UNUSED)
1387*4882a593Smuzhiyun {
1388*4882a593Smuzhiyun   unsigned long dxd = (insn & 0xffc1) | ((insn >> 15) & 0x3e);
1389*4882a593Smuzhiyun   return (dxd ^ 0x8000) - 0x8000;
1390*4882a593Smuzhiyun }
1391*4882a593Smuzhiyun 
1392*4882a593Smuzhiyun static unsigned long
insert_dxdn(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)1393*4882a593Smuzhiyun insert_dxdn (unsigned long insn,
1394*4882a593Smuzhiyun 	    long value,
1395*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1396*4882a593Smuzhiyun 	    const char **errmsg ATTRIBUTE_UNUSED)
1397*4882a593Smuzhiyun {
1398*4882a593Smuzhiyun   return insert_dxd (insn, -value, dialect, errmsg);
1399*4882a593Smuzhiyun }
1400*4882a593Smuzhiyun 
1401*4882a593Smuzhiyun static long
extract_dxdn(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid ATTRIBUTE_UNUSED)1402*4882a593Smuzhiyun extract_dxdn (unsigned long insn,
1403*4882a593Smuzhiyun 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1404*4882a593Smuzhiyun 	     int *invalid ATTRIBUTE_UNUSED)
1405*4882a593Smuzhiyun {
1406*4882a593Smuzhiyun   return -extract_dxd (insn, dialect, invalid);
1407*4882a593Smuzhiyun }
1408*4882a593Smuzhiyun 
1409*4882a593Smuzhiyun /* FXM mask in mfcr and mtcrf instructions.  */
1410*4882a593Smuzhiyun 
1411*4882a593Smuzhiyun static unsigned long
insert_fxm(unsigned long insn,long value,ppc_cpu_t dialect,const char ** errmsg)1412*4882a593Smuzhiyun insert_fxm (unsigned long insn,
1413*4882a593Smuzhiyun 	    long value,
1414*4882a593Smuzhiyun 	    ppc_cpu_t dialect,
1415*4882a593Smuzhiyun 	    const char **errmsg)
1416*4882a593Smuzhiyun {
1417*4882a593Smuzhiyun   /* If we're handling the mfocrf and mtocrf insns ensure that exactly
1418*4882a593Smuzhiyun      one bit of the mask field is set.  */
1419*4882a593Smuzhiyun   if ((insn & (1 << 20)) != 0)
1420*4882a593Smuzhiyun     {
1421*4882a593Smuzhiyun       if (value == 0 || (value & -value) != value)
1422*4882a593Smuzhiyun 	{
1423*4882a593Smuzhiyun 	  *errmsg = _("invalid mask field");
1424*4882a593Smuzhiyun 	  value = 0;
1425*4882a593Smuzhiyun 	}
1426*4882a593Smuzhiyun     }
1427*4882a593Smuzhiyun 
1428*4882a593Smuzhiyun   /* If only one bit of the FXM field is set, we can use the new form
1429*4882a593Smuzhiyun      of the instruction, which is faster.  Unlike the Power4 branch hint
1430*4882a593Smuzhiyun      encoding, this is not backward compatible.  Do not generate the
1431*4882a593Smuzhiyun      new form unless -mpower4 has been given, or -many and the two
1432*4882a593Smuzhiyun      operand form of mfcr was used.  */
1433*4882a593Smuzhiyun   else if (value > 0
1434*4882a593Smuzhiyun 	   && (value & -value) == value
1435*4882a593Smuzhiyun 	   && ((dialect & PPC_OPCODE_POWER4) != 0
1436*4882a593Smuzhiyun 	       || ((dialect & PPC_OPCODE_ANY) != 0
1437*4882a593Smuzhiyun 		   && (insn & (0x3ff << 1)) == 19 << 1)))
1438*4882a593Smuzhiyun     insn |= 1 << 20;
1439*4882a593Smuzhiyun 
1440*4882a593Smuzhiyun   /* Any other value on mfcr is an error.  */
1441*4882a593Smuzhiyun   else if ((insn & (0x3ff << 1)) == 19 << 1)
1442*4882a593Smuzhiyun     {
1443*4882a593Smuzhiyun       /* A value of -1 means we used the one operand form of
1444*4882a593Smuzhiyun 	 mfcr which is valid.  */
1445*4882a593Smuzhiyun       if (value != -1)
1446*4882a593Smuzhiyun         *errmsg = _("invalid mfcr mask");
1447*4882a593Smuzhiyun       value = 0;
1448*4882a593Smuzhiyun     }
1449*4882a593Smuzhiyun 
1450*4882a593Smuzhiyun   return insn | ((value & 0xff) << 12);
1451*4882a593Smuzhiyun }
1452*4882a593Smuzhiyun 
1453*4882a593Smuzhiyun static long
extract_fxm(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid)1454*4882a593Smuzhiyun extract_fxm (unsigned long insn,
1455*4882a593Smuzhiyun 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1456*4882a593Smuzhiyun 	     int *invalid)
1457*4882a593Smuzhiyun {
1458*4882a593Smuzhiyun   long mask = (insn >> 12) & 0xff;
1459*4882a593Smuzhiyun 
1460*4882a593Smuzhiyun   /* Is this a Power4 insn?  */
1461*4882a593Smuzhiyun   if ((insn & (1 << 20)) != 0)
1462*4882a593Smuzhiyun     {
1463*4882a593Smuzhiyun       /* Exactly one bit of MASK should be set.  */
1464*4882a593Smuzhiyun       if (mask == 0 || (mask & -mask) != mask)
1465*4882a593Smuzhiyun 	*invalid = 1;
1466*4882a593Smuzhiyun     }
1467*4882a593Smuzhiyun 
1468*4882a593Smuzhiyun   /* Check that non-power4 form of mfcr has a zero MASK.  */
1469*4882a593Smuzhiyun   else if ((insn & (0x3ff << 1)) == 19 << 1)
1470*4882a593Smuzhiyun     {
1471*4882a593Smuzhiyun       if (mask != 0)
1472*4882a593Smuzhiyun 	*invalid = 1;
1473*4882a593Smuzhiyun       else
1474*4882a593Smuzhiyun 	mask = -1;
1475*4882a593Smuzhiyun     }
1476*4882a593Smuzhiyun 
1477*4882a593Smuzhiyun   return mask;
1478*4882a593Smuzhiyun }
1479*4882a593Smuzhiyun 
1480*4882a593Smuzhiyun static unsigned long
insert_li20(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)1481*4882a593Smuzhiyun insert_li20 (unsigned long insn,
1482*4882a593Smuzhiyun 	     long value,
1483*4882a593Smuzhiyun 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1484*4882a593Smuzhiyun 	     const char **errmsg ATTRIBUTE_UNUSED)
1485*4882a593Smuzhiyun {
1486*4882a593Smuzhiyun   return insn | ((value & 0xf0000) >> 5) | ((value & 0x0f800) << 5) | (value & 0x7ff);
1487*4882a593Smuzhiyun }
1488*4882a593Smuzhiyun 
1489*4882a593Smuzhiyun static long
extract_li20(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid ATTRIBUTE_UNUSED)1490*4882a593Smuzhiyun extract_li20 (unsigned long insn,
1491*4882a593Smuzhiyun 	      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1492*4882a593Smuzhiyun 	      int *invalid ATTRIBUTE_UNUSED)
1493*4882a593Smuzhiyun {
1494*4882a593Smuzhiyun   long ext = ((insn & 0x4000) == 0x4000) ? 0xfff00000 : 0x00000000;
1495*4882a593Smuzhiyun 
1496*4882a593Smuzhiyun   return ext
1497*4882a593Smuzhiyun          | (((insn >> 11) & 0xf) << 16)
1498*4882a593Smuzhiyun          | (((insn >> 17) & 0xf) << 12)
1499*4882a593Smuzhiyun          | (((insn >> 16) & 0x1) << 11)
1500*4882a593Smuzhiyun          | (insn & 0x7ff);
1501*4882a593Smuzhiyun }
1502*4882a593Smuzhiyun 
1503*4882a593Smuzhiyun /* The 2-bit L field in a SYNC or WC field in a WAIT instruction.
1504*4882a593Smuzhiyun    For SYNC, some L values are reserved:
1505*4882a593Smuzhiyun      * Value 3 is reserved on newer server cpus.
1506*4882a593Smuzhiyun      * Values 2 and 3 are reserved on all other cpus.  */
1507*4882a593Smuzhiyun 
1508*4882a593Smuzhiyun static unsigned long
insert_ls(unsigned long insn,long value,ppc_cpu_t dialect,const char ** errmsg)1509*4882a593Smuzhiyun insert_ls (unsigned long insn,
1510*4882a593Smuzhiyun 	   long value,
1511*4882a593Smuzhiyun 	   ppc_cpu_t dialect,
1512*4882a593Smuzhiyun 	   const char **errmsg)
1513*4882a593Smuzhiyun {
1514*4882a593Smuzhiyun   /* For SYNC, some L values are illegal.  */
1515*4882a593Smuzhiyun   if (((insn >> 1) & 0x3ff) == 598)
1516*4882a593Smuzhiyun     {
1517*4882a593Smuzhiyun       long max_lvalue = (dialect & PPC_OPCODE_POWER4) ? 2 : 1;
1518*4882a593Smuzhiyun       if (value > max_lvalue)
1519*4882a593Smuzhiyun 	{
1520*4882a593Smuzhiyun 	  *errmsg = _("illegal L operand value");
1521*4882a593Smuzhiyun 	  return insn;
1522*4882a593Smuzhiyun 	}
1523*4882a593Smuzhiyun     }
1524*4882a593Smuzhiyun 
1525*4882a593Smuzhiyun   return insn | ((value & 0x3) << 21);
1526*4882a593Smuzhiyun }
1527*4882a593Smuzhiyun 
1528*4882a593Smuzhiyun /* The 4-bit E field in a sync instruction that accepts 2 operands.
1529*4882a593Smuzhiyun    If ESYNC is non-zero, then the L field must be either 0 or 1 and
1530*4882a593Smuzhiyun    the complement of ESYNC-bit2.  */
1531*4882a593Smuzhiyun 
1532*4882a593Smuzhiyun static unsigned long
insert_esync(unsigned long insn,long value,ppc_cpu_t dialect,const char ** errmsg)1533*4882a593Smuzhiyun insert_esync (unsigned long insn,
1534*4882a593Smuzhiyun 	      long value,
1535*4882a593Smuzhiyun 	      ppc_cpu_t dialect,
1536*4882a593Smuzhiyun 	      const char **errmsg)
1537*4882a593Smuzhiyun {
1538*4882a593Smuzhiyun   unsigned long ls = (insn >> 21) & 0x03;
1539*4882a593Smuzhiyun 
1540*4882a593Smuzhiyun   if (value == 0)
1541*4882a593Smuzhiyun     {
1542*4882a593Smuzhiyun       if (((dialect & PPC_OPCODE_E6500) != 0 && ls > 1)
1543*4882a593Smuzhiyun 	  || ((dialect & PPC_OPCODE_POWER9) != 0 && ls > 2))
1544*4882a593Smuzhiyun         *errmsg = _("illegal L operand value");
1545*4882a593Smuzhiyun       return insn;
1546*4882a593Smuzhiyun     }
1547*4882a593Smuzhiyun 
1548*4882a593Smuzhiyun   if ((ls & ~0x1)
1549*4882a593Smuzhiyun       || (((value >> 1) & 0x1) ^ ls) == 0)
1550*4882a593Smuzhiyun         *errmsg = _("incompatible L operand value");
1551*4882a593Smuzhiyun 
1552*4882a593Smuzhiyun   return insn | ((value & 0xf) << 16);
1553*4882a593Smuzhiyun }
1554*4882a593Smuzhiyun 
1555*4882a593Smuzhiyun /* The MB and ME fields in an M form instruction expressed as a single
1556*4882a593Smuzhiyun    operand which is itself a bitmask.  The extraction function always
1557*4882a593Smuzhiyun    marks it as invalid, since we never want to recognize an
1558*4882a593Smuzhiyun    instruction which uses a field of this type.  */
1559*4882a593Smuzhiyun 
1560*4882a593Smuzhiyun static unsigned long
insert_mbe(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg)1561*4882a593Smuzhiyun insert_mbe (unsigned long insn,
1562*4882a593Smuzhiyun 	    long value,
1563*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1564*4882a593Smuzhiyun 	    const char **errmsg)
1565*4882a593Smuzhiyun {
1566*4882a593Smuzhiyun   unsigned long uval, mask;
1567*4882a593Smuzhiyun   int mb, me, mx, count, last;
1568*4882a593Smuzhiyun 
1569*4882a593Smuzhiyun   uval = value;
1570*4882a593Smuzhiyun 
1571*4882a593Smuzhiyun   if (uval == 0)
1572*4882a593Smuzhiyun     {
1573*4882a593Smuzhiyun       *errmsg = _("illegal bitmask");
1574*4882a593Smuzhiyun       return insn;
1575*4882a593Smuzhiyun     }
1576*4882a593Smuzhiyun 
1577*4882a593Smuzhiyun   mb = 0;
1578*4882a593Smuzhiyun   me = 32;
1579*4882a593Smuzhiyun   if ((uval & 1) != 0)
1580*4882a593Smuzhiyun     last = 1;
1581*4882a593Smuzhiyun   else
1582*4882a593Smuzhiyun     last = 0;
1583*4882a593Smuzhiyun   count = 0;
1584*4882a593Smuzhiyun 
1585*4882a593Smuzhiyun   /* mb: location of last 0->1 transition */
1586*4882a593Smuzhiyun   /* me: location of last 1->0 transition */
1587*4882a593Smuzhiyun   /* count: # transitions */
1588*4882a593Smuzhiyun 
1589*4882a593Smuzhiyun   for (mx = 0, mask = 1L << 31; mx < 32; ++mx, mask >>= 1)
1590*4882a593Smuzhiyun     {
1591*4882a593Smuzhiyun       if ((uval & mask) && !last)
1592*4882a593Smuzhiyun 	{
1593*4882a593Smuzhiyun 	  ++count;
1594*4882a593Smuzhiyun 	  mb = mx;
1595*4882a593Smuzhiyun 	  last = 1;
1596*4882a593Smuzhiyun 	}
1597*4882a593Smuzhiyun       else if (!(uval & mask) && last)
1598*4882a593Smuzhiyun 	{
1599*4882a593Smuzhiyun 	  ++count;
1600*4882a593Smuzhiyun 	  me = mx;
1601*4882a593Smuzhiyun 	  last = 0;
1602*4882a593Smuzhiyun 	}
1603*4882a593Smuzhiyun     }
1604*4882a593Smuzhiyun   if (me == 0)
1605*4882a593Smuzhiyun     me = 32;
1606*4882a593Smuzhiyun 
1607*4882a593Smuzhiyun   if (count != 2 && (count != 0 || ! last))
1608*4882a593Smuzhiyun     *errmsg = _("illegal bitmask");
1609*4882a593Smuzhiyun 
1610*4882a593Smuzhiyun   return insn | (mb << 6) | ((me - 1) << 1);
1611*4882a593Smuzhiyun }
1612*4882a593Smuzhiyun 
1613*4882a593Smuzhiyun static long
extract_mbe(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid)1614*4882a593Smuzhiyun extract_mbe (unsigned long insn,
1615*4882a593Smuzhiyun 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1616*4882a593Smuzhiyun 	     int *invalid)
1617*4882a593Smuzhiyun {
1618*4882a593Smuzhiyun   long ret;
1619*4882a593Smuzhiyun   int mb, me;
1620*4882a593Smuzhiyun   int i;
1621*4882a593Smuzhiyun 
1622*4882a593Smuzhiyun   *invalid = 1;
1623*4882a593Smuzhiyun 
1624*4882a593Smuzhiyun   mb = (insn >> 6) & 0x1f;
1625*4882a593Smuzhiyun   me = (insn >> 1) & 0x1f;
1626*4882a593Smuzhiyun   if (mb < me + 1)
1627*4882a593Smuzhiyun     {
1628*4882a593Smuzhiyun       ret = 0;
1629*4882a593Smuzhiyun       for (i = mb; i <= me; i++)
1630*4882a593Smuzhiyun 	ret |= 1L << (31 - i);
1631*4882a593Smuzhiyun     }
1632*4882a593Smuzhiyun   else if (mb == me + 1)
1633*4882a593Smuzhiyun     ret = ~0;
1634*4882a593Smuzhiyun   else /* (mb > me + 1) */
1635*4882a593Smuzhiyun     {
1636*4882a593Smuzhiyun       ret = ~0;
1637*4882a593Smuzhiyun       for (i = me + 1; i < mb; i++)
1638*4882a593Smuzhiyun 	ret &= ~(1L << (31 - i));
1639*4882a593Smuzhiyun     }
1640*4882a593Smuzhiyun   return ret;
1641*4882a593Smuzhiyun }
1642*4882a593Smuzhiyun 
1643*4882a593Smuzhiyun /* The MB or ME field in an MD or MDS form instruction.  The high bit
1644*4882a593Smuzhiyun    is wrapped to the low end.  */
1645*4882a593Smuzhiyun 
1646*4882a593Smuzhiyun static unsigned long
insert_mb6(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)1647*4882a593Smuzhiyun insert_mb6 (unsigned long insn,
1648*4882a593Smuzhiyun 	    long value,
1649*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1650*4882a593Smuzhiyun 	    const char **errmsg ATTRIBUTE_UNUSED)
1651*4882a593Smuzhiyun {
1652*4882a593Smuzhiyun   return insn | ((value & 0x1f) << 6) | (value & 0x20);
1653*4882a593Smuzhiyun }
1654*4882a593Smuzhiyun 
1655*4882a593Smuzhiyun static long
extract_mb6(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid ATTRIBUTE_UNUSED)1656*4882a593Smuzhiyun extract_mb6 (unsigned long insn,
1657*4882a593Smuzhiyun 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1658*4882a593Smuzhiyun 	     int *invalid ATTRIBUTE_UNUSED)
1659*4882a593Smuzhiyun {
1660*4882a593Smuzhiyun   return ((insn >> 6) & 0x1f) | (insn & 0x20);
1661*4882a593Smuzhiyun }
1662*4882a593Smuzhiyun 
1663*4882a593Smuzhiyun /* The NB field in an X form instruction.  The value 32 is stored as
1664*4882a593Smuzhiyun    0.  */
1665*4882a593Smuzhiyun 
1666*4882a593Smuzhiyun static long
extract_nb(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid ATTRIBUTE_UNUSED)1667*4882a593Smuzhiyun extract_nb (unsigned long insn,
1668*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1669*4882a593Smuzhiyun 	    int *invalid ATTRIBUTE_UNUSED)
1670*4882a593Smuzhiyun {
1671*4882a593Smuzhiyun   long ret;
1672*4882a593Smuzhiyun 
1673*4882a593Smuzhiyun   ret = (insn >> 11) & 0x1f;
1674*4882a593Smuzhiyun   if (ret == 0)
1675*4882a593Smuzhiyun     ret = 32;
1676*4882a593Smuzhiyun   return ret;
1677*4882a593Smuzhiyun }
1678*4882a593Smuzhiyun 
1679*4882a593Smuzhiyun /* The NB field in an lswi instruction, which has special value
1680*4882a593Smuzhiyun    restrictions.  The value 32 is stored as 0.  */
1681*4882a593Smuzhiyun 
1682*4882a593Smuzhiyun static unsigned long
insert_nbi(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)1683*4882a593Smuzhiyun insert_nbi (unsigned long insn,
1684*4882a593Smuzhiyun 	    long value,
1685*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1686*4882a593Smuzhiyun 	    const char **errmsg ATTRIBUTE_UNUSED)
1687*4882a593Smuzhiyun {
1688*4882a593Smuzhiyun   long rtvalue = (insn & RT_MASK) >> 21;
1689*4882a593Smuzhiyun   long ravalue = (insn & RA_MASK) >> 16;
1690*4882a593Smuzhiyun 
1691*4882a593Smuzhiyun   if (value == 0)
1692*4882a593Smuzhiyun     value = 32;
1693*4882a593Smuzhiyun   if (rtvalue + (value + 3) / 4 > (rtvalue > ravalue ? ravalue + 32
1694*4882a593Smuzhiyun 						     : ravalue))
1695*4882a593Smuzhiyun     *errmsg = _("address register in load range");
1696*4882a593Smuzhiyun   return insn | ((value & 0x1f) << 11);
1697*4882a593Smuzhiyun }
1698*4882a593Smuzhiyun 
1699*4882a593Smuzhiyun /* The NSI field in a D form instruction.  This is the same as the SI
1700*4882a593Smuzhiyun    field, only negated.  The extraction function always marks it as
1701*4882a593Smuzhiyun    invalid, since we never want to recognize an instruction which uses
1702*4882a593Smuzhiyun    a field of this type.  */
1703*4882a593Smuzhiyun 
1704*4882a593Smuzhiyun static unsigned long
insert_nsi(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)1705*4882a593Smuzhiyun insert_nsi (unsigned long insn,
1706*4882a593Smuzhiyun 	    long value,
1707*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1708*4882a593Smuzhiyun 	    const char **errmsg ATTRIBUTE_UNUSED)
1709*4882a593Smuzhiyun {
1710*4882a593Smuzhiyun   return insn | (-value & 0xffff);
1711*4882a593Smuzhiyun }
1712*4882a593Smuzhiyun 
1713*4882a593Smuzhiyun static long
extract_nsi(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid)1714*4882a593Smuzhiyun extract_nsi (unsigned long insn,
1715*4882a593Smuzhiyun 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1716*4882a593Smuzhiyun 	     int *invalid)
1717*4882a593Smuzhiyun {
1718*4882a593Smuzhiyun   *invalid = 1;
1719*4882a593Smuzhiyun   return -(((insn & 0xffff) ^ 0x8000) - 0x8000);
1720*4882a593Smuzhiyun }
1721*4882a593Smuzhiyun 
1722*4882a593Smuzhiyun /* The RA field in a D or X form instruction which is an updating
1723*4882a593Smuzhiyun    load, which means that the RA field may not be zero and may not
1724*4882a593Smuzhiyun    equal the RT field.  */
1725*4882a593Smuzhiyun 
1726*4882a593Smuzhiyun static unsigned long
insert_ral(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg)1727*4882a593Smuzhiyun insert_ral (unsigned long insn,
1728*4882a593Smuzhiyun 	    long value,
1729*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1730*4882a593Smuzhiyun 	    const char **errmsg)
1731*4882a593Smuzhiyun {
1732*4882a593Smuzhiyun   if (value == 0
1733*4882a593Smuzhiyun       || (unsigned long) value == ((insn >> 21) & 0x1f))
1734*4882a593Smuzhiyun     *errmsg = "invalid register operand when updating";
1735*4882a593Smuzhiyun   return insn | ((value & 0x1f) << 16);
1736*4882a593Smuzhiyun }
1737*4882a593Smuzhiyun 
1738*4882a593Smuzhiyun /* The RA field in an lmw instruction, which has special value
1739*4882a593Smuzhiyun    restrictions.  */
1740*4882a593Smuzhiyun 
1741*4882a593Smuzhiyun static unsigned long
insert_ram(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg)1742*4882a593Smuzhiyun insert_ram (unsigned long insn,
1743*4882a593Smuzhiyun 	    long value,
1744*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1745*4882a593Smuzhiyun 	    const char **errmsg)
1746*4882a593Smuzhiyun {
1747*4882a593Smuzhiyun   if ((unsigned long) value >= ((insn >> 21) & 0x1f))
1748*4882a593Smuzhiyun     *errmsg = _("index register in load range");
1749*4882a593Smuzhiyun   return insn | ((value & 0x1f) << 16);
1750*4882a593Smuzhiyun }
1751*4882a593Smuzhiyun 
1752*4882a593Smuzhiyun /* The RA field in the DQ form lq or an lswx instruction, which have special
1753*4882a593Smuzhiyun    value restrictions.  */
1754*4882a593Smuzhiyun 
1755*4882a593Smuzhiyun static unsigned long
insert_raq(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg)1756*4882a593Smuzhiyun insert_raq (unsigned long insn,
1757*4882a593Smuzhiyun 	    long value,
1758*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1759*4882a593Smuzhiyun 	    const char **errmsg)
1760*4882a593Smuzhiyun {
1761*4882a593Smuzhiyun   long rtvalue = (insn & RT_MASK) >> 21;
1762*4882a593Smuzhiyun 
1763*4882a593Smuzhiyun   if (value == rtvalue)
1764*4882a593Smuzhiyun     *errmsg = _("source and target register operands must be different");
1765*4882a593Smuzhiyun   return insn | ((value & 0x1f) << 16);
1766*4882a593Smuzhiyun }
1767*4882a593Smuzhiyun 
1768*4882a593Smuzhiyun /* The RA field in a D or X form instruction which is an updating
1769*4882a593Smuzhiyun    store or an updating floating point load, which means that the RA
1770*4882a593Smuzhiyun    field may not be zero.  */
1771*4882a593Smuzhiyun 
1772*4882a593Smuzhiyun static unsigned long
insert_ras(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg)1773*4882a593Smuzhiyun insert_ras (unsigned long insn,
1774*4882a593Smuzhiyun 	    long value,
1775*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1776*4882a593Smuzhiyun 	    const char **errmsg)
1777*4882a593Smuzhiyun {
1778*4882a593Smuzhiyun   if (value == 0)
1779*4882a593Smuzhiyun     *errmsg = _("invalid register operand when updating");
1780*4882a593Smuzhiyun   return insn | ((value & 0x1f) << 16);
1781*4882a593Smuzhiyun }
1782*4882a593Smuzhiyun 
1783*4882a593Smuzhiyun /* The RB field in an X form instruction when it must be the same as
1784*4882a593Smuzhiyun    the RS field in the instruction.  This is used for extended
1785*4882a593Smuzhiyun    mnemonics like mr.  This operand is marked FAKE.  The insertion
1786*4882a593Smuzhiyun    function just copies the BT field into the BA field, and the
1787*4882a593Smuzhiyun    extraction function just checks that the fields are the same.  */
1788*4882a593Smuzhiyun 
1789*4882a593Smuzhiyun static unsigned long
insert_rbs(unsigned long insn,long value ATTRIBUTE_UNUSED,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)1790*4882a593Smuzhiyun insert_rbs (unsigned long insn,
1791*4882a593Smuzhiyun 	    long value ATTRIBUTE_UNUSED,
1792*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1793*4882a593Smuzhiyun 	    const char **errmsg ATTRIBUTE_UNUSED)
1794*4882a593Smuzhiyun {
1795*4882a593Smuzhiyun   return insn | (((insn >> 21) & 0x1f) << 11);
1796*4882a593Smuzhiyun }
1797*4882a593Smuzhiyun 
1798*4882a593Smuzhiyun static long
extract_rbs(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid)1799*4882a593Smuzhiyun extract_rbs (unsigned long insn,
1800*4882a593Smuzhiyun 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1801*4882a593Smuzhiyun 	     int *invalid)
1802*4882a593Smuzhiyun {
1803*4882a593Smuzhiyun   if (((insn >> 21) & 0x1f) != ((insn >> 11) & 0x1f))
1804*4882a593Smuzhiyun     *invalid = 1;
1805*4882a593Smuzhiyun   return 0;
1806*4882a593Smuzhiyun }
1807*4882a593Smuzhiyun 
1808*4882a593Smuzhiyun /* The RB field in an lswx instruction, which has special value
1809*4882a593Smuzhiyun    restrictions.  */
1810*4882a593Smuzhiyun 
1811*4882a593Smuzhiyun static unsigned long
insert_rbx(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg)1812*4882a593Smuzhiyun insert_rbx (unsigned long insn,
1813*4882a593Smuzhiyun 	    long value,
1814*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1815*4882a593Smuzhiyun 	    const char **errmsg)
1816*4882a593Smuzhiyun {
1817*4882a593Smuzhiyun   long rtvalue = (insn & RT_MASK) >> 21;
1818*4882a593Smuzhiyun 
1819*4882a593Smuzhiyun   if (value == rtvalue)
1820*4882a593Smuzhiyun     *errmsg = _("source and target register operands must be different");
1821*4882a593Smuzhiyun   return insn | ((value & 0x1f) << 11);
1822*4882a593Smuzhiyun }
1823*4882a593Smuzhiyun 
1824*4882a593Smuzhiyun /* The SCI8 field is made up of SCL and {U,N}I8 fields.  */
1825*4882a593Smuzhiyun static unsigned long
insert_sci8(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg)1826*4882a593Smuzhiyun insert_sci8 (unsigned long insn,
1827*4882a593Smuzhiyun 	     long value,
1828*4882a593Smuzhiyun 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1829*4882a593Smuzhiyun 	     const char **errmsg)
1830*4882a593Smuzhiyun {
1831*4882a593Smuzhiyun   unsigned int fill_scale = 0;
1832*4882a593Smuzhiyun   unsigned long ui8 = value;
1833*4882a593Smuzhiyun 
1834*4882a593Smuzhiyun   if ((ui8 & 0xffffff00) == 0)
1835*4882a593Smuzhiyun     ;
1836*4882a593Smuzhiyun   else if ((ui8 & 0xffffff00) == 0xffffff00)
1837*4882a593Smuzhiyun     fill_scale = 0x400;
1838*4882a593Smuzhiyun   else if ((ui8 & 0xffff00ff) == 0)
1839*4882a593Smuzhiyun     {
1840*4882a593Smuzhiyun       fill_scale = 1 << 8;
1841*4882a593Smuzhiyun       ui8 >>= 8;
1842*4882a593Smuzhiyun     }
1843*4882a593Smuzhiyun   else if ((ui8 & 0xffff00ff) == 0xffff00ff)
1844*4882a593Smuzhiyun     {
1845*4882a593Smuzhiyun       fill_scale = 0x400 | (1 << 8);
1846*4882a593Smuzhiyun       ui8 >>= 8;
1847*4882a593Smuzhiyun     }
1848*4882a593Smuzhiyun   else if ((ui8 & 0xff00ffff) == 0)
1849*4882a593Smuzhiyun     {
1850*4882a593Smuzhiyun       fill_scale = 2 << 8;
1851*4882a593Smuzhiyun       ui8 >>= 16;
1852*4882a593Smuzhiyun     }
1853*4882a593Smuzhiyun   else if ((ui8 & 0xff00ffff) == 0xff00ffff)
1854*4882a593Smuzhiyun     {
1855*4882a593Smuzhiyun       fill_scale = 0x400 | (2 << 8);
1856*4882a593Smuzhiyun       ui8 >>= 16;
1857*4882a593Smuzhiyun     }
1858*4882a593Smuzhiyun   else if ((ui8 & 0x00ffffff) == 0)
1859*4882a593Smuzhiyun     {
1860*4882a593Smuzhiyun       fill_scale = 3 << 8;
1861*4882a593Smuzhiyun       ui8 >>= 24;
1862*4882a593Smuzhiyun     }
1863*4882a593Smuzhiyun   else if ((ui8 & 0x00ffffff) == 0x00ffffff)
1864*4882a593Smuzhiyun     {
1865*4882a593Smuzhiyun       fill_scale = 0x400 | (3 << 8);
1866*4882a593Smuzhiyun       ui8 >>= 24;
1867*4882a593Smuzhiyun     }
1868*4882a593Smuzhiyun   else
1869*4882a593Smuzhiyun     {
1870*4882a593Smuzhiyun       *errmsg = _("illegal immediate value");
1871*4882a593Smuzhiyun       ui8 = 0;
1872*4882a593Smuzhiyun     }
1873*4882a593Smuzhiyun 
1874*4882a593Smuzhiyun   return insn | fill_scale | (ui8 & 0xff);
1875*4882a593Smuzhiyun }
1876*4882a593Smuzhiyun 
1877*4882a593Smuzhiyun static long
extract_sci8(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid ATTRIBUTE_UNUSED)1878*4882a593Smuzhiyun extract_sci8 (unsigned long insn,
1879*4882a593Smuzhiyun 	      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1880*4882a593Smuzhiyun 	      int *invalid ATTRIBUTE_UNUSED)
1881*4882a593Smuzhiyun {
1882*4882a593Smuzhiyun   int fill = insn & 0x400;
1883*4882a593Smuzhiyun   int scale_factor = (insn & 0x300) >> 5;
1884*4882a593Smuzhiyun   long value = (insn & 0xff) << scale_factor;
1885*4882a593Smuzhiyun 
1886*4882a593Smuzhiyun   if (fill != 0)
1887*4882a593Smuzhiyun     value |= ~((long) 0xff << scale_factor);
1888*4882a593Smuzhiyun   return value;
1889*4882a593Smuzhiyun }
1890*4882a593Smuzhiyun 
1891*4882a593Smuzhiyun static unsigned long
insert_sci8n(unsigned long insn,long value,ppc_cpu_t dialect,const char ** errmsg)1892*4882a593Smuzhiyun insert_sci8n (unsigned long insn,
1893*4882a593Smuzhiyun 	      long value,
1894*4882a593Smuzhiyun 	      ppc_cpu_t dialect,
1895*4882a593Smuzhiyun 	      const char **errmsg)
1896*4882a593Smuzhiyun {
1897*4882a593Smuzhiyun   return insert_sci8 (insn, -value, dialect, errmsg);
1898*4882a593Smuzhiyun }
1899*4882a593Smuzhiyun 
1900*4882a593Smuzhiyun static long
extract_sci8n(unsigned long insn,ppc_cpu_t dialect,int * invalid)1901*4882a593Smuzhiyun extract_sci8n (unsigned long insn,
1902*4882a593Smuzhiyun 	       ppc_cpu_t dialect,
1903*4882a593Smuzhiyun 	       int *invalid)
1904*4882a593Smuzhiyun {
1905*4882a593Smuzhiyun   return -extract_sci8 (insn, dialect, invalid);
1906*4882a593Smuzhiyun }
1907*4882a593Smuzhiyun 
1908*4882a593Smuzhiyun static unsigned long
insert_sd4h(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)1909*4882a593Smuzhiyun insert_sd4h (unsigned long insn,
1910*4882a593Smuzhiyun 	     long value,
1911*4882a593Smuzhiyun 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1912*4882a593Smuzhiyun 	     const char **errmsg ATTRIBUTE_UNUSED)
1913*4882a593Smuzhiyun {
1914*4882a593Smuzhiyun   return insn | ((value & 0x1e) << 7);
1915*4882a593Smuzhiyun }
1916*4882a593Smuzhiyun 
1917*4882a593Smuzhiyun static long
extract_sd4h(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid ATTRIBUTE_UNUSED)1918*4882a593Smuzhiyun extract_sd4h (unsigned long insn,
1919*4882a593Smuzhiyun 	      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1920*4882a593Smuzhiyun 	      int *invalid ATTRIBUTE_UNUSED)
1921*4882a593Smuzhiyun {
1922*4882a593Smuzhiyun   return ((insn >> 8) & 0xf) << 1;
1923*4882a593Smuzhiyun }
1924*4882a593Smuzhiyun 
1925*4882a593Smuzhiyun static unsigned long
insert_sd4w(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)1926*4882a593Smuzhiyun insert_sd4w (unsigned long insn,
1927*4882a593Smuzhiyun 	     long value,
1928*4882a593Smuzhiyun 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1929*4882a593Smuzhiyun 	     const char **errmsg ATTRIBUTE_UNUSED)
1930*4882a593Smuzhiyun {
1931*4882a593Smuzhiyun   return insn | ((value & 0x3c) << 6);
1932*4882a593Smuzhiyun }
1933*4882a593Smuzhiyun 
1934*4882a593Smuzhiyun static long
extract_sd4w(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid ATTRIBUTE_UNUSED)1935*4882a593Smuzhiyun extract_sd4w (unsigned long insn,
1936*4882a593Smuzhiyun 	      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1937*4882a593Smuzhiyun 	      int *invalid ATTRIBUTE_UNUSED)
1938*4882a593Smuzhiyun {
1939*4882a593Smuzhiyun   return ((insn >> 8) & 0xf) << 2;
1940*4882a593Smuzhiyun }
1941*4882a593Smuzhiyun 
1942*4882a593Smuzhiyun static unsigned long
insert_oimm(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)1943*4882a593Smuzhiyun insert_oimm (unsigned long insn,
1944*4882a593Smuzhiyun 	     long value,
1945*4882a593Smuzhiyun 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1946*4882a593Smuzhiyun 	     const char **errmsg ATTRIBUTE_UNUSED)
1947*4882a593Smuzhiyun {
1948*4882a593Smuzhiyun   return insn | (((value - 1) & 0x1f) << 4);
1949*4882a593Smuzhiyun }
1950*4882a593Smuzhiyun 
1951*4882a593Smuzhiyun static long
extract_oimm(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid ATTRIBUTE_UNUSED)1952*4882a593Smuzhiyun extract_oimm (unsigned long insn,
1953*4882a593Smuzhiyun 	      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1954*4882a593Smuzhiyun 	      int *invalid ATTRIBUTE_UNUSED)
1955*4882a593Smuzhiyun {
1956*4882a593Smuzhiyun   return ((insn >> 4) & 0x1f) + 1;
1957*4882a593Smuzhiyun }
1958*4882a593Smuzhiyun 
1959*4882a593Smuzhiyun /* The SH field in an MD form instruction.  This is split.  */
1960*4882a593Smuzhiyun 
1961*4882a593Smuzhiyun static unsigned long
insert_sh6(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)1962*4882a593Smuzhiyun insert_sh6 (unsigned long insn,
1963*4882a593Smuzhiyun 	    long value,
1964*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1965*4882a593Smuzhiyun 	    const char **errmsg ATTRIBUTE_UNUSED)
1966*4882a593Smuzhiyun {
1967*4882a593Smuzhiyun   /* SH6 operand in the rldixor instructions.  */
1968*4882a593Smuzhiyun   if (PPC_OP (insn) == 4)
1969*4882a593Smuzhiyun     return insn | ((value & 0x1f) << 6) | ((value & 0x20) >> 5);
1970*4882a593Smuzhiyun   else
1971*4882a593Smuzhiyun     return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
1972*4882a593Smuzhiyun }
1973*4882a593Smuzhiyun 
1974*4882a593Smuzhiyun static long
extract_sh6(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid ATTRIBUTE_UNUSED)1975*4882a593Smuzhiyun extract_sh6 (unsigned long insn,
1976*4882a593Smuzhiyun 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1977*4882a593Smuzhiyun 	     int *invalid ATTRIBUTE_UNUSED)
1978*4882a593Smuzhiyun {
1979*4882a593Smuzhiyun   /* SH6 operand in the rldixor instructions.  */
1980*4882a593Smuzhiyun   if (PPC_OP (insn) == 4)
1981*4882a593Smuzhiyun     return ((insn >> 6) & 0x1f) | ((insn << 5) & 0x20);
1982*4882a593Smuzhiyun   else
1983*4882a593Smuzhiyun     return ((insn >> 11) & 0x1f) | ((insn << 4) & 0x20);
1984*4882a593Smuzhiyun }
1985*4882a593Smuzhiyun 
1986*4882a593Smuzhiyun /* The SPR field in an XFX form instruction.  This is flipped--the
1987*4882a593Smuzhiyun    lower 5 bits are stored in the upper 5 and vice- versa.  */
1988*4882a593Smuzhiyun 
1989*4882a593Smuzhiyun static unsigned long
insert_spr(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)1990*4882a593Smuzhiyun insert_spr (unsigned long insn,
1991*4882a593Smuzhiyun 	    long value,
1992*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1993*4882a593Smuzhiyun 	    const char **errmsg ATTRIBUTE_UNUSED)
1994*4882a593Smuzhiyun {
1995*4882a593Smuzhiyun   return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
1996*4882a593Smuzhiyun }
1997*4882a593Smuzhiyun 
1998*4882a593Smuzhiyun static long
extract_spr(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid ATTRIBUTE_UNUSED)1999*4882a593Smuzhiyun extract_spr (unsigned long insn,
2000*4882a593Smuzhiyun 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2001*4882a593Smuzhiyun 	     int *invalid ATTRIBUTE_UNUSED)
2002*4882a593Smuzhiyun {
2003*4882a593Smuzhiyun   return ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
2004*4882a593Smuzhiyun }
2005*4882a593Smuzhiyun 
2006*4882a593Smuzhiyun /* Some dialects have 8 SPRG registers instead of the standard 4.  */
2007*4882a593Smuzhiyun #define ALLOW8_SPRG (PPC_OPCODE_BOOKE | PPC_OPCODE_405)
2008*4882a593Smuzhiyun 
2009*4882a593Smuzhiyun static unsigned long
insert_sprg(unsigned long insn,long value,ppc_cpu_t dialect,const char ** errmsg)2010*4882a593Smuzhiyun insert_sprg (unsigned long insn,
2011*4882a593Smuzhiyun 	     long value,
2012*4882a593Smuzhiyun 	     ppc_cpu_t dialect,
2013*4882a593Smuzhiyun 	     const char **errmsg)
2014*4882a593Smuzhiyun {
2015*4882a593Smuzhiyun   if (value > 7
2016*4882a593Smuzhiyun       || (value > 3 && (dialect & ALLOW8_SPRG) == 0))
2017*4882a593Smuzhiyun     *errmsg = _("invalid sprg number");
2018*4882a593Smuzhiyun 
2019*4882a593Smuzhiyun   /* If this is mfsprg4..7 then use spr 260..263 which can be read in
2020*4882a593Smuzhiyun      user mode.  Anything else must use spr 272..279.  */
2021*4882a593Smuzhiyun   if (value <= 3 || (insn & 0x100) != 0)
2022*4882a593Smuzhiyun     value |= 0x10;
2023*4882a593Smuzhiyun 
2024*4882a593Smuzhiyun   return insn | ((value & 0x17) << 16);
2025*4882a593Smuzhiyun }
2026*4882a593Smuzhiyun 
2027*4882a593Smuzhiyun static long
extract_sprg(unsigned long insn,ppc_cpu_t dialect,int * invalid)2028*4882a593Smuzhiyun extract_sprg (unsigned long insn,
2029*4882a593Smuzhiyun 	      ppc_cpu_t dialect,
2030*4882a593Smuzhiyun 	      int *invalid)
2031*4882a593Smuzhiyun {
2032*4882a593Smuzhiyun   unsigned long val = (insn >> 16) & 0x1f;
2033*4882a593Smuzhiyun 
2034*4882a593Smuzhiyun   /* mfsprg can use 260..263 and 272..279.  mtsprg only uses spr 272..279
2035*4882a593Smuzhiyun      If not BOOKE, 405 or VLE, then both use only 272..275.  */
2036*4882a593Smuzhiyun   if ((val - 0x10 > 3 && (dialect & ALLOW8_SPRG) == 0)
2037*4882a593Smuzhiyun       || (val - 0x10 > 7 && (insn & 0x100) != 0)
2038*4882a593Smuzhiyun       || val <= 3
2039*4882a593Smuzhiyun       || (val & 8) != 0)
2040*4882a593Smuzhiyun     *invalid = 1;
2041*4882a593Smuzhiyun   return val & 7;
2042*4882a593Smuzhiyun }
2043*4882a593Smuzhiyun 
2044*4882a593Smuzhiyun /* The TBR field in an XFX instruction.  This is just like SPR, but it
2045*4882a593Smuzhiyun    is optional.  */
2046*4882a593Smuzhiyun 
2047*4882a593Smuzhiyun static unsigned long
insert_tbr(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg)2048*4882a593Smuzhiyun insert_tbr (unsigned long insn,
2049*4882a593Smuzhiyun 	    long value,
2050*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2051*4882a593Smuzhiyun 	    const char **errmsg)
2052*4882a593Smuzhiyun {
2053*4882a593Smuzhiyun   if (value != 268 && value != 269)
2054*4882a593Smuzhiyun     *errmsg = _("invalid tbr number");
2055*4882a593Smuzhiyun   return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
2056*4882a593Smuzhiyun }
2057*4882a593Smuzhiyun 
2058*4882a593Smuzhiyun static long
extract_tbr(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid)2059*4882a593Smuzhiyun extract_tbr (unsigned long insn,
2060*4882a593Smuzhiyun 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2061*4882a593Smuzhiyun 	     int *invalid)
2062*4882a593Smuzhiyun {
2063*4882a593Smuzhiyun   long ret;
2064*4882a593Smuzhiyun 
2065*4882a593Smuzhiyun   ret = ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
2066*4882a593Smuzhiyun   if (ret != 268 && ret != 269)
2067*4882a593Smuzhiyun     *invalid = 1;
2068*4882a593Smuzhiyun   return ret;
2069*4882a593Smuzhiyun }
2070*4882a593Smuzhiyun 
2071*4882a593Smuzhiyun /* The XT and XS fields in an XX1 or XX3 form instruction.  This is split.  */
2072*4882a593Smuzhiyun 
2073*4882a593Smuzhiyun static unsigned long
insert_xt6(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)2074*4882a593Smuzhiyun insert_xt6 (unsigned long insn,
2075*4882a593Smuzhiyun 	    long value,
2076*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2077*4882a593Smuzhiyun 	    const char **errmsg ATTRIBUTE_UNUSED)
2078*4882a593Smuzhiyun {
2079*4882a593Smuzhiyun   return insn | ((value & 0x1f) << 21) | ((value & 0x20) >> 5);
2080*4882a593Smuzhiyun }
2081*4882a593Smuzhiyun 
2082*4882a593Smuzhiyun static long
extract_xt6(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid ATTRIBUTE_UNUSED)2083*4882a593Smuzhiyun extract_xt6 (unsigned long insn,
2084*4882a593Smuzhiyun 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2085*4882a593Smuzhiyun 	     int *invalid ATTRIBUTE_UNUSED)
2086*4882a593Smuzhiyun {
2087*4882a593Smuzhiyun   return ((insn << 5) & 0x20) | ((insn >> 21) & 0x1f);
2088*4882a593Smuzhiyun }
2089*4882a593Smuzhiyun 
2090*4882a593Smuzhiyun /* The XT and XS fields in an DQ form VSX instruction.  This is split.  */
2091*4882a593Smuzhiyun static unsigned long
insert_xtq6(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)2092*4882a593Smuzhiyun insert_xtq6 (unsigned long insn,
2093*4882a593Smuzhiyun 	    long value,
2094*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2095*4882a593Smuzhiyun 	    const char **errmsg ATTRIBUTE_UNUSED)
2096*4882a593Smuzhiyun {
2097*4882a593Smuzhiyun   return insn | ((value & 0x1f) << 21) | ((value & 0x20) >> 2);
2098*4882a593Smuzhiyun }
2099*4882a593Smuzhiyun 
2100*4882a593Smuzhiyun static long
extract_xtq6(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid ATTRIBUTE_UNUSED)2101*4882a593Smuzhiyun extract_xtq6 (unsigned long insn,
2102*4882a593Smuzhiyun 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2103*4882a593Smuzhiyun 	     int *invalid ATTRIBUTE_UNUSED)
2104*4882a593Smuzhiyun {
2105*4882a593Smuzhiyun   return ((insn << 2) & 0x20) | ((insn >> 21) & 0x1f);
2106*4882a593Smuzhiyun }
2107*4882a593Smuzhiyun 
2108*4882a593Smuzhiyun /* The XA field in an XX3 form instruction.  This is split.  */
2109*4882a593Smuzhiyun 
2110*4882a593Smuzhiyun static unsigned long
insert_xa6(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)2111*4882a593Smuzhiyun insert_xa6 (unsigned long insn,
2112*4882a593Smuzhiyun 	    long value,
2113*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2114*4882a593Smuzhiyun 	    const char **errmsg ATTRIBUTE_UNUSED)
2115*4882a593Smuzhiyun {
2116*4882a593Smuzhiyun   return insn | ((value & 0x1f) << 16) | ((value & 0x20) >> 3);
2117*4882a593Smuzhiyun }
2118*4882a593Smuzhiyun 
2119*4882a593Smuzhiyun static long
extract_xa6(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid ATTRIBUTE_UNUSED)2120*4882a593Smuzhiyun extract_xa6 (unsigned long insn,
2121*4882a593Smuzhiyun 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2122*4882a593Smuzhiyun 	     int *invalid ATTRIBUTE_UNUSED)
2123*4882a593Smuzhiyun {
2124*4882a593Smuzhiyun   return ((insn << 3) & 0x20) | ((insn >> 16) & 0x1f);
2125*4882a593Smuzhiyun }
2126*4882a593Smuzhiyun 
2127*4882a593Smuzhiyun /* The XB field in an XX3 form instruction.  This is split.  */
2128*4882a593Smuzhiyun 
2129*4882a593Smuzhiyun static unsigned long
insert_xb6(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)2130*4882a593Smuzhiyun insert_xb6 (unsigned long insn,
2131*4882a593Smuzhiyun 	    long value,
2132*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2133*4882a593Smuzhiyun 	    const char **errmsg ATTRIBUTE_UNUSED)
2134*4882a593Smuzhiyun {
2135*4882a593Smuzhiyun   return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
2136*4882a593Smuzhiyun }
2137*4882a593Smuzhiyun 
2138*4882a593Smuzhiyun static long
extract_xb6(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid ATTRIBUTE_UNUSED)2139*4882a593Smuzhiyun extract_xb6 (unsigned long insn,
2140*4882a593Smuzhiyun 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2141*4882a593Smuzhiyun 	     int *invalid ATTRIBUTE_UNUSED)
2142*4882a593Smuzhiyun {
2143*4882a593Smuzhiyun   return ((insn << 4) & 0x20) | ((insn >> 11) & 0x1f);
2144*4882a593Smuzhiyun }
2145*4882a593Smuzhiyun 
2146*4882a593Smuzhiyun /* The XB field in an XX3 form instruction when it must be the same as
2147*4882a593Smuzhiyun    the XA field in the instruction.  This is used for extended
2148*4882a593Smuzhiyun    mnemonics like xvmovdp.  This operand is marked FAKE.  The insertion
2149*4882a593Smuzhiyun    function just copies the XA field into the XB field, and the
2150*4882a593Smuzhiyun    extraction function just checks that the fields are the same.  */
2151*4882a593Smuzhiyun 
2152*4882a593Smuzhiyun static unsigned long
insert_xb6s(unsigned long insn,long value ATTRIBUTE_UNUSED,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)2153*4882a593Smuzhiyun insert_xb6s (unsigned long insn,
2154*4882a593Smuzhiyun 	    long value ATTRIBUTE_UNUSED,
2155*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2156*4882a593Smuzhiyun 	    const char **errmsg ATTRIBUTE_UNUSED)
2157*4882a593Smuzhiyun {
2158*4882a593Smuzhiyun   return insn | (((insn >> 16) & 0x1f) << 11) | (((insn >> 2) & 0x1) << 1);
2159*4882a593Smuzhiyun }
2160*4882a593Smuzhiyun 
2161*4882a593Smuzhiyun static long
extract_xb6s(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid)2162*4882a593Smuzhiyun extract_xb6s (unsigned long insn,
2163*4882a593Smuzhiyun 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2164*4882a593Smuzhiyun 	     int *invalid)
2165*4882a593Smuzhiyun {
2166*4882a593Smuzhiyun   if ((((insn >> 16) & 0x1f) != ((insn >> 11) & 0x1f))
2167*4882a593Smuzhiyun       || (((insn >> 2) & 0x1) != ((insn >> 1) & 0x1)))
2168*4882a593Smuzhiyun     *invalid = 1;
2169*4882a593Smuzhiyun   return 0;
2170*4882a593Smuzhiyun }
2171*4882a593Smuzhiyun 
2172*4882a593Smuzhiyun /* The XC field in an XX4 form instruction.  This is split.  */
2173*4882a593Smuzhiyun 
2174*4882a593Smuzhiyun static unsigned long
insert_xc6(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)2175*4882a593Smuzhiyun insert_xc6 (unsigned long insn,
2176*4882a593Smuzhiyun 	    long value,
2177*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2178*4882a593Smuzhiyun 	    const char **errmsg ATTRIBUTE_UNUSED)
2179*4882a593Smuzhiyun {
2180*4882a593Smuzhiyun   return insn | ((value & 0x1f) << 6) | ((value & 0x20) >> 2);
2181*4882a593Smuzhiyun }
2182*4882a593Smuzhiyun 
2183*4882a593Smuzhiyun static long
extract_xc6(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid ATTRIBUTE_UNUSED)2184*4882a593Smuzhiyun extract_xc6 (unsigned long insn,
2185*4882a593Smuzhiyun 	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2186*4882a593Smuzhiyun 	     int *invalid ATTRIBUTE_UNUSED)
2187*4882a593Smuzhiyun {
2188*4882a593Smuzhiyun   return ((insn << 2) & 0x20) | ((insn >> 6) & 0x1f);
2189*4882a593Smuzhiyun }
2190*4882a593Smuzhiyun 
2191*4882a593Smuzhiyun static unsigned long
insert_dm(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg)2192*4882a593Smuzhiyun insert_dm (unsigned long insn,
2193*4882a593Smuzhiyun 	   long value,
2194*4882a593Smuzhiyun 	   ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2195*4882a593Smuzhiyun 	   const char **errmsg)
2196*4882a593Smuzhiyun {
2197*4882a593Smuzhiyun   if (value != 0 && value != 1)
2198*4882a593Smuzhiyun     *errmsg = _("invalid constant");
2199*4882a593Smuzhiyun   return insn | (((value) ? 3 : 0) << 8);
2200*4882a593Smuzhiyun }
2201*4882a593Smuzhiyun 
2202*4882a593Smuzhiyun static long
extract_dm(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid)2203*4882a593Smuzhiyun extract_dm (unsigned long insn,
2204*4882a593Smuzhiyun 	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2205*4882a593Smuzhiyun 	    int *invalid)
2206*4882a593Smuzhiyun {
2207*4882a593Smuzhiyun   long value;
2208*4882a593Smuzhiyun 
2209*4882a593Smuzhiyun   value = (insn >> 8) & 3;
2210*4882a593Smuzhiyun   if (value != 0 && value != 3)
2211*4882a593Smuzhiyun     *invalid = 1;
2212*4882a593Smuzhiyun   return (value) ? 1 : 0;
2213*4882a593Smuzhiyun }
2214*4882a593Smuzhiyun 
2215*4882a593Smuzhiyun /* The VLESIMM field in an I16A form instruction.  This is split.  */
2216*4882a593Smuzhiyun 
2217*4882a593Smuzhiyun static unsigned long
insert_vlesi(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)2218*4882a593Smuzhiyun insert_vlesi (unsigned long insn,
2219*4882a593Smuzhiyun             long value,
2220*4882a593Smuzhiyun             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2221*4882a593Smuzhiyun             const char **errmsg ATTRIBUTE_UNUSED)
2222*4882a593Smuzhiyun {
2223*4882a593Smuzhiyun   return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
2224*4882a593Smuzhiyun }
2225*4882a593Smuzhiyun 
2226*4882a593Smuzhiyun static long
extract_vlesi(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid ATTRIBUTE_UNUSED)2227*4882a593Smuzhiyun extract_vlesi (unsigned long insn,
2228*4882a593Smuzhiyun              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2229*4882a593Smuzhiyun              int *invalid ATTRIBUTE_UNUSED)
2230*4882a593Smuzhiyun {
2231*4882a593Smuzhiyun   long value = ((insn >> 10) & 0xf800) | (insn & 0x7ff);
2232*4882a593Smuzhiyun   value = (value ^ 0x8000) - 0x8000;
2233*4882a593Smuzhiyun   return value;
2234*4882a593Smuzhiyun }
2235*4882a593Smuzhiyun 
2236*4882a593Smuzhiyun static unsigned long
insert_vlensi(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)2237*4882a593Smuzhiyun insert_vlensi (unsigned long insn,
2238*4882a593Smuzhiyun             long value,
2239*4882a593Smuzhiyun             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2240*4882a593Smuzhiyun             const char **errmsg ATTRIBUTE_UNUSED)
2241*4882a593Smuzhiyun {
2242*4882a593Smuzhiyun   value = -value;
2243*4882a593Smuzhiyun   return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
2244*4882a593Smuzhiyun }
2245*4882a593Smuzhiyun static long
extract_vlensi(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid ATTRIBUTE_UNUSED)2246*4882a593Smuzhiyun extract_vlensi (unsigned long insn,
2247*4882a593Smuzhiyun              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2248*4882a593Smuzhiyun              int *invalid ATTRIBUTE_UNUSED)
2249*4882a593Smuzhiyun {
2250*4882a593Smuzhiyun   long value = ((insn >> 10) & 0xf800) | (insn & 0x7ff);
2251*4882a593Smuzhiyun   value = (value ^ 0x8000) - 0x8000;
2252*4882a593Smuzhiyun   /* Don't use for disassembly.  */
2253*4882a593Smuzhiyun   *invalid = 1;
2254*4882a593Smuzhiyun   return -value;
2255*4882a593Smuzhiyun }
2256*4882a593Smuzhiyun 
2257*4882a593Smuzhiyun /* The VLEUIMM field in an I16A form instruction.  This is split.  */
2258*4882a593Smuzhiyun 
2259*4882a593Smuzhiyun static unsigned long
insert_vleui(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)2260*4882a593Smuzhiyun insert_vleui (unsigned long insn,
2261*4882a593Smuzhiyun             long value,
2262*4882a593Smuzhiyun             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2263*4882a593Smuzhiyun             const char **errmsg ATTRIBUTE_UNUSED)
2264*4882a593Smuzhiyun {
2265*4882a593Smuzhiyun   return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
2266*4882a593Smuzhiyun }
2267*4882a593Smuzhiyun 
2268*4882a593Smuzhiyun static long
extract_vleui(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid ATTRIBUTE_UNUSED)2269*4882a593Smuzhiyun extract_vleui (unsigned long insn,
2270*4882a593Smuzhiyun              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2271*4882a593Smuzhiyun              int *invalid ATTRIBUTE_UNUSED)
2272*4882a593Smuzhiyun {
2273*4882a593Smuzhiyun   return ((insn >> 10) & 0xf800) | (insn & 0x7ff);
2274*4882a593Smuzhiyun }
2275*4882a593Smuzhiyun 
2276*4882a593Smuzhiyun /* The VLEUIMML field in an I16L form instruction.  This is split.  */
2277*4882a593Smuzhiyun 
2278*4882a593Smuzhiyun static unsigned long
insert_vleil(unsigned long insn,long value,ppc_cpu_t dialect ATTRIBUTE_UNUSED,const char ** errmsg ATTRIBUTE_UNUSED)2279*4882a593Smuzhiyun insert_vleil (unsigned long insn,
2280*4882a593Smuzhiyun             long value,
2281*4882a593Smuzhiyun             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2282*4882a593Smuzhiyun             const char **errmsg ATTRIBUTE_UNUSED)
2283*4882a593Smuzhiyun {
2284*4882a593Smuzhiyun   return insn | ((value & 0xf800) << 5) | (value & 0x7ff);
2285*4882a593Smuzhiyun }
2286*4882a593Smuzhiyun 
2287*4882a593Smuzhiyun static long
extract_vleil(unsigned long insn,ppc_cpu_t dialect ATTRIBUTE_UNUSED,int * invalid ATTRIBUTE_UNUSED)2288*4882a593Smuzhiyun extract_vleil (unsigned long insn,
2289*4882a593Smuzhiyun              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2290*4882a593Smuzhiyun              int *invalid ATTRIBUTE_UNUSED)
2291*4882a593Smuzhiyun {
2292*4882a593Smuzhiyun   return ((insn >> 5) & 0xf800) | (insn & 0x7ff);
2293*4882a593Smuzhiyun }
2294*4882a593Smuzhiyun 
2295*4882a593Smuzhiyun 
2296*4882a593Smuzhiyun /* Macros used to form opcodes.  */
2297*4882a593Smuzhiyun 
2298*4882a593Smuzhiyun /* The main opcode.  */
2299*4882a593Smuzhiyun #define OP(x) ((((unsigned long)(x)) & 0x3f) << 26)
2300*4882a593Smuzhiyun #define OP_MASK OP (0x3f)
2301*4882a593Smuzhiyun 
2302*4882a593Smuzhiyun /* The main opcode combined with a trap code in the TO field of a D
2303*4882a593Smuzhiyun    form instruction.  Used for extended mnemonics for the trap
2304*4882a593Smuzhiyun    instructions.  */
2305*4882a593Smuzhiyun #define OPTO(x,to) (OP (x) | ((((unsigned long)(to)) & 0x1f) << 21))
2306*4882a593Smuzhiyun #define OPTO_MASK (OP_MASK | TO_MASK)
2307*4882a593Smuzhiyun 
2308*4882a593Smuzhiyun /* The main opcode combined with a comparison size bit in the L field
2309*4882a593Smuzhiyun    of a D form or X form instruction.  Used for extended mnemonics for
2310*4882a593Smuzhiyun    the comparison instructions.  */
2311*4882a593Smuzhiyun #define OPL(x,l) (OP (x) | ((((unsigned long)(l)) & 1) << 21))
2312*4882a593Smuzhiyun #define OPL_MASK OPL (0x3f,1)
2313*4882a593Smuzhiyun 
2314*4882a593Smuzhiyun /* The main opcode combined with an update code in D form instruction.
2315*4882a593Smuzhiyun    Used for extended mnemonics for VLE memory instructions.  */
2316*4882a593Smuzhiyun #define OPVUP(x,vup) (OP (x) | ((((unsigned long)(vup)) & 0xff) << 8))
2317*4882a593Smuzhiyun #define OPVUP_MASK OPVUP (0x3f,  0xff)
2318*4882a593Smuzhiyun 
2319*4882a593Smuzhiyun /* The main opcode combined with an update code and the RT fields specified in
2320*4882a593Smuzhiyun    D form instruction.  Used for VLE volatile context save/restore
2321*4882a593Smuzhiyun    instructions.  */
2322*4882a593Smuzhiyun #define OPVUPRT(x,vup,rt) (OPVUP (x, vup) | ((((unsigned long)(rt)) & 0x1f) << 21))
2323*4882a593Smuzhiyun #define OPVUPRT_MASK OPVUPRT (0x3f, 0xff, 0x1f)
2324*4882a593Smuzhiyun 
2325*4882a593Smuzhiyun /* An A form instruction.  */
2326*4882a593Smuzhiyun #define A(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1) | (((unsigned long)(rc)) & 1))
2327*4882a593Smuzhiyun #define A_MASK A (0x3f, 0x1f, 1)
2328*4882a593Smuzhiyun 
2329*4882a593Smuzhiyun /* An A_MASK with the FRB field fixed.  */
2330*4882a593Smuzhiyun #define AFRB_MASK (A_MASK | FRB_MASK)
2331*4882a593Smuzhiyun 
2332*4882a593Smuzhiyun /* An A_MASK with the FRC field fixed.  */
2333*4882a593Smuzhiyun #define AFRC_MASK (A_MASK | FRC_MASK)
2334*4882a593Smuzhiyun 
2335*4882a593Smuzhiyun /* An A_MASK with the FRA and FRC fields fixed.  */
2336*4882a593Smuzhiyun #define AFRAFRC_MASK (A_MASK | FRA_MASK | FRC_MASK)
2337*4882a593Smuzhiyun 
2338*4882a593Smuzhiyun /* An AFRAFRC_MASK, but with L bit clear.  */
2339*4882a593Smuzhiyun #define AFRALFRC_MASK (AFRAFRC_MASK & ~((unsigned long) 1 << 16))
2340*4882a593Smuzhiyun 
2341*4882a593Smuzhiyun /* A B form instruction.  */
2342*4882a593Smuzhiyun #define B(op, aa, lk) (OP (op) | ((((unsigned long)(aa)) & 1) << 1) | ((lk) & 1))
2343*4882a593Smuzhiyun #define B_MASK B (0x3f, 1, 1)
2344*4882a593Smuzhiyun 
2345*4882a593Smuzhiyun /* A BD8 form instruction.  This is a 16-bit instruction.  */
2346*4882a593Smuzhiyun #define BD8(op, aa, lk) (((((unsigned long)(op)) & 0x3f) << 10) | (((aa) & 1) << 9) | (((lk) & 1) << 8))
2347*4882a593Smuzhiyun #define BD8_MASK BD8 (0x3f, 1, 1)
2348*4882a593Smuzhiyun 
2349*4882a593Smuzhiyun /* Another BD8 form instruction.  This is a 16-bit instruction.  */
2350*4882a593Smuzhiyun #define BD8IO(op) ((((unsigned long)(op)) & 0x1f) << 11)
2351*4882a593Smuzhiyun #define BD8IO_MASK BD8IO (0x1f)
2352*4882a593Smuzhiyun 
2353*4882a593Smuzhiyun /* A BD8 form instruction for simplified mnemonics.  */
2354*4882a593Smuzhiyun #define EBD8IO(op, bo, bi) (BD8IO ((op)) | ((bo) << 10) | ((bi) << 8))
2355*4882a593Smuzhiyun /* A mask that excludes BO32 and BI32.  */
2356*4882a593Smuzhiyun #define EBD8IO1_MASK 0xf800
2357*4882a593Smuzhiyun /* A mask that includes BO32 and excludes BI32.  */
2358*4882a593Smuzhiyun #define EBD8IO2_MASK 0xfc00
2359*4882a593Smuzhiyun /* A mask that include BO32 AND BI32.  */
2360*4882a593Smuzhiyun #define EBD8IO3_MASK 0xff00
2361*4882a593Smuzhiyun 
2362*4882a593Smuzhiyun /* A BD15 form instruction.  */
2363*4882a593Smuzhiyun #define BD15(op, aa, lk) (OP (op) | ((((unsigned long)(aa)) & 0xf) << 22) | ((lk) & 1))
2364*4882a593Smuzhiyun #define BD15_MASK BD15 (0x3f, 0xf, 1)
2365*4882a593Smuzhiyun 
2366*4882a593Smuzhiyun /* A BD15 form instruction for extended conditional branch mnemonics.  */
2367*4882a593Smuzhiyun #define EBD15(op, aa, bo, lk) (((op) & 0x3f) << 26) | (((aa) & 0xf) << 22) | (((bo) & 0x3) << 20) | ((lk) & 1)
2368*4882a593Smuzhiyun #define EBD15_MASK 0xfff00001
2369*4882a593Smuzhiyun 
2370*4882a593Smuzhiyun /* A BD15 form instruction for extended conditional branch mnemonics with BI.  */
2371*4882a593Smuzhiyun #define EBD15BI(op, aa, bo, bi, lk) (((op) & 0x3f) << 26) \
2372*4882a593Smuzhiyun                                     | (((aa) & 0xf) << 22) \
2373*4882a593Smuzhiyun                                     | (((bo) & 0x3) << 20) \
2374*4882a593Smuzhiyun                                     | (((bi) & 0x3) << 16) \
2375*4882a593Smuzhiyun                                     | ((lk) & 1)
2376*4882a593Smuzhiyun #define EBD15BI_MASK  0xfff30001
2377*4882a593Smuzhiyun 
2378*4882a593Smuzhiyun /* A BD24 form instruction.  */
2379*4882a593Smuzhiyun #define BD24(op, aa, lk) (OP (op) | ((((unsigned long)(aa)) & 1) << 25) | ((lk) & 1))
2380*4882a593Smuzhiyun #define BD24_MASK BD24 (0x3f, 1, 1)
2381*4882a593Smuzhiyun 
2382*4882a593Smuzhiyun /* A B form instruction setting the BO field.  */
2383*4882a593Smuzhiyun #define BBO(op, bo, aa, lk) (B ((op), (aa), (lk)) | ((((unsigned long)(bo)) & 0x1f) << 21))
2384*4882a593Smuzhiyun #define BBO_MASK BBO (0x3f, 0x1f, 1, 1)
2385*4882a593Smuzhiyun 
2386*4882a593Smuzhiyun /* A BBO_MASK with the y bit of the BO field removed.  This permits
2387*4882a593Smuzhiyun    matching a conditional branch regardless of the setting of the y
2388*4882a593Smuzhiyun    bit.  Similarly for the 'at' bits used for power4 branch hints.  */
2389*4882a593Smuzhiyun #define Y_MASK	 (((unsigned long) 1) << 21)
2390*4882a593Smuzhiyun #define AT1_MASK (((unsigned long) 3) << 21)
2391*4882a593Smuzhiyun #define AT2_MASK (((unsigned long) 9) << 21)
2392*4882a593Smuzhiyun #define BBOY_MASK  (BBO_MASK &~ Y_MASK)
2393*4882a593Smuzhiyun #define BBOAT_MASK (BBO_MASK &~ AT1_MASK)
2394*4882a593Smuzhiyun 
2395*4882a593Smuzhiyun /* A B form instruction setting the BO field and the condition bits of
2396*4882a593Smuzhiyun    the BI field.  */
2397*4882a593Smuzhiyun #define BBOCB(op, bo, cb, aa, lk) \
2398*4882a593Smuzhiyun   (BBO ((op), (bo), (aa), (lk)) | ((((unsigned long)(cb)) & 0x3) << 16))
2399*4882a593Smuzhiyun #define BBOCB_MASK BBOCB (0x3f, 0x1f, 0x3, 1, 1)
2400*4882a593Smuzhiyun 
2401*4882a593Smuzhiyun /* A BBOCB_MASK with the y bit of the BO field removed.  */
2402*4882a593Smuzhiyun #define BBOYCB_MASK (BBOCB_MASK &~ Y_MASK)
2403*4882a593Smuzhiyun #define BBOATCB_MASK (BBOCB_MASK &~ AT1_MASK)
2404*4882a593Smuzhiyun #define BBOAT2CB_MASK (BBOCB_MASK &~ AT2_MASK)
2405*4882a593Smuzhiyun 
2406*4882a593Smuzhiyun /* A BBOYCB_MASK in which the BI field is fixed.  */
2407*4882a593Smuzhiyun #define BBOYBI_MASK (BBOYCB_MASK | BI_MASK)
2408*4882a593Smuzhiyun #define BBOATBI_MASK (BBOAT2CB_MASK | BI_MASK)
2409*4882a593Smuzhiyun 
2410*4882a593Smuzhiyun /* A VLE C form instruction.  */
2411*4882a593Smuzhiyun #define C_LK(x, lk) (((((unsigned long)(x)) & 0x7fff) << 1) | ((lk) & 1))
2412*4882a593Smuzhiyun #define C_LK_MASK C_LK(0x7fff, 1)
2413*4882a593Smuzhiyun #define C(x) ((((unsigned long)(x)) & 0xffff))
2414*4882a593Smuzhiyun #define C_MASK C(0xffff)
2415*4882a593Smuzhiyun 
2416*4882a593Smuzhiyun /* An Context form instruction.  */
2417*4882a593Smuzhiyun #define CTX(op, xop)   (OP (op) | (((unsigned long)(xop)) & 0x7))
2418*4882a593Smuzhiyun #define CTX_MASK CTX(0x3f, 0x7)
2419*4882a593Smuzhiyun 
2420*4882a593Smuzhiyun /* A User Context form instruction.  */
2421*4882a593Smuzhiyun #define UCTX(op, xop)  (OP (op) | (((unsigned long)(xop)) & 0x1f))
2422*4882a593Smuzhiyun #define UCTX_MASK UCTX(0x3f, 0x1f)
2423*4882a593Smuzhiyun 
2424*4882a593Smuzhiyun /* The main opcode mask with the RA field clear.  */
2425*4882a593Smuzhiyun #define DRA_MASK (OP_MASK | RA_MASK)
2426*4882a593Smuzhiyun 
2427*4882a593Smuzhiyun /* A DQ form VSX instruction.  */
2428*4882a593Smuzhiyun #define DQX(op, xop) (OP (op) | ((xop) & 0x7))
2429*4882a593Smuzhiyun #define DQX_MASK DQX (0x3f, 7)
2430*4882a593Smuzhiyun 
2431*4882a593Smuzhiyun /* A DS form instruction.  */
2432*4882a593Smuzhiyun #define DSO(op, xop) (OP (op) | ((xop) & 0x3))
2433*4882a593Smuzhiyun #define DS_MASK DSO (0x3f, 3)
2434*4882a593Smuzhiyun 
2435*4882a593Smuzhiyun /* An DX form instruction.  */
2436*4882a593Smuzhiyun #define DX(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1))
2437*4882a593Smuzhiyun #define DX_MASK DX (0x3f, 0x1f)
2438*4882a593Smuzhiyun 
2439*4882a593Smuzhiyun /* An EVSEL form instruction.  */
2440*4882a593Smuzhiyun #define EVSEL(op, xop) (OP (op) | (((unsigned long)(xop)) & 0xff) << 3)
2441*4882a593Smuzhiyun #define EVSEL_MASK EVSEL(0x3f, 0xff)
2442*4882a593Smuzhiyun 
2443*4882a593Smuzhiyun /* An IA16 form instruction.  */
2444*4882a593Smuzhiyun #define IA16(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f) << 11)
2445*4882a593Smuzhiyun #define IA16_MASK IA16(0x3f, 0x1f)
2446*4882a593Smuzhiyun 
2447*4882a593Smuzhiyun /* An I16A form instruction.  */
2448*4882a593Smuzhiyun #define I16A(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f) << 11)
2449*4882a593Smuzhiyun #define I16A_MASK I16A(0x3f, 0x1f)
2450*4882a593Smuzhiyun 
2451*4882a593Smuzhiyun /* An I16L form instruction.  */
2452*4882a593Smuzhiyun #define I16L(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f) << 11)
2453*4882a593Smuzhiyun #define I16L_MASK I16L(0x3f, 0x1f)
2454*4882a593Smuzhiyun 
2455*4882a593Smuzhiyun /* An IM7 form instruction.  */
2456*4882a593Smuzhiyun #define IM7(op) ((((unsigned long)(op)) & 0x1f) << 11)
2457*4882a593Smuzhiyun #define IM7_MASK IM7(0x1f)
2458*4882a593Smuzhiyun 
2459*4882a593Smuzhiyun /* An M form instruction.  */
2460*4882a593Smuzhiyun #define M(op, rc) (OP (op) | ((rc) & 1))
2461*4882a593Smuzhiyun #define M_MASK M (0x3f, 1)
2462*4882a593Smuzhiyun 
2463*4882a593Smuzhiyun /* An LI20 form instruction.  */
2464*4882a593Smuzhiyun #define LI20(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1) << 15)
2465*4882a593Smuzhiyun #define LI20_MASK LI20(0x3f, 0x1)
2466*4882a593Smuzhiyun 
2467*4882a593Smuzhiyun /* An M form instruction with the ME field specified.  */
2468*4882a593Smuzhiyun #define MME(op, me, rc) (M ((op), (rc)) | ((((unsigned long)(me)) & 0x1f) << 1))
2469*4882a593Smuzhiyun 
2470*4882a593Smuzhiyun /* An M_MASK with the MB and ME fields fixed.  */
2471*4882a593Smuzhiyun #define MMBME_MASK (M_MASK | MB_MASK | ME_MASK)
2472*4882a593Smuzhiyun 
2473*4882a593Smuzhiyun /* An M_MASK with the SH and ME fields fixed.  */
2474*4882a593Smuzhiyun #define MSHME_MASK (M_MASK | SH_MASK | ME_MASK)
2475*4882a593Smuzhiyun 
2476*4882a593Smuzhiyun /* An MD form instruction.  */
2477*4882a593Smuzhiyun #define MD(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x7) << 2) | ((rc) & 1))
2478*4882a593Smuzhiyun #define MD_MASK MD (0x3f, 0x7, 1)
2479*4882a593Smuzhiyun 
2480*4882a593Smuzhiyun /* An MD_MASK with the MB field fixed.  */
2481*4882a593Smuzhiyun #define MDMB_MASK (MD_MASK | MB6_MASK)
2482*4882a593Smuzhiyun 
2483*4882a593Smuzhiyun /* An MD_MASK with the SH field fixed.  */
2484*4882a593Smuzhiyun #define MDSH_MASK (MD_MASK | SH6_MASK)
2485*4882a593Smuzhiyun 
2486*4882a593Smuzhiyun /* An MDS form instruction.  */
2487*4882a593Smuzhiyun #define MDS(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0xf) << 1) | ((rc) & 1))
2488*4882a593Smuzhiyun #define MDS_MASK MDS (0x3f, 0xf, 1)
2489*4882a593Smuzhiyun 
2490*4882a593Smuzhiyun /* An MDS_MASK with the MB field fixed.  */
2491*4882a593Smuzhiyun #define MDSMB_MASK (MDS_MASK | MB6_MASK)
2492*4882a593Smuzhiyun 
2493*4882a593Smuzhiyun /* An SC form instruction.  */
2494*4882a593Smuzhiyun #define SC(op, sa, lk) (OP (op) | ((((unsigned long)(sa)) & 1) << 1) | ((lk) & 1))
2495*4882a593Smuzhiyun #define SC_MASK (OP_MASK | (((unsigned long)0x3ff) << 16) | (((unsigned long)1) << 1) | 1)
2496*4882a593Smuzhiyun 
2497*4882a593Smuzhiyun /* An SCI8 form instruction.  */
2498*4882a593Smuzhiyun #define SCI8(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 11))
2499*4882a593Smuzhiyun #define SCI8_MASK SCI8(0x3f, 0x1f)
2500*4882a593Smuzhiyun 
2501*4882a593Smuzhiyun /* An SCI8 form instruction.  */
2502*4882a593Smuzhiyun #define SCI8BF(op, fop, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 11) | (((fop) & 7) << 23))
2503*4882a593Smuzhiyun #define SCI8BF_MASK SCI8BF(0x3f, 7, 0x1f)
2504*4882a593Smuzhiyun 
2505*4882a593Smuzhiyun /* An SD4 form instruction.  This is a 16-bit instruction.  */
2506*4882a593Smuzhiyun #define SD4(op) ((((unsigned long)(op)) & 0xf) << 12)
2507*4882a593Smuzhiyun #define SD4_MASK SD4(0xf)
2508*4882a593Smuzhiyun 
2509*4882a593Smuzhiyun /* An SE_IM5 form instruction.  This is a 16-bit instruction.  */
2510*4882a593Smuzhiyun #define SE_IM5(op, xop) (((((unsigned long)(op)) & 0x3f) << 10) | (((xop) & 0x1) << 9))
2511*4882a593Smuzhiyun #define SE_IM5_MASK SE_IM5(0x3f, 1)
2512*4882a593Smuzhiyun 
2513*4882a593Smuzhiyun /* An SE_R form instruction.  This is a 16-bit instruction.  */
2514*4882a593Smuzhiyun #define SE_R(op, xop) (((((unsigned long)(op)) & 0x3f) << 10) | (((xop) & 0x3f) << 4))
2515*4882a593Smuzhiyun #define SE_R_MASK SE_R(0x3f, 0x3f)
2516*4882a593Smuzhiyun 
2517*4882a593Smuzhiyun /* An SE_RR form instruction.  This is a 16-bit instruction.  */
2518*4882a593Smuzhiyun #define SE_RR(op, xop) (((((unsigned long)(op)) & 0x3f) << 10) | (((xop) & 0x3) << 8))
2519*4882a593Smuzhiyun #define SE_RR_MASK SE_RR(0x3f, 3)
2520*4882a593Smuzhiyun 
2521*4882a593Smuzhiyun /* A VX form instruction.  */
2522*4882a593Smuzhiyun #define VX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x7ff))
2523*4882a593Smuzhiyun 
2524*4882a593Smuzhiyun /* The mask for an VX form instruction.  */
2525*4882a593Smuzhiyun #define VX_MASK	VX(0x3f, 0x7ff)
2526*4882a593Smuzhiyun 
2527*4882a593Smuzhiyun /* A VX_MASK with the VA field fixed.  */
2528*4882a593Smuzhiyun #define VXVA_MASK (VX_MASK | (0x1f << 16))
2529*4882a593Smuzhiyun 
2530*4882a593Smuzhiyun /* A VX_MASK with the VB field fixed.  */
2531*4882a593Smuzhiyun #define VXVB_MASK (VX_MASK | (0x1f << 11))
2532*4882a593Smuzhiyun 
2533*4882a593Smuzhiyun /* A VX_MASK with the VA and VB fields fixed.  */
2534*4882a593Smuzhiyun #define VXVAVB_MASK (VX_MASK | (0x1f << 16) | (0x1f << 11))
2535*4882a593Smuzhiyun 
2536*4882a593Smuzhiyun /* A VX_MASK with the VD and VA fields fixed.  */
2537*4882a593Smuzhiyun #define VXVDVA_MASK (VX_MASK | (0x1f << 21) | (0x1f << 16))
2538*4882a593Smuzhiyun 
2539*4882a593Smuzhiyun /* A VX_MASK with a UIMM4 field.  */
2540*4882a593Smuzhiyun #define VXUIMM4_MASK (VX_MASK | (0x1 << 20))
2541*4882a593Smuzhiyun 
2542*4882a593Smuzhiyun /* A VX_MASK with a UIMM3 field.  */
2543*4882a593Smuzhiyun #define VXUIMM3_MASK (VX_MASK | (0x3 << 19))
2544*4882a593Smuzhiyun 
2545*4882a593Smuzhiyun /* A VX_MASK with a UIMM2 field.  */
2546*4882a593Smuzhiyun #define VXUIMM2_MASK (VX_MASK | (0x7 << 18))
2547*4882a593Smuzhiyun 
2548*4882a593Smuzhiyun /* A VX_MASK with a PS field.  */
2549*4882a593Smuzhiyun #define VXPS_MASK (VX_MASK & ~(0x1 << 9))
2550*4882a593Smuzhiyun 
2551*4882a593Smuzhiyun /* A VX_MASK with the VA field fixed with a PS field.  */
2552*4882a593Smuzhiyun #define VXVAPS_MASK ((VX_MASK | (0x1f << 16)) & ~(0x1 << 9))
2553*4882a593Smuzhiyun 
2554*4882a593Smuzhiyun /* A VA form instruction.  */
2555*4882a593Smuzhiyun #define VXA(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x03f))
2556*4882a593Smuzhiyun 
2557*4882a593Smuzhiyun /* The mask for an VA form instruction.  */
2558*4882a593Smuzhiyun #define VXA_MASK VXA(0x3f, 0x3f)
2559*4882a593Smuzhiyun 
2560*4882a593Smuzhiyun /* A VXA_MASK with a SHB field.  */
2561*4882a593Smuzhiyun #define VXASHB_MASK (VXA_MASK | (1 << 10))
2562*4882a593Smuzhiyun 
2563*4882a593Smuzhiyun /* A VXR form instruction.  */
2564*4882a593Smuzhiyun #define VXR(op, xop, rc) (OP (op) | (((rc) & 1) << 10) | (((unsigned long)(xop)) & 0x3ff))
2565*4882a593Smuzhiyun 
2566*4882a593Smuzhiyun /* The mask for a VXR form instruction.  */
2567*4882a593Smuzhiyun #define VXR_MASK VXR(0x3f, 0x3ff, 1)
2568*4882a593Smuzhiyun 
2569*4882a593Smuzhiyun /* A VX form instruction with a VA tertiary opcode.  */
2570*4882a593Smuzhiyun #define VXVA(op, xop, vaop) (VX(op,xop) | (((vaop) & 0x1f) << 16))
2571*4882a593Smuzhiyun 
2572*4882a593Smuzhiyun #define VXASH(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1))
2573*4882a593Smuzhiyun #define VXASH_MASK VXASH (0x3f, 0x1f)
2574*4882a593Smuzhiyun 
2575*4882a593Smuzhiyun /* An X form instruction.  */
2576*4882a593Smuzhiyun #define X(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1))
2577*4882a593Smuzhiyun 
2578*4882a593Smuzhiyun /* A X form instruction for Quad-Precision FP Instructions.  */
2579*4882a593Smuzhiyun #define XVA(op, xop, vaop) (X(op,xop) | (((vaop) & 0x1f) << 16))
2580*4882a593Smuzhiyun 
2581*4882a593Smuzhiyun /* An EX form instruction.  */
2582*4882a593Smuzhiyun #define EX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x7ff))
2583*4882a593Smuzhiyun 
2584*4882a593Smuzhiyun /* The mask for an EX form instruction.  */
2585*4882a593Smuzhiyun #define EX_MASK EX (0x3f, 0x7ff)
2586*4882a593Smuzhiyun 
2587*4882a593Smuzhiyun /* An XX2 form instruction.  */
2588*4882a593Smuzhiyun #define XX2(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 2))
2589*4882a593Smuzhiyun 
2590*4882a593Smuzhiyun /* A XX2 form instruction with the VA bits specified.  */
2591*4882a593Smuzhiyun #define XX2VA(op, xop, vaop) (XX2(op,xop) | (((vaop) & 0x1f) << 16))
2592*4882a593Smuzhiyun 
2593*4882a593Smuzhiyun /* An XX3 form instruction.  */
2594*4882a593Smuzhiyun #define XX3(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0xff) << 3))
2595*4882a593Smuzhiyun 
2596*4882a593Smuzhiyun /* An XX3 form instruction with the RC bit specified.  */
2597*4882a593Smuzhiyun #define XX3RC(op, xop, rc) (OP (op) | (((rc) & 1) << 10) | ((((unsigned long)(xop)) & 0x7f) << 3))
2598*4882a593Smuzhiyun 
2599*4882a593Smuzhiyun /* An XX4 form instruction.  */
2600*4882a593Smuzhiyun #define XX4(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3) << 4))
2601*4882a593Smuzhiyun 
2602*4882a593Smuzhiyun /* A Z form instruction.  */
2603*4882a593Smuzhiyun #define Z(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 1))
2604*4882a593Smuzhiyun 
2605*4882a593Smuzhiyun /* An X form instruction with the RC bit specified.  */
2606*4882a593Smuzhiyun #define XRC(op, xop, rc) (X ((op), (xop)) | ((rc) & 1))
2607*4882a593Smuzhiyun 
2608*4882a593Smuzhiyun /* A X form instruction for Quad-Precision FP Instructions with RC bit.  */
2609*4882a593Smuzhiyun #define XVARC(op, xop, vaop, rc) (XVA ((op), (xop), (vaop)) | ((rc) & 1))
2610*4882a593Smuzhiyun 
2611*4882a593Smuzhiyun /* An X form instruction with the RA bits specified as two ops.  */
2612*4882a593Smuzhiyun #define XMMF(op, xop, mop0, mop1) (X ((op), (xop)) | ((mop0) & 3) << 19 | ((mop1) & 7) << 16)
2613*4882a593Smuzhiyun 
2614*4882a593Smuzhiyun /* A Z form instruction with the RC bit specified.  */
2615*4882a593Smuzhiyun #define ZRC(op, xop, rc) (Z ((op), (xop)) | ((rc) & 1))
2616*4882a593Smuzhiyun 
2617*4882a593Smuzhiyun /* The mask for an X form instruction.  */
2618*4882a593Smuzhiyun #define X_MASK XRC (0x3f, 0x3ff, 1)
2619*4882a593Smuzhiyun 
2620*4882a593Smuzhiyun /* The mask for an X form instruction with the BF bits specified.  */
2621*4882a593Smuzhiyun #define XBF_MASK (X_MASK | (3 << 21))
2622*4882a593Smuzhiyun 
2623*4882a593Smuzhiyun /* An X form wait instruction with everything filled in except the WC field.  */
2624*4882a593Smuzhiyun #define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK)
2625*4882a593Smuzhiyun 
2626*4882a593Smuzhiyun /* The mask for an XX1 form instruction.  */
2627*4882a593Smuzhiyun #define XX1_MASK X (0x3f, 0x3ff)
2628*4882a593Smuzhiyun 
2629*4882a593Smuzhiyun /* An XX1_MASK with the RB field fixed.  */
2630*4882a593Smuzhiyun #define XX1RB_MASK (XX1_MASK | RB_MASK)
2631*4882a593Smuzhiyun 
2632*4882a593Smuzhiyun /* The mask for an XX2 form instruction.  */
2633*4882a593Smuzhiyun #define XX2_MASK (XX2 (0x3f, 0x1ff) | (0x1f << 16))
2634*4882a593Smuzhiyun 
2635*4882a593Smuzhiyun /* The mask for an XX2 form instruction with the UIM bits specified.  */
2636*4882a593Smuzhiyun #define XX2UIM_MASK (XX2 (0x3f, 0x1ff) | (7 << 18))
2637*4882a593Smuzhiyun 
2638*4882a593Smuzhiyun /* The mask for an XX2 form instruction with the 4 UIM bits specified.  */
2639*4882a593Smuzhiyun #define XX2UIM4_MASK (XX2 (0x3f, 0x1ff) | (1 << 20))
2640*4882a593Smuzhiyun 
2641*4882a593Smuzhiyun /* The mask for an XX2 form instruction with the BF bits specified.  */
2642*4882a593Smuzhiyun #define XX2BF_MASK (XX2_MASK | (3 << 21) | (1))
2643*4882a593Smuzhiyun 
2644*4882a593Smuzhiyun /* The mask for an XX2 form instruction with the BF and DCMX bits specified.  */
2645*4882a593Smuzhiyun #define XX2BFD_MASK (XX2 (0x3f, 0x1ff) | 1)
2646*4882a593Smuzhiyun 
2647*4882a593Smuzhiyun /* The mask for an XX2 form instruction with a split DCMX bits specified.  */
2648*4882a593Smuzhiyun #define XX2DCMXS_MASK XX2 (0x3f, 0x1ee)
2649*4882a593Smuzhiyun 
2650*4882a593Smuzhiyun /* The mask for an XX3 form instruction.  */
2651*4882a593Smuzhiyun #define XX3_MASK XX3 (0x3f, 0xff)
2652*4882a593Smuzhiyun 
2653*4882a593Smuzhiyun /* The mask for an XX3 form instruction with the BF bits specified.  */
2654*4882a593Smuzhiyun #define XX3BF_MASK (XX3 (0x3f, 0xff) | (3 << 21) | (1))
2655*4882a593Smuzhiyun 
2656*4882a593Smuzhiyun /* The mask for an XX3 form instruction with the DM or SHW bits specified.  */
2657*4882a593Smuzhiyun #define XX3DM_MASK (XX3 (0x3f, 0x1f) | (1 << 10))
2658*4882a593Smuzhiyun #define XX3SHW_MASK XX3DM_MASK
2659*4882a593Smuzhiyun 
2660*4882a593Smuzhiyun /* The mask for an XX4 form instruction.  */
2661*4882a593Smuzhiyun #define XX4_MASK XX4 (0x3f, 0x3)
2662*4882a593Smuzhiyun 
2663*4882a593Smuzhiyun /* An X form wait instruction with everything filled in except the WC field.  */
2664*4882a593Smuzhiyun #define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK)
2665*4882a593Smuzhiyun 
2666*4882a593Smuzhiyun /* The mask for an XMMF form instruction.  */
2667*4882a593Smuzhiyun #define XMMF_MASK (XMMF (0x3f, 0x3ff, 3, 7) | (1))
2668*4882a593Smuzhiyun 
2669*4882a593Smuzhiyun /* The mask for a Z form instruction.  */
2670*4882a593Smuzhiyun #define Z_MASK ZRC (0x3f, 0x1ff, 1)
2671*4882a593Smuzhiyun #define Z2_MASK ZRC (0x3f, 0xff, 1)
2672*4882a593Smuzhiyun 
2673*4882a593Smuzhiyun /* An X_MASK with the RA/VA field fixed.  */
2674*4882a593Smuzhiyun #define XRA_MASK (X_MASK | RA_MASK)
2675*4882a593Smuzhiyun #define XVA_MASK XRA_MASK
2676*4882a593Smuzhiyun 
2677*4882a593Smuzhiyun /* An XRA_MASK with the A_L/W field clear.  */
2678*4882a593Smuzhiyun #define XWRA_MASK (XRA_MASK & ~((unsigned long) 1 << 16))
2679*4882a593Smuzhiyun #define XRLA_MASK XWRA_MASK
2680*4882a593Smuzhiyun 
2681*4882a593Smuzhiyun /* An X_MASK with the RB field fixed.  */
2682*4882a593Smuzhiyun #define XRB_MASK (X_MASK | RB_MASK)
2683*4882a593Smuzhiyun 
2684*4882a593Smuzhiyun /* An X_MASK with the RT field fixed.  */
2685*4882a593Smuzhiyun #define XRT_MASK (X_MASK | RT_MASK)
2686*4882a593Smuzhiyun 
2687*4882a593Smuzhiyun /* An XRT_MASK mask with the L bits clear.  */
2688*4882a593Smuzhiyun #define XLRT_MASK (XRT_MASK & ~((unsigned long) 0x3 << 21))
2689*4882a593Smuzhiyun 
2690*4882a593Smuzhiyun /* An X_MASK with the RA and RB fields fixed.  */
2691*4882a593Smuzhiyun #define XRARB_MASK (X_MASK | RA_MASK | RB_MASK)
2692*4882a593Smuzhiyun 
2693*4882a593Smuzhiyun /* An XBF_MASK with the RA and RB fields fixed.  */
2694*4882a593Smuzhiyun #define XBFRARB_MASK (XBF_MASK | RA_MASK | RB_MASK)
2695*4882a593Smuzhiyun 
2696*4882a593Smuzhiyun /* An XRARB_MASK, but with the L bit clear.  */
2697*4882a593Smuzhiyun #define XRLARB_MASK (XRARB_MASK & ~((unsigned long) 1 << 16))
2698*4882a593Smuzhiyun 
2699*4882a593Smuzhiyun /* An XRARB_MASK, but with the L bits in a darn instruction clear.  */
2700*4882a593Smuzhiyun #define XLRAND_MASK (XRARB_MASK & ~((unsigned long) 3 << 16))
2701*4882a593Smuzhiyun 
2702*4882a593Smuzhiyun /* An X_MASK with the RT and RA fields fixed.  */
2703*4882a593Smuzhiyun #define XRTRA_MASK (X_MASK | RT_MASK | RA_MASK)
2704*4882a593Smuzhiyun 
2705*4882a593Smuzhiyun /* An X_MASK with the RT and RB fields fixed.  */
2706*4882a593Smuzhiyun #define XRTRB_MASK (X_MASK | RT_MASK | RB_MASK)
2707*4882a593Smuzhiyun 
2708*4882a593Smuzhiyun /* An XRTRA_MASK, but with L bit clear.  */
2709*4882a593Smuzhiyun #define XRTLRA_MASK (XRTRA_MASK & ~((unsigned long) 1 << 21))
2710*4882a593Smuzhiyun 
2711*4882a593Smuzhiyun /* An X_MASK with the RT, RA and RB fields fixed.  */
2712*4882a593Smuzhiyun #define XRTRARB_MASK (X_MASK | RT_MASK | RA_MASK | RB_MASK)
2713*4882a593Smuzhiyun 
2714*4882a593Smuzhiyun /* An XRTRARB_MASK, but with L bit clear.  */
2715*4882a593Smuzhiyun #define XRTLRARB_MASK (XRTRARB_MASK & ~((unsigned long) 1 << 21))
2716*4882a593Smuzhiyun 
2717*4882a593Smuzhiyun /* An XRTRARB_MASK, but with A bit clear.  */
2718*4882a593Smuzhiyun #define XRTARARB_MASK (XRTRARB_MASK & ~((unsigned long) 1 << 25))
2719*4882a593Smuzhiyun 
2720*4882a593Smuzhiyun /* An XRTRARB_MASK, but with BF bits clear.  */
2721*4882a593Smuzhiyun #define XRTBFRARB_MASK (XRTRARB_MASK & ~((unsigned long) 7 << 23))
2722*4882a593Smuzhiyun 
2723*4882a593Smuzhiyun /* An X form instruction with the L bit specified.  */
2724*4882a593Smuzhiyun #define XOPL(op, xop, l) (X ((op), (xop)) | ((((unsigned long)(l)) & 1) << 21))
2725*4882a593Smuzhiyun 
2726*4882a593Smuzhiyun /* An X form instruction with the L bits specified.  */
2727*4882a593Smuzhiyun #define XOPL2(op, xop, l) (X ((op), (xop)) | ((((unsigned long)(l)) & 3) << 21))
2728*4882a593Smuzhiyun 
2729*4882a593Smuzhiyun /* An X form instruction with the L bit and RC bit specified.  */
2730*4882a593Smuzhiyun #define XRCL(op, xop, l, rc) (XRC ((op), (xop), (rc)) | ((((unsigned long)(l)) & 1) << 21))
2731*4882a593Smuzhiyun 
2732*4882a593Smuzhiyun /* An X form instruction with RT fields specified */
2733*4882a593Smuzhiyun #define XRT(op, xop, rt) (X ((op), (xop)) \
2734*4882a593Smuzhiyun         | ((((unsigned long)(rt)) & 0x1f) << 21))
2735*4882a593Smuzhiyun 
2736*4882a593Smuzhiyun /* An X form instruction with RT and RA fields specified */
2737*4882a593Smuzhiyun #define XRTRA(op, xop, rt, ra) (X ((op), (xop)) \
2738*4882a593Smuzhiyun         | ((((unsigned long)(rt)) & 0x1f) << 21) \
2739*4882a593Smuzhiyun         | ((((unsigned long)(ra)) & 0x1f) << 16))
2740*4882a593Smuzhiyun 
2741*4882a593Smuzhiyun /* The mask for an X form comparison instruction.  */
2742*4882a593Smuzhiyun #define XCMP_MASK (X_MASK | (((unsigned long)1) << 22))
2743*4882a593Smuzhiyun 
2744*4882a593Smuzhiyun /* The mask for an X form comparison instruction with the L field
2745*4882a593Smuzhiyun    fixed.  */
2746*4882a593Smuzhiyun #define XCMPL_MASK (XCMP_MASK | (((unsigned long)1) << 21))
2747*4882a593Smuzhiyun 
2748*4882a593Smuzhiyun /* An X form trap instruction with the TO field specified.  */
2749*4882a593Smuzhiyun #define XTO(op, xop, to) (X ((op), (xop)) | ((((unsigned long)(to)) & 0x1f) << 21))
2750*4882a593Smuzhiyun #define XTO_MASK (X_MASK | TO_MASK)
2751*4882a593Smuzhiyun 
2752*4882a593Smuzhiyun /* An X form tlb instruction with the SH field specified.  */
2753*4882a593Smuzhiyun #define XTLB(op, xop, sh) (X ((op), (xop)) | ((((unsigned long)(sh)) & 0x1f) << 11))
2754*4882a593Smuzhiyun #define XTLB_MASK (X_MASK | SH_MASK)
2755*4882a593Smuzhiyun 
2756*4882a593Smuzhiyun /* An X form sync instruction.  */
2757*4882a593Smuzhiyun #define XSYNC(op, xop, l) (X ((op), (xop)) | ((((unsigned long)(l)) & 3) << 21))
2758*4882a593Smuzhiyun 
2759*4882a593Smuzhiyun /* An X form sync instruction with everything filled in except the LS field.  */
2760*4882a593Smuzhiyun #define XSYNC_MASK (0xff9fffff)
2761*4882a593Smuzhiyun 
2762*4882a593Smuzhiyun /* An X form sync instruction with everything filled in except the L and E fields.  */
2763*4882a593Smuzhiyun #define XSYNCLE_MASK (0xff90ffff)
2764*4882a593Smuzhiyun 
2765*4882a593Smuzhiyun /* An X_MASK, but with the EH bit clear.  */
2766*4882a593Smuzhiyun #define XEH_MASK (X_MASK & ~((unsigned long )1))
2767*4882a593Smuzhiyun 
2768*4882a593Smuzhiyun /* An X form AltiVec dss instruction.  */
2769*4882a593Smuzhiyun #define XDSS(op, xop, a) (X ((op), (xop)) | ((((unsigned long)(a)) & 1) << 25))
2770*4882a593Smuzhiyun #define XDSS_MASK XDSS(0x3f, 0x3ff, 1)
2771*4882a593Smuzhiyun 
2772*4882a593Smuzhiyun /* An XFL form instruction.  */
2773*4882a593Smuzhiyun #define XFL(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1) | (((unsigned long)(rc)) & 1))
2774*4882a593Smuzhiyun #define XFL_MASK XFL (0x3f, 0x3ff, 1)
2775*4882a593Smuzhiyun 
2776*4882a593Smuzhiyun /* An X form isel instruction.  */
2777*4882a593Smuzhiyun #define XISEL(op, xop)	(OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1))
2778*4882a593Smuzhiyun #define XISEL_MASK	XISEL(0x3f, 0x1f)
2779*4882a593Smuzhiyun 
2780*4882a593Smuzhiyun /* An XL form instruction with the LK field set to 0.  */
2781*4882a593Smuzhiyun #define XL(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1))
2782*4882a593Smuzhiyun 
2783*4882a593Smuzhiyun /* An XL form instruction which uses the LK field.  */
2784*4882a593Smuzhiyun #define XLLK(op, xop, lk) (XL ((op), (xop)) | ((lk) & 1))
2785*4882a593Smuzhiyun 
2786*4882a593Smuzhiyun /* The mask for an XL form instruction.  */
2787*4882a593Smuzhiyun #define XL_MASK XLLK (0x3f, 0x3ff, 1)
2788*4882a593Smuzhiyun 
2789*4882a593Smuzhiyun /* An XL_MASK with the RT, RA and RB fields fixed, but S bit clear.  */
2790*4882a593Smuzhiyun #define XLS_MASK ((XL_MASK | RT_MASK | RA_MASK | RB_MASK) & ~(1 << 11))
2791*4882a593Smuzhiyun 
2792*4882a593Smuzhiyun /* An XL form instruction which explicitly sets the BO field.  */
2793*4882a593Smuzhiyun #define XLO(op, bo, xop, lk) \
2794*4882a593Smuzhiyun   (XLLK ((op), (xop), (lk)) | ((((unsigned long)(bo)) & 0x1f) << 21))
2795*4882a593Smuzhiyun #define XLO_MASK (XL_MASK | BO_MASK)
2796*4882a593Smuzhiyun 
2797*4882a593Smuzhiyun /* An XL form instruction which explicitly sets the y bit of the BO
2798*4882a593Smuzhiyun    field.  */
2799*4882a593Smuzhiyun #define XLYLK(op, xop, y, lk) (XLLK ((op), (xop), (lk)) | ((((unsigned long)(y)) & 1) << 21))
2800*4882a593Smuzhiyun #define XLYLK_MASK (XL_MASK | Y_MASK)
2801*4882a593Smuzhiyun 
2802*4882a593Smuzhiyun /* An XL form instruction which sets the BO field and the condition
2803*4882a593Smuzhiyun    bits of the BI field.  */
2804*4882a593Smuzhiyun #define XLOCB(op, bo, cb, xop, lk) \
2805*4882a593Smuzhiyun   (XLO ((op), (bo), (xop), (lk)) | ((((unsigned long)(cb)) & 3) << 16))
2806*4882a593Smuzhiyun #define XLOCB_MASK XLOCB (0x3f, 0x1f, 0x3, 0x3ff, 1)
2807*4882a593Smuzhiyun 
2808*4882a593Smuzhiyun /* An XL_MASK or XLYLK_MASK or XLOCB_MASK with the BB field fixed.  */
2809*4882a593Smuzhiyun #define XLBB_MASK (XL_MASK | BB_MASK)
2810*4882a593Smuzhiyun #define XLYBB_MASK (XLYLK_MASK | BB_MASK)
2811*4882a593Smuzhiyun #define XLBOCBBB_MASK (XLOCB_MASK | BB_MASK)
2812*4882a593Smuzhiyun 
2813*4882a593Smuzhiyun /* A mask for branch instructions using the BH field.  */
2814*4882a593Smuzhiyun #define XLBH_MASK (XL_MASK | (0x1c << 11))
2815*4882a593Smuzhiyun 
2816*4882a593Smuzhiyun /* An XL_MASK with the BO and BB fields fixed.  */
2817*4882a593Smuzhiyun #define XLBOBB_MASK (XL_MASK | BO_MASK | BB_MASK)
2818*4882a593Smuzhiyun 
2819*4882a593Smuzhiyun /* An XL_MASK with the BO, BI and BB fields fixed.  */
2820*4882a593Smuzhiyun #define XLBOBIBB_MASK (XL_MASK | BO_MASK | BI_MASK | BB_MASK)
2821*4882a593Smuzhiyun 
2822*4882a593Smuzhiyun /* An X form mbar instruction with MO field.  */
2823*4882a593Smuzhiyun #define XMBAR(op, xop, mo) (X ((op), (xop)) | ((((unsigned long)(mo)) & 1) << 21))
2824*4882a593Smuzhiyun 
2825*4882a593Smuzhiyun /* An XO form instruction.  */
2826*4882a593Smuzhiyun #define XO(op, xop, oe, rc) \
2827*4882a593Smuzhiyun   (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 1) | ((((unsigned long)(oe)) & 1) << 10) | (((unsigned long)(rc)) & 1))
2828*4882a593Smuzhiyun #define XO_MASK XO (0x3f, 0x1ff, 1, 1)
2829*4882a593Smuzhiyun 
2830*4882a593Smuzhiyun /* An XO_MASK with the RB field fixed.  */
2831*4882a593Smuzhiyun #define XORB_MASK (XO_MASK | RB_MASK)
2832*4882a593Smuzhiyun 
2833*4882a593Smuzhiyun /* An XOPS form instruction for paired singles.  */
2834*4882a593Smuzhiyun #define XOPS(op, xop, rc) \
2835*4882a593Smuzhiyun   (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1) | (((unsigned long)(rc)) & 1))
2836*4882a593Smuzhiyun #define XOPS_MASK XOPS (0x3f, 0x3ff, 1)
2837*4882a593Smuzhiyun 
2838*4882a593Smuzhiyun 
2839*4882a593Smuzhiyun /* An XS form instruction.  */
2840*4882a593Smuzhiyun #define XS(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 2) | (((unsigned long)(rc)) & 1))
2841*4882a593Smuzhiyun #define XS_MASK XS (0x3f, 0x1ff, 1)
2842*4882a593Smuzhiyun 
2843*4882a593Smuzhiyun /* A mask for the FXM version of an XFX form instruction.  */
2844*4882a593Smuzhiyun #define XFXFXM_MASK (X_MASK | (1 << 11) | (1 << 20))
2845*4882a593Smuzhiyun 
2846*4882a593Smuzhiyun /* An XFX form instruction with the FXM field filled in.  */
2847*4882a593Smuzhiyun #define XFXM(op, xop, fxm, p4) \
2848*4882a593Smuzhiyun   (X ((op), (xop)) | ((((unsigned long)(fxm)) & 0xff) << 12) \
2849*4882a593Smuzhiyun    | ((unsigned long)(p4) << 20))
2850*4882a593Smuzhiyun 
2851*4882a593Smuzhiyun /* An XFX form instruction with the SPR field filled in.  */
2852*4882a593Smuzhiyun #define XSPR(op, xop, spr) \
2853*4882a593Smuzhiyun   (X ((op), (xop)) | ((((unsigned long)(spr)) & 0x1f) << 16) | ((((unsigned long)(spr)) & 0x3e0) << 6))
2854*4882a593Smuzhiyun #define XSPR_MASK (X_MASK | SPR_MASK)
2855*4882a593Smuzhiyun 
2856*4882a593Smuzhiyun /* An XFX form instruction with the SPR field filled in except for the
2857*4882a593Smuzhiyun    SPRBAT field.  */
2858*4882a593Smuzhiyun #define XSPRBAT_MASK (XSPR_MASK &~ SPRBAT_MASK)
2859*4882a593Smuzhiyun 
2860*4882a593Smuzhiyun /* An XFX form instruction with the SPR field filled in except for the
2861*4882a593Smuzhiyun    SPRG field.  */
2862*4882a593Smuzhiyun #define XSPRG_MASK (XSPR_MASK & ~(0x1f << 16))
2863*4882a593Smuzhiyun 
2864*4882a593Smuzhiyun /* An X form instruction with everything filled in except the E field.  */
2865*4882a593Smuzhiyun #define XE_MASK (0xffff7fff)
2866*4882a593Smuzhiyun 
2867*4882a593Smuzhiyun /* An X form user context instruction.  */
2868*4882a593Smuzhiyun #define XUC(op, xop)  (OP (op) | (((unsigned long)(xop)) & 0x1f))
2869*4882a593Smuzhiyun #define XUC_MASK      XUC(0x3f, 0x1f)
2870*4882a593Smuzhiyun 
2871*4882a593Smuzhiyun /* An XW form instruction.  */
2872*4882a593Smuzhiyun #define XW(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x3f) << 1) | ((rc) & 1))
2873*4882a593Smuzhiyun /* The mask for a G form instruction. rc not supported at present.  */
2874*4882a593Smuzhiyun #define XW_MASK XW (0x3f, 0x3f, 0)
2875*4882a593Smuzhiyun 
2876*4882a593Smuzhiyun /* An APU form instruction.  */
2877*4882a593Smuzhiyun #define APU(op, xop, rc) (OP (op) | (((unsigned long)(xop)) & 0x3ff) << 1 | ((rc) & 1))
2878*4882a593Smuzhiyun 
2879*4882a593Smuzhiyun /* The mask for an APU form instruction.  */
2880*4882a593Smuzhiyun #define APU_MASK APU (0x3f, 0x3ff, 1)
2881*4882a593Smuzhiyun #define APU_RT_MASK (APU_MASK | RT_MASK)
2882*4882a593Smuzhiyun #define APU_RA_MASK (APU_MASK | RA_MASK)
2883*4882a593Smuzhiyun 
2884*4882a593Smuzhiyun /* The BO encodings used in extended conditional branch mnemonics.  */
2885*4882a593Smuzhiyun #define BODNZF	(0x0)
2886*4882a593Smuzhiyun #define BODNZFP	(0x1)
2887*4882a593Smuzhiyun #define BODZF	(0x2)
2888*4882a593Smuzhiyun #define BODZFP	(0x3)
2889*4882a593Smuzhiyun #define BODNZT	(0x8)
2890*4882a593Smuzhiyun #define BODNZTP	(0x9)
2891*4882a593Smuzhiyun #define BODZT	(0xa)
2892*4882a593Smuzhiyun #define BODZTP	(0xb)
2893*4882a593Smuzhiyun 
2894*4882a593Smuzhiyun #define BOF	(0x4)
2895*4882a593Smuzhiyun #define BOFP	(0x5)
2896*4882a593Smuzhiyun #define BOFM4	(0x6)
2897*4882a593Smuzhiyun #define BOFP4	(0x7)
2898*4882a593Smuzhiyun #define BOT	(0xc)
2899*4882a593Smuzhiyun #define BOTP	(0xd)
2900*4882a593Smuzhiyun #define BOTM4	(0xe)
2901*4882a593Smuzhiyun #define BOTP4	(0xf)
2902*4882a593Smuzhiyun 
2903*4882a593Smuzhiyun #define BODNZ	(0x10)
2904*4882a593Smuzhiyun #define BODNZP	(0x11)
2905*4882a593Smuzhiyun #define BODZ	(0x12)
2906*4882a593Smuzhiyun #define BODZP	(0x13)
2907*4882a593Smuzhiyun #define BODNZM4 (0x18)
2908*4882a593Smuzhiyun #define BODNZP4 (0x19)
2909*4882a593Smuzhiyun #define BODZM4	(0x1a)
2910*4882a593Smuzhiyun #define BODZP4	(0x1b)
2911*4882a593Smuzhiyun 
2912*4882a593Smuzhiyun #define BOU	(0x14)
2913*4882a593Smuzhiyun 
2914*4882a593Smuzhiyun /* The BO16 encodings used in extended VLE conditional branch mnemonics.  */
2915*4882a593Smuzhiyun #define BO16F   (0x0)
2916*4882a593Smuzhiyun #define BO16T   (0x1)
2917*4882a593Smuzhiyun 
2918*4882a593Smuzhiyun /* The BO32 encodings used in extended VLE conditional branch mnemonics.  */
2919*4882a593Smuzhiyun #define BO32F   (0x0)
2920*4882a593Smuzhiyun #define BO32T   (0x1)
2921*4882a593Smuzhiyun #define BO32DNZ (0x2)
2922*4882a593Smuzhiyun #define BO32DZ  (0x3)
2923*4882a593Smuzhiyun 
2924*4882a593Smuzhiyun /* The BI condition bit encodings used in extended conditional branch
2925*4882a593Smuzhiyun    mnemonics.  */
2926*4882a593Smuzhiyun #define CBLT	(0)
2927*4882a593Smuzhiyun #define CBGT	(1)
2928*4882a593Smuzhiyun #define CBEQ	(2)
2929*4882a593Smuzhiyun #define CBSO	(3)
2930*4882a593Smuzhiyun 
2931*4882a593Smuzhiyun /* The TO encodings used in extended trap mnemonics.  */
2932*4882a593Smuzhiyun #define TOLGT	(0x1)
2933*4882a593Smuzhiyun #define TOLLT	(0x2)
2934*4882a593Smuzhiyun #define TOEQ	(0x4)
2935*4882a593Smuzhiyun #define TOLGE	(0x5)
2936*4882a593Smuzhiyun #define TOLNL	(0x5)
2937*4882a593Smuzhiyun #define TOLLE	(0x6)
2938*4882a593Smuzhiyun #define TOLNG	(0x6)
2939*4882a593Smuzhiyun #define TOGT	(0x8)
2940*4882a593Smuzhiyun #define TOGE	(0xc)
2941*4882a593Smuzhiyun #define TONL	(0xc)
2942*4882a593Smuzhiyun #define TOLT	(0x10)
2943*4882a593Smuzhiyun #define TOLE	(0x14)
2944*4882a593Smuzhiyun #define TONG	(0x14)
2945*4882a593Smuzhiyun #define TONE	(0x18)
2946*4882a593Smuzhiyun #define TOU	(0x1f)
2947*4882a593Smuzhiyun 
2948*4882a593Smuzhiyun /* Smaller names for the flags so each entry in the opcodes table will
2949*4882a593Smuzhiyun    fit on a single line.  */
2950*4882a593Smuzhiyun #undef	PPC
2951*4882a593Smuzhiyun #define PPC	PPC_OPCODE_PPC
2952*4882a593Smuzhiyun #define PPCCOM	PPC_OPCODE_PPC | PPC_OPCODE_COMMON
2953*4882a593Smuzhiyun #define POWER4	PPC_OPCODE_POWER4
2954*4882a593Smuzhiyun #define POWER5	PPC_OPCODE_POWER5
2955*4882a593Smuzhiyun #define POWER6	PPC_OPCODE_POWER6
2956*4882a593Smuzhiyun #define POWER7	PPC_OPCODE_POWER7
2957*4882a593Smuzhiyun #define POWER8	PPC_OPCODE_POWER8
2958*4882a593Smuzhiyun #define POWER9	PPC_OPCODE_POWER9
2959*4882a593Smuzhiyun #define CELL	PPC_OPCODE_CELL
2960*4882a593Smuzhiyun #define PPC64	PPC_OPCODE_64 | PPC_OPCODE_64_BRIDGE
2961*4882a593Smuzhiyun #define NON32	(PPC_OPCODE_64 | PPC_OPCODE_POWER4	\
2962*4882a593Smuzhiyun 		 | PPC_OPCODE_EFS | PPC_OPCODE_E500MC | PPC_OPCODE_TITAN)
2963*4882a593Smuzhiyun #define PPC403	PPC_OPCODE_403
2964*4882a593Smuzhiyun #define PPC405	PPC_OPCODE_405
2965*4882a593Smuzhiyun #define PPC440	PPC_OPCODE_440
2966*4882a593Smuzhiyun #define PPC464	PPC440
2967*4882a593Smuzhiyun #define PPC476	PPC_OPCODE_476
2968*4882a593Smuzhiyun #define PPC750	PPC_OPCODE_750
2969*4882a593Smuzhiyun #define PPC7450 PPC_OPCODE_7450
2970*4882a593Smuzhiyun #define PPC860	PPC_OPCODE_860
2971*4882a593Smuzhiyun #define PPCPS	PPC_OPCODE_PPCPS
2972*4882a593Smuzhiyun #define PPCVEC	PPC_OPCODE_ALTIVEC
2973*4882a593Smuzhiyun #define PPCVEC2	PPC_OPCODE_ALTIVEC2
2974*4882a593Smuzhiyun #define PPCVEC3	PPC_OPCODE_ALTIVEC2
2975*4882a593Smuzhiyun #define PPCVSX	PPC_OPCODE_VSX
2976*4882a593Smuzhiyun #define PPCVSX2	PPC_OPCODE_VSX
2977*4882a593Smuzhiyun #define PPCVSX3	PPC_OPCODE_VSX3
2978*4882a593Smuzhiyun #define POWER	PPC_OPCODE_POWER
2979*4882a593Smuzhiyun #define POWER2	PPC_OPCODE_POWER | PPC_OPCODE_POWER2
2980*4882a593Smuzhiyun #define PWR2COM PPC_OPCODE_POWER | PPC_OPCODE_POWER2 | PPC_OPCODE_COMMON
2981*4882a593Smuzhiyun #define PPCPWR2 PPC_OPCODE_PPC | PPC_OPCODE_POWER | PPC_OPCODE_POWER2 | PPC_OPCODE_COMMON
2982*4882a593Smuzhiyun #define COM	PPC_OPCODE_POWER | PPC_OPCODE_PPC | PPC_OPCODE_COMMON
2983*4882a593Smuzhiyun #define M601	PPC_OPCODE_POWER | PPC_OPCODE_601
2984*4882a593Smuzhiyun #define PWRCOM	PPC_OPCODE_POWER | PPC_OPCODE_601 | PPC_OPCODE_COMMON
2985*4882a593Smuzhiyun #define MFDEC1	PPC_OPCODE_POWER
2986*4882a593Smuzhiyun #define MFDEC2	PPC_OPCODE_PPC | PPC_OPCODE_601 | PPC_OPCODE_BOOKE | PPC_OPCODE_TITAN
2987*4882a593Smuzhiyun #define BOOKE	PPC_OPCODE_BOOKE
2988*4882a593Smuzhiyun #define NO371	PPC_OPCODE_BOOKE | PPC_OPCODE_PPCPS | PPC_OPCODE_EFS
2989*4882a593Smuzhiyun #define PPCE300 PPC_OPCODE_E300
2990*4882a593Smuzhiyun #define PPCSPE	PPC_OPCODE_SPE
2991*4882a593Smuzhiyun #define PPCISEL PPC_OPCODE_ISEL
2992*4882a593Smuzhiyun #define PPCEFS	PPC_OPCODE_EFS
2993*4882a593Smuzhiyun #define PPCBRLK PPC_OPCODE_BRLOCK
2994*4882a593Smuzhiyun #define PPCPMR	PPC_OPCODE_PMR
2995*4882a593Smuzhiyun #define PPCTMR  PPC_OPCODE_TMR
2996*4882a593Smuzhiyun #define PPCCHLK PPC_OPCODE_CACHELCK
2997*4882a593Smuzhiyun #define PPCRFMCI	PPC_OPCODE_RFMCI
2998*4882a593Smuzhiyun #define E500MC  PPC_OPCODE_E500MC
2999*4882a593Smuzhiyun #define PPCA2	PPC_OPCODE_A2
3000*4882a593Smuzhiyun #define TITAN   PPC_OPCODE_TITAN
3001*4882a593Smuzhiyun #define MULHW   PPC_OPCODE_405 | PPC_OPCODE_440 | TITAN
3002*4882a593Smuzhiyun #define E500	PPC_OPCODE_E500
3003*4882a593Smuzhiyun #define E6500	PPC_OPCODE_E6500
3004*4882a593Smuzhiyun #define PPCVLE  PPC_OPCODE_VLE
3005*4882a593Smuzhiyun #define PPCHTM  PPC_OPCODE_HTM
3006*4882a593Smuzhiyun #define E200Z4  PPC_OPCODE_E200Z4
3007*4882a593Smuzhiyun /* The list of embedded processors that use the embedded operand ordering
3008*4882a593Smuzhiyun    for the 3 operand dcbt and dcbtst instructions.  */
3009*4882a593Smuzhiyun #define DCBT_EO	(PPC_OPCODE_E500 | PPC_OPCODE_E500MC | PPC_OPCODE_476 \
3010*4882a593Smuzhiyun 		 | PPC_OPCODE_A2)
3011*4882a593Smuzhiyun 
3012*4882a593Smuzhiyun 
3013*4882a593Smuzhiyun 
3014*4882a593Smuzhiyun /* The opcode table.
3015*4882a593Smuzhiyun 
3016*4882a593Smuzhiyun    The format of the opcode table is:
3017*4882a593Smuzhiyun 
3018*4882a593Smuzhiyun    NAME		OPCODE		MASK	     FLAGS	ANTI		{OPERANDS}
3019*4882a593Smuzhiyun 
3020*4882a593Smuzhiyun    NAME is the name of the instruction.
3021*4882a593Smuzhiyun    OPCODE is the instruction opcode.
3022*4882a593Smuzhiyun    MASK is the opcode mask; this is used to tell the disassembler
3023*4882a593Smuzhiyun      which bits in the actual opcode must match OPCODE.
3024*4882a593Smuzhiyun    FLAGS are flags indicating which processors support the instruction.
3025*4882a593Smuzhiyun    ANTI indicates which processors don't support the instruction.
3026*4882a593Smuzhiyun    OPERANDS is the list of operands.
3027*4882a593Smuzhiyun 
3028*4882a593Smuzhiyun    The disassembler reads the table in order and prints the first
3029*4882a593Smuzhiyun    instruction which matches, so this table is sorted to put more
3030*4882a593Smuzhiyun    specific instructions before more general instructions.
3031*4882a593Smuzhiyun 
3032*4882a593Smuzhiyun    This table must be sorted by major opcode.  Please try to keep it
3033*4882a593Smuzhiyun    vaguely sorted within major opcode too, except of course where
3034*4882a593Smuzhiyun    constrained otherwise by disassembler operation.  */
3035*4882a593Smuzhiyun 
3036*4882a593Smuzhiyun const struct powerpc_opcode powerpc_opcodes[] = {
3037*4882a593Smuzhiyun {"attn",	X(0,256),	X_MASK,	  POWER4|PPCA2,	PPC476|PPCVLE,	{0}},
3038*4882a593Smuzhiyun {"tdlgti",	OPTO(2,TOLGT),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
3039*4882a593Smuzhiyun {"tdllti",	OPTO(2,TOLLT),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
3040*4882a593Smuzhiyun {"tdeqi",	OPTO(2,TOEQ),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
3041*4882a593Smuzhiyun {"tdlgei",	OPTO(2,TOLGE),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
3042*4882a593Smuzhiyun {"tdlnli",	OPTO(2,TOLNL),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
3043*4882a593Smuzhiyun {"tdllei",	OPTO(2,TOLLE),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
3044*4882a593Smuzhiyun {"tdlngi",	OPTO(2,TOLNG),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
3045*4882a593Smuzhiyun {"tdgti",	OPTO(2,TOGT),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
3046*4882a593Smuzhiyun {"tdgei",	OPTO(2,TOGE),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
3047*4882a593Smuzhiyun {"tdnli",	OPTO(2,TONL),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
3048*4882a593Smuzhiyun {"tdlti",	OPTO(2,TOLT),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
3049*4882a593Smuzhiyun {"tdlei",	OPTO(2,TOLE),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
3050*4882a593Smuzhiyun {"tdngi",	OPTO(2,TONG),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
3051*4882a593Smuzhiyun {"tdnei",	OPTO(2,TONE),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
3052*4882a593Smuzhiyun {"tdui",	OPTO(2,TOU),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
3053*4882a593Smuzhiyun {"tdi",		OP(2),		OP_MASK,     PPC64,	PPCVLE,		{TO, RA, SI}},
3054*4882a593Smuzhiyun 
3055*4882a593Smuzhiyun {"twlgti",	OPTO(3,TOLGT),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
3056*4882a593Smuzhiyun {"tlgti",	OPTO(3,TOLGT),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
3057*4882a593Smuzhiyun {"twllti",	OPTO(3,TOLLT),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
3058*4882a593Smuzhiyun {"tllti",	OPTO(3,TOLLT),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
3059*4882a593Smuzhiyun {"tweqi",	OPTO(3,TOEQ),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
3060*4882a593Smuzhiyun {"teqi",	OPTO(3,TOEQ),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
3061*4882a593Smuzhiyun {"twlgei",	OPTO(3,TOLGE),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
3062*4882a593Smuzhiyun {"tlgei",	OPTO(3,TOLGE),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
3063*4882a593Smuzhiyun {"twlnli",	OPTO(3,TOLNL),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
3064*4882a593Smuzhiyun {"tlnli",	OPTO(3,TOLNL),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
3065*4882a593Smuzhiyun {"twllei",	OPTO(3,TOLLE),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
3066*4882a593Smuzhiyun {"tllei",	OPTO(3,TOLLE),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
3067*4882a593Smuzhiyun {"twlngi",	OPTO(3,TOLNG),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
3068*4882a593Smuzhiyun {"tlngi",	OPTO(3,TOLNG),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
3069*4882a593Smuzhiyun {"twgti",	OPTO(3,TOGT),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
3070*4882a593Smuzhiyun {"tgti",	OPTO(3,TOGT),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
3071*4882a593Smuzhiyun {"twgei",	OPTO(3,TOGE),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
3072*4882a593Smuzhiyun {"tgei",	OPTO(3,TOGE),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
3073*4882a593Smuzhiyun {"twnli",	OPTO(3,TONL),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
3074*4882a593Smuzhiyun {"tnli",	OPTO(3,TONL),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
3075*4882a593Smuzhiyun {"twlti",	OPTO(3,TOLT),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
3076*4882a593Smuzhiyun {"tlti",	OPTO(3,TOLT),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
3077*4882a593Smuzhiyun {"twlei",	OPTO(3,TOLE),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
3078*4882a593Smuzhiyun {"tlei",	OPTO(3,TOLE),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
3079*4882a593Smuzhiyun {"twngi",	OPTO(3,TONG),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
3080*4882a593Smuzhiyun {"tngi",	OPTO(3,TONG),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
3081*4882a593Smuzhiyun {"twnei",	OPTO(3,TONE),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
3082*4882a593Smuzhiyun {"tnei",	OPTO(3,TONE),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
3083*4882a593Smuzhiyun {"twui",	OPTO(3,TOU),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
3084*4882a593Smuzhiyun {"tui",		OPTO(3,TOU),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
3085*4882a593Smuzhiyun {"twi",		OP(3),		OP_MASK,     PPCCOM,	PPCVLE,		{TO, RA, SI}},
3086*4882a593Smuzhiyun {"ti",		OP(3),		OP_MASK,     PWRCOM,	PPCVLE,		{TO, RA, SI}},
3087*4882a593Smuzhiyun 
3088*4882a593Smuzhiyun {"ps_cmpu0",	X  (4,	 0),	XBF_MASK,    PPCPS,	0,		{BF, FRA, FRB}},
3089*4882a593Smuzhiyun {"vaddubm",	VX (4,	 0),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3090*4882a593Smuzhiyun {"vmul10cuq",	VX (4,	 1),	VXVB_MASK,   PPCVEC3,	0,		{VD, VA}},
3091*4882a593Smuzhiyun {"vmaxub",	VX (4,	 2),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3092*4882a593Smuzhiyun {"vrlb",	VX (4,	 4),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3093*4882a593Smuzhiyun {"vcmpequb",	VXR(4,	 6,0),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
3094*4882a593Smuzhiyun {"vcmpneb",	VXR(4,	 7,0),	VXR_MASK,    PPCVEC3,	0,		{VD, VA, VB}},
3095*4882a593Smuzhiyun {"vmuloub",	VX (4,	 8),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3096*4882a593Smuzhiyun {"vaddfp",	VX (4,	10),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3097*4882a593Smuzhiyun {"psq_lx",	XW (4,	 6,0),	XW_MASK,     PPCPS,	0,		{FRT,RA,RB,PSWM,PSQM}},
3098*4882a593Smuzhiyun {"vmrghb",	VX (4,	12),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3099*4882a593Smuzhiyun {"psq_stx",	XW (4,	 7,0),	XW_MASK,     PPCPS,	0,		{FRS,RA,RB,PSWM,PSQM}},
3100*4882a593Smuzhiyun {"vpkuhum",	VX (4,	14),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3101*4882a593Smuzhiyun {"mulhhwu",	XRC(4,	 8,0),	X_MASK,	     MULHW,	0,		{RT, RA, RB}},
3102*4882a593Smuzhiyun {"mulhhwu.",	XRC(4,	 8,1),	X_MASK,	     MULHW,	0,		{RT, RA, RB}},
3103*4882a593Smuzhiyun {"ps_sum0",	A  (4,	10,0),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
3104*4882a593Smuzhiyun {"ps_sum0.",	A  (4,	10,1),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
3105*4882a593Smuzhiyun {"ps_sum1",	A  (4,	11,0),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
3106*4882a593Smuzhiyun {"ps_sum1.",	A  (4,	11,1),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
3107*4882a593Smuzhiyun {"ps_muls0",	A  (4,	12,0),	AFRB_MASK,   PPCPS,	0,		{FRT, FRA, FRC}},
3108*4882a593Smuzhiyun {"machhwu",	XO (4,	12,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3109*4882a593Smuzhiyun {"ps_muls0.",	A  (4,	12,1),	AFRB_MASK,   PPCPS,	0,		{FRT, FRA, FRC}},
3110*4882a593Smuzhiyun {"machhwu.",	XO (4,	12,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3111*4882a593Smuzhiyun {"ps_muls1",	A  (4,	13,0),	AFRB_MASK,   PPCPS,	0,		{FRT, FRA, FRC}},
3112*4882a593Smuzhiyun {"ps_muls1.",	A  (4,	13,1),	AFRB_MASK,   PPCPS,	0,		{FRT, FRA, FRC}},
3113*4882a593Smuzhiyun {"ps_madds0",	A  (4,	14,0),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
3114*4882a593Smuzhiyun {"ps_madds0.",	A  (4,	14,1),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
3115*4882a593Smuzhiyun {"ps_madds1",	A  (4,	15,0),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
3116*4882a593Smuzhiyun {"ps_madds1.",	A  (4,	15,1),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
3117*4882a593Smuzhiyun {"vmhaddshs",	VXA(4,	32),	VXA_MASK,    PPCVEC,	0,		{VD, VA, VB, VC}},
3118*4882a593Smuzhiyun {"vmhraddshs",	VXA(4,	33),	VXA_MASK,    PPCVEC,	0,		{VD, VA, VB, VC}},
3119*4882a593Smuzhiyun {"vmladduhm",	VXA(4,	34),	VXA_MASK,    PPCVEC,	0,		{VD, VA, VB, VC}},
3120*4882a593Smuzhiyun {"vmsumudm",	VXA(4,	35),	VXA_MASK,    PPCVEC3,	0,		{VD, VA, VB, VC}},
3121*4882a593Smuzhiyun {"ps_div",	A  (4,	18,0),	AFRC_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
3122*4882a593Smuzhiyun {"vmsumubm",	VXA(4,	36),	VXA_MASK,    PPCVEC,	0,		{VD, VA, VB, VC}},
3123*4882a593Smuzhiyun {"ps_div.",	A  (4,	18,1),	AFRC_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
3124*4882a593Smuzhiyun {"vmsummbm",	VXA(4,	37),	VXA_MASK,    PPCVEC,	0,		{VD, VA, VB, VC}},
3125*4882a593Smuzhiyun {"vmsumuhm",	VXA(4,	38),	VXA_MASK,    PPCVEC,	0,		{VD, VA, VB, VC}},
3126*4882a593Smuzhiyun {"vmsumuhs",	VXA(4,	39),	VXA_MASK,    PPCVEC,	0,		{VD, VA, VB, VC}},
3127*4882a593Smuzhiyun {"ps_sub",	A  (4,	20,0),	AFRC_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
3128*4882a593Smuzhiyun {"vmsumshm",	VXA(4,	40),	VXA_MASK,    PPCVEC,	0,		{VD, VA, VB, VC}},
3129*4882a593Smuzhiyun {"ps_sub.",	A  (4,	20,1),	AFRC_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
3130*4882a593Smuzhiyun {"vmsumshs",	VXA(4,	41),	VXA_MASK,    PPCVEC,	0,		{VD, VA, VB, VC}},
3131*4882a593Smuzhiyun {"ps_add",	A  (4,	21,0),	AFRC_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
3132*4882a593Smuzhiyun {"vsel",	VXA(4,	42),	VXA_MASK,    PPCVEC,	0,		{VD, VA, VB, VC}},
3133*4882a593Smuzhiyun {"ps_add.",	A  (4,	21,1),	AFRC_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
3134*4882a593Smuzhiyun {"vperm",	VXA(4,	43),	VXA_MASK,    PPCVEC,	0,		{VD, VA, VB, VC}},
3135*4882a593Smuzhiyun {"vsldoi",	VXA(4,	44),	VXASHB_MASK, PPCVEC,	0,		{VD, VA, VB, SHB}},
3136*4882a593Smuzhiyun {"vpermxor",	VXA(4,	45),	VXA_MASK,    PPCVEC2,	0,		{VD, VA, VB, VC}},
3137*4882a593Smuzhiyun {"ps_sel",	A  (4,	23,0),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
3138*4882a593Smuzhiyun {"vmaddfp",	VXA(4,	46),	VXA_MASK,    PPCVEC,	0,		{VD, VA, VC, VB}},
3139*4882a593Smuzhiyun {"ps_sel.",	A  (4,	23,1),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
3140*4882a593Smuzhiyun {"vnmsubfp",	VXA(4,	47),	VXA_MASK,    PPCVEC,	0,		{VD, VA, VC, VB}},
3141*4882a593Smuzhiyun {"ps_res",	A  (4,	24,0), AFRAFRC_MASK, PPCPS,	0,		{FRT, FRB}},
3142*4882a593Smuzhiyun {"maddhd",	VXA(4,	48),	VXA_MASK,    POWER9,	0,		{RT, RA, RB, RC}},
3143*4882a593Smuzhiyun {"ps_res.",	A  (4,	24,1), AFRAFRC_MASK, PPCPS,	0,		{FRT, FRB}},
3144*4882a593Smuzhiyun {"maddhdu",	VXA(4,	49),	VXA_MASK,    POWER9,	0,		{RT, RA, RB, RC}},
3145*4882a593Smuzhiyun {"ps_mul",	A  (4,	25,0),	AFRB_MASK,   PPCPS,	0,		{FRT, FRA, FRC}},
3146*4882a593Smuzhiyun {"ps_mul.",	A  (4,	25,1),	AFRB_MASK,   PPCPS,	0,		{FRT, FRA, FRC}},
3147*4882a593Smuzhiyun {"maddld",	VXA(4,	51),	VXA_MASK,    POWER9,	0,		{RT, RA, RB, RC}},
3148*4882a593Smuzhiyun {"ps_rsqrte",	A  (4,	26,0), AFRAFRC_MASK, PPCPS,	0,		{FRT, FRB}},
3149*4882a593Smuzhiyun {"ps_rsqrte.",	A  (4,	26,1), AFRAFRC_MASK, PPCPS,	0,		{FRT, FRB}},
3150*4882a593Smuzhiyun {"ps_msub",	A  (4,	28,0),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
3151*4882a593Smuzhiyun {"ps_msub.",	A  (4,	28,1),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
3152*4882a593Smuzhiyun {"ps_madd",	A  (4,	29,0),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
3153*4882a593Smuzhiyun {"ps_madd.",	A  (4,	29,1),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
3154*4882a593Smuzhiyun {"vpermr",	VXA(4,	59),	VXA_MASK,    PPCVEC3,	0,		{VD, VA, VB, VC}},
3155*4882a593Smuzhiyun {"ps_nmsub",	A  (4,	30,0),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
3156*4882a593Smuzhiyun {"vaddeuqm",	VXA(4,	60),	VXA_MASK,    PPCVEC2,	0,		{VD, VA, VB, VC}},
3157*4882a593Smuzhiyun {"ps_nmsub.",	A  (4,	30,1),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
3158*4882a593Smuzhiyun {"vaddecuq",	VXA(4,	61),	VXA_MASK,    PPCVEC2,	0,		{VD, VA, VB, VC}},
3159*4882a593Smuzhiyun {"ps_nmadd",	A  (4,	31,0),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
3160*4882a593Smuzhiyun {"vsubeuqm",	VXA(4,	62),	VXA_MASK,    PPCVEC2,	0,		{VD, VA, VB, VC}},
3161*4882a593Smuzhiyun {"ps_nmadd.",	A  (4,	31,1),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
3162*4882a593Smuzhiyun {"vsubecuq",	VXA(4,	63),	VXA_MASK,    PPCVEC2,	0,		{VD, VA, VB, VC}},
3163*4882a593Smuzhiyun {"ps_cmpo0",	X  (4,	32),	XBF_MASK,    PPCPS,	0,		{BF, FRA, FRB}},
3164*4882a593Smuzhiyun {"vadduhm",	VX (4,	64),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3165*4882a593Smuzhiyun {"vmul10ecuq",	VX (4,	65),	VX_MASK,     PPCVEC3,	0,		{VD, VA, VB}},
3166*4882a593Smuzhiyun {"vmaxuh",	VX (4,	66),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3167*4882a593Smuzhiyun {"vrlh",	VX (4,	68),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3168*4882a593Smuzhiyun {"vcmpequh",	VXR(4,	70,0),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
3169*4882a593Smuzhiyun {"vcmpneh",	VXR(4,	71,0),	VXR_MASK,    PPCVEC3,	0,		{VD, VA, VB}},
3170*4882a593Smuzhiyun {"vmulouh",	VX (4,	72),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3171*4882a593Smuzhiyun {"vsubfp",	VX (4,	74),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3172*4882a593Smuzhiyun {"psq_lux",	XW (4,	38,0),	XW_MASK,     PPCPS,	0,		{FRT,RA,RB,PSWM,PSQM}},
3173*4882a593Smuzhiyun {"vmrghh",	VX (4,	76),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3174*4882a593Smuzhiyun {"psq_stux",	XW (4,	39,0),	XW_MASK,     PPCPS,	0,		{FRS,RA,RB,PSWM,PSQM}},
3175*4882a593Smuzhiyun {"vpkuwum",	VX (4,	78),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3176*4882a593Smuzhiyun {"ps_neg",	XRC(4,	40,0),	XRA_MASK,    PPCPS,	0,		{FRT, FRB}},
3177*4882a593Smuzhiyun {"mulhhw",	XRC(4,	40,0),	X_MASK,	     MULHW,	0,		{RT, RA, RB}},
3178*4882a593Smuzhiyun {"ps_neg.",	XRC(4,	40,1),	XRA_MASK,    PPCPS,	0,		{FRT, FRB}},
3179*4882a593Smuzhiyun {"mulhhw.",	XRC(4,	40,1),	X_MASK,	     MULHW,	0,		{RT, RA, RB}},
3180*4882a593Smuzhiyun {"machhw",	XO (4,	44,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3181*4882a593Smuzhiyun {"machhw.",	XO (4,	44,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3182*4882a593Smuzhiyun {"nmachhw",	XO (4,	46,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3183*4882a593Smuzhiyun {"nmachhw.",	XO (4,	46,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3184*4882a593Smuzhiyun {"ps_cmpu1",	X  (4,	64),	XBF_MASK,    PPCPS,	0,		{BF, FRA, FRB}},
3185*4882a593Smuzhiyun {"vadduwm",	VX (4,	128),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3186*4882a593Smuzhiyun {"vmaxuw",	VX (4,	130),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3187*4882a593Smuzhiyun {"vrlw",	VX (4,	132),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3188*4882a593Smuzhiyun {"vrlwmi",	VX (4,	133),	VX_MASK,     PPCVEC3,	0,		{VD, VA, VB}},
3189*4882a593Smuzhiyun {"vcmpequw",	VXR(4,	134,0), VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
3190*4882a593Smuzhiyun {"vcmpnew",	VXR(4,	135,0),	VXR_MASK,    PPCVEC3,	0,		{VD, VA, VB}},
3191*4882a593Smuzhiyun {"vmulouw",	VX (4,	136),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3192*4882a593Smuzhiyun {"vmuluwm",	VX (4,	137),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3193*4882a593Smuzhiyun {"vmrghw",	VX (4,	140),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3194*4882a593Smuzhiyun {"vpkuhus",	VX (4,	142),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3195*4882a593Smuzhiyun {"ps_mr",	XRC(4,	72,0),	XRA_MASK,    PPCPS,	0,		{FRT, FRB}},
3196*4882a593Smuzhiyun {"ps_mr.",	XRC(4,	72,1),	XRA_MASK,    PPCPS,	0,		{FRT, FRB}},
3197*4882a593Smuzhiyun {"machhwsu",	XO (4,	76,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3198*4882a593Smuzhiyun {"machhwsu.",	XO (4,	76,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3199*4882a593Smuzhiyun {"ps_cmpo1",	X  (4,	96),	XBF_MASK,    PPCPS,	0,		{BF, FRA, FRB}},
3200*4882a593Smuzhiyun {"vaddudm",	VX (4, 192),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3201*4882a593Smuzhiyun {"vmaxud",	VX (4, 194),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3202*4882a593Smuzhiyun {"vrld",	VX (4, 196),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3203*4882a593Smuzhiyun {"vrldmi",	VX (4, 197),	VX_MASK,     PPCVEC3,	0,		{VD, VA, VB}},
3204*4882a593Smuzhiyun {"vcmpeqfp",	VXR(4, 198,0),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
3205*4882a593Smuzhiyun {"vcmpequd",	VXR(4, 199,0),	VXR_MASK,    PPCVEC2,	0,		{VD, VA, VB}},
3206*4882a593Smuzhiyun {"vpkuwus",	VX (4, 206),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3207*4882a593Smuzhiyun {"machhws",	XO (4, 108,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3208*4882a593Smuzhiyun {"machhws.",	XO (4, 108,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3209*4882a593Smuzhiyun {"nmachhws",	XO (4, 110,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3210*4882a593Smuzhiyun {"nmachhws.",	XO (4, 110,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3211*4882a593Smuzhiyun {"vadduqm",	VX (4, 256),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3212*4882a593Smuzhiyun {"vmaxsb",	VX (4, 258),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3213*4882a593Smuzhiyun {"vslb",	VX (4, 260),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3214*4882a593Smuzhiyun {"vcmpnezb",	VXR(4, 263,0),	VXR_MASK,    PPCVEC3,	0,		{VD, VA, VB}},
3215*4882a593Smuzhiyun {"vmulosb",	VX (4, 264),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3216*4882a593Smuzhiyun {"vrefp",	VX (4, 266),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
3217*4882a593Smuzhiyun {"vmrglb",	VX (4, 268),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3218*4882a593Smuzhiyun {"vpkshus",	VX (4, 270),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3219*4882a593Smuzhiyun {"ps_nabs",	XRC(4, 136,0),	XRA_MASK,    PPCPS,	0,		{FRT, FRB}},
3220*4882a593Smuzhiyun {"mulchwu",	XRC(4, 136,0),	X_MASK,	     MULHW,	0,		{RT, RA, RB}},
3221*4882a593Smuzhiyun {"ps_nabs.",	XRC(4, 136,1),	XRA_MASK,    PPCPS,	0,		{FRT, FRB}},
3222*4882a593Smuzhiyun {"mulchwu.",	XRC(4, 136,1),	X_MASK,	     MULHW,	0,		{RT, RA, RB}},
3223*4882a593Smuzhiyun {"macchwu",	XO (4, 140,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3224*4882a593Smuzhiyun {"macchwu.",	XO (4, 140,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3225*4882a593Smuzhiyun {"vaddcuq",	VX (4, 320),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3226*4882a593Smuzhiyun {"vmaxsh",	VX (4, 322),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3227*4882a593Smuzhiyun {"vslh",	VX (4, 324),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3228*4882a593Smuzhiyun {"vcmpnezh",	VXR(4, 327,0),	VXR_MASK,    PPCVEC3,	0,		{VD, VA, VB}},
3229*4882a593Smuzhiyun {"vmulosh",	VX (4, 328),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3230*4882a593Smuzhiyun {"vrsqrtefp",	VX (4, 330),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
3231*4882a593Smuzhiyun {"vmrglh",	VX (4, 332),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3232*4882a593Smuzhiyun {"vpkswus",	VX (4, 334),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3233*4882a593Smuzhiyun {"mulchw",	XRC(4, 168,0),	X_MASK,	     MULHW,	0,		{RT, RA, RB}},
3234*4882a593Smuzhiyun {"mulchw.",	XRC(4, 168,1),	X_MASK,	     MULHW,	0,		{RT, RA, RB}},
3235*4882a593Smuzhiyun {"macchw",	XO (4, 172,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3236*4882a593Smuzhiyun {"macchw.",	XO (4, 172,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3237*4882a593Smuzhiyun {"nmacchw",	XO (4, 174,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3238*4882a593Smuzhiyun {"nmacchw.",	XO (4, 174,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3239*4882a593Smuzhiyun {"vaddcuw",	VX (4, 384),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3240*4882a593Smuzhiyun {"vmaxsw",	VX (4, 386),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3241*4882a593Smuzhiyun {"vslw",	VX (4, 388),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3242*4882a593Smuzhiyun {"vrlwnm",	VX (4, 389),	VX_MASK,     PPCVEC3,	0,		{VD, VA, VB}},
3243*4882a593Smuzhiyun {"vcmpnezw",	VXR(4, 391,0),	VXR_MASK,    PPCVEC3,	0,		{VD, VA, VB}},
3244*4882a593Smuzhiyun {"vmulosw",	VX (4, 392),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3245*4882a593Smuzhiyun {"vexptefp",	VX (4, 394),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
3246*4882a593Smuzhiyun {"vmrglw",	VX (4, 396),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3247*4882a593Smuzhiyun {"vpkshss",	VX (4, 398),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3248*4882a593Smuzhiyun {"macchwsu",	XO (4, 204,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3249*4882a593Smuzhiyun {"macchwsu.",	XO (4, 204,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3250*4882a593Smuzhiyun {"vmaxsd",	VX (4, 450),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3251*4882a593Smuzhiyun {"vsl",		VX (4, 452),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3252*4882a593Smuzhiyun {"vrldnm",	VX (4, 453),	VX_MASK,     PPCVEC3,	0,		{VD, VA, VB}},
3253*4882a593Smuzhiyun {"vcmpgefp",	VXR(4, 454,0),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
3254*4882a593Smuzhiyun {"vlogefp",	VX (4, 458),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
3255*4882a593Smuzhiyun {"vpkswss",	VX (4, 462),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3256*4882a593Smuzhiyun {"macchws",	XO (4, 236,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3257*4882a593Smuzhiyun {"macchws.",	XO (4, 236,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3258*4882a593Smuzhiyun {"nmacchws",	XO (4, 238,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3259*4882a593Smuzhiyun {"nmacchws.",	XO (4, 238,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3260*4882a593Smuzhiyun {"evaddw",	VX (4, 512),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3261*4882a593Smuzhiyun {"vaddubs",	VX (4, 512),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3262*4882a593Smuzhiyun {"vmul10uq",	VX (4, 513),	VXVB_MASK,   PPCVEC3,	0,		{VD, VA}},
3263*4882a593Smuzhiyun {"evaddiw",	VX (4, 514),	VX_MASK,     PPCSPE,	0,		{RS, RB, UIMM}},
3264*4882a593Smuzhiyun {"vminub",	VX (4, 514),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3265*4882a593Smuzhiyun {"evsubfw",	VX (4, 516),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3266*4882a593Smuzhiyun {"evsubw",	VX (4, 516),	VX_MASK,     PPCSPE,	0,		{RS, RB, RA}},
3267*4882a593Smuzhiyun {"vsrb",	VX (4, 516),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3268*4882a593Smuzhiyun {"evsubifw",	VX (4, 518),	VX_MASK,     PPCSPE,	0,		{RS, UIMM, RB}},
3269*4882a593Smuzhiyun {"evsubiw",	VX (4, 518),	VX_MASK,     PPCSPE,	0,		{RS, RB, UIMM}},
3270*4882a593Smuzhiyun {"vcmpgtub",	VXR(4, 518,0),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
3271*4882a593Smuzhiyun {"evabs",	VX (4, 520),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
3272*4882a593Smuzhiyun {"vmuleub",	VX (4, 520),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3273*4882a593Smuzhiyun {"evneg",	VX (4, 521),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
3274*4882a593Smuzhiyun {"evextsb",	VX (4, 522),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
3275*4882a593Smuzhiyun {"vrfin",	VX (4, 522),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
3276*4882a593Smuzhiyun {"evextsh",	VX (4, 523),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
3277*4882a593Smuzhiyun {"evrndw",	VX (4, 524),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
3278*4882a593Smuzhiyun {"vspltb",	VX (4, 524),   VXUIMM4_MASK, PPCVEC,	0,		{VD, VB, UIMM4}},
3279*4882a593Smuzhiyun {"vextractub",	VX (4, 525),   VXUIMM4_MASK, PPCVEC3,	0,		{VD, VB, UIMM4}},
3280*4882a593Smuzhiyun {"evcntlzw",	VX (4, 525),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
3281*4882a593Smuzhiyun {"evcntlsw",	VX (4, 526),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
3282*4882a593Smuzhiyun {"vupkhsb",	VX (4, 526),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
3283*4882a593Smuzhiyun {"brinc",	VX (4, 527),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3284*4882a593Smuzhiyun {"ps_abs",	XRC(4, 264,0),	XRA_MASK,    PPCPS,	0,		{FRT, FRB}},
3285*4882a593Smuzhiyun {"ps_abs.",	XRC(4, 264,1),	XRA_MASK,    PPCPS,	0,		{FRT, FRB}},
3286*4882a593Smuzhiyun {"evand",	VX (4, 529),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3287*4882a593Smuzhiyun {"evandc",	VX (4, 530),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3288*4882a593Smuzhiyun {"evxor",	VX (4, 534),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3289*4882a593Smuzhiyun {"evmr",	VX (4, 535),	VX_MASK,     PPCSPE,	0,		{RS, RA, BBA}},
3290*4882a593Smuzhiyun {"evor",	VX (4, 535),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3291*4882a593Smuzhiyun {"evnor",	VX (4, 536),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3292*4882a593Smuzhiyun {"evnot",	VX (4, 536),	VX_MASK,     PPCSPE,	0,		{RS, RA, BBA}},
3293*4882a593Smuzhiyun {"get",		APU(4, 268,0),	APU_RA_MASK, PPC405,	0,		{RT, FSL}},
3294*4882a593Smuzhiyun {"eveqv",	VX (4, 537),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3295*4882a593Smuzhiyun {"evorc",	VX (4, 539),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3296*4882a593Smuzhiyun {"evnand",	VX (4, 542),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3297*4882a593Smuzhiyun {"evsrwu",	VX (4, 544),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3298*4882a593Smuzhiyun {"evsrws",	VX (4, 545),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3299*4882a593Smuzhiyun {"evsrwiu",	VX (4, 546),	VX_MASK,     PPCSPE,	0,		{RS, RA, EVUIMM}},
3300*4882a593Smuzhiyun {"evsrwis",	VX (4, 547),	VX_MASK,     PPCSPE,	0,		{RS, RA, EVUIMM}},
3301*4882a593Smuzhiyun {"evslw",	VX (4, 548),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3302*4882a593Smuzhiyun {"evslwi",	VX (4, 550),	VX_MASK,     PPCSPE,	0,		{RS, RA, EVUIMM}},
3303*4882a593Smuzhiyun {"evrlw",	VX (4, 552),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3304*4882a593Smuzhiyun {"evsplati",	VX (4, 553),	VX_MASK,     PPCSPE,	0,		{RS, SIMM}},
3305*4882a593Smuzhiyun {"evrlwi",	VX (4, 554),	VX_MASK,     PPCSPE,	0,		{RS, RA, EVUIMM}},
3306*4882a593Smuzhiyun {"evsplatfi",	VX (4, 555),	VX_MASK,     PPCSPE,	0,		{RS, SIMM}},
3307*4882a593Smuzhiyun {"evmergehi",	VX (4, 556),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3308*4882a593Smuzhiyun {"evmergelo",	VX (4, 557),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3309*4882a593Smuzhiyun {"evmergehilo",	VX (4, 558),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3310*4882a593Smuzhiyun {"evmergelohi",	VX (4, 559),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3311*4882a593Smuzhiyun {"evcmpgtu",	VX (4, 560),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
3312*4882a593Smuzhiyun {"evcmpgts",	VX (4, 561),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
3313*4882a593Smuzhiyun {"evcmpltu",	VX (4, 562),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
3314*4882a593Smuzhiyun {"evcmplts",	VX (4, 563),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
3315*4882a593Smuzhiyun {"evcmpeq",	VX (4, 564),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
3316*4882a593Smuzhiyun {"cget",	APU(4, 284,0),	APU_RA_MASK, PPC405,	0,		{RT, FSL}},
3317*4882a593Smuzhiyun {"vadduhs",	VX (4, 576),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3318*4882a593Smuzhiyun {"vmul10euq",	VX (4, 577),	VX_MASK,     PPCVEC3,	0,		{VD, VA, VB}},
3319*4882a593Smuzhiyun {"vminuh",	VX (4, 578),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3320*4882a593Smuzhiyun {"vsrh",	VX (4, 580),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3321*4882a593Smuzhiyun {"vcmpgtuh",	VXR(4, 582,0),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
3322*4882a593Smuzhiyun {"vmuleuh",	VX (4, 584),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3323*4882a593Smuzhiyun {"vrfiz",	VX (4, 586),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
3324*4882a593Smuzhiyun {"vsplth",	VX (4, 588),   VXUIMM3_MASK, PPCVEC,	0,		{VD, VB, UIMM3}},
3325*4882a593Smuzhiyun {"vextractuh",	VX (4, 589),   VXUIMM4_MASK, PPCVEC3,	0,		{VD, VB, UIMM4}},
3326*4882a593Smuzhiyun {"vupkhsh",	VX (4, 590),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
3327*4882a593Smuzhiyun {"nget",	APU(4, 300,0),	APU_RA_MASK, PPC405,	0,		{RT, FSL}},
3328*4882a593Smuzhiyun {"evsel",	EVSEL(4,79),	EVSEL_MASK,  PPCSPE,	0,		{RS, RA, RB, CRFS}},
3329*4882a593Smuzhiyun {"ncget",	APU(4, 316,0),	APU_RA_MASK, PPC405,	0,		{RT, FSL}},
3330*4882a593Smuzhiyun {"evfsadd",	VX (4, 640),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3331*4882a593Smuzhiyun {"vadduws",	VX (4, 640),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3332*4882a593Smuzhiyun {"evfssub",	VX (4, 641),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3333*4882a593Smuzhiyun {"vminuw",	VX (4, 642),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3334*4882a593Smuzhiyun {"evfsabs",	VX (4, 644),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
3335*4882a593Smuzhiyun {"vsrw",	VX (4, 644),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3336*4882a593Smuzhiyun {"evfsnabs",	VX (4, 645),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
3337*4882a593Smuzhiyun {"evfsneg",	VX (4, 646),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
3338*4882a593Smuzhiyun {"vcmpgtuw",	VXR(4, 646,0),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
3339*4882a593Smuzhiyun {"vmuleuw",	VX (4, 648),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3340*4882a593Smuzhiyun {"evfsmul",	VX (4, 648),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3341*4882a593Smuzhiyun {"evfsdiv",	VX (4, 649),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3342*4882a593Smuzhiyun {"vrfip",	VX (4, 650),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
3343*4882a593Smuzhiyun {"evfscmpgt",	VX (4, 652),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
3344*4882a593Smuzhiyun {"vspltw",	VX (4, 652),   VXUIMM2_MASK, PPCVEC,	0,		{VD, VB, UIMM2}},
3345*4882a593Smuzhiyun {"vextractuw",	VX (4, 653),   VXUIMM4_MASK, PPCVEC3,	0,		{VD, VB, UIMM4}},
3346*4882a593Smuzhiyun {"evfscmplt",	VX (4, 653),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
3347*4882a593Smuzhiyun {"evfscmpeq",	VX (4, 654),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
3348*4882a593Smuzhiyun {"vupklsb",	VX (4, 654),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
3349*4882a593Smuzhiyun {"evfscfui",	VX (4, 656),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
3350*4882a593Smuzhiyun {"evfscfsi",	VX (4, 657),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
3351*4882a593Smuzhiyun {"evfscfuf",	VX (4, 658),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
3352*4882a593Smuzhiyun {"evfscfsf",	VX (4, 659),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
3353*4882a593Smuzhiyun {"evfsctui",	VX (4, 660),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
3354*4882a593Smuzhiyun {"evfsctsi",	VX (4, 661),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
3355*4882a593Smuzhiyun {"evfsctuf",	VX (4, 662),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
3356*4882a593Smuzhiyun {"evfsctsf",	VX (4, 663),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
3357*4882a593Smuzhiyun {"evfsctuiz",	VX (4, 664),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
3358*4882a593Smuzhiyun {"put",		APU(4, 332,0),	APU_RT_MASK, PPC405,	0,		{RA, FSL}},
3359*4882a593Smuzhiyun {"evfsctsiz",	VX (4, 666),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
3360*4882a593Smuzhiyun {"evfststgt",	VX (4, 668),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
3361*4882a593Smuzhiyun {"evfststlt",	VX (4, 669),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
3362*4882a593Smuzhiyun {"evfststeq",	VX (4, 670),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
3363*4882a593Smuzhiyun {"cput",	APU(4, 348,0),	APU_RT_MASK, PPC405,	0,		{RA, FSL}},
3364*4882a593Smuzhiyun {"efsadd",	VX (4, 704),	VX_MASK,     PPCEFS,	0,		{RS, RA, RB}},
3365*4882a593Smuzhiyun {"efssub",	VX (4, 705),	VX_MASK,     PPCEFS,	0,		{RS, RA, RB}},
3366*4882a593Smuzhiyun {"vminud",	VX (4, 706),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3367*4882a593Smuzhiyun {"efsabs",	VX (4, 708),	VX_MASK,     PPCEFS,	0,		{RS, RA}},
3368*4882a593Smuzhiyun {"vsr",		VX (4, 708),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3369*4882a593Smuzhiyun {"efsnabs",	VX (4, 709),	VX_MASK,     PPCEFS,	0,		{RS, RA}},
3370*4882a593Smuzhiyun {"efsneg",	VX (4, 710),	VX_MASK,     PPCEFS,	0,		{RS, RA}},
3371*4882a593Smuzhiyun {"vcmpgtfp",	VXR(4, 710,0),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
3372*4882a593Smuzhiyun {"vcmpgtud",	VXR(4, 711,0),	VXR_MASK,    PPCVEC2,	0,		{VD, VA, VB}},
3373*4882a593Smuzhiyun {"efsmul",	VX (4, 712),	VX_MASK,     PPCEFS,	0,		{RS, RA, RB}},
3374*4882a593Smuzhiyun {"efsdiv",	VX (4, 713),	VX_MASK,     PPCEFS,	0,		{RS, RA, RB}},
3375*4882a593Smuzhiyun {"vrfim",	VX (4, 714),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
3376*4882a593Smuzhiyun {"efscmpgt",	VX (4, 716),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
3377*4882a593Smuzhiyun {"vextractd",	VX (4, 717),   VXUIMM4_MASK, PPCVEC3,	0,		{VD, VB, UIMM4}},
3378*4882a593Smuzhiyun {"efscmplt",	VX (4, 717),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
3379*4882a593Smuzhiyun {"efscmpeq",	VX (4, 718),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
3380*4882a593Smuzhiyun {"vupklsh",	VX (4, 718),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
3381*4882a593Smuzhiyun {"efscfd",	VX (4, 719),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
3382*4882a593Smuzhiyun {"efscfui",	VX (4, 720),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
3383*4882a593Smuzhiyun {"efscfsi",	VX (4, 721),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
3384*4882a593Smuzhiyun {"efscfuf",	VX (4, 722),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
3385*4882a593Smuzhiyun {"efscfsf",	VX (4, 723),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
3386*4882a593Smuzhiyun {"efsctui",	VX (4, 724),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
3387*4882a593Smuzhiyun {"efsctsi",	VX (4, 725),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
3388*4882a593Smuzhiyun {"efsctuf",	VX (4, 726),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
3389*4882a593Smuzhiyun {"efsctsf",	VX (4, 727),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
3390*4882a593Smuzhiyun {"efsctuiz",	VX (4, 728),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
3391*4882a593Smuzhiyun {"nput",	APU(4, 364,0),	APU_RT_MASK, PPC405,	0,		{RA, FSL}},
3392*4882a593Smuzhiyun {"efsctsiz",	VX (4, 730),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
3393*4882a593Smuzhiyun {"efststgt",	VX (4, 732),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
3394*4882a593Smuzhiyun {"efststlt",	VX (4, 733),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
3395*4882a593Smuzhiyun {"efststeq",	VX (4, 734),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
3396*4882a593Smuzhiyun {"efdadd",	VX (4, 736),	VX_MASK,     PPCEFS,	0,		{RS, RA, RB}},
3397*4882a593Smuzhiyun {"efdsub",	VX (4, 737),	VX_MASK,     PPCEFS,	0,		{RS, RA, RB}},
3398*4882a593Smuzhiyun {"efdcfuid",	VX (4, 738),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
3399*4882a593Smuzhiyun {"efdcfsid",	VX (4, 739),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
3400*4882a593Smuzhiyun {"efdabs",	VX (4, 740),	VX_MASK,     PPCEFS,	0,		{RS, RA}},
3401*4882a593Smuzhiyun {"efdnabs",	VX (4, 741),	VX_MASK,     PPCEFS,	0,		{RS, RA}},
3402*4882a593Smuzhiyun {"efdneg",	VX (4, 742),	VX_MASK,     PPCEFS,	0,		{RS, RA}},
3403*4882a593Smuzhiyun {"efdmul",	VX (4, 744),	VX_MASK,     PPCEFS,	0,		{RS, RA, RB}},
3404*4882a593Smuzhiyun {"efddiv",	VX (4, 745),	VX_MASK,     PPCEFS,	0,		{RS, RA, RB}},
3405*4882a593Smuzhiyun {"efdctuidz",	VX (4, 746),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
3406*4882a593Smuzhiyun {"efdctsidz",	VX (4, 747),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
3407*4882a593Smuzhiyun {"efdcmpgt",	VX (4, 748),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
3408*4882a593Smuzhiyun {"efdcmplt",	VX (4, 749),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
3409*4882a593Smuzhiyun {"efdcmpeq",	VX (4, 750),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
3410*4882a593Smuzhiyun {"efdcfs",	VX (4, 751),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
3411*4882a593Smuzhiyun {"efdcfui",	VX (4, 752),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
3412*4882a593Smuzhiyun {"efdcfsi",	VX (4, 753),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
3413*4882a593Smuzhiyun {"efdcfuf",	VX (4, 754),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
3414*4882a593Smuzhiyun {"efdcfsf",	VX (4, 755),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
3415*4882a593Smuzhiyun {"efdctui",	VX (4, 756),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
3416*4882a593Smuzhiyun {"efdctsi",	VX (4, 757),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
3417*4882a593Smuzhiyun {"efdctuf",	VX (4, 758),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
3418*4882a593Smuzhiyun {"efdctsf",	VX (4, 759),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
3419*4882a593Smuzhiyun {"efdctuiz",	VX (4, 760),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
3420*4882a593Smuzhiyun {"ncput",	APU(4, 380,0),	APU_RT_MASK, PPC405,	0,		{RA, FSL}},
3421*4882a593Smuzhiyun {"efdctsiz",	VX (4, 762),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
3422*4882a593Smuzhiyun {"efdtstgt",	VX (4, 764),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
3423*4882a593Smuzhiyun {"efdtstlt",	VX (4, 765),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
3424*4882a593Smuzhiyun {"efdtsteq",	VX (4, 766),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
3425*4882a593Smuzhiyun {"evlddx",	VX (4, 768),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3426*4882a593Smuzhiyun {"vaddsbs",	VX (4, 768),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3427*4882a593Smuzhiyun {"evldd",	VX (4, 769),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_8, RA}},
3428*4882a593Smuzhiyun {"evldwx",	VX (4, 770),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3429*4882a593Smuzhiyun {"vminsb",	VX (4, 770),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3430*4882a593Smuzhiyun {"evldw",	VX (4, 771),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_8, RA}},
3431*4882a593Smuzhiyun {"evldhx",	VX (4, 772),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3432*4882a593Smuzhiyun {"vsrab",	VX (4, 772),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3433*4882a593Smuzhiyun {"evldh",	VX (4, 773),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_8, RA}},
3434*4882a593Smuzhiyun {"vcmpgtsb",	VXR(4, 774,0),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
3435*4882a593Smuzhiyun {"evlhhesplatx",VX (4, 776),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3436*4882a593Smuzhiyun {"vmulesb",	VX (4, 776),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3437*4882a593Smuzhiyun {"evlhhesplat",	VX (4, 777),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_2, RA}},
3438*4882a593Smuzhiyun {"vcfux",	VX (4, 778),	VX_MASK,     PPCVEC,	0,		{VD, VB, UIMM}},
3439*4882a593Smuzhiyun {"vcuxwfp",	VX (4, 778),	VX_MASK,     PPCVEC,	0,		{VD, VB, UIMM}},
3440*4882a593Smuzhiyun {"evlhhousplatx",VX(4, 780),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3441*4882a593Smuzhiyun {"vspltisb",	VX (4, 780),	VXVB_MASK,   PPCVEC,	0,		{VD, SIMM}},
3442*4882a593Smuzhiyun {"vinsertb",	VX (4, 781),   VXUIMM4_MASK, PPCVEC3,	0,		{VD, VB, UIMM4}},
3443*4882a593Smuzhiyun {"evlhhousplat",VX (4, 781),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_2, RA}},
3444*4882a593Smuzhiyun {"evlhhossplatx",VX(4, 782),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3445*4882a593Smuzhiyun {"vpkpx",	VX (4, 782),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3446*4882a593Smuzhiyun {"evlhhossplat",VX (4, 783),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_2, RA}},
3447*4882a593Smuzhiyun {"mullhwu",	XRC(4, 392,0),	X_MASK,	     MULHW,	0,		{RT, RA, RB}},
3448*4882a593Smuzhiyun {"evlwhex",	VX (4, 784),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3449*4882a593Smuzhiyun {"mullhwu.",	XRC(4, 392,1),	X_MASK,	     MULHW,	0,		{RT, RA, RB}},
3450*4882a593Smuzhiyun {"evlwhe",	VX (4, 785),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_4, RA}},
3451*4882a593Smuzhiyun {"evlwhoux",	VX (4, 788),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3452*4882a593Smuzhiyun {"evlwhou",	VX (4, 789),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_4, RA}},
3453*4882a593Smuzhiyun {"evlwhosx",	VX (4, 790),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3454*4882a593Smuzhiyun {"evlwhos",	VX (4, 791),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_4, RA}},
3455*4882a593Smuzhiyun {"maclhwu",	XO (4, 396,0,0),XO_MASK,     MULHW,	0,		{RT, RA, RB}},
3456*4882a593Smuzhiyun {"evlwwsplatx",	VX (4, 792),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3457*4882a593Smuzhiyun {"maclhwu.",	XO (4, 396,0,1),XO_MASK,     MULHW,	0,		{RT, RA, RB}},
3458*4882a593Smuzhiyun {"evlwwsplat",	VX (4, 793),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_4, RA}},
3459*4882a593Smuzhiyun {"evlwhsplatx",	VX (4, 796),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3460*4882a593Smuzhiyun {"evlwhsplat",	VX (4, 797),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_4, RA}},
3461*4882a593Smuzhiyun {"evstddx",	VX (4, 800),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3462*4882a593Smuzhiyun {"evstdd",	VX (4, 801),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_8, RA}},
3463*4882a593Smuzhiyun {"evstdwx",	VX (4, 802),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3464*4882a593Smuzhiyun {"evstdw",	VX (4, 803),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_8, RA}},
3465*4882a593Smuzhiyun {"evstdhx",	VX (4, 804),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3466*4882a593Smuzhiyun {"evstdh",	VX (4, 805),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_8, RA}},
3467*4882a593Smuzhiyun {"evstwhex",	VX (4, 816),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3468*4882a593Smuzhiyun {"evstwhe",	VX (4, 817),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_4, RA}},
3469*4882a593Smuzhiyun {"evstwhox",	VX (4, 820),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3470*4882a593Smuzhiyun {"evstwho",	VX (4, 821),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_4, RA}},
3471*4882a593Smuzhiyun {"evstwwex",	VX (4, 824),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3472*4882a593Smuzhiyun {"evstwwe",	VX (4, 825),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_4, RA}},
3473*4882a593Smuzhiyun {"evstwwox",	VX (4, 828),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3474*4882a593Smuzhiyun {"evstwwo",	VX (4, 829),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_4, RA}},
3475*4882a593Smuzhiyun {"vaddshs",	VX (4, 832),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3476*4882a593Smuzhiyun {"bcdcpsgn.",	VX (4, 833),	VX_MASK,     PPCVEC3,	0,		{VD, VA, VB}},
3477*4882a593Smuzhiyun {"vminsh",	VX (4, 834),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3478*4882a593Smuzhiyun {"vsrah",	VX (4, 836),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3479*4882a593Smuzhiyun {"vcmpgtsh",	VXR(4, 838,0),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
3480*4882a593Smuzhiyun {"vmulesh",	VX (4, 840),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3481*4882a593Smuzhiyun {"vcfsx",	VX (4, 842),	VX_MASK,     PPCVEC,	0,		{VD, VB, UIMM}},
3482*4882a593Smuzhiyun {"vcsxwfp",	VX (4, 842),	VX_MASK,     PPCVEC,	0,		{VD, VB, UIMM}},
3483*4882a593Smuzhiyun {"vspltish",	VX (4, 844),	VXVB_MASK,   PPCVEC,	0,		{VD, SIMM}},
3484*4882a593Smuzhiyun {"vinserth",	VX (4, 845),   VXUIMM4_MASK, PPCVEC3,	0,		{VD, VB, UIMM4}},
3485*4882a593Smuzhiyun {"vupkhpx",	VX (4, 846),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
3486*4882a593Smuzhiyun {"mullhw",	XRC(4, 424,0),	X_MASK,	     MULHW,	0,		{RT, RA, RB}},
3487*4882a593Smuzhiyun {"mullhw.",	XRC(4, 424,1),	X_MASK,	     MULHW,	0,		{RT, RA, RB}},
3488*4882a593Smuzhiyun {"maclhw",	XO (4, 428,0,0),XO_MASK,     MULHW,	0,		{RT, RA, RB}},
3489*4882a593Smuzhiyun {"maclhw.",	XO (4, 428,0,1),XO_MASK,     MULHW,	0,		{RT, RA, RB}},
3490*4882a593Smuzhiyun {"nmaclhw",	XO (4, 430,0,0),XO_MASK,     MULHW,	0,		{RT, RA, RB}},
3491*4882a593Smuzhiyun {"nmaclhw.",	XO (4, 430,0,1),XO_MASK,     MULHW,	0,		{RT, RA, RB}},
3492*4882a593Smuzhiyun {"vaddsws",	VX (4, 896),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3493*4882a593Smuzhiyun {"vminsw",	VX (4, 898),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3494*4882a593Smuzhiyun {"vsraw",	VX (4, 900),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3495*4882a593Smuzhiyun {"vcmpgtsw",	VXR(4, 902,0),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
3496*4882a593Smuzhiyun {"vmulesw",	VX (4, 904),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3497*4882a593Smuzhiyun {"vctuxs",	VX (4, 906),	VX_MASK,     PPCVEC,	0,		{VD, VB, UIMM}},
3498*4882a593Smuzhiyun {"vcfpuxws",	VX (4, 906),	VX_MASK,     PPCVEC,	0,		{VD, VB, UIMM}},
3499*4882a593Smuzhiyun {"vspltisw",	VX (4, 908),	VXVB_MASK,   PPCVEC,	0,		{VD, SIMM}},
3500*4882a593Smuzhiyun {"vinsertw",	VX (4, 909),   VXUIMM4_MASK, PPCVEC3,	0,		{VD, VB, UIMM4}},
3501*4882a593Smuzhiyun {"maclhwsu",	XO (4, 460,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3502*4882a593Smuzhiyun {"maclhwsu.",	XO (4, 460,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3503*4882a593Smuzhiyun {"vminsd",	VX (4, 962),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3504*4882a593Smuzhiyun {"vsrad",	VX (4, 964),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3505*4882a593Smuzhiyun {"vcmpbfp",	VXR(4, 966,0),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
3506*4882a593Smuzhiyun {"vcmpgtsd",	VXR(4, 967,0),	VXR_MASK,    PPCVEC2,	0,		{VD, VA, VB}},
3507*4882a593Smuzhiyun {"vctsxs",	VX (4, 970),	VX_MASK,     PPCVEC,	0,		{VD, VB, UIMM}},
3508*4882a593Smuzhiyun {"vcfpsxws",	VX (4, 970),	VX_MASK,     PPCVEC,	0,		{VD, VB, UIMM}},
3509*4882a593Smuzhiyun {"vinsertd",	VX (4, 973),   VXUIMM4_MASK, PPCVEC3,	0,		{VD, VB, UIMM4}},
3510*4882a593Smuzhiyun {"vupklpx",	VX (4, 974),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
3511*4882a593Smuzhiyun {"maclhws",	XO (4, 492,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3512*4882a593Smuzhiyun {"maclhws.",	XO (4, 492,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3513*4882a593Smuzhiyun {"nmaclhws",	XO (4, 494,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3514*4882a593Smuzhiyun {"nmaclhws.",	XO (4, 494,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3515*4882a593Smuzhiyun {"vsububm",	VX (4,1024),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3516*4882a593Smuzhiyun {"bcdadd.",	VX (4,1025),	VXPS_MASK,   PPCVEC2,	0,		{VD, VA, VB, PS}},
3517*4882a593Smuzhiyun {"vavgub",	VX (4,1026),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3518*4882a593Smuzhiyun {"vabsdub",	VX (4,1027),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3519*4882a593Smuzhiyun {"evmhessf",	VX (4,1027),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3520*4882a593Smuzhiyun {"vand",	VX (4,1028),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3521*4882a593Smuzhiyun {"vcmpequb.",	VXR(4,	 6,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
3522*4882a593Smuzhiyun {"vcmpneb.",	VXR(4,	 7,1),	VXR_MASK,    PPCVEC3,	0,		{VD, VA, VB}},
3523*4882a593Smuzhiyun {"udi0fcm.",	APU(4, 515,0),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
3524*4882a593Smuzhiyun {"udi0fcm",	APU(4, 515,1),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
3525*4882a593Smuzhiyun {"evmhossf",	VX (4,1031),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3526*4882a593Smuzhiyun {"vpmsumb",	VX (4,1032),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3527*4882a593Smuzhiyun {"evmheumi",	VX (4,1032),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3528*4882a593Smuzhiyun {"evmhesmi",	VX (4,1033),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3529*4882a593Smuzhiyun {"vmaxfp",	VX (4,1034),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3530*4882a593Smuzhiyun {"evmhesmf",	VX (4,1035),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3531*4882a593Smuzhiyun {"evmhoumi",	VX (4,1036),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3532*4882a593Smuzhiyun {"vslo",	VX (4,1036),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3533*4882a593Smuzhiyun {"evmhosmi",	VX (4,1037),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3534*4882a593Smuzhiyun {"evmhosmf",	VX (4,1039),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3535*4882a593Smuzhiyun {"machhwuo",	XO (4,	12,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3536*4882a593Smuzhiyun {"machhwuo.",	XO (4,	12,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3537*4882a593Smuzhiyun {"ps_merge00",	XOPS(4,528,0),	XOPS_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
3538*4882a593Smuzhiyun {"ps_merge00.",	XOPS(4,528,1),	XOPS_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
3539*4882a593Smuzhiyun {"evmhessfa",	VX (4,1059),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3540*4882a593Smuzhiyun {"evmhossfa",	VX (4,1063),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3541*4882a593Smuzhiyun {"evmheumia",	VX (4,1064),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3542*4882a593Smuzhiyun {"evmhesmia",	VX (4,1065),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3543*4882a593Smuzhiyun {"evmhesmfa",	VX (4,1067),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3544*4882a593Smuzhiyun {"evmhoumia",	VX (4,1068),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3545*4882a593Smuzhiyun {"evmhosmia",	VX (4,1069),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3546*4882a593Smuzhiyun {"evmhosmfa",	VX (4,1071),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3547*4882a593Smuzhiyun {"vsubuhm",	VX (4,1088),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3548*4882a593Smuzhiyun {"bcdsub.",	VX (4,1089),	VXPS_MASK,   PPCVEC2,	0,		{VD, VA, VB, PS}},
3549*4882a593Smuzhiyun {"vavguh",	VX (4,1090),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3550*4882a593Smuzhiyun {"vabsduh",	VX (4,1091),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3551*4882a593Smuzhiyun {"vandc",	VX (4,1092),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3552*4882a593Smuzhiyun {"vcmpequh.",	VXR(4,	70,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
3553*4882a593Smuzhiyun {"udi1fcm.",	APU(4, 547,0),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
3554*4882a593Smuzhiyun {"udi1fcm",	APU(4, 547,1),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
3555*4882a593Smuzhiyun {"vcmpneh.",	VXR(4,	71,1),	VXR_MASK,    PPCVEC3,	0,		{VD, VA, VB}},
3556*4882a593Smuzhiyun {"evmwhssf",	VX (4,1095),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3557*4882a593Smuzhiyun {"vpmsumh",	VX (4,1096),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3558*4882a593Smuzhiyun {"evmwlumi",	VX (4,1096),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3559*4882a593Smuzhiyun {"vminfp",	VX (4,1098),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3560*4882a593Smuzhiyun {"evmwhumi",	VX (4,1100),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3561*4882a593Smuzhiyun {"vsro",	VX (4,1100),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3562*4882a593Smuzhiyun {"evmwhsmi",	VX (4,1101),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3563*4882a593Smuzhiyun {"vpkudum",	VX (4,1102),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3564*4882a593Smuzhiyun {"evmwhsmf",	VX (4,1103),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3565*4882a593Smuzhiyun {"evmwssf",	VX (4,1107),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3566*4882a593Smuzhiyun {"machhwo",	XO (4,	44,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3567*4882a593Smuzhiyun {"evmwumi",	VX (4,1112),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3568*4882a593Smuzhiyun {"machhwo.",	XO (4,	44,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3569*4882a593Smuzhiyun {"evmwsmi",	VX (4,1113),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3570*4882a593Smuzhiyun {"evmwsmf",	VX (4,1115),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3571*4882a593Smuzhiyun {"nmachhwo",	XO (4,	46,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3572*4882a593Smuzhiyun {"nmachhwo.",	XO (4,	46,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3573*4882a593Smuzhiyun {"ps_merge01",	XOPS(4,560,0),	XOPS_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
3574*4882a593Smuzhiyun {"ps_merge01.",	XOPS(4,560,1),	XOPS_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
3575*4882a593Smuzhiyun {"evmwhssfa",	VX (4,1127),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3576*4882a593Smuzhiyun {"evmwlumia",	VX (4,1128),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3577*4882a593Smuzhiyun {"evmwhumia",	VX (4,1132),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3578*4882a593Smuzhiyun {"evmwhsmia",	VX (4,1133),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3579*4882a593Smuzhiyun {"evmwhsmfa",	VX (4,1135),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3580*4882a593Smuzhiyun {"evmwssfa",	VX (4,1139),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3581*4882a593Smuzhiyun {"evmwumia",	VX (4,1144),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3582*4882a593Smuzhiyun {"evmwsmia",	VX (4,1145),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3583*4882a593Smuzhiyun {"evmwsmfa",	VX (4,1147),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3584*4882a593Smuzhiyun {"vsubuwm",	VX (4,1152),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3585*4882a593Smuzhiyun {"bcdus.",	VX (4,1153),	VX_MASK,     PPCVEC3,	0,		{VD, VA, VB}},
3586*4882a593Smuzhiyun {"vavguw",	VX (4,1154),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3587*4882a593Smuzhiyun {"vabsduw",	VX (4,1155),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3588*4882a593Smuzhiyun {"vmr",		VX (4,1156),	VX_MASK,     PPCVEC,	0,		{VD, VA, VBA}},
3589*4882a593Smuzhiyun {"vor",		VX (4,1156),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3590*4882a593Smuzhiyun {"vcmpnew.",	VXR(4, 135,1),	VXR_MASK,    PPCVEC3,	0,		{VD, VA, VB}},
3591*4882a593Smuzhiyun {"vpmsumw",	VX (4,1160),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3592*4882a593Smuzhiyun {"vcmpequw.",	VXR(4, 134,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
3593*4882a593Smuzhiyun {"udi2fcm.",	APU(4, 579,0),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
3594*4882a593Smuzhiyun {"udi2fcm",	APU(4, 579,1),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
3595*4882a593Smuzhiyun {"machhwsuo",	XO (4,	76,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3596*4882a593Smuzhiyun {"machhwsuo.",	XO (4,	76,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3597*4882a593Smuzhiyun {"ps_merge10",	XOPS(4,592,0),	XOPS_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
3598*4882a593Smuzhiyun {"ps_merge10.",	XOPS(4,592,1),	XOPS_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
3599*4882a593Smuzhiyun {"vsubudm",	VX (4,1216),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3600*4882a593Smuzhiyun {"evaddusiaaw",	VX (4,1216),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
3601*4882a593Smuzhiyun {"bcds.",	VX (4,1217),	VXPS_MASK,   PPCVEC3,	0,		{VD, VA, VB, PS}},
3602*4882a593Smuzhiyun {"evaddssiaaw",	VX (4,1217),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
3603*4882a593Smuzhiyun {"evsubfusiaaw",VX (4,1218),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
3604*4882a593Smuzhiyun {"evsubfssiaaw",VX (4,1219),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
3605*4882a593Smuzhiyun {"evmra",	VX (4,1220),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
3606*4882a593Smuzhiyun {"vxor",	VX (4,1220),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3607*4882a593Smuzhiyun {"evdivws",	VX (4,1222),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3608*4882a593Smuzhiyun {"vcmpeqfp.",	VXR(4, 198,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
3609*4882a593Smuzhiyun {"udi3fcm.",	APU(4, 611,0),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
3610*4882a593Smuzhiyun {"vcmpequd.",	VXR(4, 199,1),	VXR_MASK,    PPCVEC2,	0,		{VD, VA, VB}},
3611*4882a593Smuzhiyun {"udi3fcm",	APU(4, 611,1),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
3612*4882a593Smuzhiyun {"evdivwu",	VX (4,1223),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3613*4882a593Smuzhiyun {"vpmsumd",	VX (4,1224),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3614*4882a593Smuzhiyun {"evaddumiaaw",	VX (4,1224),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
3615*4882a593Smuzhiyun {"evaddsmiaaw",	VX (4,1225),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
3616*4882a593Smuzhiyun {"evsubfumiaaw",VX (4,1226),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
3617*4882a593Smuzhiyun {"evsubfsmiaaw",VX (4,1227),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
3618*4882a593Smuzhiyun {"vpkudus",	VX (4,1230),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3619*4882a593Smuzhiyun {"machhwso",	XO (4, 108,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3620*4882a593Smuzhiyun {"machhwso.",	XO (4, 108,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3621*4882a593Smuzhiyun {"nmachhwso",	XO (4, 110,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3622*4882a593Smuzhiyun {"nmachhwso.",	XO (4, 110,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3623*4882a593Smuzhiyun {"ps_merge11",	XOPS(4,624,0),	XOPS_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
3624*4882a593Smuzhiyun {"ps_merge11.",	XOPS(4,624,1),	XOPS_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
3625*4882a593Smuzhiyun {"vsubuqm",	VX (4,1280),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3626*4882a593Smuzhiyun {"evmheusiaaw",	VX (4,1280),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3627*4882a593Smuzhiyun {"bcdtrunc.",	VX (4,1281),	VXPS_MASK,   PPCVEC3,	0,		{VD, VA, VB, PS}},
3628*4882a593Smuzhiyun {"evmhessiaaw",	VX (4,1281),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3629*4882a593Smuzhiyun {"vavgsb",	VX (4,1282),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3630*4882a593Smuzhiyun {"evmhessfaaw",	VX (4,1283),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3631*4882a593Smuzhiyun {"evmhousiaaw",	VX (4,1284),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3632*4882a593Smuzhiyun {"vnot",	VX (4,1284),	VX_MASK,     PPCVEC,	0,		{VD, VA, VBA}},
3633*4882a593Smuzhiyun {"vnor",	VX (4,1284),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3634*4882a593Smuzhiyun {"evmhossiaaw",	VX (4,1285),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3635*4882a593Smuzhiyun {"udi4fcm.",	APU(4, 643,0),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
3636*4882a593Smuzhiyun {"udi4fcm",	APU(4, 643,1),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
3637*4882a593Smuzhiyun {"vcmpnezb.",	VXR(4, 263,1),	VXR_MASK,    PPCVEC3,	0,		{VD, VA, VB}},
3638*4882a593Smuzhiyun {"evmhossfaaw",	VX (4,1287),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3639*4882a593Smuzhiyun {"evmheumiaaw",	VX (4,1288),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3640*4882a593Smuzhiyun {"vcipher",	VX (4,1288),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3641*4882a593Smuzhiyun {"vcipherlast",	VX (4,1289),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3642*4882a593Smuzhiyun {"evmhesmiaaw",	VX (4,1289),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3643*4882a593Smuzhiyun {"evmhesmfaaw",	VX (4,1291),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3644*4882a593Smuzhiyun {"vgbbd",	VX (4,1292),	VXVA_MASK,   PPCVEC2,	0,		{VD, VB}},
3645*4882a593Smuzhiyun {"evmhoumiaaw",	VX (4,1292),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3646*4882a593Smuzhiyun {"evmhosmiaaw",	VX (4,1293),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3647*4882a593Smuzhiyun {"evmhosmfaaw",	VX (4,1295),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3648*4882a593Smuzhiyun {"macchwuo",	XO (4, 140,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3649*4882a593Smuzhiyun {"macchwuo.",	XO (4, 140,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3650*4882a593Smuzhiyun {"evmhegumiaa",	VX (4,1320),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3651*4882a593Smuzhiyun {"evmhegsmiaa",	VX (4,1321),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3652*4882a593Smuzhiyun {"evmhegsmfaa",	VX (4,1323),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3653*4882a593Smuzhiyun {"evmhogumiaa",	VX (4,1324),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3654*4882a593Smuzhiyun {"evmhogsmiaa",	VX (4,1325),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3655*4882a593Smuzhiyun {"evmhogsmfaa",	VX (4,1327),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3656*4882a593Smuzhiyun {"vsubcuq",	VX (4,1344),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3657*4882a593Smuzhiyun {"evmwlusiaaw",	VX (4,1344),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3658*4882a593Smuzhiyun {"bcdutrunc.",	VX (4,1345),	VX_MASK,     PPCVEC3,	0,		{VD, VA, VB}},
3659*4882a593Smuzhiyun {"evmwlssiaaw",	VX (4,1345),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3660*4882a593Smuzhiyun {"vavgsh",	VX (4,1346),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3661*4882a593Smuzhiyun {"vorc",	VX (4,1348),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3662*4882a593Smuzhiyun {"udi5fcm.",	APU(4, 675,0),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
3663*4882a593Smuzhiyun {"udi5fcm",	APU(4, 675,1),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
3664*4882a593Smuzhiyun {"vcmpnezh.",	VXR(4, 327,1),	VXR_MASK,    PPCVEC3,	0,		{VD, VA, VB}},
3665*4882a593Smuzhiyun {"vncipher",	VX (4,1352),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3666*4882a593Smuzhiyun {"evmwlumiaaw",	VX (4,1352),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3667*4882a593Smuzhiyun {"vncipherlast",VX (4,1353),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3668*4882a593Smuzhiyun {"evmwlsmiaaw",	VX (4,1353),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3669*4882a593Smuzhiyun {"vbpermq",	VX (4,1356),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3670*4882a593Smuzhiyun {"vpksdus",	VX (4,1358),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3671*4882a593Smuzhiyun {"evmwssfaa",	VX (4,1363),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3672*4882a593Smuzhiyun {"macchwo",	XO (4, 172,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3673*4882a593Smuzhiyun {"evmwumiaa",	VX (4,1368),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3674*4882a593Smuzhiyun {"macchwo.",	XO (4, 172,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3675*4882a593Smuzhiyun {"evmwsmiaa",	VX (4,1369),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3676*4882a593Smuzhiyun {"evmwsmfaa",	VX (4,1371),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3677*4882a593Smuzhiyun {"nmacchwo",	XO (4, 174,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3678*4882a593Smuzhiyun {"nmacchwo.",	XO (4, 174,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3679*4882a593Smuzhiyun {"evmheusianw",	VX (4,1408),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3680*4882a593Smuzhiyun {"vsubcuw",	VX (4,1408),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3681*4882a593Smuzhiyun {"evmhessianw",	VX (4,1409),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3682*4882a593Smuzhiyun {"bcdctsq.",	VXVA(4,1409,0),	VXVA_MASK,   PPCVEC3,	0,		{VD, VB}},
3683*4882a593Smuzhiyun {"bcdcfsq.",	VXVA(4,1409,2),	VXVAPS_MASK, PPCVEC3,	0,		{VD, VB, PS}},
3684*4882a593Smuzhiyun {"bcdctz.",	VXVA(4,1409,4),	VXVAPS_MASK, PPCVEC3,	0,		{VD, VB, PS}},
3685*4882a593Smuzhiyun {"bcdctn.",	VXVA(4,1409,5),	VXVA_MASK,   PPCVEC3,	0,		{VD, VB}},
3686*4882a593Smuzhiyun {"bcdcfz.",	VXVA(4,1409,6),	VXVAPS_MASK, PPCVEC3,	0,		{VD, VB, PS}},
3687*4882a593Smuzhiyun {"bcdcfn.",	VXVA(4,1409,7),	VXVAPS_MASK, PPCVEC3,	0,		{VD, VB, PS}},
3688*4882a593Smuzhiyun {"bcdsetsgn.",	VXVA(4,1409,31), VXVAPS_MASK, PPCVEC3,	0,		{VD, VB, PS}},
3689*4882a593Smuzhiyun {"vavgsw",	VX (4,1410),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3690*4882a593Smuzhiyun {"evmhessfanw",	VX (4,1411),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3691*4882a593Smuzhiyun {"vnand",	VX (4,1412),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3692*4882a593Smuzhiyun {"evmhousianw",	VX (4,1412),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3693*4882a593Smuzhiyun {"evmhossianw",	VX (4,1413),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3694*4882a593Smuzhiyun {"udi6fcm.",	APU(4, 707,0),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
3695*4882a593Smuzhiyun {"udi6fcm",	APU(4, 707,1),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
3696*4882a593Smuzhiyun {"vcmpnezw.",	VXR(4, 391,1),	VXR_MASK,    PPCVEC3,	0,		{VD, VA, VB}},
3697*4882a593Smuzhiyun {"evmhossfanw",	VX (4,1415),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3698*4882a593Smuzhiyun {"evmheumianw",	VX (4,1416),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3699*4882a593Smuzhiyun {"evmhesmianw",	VX (4,1417),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3700*4882a593Smuzhiyun {"evmhesmfanw",	VX (4,1419),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3701*4882a593Smuzhiyun {"evmhoumianw",	VX (4,1420),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3702*4882a593Smuzhiyun {"evmhosmianw",	VX (4,1421),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3703*4882a593Smuzhiyun {"evmhosmfanw",	VX (4,1423),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3704*4882a593Smuzhiyun {"macchwsuo",	XO (4, 204,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3705*4882a593Smuzhiyun {"macchwsuo.",	XO (4, 204,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3706*4882a593Smuzhiyun {"evmhegumian",	VX (4,1448),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3707*4882a593Smuzhiyun {"evmhegsmian",	VX (4,1449),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3708*4882a593Smuzhiyun {"evmhegsmfan",	VX (4,1451),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3709*4882a593Smuzhiyun {"evmhogumian",	VX (4,1452),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3710*4882a593Smuzhiyun {"evmhogsmian",	VX (4,1453),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3711*4882a593Smuzhiyun {"evmhogsmfan",	VX (4,1455),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3712*4882a593Smuzhiyun {"evmwlusianw",	VX (4,1472),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3713*4882a593Smuzhiyun {"bcdsr.",	VX (4,1473),	VXPS_MASK,   PPCVEC3,	0,		{VD, VA, VB, PS}},
3714*4882a593Smuzhiyun {"evmwlssianw",	VX (4,1473),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3715*4882a593Smuzhiyun {"vsld",	VX (4,1476),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3716*4882a593Smuzhiyun {"vcmpgefp.",	VXR(4, 454,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
3717*4882a593Smuzhiyun {"udi7fcm.",	APU(4, 739,0),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
3718*4882a593Smuzhiyun {"udi7fcm",	APU(4, 739,1),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
3719*4882a593Smuzhiyun {"vsbox",	VX (4,1480),	VXVB_MASK,   PPCVEC2,	0,		{VD, VA}},
3720*4882a593Smuzhiyun {"evmwlumianw",	VX (4,1480),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3721*4882a593Smuzhiyun {"evmwlsmianw",	VX (4,1481),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3722*4882a593Smuzhiyun {"vbpermd",	VX (4,1484),	VX_MASK,     PPCVEC3,	0,		{VD, VA, VB}},
3723*4882a593Smuzhiyun {"vpksdss",	VX (4,1486),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3724*4882a593Smuzhiyun {"evmwssfan",	VX (4,1491),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3725*4882a593Smuzhiyun {"macchwso",	XO (4, 236,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3726*4882a593Smuzhiyun {"evmwumian",	VX (4,1496),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3727*4882a593Smuzhiyun {"macchwso.",	XO (4, 236,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3728*4882a593Smuzhiyun {"evmwsmian",	VX (4,1497),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3729*4882a593Smuzhiyun {"evmwsmfan",	VX (4,1499),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
3730*4882a593Smuzhiyun {"nmacchwso",	XO (4, 238,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3731*4882a593Smuzhiyun {"nmacchwso.",	XO (4, 238,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3732*4882a593Smuzhiyun {"vsububs",	VX (4,1536),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3733*4882a593Smuzhiyun {"vclzlsbb",	VXVA(4,1538,0), VXVA_MASK,   PPCVEC3,	0,		{RT, VB}},
3734*4882a593Smuzhiyun {"vctzlsbb",	VXVA(4,1538,1), VXVA_MASK,   PPCVEC3,	0,		{RT, VB}},
3735*4882a593Smuzhiyun {"vnegw",	VXVA(4,1538,6), VXVA_MASK,   PPCVEC3,	0,		{VD, VB}},
3736*4882a593Smuzhiyun {"vnegd",	VXVA(4,1538,7), VXVA_MASK,   PPCVEC3,	0,		{VD, VB}},
3737*4882a593Smuzhiyun {"vprtybw",	VXVA(4,1538,8), VXVA_MASK,   PPCVEC3,	0,		{VD, VB}},
3738*4882a593Smuzhiyun {"vprtybd",	VXVA(4,1538,9), VXVA_MASK,   PPCVEC3,	0,		{VD, VB}},
3739*4882a593Smuzhiyun {"vprtybq",	VXVA(4,1538,10), VXVA_MASK,  PPCVEC3,	0,		{VD, VB}},
3740*4882a593Smuzhiyun {"vextsb2w",	VXVA(4,1538,16), VXVA_MASK,  PPCVEC3,	0,		{VD, VB}},
3741*4882a593Smuzhiyun {"vextsh2w",	VXVA(4,1538,17), VXVA_MASK,  PPCVEC3,	0,		{VD, VB}},
3742*4882a593Smuzhiyun {"vextsb2d",	VXVA(4,1538,24), VXVA_MASK,  PPCVEC3,	0,		{VD, VB}},
3743*4882a593Smuzhiyun {"vextsh2d",	VXVA(4,1538,25), VXVA_MASK,  PPCVEC3,	0,		{VD, VB}},
3744*4882a593Smuzhiyun {"vextsw2d",	VXVA(4,1538,26), VXVA_MASK,  PPCVEC3,	0,		{VD, VB}},
3745*4882a593Smuzhiyun {"vctzb",	VXVA(4,1538,28), VXVA_MASK,  PPCVEC3,	0,		{VD, VB}},
3746*4882a593Smuzhiyun {"vctzh",	VXVA(4,1538,29), VXVA_MASK,  PPCVEC3,	0,		{VD, VB}},
3747*4882a593Smuzhiyun {"vctzw",	VXVA(4,1538,30), VXVA_MASK,  PPCVEC3,	0,		{VD, VB}},
3748*4882a593Smuzhiyun {"vctzd",	VXVA(4,1538,31), VXVA_MASK,  PPCVEC3,	0,		{VD, VB}},
3749*4882a593Smuzhiyun {"mfvscr",	VX (4,1540),	VXVAVB_MASK, PPCVEC,	0,		{VD}},
3750*4882a593Smuzhiyun {"vcmpgtub.",	VXR(4, 518,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
3751*4882a593Smuzhiyun {"udi8fcm.",	APU(4, 771,0),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
3752*4882a593Smuzhiyun {"udi8fcm",	APU(4, 771,1),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
3753*4882a593Smuzhiyun {"vsum4ubs",	VX (4,1544),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3754*4882a593Smuzhiyun {"vextublx",	VX (4,1549),	VX_MASK,     PPCVEC3,	0,		{RT, RA, VB}},
3755*4882a593Smuzhiyun {"vsubuhs",	VX (4,1600),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3756*4882a593Smuzhiyun {"mtvscr",	VX (4,1604),	VXVDVA_MASK, PPCVEC,	0,		{VB}},
3757*4882a593Smuzhiyun {"vcmpgtuh.",	VXR(4, 582,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
3758*4882a593Smuzhiyun {"vsum4shs",	VX (4,1608),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3759*4882a593Smuzhiyun {"udi9fcm.",	APU(4, 804,0),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
3760*4882a593Smuzhiyun {"udi9fcm",	APU(4, 804,1),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
3761*4882a593Smuzhiyun {"vextuhlx",	VX (4,1613),	VX_MASK,     PPCVEC3,	0,		{RT, RA, VB}},
3762*4882a593Smuzhiyun {"vupkhsw",	VX (4,1614),	VXVA_MASK,   PPCVEC2,	0,		{VD, VB}},
3763*4882a593Smuzhiyun {"vsubuws",	VX (4,1664),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3764*4882a593Smuzhiyun {"vshasigmaw",	VX (4,1666),	VX_MASK,     PPCVEC2,	0,		{VD, VA, ST, SIX}},
3765*4882a593Smuzhiyun {"veqv",	VX (4,1668),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3766*4882a593Smuzhiyun {"vcmpgtuw.",	VXR(4, 646,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
3767*4882a593Smuzhiyun {"udi10fcm.",	APU(4, 835,0),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
3768*4882a593Smuzhiyun {"udi10fcm",	APU(4, 835,1),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
3769*4882a593Smuzhiyun {"vsum2sws",	VX (4,1672),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3770*4882a593Smuzhiyun {"vmrgow",	VX (4,1676),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3771*4882a593Smuzhiyun {"vextuwlx",	VX (4,1677),	VX_MASK,     PPCVEC3,	0,		{RT, RA, VB}},
3772*4882a593Smuzhiyun {"vshasigmad",	VX (4,1730),	VX_MASK,     PPCVEC2,	0,		{VD, VA, ST, SIX}},
3773*4882a593Smuzhiyun {"vsrd",	VX (4,1732),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3774*4882a593Smuzhiyun {"vcmpgtfp.",	VXR(4, 710,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
3775*4882a593Smuzhiyun {"udi11fcm.",	APU(4, 867,0),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
3776*4882a593Smuzhiyun {"vcmpgtud.",	VXR(4, 711,1),	VXR_MASK,    PPCVEC2,	0,		{VD, VA, VB}},
3777*4882a593Smuzhiyun {"udi11fcm",	APU(4, 867,1),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
3778*4882a593Smuzhiyun {"vupklsw",	VX (4,1742),	VXVA_MASK,   PPCVEC2,	0,		{VD, VB}},
3779*4882a593Smuzhiyun {"vsubsbs",	VX (4,1792),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3780*4882a593Smuzhiyun {"vclzb",	VX (4,1794),	VXVA_MASK,   PPCVEC2,	0,		{VD, VB}},
3781*4882a593Smuzhiyun {"vpopcntb",	VX (4,1795),	VXVA_MASK,   PPCVEC2,	0,		{VD, VB}},
3782*4882a593Smuzhiyun {"vsrv",	VX (4,1796),	VX_MASK,     PPCVEC3,	0,		{VD, VA, VB}},
3783*4882a593Smuzhiyun {"vcmpgtsb.",	VXR(4, 774,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
3784*4882a593Smuzhiyun {"udi12fcm.",	APU(4, 899,0),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
3785*4882a593Smuzhiyun {"udi12fcm",	APU(4, 899,1),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
3786*4882a593Smuzhiyun {"vsum4sbs",	VX (4,1800),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3787*4882a593Smuzhiyun {"vextubrx",	VX (4,1805),	VX_MASK,     PPCVEC3,	0,		{RT, RA, VB}},
3788*4882a593Smuzhiyun {"maclhwuo",	XO (4, 396,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3789*4882a593Smuzhiyun {"maclhwuo.",	XO (4, 396,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3790*4882a593Smuzhiyun {"vsubshs",	VX (4,1856),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3791*4882a593Smuzhiyun {"vclzh",	VX (4,1858),	VXVA_MASK,   PPCVEC2,	0,		{VD, VB}},
3792*4882a593Smuzhiyun {"vpopcnth",	VX (4,1859),	VXVA_MASK,   PPCVEC2,	0,		{VD, VB}},
3793*4882a593Smuzhiyun {"vslv",	VX (4,1860),	VX_MASK,     PPCVEC3,	0,		{VD, VA, VB}},
3794*4882a593Smuzhiyun {"vcmpgtsh.",	VXR(4, 838,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
3795*4882a593Smuzhiyun {"vextuhrx",	VX (4,1869),	VX_MASK,     PPCVEC3,	0,		{RT, RA, VB}},
3796*4882a593Smuzhiyun {"udi13fcm.",	APU(4, 931,0),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
3797*4882a593Smuzhiyun {"udi13fcm",	APU(4, 931,1),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
3798*4882a593Smuzhiyun {"maclhwo",	XO (4, 428,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3799*4882a593Smuzhiyun {"maclhwo.",	XO (4, 428,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3800*4882a593Smuzhiyun {"nmaclhwo",	XO (4, 430,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3801*4882a593Smuzhiyun {"nmaclhwo.",	XO (4, 430,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3802*4882a593Smuzhiyun {"vsubsws",	VX (4,1920),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3803*4882a593Smuzhiyun {"vclzw",	VX (4,1922),	VXVA_MASK,   PPCVEC2,	0,		{VD, VB}},
3804*4882a593Smuzhiyun {"vpopcntw",	VX (4,1923),	VXVA_MASK,   PPCVEC2,	0,		{VD, VB}},
3805*4882a593Smuzhiyun {"vcmpgtsw.",	VXR(4, 902,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
3806*4882a593Smuzhiyun {"udi14fcm.",	APU(4, 963,0),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
3807*4882a593Smuzhiyun {"udi14fcm",	APU(4, 963,1),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
3808*4882a593Smuzhiyun {"vsumsws",	VX (4,1928),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
3809*4882a593Smuzhiyun {"vmrgew",	VX (4,1932),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
3810*4882a593Smuzhiyun {"vextuwrx",	VX (4,1933),	VX_MASK,     PPCVEC3,	0,		{RT, RA, VB}},
3811*4882a593Smuzhiyun {"maclhwsuo",	XO (4, 460,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3812*4882a593Smuzhiyun {"maclhwsuo.",	XO (4, 460,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3813*4882a593Smuzhiyun {"vclzd",	VX (4,1986),	VXVA_MASK,   PPCVEC2,	0,		{VD, VB}},
3814*4882a593Smuzhiyun {"vpopcntd",	VX (4,1987),	VXVA_MASK,   PPCVEC2,	0,		{VD, VB}},
3815*4882a593Smuzhiyun {"vcmpbfp.",	VXR(4, 966,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
3816*4882a593Smuzhiyun {"udi15fcm.",	APU(4, 995,0),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
3817*4882a593Smuzhiyun {"vcmpgtsd.",	VXR(4, 967,1),	VXR_MASK,    PPCVEC2,	0,		{VD, VA, VB}},
3818*4882a593Smuzhiyun {"udi15fcm",	APU(4, 995,1),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
3819*4882a593Smuzhiyun {"maclhwso",	XO (4, 492,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3820*4882a593Smuzhiyun {"maclhwso.",	XO (4, 492,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3821*4882a593Smuzhiyun {"nmaclhwso",	XO (4, 494,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3822*4882a593Smuzhiyun {"nmaclhwso.",	XO (4, 494,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
3823*4882a593Smuzhiyun {"dcbz_l",	X  (4,1014),	XRT_MASK,    PPCPS,	0,		{RA, RB}},
3824*4882a593Smuzhiyun 
3825*4882a593Smuzhiyun {"mulli",	OP(7),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, RA, SI}},
3826*4882a593Smuzhiyun {"muli",	OP(7),		OP_MASK,     PWRCOM,	PPCVLE,		{RT, RA, SI}},
3827*4882a593Smuzhiyun 
3828*4882a593Smuzhiyun {"subfic",	OP(8),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, RA, SI}},
3829*4882a593Smuzhiyun {"sfi",		OP(8),		OP_MASK,     PWRCOM,	PPCVLE,		{RT, RA, SI}},
3830*4882a593Smuzhiyun 
3831*4882a593Smuzhiyun {"dozi",	OP(9),		OP_MASK,     M601,	PPCVLE,		{RT, RA, SI}},
3832*4882a593Smuzhiyun 
3833*4882a593Smuzhiyun {"cmplwi",	OPL(10,0),	OPL_MASK,    PPCCOM,	PPCVLE,		{OBF, RA, UISIGNOPT}},
3834*4882a593Smuzhiyun {"cmpldi",	OPL(10,1),	OPL_MASK,    PPC64,	PPCVLE,		{OBF, RA, UISIGNOPT}},
3835*4882a593Smuzhiyun {"cmpli",	OP(10),		OP_MASK,     PPC,	PPCVLE,		{BF, L32OPT, RA, UISIGNOPT}},
3836*4882a593Smuzhiyun {"cmpli",	OP(10),		OP_MASK,     PWRCOM,	PPC|PPCVLE,	{BF, RA, UISIGNOPT}},
3837*4882a593Smuzhiyun 
3838*4882a593Smuzhiyun {"cmpwi",	OPL(11,0),	OPL_MASK,    PPCCOM,	PPCVLE,		{OBF, RA, SI}},
3839*4882a593Smuzhiyun {"cmpdi",	OPL(11,1),	OPL_MASK,    PPC64,	PPCVLE,		{OBF, RA, SI}},
3840*4882a593Smuzhiyun {"cmpi",	OP(11),		OP_MASK,     PPC,	PPCVLE,		{BF, L32OPT, RA, SI}},
3841*4882a593Smuzhiyun {"cmpi",	OP(11),		OP_MASK,     PWRCOM,	PPC|PPCVLE,	{BF, RA, SI}},
3842*4882a593Smuzhiyun 
3843*4882a593Smuzhiyun {"addic",	OP(12),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, RA, SI}},
3844*4882a593Smuzhiyun {"ai",		OP(12),		OP_MASK,     PWRCOM,	PPCVLE,		{RT, RA, SI}},
3845*4882a593Smuzhiyun {"subic",	OP(12),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, RA, NSI}},
3846*4882a593Smuzhiyun 
3847*4882a593Smuzhiyun {"addic.",	OP(13),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, RA, SI}},
3848*4882a593Smuzhiyun {"ai.",		OP(13),		OP_MASK,     PWRCOM,	PPCVLE,		{RT, RA, SI}},
3849*4882a593Smuzhiyun {"subic.",	OP(13),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, RA, NSI}},
3850*4882a593Smuzhiyun 
3851*4882a593Smuzhiyun {"li",		OP(14),		DRA_MASK,    PPCCOM,	PPCVLE,		{RT, SI}},
3852*4882a593Smuzhiyun {"lil",		OP(14),		DRA_MASK,    PWRCOM,	PPCVLE,		{RT, SI}},
3853*4882a593Smuzhiyun {"addi",	OP(14),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, RA0, SI}},
3854*4882a593Smuzhiyun {"cal",		OP(14),		OP_MASK,     PWRCOM,	PPCVLE,		{RT, D, RA0}},
3855*4882a593Smuzhiyun {"subi",	OP(14),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, RA0, NSI}},
3856*4882a593Smuzhiyun {"la",		OP(14),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, D, RA0}},
3857*4882a593Smuzhiyun 
3858*4882a593Smuzhiyun {"lis",		OP(15),		DRA_MASK,    PPCCOM,	PPCVLE,		{RT, SISIGNOPT}},
3859*4882a593Smuzhiyun {"liu",		OP(15),		DRA_MASK,    PWRCOM,	PPCVLE,		{RT, SISIGNOPT}},
3860*4882a593Smuzhiyun {"addis",	OP(15),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, RA0, SISIGNOPT}},
3861*4882a593Smuzhiyun {"cau",		OP(15),		OP_MASK,     PWRCOM,	PPCVLE,		{RT, RA0, SISIGNOPT}},
3862*4882a593Smuzhiyun {"subis",	OP(15),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, RA0, NSISIGNOPT}},
3863*4882a593Smuzhiyun 
3864*4882a593Smuzhiyun {"bdnz-",    BBO(16,BODNZ,0,0),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDM}},
3865*4882a593Smuzhiyun {"bdnz+",    BBO(16,BODNZ,0,0),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDP}},
3866*4882a593Smuzhiyun {"bdnz",     BBO(16,BODNZ,0,0),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BD}},
3867*4882a593Smuzhiyun {"bdn",	     BBO(16,BODNZ,0,0),		BBOATBI_MASK,  PWRCOM,	 PPCVLE,	{BD}},
3868*4882a593Smuzhiyun {"bdnzl-",   BBO(16,BODNZ,0,1),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDM}},
3869*4882a593Smuzhiyun {"bdnzl+",   BBO(16,BODNZ,0,1),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDP}},
3870*4882a593Smuzhiyun {"bdnzl",    BBO(16,BODNZ,0,1),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BD}},
3871*4882a593Smuzhiyun {"bdnl",     BBO(16,BODNZ,0,1),		BBOATBI_MASK,  PWRCOM,	 PPCVLE,	{BD}},
3872*4882a593Smuzhiyun {"bdnza-",   BBO(16,BODNZ,1,0),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDMA}},
3873*4882a593Smuzhiyun {"bdnza+",   BBO(16,BODNZ,1,0),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDPA}},
3874*4882a593Smuzhiyun {"bdnza",    BBO(16,BODNZ,1,0),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDA}},
3875*4882a593Smuzhiyun {"bdna",     BBO(16,BODNZ,1,0),		BBOATBI_MASK,  PWRCOM,	 PPCVLE,	{BDA}},
3876*4882a593Smuzhiyun {"bdnzla-",  BBO(16,BODNZ,1,1),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDMA}},
3877*4882a593Smuzhiyun {"bdnzla+",  BBO(16,BODNZ,1,1),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDPA}},
3878*4882a593Smuzhiyun {"bdnzla",   BBO(16,BODNZ,1,1),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDA}},
3879*4882a593Smuzhiyun {"bdnla",    BBO(16,BODNZ,1,1),		BBOATBI_MASK,  PWRCOM,	 PPCVLE,	{BDA}},
3880*4882a593Smuzhiyun {"bdz-",     BBO(16,BODZ,0,0),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDM}},
3881*4882a593Smuzhiyun {"bdz+",     BBO(16,BODZ,0,0),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDP}},
3882*4882a593Smuzhiyun {"bdz",	     BBO(16,BODZ,0,0),		BBOATBI_MASK,  COM,	 PPCVLE,	{BD}},
3883*4882a593Smuzhiyun {"bdzl-",    BBO(16,BODZ,0,1),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDM}},
3884*4882a593Smuzhiyun {"bdzl+",    BBO(16,BODZ,0,1),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDP}},
3885*4882a593Smuzhiyun {"bdzl",     BBO(16,BODZ,0,1),		BBOATBI_MASK,  COM,	 PPCVLE,	{BD}},
3886*4882a593Smuzhiyun {"bdza-",    BBO(16,BODZ,1,0),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDMA}},
3887*4882a593Smuzhiyun {"bdza+",    BBO(16,BODZ,1,0),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDPA}},
3888*4882a593Smuzhiyun {"bdza",     BBO(16,BODZ,1,0),		BBOATBI_MASK,  COM,	 PPCVLE,	{BDA}},
3889*4882a593Smuzhiyun {"bdzla-",   BBO(16,BODZ,1,1),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDMA}},
3890*4882a593Smuzhiyun {"bdzla+",   BBO(16,BODZ,1,1),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDPA}},
3891*4882a593Smuzhiyun {"bdzla",    BBO(16,BODZ,1,1),		BBOATBI_MASK,  COM,	 PPCVLE,	{BDA}},
3892*4882a593Smuzhiyun 
3893*4882a593Smuzhiyun {"bge-",     BBOCB(16,BOF,CBLT,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
3894*4882a593Smuzhiyun {"bge+",     BBOCB(16,BOF,CBLT,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
3895*4882a593Smuzhiyun {"bge",	     BBOCB(16,BOF,CBLT,0,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
3896*4882a593Smuzhiyun {"bnl-",     BBOCB(16,BOF,CBLT,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
3897*4882a593Smuzhiyun {"bnl+",     BBOCB(16,BOF,CBLT,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
3898*4882a593Smuzhiyun {"bnl",	     BBOCB(16,BOF,CBLT,0,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
3899*4882a593Smuzhiyun {"bgel-",    BBOCB(16,BOF,CBLT,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
3900*4882a593Smuzhiyun {"bgel+",    BBOCB(16,BOF,CBLT,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
3901*4882a593Smuzhiyun {"bgel",     BBOCB(16,BOF,CBLT,0,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
3902*4882a593Smuzhiyun {"bnll-",    BBOCB(16,BOF,CBLT,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
3903*4882a593Smuzhiyun {"bnll+",    BBOCB(16,BOF,CBLT,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
3904*4882a593Smuzhiyun {"bnll",     BBOCB(16,BOF,CBLT,0,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
3905*4882a593Smuzhiyun {"bgea-",    BBOCB(16,BOF,CBLT,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
3906*4882a593Smuzhiyun {"bgea+",    BBOCB(16,BOF,CBLT,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
3907*4882a593Smuzhiyun {"bgea",     BBOCB(16,BOF,CBLT,1,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
3908*4882a593Smuzhiyun {"bnla-",    BBOCB(16,BOF,CBLT,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
3909*4882a593Smuzhiyun {"bnla+",    BBOCB(16,BOF,CBLT,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
3910*4882a593Smuzhiyun {"bnla",     BBOCB(16,BOF,CBLT,1,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
3911*4882a593Smuzhiyun {"bgela-",   BBOCB(16,BOF,CBLT,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
3912*4882a593Smuzhiyun {"bgela+",   BBOCB(16,BOF,CBLT,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
3913*4882a593Smuzhiyun {"bgela",    BBOCB(16,BOF,CBLT,1,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
3914*4882a593Smuzhiyun {"bnlla-",   BBOCB(16,BOF,CBLT,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
3915*4882a593Smuzhiyun {"bnlla+",   BBOCB(16,BOF,CBLT,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
3916*4882a593Smuzhiyun {"bnlla",    BBOCB(16,BOF,CBLT,1,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
3917*4882a593Smuzhiyun {"ble-",     BBOCB(16,BOF,CBGT,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
3918*4882a593Smuzhiyun {"ble+",     BBOCB(16,BOF,CBGT,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
3919*4882a593Smuzhiyun {"ble",	     BBOCB(16,BOF,CBGT,0,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
3920*4882a593Smuzhiyun {"bng-",     BBOCB(16,BOF,CBGT,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
3921*4882a593Smuzhiyun {"bng+",     BBOCB(16,BOF,CBGT,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
3922*4882a593Smuzhiyun {"bng",	     BBOCB(16,BOF,CBGT,0,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
3923*4882a593Smuzhiyun {"blel-",    BBOCB(16,BOF,CBGT,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
3924*4882a593Smuzhiyun {"blel+",    BBOCB(16,BOF,CBGT,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
3925*4882a593Smuzhiyun {"blel",     BBOCB(16,BOF,CBGT,0,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
3926*4882a593Smuzhiyun {"bngl-",    BBOCB(16,BOF,CBGT,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
3927*4882a593Smuzhiyun {"bngl+",    BBOCB(16,BOF,CBGT,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
3928*4882a593Smuzhiyun {"bngl",     BBOCB(16,BOF,CBGT,0,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
3929*4882a593Smuzhiyun {"blea-",    BBOCB(16,BOF,CBGT,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
3930*4882a593Smuzhiyun {"blea+",    BBOCB(16,BOF,CBGT,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
3931*4882a593Smuzhiyun {"blea",     BBOCB(16,BOF,CBGT,1,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
3932*4882a593Smuzhiyun {"bnga-",    BBOCB(16,BOF,CBGT,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
3933*4882a593Smuzhiyun {"bnga+",    BBOCB(16,BOF,CBGT,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
3934*4882a593Smuzhiyun {"bnga",     BBOCB(16,BOF,CBGT,1,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
3935*4882a593Smuzhiyun {"blela-",   BBOCB(16,BOF,CBGT,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
3936*4882a593Smuzhiyun {"blela+",   BBOCB(16,BOF,CBGT,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
3937*4882a593Smuzhiyun {"blela",    BBOCB(16,BOF,CBGT,1,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
3938*4882a593Smuzhiyun {"bngla-",   BBOCB(16,BOF,CBGT,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
3939*4882a593Smuzhiyun {"bngla+",   BBOCB(16,BOF,CBGT,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
3940*4882a593Smuzhiyun {"bngla",    BBOCB(16,BOF,CBGT,1,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
3941*4882a593Smuzhiyun {"bne-",     BBOCB(16,BOF,CBEQ,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
3942*4882a593Smuzhiyun {"bne+",     BBOCB(16,BOF,CBEQ,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
3943*4882a593Smuzhiyun {"bne",	     BBOCB(16,BOF,CBEQ,0,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
3944*4882a593Smuzhiyun {"bnel-",    BBOCB(16,BOF,CBEQ,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
3945*4882a593Smuzhiyun {"bnel+",    BBOCB(16,BOF,CBEQ,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
3946*4882a593Smuzhiyun {"bnel",     BBOCB(16,BOF,CBEQ,0,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
3947*4882a593Smuzhiyun {"bnea-",    BBOCB(16,BOF,CBEQ,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
3948*4882a593Smuzhiyun {"bnea+",    BBOCB(16,BOF,CBEQ,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
3949*4882a593Smuzhiyun {"bnea",     BBOCB(16,BOF,CBEQ,1,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
3950*4882a593Smuzhiyun {"bnela-",   BBOCB(16,BOF,CBEQ,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
3951*4882a593Smuzhiyun {"bnela+",   BBOCB(16,BOF,CBEQ,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
3952*4882a593Smuzhiyun {"bnela",    BBOCB(16,BOF,CBEQ,1,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
3953*4882a593Smuzhiyun {"bns-",     BBOCB(16,BOF,CBSO,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
3954*4882a593Smuzhiyun {"bns+",     BBOCB(16,BOF,CBSO,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
3955*4882a593Smuzhiyun {"bns",	     BBOCB(16,BOF,CBSO,0,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
3956*4882a593Smuzhiyun {"bnu-",     BBOCB(16,BOF,CBSO,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
3957*4882a593Smuzhiyun {"bnu+",     BBOCB(16,BOF,CBSO,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
3958*4882a593Smuzhiyun {"bnu",	     BBOCB(16,BOF,CBSO,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BD}},
3959*4882a593Smuzhiyun {"bnsl-",    BBOCB(16,BOF,CBSO,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
3960*4882a593Smuzhiyun {"bnsl+",    BBOCB(16,BOF,CBSO,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
3961*4882a593Smuzhiyun {"bnsl",     BBOCB(16,BOF,CBSO,0,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
3962*4882a593Smuzhiyun {"bnul-",    BBOCB(16,BOF,CBSO,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
3963*4882a593Smuzhiyun {"bnul+",    BBOCB(16,BOF,CBSO,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
3964*4882a593Smuzhiyun {"bnul",     BBOCB(16,BOF,CBSO,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BD}},
3965*4882a593Smuzhiyun {"bnsa-",    BBOCB(16,BOF,CBSO,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
3966*4882a593Smuzhiyun {"bnsa+",    BBOCB(16,BOF,CBSO,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
3967*4882a593Smuzhiyun {"bnsa",     BBOCB(16,BOF,CBSO,1,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
3968*4882a593Smuzhiyun {"bnua-",    BBOCB(16,BOF,CBSO,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
3969*4882a593Smuzhiyun {"bnua+",    BBOCB(16,BOF,CBSO,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
3970*4882a593Smuzhiyun {"bnua",     BBOCB(16,BOF,CBSO,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDA}},
3971*4882a593Smuzhiyun {"bnsla-",   BBOCB(16,BOF,CBSO,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
3972*4882a593Smuzhiyun {"bnsla+",   BBOCB(16,BOF,CBSO,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
3973*4882a593Smuzhiyun {"bnsla",    BBOCB(16,BOF,CBSO,1,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
3974*4882a593Smuzhiyun {"bnula-",   BBOCB(16,BOF,CBSO,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
3975*4882a593Smuzhiyun {"bnula+",   BBOCB(16,BOF,CBSO,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
3976*4882a593Smuzhiyun {"bnula",    BBOCB(16,BOF,CBSO,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDA}},
3977*4882a593Smuzhiyun 
3978*4882a593Smuzhiyun {"blt-",     BBOCB(16,BOT,CBLT,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
3979*4882a593Smuzhiyun {"blt+",     BBOCB(16,BOT,CBLT,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
3980*4882a593Smuzhiyun {"blt",	     BBOCB(16,BOT,CBLT,0,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
3981*4882a593Smuzhiyun {"bltl-",    BBOCB(16,BOT,CBLT,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
3982*4882a593Smuzhiyun {"bltl+",    BBOCB(16,BOT,CBLT,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
3983*4882a593Smuzhiyun {"bltl",     BBOCB(16,BOT,CBLT,0,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
3984*4882a593Smuzhiyun {"blta-",    BBOCB(16,BOT,CBLT,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
3985*4882a593Smuzhiyun {"blta+",    BBOCB(16,BOT,CBLT,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
3986*4882a593Smuzhiyun {"blta",     BBOCB(16,BOT,CBLT,1,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
3987*4882a593Smuzhiyun {"bltla-",   BBOCB(16,BOT,CBLT,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
3988*4882a593Smuzhiyun {"bltla+",   BBOCB(16,BOT,CBLT,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
3989*4882a593Smuzhiyun {"bltla",    BBOCB(16,BOT,CBLT,1,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
3990*4882a593Smuzhiyun {"bgt-",     BBOCB(16,BOT,CBGT,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
3991*4882a593Smuzhiyun {"bgt+",     BBOCB(16,BOT,CBGT,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
3992*4882a593Smuzhiyun {"bgt",	     BBOCB(16,BOT,CBGT,0,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
3993*4882a593Smuzhiyun {"bgtl-",    BBOCB(16,BOT,CBGT,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
3994*4882a593Smuzhiyun {"bgtl+",    BBOCB(16,BOT,CBGT,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
3995*4882a593Smuzhiyun {"bgtl",     BBOCB(16,BOT,CBGT,0,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
3996*4882a593Smuzhiyun {"bgta-",    BBOCB(16,BOT,CBGT,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
3997*4882a593Smuzhiyun {"bgta+",    BBOCB(16,BOT,CBGT,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
3998*4882a593Smuzhiyun {"bgta",     BBOCB(16,BOT,CBGT,1,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
3999*4882a593Smuzhiyun {"bgtla-",   BBOCB(16,BOT,CBGT,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
4000*4882a593Smuzhiyun {"bgtla+",   BBOCB(16,BOT,CBGT,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
4001*4882a593Smuzhiyun {"bgtla",    BBOCB(16,BOT,CBGT,1,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
4002*4882a593Smuzhiyun {"beq-",     BBOCB(16,BOT,CBEQ,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
4003*4882a593Smuzhiyun {"beq+",     BBOCB(16,BOT,CBEQ,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
4004*4882a593Smuzhiyun {"beq",	     BBOCB(16,BOT,CBEQ,0,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
4005*4882a593Smuzhiyun {"beql-",    BBOCB(16,BOT,CBEQ,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
4006*4882a593Smuzhiyun {"beql+",    BBOCB(16,BOT,CBEQ,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
4007*4882a593Smuzhiyun {"beql",     BBOCB(16,BOT,CBEQ,0,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
4008*4882a593Smuzhiyun {"beqa-",    BBOCB(16,BOT,CBEQ,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
4009*4882a593Smuzhiyun {"beqa+",    BBOCB(16,BOT,CBEQ,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
4010*4882a593Smuzhiyun {"beqa",     BBOCB(16,BOT,CBEQ,1,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
4011*4882a593Smuzhiyun {"beqla-",   BBOCB(16,BOT,CBEQ,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
4012*4882a593Smuzhiyun {"beqla+",   BBOCB(16,BOT,CBEQ,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
4013*4882a593Smuzhiyun {"beqla",    BBOCB(16,BOT,CBEQ,1,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
4014*4882a593Smuzhiyun {"bso-",     BBOCB(16,BOT,CBSO,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
4015*4882a593Smuzhiyun {"bso+",     BBOCB(16,BOT,CBSO,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
4016*4882a593Smuzhiyun {"bso",	     BBOCB(16,BOT,CBSO,0,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
4017*4882a593Smuzhiyun {"bun-",     BBOCB(16,BOT,CBSO,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
4018*4882a593Smuzhiyun {"bun+",     BBOCB(16,BOT,CBSO,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
4019*4882a593Smuzhiyun {"bun",	     BBOCB(16,BOT,CBSO,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BD}},
4020*4882a593Smuzhiyun {"bsol-",    BBOCB(16,BOT,CBSO,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
4021*4882a593Smuzhiyun {"bsol+",    BBOCB(16,BOT,CBSO,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
4022*4882a593Smuzhiyun {"bsol",     BBOCB(16,BOT,CBSO,0,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
4023*4882a593Smuzhiyun {"bunl-",    BBOCB(16,BOT,CBSO,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
4024*4882a593Smuzhiyun {"bunl+",    BBOCB(16,BOT,CBSO,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
4025*4882a593Smuzhiyun {"bunl",     BBOCB(16,BOT,CBSO,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BD}},
4026*4882a593Smuzhiyun {"bsoa-",    BBOCB(16,BOT,CBSO,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
4027*4882a593Smuzhiyun {"bsoa+",    BBOCB(16,BOT,CBSO,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
4028*4882a593Smuzhiyun {"bsoa",     BBOCB(16,BOT,CBSO,1,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
4029*4882a593Smuzhiyun {"buna-",    BBOCB(16,BOT,CBSO,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
4030*4882a593Smuzhiyun {"buna+",    BBOCB(16,BOT,CBSO,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
4031*4882a593Smuzhiyun {"buna",     BBOCB(16,BOT,CBSO,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDA}},
4032*4882a593Smuzhiyun {"bsola-",   BBOCB(16,BOT,CBSO,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
4033*4882a593Smuzhiyun {"bsola+",   BBOCB(16,BOT,CBSO,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
4034*4882a593Smuzhiyun {"bsola",    BBOCB(16,BOT,CBSO,1,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
4035*4882a593Smuzhiyun {"bunla-",   BBOCB(16,BOT,CBSO,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
4036*4882a593Smuzhiyun {"bunla+",   BBOCB(16,BOT,CBSO,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
4037*4882a593Smuzhiyun {"bunla",    BBOCB(16,BOT,CBSO,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDA}},
4038*4882a593Smuzhiyun 
4039*4882a593Smuzhiyun {"bdnzf-",   BBO(16,BODNZF,0,0),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDM}},
4040*4882a593Smuzhiyun {"bdnzf+",   BBO(16,BODNZF,0,0),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDP}},
4041*4882a593Smuzhiyun {"bdnzf",    BBO(16,BODNZF,0,0),	BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BD}},
4042*4882a593Smuzhiyun {"bdnzfl-",  BBO(16,BODNZF,0,1),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDM}},
4043*4882a593Smuzhiyun {"bdnzfl+",  BBO(16,BODNZF,0,1),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDP}},
4044*4882a593Smuzhiyun {"bdnzfl",   BBO(16,BODNZF,0,1),	BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BD}},
4045*4882a593Smuzhiyun {"bdnzfa-",  BBO(16,BODNZF,1,0),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDMA}},
4046*4882a593Smuzhiyun {"bdnzfa+",  BBO(16,BODNZF,1,0),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDPA}},
4047*4882a593Smuzhiyun {"bdnzfa",   BBO(16,BODNZF,1,0),	BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BDA}},
4048*4882a593Smuzhiyun {"bdnzfla-", BBO(16,BODNZF,1,1),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDMA}},
4049*4882a593Smuzhiyun {"bdnzfla+", BBO(16,BODNZF,1,1),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDPA}},
4050*4882a593Smuzhiyun {"bdnzfla",  BBO(16,BODNZF,1,1),	BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BDA}},
4051*4882a593Smuzhiyun {"bdzf-",    BBO(16,BODZF,0,0),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDM}},
4052*4882a593Smuzhiyun {"bdzf+",    BBO(16,BODZF,0,0),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDP}},
4053*4882a593Smuzhiyun {"bdzf",     BBO(16,BODZF,0,0),		BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BD}},
4054*4882a593Smuzhiyun {"bdzfl-",   BBO(16,BODZF,0,1),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDM}},
4055*4882a593Smuzhiyun {"bdzfl+",   BBO(16,BODZF,0,1),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDP}},
4056*4882a593Smuzhiyun {"bdzfl",    BBO(16,BODZF,0,1),		BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BD}},
4057*4882a593Smuzhiyun {"bdzfa-",   BBO(16,BODZF,1,0),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDMA}},
4058*4882a593Smuzhiyun {"bdzfa+",   BBO(16,BODZF,1,0),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDPA}},
4059*4882a593Smuzhiyun {"bdzfa",    BBO(16,BODZF,1,0),		BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BDA}},
4060*4882a593Smuzhiyun {"bdzfla-",  BBO(16,BODZF,1,1),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDMA}},
4061*4882a593Smuzhiyun {"bdzfla+",  BBO(16,BODZF,1,1),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDPA}},
4062*4882a593Smuzhiyun {"bdzfla",   BBO(16,BODZF,1,1),		BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BDA}},
4063*4882a593Smuzhiyun 
4064*4882a593Smuzhiyun {"bf-",	     BBO(16,BOF,0,0),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDM}},
4065*4882a593Smuzhiyun {"bf+",	     BBO(16,BOF,0,0),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDP}},
4066*4882a593Smuzhiyun {"bf",	     BBO(16,BOF,0,0),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BD}},
4067*4882a593Smuzhiyun {"bbf",	     BBO(16,BOF,0,0),		BBOAT_MASK,    PWRCOM,	 PPCVLE,	{BI, BD}},
4068*4882a593Smuzhiyun {"bfl-",     BBO(16,BOF,0,1),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDM}},
4069*4882a593Smuzhiyun {"bfl+",     BBO(16,BOF,0,1),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDP}},
4070*4882a593Smuzhiyun {"bfl",	     BBO(16,BOF,0,1),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BD}},
4071*4882a593Smuzhiyun {"bbfl",     BBO(16,BOF,0,1),		BBOAT_MASK,    PWRCOM,	 PPCVLE,	{BI, BD}},
4072*4882a593Smuzhiyun {"bfa-",     BBO(16,BOF,1,0),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDMA}},
4073*4882a593Smuzhiyun {"bfa+",     BBO(16,BOF,1,0),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDPA}},
4074*4882a593Smuzhiyun {"bfa",	     BBO(16,BOF,1,0),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDA}},
4075*4882a593Smuzhiyun {"bbfa",     BBO(16,BOF,1,0),		BBOAT_MASK,    PWRCOM,	 PPCVLE,	{BI, BDA}},
4076*4882a593Smuzhiyun {"bfla-",    BBO(16,BOF,1,1),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDMA}},
4077*4882a593Smuzhiyun {"bfla+",    BBO(16,BOF,1,1),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDPA}},
4078*4882a593Smuzhiyun {"bfla",     BBO(16,BOF,1,1),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDA}},
4079*4882a593Smuzhiyun {"bbfla",    BBO(16,BOF,1,1),		BBOAT_MASK,    PWRCOM,	 PPCVLE,	{BI, BDA}},
4080*4882a593Smuzhiyun 
4081*4882a593Smuzhiyun {"bdnzt-",   BBO(16,BODNZT,0,0),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDM}},
4082*4882a593Smuzhiyun {"bdnzt+",   BBO(16,BODNZT,0,0),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDP}},
4083*4882a593Smuzhiyun {"bdnzt",    BBO(16,BODNZT,0,0),	BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BD}},
4084*4882a593Smuzhiyun {"bdnztl-",  BBO(16,BODNZT,0,1),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDM}},
4085*4882a593Smuzhiyun {"bdnztl+",  BBO(16,BODNZT,0,1),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDP}},
4086*4882a593Smuzhiyun {"bdnztl",   BBO(16,BODNZT,0,1),	BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BD}},
4087*4882a593Smuzhiyun {"bdnzta-",  BBO(16,BODNZT,1,0),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDMA}},
4088*4882a593Smuzhiyun {"bdnzta+",  BBO(16,BODNZT,1,0),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDPA}},
4089*4882a593Smuzhiyun {"bdnzta",   BBO(16,BODNZT,1,0),	BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BDA}},
4090*4882a593Smuzhiyun {"bdnztla-", BBO(16,BODNZT,1,1),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDMA}},
4091*4882a593Smuzhiyun {"bdnztla+", BBO(16,BODNZT,1,1),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDPA}},
4092*4882a593Smuzhiyun {"bdnztla",  BBO(16,BODNZT,1,1),	BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BDA}},
4093*4882a593Smuzhiyun {"bdzt-",    BBO(16,BODZT,0,0),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDM}},
4094*4882a593Smuzhiyun {"bdzt+",    BBO(16,BODZT,0,0),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDP}},
4095*4882a593Smuzhiyun {"bdzt",     BBO(16,BODZT,0,0),		BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BD}},
4096*4882a593Smuzhiyun {"bdztl-",   BBO(16,BODZT,0,1),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDM}},
4097*4882a593Smuzhiyun {"bdztl+",   BBO(16,BODZT,0,1),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDP}},
4098*4882a593Smuzhiyun {"bdztl",    BBO(16,BODZT,0,1),		BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BD}},
4099*4882a593Smuzhiyun {"bdzta-",   BBO(16,BODZT,1,0),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDMA}},
4100*4882a593Smuzhiyun {"bdzta+",   BBO(16,BODZT,1,0),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDPA}},
4101*4882a593Smuzhiyun {"bdzta",    BBO(16,BODZT,1,0),		BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BDA}},
4102*4882a593Smuzhiyun {"bdztla-",  BBO(16,BODZT,1,1),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDMA}},
4103*4882a593Smuzhiyun {"bdztla+",  BBO(16,BODZT,1,1),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDPA}},
4104*4882a593Smuzhiyun {"bdztla",   BBO(16,BODZT,1,1),		BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BDA}},
4105*4882a593Smuzhiyun 
4106*4882a593Smuzhiyun {"bt-",	     BBO(16,BOT,0,0),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDM}},
4107*4882a593Smuzhiyun {"bt+",	     BBO(16,BOT,0,0),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDP}},
4108*4882a593Smuzhiyun {"bt",	     BBO(16,BOT,0,0),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BD}},
4109*4882a593Smuzhiyun {"bbt",	     BBO(16,BOT,0,0),		BBOAT_MASK,    PWRCOM,	 PPCVLE,	{BI, BD}},
4110*4882a593Smuzhiyun {"btl-",     BBO(16,BOT,0,1),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDM}},
4111*4882a593Smuzhiyun {"btl+",     BBO(16,BOT,0,1),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDP}},
4112*4882a593Smuzhiyun {"btl",	     BBO(16,BOT,0,1),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BD}},
4113*4882a593Smuzhiyun {"bbtl",     BBO(16,BOT,0,1),		BBOAT_MASK,    PWRCOM,	 PPCVLE,	{BI, BD}},
4114*4882a593Smuzhiyun {"bta-",     BBO(16,BOT,1,0),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDMA}},
4115*4882a593Smuzhiyun {"bta+",     BBO(16,BOT,1,0),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDPA}},
4116*4882a593Smuzhiyun {"bta",	     BBO(16,BOT,1,0),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDA}},
4117*4882a593Smuzhiyun {"bbta",     BBO(16,BOT,1,0),		BBOAT_MASK,    PWRCOM,	 PPCVLE,	{BI, BDA}},
4118*4882a593Smuzhiyun {"btla-",    BBO(16,BOT,1,1),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDMA}},
4119*4882a593Smuzhiyun {"btla+",    BBO(16,BOT,1,1),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDPA}},
4120*4882a593Smuzhiyun {"btla",     BBO(16,BOT,1,1),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDA}},
4121*4882a593Smuzhiyun {"bbtla",    BBO(16,BOT,1,1),		BBOAT_MASK,    PWRCOM,	 PPCVLE,	{BI, BDA}},
4122*4882a593Smuzhiyun 
4123*4882a593Smuzhiyun {"bc-",		B(16,0,0),	B_MASK,	     PPCCOM,	PPCVLE,		{BOE, BI, BDM}},
4124*4882a593Smuzhiyun {"bc+",		B(16,0,0),	B_MASK,	     PPCCOM,	PPCVLE,		{BOE, BI, BDP}},
4125*4882a593Smuzhiyun {"bc",		B(16,0,0),	B_MASK,	     COM,	PPCVLE,		{BO, BI, BD}},
4126*4882a593Smuzhiyun {"bcl-",	B(16,0,1),	B_MASK,	     PPCCOM,	PPCVLE,		{BOE, BI, BDM}},
4127*4882a593Smuzhiyun {"bcl+",	B(16,0,1),	B_MASK,	     PPCCOM,	PPCVLE,		{BOE, BI, BDP}},
4128*4882a593Smuzhiyun {"bcl",		B(16,0,1),	B_MASK,	     COM,	PPCVLE,		{BO, BI, BD}},
4129*4882a593Smuzhiyun {"bca-",	B(16,1,0),	B_MASK,	     PPCCOM,	PPCVLE,		{BOE, BI, BDMA}},
4130*4882a593Smuzhiyun {"bca+",	B(16,1,0),	B_MASK,	     PPCCOM,	PPCVLE,		{BOE, BI, BDPA}},
4131*4882a593Smuzhiyun {"bca",		B(16,1,0),	B_MASK,	     COM,	PPCVLE,		{BO, BI, BDA}},
4132*4882a593Smuzhiyun {"bcla-",	B(16,1,1),	B_MASK,	     PPCCOM,	PPCVLE,		{BOE, BI, BDMA}},
4133*4882a593Smuzhiyun {"bcla+",	B(16,1,1),	B_MASK,	     PPCCOM,	PPCVLE,		{BOE, BI, BDPA}},
4134*4882a593Smuzhiyun {"bcla",	B(16,1,1),	B_MASK,	     COM,	PPCVLE,		{BO, BI, BDA}},
4135*4882a593Smuzhiyun 
4136*4882a593Smuzhiyun {"svc",		SC(17,0,0),	SC_MASK,     POWER,	PPCVLE,		{SVC_LEV, FL1, FL2}},
4137*4882a593Smuzhiyun {"svcl",	SC(17,0,1),	SC_MASK,     POWER,	PPCVLE,		{SVC_LEV, FL1, FL2}},
4138*4882a593Smuzhiyun {"sc",		SC(17,1,0),	SC_MASK,     PPC,	PPCVLE,		{LEV}},
4139*4882a593Smuzhiyun {"svca",	SC(17,1,0),	SC_MASK,     PWRCOM,	PPCVLE,		{SV}},
4140*4882a593Smuzhiyun {"svcla",	SC(17,1,1),	SC_MASK,     POWER,	PPCVLE,		{SV}},
4141*4882a593Smuzhiyun 
4142*4882a593Smuzhiyun {"b",		B(18,0,0),	B_MASK,	     COM,	PPCVLE,		{LI}},
4143*4882a593Smuzhiyun {"bl",		B(18,0,1),	B_MASK,	     COM,	PPCVLE,		{LI}},
4144*4882a593Smuzhiyun {"ba",		B(18,1,0),	B_MASK,	     COM,	PPCVLE,		{LIA}},
4145*4882a593Smuzhiyun {"bla",		B(18,1,1),	B_MASK,	     COM,	PPCVLE,		{LIA}},
4146*4882a593Smuzhiyun 
4147*4882a593Smuzhiyun {"mcrf",     XL(19,0), XLBB_MASK|(3<<21)|(3<<16), COM,	PPCVLE,		{BF, BFA}},
4148*4882a593Smuzhiyun 
4149*4882a593Smuzhiyun {"addpcis",  DX(19,2),		DX_MASK,     POWER9,	PPCVLE,		{RT, DXD}},
4150*4882a593Smuzhiyun {"subpcis",  DX(19,2),		DX_MASK,     POWER9,	PPCVLE,		{RT, NDXD}},
4151*4882a593Smuzhiyun 
4152*4882a593Smuzhiyun {"bdnzlr",   XLO(19,BODNZ,16,0),	XLBOBIBB_MASK, PPCCOM,	 PPCVLE,	{0}},
4153*4882a593Smuzhiyun {"bdnzlr-",  XLO(19,BODNZ,16,0),	XLBOBIBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{0}},
4154*4882a593Smuzhiyun {"bdnzlrl",  XLO(19,BODNZ,16,1),	XLBOBIBB_MASK, PPCCOM,	 PPCVLE,	{0}},
4155*4882a593Smuzhiyun {"bdnzlrl-", XLO(19,BODNZ,16,1),	XLBOBIBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{0}},
4156*4882a593Smuzhiyun {"bdnzlr+",  XLO(19,BODNZP,16,0),	XLBOBIBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{0}},
4157*4882a593Smuzhiyun {"bdnzlrl+", XLO(19,BODNZP,16,1),	XLBOBIBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{0}},
4158*4882a593Smuzhiyun {"bdzlr",    XLO(19,BODZ,16,0),		XLBOBIBB_MASK, PPCCOM,	 PPCVLE,	{0}},
4159*4882a593Smuzhiyun {"bdzlr-",   XLO(19,BODZ,16,0),		XLBOBIBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{0}},
4160*4882a593Smuzhiyun {"bdzlrl",   XLO(19,BODZ,16,1),		XLBOBIBB_MASK, PPCCOM,	 PPCVLE,	{0}},
4161*4882a593Smuzhiyun {"bdzlrl-",  XLO(19,BODZ,16,1),		XLBOBIBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{0}},
4162*4882a593Smuzhiyun {"bdzlr+",   XLO(19,BODZP,16,0),	XLBOBIBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{0}},
4163*4882a593Smuzhiyun {"bdzlrl+",  XLO(19,BODZP,16,1),	XLBOBIBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{0}},
4164*4882a593Smuzhiyun {"blr",	     XLO(19,BOU,16,0),		XLBOBIBB_MASK, PPCCOM,	 PPCVLE,	{0}},
4165*4882a593Smuzhiyun {"br",	     XLO(19,BOU,16,0),		XLBOBIBB_MASK, PWRCOM,	 PPCVLE,	{0}},
4166*4882a593Smuzhiyun {"blrl",     XLO(19,BOU,16,1),		XLBOBIBB_MASK, PPCCOM,	 PPCVLE,	{0}},
4167*4882a593Smuzhiyun {"brl",	     XLO(19,BOU,16,1),		XLBOBIBB_MASK, PWRCOM,	 PPCVLE,	{0}},
4168*4882a593Smuzhiyun {"bdnzlr-",  XLO(19,BODNZM4,16,0),	XLBOBIBB_MASK, ISA_V2,	 PPCVLE,	{0}},
4169*4882a593Smuzhiyun {"bdnzlrl-", XLO(19,BODNZM4,16,1),	XLBOBIBB_MASK, ISA_V2,	 PPCVLE,	{0}},
4170*4882a593Smuzhiyun {"bdnzlr+",  XLO(19,BODNZP4,16,0),	XLBOBIBB_MASK, ISA_V2,	 PPCVLE,	{0}},
4171*4882a593Smuzhiyun {"bdnzlrl+", XLO(19,BODNZP4,16,1),	XLBOBIBB_MASK, ISA_V2,	 PPCVLE,	{0}},
4172*4882a593Smuzhiyun {"bdzlr-",   XLO(19,BODZM4,16,0),	XLBOBIBB_MASK, ISA_V2,	 PPCVLE,	{0}},
4173*4882a593Smuzhiyun {"bdzlrl-",  XLO(19,BODZM4,16,1),	XLBOBIBB_MASK, ISA_V2,	 PPCVLE,	{0}},
4174*4882a593Smuzhiyun {"bdzlr+",   XLO(19,BODZP4,16,0),	XLBOBIBB_MASK, ISA_V2,	 PPCVLE,	{0}},
4175*4882a593Smuzhiyun {"bdzlrl+",  XLO(19,BODZP4,16,1),	XLBOBIBB_MASK, ISA_V2,	 PPCVLE,	{0}},
4176*4882a593Smuzhiyun 
4177*4882a593Smuzhiyun {"bgelr",    XLOCB(19,BOF,CBLT,16,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4178*4882a593Smuzhiyun {"bgelr-",   XLOCB(19,BOF,CBLT,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4179*4882a593Smuzhiyun {"bger",     XLOCB(19,BOF,CBLT,16,0),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
4180*4882a593Smuzhiyun {"bnllr",    XLOCB(19,BOF,CBLT,16,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4181*4882a593Smuzhiyun {"bnllr-",   XLOCB(19,BOF,CBLT,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4182*4882a593Smuzhiyun {"bnlr",     XLOCB(19,BOF,CBLT,16,0),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
4183*4882a593Smuzhiyun {"bgelrl",   XLOCB(19,BOF,CBLT,16,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4184*4882a593Smuzhiyun {"bgelrl-",  XLOCB(19,BOF,CBLT,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4185*4882a593Smuzhiyun {"bgerl",    XLOCB(19,BOF,CBLT,16,1),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
4186*4882a593Smuzhiyun {"bnllrl",   XLOCB(19,BOF,CBLT,16,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4187*4882a593Smuzhiyun {"bnllrl-",  XLOCB(19,BOF,CBLT,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4188*4882a593Smuzhiyun {"bnlrl",    XLOCB(19,BOF,CBLT,16,1),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
4189*4882a593Smuzhiyun {"blelr",    XLOCB(19,BOF,CBGT,16,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4190*4882a593Smuzhiyun {"blelr-",   XLOCB(19,BOF,CBGT,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4191*4882a593Smuzhiyun {"bler",     XLOCB(19,BOF,CBGT,16,0),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
4192*4882a593Smuzhiyun {"bnglr",    XLOCB(19,BOF,CBGT,16,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4193*4882a593Smuzhiyun {"bnglr-",   XLOCB(19,BOF,CBGT,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4194*4882a593Smuzhiyun {"bngr",     XLOCB(19,BOF,CBGT,16,0),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
4195*4882a593Smuzhiyun {"blelrl",   XLOCB(19,BOF,CBGT,16,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4196*4882a593Smuzhiyun {"blelrl-",  XLOCB(19,BOF,CBGT,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4197*4882a593Smuzhiyun {"blerl",    XLOCB(19,BOF,CBGT,16,1),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
4198*4882a593Smuzhiyun {"bnglrl",   XLOCB(19,BOF,CBGT,16,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4199*4882a593Smuzhiyun {"bnglrl-",  XLOCB(19,BOF,CBGT,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4200*4882a593Smuzhiyun {"bngrl",    XLOCB(19,BOF,CBGT,16,1),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
4201*4882a593Smuzhiyun {"bnelr",    XLOCB(19,BOF,CBEQ,16,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4202*4882a593Smuzhiyun {"bnelr-",   XLOCB(19,BOF,CBEQ,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4203*4882a593Smuzhiyun {"bner",     XLOCB(19,BOF,CBEQ,16,0),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
4204*4882a593Smuzhiyun {"bnelrl",   XLOCB(19,BOF,CBEQ,16,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4205*4882a593Smuzhiyun {"bnelrl-",  XLOCB(19,BOF,CBEQ,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4206*4882a593Smuzhiyun {"bnerl",    XLOCB(19,BOF,CBEQ,16,1),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
4207*4882a593Smuzhiyun {"bnslr",    XLOCB(19,BOF,CBSO,16,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4208*4882a593Smuzhiyun {"bnslr-",   XLOCB(19,BOF,CBSO,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4209*4882a593Smuzhiyun {"bnsr",     XLOCB(19,BOF,CBSO,16,0),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
4210*4882a593Smuzhiyun {"bnulr",    XLOCB(19,BOF,CBSO,16,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4211*4882a593Smuzhiyun {"bnulr-",   XLOCB(19,BOF,CBSO,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4212*4882a593Smuzhiyun {"bnslrl",   XLOCB(19,BOF,CBSO,16,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4213*4882a593Smuzhiyun {"bnslrl-",  XLOCB(19,BOF,CBSO,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4214*4882a593Smuzhiyun {"bnsrl",    XLOCB(19,BOF,CBSO,16,1),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
4215*4882a593Smuzhiyun {"bnulrl",   XLOCB(19,BOF,CBSO,16,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4216*4882a593Smuzhiyun {"bnulrl-",  XLOCB(19,BOF,CBSO,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4217*4882a593Smuzhiyun {"bgelr+",   XLOCB(19,BOFP,CBLT,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4218*4882a593Smuzhiyun {"bnllr+",   XLOCB(19,BOFP,CBLT,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4219*4882a593Smuzhiyun {"bgelrl+",  XLOCB(19,BOFP,CBLT,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4220*4882a593Smuzhiyun {"bnllrl+",  XLOCB(19,BOFP,CBLT,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4221*4882a593Smuzhiyun {"blelr+",   XLOCB(19,BOFP,CBGT,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4222*4882a593Smuzhiyun {"bnglr+",   XLOCB(19,BOFP,CBGT,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4223*4882a593Smuzhiyun {"blelrl+",  XLOCB(19,BOFP,CBGT,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4224*4882a593Smuzhiyun {"bnglrl+",  XLOCB(19,BOFP,CBGT,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4225*4882a593Smuzhiyun {"bnelr+",   XLOCB(19,BOFP,CBEQ,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4226*4882a593Smuzhiyun {"bnelrl+",  XLOCB(19,BOFP,CBEQ,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4227*4882a593Smuzhiyun {"bnslr+",   XLOCB(19,BOFP,CBSO,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4228*4882a593Smuzhiyun {"bnulr+",   XLOCB(19,BOFP,CBSO,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4229*4882a593Smuzhiyun {"bnslrl+",  XLOCB(19,BOFP,CBSO,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4230*4882a593Smuzhiyun {"bnulrl+",  XLOCB(19,BOFP,CBSO,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4231*4882a593Smuzhiyun {"bgelr-",   XLOCB(19,BOFM4,CBLT,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4232*4882a593Smuzhiyun {"bnllr-",   XLOCB(19,BOFM4,CBLT,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4233*4882a593Smuzhiyun {"bgelrl-",  XLOCB(19,BOFM4,CBLT,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4234*4882a593Smuzhiyun {"bnllrl-",  XLOCB(19,BOFM4,CBLT,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4235*4882a593Smuzhiyun {"blelr-",   XLOCB(19,BOFM4,CBGT,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4236*4882a593Smuzhiyun {"bnglr-",   XLOCB(19,BOFM4,CBGT,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4237*4882a593Smuzhiyun {"blelrl-",  XLOCB(19,BOFM4,CBGT,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4238*4882a593Smuzhiyun {"bnglrl-",  XLOCB(19,BOFM4,CBGT,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4239*4882a593Smuzhiyun {"bnelr-",   XLOCB(19,BOFM4,CBEQ,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4240*4882a593Smuzhiyun {"bnelrl-",  XLOCB(19,BOFM4,CBEQ,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4241*4882a593Smuzhiyun {"bnslr-",   XLOCB(19,BOFM4,CBSO,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4242*4882a593Smuzhiyun {"bnulr-",   XLOCB(19,BOFM4,CBSO,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4243*4882a593Smuzhiyun {"bnslrl-",  XLOCB(19,BOFM4,CBSO,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4244*4882a593Smuzhiyun {"bnulrl-",  XLOCB(19,BOFM4,CBSO,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4245*4882a593Smuzhiyun {"bgelr+",   XLOCB(19,BOFP4,CBLT,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4246*4882a593Smuzhiyun {"bnllr+",   XLOCB(19,BOFP4,CBLT,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4247*4882a593Smuzhiyun {"bgelrl+",  XLOCB(19,BOFP4,CBLT,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4248*4882a593Smuzhiyun {"bnllrl+",  XLOCB(19,BOFP4,CBLT,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4249*4882a593Smuzhiyun {"blelr+",   XLOCB(19,BOFP4,CBGT,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4250*4882a593Smuzhiyun {"bnglr+",   XLOCB(19,BOFP4,CBGT,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4251*4882a593Smuzhiyun {"blelrl+",  XLOCB(19,BOFP4,CBGT,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4252*4882a593Smuzhiyun {"bnglrl+",  XLOCB(19,BOFP4,CBGT,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4253*4882a593Smuzhiyun {"bnelr+",   XLOCB(19,BOFP4,CBEQ,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4254*4882a593Smuzhiyun {"bnelrl+",  XLOCB(19,BOFP4,CBEQ,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4255*4882a593Smuzhiyun {"bnslr+",   XLOCB(19,BOFP4,CBSO,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4256*4882a593Smuzhiyun {"bnulr+",   XLOCB(19,BOFP4,CBSO,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4257*4882a593Smuzhiyun {"bnslrl+",  XLOCB(19,BOFP4,CBSO,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4258*4882a593Smuzhiyun {"bnulrl+",  XLOCB(19,BOFP4,CBSO,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4259*4882a593Smuzhiyun {"bltlr",    XLOCB(19,BOT,CBLT,16,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4260*4882a593Smuzhiyun {"bltlr-",   XLOCB(19,BOT,CBLT,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4261*4882a593Smuzhiyun {"bltr",     XLOCB(19,BOT,CBLT,16,0),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
4262*4882a593Smuzhiyun {"bltlrl",   XLOCB(19,BOT,CBLT,16,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4263*4882a593Smuzhiyun {"bltlrl-",  XLOCB(19,BOT,CBLT,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4264*4882a593Smuzhiyun {"bltrl",    XLOCB(19,BOT,CBLT,16,1),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
4265*4882a593Smuzhiyun {"bgtlr",    XLOCB(19,BOT,CBGT,16,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4266*4882a593Smuzhiyun {"bgtlr-",   XLOCB(19,BOT,CBGT,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4267*4882a593Smuzhiyun {"bgtr",     XLOCB(19,BOT,CBGT,16,0),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
4268*4882a593Smuzhiyun {"bgtlrl",   XLOCB(19,BOT,CBGT,16,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4269*4882a593Smuzhiyun {"bgtlrl-",  XLOCB(19,BOT,CBGT,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4270*4882a593Smuzhiyun {"bgtrl",    XLOCB(19,BOT,CBGT,16,1),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
4271*4882a593Smuzhiyun {"beqlr",    XLOCB(19,BOT,CBEQ,16,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4272*4882a593Smuzhiyun {"beqlr-",   XLOCB(19,BOT,CBEQ,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4273*4882a593Smuzhiyun {"beqr",     XLOCB(19,BOT,CBEQ,16,0),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
4274*4882a593Smuzhiyun {"beqlrl",   XLOCB(19,BOT,CBEQ,16,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4275*4882a593Smuzhiyun {"beqlrl-",  XLOCB(19,BOT,CBEQ,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4276*4882a593Smuzhiyun {"beqrl",    XLOCB(19,BOT,CBEQ,16,1),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
4277*4882a593Smuzhiyun {"bsolr",    XLOCB(19,BOT,CBSO,16,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4278*4882a593Smuzhiyun {"bsolr-",   XLOCB(19,BOT,CBSO,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4279*4882a593Smuzhiyun {"bsor",     XLOCB(19,BOT,CBSO,16,0),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
4280*4882a593Smuzhiyun {"bunlr",    XLOCB(19,BOT,CBSO,16,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4281*4882a593Smuzhiyun {"bunlr-",   XLOCB(19,BOT,CBSO,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4282*4882a593Smuzhiyun {"bsolrl",   XLOCB(19,BOT,CBSO,16,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4283*4882a593Smuzhiyun {"bsolrl-",  XLOCB(19,BOT,CBSO,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4284*4882a593Smuzhiyun {"bsorl",    XLOCB(19,BOT,CBSO,16,1),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
4285*4882a593Smuzhiyun {"bunlrl",   XLOCB(19,BOT,CBSO,16,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4286*4882a593Smuzhiyun {"bunlrl-",  XLOCB(19,BOT,CBSO,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4287*4882a593Smuzhiyun {"bltlr+",   XLOCB(19,BOTP,CBLT,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4288*4882a593Smuzhiyun {"bltlrl+",  XLOCB(19,BOTP,CBLT,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4289*4882a593Smuzhiyun {"bgtlr+",   XLOCB(19,BOTP,CBGT,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4290*4882a593Smuzhiyun {"bgtlrl+",  XLOCB(19,BOTP,CBGT,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4291*4882a593Smuzhiyun {"beqlr+",   XLOCB(19,BOTP,CBEQ,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4292*4882a593Smuzhiyun {"beqlrl+",  XLOCB(19,BOTP,CBEQ,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4293*4882a593Smuzhiyun {"bsolr+",   XLOCB(19,BOTP,CBSO,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4294*4882a593Smuzhiyun {"bunlr+",   XLOCB(19,BOTP,CBSO,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4295*4882a593Smuzhiyun {"bsolrl+",  XLOCB(19,BOTP,CBSO,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4296*4882a593Smuzhiyun {"bunlrl+",  XLOCB(19,BOTP,CBSO,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4297*4882a593Smuzhiyun {"bltlr-",   XLOCB(19,BOTM4,CBLT,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4298*4882a593Smuzhiyun {"bltlrl-",  XLOCB(19,BOTM4,CBLT,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4299*4882a593Smuzhiyun {"bgtlr-",   XLOCB(19,BOTM4,CBGT,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4300*4882a593Smuzhiyun {"bgtlrl-",  XLOCB(19,BOTM4,CBGT,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4301*4882a593Smuzhiyun {"beqlr-",   XLOCB(19,BOTM4,CBEQ,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4302*4882a593Smuzhiyun {"beqlrl-",  XLOCB(19,BOTM4,CBEQ,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4303*4882a593Smuzhiyun {"bsolr-",   XLOCB(19,BOTM4,CBSO,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4304*4882a593Smuzhiyun {"bunlr-",   XLOCB(19,BOTM4,CBSO,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4305*4882a593Smuzhiyun {"bsolrl-",  XLOCB(19,BOTM4,CBSO,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4306*4882a593Smuzhiyun {"bunlrl-",  XLOCB(19,BOTM4,CBSO,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4307*4882a593Smuzhiyun {"bltlr+",   XLOCB(19,BOTP4,CBLT,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4308*4882a593Smuzhiyun {"bltlrl+",  XLOCB(19,BOTP4,CBLT,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4309*4882a593Smuzhiyun {"bgtlr+",   XLOCB(19,BOTP4,CBGT,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4310*4882a593Smuzhiyun {"bgtlrl+",  XLOCB(19,BOTP4,CBGT,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4311*4882a593Smuzhiyun {"beqlr+",   XLOCB(19,BOTP4,CBEQ,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4312*4882a593Smuzhiyun {"beqlrl+",  XLOCB(19,BOTP4,CBEQ,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4313*4882a593Smuzhiyun {"bsolr+",   XLOCB(19,BOTP4,CBSO,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4314*4882a593Smuzhiyun {"bunlr+",   XLOCB(19,BOTP4,CBSO,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4315*4882a593Smuzhiyun {"bsolrl+",  XLOCB(19,BOTP4,CBSO,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4316*4882a593Smuzhiyun {"bunlrl+",  XLOCB(19,BOTP4,CBSO,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4317*4882a593Smuzhiyun 
4318*4882a593Smuzhiyun {"bdnzflr",  XLO(19,BODNZF,16,0),	XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
4319*4882a593Smuzhiyun {"bdnzflr-", XLO(19,BODNZF,16,0),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4320*4882a593Smuzhiyun {"bdnzflrl", XLO(19,BODNZF,16,1),	XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
4321*4882a593Smuzhiyun {"bdnzflrl-",XLO(19,BODNZF,16,1),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4322*4882a593Smuzhiyun {"bdnzflr+", XLO(19,BODNZFP,16,0),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4323*4882a593Smuzhiyun {"bdnzflrl+",XLO(19,BODNZFP,16,1),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4324*4882a593Smuzhiyun {"bdzflr",   XLO(19,BODZF,16,0),	XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
4325*4882a593Smuzhiyun {"bdzflr-",  XLO(19,BODZF,16,0),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4326*4882a593Smuzhiyun {"bdzflrl",  XLO(19,BODZF,16,1),	XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
4327*4882a593Smuzhiyun {"bdzflrl-", XLO(19,BODZF,16,1),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4328*4882a593Smuzhiyun {"bdzflr+",  XLO(19,BODZFP,16,0),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4329*4882a593Smuzhiyun {"bdzflrl+", XLO(19,BODZFP,16,1),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4330*4882a593Smuzhiyun {"bflr",     XLO(19,BOF,16,0),		XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
4331*4882a593Smuzhiyun {"bflr-",    XLO(19,BOF,16,0),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4332*4882a593Smuzhiyun {"bbfr",     XLO(19,BOF,16,0),		XLBOBB_MASK,   PWRCOM,	 PPCVLE,	{BI}},
4333*4882a593Smuzhiyun {"bflrl",    XLO(19,BOF,16,1),		XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
4334*4882a593Smuzhiyun {"bflrl-",   XLO(19,BOF,16,1),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4335*4882a593Smuzhiyun {"bbfrl",    XLO(19,BOF,16,1),		XLBOBB_MASK,   PWRCOM,	 PPCVLE,	{BI}},
4336*4882a593Smuzhiyun {"bflr+",    XLO(19,BOFP,16,0),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4337*4882a593Smuzhiyun {"bflrl+",   XLO(19,BOFP,16,1),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4338*4882a593Smuzhiyun {"bflr-",    XLO(19,BOFM4,16,0),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
4339*4882a593Smuzhiyun {"bflrl-",   XLO(19,BOFM4,16,1),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
4340*4882a593Smuzhiyun {"bflr+",    XLO(19,BOFP4,16,0),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
4341*4882a593Smuzhiyun {"bflrl+",   XLO(19,BOFP4,16,1),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
4342*4882a593Smuzhiyun {"bdnztlr",  XLO(19,BODNZT,16,0),	XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
4343*4882a593Smuzhiyun {"bdnztlr-", XLO(19,BODNZT,16,0),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4344*4882a593Smuzhiyun {"bdnztlrl", XLO(19,BODNZT,16,1),	XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
4345*4882a593Smuzhiyun {"bdnztlrl-", XLO(19,BODNZT,16,1),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4346*4882a593Smuzhiyun {"bdnztlr+", XLO(19,BODNZTP,16,0),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4347*4882a593Smuzhiyun {"bdnztlrl+", XLO(19,BODNZTP,16,1),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4348*4882a593Smuzhiyun {"bdztlr",   XLO(19,BODZT,16,0),	XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
4349*4882a593Smuzhiyun {"bdztlr-",  XLO(19,BODZT,16,0),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4350*4882a593Smuzhiyun {"bdztlrl",  XLO(19,BODZT,16,1),	XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
4351*4882a593Smuzhiyun {"bdztlrl-", XLO(19,BODZT,16,1),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4352*4882a593Smuzhiyun {"bdztlr+",  XLO(19,BODZTP,16,0),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4353*4882a593Smuzhiyun {"bdztlrl+", XLO(19,BODZTP,16,1),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4354*4882a593Smuzhiyun {"btlr",     XLO(19,BOT,16,0),		XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
4355*4882a593Smuzhiyun {"btlr-",    XLO(19,BOT,16,0),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4356*4882a593Smuzhiyun {"bbtr",     XLO(19,BOT,16,0),		XLBOBB_MASK,   PWRCOM,	 PPCVLE,	{BI}},
4357*4882a593Smuzhiyun {"btlrl",    XLO(19,BOT,16,1),		XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
4358*4882a593Smuzhiyun {"btlrl-",   XLO(19,BOT,16,1),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4359*4882a593Smuzhiyun {"bbtrl",    XLO(19,BOT,16,1),		XLBOBB_MASK,   PWRCOM,	 PPCVLE,	{BI}},
4360*4882a593Smuzhiyun {"btlr+",    XLO(19,BOTP,16,0),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4361*4882a593Smuzhiyun {"btlrl+",   XLO(19,BOTP,16,1),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4362*4882a593Smuzhiyun {"btlr-",    XLO(19,BOTM4,16,0),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
4363*4882a593Smuzhiyun {"btlrl-",   XLO(19,BOTM4,16,1),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
4364*4882a593Smuzhiyun {"btlr+",    XLO(19,BOTP4,16,0),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
4365*4882a593Smuzhiyun {"btlrl+",   XLO(19,BOTP4,16,1),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
4366*4882a593Smuzhiyun 
4367*4882a593Smuzhiyun {"bclr-",    XLYLK(19,16,0,0),		XLYBB_MASK,    PPCCOM,	 PPCVLE,	{BOE, BI}},
4368*4882a593Smuzhiyun {"bclrl-",   XLYLK(19,16,0,1),		XLYBB_MASK,    PPCCOM,	 PPCVLE,	{BOE, BI}},
4369*4882a593Smuzhiyun {"bclr+",    XLYLK(19,16,1,0),		XLYBB_MASK,    PPCCOM,	 PPCVLE,	{BOE, BI}},
4370*4882a593Smuzhiyun {"bclrl+",   XLYLK(19,16,1,1),		XLYBB_MASK,    PPCCOM,	 PPCVLE,	{BOE, BI}},
4371*4882a593Smuzhiyun {"bclr",     XLLK(19,16,0),		XLBH_MASK,     PPCCOM,	 PPCVLE,	{BO, BI, BH}},
4372*4882a593Smuzhiyun {"bcr",	     XLLK(19,16,0),		XLBB_MASK,     PWRCOM,	 PPCVLE,	{BO, BI}},
4373*4882a593Smuzhiyun {"bclrl",    XLLK(19,16,1),		XLBH_MASK,     PPCCOM,	 PPCVLE,	{BO, BI, BH}},
4374*4882a593Smuzhiyun {"bcrl",     XLLK(19,16,1),		XLBB_MASK,     PWRCOM,	 PPCVLE,	{BO, BI}},
4375*4882a593Smuzhiyun 
4376*4882a593Smuzhiyun {"rfid",	XL(19,18),	0xffffffff,  PPC64,	PPCVLE,	{0}},
4377*4882a593Smuzhiyun 
4378*4882a593Smuzhiyun {"crnot",	XL(19,33),	XL_MASK,     PPCCOM,	PPCVLE,		{BT, BA, BBA}},
4379*4882a593Smuzhiyun {"crnor",	XL(19,33),	XL_MASK,     COM,	PPCVLE,		{BT, BA, BB}},
4380*4882a593Smuzhiyun {"rfmci",	X(19,38),    0xffffffff, PPCRFMCI|PPCA2|PPC476, PPCVLE,	{0}},
4381*4882a593Smuzhiyun 
4382*4882a593Smuzhiyun {"rfdi",	XL(19,39),	0xffffffff,  E500MC,	PPCVLE,		{0}},
4383*4882a593Smuzhiyun {"rfi",		XL(19,50),	0xffffffff,  COM,	PPCVLE,		{0}},
4384*4882a593Smuzhiyun {"rfci",	XL(19,51), 0xffffffff, PPC403|BOOKE|PPCE300|PPCA2|PPC476, PPCVLE, {0}},
4385*4882a593Smuzhiyun 
4386*4882a593Smuzhiyun {"rfsvc",	XL(19,82),	0xffffffff,  POWER,	PPCVLE,		{0}},
4387*4882a593Smuzhiyun 
4388*4882a593Smuzhiyun {"rfgi",	XL(19,102),   0xffffffff, E500MC|PPCA2,	PPCVLE,		{0}},
4389*4882a593Smuzhiyun 
4390*4882a593Smuzhiyun {"crandc",	XL(19,129),	XL_MASK,     COM,	PPCVLE,		{BT, BA, BB}},
4391*4882a593Smuzhiyun 
4392*4882a593Smuzhiyun {"rfebb",	XL(19,146),	XLS_MASK,    POWER8,	PPCVLE,		{SXL}},
4393*4882a593Smuzhiyun 
4394*4882a593Smuzhiyun {"isync",	XL(19,150),	0xffffffff,  PPCCOM,	PPCVLE,		{0}},
4395*4882a593Smuzhiyun {"ics",		XL(19,150),	0xffffffff,  PWRCOM,	PPCVLE,		{0}},
4396*4882a593Smuzhiyun 
4397*4882a593Smuzhiyun {"crclr",	XL(19,193),	XL_MASK,     PPCCOM,	PPCVLE,		{BT, BAT, BBA}},
4398*4882a593Smuzhiyun {"crxor",	XL(19,193),	XL_MASK,     COM,	PPCVLE,		{BT, BA, BB}},
4399*4882a593Smuzhiyun 
4400*4882a593Smuzhiyun {"dnh",		X(19,198),	X_MASK,	     E500MC,	PPCVLE,		{DUI, DUIS}},
4401*4882a593Smuzhiyun 
4402*4882a593Smuzhiyun {"crnand",	XL(19,225),	XL_MASK,     COM,	PPCVLE,		{BT, BA, BB}},
4403*4882a593Smuzhiyun 
4404*4882a593Smuzhiyun {"crand",	XL(19,257),	XL_MASK,     COM,	PPCVLE,		{BT, BA, BB}},
4405*4882a593Smuzhiyun 
4406*4882a593Smuzhiyun {"hrfid",	XL(19,274),    0xffffffff, POWER5|CELL, PPC476|PPCVLE,	{0}},
4407*4882a593Smuzhiyun 
4408*4882a593Smuzhiyun {"crset",	XL(19,289),	XL_MASK,     PPCCOM,	PPCVLE,		{BT, BAT, BBA}},
4409*4882a593Smuzhiyun {"creqv",	XL(19,289),	XL_MASK,     COM,	PPCVLE,		{BT, BA, BB}},
4410*4882a593Smuzhiyun 
4411*4882a593Smuzhiyun {"urfid",	XL(19,306),	0xffffffff,  POWER9,	PPCVLE,		{0}},
4412*4882a593Smuzhiyun {"stop",	XL(19,370),	0xffffffff,  POWER9,	PPCVLE,		{0}},
4413*4882a593Smuzhiyun 
4414*4882a593Smuzhiyun {"doze",	XL(19,402),	0xffffffff,  POWER6,	POWER9|PPCVLE,	{0}},
4415*4882a593Smuzhiyun 
4416*4882a593Smuzhiyun {"crorc",	XL(19,417),	XL_MASK,     COM,	PPCVLE,		{BT, BA, BB}},
4417*4882a593Smuzhiyun 
4418*4882a593Smuzhiyun {"nap",		XL(19,434),	0xffffffff,  POWER6,	POWER9|PPCVLE,	{0}},
4419*4882a593Smuzhiyun 
4420*4882a593Smuzhiyun {"crmove",	XL(19,449),	XL_MASK,     PPCCOM,	PPCVLE,		{BT, BA, BBA}},
4421*4882a593Smuzhiyun {"cror",	XL(19,449),	XL_MASK,     COM,	PPCVLE,		{BT, BA, BB}},
4422*4882a593Smuzhiyun 
4423*4882a593Smuzhiyun {"sleep",	XL(19,466),	0xffffffff,  POWER6,	POWER9|PPCVLE,	{0}},
4424*4882a593Smuzhiyun {"rvwinkle",	XL(19,498),	0xffffffff,  POWER6,	POWER9|PPCVLE,	{0}},
4425*4882a593Smuzhiyun 
4426*4882a593Smuzhiyun {"bctr",    XLO(19,BOU,528,0),		XLBOBIBB_MASK, COM,	 PPCVLE,	{0}},
4427*4882a593Smuzhiyun {"bctrl",   XLO(19,BOU,528,1),		XLBOBIBB_MASK, COM,	 PPCVLE,	{0}},
4428*4882a593Smuzhiyun 
4429*4882a593Smuzhiyun {"bgectr",  XLOCB(19,BOF,CBLT,528,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4430*4882a593Smuzhiyun {"bgectr-", XLOCB(19,BOF,CBLT,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4431*4882a593Smuzhiyun {"bnlctr",  XLOCB(19,BOF,CBLT,528,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4432*4882a593Smuzhiyun {"bnlctr-", XLOCB(19,BOF,CBLT,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4433*4882a593Smuzhiyun {"bgectrl", XLOCB(19,BOF,CBLT,528,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4434*4882a593Smuzhiyun {"bgectrl-",XLOCB(19,BOF,CBLT,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4435*4882a593Smuzhiyun {"bnlctrl", XLOCB(19,BOF,CBLT,528,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4436*4882a593Smuzhiyun {"bnlctrl-",XLOCB(19,BOF,CBLT,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4437*4882a593Smuzhiyun {"blectr",  XLOCB(19,BOF,CBGT,528,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4438*4882a593Smuzhiyun {"blectr-", XLOCB(19,BOF,CBGT,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4439*4882a593Smuzhiyun {"bngctr",  XLOCB(19,BOF,CBGT,528,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4440*4882a593Smuzhiyun {"bngctr-", XLOCB(19,BOF,CBGT,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4441*4882a593Smuzhiyun {"blectrl", XLOCB(19,BOF,CBGT,528,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4442*4882a593Smuzhiyun {"blectrl-",XLOCB(19,BOF,CBGT,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4443*4882a593Smuzhiyun {"bngctrl", XLOCB(19,BOF,CBGT,528,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4444*4882a593Smuzhiyun {"bngctrl-",XLOCB(19,BOF,CBGT,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4445*4882a593Smuzhiyun {"bnectr",  XLOCB(19,BOF,CBEQ,528,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4446*4882a593Smuzhiyun {"bnectr-", XLOCB(19,BOF,CBEQ,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4447*4882a593Smuzhiyun {"bnectrl", XLOCB(19,BOF,CBEQ,528,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4448*4882a593Smuzhiyun {"bnectrl-",XLOCB(19,BOF,CBEQ,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4449*4882a593Smuzhiyun {"bnsctr",  XLOCB(19,BOF,CBSO,528,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4450*4882a593Smuzhiyun {"bnsctr-", XLOCB(19,BOF,CBSO,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4451*4882a593Smuzhiyun {"bnuctr",  XLOCB(19,BOF,CBSO,528,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4452*4882a593Smuzhiyun {"bnuctr-", XLOCB(19,BOF,CBSO,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4453*4882a593Smuzhiyun {"bnsctrl", XLOCB(19,BOF,CBSO,528,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4454*4882a593Smuzhiyun {"bnsctrl-",XLOCB(19,BOF,CBSO,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4455*4882a593Smuzhiyun {"bnuctrl", XLOCB(19,BOF,CBSO,528,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4456*4882a593Smuzhiyun {"bnuctrl-",XLOCB(19,BOF,CBSO,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4457*4882a593Smuzhiyun {"bgectr+", XLOCB(19,BOFP,CBLT,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4458*4882a593Smuzhiyun {"bnlctr+", XLOCB(19,BOFP,CBLT,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4459*4882a593Smuzhiyun {"bgectrl+",XLOCB(19,BOFP,CBLT,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4460*4882a593Smuzhiyun {"bnlctrl+",XLOCB(19,BOFP,CBLT,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4461*4882a593Smuzhiyun {"blectr+", XLOCB(19,BOFP,CBGT,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4462*4882a593Smuzhiyun {"bngctr+", XLOCB(19,BOFP,CBGT,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4463*4882a593Smuzhiyun {"blectrl+",XLOCB(19,BOFP,CBGT,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4464*4882a593Smuzhiyun {"bngctrl+",XLOCB(19,BOFP,CBGT,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4465*4882a593Smuzhiyun {"bnectr+", XLOCB(19,BOFP,CBEQ,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4466*4882a593Smuzhiyun {"bnectrl+",XLOCB(19,BOFP,CBEQ,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4467*4882a593Smuzhiyun {"bnsctr+", XLOCB(19,BOFP,CBSO,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4468*4882a593Smuzhiyun {"bnuctr+", XLOCB(19,BOFP,CBSO,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4469*4882a593Smuzhiyun {"bnsctrl+",XLOCB(19,BOFP,CBSO,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4470*4882a593Smuzhiyun {"bnuctrl+",XLOCB(19,BOFP,CBSO,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4471*4882a593Smuzhiyun {"bgectr-", XLOCB(19,BOFM4,CBLT,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4472*4882a593Smuzhiyun {"bnlctr-", XLOCB(19,BOFM4,CBLT,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4473*4882a593Smuzhiyun {"bgectrl-",XLOCB(19,BOFM4,CBLT,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4474*4882a593Smuzhiyun {"bnlctrl-",XLOCB(19,BOFM4,CBLT,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4475*4882a593Smuzhiyun {"blectr-", XLOCB(19,BOFM4,CBGT,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4476*4882a593Smuzhiyun {"bngctr-", XLOCB(19,BOFM4,CBGT,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4477*4882a593Smuzhiyun {"blectrl-",XLOCB(19,BOFM4,CBGT,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4478*4882a593Smuzhiyun {"bngctrl-",XLOCB(19,BOFM4,CBGT,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4479*4882a593Smuzhiyun {"bnectr-", XLOCB(19,BOFM4,CBEQ,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4480*4882a593Smuzhiyun {"bnectrl-",XLOCB(19,BOFM4,CBEQ,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4481*4882a593Smuzhiyun {"bnsctr-", XLOCB(19,BOFM4,CBSO,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4482*4882a593Smuzhiyun {"bnuctr-", XLOCB(19,BOFM4,CBSO,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4483*4882a593Smuzhiyun {"bnsctrl-",XLOCB(19,BOFM4,CBSO,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4484*4882a593Smuzhiyun {"bnuctrl-",XLOCB(19,BOFM4,CBSO,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4485*4882a593Smuzhiyun {"bgectr+", XLOCB(19,BOFP4,CBLT,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4486*4882a593Smuzhiyun {"bnlctr+", XLOCB(19,BOFP4,CBLT,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4487*4882a593Smuzhiyun {"bgectrl+",XLOCB(19,BOFP4,CBLT,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4488*4882a593Smuzhiyun {"bnlctrl+",XLOCB(19,BOFP4,CBLT,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4489*4882a593Smuzhiyun {"blectr+", XLOCB(19,BOFP4,CBGT,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4490*4882a593Smuzhiyun {"bngctr+", XLOCB(19,BOFP4,CBGT,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4491*4882a593Smuzhiyun {"blectrl+",XLOCB(19,BOFP4,CBGT,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4492*4882a593Smuzhiyun {"bngctrl+",XLOCB(19,BOFP4,CBGT,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4493*4882a593Smuzhiyun {"bnectr+", XLOCB(19,BOFP4,CBEQ,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4494*4882a593Smuzhiyun {"bnectrl+",XLOCB(19,BOFP4,CBEQ,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4495*4882a593Smuzhiyun {"bnsctr+", XLOCB(19,BOFP4,CBSO,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4496*4882a593Smuzhiyun {"bnuctr+", XLOCB(19,BOFP4,CBSO,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4497*4882a593Smuzhiyun {"bnsctrl+",XLOCB(19,BOFP4,CBSO,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4498*4882a593Smuzhiyun {"bnuctrl+",XLOCB(19,BOFP4,CBSO,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4499*4882a593Smuzhiyun {"bltctr",  XLOCB(19,BOT,CBLT,528,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4500*4882a593Smuzhiyun {"bltctr-", XLOCB(19,BOT,CBLT,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4501*4882a593Smuzhiyun {"bltctrl", XLOCB(19,BOT,CBLT,528,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4502*4882a593Smuzhiyun {"bltctrl-",XLOCB(19,BOT,CBLT,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4503*4882a593Smuzhiyun {"bgtctr",  XLOCB(19,BOT,CBGT,528,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4504*4882a593Smuzhiyun {"bgtctr-", XLOCB(19,BOT,CBGT,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4505*4882a593Smuzhiyun {"bgtctrl", XLOCB(19,BOT,CBGT,528,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4506*4882a593Smuzhiyun {"bgtctrl-",XLOCB(19,BOT,CBGT,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4507*4882a593Smuzhiyun {"beqctr",  XLOCB(19,BOT,CBEQ,528,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4508*4882a593Smuzhiyun {"beqctr-", XLOCB(19,BOT,CBEQ,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4509*4882a593Smuzhiyun {"beqctrl", XLOCB(19,BOT,CBEQ,528,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4510*4882a593Smuzhiyun {"beqctrl-",XLOCB(19,BOT,CBEQ,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4511*4882a593Smuzhiyun {"bsoctr",  XLOCB(19,BOT,CBSO,528,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4512*4882a593Smuzhiyun {"bsoctr-", XLOCB(19,BOT,CBSO,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4513*4882a593Smuzhiyun {"bunctr",  XLOCB(19,BOT,CBSO,528,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4514*4882a593Smuzhiyun {"bunctr-", XLOCB(19,BOT,CBSO,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4515*4882a593Smuzhiyun {"bsoctrl", XLOCB(19,BOT,CBSO,528,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4516*4882a593Smuzhiyun {"bsoctrl-",XLOCB(19,BOT,CBSO,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4517*4882a593Smuzhiyun {"bunctrl", XLOCB(19,BOT,CBSO,528,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
4518*4882a593Smuzhiyun {"bunctrl-",XLOCB(19,BOT,CBSO,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4519*4882a593Smuzhiyun {"bltctr+", XLOCB(19,BOTP,CBLT,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4520*4882a593Smuzhiyun {"bltctrl+",XLOCB(19,BOTP,CBLT,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4521*4882a593Smuzhiyun {"bgtctr+", XLOCB(19,BOTP,CBGT,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4522*4882a593Smuzhiyun {"bgtctrl+",XLOCB(19,BOTP,CBGT,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4523*4882a593Smuzhiyun {"beqctr+", XLOCB(19,BOTP,CBEQ,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4524*4882a593Smuzhiyun {"beqctrl+",XLOCB(19,BOTP,CBEQ,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4525*4882a593Smuzhiyun {"bsoctr+", XLOCB(19,BOTP,CBSO,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4526*4882a593Smuzhiyun {"bunctr+", XLOCB(19,BOTP,CBSO,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4527*4882a593Smuzhiyun {"bsoctrl+",XLOCB(19,BOTP,CBSO,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4528*4882a593Smuzhiyun {"bunctrl+",XLOCB(19,BOTP,CBSO,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
4529*4882a593Smuzhiyun {"bltctr-", XLOCB(19,BOTM4,CBLT,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4530*4882a593Smuzhiyun {"bltctrl-",XLOCB(19,BOTM4,CBLT,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4531*4882a593Smuzhiyun {"bgtctr-", XLOCB(19,BOTM4,CBGT,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4532*4882a593Smuzhiyun {"bgtctrl-",XLOCB(19,BOTM4,CBGT,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4533*4882a593Smuzhiyun {"beqctr-", XLOCB(19,BOTM4,CBEQ,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4534*4882a593Smuzhiyun {"beqctrl-",XLOCB(19,BOTM4,CBEQ,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4535*4882a593Smuzhiyun {"bsoctr-", XLOCB(19,BOTM4,CBSO,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4536*4882a593Smuzhiyun {"bunctr-", XLOCB(19,BOTM4,CBSO,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4537*4882a593Smuzhiyun {"bsoctrl-",XLOCB(19,BOTM4,CBSO,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4538*4882a593Smuzhiyun {"bunctrl-",XLOCB(19,BOTM4,CBSO,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4539*4882a593Smuzhiyun {"bltctr+", XLOCB(19,BOTP4,CBLT,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4540*4882a593Smuzhiyun {"bltctrl+",XLOCB(19,BOTP4,CBLT,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4541*4882a593Smuzhiyun {"bgtctr+", XLOCB(19,BOTP4,CBGT,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4542*4882a593Smuzhiyun {"bgtctrl+",XLOCB(19,BOTP4,CBGT,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4543*4882a593Smuzhiyun {"beqctr+", XLOCB(19,BOTP4,CBEQ,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4544*4882a593Smuzhiyun {"beqctrl+",XLOCB(19,BOTP4,CBEQ,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4545*4882a593Smuzhiyun {"bsoctr+", XLOCB(19,BOTP4,CBSO,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4546*4882a593Smuzhiyun {"bunctr+", XLOCB(19,BOTP4,CBSO,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4547*4882a593Smuzhiyun {"bsoctrl+",XLOCB(19,BOTP4,CBSO,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4548*4882a593Smuzhiyun {"bunctrl+",XLOCB(19,BOTP4,CBSO,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
4549*4882a593Smuzhiyun 
4550*4882a593Smuzhiyun {"bfctr",   XLO(19,BOF,528,0),		XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
4551*4882a593Smuzhiyun {"bfctr-",  XLO(19,BOF,528,0),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4552*4882a593Smuzhiyun {"bfctrl",  XLO(19,BOF,528,1),		XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
4553*4882a593Smuzhiyun {"bfctrl-", XLO(19,BOF,528,1),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4554*4882a593Smuzhiyun {"bfctr+",  XLO(19,BOFP,528,0),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4555*4882a593Smuzhiyun {"bfctrl+", XLO(19,BOFP,528,1),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4556*4882a593Smuzhiyun {"bfctr-",  XLO(19,BOFM4,528,0),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
4557*4882a593Smuzhiyun {"bfctrl-", XLO(19,BOFM4,528,1),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
4558*4882a593Smuzhiyun {"bfctr+",  XLO(19,BOFP4,528,0),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
4559*4882a593Smuzhiyun {"bfctrl+", XLO(19,BOFP4,528,1),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
4560*4882a593Smuzhiyun {"btctr",   XLO(19,BOT,528,0),		XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
4561*4882a593Smuzhiyun {"btctr-",  XLO(19,BOT,528,0),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4562*4882a593Smuzhiyun {"btctrl",  XLO(19,BOT,528,1),		XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
4563*4882a593Smuzhiyun {"btctrl-", XLO(19,BOT,528,1),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4564*4882a593Smuzhiyun {"btctr+",  XLO(19,BOTP,528,0),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4565*4882a593Smuzhiyun {"btctrl+", XLO(19,BOTP,528,1),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
4566*4882a593Smuzhiyun {"btctr-",  XLO(19,BOTM4,528,0),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
4567*4882a593Smuzhiyun {"btctrl-", XLO(19,BOTM4,528,1),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
4568*4882a593Smuzhiyun {"btctr+",  XLO(19,BOTP4,528,0),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
4569*4882a593Smuzhiyun {"btctrl+", XLO(19,BOTP4,528,1),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
4570*4882a593Smuzhiyun 
4571*4882a593Smuzhiyun {"bcctr-",  XLYLK(19,528,0,0),		XLYBB_MASK,    PPCCOM,	 PPCVLE,	{BOE, BI}},
4572*4882a593Smuzhiyun {"bcctrl-", XLYLK(19,528,0,1),		XLYBB_MASK,    PPCCOM,	 PPCVLE,	{BOE, BI}},
4573*4882a593Smuzhiyun {"bcctr+",  XLYLK(19,528,1,0),		XLYBB_MASK,    PPCCOM,	 PPCVLE,	{BOE, BI}},
4574*4882a593Smuzhiyun {"bcctrl+", XLYLK(19,528,1,1),		XLYBB_MASK,    PPCCOM,	 PPCVLE,	{BOE, BI}},
4575*4882a593Smuzhiyun {"bcctr",   XLLK(19,528,0),		XLBH_MASK,     PPCCOM,	 PPCVLE,	{BO, BI, BH}},
4576*4882a593Smuzhiyun {"bcc",	    XLLK(19,528,0),		XLBB_MASK,     PWRCOM,	 PPCVLE,	{BO, BI}},
4577*4882a593Smuzhiyun {"bcctrl",  XLLK(19,528,1),		XLBH_MASK,     PPCCOM,	 PPCVLE,	{BO, BI, BH}},
4578*4882a593Smuzhiyun {"bccl",    XLLK(19,528,1),		XLBB_MASK,     PWRCOM,	 PPCVLE,	{BO, BI}},
4579*4882a593Smuzhiyun 
4580*4882a593Smuzhiyun {"bctar-",  XLYLK(19,560,0,0),		XLYBB_MASK,    POWER8,	 PPCVLE,	{BOE, BI}},
4581*4882a593Smuzhiyun {"bctarl-", XLYLK(19,560,0,1),		XLYBB_MASK,    POWER8,	 PPCVLE,	{BOE, BI}},
4582*4882a593Smuzhiyun {"bctar+",  XLYLK(19,560,1,0),		XLYBB_MASK,    POWER8,	 PPCVLE,	{BOE, BI}},
4583*4882a593Smuzhiyun {"bctarl+", XLYLK(19,560,1,1),		XLYBB_MASK,    POWER8,	 PPCVLE,	{BOE, BI}},
4584*4882a593Smuzhiyun {"bctar",   XLLK(19,560,0),		XLBH_MASK,     POWER8,	 PPCVLE,	{BO, BI, BH}},
4585*4882a593Smuzhiyun {"bctarl",  XLLK(19,560,1),		XLBH_MASK,     POWER8,	 PPCVLE,	{BO, BI, BH}},
4586*4882a593Smuzhiyun 
4587*4882a593Smuzhiyun {"rlwimi",	M(20,0),	M_MASK,	     PPCCOM,	PPCVLE,		{RA, RS, SH, MBE, ME}},
4588*4882a593Smuzhiyun {"rlimi",	M(20,0),	M_MASK,	     PWRCOM,	PPCVLE,		{RA, RS, SH, MBE, ME}},
4589*4882a593Smuzhiyun 
4590*4882a593Smuzhiyun {"rlwimi.",	M(20,1),	M_MASK,	     PPCCOM,	PPCVLE,		{RA, RS, SH, MBE, ME}},
4591*4882a593Smuzhiyun {"rlimi.",	M(20,1),	M_MASK,	     PWRCOM,	PPCVLE,		{RA, RS, SH, MBE, ME}},
4592*4882a593Smuzhiyun 
4593*4882a593Smuzhiyun {"rotlwi",	MME(21,31,0),	MMBME_MASK,  PPCCOM,	PPCVLE,		{RA, RS, SH}},
4594*4882a593Smuzhiyun {"clrlwi",	MME(21,31,0),	MSHME_MASK,  PPCCOM,	PPCVLE,		{RA, RS, MB}},
4595*4882a593Smuzhiyun {"rlwinm",	M(21,0),	M_MASK,	     PPCCOM,	PPCVLE,		{RA, RS, SH, MBE, ME}},
4596*4882a593Smuzhiyun {"rlinm",	M(21,0),	M_MASK,	     PWRCOM,	PPCVLE,		{RA, RS, SH, MBE, ME}},
4597*4882a593Smuzhiyun {"rotlwi.",	MME(21,31,1),	MMBME_MASK,  PPCCOM,	PPCVLE,		{RA, RS, SH}},
4598*4882a593Smuzhiyun {"clrlwi.",	MME(21,31,1),	MSHME_MASK,  PPCCOM,	PPCVLE,		{RA, RS, MB}},
4599*4882a593Smuzhiyun {"rlwinm.",	M(21,1),	M_MASK,	     PPCCOM,	PPCVLE,		{RA, RS, SH, MBE, ME}},
4600*4882a593Smuzhiyun {"rlinm.",	M(21,1),	M_MASK,	     PWRCOM,	PPCVLE,		{RA, RS, SH, MBE, ME}},
4601*4882a593Smuzhiyun 
4602*4882a593Smuzhiyun {"rlmi",	M(22,0),	M_MASK,	     M601,	PPCVLE,		{RA, RS, RB, MBE, ME}},
4603*4882a593Smuzhiyun {"rlmi.",	M(22,1),	M_MASK,	     M601,	PPCVLE,		{RA, RS, RB, MBE, ME}},
4604*4882a593Smuzhiyun 
4605*4882a593Smuzhiyun {"rotlw",	MME(23,31,0),	MMBME_MASK,  PPCCOM,	PPCVLE,		{RA, RS, RB}},
4606*4882a593Smuzhiyun {"rlwnm",	M(23,0),	M_MASK,	     PPCCOM,	PPCVLE,		{RA, RS, RB, MBE, ME}},
4607*4882a593Smuzhiyun {"rlnm",	M(23,0),	M_MASK,	     PWRCOM,	PPCVLE,		{RA, RS, RB, MBE, ME}},
4608*4882a593Smuzhiyun {"rotlw.",	MME(23,31,1),	MMBME_MASK,  PPCCOM,	PPCVLE,		{RA, RS, RB}},
4609*4882a593Smuzhiyun {"rlwnm.",	M(23,1),	M_MASK,	     PPCCOM,	PPCVLE,		{RA, RS, RB, MBE, ME}},
4610*4882a593Smuzhiyun {"rlnm.",	M(23,1),	M_MASK,	     PWRCOM,	PPCVLE,		{RA, RS, RB, MBE, ME}},
4611*4882a593Smuzhiyun 
4612*4882a593Smuzhiyun {"nop",		OP(24),		0xffffffff,  PPCCOM,	PPCVLE,		{0}},
4613*4882a593Smuzhiyun {"ori",		OP(24),		OP_MASK,     PPCCOM,	PPCVLE,		{RA, RS, UI}},
4614*4882a593Smuzhiyun {"oril",	OP(24),		OP_MASK,     PWRCOM,	PPCVLE,		{RA, RS, UI}},
4615*4882a593Smuzhiyun 
4616*4882a593Smuzhiyun {"oris",	OP(25),		OP_MASK,     PPCCOM,	PPCVLE,		{RA, RS, UI}},
4617*4882a593Smuzhiyun {"oriu",	OP(25),		OP_MASK,     PWRCOM,	PPCVLE,		{RA, RS, UI}},
4618*4882a593Smuzhiyun 
4619*4882a593Smuzhiyun {"xnop",	OP(26),		0xffffffff,  PPCCOM,	PPCVLE,		{0}},
4620*4882a593Smuzhiyun {"xori",	OP(26),		OP_MASK,     PPCCOM,	PPCVLE,		{RA, RS, UI}},
4621*4882a593Smuzhiyun {"xoril",	OP(26),		OP_MASK,     PWRCOM,	PPCVLE,		{RA, RS, UI}},
4622*4882a593Smuzhiyun 
4623*4882a593Smuzhiyun {"xoris",	OP(27),		OP_MASK,     PPCCOM,	PPCVLE,		{RA, RS, UI}},
4624*4882a593Smuzhiyun {"xoriu",	OP(27),		OP_MASK,     PWRCOM,	PPCVLE,		{RA, RS, UI}},
4625*4882a593Smuzhiyun 
4626*4882a593Smuzhiyun {"andi.",	OP(28),		OP_MASK,     PPCCOM,	PPCVLE,		{RA, RS, UI}},
4627*4882a593Smuzhiyun {"andil.",	OP(28),		OP_MASK,     PWRCOM,	PPCVLE,		{RA, RS, UI}},
4628*4882a593Smuzhiyun 
4629*4882a593Smuzhiyun {"andis.",	OP(29),		OP_MASK,     PPCCOM,	PPCVLE,		{RA, RS, UI}},
4630*4882a593Smuzhiyun {"andiu.",	OP(29),		OP_MASK,     PWRCOM,	PPCVLE,		{RA, RS, UI}},
4631*4882a593Smuzhiyun 
4632*4882a593Smuzhiyun {"rotldi",	MD(30,0,0),	MDMB_MASK,   PPC64,	PPCVLE,		{RA, RS, SH6}},
4633*4882a593Smuzhiyun {"clrldi",	MD(30,0,0),	MDSH_MASK,   PPC64,	PPCVLE,		{RA, RS, MB6}},
4634*4882a593Smuzhiyun {"rldicl",	MD(30,0,0),	MD_MASK,     PPC64,	PPCVLE,		{RA, RS, SH6, MB6}},
4635*4882a593Smuzhiyun {"rotldi.",	MD(30,0,1),	MDMB_MASK,   PPC64,	PPCVLE,		{RA, RS, SH6}},
4636*4882a593Smuzhiyun {"clrldi.",	MD(30,0,1),	MDSH_MASK,   PPC64,	PPCVLE,		{RA, RS, MB6}},
4637*4882a593Smuzhiyun {"rldicl.",	MD(30,0,1),	MD_MASK,     PPC64,	PPCVLE,		{RA, RS, SH6, MB6}},
4638*4882a593Smuzhiyun 
4639*4882a593Smuzhiyun {"rldicr",	MD(30,1,0),	MD_MASK,     PPC64,	PPCVLE,		{RA, RS, SH6, ME6}},
4640*4882a593Smuzhiyun {"rldicr.",	MD(30,1,1),	MD_MASK,     PPC64,	PPCVLE,		{RA, RS, SH6, ME6}},
4641*4882a593Smuzhiyun 
4642*4882a593Smuzhiyun {"rldic",	MD(30,2,0),	MD_MASK,     PPC64,	PPCVLE,		{RA, RS, SH6, MB6}},
4643*4882a593Smuzhiyun {"rldic.",	MD(30,2,1),	MD_MASK,     PPC64,	PPCVLE,		{RA, RS, SH6, MB6}},
4644*4882a593Smuzhiyun 
4645*4882a593Smuzhiyun {"rldimi",	MD(30,3,0),	MD_MASK,     PPC64,	PPCVLE,		{RA, RS, SH6, MB6}},
4646*4882a593Smuzhiyun {"rldimi.",	MD(30,3,1),	MD_MASK,     PPC64,	PPCVLE,		{RA, RS, SH6, MB6}},
4647*4882a593Smuzhiyun 
4648*4882a593Smuzhiyun {"rotld",	MDS(30,8,0),	MDSMB_MASK,  PPC64,	PPCVLE,		{RA, RS, RB}},
4649*4882a593Smuzhiyun {"rldcl",	MDS(30,8,0),	MDS_MASK,    PPC64,	PPCVLE,		{RA, RS, RB, MB6}},
4650*4882a593Smuzhiyun {"rotld.",	MDS(30,8,1),	MDSMB_MASK,  PPC64,	PPCVLE,		{RA, RS, RB}},
4651*4882a593Smuzhiyun {"rldcl.",	MDS(30,8,1),	MDS_MASK,    PPC64,	PPCVLE,		{RA, RS, RB, MB6}},
4652*4882a593Smuzhiyun 
4653*4882a593Smuzhiyun {"rldcr",	MDS(30,9,0),	MDS_MASK,    PPC64,	PPCVLE,		{RA, RS, RB, ME6}},
4654*4882a593Smuzhiyun {"rldcr.",	MDS(30,9,1),	MDS_MASK,    PPC64,	PPCVLE,		{RA, RS, RB, ME6}},
4655*4882a593Smuzhiyun 
4656*4882a593Smuzhiyun {"cmpw",	XOPL(31,0,0),	XCMPL_MASK,  PPCCOM,	0,		{OBF, RA, RB}},
4657*4882a593Smuzhiyun {"cmpd",	XOPL(31,0,1),	XCMPL_MASK,  PPC64,	0,		{OBF, RA, RB}},
4658*4882a593Smuzhiyun {"cmp",		X(31,0),	XCMP_MASK,   PPC,	0,		{BF, L32OPT, RA, RB}},
4659*4882a593Smuzhiyun {"cmp",		X(31,0),	XCMPL_MASK,  PWRCOM,	PPC,		{BF, RA, RB}},
4660*4882a593Smuzhiyun 
4661*4882a593Smuzhiyun {"twlgt",	XTO(31,4,TOLGT), XTO_MASK,   PPCCOM,	0,		{RA, RB}},
4662*4882a593Smuzhiyun {"tlgt",	XTO(31,4,TOLGT), XTO_MASK,   PWRCOM,	0,		{RA, RB}},
4663*4882a593Smuzhiyun {"twllt",	XTO(31,4,TOLLT), XTO_MASK,   PPCCOM,	0,		{RA, RB}},
4664*4882a593Smuzhiyun {"tllt",	XTO(31,4,TOLLT), XTO_MASK,   PWRCOM,	0,		{RA, RB}},
4665*4882a593Smuzhiyun {"tweq",	XTO(31,4,TOEQ),	 XTO_MASK,   PPCCOM,	0,		{RA, RB}},
4666*4882a593Smuzhiyun {"teq",		XTO(31,4,TOEQ),	 XTO_MASK,   PWRCOM,	0,		{RA, RB}},
4667*4882a593Smuzhiyun {"twlge",	XTO(31,4,TOLGE), XTO_MASK,   PPCCOM,	0,		{RA, RB}},
4668*4882a593Smuzhiyun {"tlge",	XTO(31,4,TOLGE), XTO_MASK,   PWRCOM,	0,		{RA, RB}},
4669*4882a593Smuzhiyun {"twlnl",	XTO(31,4,TOLNL), XTO_MASK,   PPCCOM,	0,		{RA, RB}},
4670*4882a593Smuzhiyun {"tlnl",	XTO(31,4,TOLNL), XTO_MASK,   PWRCOM,	0,		{RA, RB}},
4671*4882a593Smuzhiyun {"twlle",	XTO(31,4,TOLLE), XTO_MASK,   PPCCOM,	0,		{RA, RB}},
4672*4882a593Smuzhiyun {"tlle",	XTO(31,4,TOLLE), XTO_MASK,   PWRCOM,	0,		{RA, RB}},
4673*4882a593Smuzhiyun {"twlng",	XTO(31,4,TOLNG), XTO_MASK,   PPCCOM,	0,		{RA, RB}},
4674*4882a593Smuzhiyun {"tlng",	XTO(31,4,TOLNG), XTO_MASK,   PWRCOM,	0,		{RA, RB}},
4675*4882a593Smuzhiyun {"twgt",	XTO(31,4,TOGT),	 XTO_MASK,   PPCCOM,	0,		{RA, RB}},
4676*4882a593Smuzhiyun {"tgt",		XTO(31,4,TOGT),	 XTO_MASK,   PWRCOM,	0,		{RA, RB}},
4677*4882a593Smuzhiyun {"twge",	XTO(31,4,TOGE),	 XTO_MASK,   PPCCOM,	0,		{RA, RB}},
4678*4882a593Smuzhiyun {"tge",		XTO(31,4,TOGE),	 XTO_MASK,   PWRCOM,	0,		{RA, RB}},
4679*4882a593Smuzhiyun {"twnl",	XTO(31,4,TONL),	 XTO_MASK,   PPCCOM,	0,		{RA, RB}},
4680*4882a593Smuzhiyun {"tnl",		XTO(31,4,TONL),	 XTO_MASK,   PWRCOM,	0,		{RA, RB}},
4681*4882a593Smuzhiyun {"twlt",	XTO(31,4,TOLT),	 XTO_MASK,   PPCCOM,	0,		{RA, RB}},
4682*4882a593Smuzhiyun {"tlt",		XTO(31,4,TOLT),	 XTO_MASK,   PWRCOM,	0,		{RA, RB}},
4683*4882a593Smuzhiyun {"twle",	XTO(31,4,TOLE),	 XTO_MASK,   PPCCOM,	0,		{RA, RB}},
4684*4882a593Smuzhiyun {"tle",		XTO(31,4,TOLE),	 XTO_MASK,   PWRCOM,	0,		{RA, RB}},
4685*4882a593Smuzhiyun {"twng",	XTO(31,4,TONG),	 XTO_MASK,   PPCCOM,	0,		{RA, RB}},
4686*4882a593Smuzhiyun {"tng",		XTO(31,4,TONG),	 XTO_MASK,   PWRCOM,	0,		{RA, RB}},
4687*4882a593Smuzhiyun {"twne",	XTO(31,4,TONE),	 XTO_MASK,   PPCCOM,	0,		{RA, RB}},
4688*4882a593Smuzhiyun {"tne",		XTO(31,4,TONE),	 XTO_MASK,   PWRCOM,	0,		{RA, RB}},
4689*4882a593Smuzhiyun {"trap",	XTO(31,4,TOU),	 0xffffffff, PPCCOM,	0,		{0}},
4690*4882a593Smuzhiyun {"twu",		XTO(31,4,TOU),	 XTO_MASK,   PPCCOM,	0,		{RA, RB}},
4691*4882a593Smuzhiyun {"tu",		XTO(31,4,TOU),	 XTO_MASK,   PWRCOM,	0,		{RA, RB}},
4692*4882a593Smuzhiyun {"tw",		X(31,4),	 X_MASK,     PPCCOM,	0,		{TO, RA, RB}},
4693*4882a593Smuzhiyun {"t",		X(31,4),	 X_MASK,     PWRCOM,	0,		{TO, RA, RB}},
4694*4882a593Smuzhiyun 
4695*4882a593Smuzhiyun {"lvsl",	X(31,6),	X_MASK,	     PPCVEC,	0,		{VD, RA0, RB}},
4696*4882a593Smuzhiyun {"lvebx",	X(31,7),	X_MASK,	     PPCVEC,	0,		{VD, RA0, RB}},
4697*4882a593Smuzhiyun {"lbfcmx",	APU(31,7,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
4698*4882a593Smuzhiyun 
4699*4882a593Smuzhiyun {"subfc",	XO(31,8,0,0),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
4700*4882a593Smuzhiyun {"sf",		XO(31,8,0,0),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
4701*4882a593Smuzhiyun {"subc",	XO(31,8,0,0),	XO_MASK,     PPCCOM,	0,		{RT, RB, RA}},
4702*4882a593Smuzhiyun {"subfc.",	XO(31,8,0,1),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
4703*4882a593Smuzhiyun {"sf.",		XO(31,8,0,1),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
4704*4882a593Smuzhiyun {"subc.",	XO(31,8,0,1),	XO_MASK,     PPCCOM,	0,		{RT, RB, RA}},
4705*4882a593Smuzhiyun 
4706*4882a593Smuzhiyun {"mulhdu",	XO(31,9,0,0),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
4707*4882a593Smuzhiyun {"mulhdu.",	XO(31,9,0,1),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
4708*4882a593Smuzhiyun 
4709*4882a593Smuzhiyun {"addc",	XO(31,10,0,0),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
4710*4882a593Smuzhiyun {"a",		XO(31,10,0,0),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
4711*4882a593Smuzhiyun {"addc.",	XO(31,10,0,1),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
4712*4882a593Smuzhiyun {"a.",		XO(31,10,0,1),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
4713*4882a593Smuzhiyun 
4714*4882a593Smuzhiyun {"mulhwu",	XO(31,11,0,0),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
4715*4882a593Smuzhiyun {"mulhwu.",	XO(31,11,0,1),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
4716*4882a593Smuzhiyun 
4717*4882a593Smuzhiyun {"lxsiwzx",	X(31,12),	XX1_MASK,    PPCVSX2,	0,		{XT6, RA0, RB}},
4718*4882a593Smuzhiyun 
4719*4882a593Smuzhiyun {"isellt",	X(31,15),	X_MASK,	     PPCISEL,	0,		{RT, RA0, RB}},
4720*4882a593Smuzhiyun 
4721*4882a593Smuzhiyun {"tlbilxlpid",	XTO(31,18,0),	XTO_MASK, E500MC|PPCA2,	0,		{0}},
4722*4882a593Smuzhiyun {"tlbilxpid",	XTO(31,18,1),	XTO_MASK, E500MC|PPCA2,	0,		{0}},
4723*4882a593Smuzhiyun {"tlbilxva",	XTO(31,18,3),	XTO_MASK, E500MC|PPCA2,	0,		{RA0, RB}},
4724*4882a593Smuzhiyun {"tlbilx",	X(31,18),	X_MASK,	  E500MC|PPCA2,	0,		{T, RA0, RB}},
4725*4882a593Smuzhiyun 
4726*4882a593Smuzhiyun {"mfcr",	XFXM(31,19,0,0), XFXFXM_MASK, COM,	0,		{RT, FXM4}},
4727*4882a593Smuzhiyun {"mfocrf",	XFXM(31,19,0,1), XFXFXM_MASK, COM,	0,		{RT, FXM}},
4728*4882a593Smuzhiyun 
4729*4882a593Smuzhiyun {"lwarx",	X(31,20),	XEH_MASK,    PPC,	0,		{RT, RA0, RB, EH}},
4730*4882a593Smuzhiyun 
4731*4882a593Smuzhiyun {"ldx",		X(31,21),	X_MASK,	     PPC64,	0,		{RT, RA0, RB}},
4732*4882a593Smuzhiyun 
4733*4882a593Smuzhiyun {"icbt",	X(31,22),  X_MASK, BOOKE|PPCE300|PPCA2|PPC476, 0,	{CT, RA0, RB}},
4734*4882a593Smuzhiyun 
4735*4882a593Smuzhiyun {"lwzx",	X(31,23),	X_MASK,	     PPCCOM,	0,		{RT, RA0, RB}},
4736*4882a593Smuzhiyun {"lx",		X(31,23),	X_MASK,	     PWRCOM,	0,		{RT, RA, RB}},
4737*4882a593Smuzhiyun 
4738*4882a593Smuzhiyun {"slw",		XRC(31,24,0),	X_MASK,	     PPCCOM,	0,		{RA, RS, RB}},
4739*4882a593Smuzhiyun {"sl",		XRC(31,24,0),	X_MASK,	     PWRCOM,	0,		{RA, RS, RB}},
4740*4882a593Smuzhiyun {"slw.",	XRC(31,24,1),	X_MASK,	     PPCCOM,	0,		{RA, RS, RB}},
4741*4882a593Smuzhiyun {"sl.",		XRC(31,24,1),	X_MASK,	     PWRCOM,	0,		{RA, RS, RB}},
4742*4882a593Smuzhiyun 
4743*4882a593Smuzhiyun {"cntlzw",	XRC(31,26,0),	XRB_MASK,    PPCCOM,	0,		{RA, RS}},
4744*4882a593Smuzhiyun {"cntlz",	XRC(31,26,0),	XRB_MASK,    PWRCOM,	0,		{RA, RS}},
4745*4882a593Smuzhiyun {"cntlzw.",	XRC(31,26,1),	XRB_MASK,    PPCCOM,	0,		{RA, RS}},
4746*4882a593Smuzhiyun {"cntlz.",	XRC(31,26,1),	XRB_MASK,    PWRCOM,	0,		{RA, RS}},
4747*4882a593Smuzhiyun 
4748*4882a593Smuzhiyun {"sld",		XRC(31,27,0),	X_MASK,	     PPC64,	0,		{RA, RS, RB}},
4749*4882a593Smuzhiyun {"sld.",	XRC(31,27,1),	X_MASK,	     PPC64,	0,		{RA, RS, RB}},
4750*4882a593Smuzhiyun 
4751*4882a593Smuzhiyun {"and",		XRC(31,28,0),	X_MASK,	     COM,	0,		{RA, RS, RB}},
4752*4882a593Smuzhiyun {"and.",	XRC(31,28,1),	X_MASK,	     COM,	0,		{RA, RS, RB}},
4753*4882a593Smuzhiyun 
4754*4882a593Smuzhiyun {"maskg",	XRC(31,29,0),	X_MASK,	     M601,	PPCA2,		{RA, RS, RB}},
4755*4882a593Smuzhiyun {"maskg.",	XRC(31,29,1),	X_MASK,	     M601,	PPCA2,		{RA, RS, RB}},
4756*4882a593Smuzhiyun 
4757*4882a593Smuzhiyun {"ldepx",	X(31,29),	X_MASK,	  E500MC|PPCA2, 0,		{RT, RA0, RB}},
4758*4882a593Smuzhiyun 
4759*4882a593Smuzhiyun {"waitasec",	X(31,30),      XRTRARB_MASK, POWER8,	POWER9,		{0}},
4760*4882a593Smuzhiyun {"wait",	X(31,30),	XWC_MASK,    POWER9,	0,		{WC}},
4761*4882a593Smuzhiyun 
4762*4882a593Smuzhiyun {"lwepx",	X(31,31),	X_MASK,	  E500MC|PPCA2, 0,		{RT, RA0, RB}},
4763*4882a593Smuzhiyun 
4764*4882a593Smuzhiyun {"cmplw",	XOPL(31,32,0),	XCMPL_MASK,  PPCCOM,	0,		{OBF, RA, RB}},
4765*4882a593Smuzhiyun {"cmpld",	XOPL(31,32,1),	XCMPL_MASK,  PPC64,	0,		{OBF, RA, RB}},
4766*4882a593Smuzhiyun {"cmpl",	X(31,32),	XCMP_MASK,   PPC,	0,		{BF, L32OPT, RA, RB}},
4767*4882a593Smuzhiyun {"cmpl",	X(31,32),	XCMPL_MASK,  PWRCOM,	PPC,		{BF, RA, RB}},
4768*4882a593Smuzhiyun 
4769*4882a593Smuzhiyun {"lvsr",	X(31,38),	X_MASK,	     PPCVEC,	0,		{VD, RA0, RB}},
4770*4882a593Smuzhiyun {"lvehx",	X(31,39),	X_MASK,	     PPCVEC,	0,		{VD, RA0, RB}},
4771*4882a593Smuzhiyun {"lhfcmx",	APU(31,39,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
4772*4882a593Smuzhiyun 
4773*4882a593Smuzhiyun {"mviwsplt",	X(31,46),	X_MASK,	     PPCVEC2,	0,		{VD, RA, RB}},
4774*4882a593Smuzhiyun 
4775*4882a593Smuzhiyun {"iselgt",	X(31,47),	X_MASK,	     PPCISEL,	0,		{RT, RA0, RB}},
4776*4882a593Smuzhiyun 
4777*4882a593Smuzhiyun {"lvewx",	X(31,71),	X_MASK,	     PPCVEC,	0,		{VD, RA0, RB}},
4778*4882a593Smuzhiyun 
4779*4882a593Smuzhiyun {"addg6s",	XO(31,74,0,0),	XO_MASK,     POWER6,	0,		{RT, RA, RB}},
4780*4882a593Smuzhiyun 
4781*4882a593Smuzhiyun {"lxsiwax",	X(31,76),	XX1_MASK,    PPCVSX2,	0,		{XT6, RA0, RB}},
4782*4882a593Smuzhiyun 
4783*4882a593Smuzhiyun {"iseleq",	X(31,79),	X_MASK,	     PPCISEL,	0,		{RT, RA0, RB}},
4784*4882a593Smuzhiyun 
4785*4882a593Smuzhiyun {"isel",	XISEL(31,15), XISEL_MASK, PPCISEL|TITAN, 0,		{RT, RA0, RB, CRB}},
4786*4882a593Smuzhiyun 
4787*4882a593Smuzhiyun {"subf",	XO(31,40,0,0),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
4788*4882a593Smuzhiyun {"sub",		XO(31,40,0,0),	XO_MASK,     PPC,	0,		{RT, RB, RA}},
4789*4882a593Smuzhiyun {"subf.",	XO(31,40,0,1),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
4790*4882a593Smuzhiyun {"sub.",	XO(31,40,0,1),	XO_MASK,     PPC,	0,		{RT, RB, RA}},
4791*4882a593Smuzhiyun 
4792*4882a593Smuzhiyun {"mfvsrd",	X(31,51),	XX1RB_MASK,   PPCVSX2,	0,		{RA, XS6}},
4793*4882a593Smuzhiyun {"mffprd",	X(31,51),	XX1RB_MASK|1, PPCVSX2,	0,		{RA, FRS}},
4794*4882a593Smuzhiyun {"mfvrd",	X(31,51)|1,	XX1RB_MASK|1, PPCVSX2,	0,		{RA, VS}},
4795*4882a593Smuzhiyun {"eratilx",	X(31,51),	X_MASK,	     PPCA2,	0,		{ERAT_T, RA, RB}},
4796*4882a593Smuzhiyun 
4797*4882a593Smuzhiyun {"lbarx",	X(31,52),	XEH_MASK, POWER8|E6500, 0,		{RT, RA0, RB, EH}},
4798*4882a593Smuzhiyun 
4799*4882a593Smuzhiyun {"ldux",	X(31,53),	X_MASK,	     PPC64,	0,		{RT, RAL, RB}},
4800*4882a593Smuzhiyun 
4801*4882a593Smuzhiyun {"dcbst",	X(31,54),	XRT_MASK,    PPC,	0,		{RA0, RB}},
4802*4882a593Smuzhiyun 
4803*4882a593Smuzhiyun {"lwzux",	X(31,55),	X_MASK,	     PPCCOM,	0,		{RT, RAL, RB}},
4804*4882a593Smuzhiyun {"lux",		X(31,55),	X_MASK,	     PWRCOM,	0,		{RT, RA, RB}},
4805*4882a593Smuzhiyun 
4806*4882a593Smuzhiyun {"cntlzd",	XRC(31,58,0),	XRB_MASK,    PPC64,	0,		{RA, RS}},
4807*4882a593Smuzhiyun {"cntlzd.",	XRC(31,58,1),	XRB_MASK,    PPC64,	0,		{RA, RS}},
4808*4882a593Smuzhiyun 
4809*4882a593Smuzhiyun {"andc",	XRC(31,60,0),	X_MASK,	     COM,	0,		{RA, RS, RB}},
4810*4882a593Smuzhiyun {"andc.",	XRC(31,60,1),	X_MASK,	     COM,	0,		{RA, RS, RB}},
4811*4882a593Smuzhiyun 
4812*4882a593Smuzhiyun {"waitrsv",	X(31,62)|(1<<21), 0xffffffff, E500MC|PPCA2, 0,		{0}},
4813*4882a593Smuzhiyun {"waitimpl",	X(31,62)|(2<<21), 0xffffffff, E500MC|PPCA2, 0,		{0}},
4814*4882a593Smuzhiyun {"wait",	X(31,62),	XWC_MASK,    E500MC|PPCA2, 0,		{WC}},
4815*4882a593Smuzhiyun 
4816*4882a593Smuzhiyun {"dcbstep",	XRT(31,63,0),	XRT_MASK,    E500MC|PPCA2, 0,		{RA0, RB}},
4817*4882a593Smuzhiyun 
4818*4882a593Smuzhiyun {"tdlgt",	XTO(31,68,TOLGT), XTO_MASK,  PPC64,	0,		{RA, RB}},
4819*4882a593Smuzhiyun {"tdllt",	XTO(31,68,TOLLT), XTO_MASK,  PPC64,	0,		{RA, RB}},
4820*4882a593Smuzhiyun {"tdeq",	XTO(31,68,TOEQ),  XTO_MASK,  PPC64,	0,		{RA, RB}},
4821*4882a593Smuzhiyun {"tdlge",	XTO(31,68,TOLGE), XTO_MASK,  PPC64,	0,		{RA, RB}},
4822*4882a593Smuzhiyun {"tdlnl",	XTO(31,68,TOLNL), XTO_MASK,  PPC64,	0,		{RA, RB}},
4823*4882a593Smuzhiyun {"tdlle",	XTO(31,68,TOLLE), XTO_MASK,  PPC64,	0,		{RA, RB}},
4824*4882a593Smuzhiyun {"tdlng",	XTO(31,68,TOLNG), XTO_MASK,  PPC64,	0,		{RA, RB}},
4825*4882a593Smuzhiyun {"tdgt",	XTO(31,68,TOGT),  XTO_MASK,  PPC64,	0,		{RA, RB}},
4826*4882a593Smuzhiyun {"tdge",	XTO(31,68,TOGE),  XTO_MASK,  PPC64,	0,		{RA, RB}},
4827*4882a593Smuzhiyun {"tdnl",	XTO(31,68,TONL),  XTO_MASK,  PPC64,	0,		{RA, RB}},
4828*4882a593Smuzhiyun {"tdlt",	XTO(31,68,TOLT),  XTO_MASK,  PPC64,	0,		{RA, RB}},
4829*4882a593Smuzhiyun {"tdle",	XTO(31,68,TOLE),  XTO_MASK,  PPC64,	0,		{RA, RB}},
4830*4882a593Smuzhiyun {"tdng",	XTO(31,68,TONG),  XTO_MASK,  PPC64,	0,		{RA, RB}},
4831*4882a593Smuzhiyun {"tdne",	XTO(31,68,TONE),  XTO_MASK,  PPC64,	0,		{RA, RB}},
4832*4882a593Smuzhiyun {"tdu",		XTO(31,68,TOU),	  XTO_MASK,  PPC64,	0,		{RA, RB}},
4833*4882a593Smuzhiyun {"td",		X(31,68),	X_MASK,	     PPC64,	0,		{TO, RA, RB}},
4834*4882a593Smuzhiyun 
4835*4882a593Smuzhiyun {"lwfcmx",	APU(31,71,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
4836*4882a593Smuzhiyun {"mulhd",	XO(31,73,0,0),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
4837*4882a593Smuzhiyun {"mulhd.",	XO(31,73,0,1),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
4838*4882a593Smuzhiyun 
4839*4882a593Smuzhiyun {"mulhw",	XO(31,75,0,0),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
4840*4882a593Smuzhiyun {"mulhw.",	XO(31,75,0,1),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
4841*4882a593Smuzhiyun 
4842*4882a593Smuzhiyun {"dlmzb",	XRC(31,78,0), X_MASK, PPC403|PPC440|TITAN, 0,		{RA, RS, RB}},
4843*4882a593Smuzhiyun {"dlmzb.",	XRC(31,78,1), X_MASK, PPC403|PPC440|TITAN, 0,		{RA, RS, RB}},
4844*4882a593Smuzhiyun 
4845*4882a593Smuzhiyun {"mtsrd",	X(31,82),  XRB_MASK|(1<<20), PPC64,	0,		{SR, RS}},
4846*4882a593Smuzhiyun 
4847*4882a593Smuzhiyun {"mfmsr",	X(31,83),	XRARB_MASK,  COM,	0,		{RT}},
4848*4882a593Smuzhiyun 
4849*4882a593Smuzhiyun {"ldarx",	X(31,84),	XEH_MASK,    PPC64,	0,		{RT, RA0, RB, EH}},
4850*4882a593Smuzhiyun 
4851*4882a593Smuzhiyun {"dcbfl",	XOPL(31,86,1),	XRT_MASK,    POWER5,	PPC476,		{RA0, RB}},
4852*4882a593Smuzhiyun {"dcbf",	X(31,86),	XLRT_MASK,   PPC,	0,		{RA0, RB, L2OPT}},
4853*4882a593Smuzhiyun 
4854*4882a593Smuzhiyun {"lbzx",	X(31,87),	X_MASK,	     COM,	0,		{RT, RA0, RB}},
4855*4882a593Smuzhiyun 
4856*4882a593Smuzhiyun {"lbepx",	X(31,95),	X_MASK,	  E500MC|PPCA2, 0,		{RT, RA0, RB}},
4857*4882a593Smuzhiyun 
4858*4882a593Smuzhiyun {"dni",		XRC(31,97,1),	XRB_MASK,    E6500,	0,		{DUI, DCTL}},
4859*4882a593Smuzhiyun 
4860*4882a593Smuzhiyun {"lvx",		X(31,103),	X_MASK,	     PPCVEC,	0,		{VD, RA0, RB}},
4861*4882a593Smuzhiyun {"lqfcmx",	APU(31,103,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
4862*4882a593Smuzhiyun 
4863*4882a593Smuzhiyun {"neg",		XO(31,104,0,0),	XORB_MASK,   COM,	0,		{RT, RA}},
4864*4882a593Smuzhiyun {"neg.",	XO(31,104,0,1),	XORB_MASK,   COM,	0,		{RT, RA}},
4865*4882a593Smuzhiyun 
4866*4882a593Smuzhiyun {"mul",		XO(31,107,0,0),	XO_MASK,     M601,	0,		{RT, RA, RB}},
4867*4882a593Smuzhiyun {"mul.",	XO(31,107,0,1),	XO_MASK,     M601,	0,		{RT, RA, RB}},
4868*4882a593Smuzhiyun 
4869*4882a593Smuzhiyun {"mvidsplt",	X(31,110),	X_MASK,	     PPCVEC2,	0,		{VD, RA, RB}},
4870*4882a593Smuzhiyun 
4871*4882a593Smuzhiyun {"mtsrdin",	X(31,114),	XRA_MASK,    PPC64,	0,		{RS, RB}},
4872*4882a593Smuzhiyun 
4873*4882a593Smuzhiyun {"mffprwz",	X(31,115),	XX1RB_MASK|1, PPCVSX2,	0,		{RA, FRS}},
4874*4882a593Smuzhiyun {"mfvrwz",	X(31,115)|1,	XX1RB_MASK|1, PPCVSX2,	0,		{RA, VS}},
4875*4882a593Smuzhiyun {"mfvsrwz",	X(31,115),	XX1RB_MASK,   PPCVSX2,	0,		{RA, XS6}},
4876*4882a593Smuzhiyun 
4877*4882a593Smuzhiyun {"lharx",	X(31,116),	XEH_MASK, POWER8|E6500, 0,		{RT, RA0, RB, EH}},
4878*4882a593Smuzhiyun 
4879*4882a593Smuzhiyun {"clf",		X(31,118),	XTO_MASK,    POWER,	0,		{RA, RB}},
4880*4882a593Smuzhiyun 
4881*4882a593Smuzhiyun {"lbzux",	X(31,119),	X_MASK,	     COM,	0,		{RT, RAL, RB}},
4882*4882a593Smuzhiyun 
4883*4882a593Smuzhiyun {"popcntb",	X(31,122),	XRB_MASK,    POWER5,	0,		{RA, RS}},
4884*4882a593Smuzhiyun 
4885*4882a593Smuzhiyun {"not",		XRC(31,124,0),	X_MASK,	     COM,	0,		{RA, RS, RBS}},
4886*4882a593Smuzhiyun {"nor",		XRC(31,124,0),	X_MASK,	     COM,	0,		{RA, RS, RB}},
4887*4882a593Smuzhiyun {"not.",	XRC(31,124,1),	X_MASK,	     COM,	0,		{RA, RS, RBS}},
4888*4882a593Smuzhiyun {"nor.",	XRC(31,124,1),	X_MASK,	     COM,	0,		{RA, RS, RB}},
4889*4882a593Smuzhiyun 
4890*4882a593Smuzhiyun {"dcbfep",	XRT(31,127,0),	XRT_MASK, E500MC|PPCA2, 0,		{RA0, RB}},
4891*4882a593Smuzhiyun 
4892*4882a593Smuzhiyun {"setb",	X(31,128),	XRB_MASK|(3<<16), POWER9, 0,		{RT, BFA}},
4893*4882a593Smuzhiyun 
4894*4882a593Smuzhiyun {"wrtee",	X(31,131), XRARB_MASK, PPC403|BOOKE|PPCA2|PPC476, 0,	{RS}},
4895*4882a593Smuzhiyun 
4896*4882a593Smuzhiyun {"dcbtstls",	X(31,134),	X_MASK, PPCCHLK|PPC476|TITAN, 0,	{CT, RA0, RB}},
4897*4882a593Smuzhiyun 
4898*4882a593Smuzhiyun {"stvebx",	X(31,135),	X_MASK,	     PPCVEC,	0,		{VS, RA0, RB}},
4899*4882a593Smuzhiyun {"stbfcmx",	APU(31,135,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
4900*4882a593Smuzhiyun 
4901*4882a593Smuzhiyun {"subfe",	XO(31,136,0,0),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
4902*4882a593Smuzhiyun {"sfe",		XO(31,136,0,0),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
4903*4882a593Smuzhiyun {"subfe.",	XO(31,136,0,1),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
4904*4882a593Smuzhiyun {"sfe.",	XO(31,136,0,1),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
4905*4882a593Smuzhiyun 
4906*4882a593Smuzhiyun {"adde",	XO(31,138,0,0),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
4907*4882a593Smuzhiyun {"ae",		XO(31,138,0,0),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
4908*4882a593Smuzhiyun {"adde.",	XO(31,138,0,1),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
4909*4882a593Smuzhiyun {"ae.",		XO(31,138,0,1),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
4910*4882a593Smuzhiyun 
4911*4882a593Smuzhiyun {"stxsiwx",	X(31,140),	XX1_MASK,    PPCVSX2,	0,		{XS6, RA0, RB}},
4912*4882a593Smuzhiyun 
4913*4882a593Smuzhiyun {"msgsndp",	XRTRA(31,142,0,0), XRTRA_MASK, POWER8,	0,		{RB}},
4914*4882a593Smuzhiyun {"dcbtstlse",	X(31,142),	X_MASK,	     PPCCHLK,	E500MC,		{CT, RA0, RB}},
4915*4882a593Smuzhiyun 
4916*4882a593Smuzhiyun {"mtcr",	XFXM(31,144,0xff,0), XRARB_MASK, COM,	0,		{RS}},
4917*4882a593Smuzhiyun {"mtcrf",	XFXM(31,144,0,0), XFXFXM_MASK, COM,	0,		{FXM, RS}},
4918*4882a593Smuzhiyun {"mtocrf",	XFXM(31,144,0,1), XFXFXM_MASK, COM,	0,		{FXM, RS}},
4919*4882a593Smuzhiyun 
4920*4882a593Smuzhiyun {"mtmsr",	X(31,146),	XRLARB_MASK, COM,	0,		{RS, A_L}},
4921*4882a593Smuzhiyun 
4922*4882a593Smuzhiyun {"mtsle",	X(31,147),    XRTLRARB_MASK, POWER8,	0,		{L}},
4923*4882a593Smuzhiyun 
4924*4882a593Smuzhiyun {"eratsx",	XRC(31,147,0),	X_MASK,	     PPCA2,	0,		{RT, RA0, RB}},
4925*4882a593Smuzhiyun {"eratsx.",	XRC(31,147,1),	X_MASK,	     PPCA2,	0,		{RT, RA0, RB}},
4926*4882a593Smuzhiyun 
4927*4882a593Smuzhiyun {"stdx",	X(31,149),	X_MASK,	     PPC64,	0,		{RS, RA0, RB}},
4928*4882a593Smuzhiyun 
4929*4882a593Smuzhiyun {"stwcx.",	XRC(31,150,1),	X_MASK,	     PPC,	0,		{RS, RA0, RB}},
4930*4882a593Smuzhiyun 
4931*4882a593Smuzhiyun {"stwx",	X(31,151),	X_MASK,	     PPCCOM,	0,		{RS, RA0, RB}},
4932*4882a593Smuzhiyun {"stx",		X(31,151),	X_MASK,	     PWRCOM,	0,		{RS, RA, RB}},
4933*4882a593Smuzhiyun 
4934*4882a593Smuzhiyun {"slq",		XRC(31,152,0),	X_MASK,	     M601,	0,		{RA, RS, RB}},
4935*4882a593Smuzhiyun {"slq.",	XRC(31,152,1),	X_MASK,	     M601,	0,		{RA, RS, RB}},
4936*4882a593Smuzhiyun 
4937*4882a593Smuzhiyun {"sle",		XRC(31,153,0),	X_MASK,	     M601,	0,		{RA, RS, RB}},
4938*4882a593Smuzhiyun {"sle.",	XRC(31,153,1),	X_MASK,	     M601,	0,		{RA, RS, RB}},
4939*4882a593Smuzhiyun 
4940*4882a593Smuzhiyun {"prtyw",	X(31,154),    XRB_MASK, POWER6|PPCA2|PPC476, 0,		{RA, RS}},
4941*4882a593Smuzhiyun 
4942*4882a593Smuzhiyun {"stdepx",	X(31,157),	X_MASK,	  E500MC|PPCA2, 0,		{RS, RA0, RB}},
4943*4882a593Smuzhiyun 
4944*4882a593Smuzhiyun {"stwepx",	X(31,159),	X_MASK,	  E500MC|PPCA2, 0,		{RS, RA0, RB}},
4945*4882a593Smuzhiyun 
4946*4882a593Smuzhiyun {"wrteei",	X(31,163), XE_MASK, PPC403|BOOKE|PPCA2|PPC476, 0,	{E}},
4947*4882a593Smuzhiyun 
4948*4882a593Smuzhiyun {"dcbtls",	X(31,166),	X_MASK,	 PPCCHLK|PPC476|TITAN, 0,	{CT, RA0, RB}},
4949*4882a593Smuzhiyun 
4950*4882a593Smuzhiyun {"stvehx",	X(31,167),	X_MASK,	     PPCVEC,	0,		{VS, RA0, RB}},
4951*4882a593Smuzhiyun {"sthfcmx",	APU(31,167,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
4952*4882a593Smuzhiyun 
4953*4882a593Smuzhiyun {"addex",	ZRC(31,170,0),	Z2_MASK,     POWER9,	0,		{RT, RA, RB, CY}},
4954*4882a593Smuzhiyun 
4955*4882a593Smuzhiyun {"msgclrp",	XRTRA(31,174,0,0), XRTRA_MASK, POWER8,	0,		{RB}},
4956*4882a593Smuzhiyun {"dcbtlse",	X(31,174),	X_MASK,	     PPCCHLK,	E500MC,		{CT, RA0, RB}},
4957*4882a593Smuzhiyun 
4958*4882a593Smuzhiyun {"mtmsrd",	X(31,178),	XRLARB_MASK, PPC64,	0,		{RS, A_L}},
4959*4882a593Smuzhiyun 
4960*4882a593Smuzhiyun {"mtvsrd",	X(31,179),	XX1RB_MASK,   PPCVSX2,	0,		{XT6, RA}},
4961*4882a593Smuzhiyun {"mtfprd",	X(31,179),	XX1RB_MASK|1, PPCVSX2,	0,		{FRT, RA}},
4962*4882a593Smuzhiyun {"mtvrd",	X(31,179)|1,	XX1RB_MASK|1, PPCVSX2,	0,		{VD, RA}},
4963*4882a593Smuzhiyun {"eratre",	X(31,179),	X_MASK,	     PPCA2,	0,		{RT, RA, WS}},
4964*4882a593Smuzhiyun 
4965*4882a593Smuzhiyun {"stdux",	X(31,181),	X_MASK,	     PPC64,	0,		{RS, RAS, RB}},
4966*4882a593Smuzhiyun 
4967*4882a593Smuzhiyun {"stqcx.",	XRC(31,182,1),	X_MASK,	     POWER8,	0,		{RSQ, RA0, RB}},
4968*4882a593Smuzhiyun {"wchkall",	X(31,182),	X_MASK,	     PPCA2,	0,		{OBF}},
4969*4882a593Smuzhiyun 
4970*4882a593Smuzhiyun {"stwux",	X(31,183),	X_MASK,	     PPCCOM,	0,		{RS, RAS, RB}},
4971*4882a593Smuzhiyun {"stux",	X(31,183),	X_MASK,	     PWRCOM,	0,		{RS, RA0, RB}},
4972*4882a593Smuzhiyun 
4973*4882a593Smuzhiyun {"sliq",	XRC(31,184,0),	X_MASK,	     M601,	0,		{RA, RS, SH}},
4974*4882a593Smuzhiyun {"sliq.",	XRC(31,184,1),	X_MASK,	     M601,	0,		{RA, RS, SH}},
4975*4882a593Smuzhiyun 
4976*4882a593Smuzhiyun {"prtyd",	X(31,186),	XRB_MASK, POWER6|PPCA2,	0,		{RA, RS}},
4977*4882a593Smuzhiyun 
4978*4882a593Smuzhiyun {"cmprb",	X(31,192),	XCMP_MASK,   POWER9,	0,		{BF, L, RA, RB}},
4979*4882a593Smuzhiyun 
4980*4882a593Smuzhiyun {"icblq.",	XRC(31,198,1),	X_MASK,	     E6500,	0,		{CT, RA0, RB}},
4981*4882a593Smuzhiyun 
4982*4882a593Smuzhiyun {"stvewx",	X(31,199),	X_MASK,	     PPCVEC,	0,		{VS, RA0, RB}},
4983*4882a593Smuzhiyun {"stwfcmx",	APU(31,199,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
4984*4882a593Smuzhiyun 
4985*4882a593Smuzhiyun {"subfze",	XO(31,200,0,0),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
4986*4882a593Smuzhiyun {"sfze",	XO(31,200,0,0),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
4987*4882a593Smuzhiyun {"subfze.",	XO(31,200,0,1),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
4988*4882a593Smuzhiyun {"sfze.",	XO(31,200,0,1),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
4989*4882a593Smuzhiyun 
4990*4882a593Smuzhiyun {"addze",	XO(31,202,0,0),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
4991*4882a593Smuzhiyun {"aze",		XO(31,202,0,0),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
4992*4882a593Smuzhiyun {"addze.",	XO(31,202,0,1),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
4993*4882a593Smuzhiyun {"aze.",	XO(31,202,0,1),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
4994*4882a593Smuzhiyun 
4995*4882a593Smuzhiyun {"msgsnd",	XRTRA(31,206,0,0), XRTRA_MASK, E500MC|PPCA2|POWER8, 0,	{RB}},
4996*4882a593Smuzhiyun 
4997*4882a593Smuzhiyun {"mtsr",	X(31,210), XRB_MASK|(1<<20), COM,	NON32,		{SR, RS}},
4998*4882a593Smuzhiyun 
4999*4882a593Smuzhiyun {"mtfprwa",	X(31,211),	XX1RB_MASK|1, PPCVSX2,	0,		{FRT, RA}},
5000*4882a593Smuzhiyun {"mtvrwa",	X(31,211)|1,	XX1RB_MASK|1, PPCVSX2,	0,		{VD, RA}},
5001*4882a593Smuzhiyun {"mtvsrwa",	X(31,211),	XX1RB_MASK,   PPCVSX2,	0,		{XT6, RA}},
5002*4882a593Smuzhiyun {"eratwe",	X(31,211),	X_MASK,	     PPCA2,	0,		{RS, RA, WS}},
5003*4882a593Smuzhiyun 
5004*4882a593Smuzhiyun {"ldawx.",	XRC(31,212,1),	X_MASK,	     PPCA2,	0,		{RT, RA0, RB}},
5005*4882a593Smuzhiyun 
5006*4882a593Smuzhiyun {"stdcx.",	XRC(31,214,1),	X_MASK,	     PPC64,	0,		{RS, RA0, RB}},
5007*4882a593Smuzhiyun 
5008*4882a593Smuzhiyun {"stbx",	X(31,215),	X_MASK,	     COM,	0,		{RS, RA0, RB}},
5009*4882a593Smuzhiyun 
5010*4882a593Smuzhiyun {"sllq",	XRC(31,216,0),	X_MASK,	     M601,	0,		{RA, RS, RB}},
5011*4882a593Smuzhiyun {"sllq.",	XRC(31,216,1),	X_MASK,	     M601,	0,		{RA, RS, RB}},
5012*4882a593Smuzhiyun 
5013*4882a593Smuzhiyun {"sleq",	XRC(31,217,0),	X_MASK,	     M601,	0,		{RA, RS, RB}},
5014*4882a593Smuzhiyun {"sleq.",	XRC(31,217,1),	X_MASK,	     M601,	0,		{RA, RS, RB}},
5015*4882a593Smuzhiyun 
5016*4882a593Smuzhiyun {"stbepx",	X(31,223),	X_MASK,	  E500MC|PPCA2, 0,		{RS, RA0, RB}},
5017*4882a593Smuzhiyun 
5018*4882a593Smuzhiyun {"cmpeqb",	X(31,224),	XCMPL_MASK,  POWER9,	0,		{BF, RA, RB}},
5019*4882a593Smuzhiyun 
5020*4882a593Smuzhiyun {"icblc",	X(31,230),	X_MASK,	PPCCHLK|PPC476|TITAN, 0,	{CT, RA0, RB}},
5021*4882a593Smuzhiyun 
5022*4882a593Smuzhiyun {"stvx",	X(31,231),	X_MASK,	     PPCVEC,	0,		{VS, RA0, RB}},
5023*4882a593Smuzhiyun {"stqfcmx",	APU(31,231,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
5024*4882a593Smuzhiyun 
5025*4882a593Smuzhiyun {"subfme",	XO(31,232,0,0),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
5026*4882a593Smuzhiyun {"sfme",	XO(31,232,0,0),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
5027*4882a593Smuzhiyun {"subfme.",	XO(31,232,0,1),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
5028*4882a593Smuzhiyun {"sfme.",	XO(31,232,0,1),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
5029*4882a593Smuzhiyun 
5030*4882a593Smuzhiyun {"mulld",	XO(31,233,0,0),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
5031*4882a593Smuzhiyun {"mulld.",	XO(31,233,0,1),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
5032*4882a593Smuzhiyun 
5033*4882a593Smuzhiyun {"addme",	XO(31,234,0,0),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
5034*4882a593Smuzhiyun {"ame",		XO(31,234,0,0),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
5035*4882a593Smuzhiyun {"addme.",	XO(31,234,0,1),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
5036*4882a593Smuzhiyun {"ame.",	XO(31,234,0,1),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
5037*4882a593Smuzhiyun 
5038*4882a593Smuzhiyun {"mullw",	XO(31,235,0,0),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
5039*4882a593Smuzhiyun {"muls",	XO(31,235,0,0),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
5040*4882a593Smuzhiyun {"mullw.",	XO(31,235,0,1),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
5041*4882a593Smuzhiyun {"muls.",	XO(31,235,0,1),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
5042*4882a593Smuzhiyun 
5043*4882a593Smuzhiyun {"icblce",	X(31,238),	X_MASK,	     PPCCHLK,	E500MC|PPCA2,	{CT, RA, RB}},
5044*4882a593Smuzhiyun {"msgclr",	XRTRA(31,238,0,0), XRTRA_MASK, E500MC|PPCA2|POWER8, 0,	{RB}},
5045*4882a593Smuzhiyun {"mtsrin",	X(31,242),	XRA_MASK,    PPC,	NON32,		{RS, RB}},
5046*4882a593Smuzhiyun {"mtsri",	X(31,242),	XRA_MASK,    POWER,	NON32,		{RS, RB}},
5047*4882a593Smuzhiyun 
5048*4882a593Smuzhiyun {"mtfprwz",	X(31,243),	XX1RB_MASK|1, PPCVSX2,	0,		{FRT, RA}},
5049*4882a593Smuzhiyun {"mtvrwz",	X(31,243)|1,	XX1RB_MASK|1, PPCVSX2,	0,		{VD, RA}},
5050*4882a593Smuzhiyun {"mtvsrwz",	X(31,243),	XX1RB_MASK,   PPCVSX2,	0,		{XT6, RA}},
5051*4882a593Smuzhiyun 
5052*4882a593Smuzhiyun {"dcbtstt",	XRT(31,246,0x10), XRT_MASK,  POWER7,	0,		{RA0, RB}},
5053*4882a593Smuzhiyun {"dcbtst",	X(31,246),	X_MASK,	     POWER4,	DCBT_EO,	{RA0, RB, CT}},
5054*4882a593Smuzhiyun {"dcbtst",	X(31,246),	X_MASK,	     DCBT_EO,	0,		{CT, RA0, RB}},
5055*4882a593Smuzhiyun {"dcbtst",	X(31,246),	X_MASK,	     PPC,	POWER4|DCBT_EO,	{RA0, RB}},
5056*4882a593Smuzhiyun 
5057*4882a593Smuzhiyun {"stbux",	X(31,247),	X_MASK,	     COM,	0,		{RS, RAS, RB}},
5058*4882a593Smuzhiyun 
5059*4882a593Smuzhiyun {"slliq",	XRC(31,248,0),	X_MASK,	     M601,	0,		{RA, RS, SH}},
5060*4882a593Smuzhiyun {"slliq.",	XRC(31,248,1),	X_MASK,	     M601,	0,		{RA, RS, SH}},
5061*4882a593Smuzhiyun 
5062*4882a593Smuzhiyun {"bpermd",	X(31,252),	X_MASK,	  POWER7|PPCA2,	0,		{RA, RS, RB}},
5063*4882a593Smuzhiyun 
5064*4882a593Smuzhiyun {"dcbtstep",	XRT(31,255,0),	X_MASK,	  E500MC|PPCA2, 0,		{RT, RA0, RB}},
5065*4882a593Smuzhiyun 
5066*4882a593Smuzhiyun {"mfdcrx",	X(31,259),	X_MASK, BOOKE|PPCA2|PPC476, TITAN,	{RS, RA}},
5067*4882a593Smuzhiyun {"mfdcrx.",	XRC(31,259,1),	X_MASK,	     PPCA2,	0,		{RS, RA}},
5068*4882a593Smuzhiyun 
5069*4882a593Smuzhiyun {"lvexbx",	X(31,261),	X_MASK,	     PPCVEC2,	0,		{VD, RA0, RB}},
5070*4882a593Smuzhiyun 
5071*4882a593Smuzhiyun {"icbt",	X(31,262),	XRT_MASK,    PPC403,	0,		{RA, RB}},
5072*4882a593Smuzhiyun 
5073*4882a593Smuzhiyun {"lvepxl",	X(31,263),	X_MASK,	     PPCVEC2,	0,		{VD, RA0, RB}},
5074*4882a593Smuzhiyun 
5075*4882a593Smuzhiyun {"ldfcmx",	APU(31,263,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
5076*4882a593Smuzhiyun {"doz",		XO(31,264,0,0),	XO_MASK,     M601,	0,		{RT, RA, RB}},
5077*4882a593Smuzhiyun {"doz.",	XO(31,264,0,1),	XO_MASK,     M601,	0,		{RT, RA, RB}},
5078*4882a593Smuzhiyun 
5079*4882a593Smuzhiyun {"modud",	X(31,265),	X_MASK,	     POWER9,	0,		{RT, RA, RB}},
5080*4882a593Smuzhiyun 
5081*4882a593Smuzhiyun {"add",		XO(31,266,0,0),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
5082*4882a593Smuzhiyun {"cax",		XO(31,266,0,0),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
5083*4882a593Smuzhiyun {"add.",	XO(31,266,0,1),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
5084*4882a593Smuzhiyun {"cax.",	XO(31,266,0,1),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
5085*4882a593Smuzhiyun 
5086*4882a593Smuzhiyun {"moduw",	X(31,267),	X_MASK,	     POWER9,	0,		{RT, RA, RB}},
5087*4882a593Smuzhiyun 
5088*4882a593Smuzhiyun {"lxvx",	X(31,268),	XX1_MASK|1<<6, PPCVSX3,	0,		{XT6, RA0, RB}},
5089*4882a593Smuzhiyun {"lxvl",	X(31,269),	XX1_MASK,    PPCVSX3,	0,		{XT6, RA0, RB}},
5090*4882a593Smuzhiyun 
5091*4882a593Smuzhiyun {"ehpriv",	X(31,270),	0xffffffff,  E500MC|PPCA2, 0,		{0}},
5092*4882a593Smuzhiyun 
5093*4882a593Smuzhiyun {"tlbiel",	X(31,274),	X_MASK|1<<20,POWER9,	PPC476,		{RB, RSO, RIC, PRS, X_R}},
5094*4882a593Smuzhiyun {"tlbiel",	X(31,274),	XRTLRA_MASK, POWER4,	POWER9|PPC476,	{RB, LOPT}},
5095*4882a593Smuzhiyun 
5096*4882a593Smuzhiyun {"mfapidi",	X(31,275),	X_MASK,	     BOOKE,	E500|TITAN,	{RT, RA}},
5097*4882a593Smuzhiyun 
5098*4882a593Smuzhiyun {"lqarx",	X(31,276),	XEH_MASK,    POWER8,	0,		{RTQ, RAX, RBX, EH}},
5099*4882a593Smuzhiyun 
5100*4882a593Smuzhiyun {"lscbx",	XRC(31,277,0),	X_MASK,	     M601,	0,		{RT, RA, RB}},
5101*4882a593Smuzhiyun {"lscbx.",	XRC(31,277,1),	X_MASK,	     M601,	0,		{RT, RA, RB}},
5102*4882a593Smuzhiyun 
5103*4882a593Smuzhiyun {"dcbtt",	XRT(31,278,0x10), XRT_MASK,  POWER7,	0,		{RA0, RB}},
5104*4882a593Smuzhiyun {"dcbt",	X(31,278),	X_MASK,	     POWER4,	DCBT_EO,	{RA0, RB, CT}},
5105*4882a593Smuzhiyun {"dcbt",	X(31,278),	X_MASK,	     DCBT_EO,	0,		{CT, RA0, RB}},
5106*4882a593Smuzhiyun {"dcbt",	X(31,278),	X_MASK,	     PPC,	POWER4|DCBT_EO,	{RA0, RB}},
5107*4882a593Smuzhiyun 
5108*4882a593Smuzhiyun {"lhzx",	X(31,279),	X_MASK,	     COM,	0,		{RT, RA0, RB}},
5109*4882a593Smuzhiyun 
5110*4882a593Smuzhiyun {"cdtbcd",	X(31,282),	XRB_MASK,    POWER6,	0,		{RA, RS}},
5111*4882a593Smuzhiyun 
5112*4882a593Smuzhiyun {"eqv",		XRC(31,284,0),	X_MASK,	     COM,	0,		{RA, RS, RB}},
5113*4882a593Smuzhiyun {"eqv.",	XRC(31,284,1),	X_MASK,	     COM,	0,		{RA, RS, RB}},
5114*4882a593Smuzhiyun 
5115*4882a593Smuzhiyun {"lhepx",	X(31,287),	X_MASK,	  E500MC|PPCA2, 0,		{RT, RA0, RB}},
5116*4882a593Smuzhiyun 
5117*4882a593Smuzhiyun {"mfdcrux",	X(31,291),	X_MASK,	     PPC464,	0,		{RS, RA}},
5118*4882a593Smuzhiyun 
5119*4882a593Smuzhiyun {"lvexhx",	X(31,293),	X_MASK,	     PPCVEC2,	0,		{VD, RA0, RB}},
5120*4882a593Smuzhiyun {"lvepx",	X(31,295),	X_MASK,	     PPCVEC2,	0,		{VD, RA0, RB}},
5121*4882a593Smuzhiyun 
5122*4882a593Smuzhiyun {"lxvll",	X(31,301),	XX1_MASK,    PPCVSX3,	0,		{XT6, RA0, RB}},
5123*4882a593Smuzhiyun 
5124*4882a593Smuzhiyun {"mfbhrbe",	X(31,302),	X_MASK,	     POWER8,	0,		{RT, BHRBE}},
5125*4882a593Smuzhiyun 
5126*4882a593Smuzhiyun {"tlbie",	X(31,306),	X_MASK|1<<20,POWER9,	TITAN,		{RB, RS, RIC, PRS, X_R}},
5127*4882a593Smuzhiyun {"tlbie",	X(31,306),	XRA_MASK,    POWER7,	POWER9|TITAN,	{RB, RS}},
5128*4882a593Smuzhiyun {"tlbie",	X(31,306),	XRTLRA_MASK, PPC,    E500|POWER7|TITAN,	{RB, LOPT}},
5129*4882a593Smuzhiyun {"tlbi",	X(31,306),	XRT_MASK,    POWER,	0,		{RA0, RB}},
5130*4882a593Smuzhiyun 
5131*4882a593Smuzhiyun {"mfvsrld",	X(31,307),	XX1RB_MASK,  PPCVSX3,	0,		{RA, XS6}},
5132*4882a593Smuzhiyun 
5133*4882a593Smuzhiyun {"ldmx",	X(31,309),	X_MASK,	     POWER9,	0,		{RT, RA0, RB}},
5134*4882a593Smuzhiyun 
5135*4882a593Smuzhiyun {"eciwx",	X(31,310),	X_MASK,	     PPC,	E500|TITAN,	{RT, RA0, RB}},
5136*4882a593Smuzhiyun 
5137*4882a593Smuzhiyun {"lhzux",	X(31,311),	X_MASK,	     COM,	0,		{RT, RAL, RB}},
5138*4882a593Smuzhiyun 
5139*4882a593Smuzhiyun {"cbcdtd",	X(31,314),	XRB_MASK,    POWER6,	0,		{RA, RS}},
5140*4882a593Smuzhiyun 
5141*4882a593Smuzhiyun {"xor",		XRC(31,316,0),	X_MASK,	     COM,	0,		{RA, RS, RB}},
5142*4882a593Smuzhiyun {"xor.",	XRC(31,316,1),	X_MASK,	     COM,	0,		{RA, RS, RB}},
5143*4882a593Smuzhiyun 
5144*4882a593Smuzhiyun {"dcbtep",	XRT(31,319,0),	X_MASK,	  E500MC|PPCA2, 0,		{RT, RA0, RB}},
5145*4882a593Smuzhiyun 
5146*4882a593Smuzhiyun {"mfexisr",	XSPR(31,323, 64), XSPR_MASK, PPC403,	0,		{RT}},
5147*4882a593Smuzhiyun {"mfexier",	XSPR(31,323, 66), XSPR_MASK, PPC403,	0,		{RT}},
5148*4882a593Smuzhiyun {"mfbr0",	XSPR(31,323,128), XSPR_MASK, PPC403,	0,		{RT}},
5149*4882a593Smuzhiyun {"mfbr1",	XSPR(31,323,129), XSPR_MASK, PPC403,	0,		{RT}},
5150*4882a593Smuzhiyun {"mfbr2",	XSPR(31,323,130), XSPR_MASK, PPC403,	0,		{RT}},
5151*4882a593Smuzhiyun {"mfbr3",	XSPR(31,323,131), XSPR_MASK, PPC403,	0,		{RT}},
5152*4882a593Smuzhiyun {"mfbr4",	XSPR(31,323,132), XSPR_MASK, PPC403,	0,		{RT}},
5153*4882a593Smuzhiyun {"mfbr5",	XSPR(31,323,133), XSPR_MASK, PPC403,	0,		{RT}},
5154*4882a593Smuzhiyun {"mfbr6",	XSPR(31,323,134), XSPR_MASK, PPC403,	0,		{RT}},
5155*4882a593Smuzhiyun {"mfbr7",	XSPR(31,323,135), XSPR_MASK, PPC403,	0,		{RT}},
5156*4882a593Smuzhiyun {"mfbear",	XSPR(31,323,144), XSPR_MASK, PPC403,	0,		{RT}},
5157*4882a593Smuzhiyun {"mfbesr",	XSPR(31,323,145), XSPR_MASK, PPC403,	0,		{RT}},
5158*4882a593Smuzhiyun {"mfiocr",	XSPR(31,323,160), XSPR_MASK, PPC403,	0,		{RT}},
5159*4882a593Smuzhiyun {"mfdmacr0",	XSPR(31,323,192), XSPR_MASK, PPC403,	0,		{RT}},
5160*4882a593Smuzhiyun {"mfdmact0",	XSPR(31,323,193), XSPR_MASK, PPC403,	0,		{RT}},
5161*4882a593Smuzhiyun {"mfdmada0",	XSPR(31,323,194), XSPR_MASK, PPC403,	0,		{RT}},
5162*4882a593Smuzhiyun {"mfdmasa0",	XSPR(31,323,195), XSPR_MASK, PPC403,	0,		{RT}},
5163*4882a593Smuzhiyun {"mfdmacc0",	XSPR(31,323,196), XSPR_MASK, PPC403,	0,		{RT}},
5164*4882a593Smuzhiyun {"mfdmacr1",	XSPR(31,323,200), XSPR_MASK, PPC403,	0,		{RT}},
5165*4882a593Smuzhiyun {"mfdmact1",	XSPR(31,323,201), XSPR_MASK, PPC403,	0,		{RT}},
5166*4882a593Smuzhiyun {"mfdmada1",	XSPR(31,323,202), XSPR_MASK, PPC403,	0,		{RT}},
5167*4882a593Smuzhiyun {"mfdmasa1",	XSPR(31,323,203), XSPR_MASK, PPC403,	0,		{RT}},
5168*4882a593Smuzhiyun {"mfdmacc1",	XSPR(31,323,204), XSPR_MASK, PPC403,	0,		{RT}},
5169*4882a593Smuzhiyun {"mfdmacr2",	XSPR(31,323,208), XSPR_MASK, PPC403,	0,		{RT}},
5170*4882a593Smuzhiyun {"mfdmact2",	XSPR(31,323,209), XSPR_MASK, PPC403,	0,		{RT}},
5171*4882a593Smuzhiyun {"mfdmada2",	XSPR(31,323,210), XSPR_MASK, PPC403,	0,		{RT}},
5172*4882a593Smuzhiyun {"mfdmasa2",	XSPR(31,323,211), XSPR_MASK, PPC403,	0,		{RT}},
5173*4882a593Smuzhiyun {"mfdmacc2",	XSPR(31,323,212), XSPR_MASK, PPC403,	0,		{RT}},
5174*4882a593Smuzhiyun {"mfdmacr3",	XSPR(31,323,216), XSPR_MASK, PPC403,	0,		{RT}},
5175*4882a593Smuzhiyun {"mfdmact3",	XSPR(31,323,217), XSPR_MASK, PPC403,	0,		{RT}},
5176*4882a593Smuzhiyun {"mfdmada3",	XSPR(31,323,218), XSPR_MASK, PPC403,	0,		{RT}},
5177*4882a593Smuzhiyun {"mfdmasa3",	XSPR(31,323,219), XSPR_MASK, PPC403,	0,		{RT}},
5178*4882a593Smuzhiyun {"mfdmacc3",	XSPR(31,323,220), XSPR_MASK, PPC403,	0,		{RT}},
5179*4882a593Smuzhiyun {"mfdmasr",	XSPR(31,323,224), XSPR_MASK, PPC403,	0,		{RT}},
5180*4882a593Smuzhiyun {"mfdcr",	X(31,323), X_MASK, PPC403|BOOKE|PPCA2|PPC476, E500|TITAN, {RT, SPR}},
5181*4882a593Smuzhiyun {"mfdcr.",	XRC(31,323,1),	X_MASK,	     PPCA2,	0,		{RT, SPR}},
5182*4882a593Smuzhiyun 
5183*4882a593Smuzhiyun {"lvexwx",	X(31,325),	X_MASK,	     PPCVEC2,	0,		{VD, RA0, RB}},
5184*4882a593Smuzhiyun 
5185*4882a593Smuzhiyun {"dcread",	X(31,326),	X_MASK,	  PPC476|TITAN,	0,		{RT, RA0, RB}},
5186*4882a593Smuzhiyun 
5187*4882a593Smuzhiyun {"div",		XO(31,331,0,0),	XO_MASK,     M601,	0,		{RT, RA, RB}},
5188*4882a593Smuzhiyun {"div.",	XO(31,331,0,1),	XO_MASK,     M601,	0,		{RT, RA, RB}},
5189*4882a593Smuzhiyun 
5190*4882a593Smuzhiyun {"lxvdsx",	X(31,332),	XX1_MASK,    PPCVSX,	0,		{XT6, RA0, RB}},
5191*4882a593Smuzhiyun 
5192*4882a593Smuzhiyun {"mfpmr",	X(31,334),	X_MASK, PPCPMR|PPCE300, 0,		{RT, PMR}},
5193*4882a593Smuzhiyun {"mftmr",	X(31,366),	X_MASK,	PPCTMR|E6500,	0,		{RT, TMR}},
5194*4882a593Smuzhiyun 
5195*4882a593Smuzhiyun {"slbsync",	X(31,338),	0xffffffff,  POWER9,	0,		{0}},
5196*4882a593Smuzhiyun 
5197*4882a593Smuzhiyun {"mfmq",	XSPR(31,339,  0), XSPR_MASK, M601,	0,		{RT}},
5198*4882a593Smuzhiyun {"mfxer",	XSPR(31,339,  1), XSPR_MASK, COM,	0,		{RT}},
5199*4882a593Smuzhiyun {"mfrtcu",	XSPR(31,339,  4), XSPR_MASK, COM,	TITAN,		{RT}},
5200*4882a593Smuzhiyun {"mfrtcl",	XSPR(31,339,  5), XSPR_MASK, COM,	TITAN,		{RT}},
5201*4882a593Smuzhiyun {"mfdec",	XSPR(31,339,  6), XSPR_MASK, MFDEC1,	0,		{RT}},
5202*4882a593Smuzhiyun {"mflr",	XSPR(31,339,  8), XSPR_MASK, COM,	0,		{RT}},
5203*4882a593Smuzhiyun {"mfctr",	XSPR(31,339,  9), XSPR_MASK, COM,	0,		{RT}},
5204*4882a593Smuzhiyun {"mfdscr",	XSPR(31,339, 17), XSPR_MASK, POWER6,	0,		{RT}},
5205*4882a593Smuzhiyun {"mftid",	XSPR(31,339, 17), XSPR_MASK, POWER,	0,		{RT}},
5206*4882a593Smuzhiyun {"mfdsisr",	XSPR(31,339, 18), XSPR_MASK, COM,	TITAN,		{RT}},
5207*4882a593Smuzhiyun {"mfdar",	XSPR(31,339, 19), XSPR_MASK, COM,	TITAN,		{RT}},
5208*4882a593Smuzhiyun {"mfdec",	XSPR(31,339, 22), XSPR_MASK, MFDEC2,	MFDEC1,		{RT}},
5209*4882a593Smuzhiyun {"mfsdr0",	XSPR(31,339, 24), XSPR_MASK, POWER,	0,		{RT}},
5210*4882a593Smuzhiyun {"mfsdr1",	XSPR(31,339, 25), XSPR_MASK, COM,	TITAN,		{RT}},
5211*4882a593Smuzhiyun {"mfsrr0",	XSPR(31,339, 26), XSPR_MASK, COM,	0,		{RT}},
5212*4882a593Smuzhiyun {"mfsrr1",	XSPR(31,339, 27), XSPR_MASK, COM,	0,		{RT}},
5213*4882a593Smuzhiyun {"mfcfar",	XSPR(31,339, 28), XSPR_MASK, POWER6,	0,		{RT}},
5214*4882a593Smuzhiyun {"mfpid",	XSPR(31,339, 48), XSPR_MASK, BOOKE,	0,		{RT}},
5215*4882a593Smuzhiyun {"mfcsrr0",	XSPR(31,339, 58), XSPR_MASK, BOOKE,	0,		{RT}},
5216*4882a593Smuzhiyun {"mfcsrr1",	XSPR(31,339, 59), XSPR_MASK, BOOKE,	0,		{RT}},
5217*4882a593Smuzhiyun {"mfdear",	XSPR(31,339, 61), XSPR_MASK, BOOKE,	0,		{RT}},
5218*4882a593Smuzhiyun {"mfesr",	XSPR(31,339, 62), XSPR_MASK, BOOKE,	0,		{RT}},
5219*4882a593Smuzhiyun {"mfivpr",	XSPR(31,339, 63), XSPR_MASK, BOOKE,	0,		{RT}},
5220*4882a593Smuzhiyun {"mfctrl",	XSPR(31,339,136), XSPR_MASK, POWER4,	0,		{RT}},
5221*4882a593Smuzhiyun {"mfcmpa",	XSPR(31,339,144), XSPR_MASK, PPC860,	0,		{RT}},
5222*4882a593Smuzhiyun {"mfcmpb",	XSPR(31,339,145), XSPR_MASK, PPC860,	0,		{RT}},
5223*4882a593Smuzhiyun {"mfcmpc",	XSPR(31,339,146), XSPR_MASK, PPC860,	0,		{RT}},
5224*4882a593Smuzhiyun {"mfcmpd",	XSPR(31,339,147), XSPR_MASK, PPC860,	0,		{RT}},
5225*4882a593Smuzhiyun {"mficr",	XSPR(31,339,148), XSPR_MASK, PPC860,	0,		{RT}},
5226*4882a593Smuzhiyun {"mfder",	XSPR(31,339,149), XSPR_MASK, PPC860,	0,		{RT}},
5227*4882a593Smuzhiyun {"mfcounta",	XSPR(31,339,150), XSPR_MASK, PPC860,	0,		{RT}},
5228*4882a593Smuzhiyun {"mfcountb",	XSPR(31,339,151), XSPR_MASK, PPC860,	0,		{RT}},
5229*4882a593Smuzhiyun {"mfcmpe",	XSPR(31,339,152), XSPR_MASK, PPC860,	0,		{RT}},
5230*4882a593Smuzhiyun {"mfcmpf",	XSPR(31,339,153), XSPR_MASK, PPC860,	0,		{RT}},
5231*4882a593Smuzhiyun {"mfcmpg",	XSPR(31,339,154), XSPR_MASK, PPC860,	0,		{RT}},
5232*4882a593Smuzhiyun {"mfcmph",	XSPR(31,339,155), XSPR_MASK, PPC860,	0,		{RT}},
5233*4882a593Smuzhiyun {"mflctrl1",	XSPR(31,339,156), XSPR_MASK, PPC860,	0,		{RT}},
5234*4882a593Smuzhiyun {"mflctrl2",	XSPR(31,339,157), XSPR_MASK, PPC860,	0,		{RT}},
5235*4882a593Smuzhiyun {"mfictrl",	XSPR(31,339,158), XSPR_MASK, PPC860,	0,		{RT}},
5236*4882a593Smuzhiyun {"mfbar",	XSPR(31,339,159), XSPR_MASK, PPC860,	0,		{RT}},
5237*4882a593Smuzhiyun {"mfvrsave",	XSPR(31,339,256), XSPR_MASK, PPCVEC,	0,		{RT}},
5238*4882a593Smuzhiyun {"mfusprg0",	XSPR(31,339,256), XSPR_MASK, BOOKE,	0,		{RT}},
5239*4882a593Smuzhiyun {"mfsprg",	XSPR(31,339,256), XSPRG_MASK, PPC,	0,		{RT, SPRG}},
5240*4882a593Smuzhiyun {"mfsprg4",	XSPR(31,339,260), XSPR_MASK, PPC405|BOOKE, 0,		{RT}},
5241*4882a593Smuzhiyun {"mfsprg5",	XSPR(31,339,261), XSPR_MASK, PPC405|BOOKE, 0,		{RT}},
5242*4882a593Smuzhiyun {"mfsprg6",	XSPR(31,339,262), XSPR_MASK, PPC405|BOOKE, 0,		{RT}},
5243*4882a593Smuzhiyun {"mfsprg7",	XSPR(31,339,263), XSPR_MASK, PPC405|BOOKE, 0,		{RT}},
5244*4882a593Smuzhiyun {"mftbu",	XSPR(31,339,269), XSPR_MASK, POWER4|BOOKE, 0,		{RT}},
5245*4882a593Smuzhiyun {"mftb",	X(31,339),	  X_MASK,    POWER4|BOOKE, 0,		{RT, TBR}},
5246*4882a593Smuzhiyun {"mftbl",	XSPR(31,339,268), XSPR_MASK, POWER4|BOOKE, 0,		{RT}},
5247*4882a593Smuzhiyun {"mfsprg0",	XSPR(31,339,272), XSPR_MASK, PPC,	0,		{RT}},
5248*4882a593Smuzhiyun {"mfsprg1",	XSPR(31,339,273), XSPR_MASK, PPC,	0,		{RT}},
5249*4882a593Smuzhiyun {"mfsprg2",	XSPR(31,339,274), XSPR_MASK, PPC,	0,		{RT}},
5250*4882a593Smuzhiyun {"mfsprg3",	XSPR(31,339,275), XSPR_MASK, PPC,	0,		{RT}},
5251*4882a593Smuzhiyun {"mfasr",	XSPR(31,339,280), XSPR_MASK, PPC64,	0,		{RT}},
5252*4882a593Smuzhiyun {"mfear",	XSPR(31,339,282), XSPR_MASK, PPC,	TITAN,		{RT}},
5253*4882a593Smuzhiyun {"mfpir",	XSPR(31,339,286), XSPR_MASK, BOOKE,	0,		{RT}},
5254*4882a593Smuzhiyun {"mfpvr",	XSPR(31,339,287), XSPR_MASK, PPC,	0,		{RT}},
5255*4882a593Smuzhiyun {"mfdbsr",	XSPR(31,339,304), XSPR_MASK, BOOKE,	0,		{RT}},
5256*4882a593Smuzhiyun {"mfdbcr0",	XSPR(31,339,308), XSPR_MASK, BOOKE,	0,		{RT}},
5257*4882a593Smuzhiyun {"mfdbcr1",	XSPR(31,339,309), XSPR_MASK, BOOKE,	0,		{RT}},
5258*4882a593Smuzhiyun {"mfdbcr2",	XSPR(31,339,310), XSPR_MASK, BOOKE,	0,		{RT}},
5259*4882a593Smuzhiyun {"mfiac1",	XSPR(31,339,312), XSPR_MASK, BOOKE,	0,		{RT}},
5260*4882a593Smuzhiyun {"mfiac2",	XSPR(31,339,313), XSPR_MASK, BOOKE,	0,		{RT}},
5261*4882a593Smuzhiyun {"mfiac3",	XSPR(31,339,314), XSPR_MASK, BOOKE,	0,		{RT}},
5262*4882a593Smuzhiyun {"mfiac4",	XSPR(31,339,315), XSPR_MASK, BOOKE,	0,		{RT}},
5263*4882a593Smuzhiyun {"mfdac1",	XSPR(31,339,316), XSPR_MASK, BOOKE,	0,		{RT}},
5264*4882a593Smuzhiyun {"mfdac2",	XSPR(31,339,317), XSPR_MASK, BOOKE,	0,		{RT}},
5265*4882a593Smuzhiyun {"mfdvc1",	XSPR(31,339,318), XSPR_MASK, BOOKE,	0,		{RT}},
5266*4882a593Smuzhiyun {"mfdvc2",	XSPR(31,339,319), XSPR_MASK, BOOKE,	0,		{RT}},
5267*4882a593Smuzhiyun {"mftsr",	XSPR(31,339,336), XSPR_MASK, BOOKE,	0,		{RT}},
5268*4882a593Smuzhiyun {"mftcr",	XSPR(31,339,340), XSPR_MASK, BOOKE,	0,		{RT}},
5269*4882a593Smuzhiyun {"mfivor0",	XSPR(31,339,400), XSPR_MASK, BOOKE,	0,		{RT}},
5270*4882a593Smuzhiyun {"mfivor1",	XSPR(31,339,401), XSPR_MASK, BOOKE,	0,		{RT}},
5271*4882a593Smuzhiyun {"mfivor2",	XSPR(31,339,402), XSPR_MASK, BOOKE,	0,		{RT}},
5272*4882a593Smuzhiyun {"mfivor3",	XSPR(31,339,403), XSPR_MASK, BOOKE,	0,		{RT}},
5273*4882a593Smuzhiyun {"mfivor4",	XSPR(31,339,404), XSPR_MASK, BOOKE,	0,		{RT}},
5274*4882a593Smuzhiyun {"mfivor5",	XSPR(31,339,405), XSPR_MASK, BOOKE,	0,		{RT}},
5275*4882a593Smuzhiyun {"mfivor6",	XSPR(31,339,406), XSPR_MASK, BOOKE,	0,		{RT}},
5276*4882a593Smuzhiyun {"mfivor7",	XSPR(31,339,407), XSPR_MASK, BOOKE,	0,		{RT}},
5277*4882a593Smuzhiyun {"mfivor8",	XSPR(31,339,408), XSPR_MASK, BOOKE,	0,		{RT}},
5278*4882a593Smuzhiyun {"mfivor9",	XSPR(31,339,409), XSPR_MASK, BOOKE,	0,		{RT}},
5279*4882a593Smuzhiyun {"mfivor10",	XSPR(31,339,410), XSPR_MASK, BOOKE,	0,		{RT}},
5280*4882a593Smuzhiyun {"mfivor11",	XSPR(31,339,411), XSPR_MASK, BOOKE,	0,		{RT}},
5281*4882a593Smuzhiyun {"mfivor12",	XSPR(31,339,412), XSPR_MASK, BOOKE,	0,		{RT}},
5282*4882a593Smuzhiyun {"mfivor13",	XSPR(31,339,413), XSPR_MASK, BOOKE,	0,		{RT}},
5283*4882a593Smuzhiyun {"mfivor14",	XSPR(31,339,414), XSPR_MASK, BOOKE,	0,		{RT}},
5284*4882a593Smuzhiyun {"mfivor15",	XSPR(31,339,415), XSPR_MASK, BOOKE,	0,		{RT}},
5285*4882a593Smuzhiyun {"mfspefscr",	XSPR(31,339,512), XSPR_MASK, PPCSPE,	0,		{RT}},
5286*4882a593Smuzhiyun {"mfbbear",	XSPR(31,339,513), XSPR_MASK, PPCBRLK,	0,		{RT}},
5287*4882a593Smuzhiyun {"mfbbtar",	XSPR(31,339,514), XSPR_MASK, PPCBRLK,	0,		{RT}},
5288*4882a593Smuzhiyun {"mfivor32",	XSPR(31,339,528), XSPR_MASK, PPCSPE,	0,		{RT}},
5289*4882a593Smuzhiyun {"mfibatu",	XSPR(31,339,528), XSPRBAT_MASK, PPC,	TITAN,		{RT, SPRBAT}},
5290*4882a593Smuzhiyun {"mfivor33",	XSPR(31,339,529), XSPR_MASK, PPCSPE,	0,		{RT}},
5291*4882a593Smuzhiyun {"mfibatl",	XSPR(31,339,529), XSPRBAT_MASK, PPC,	TITAN,		{RT, SPRBAT}},
5292*4882a593Smuzhiyun {"mfivor34",	XSPR(31,339,530), XSPR_MASK, PPCSPE,	0,		{RT}},
5293*4882a593Smuzhiyun {"mfivor35",	XSPR(31,339,531), XSPR_MASK, PPCPMR,	0,		{RT}},
5294*4882a593Smuzhiyun {"mfdbatu",	XSPR(31,339,536), XSPRBAT_MASK, PPC,	TITAN,		{RT, SPRBAT}},
5295*4882a593Smuzhiyun {"mfdbatl",	XSPR(31,339,537), XSPRBAT_MASK, PPC,	TITAN,		{RT, SPRBAT}},
5296*4882a593Smuzhiyun {"mfic_cst",	XSPR(31,339,560), XSPR_MASK, PPC860,	0,		{RT}},
5297*4882a593Smuzhiyun {"mfic_adr",	XSPR(31,339,561), XSPR_MASK, PPC860,	0,		{RT}},
5298*4882a593Smuzhiyun {"mfic_dat",	XSPR(31,339,562), XSPR_MASK, PPC860,	0,		{RT}},
5299*4882a593Smuzhiyun {"mfdc_cst",	XSPR(31,339,568), XSPR_MASK, PPC860,	0,		{RT}},
5300*4882a593Smuzhiyun {"mfdc_adr",	XSPR(31,339,569), XSPR_MASK, PPC860,	0,		{RT}},
5301*4882a593Smuzhiyun {"mfdc_dat",	XSPR(31,339,570), XSPR_MASK, PPC860,	0,		{RT}},
5302*4882a593Smuzhiyun {"mfmcsrr0",	XSPR(31,339,570), XSPR_MASK, PPCRFMCI,	0,		{RT}},
5303*4882a593Smuzhiyun {"mfmcsrr1",	XSPR(31,339,571), XSPR_MASK, PPCRFMCI,	0,		{RT}},
5304*4882a593Smuzhiyun {"mfmcsr",	XSPR(31,339,572), XSPR_MASK, PPCRFMCI,	0,		{RT}},
5305*4882a593Smuzhiyun {"mfmcar",	XSPR(31,339,573), XSPR_MASK, PPCRFMCI,	TITAN,		{RT}},
5306*4882a593Smuzhiyun {"mfdpdr",	XSPR(31,339,630), XSPR_MASK, PPC860,	0,		{RT}},
5307*4882a593Smuzhiyun {"mfdpir",	XSPR(31,339,631), XSPR_MASK, PPC860,	0,		{RT}},
5308*4882a593Smuzhiyun {"mfimmr",	XSPR(31,339,638), XSPR_MASK, PPC860,	0,		{RT}},
5309*4882a593Smuzhiyun {"mfmi_ctr",	XSPR(31,339,784), XSPR_MASK, PPC860,	0,		{RT}},
5310*4882a593Smuzhiyun {"mfmi_ap",	XSPR(31,339,786), XSPR_MASK, PPC860,	0,		{RT}},
5311*4882a593Smuzhiyun {"mfmi_epn",	XSPR(31,339,787), XSPR_MASK, PPC860,	0,		{RT}},
5312*4882a593Smuzhiyun {"mfmi_twc",	XSPR(31,339,789), XSPR_MASK, PPC860,	0,		{RT}},
5313*4882a593Smuzhiyun {"mfmi_rpn",	XSPR(31,339,790), XSPR_MASK, PPC860,	0,		{RT}},
5314*4882a593Smuzhiyun {"mfmd_ctr",	XSPR(31,339,792), XSPR_MASK, PPC860,	0,		{RT}},
5315*4882a593Smuzhiyun {"mfm_casid",	XSPR(31,339,793), XSPR_MASK, PPC860,	0,		{RT}},
5316*4882a593Smuzhiyun {"mfmd_ap",	XSPR(31,339,794), XSPR_MASK, PPC860,	0,		{RT}},
5317*4882a593Smuzhiyun {"mfmd_epn",	XSPR(31,339,795), XSPR_MASK, PPC860,	0,		{RT}},
5318*4882a593Smuzhiyun {"mfmd_twb",	XSPR(31,339,796), XSPR_MASK, PPC860,	0,		{RT}},
5319*4882a593Smuzhiyun {"mfmd_twc",	XSPR(31,339,797), XSPR_MASK, PPC860,	0,		{RT}},
5320*4882a593Smuzhiyun {"mfmd_rpn",	XSPR(31,339,798), XSPR_MASK, PPC860,	0,		{RT}},
5321*4882a593Smuzhiyun {"mfm_tw",	XSPR(31,339,799), XSPR_MASK, PPC860,	0,		{RT}},
5322*4882a593Smuzhiyun {"mfmi_dbcam",	XSPR(31,339,816), XSPR_MASK, PPC860,	0,		{RT}},
5323*4882a593Smuzhiyun {"mfmi_dbram0",	XSPR(31,339,817), XSPR_MASK, PPC860,	0,		{RT}},
5324*4882a593Smuzhiyun {"mfmi_dbram1",	XSPR(31,339,818), XSPR_MASK, PPC860,	0,		{RT}},
5325*4882a593Smuzhiyun {"mfmd_dbcam",	XSPR(31,339,824), XSPR_MASK, PPC860,	0,		{RT}},
5326*4882a593Smuzhiyun {"mfmd_dbram0",	XSPR(31,339,825), XSPR_MASK, PPC860,	0,		{RT}},
5327*4882a593Smuzhiyun {"mfmd_dbram1",	XSPR(31,339,826), XSPR_MASK, PPC860,	0,		{RT}},
5328*4882a593Smuzhiyun {"mfivndx",	XSPR(31,339,880), XSPR_MASK, TITAN,	0,		{RT}},
5329*4882a593Smuzhiyun {"mfdvndx",	XSPR(31,339,881), XSPR_MASK, TITAN,	0,		{RT}},
5330*4882a593Smuzhiyun {"mfivlim",	XSPR(31,339,882), XSPR_MASK, TITAN,	0,		{RT}},
5331*4882a593Smuzhiyun {"mfdvlim",	XSPR(31,339,883), XSPR_MASK, TITAN,	0,		{RT}},
5332*4882a593Smuzhiyun {"mfclcsr",	XSPR(31,339,884), XSPR_MASK, TITAN,	0,		{RT}},
5333*4882a593Smuzhiyun {"mfccr1",	XSPR(31,339,888), XSPR_MASK, TITAN,	0,		{RT}},
5334*4882a593Smuzhiyun {"mfppr",	XSPR(31,339,896), XSPR_MASK, POWER7,	0,		{RT}},
5335*4882a593Smuzhiyun {"mfppr32",	XSPR(31,339,898), XSPR_MASK, POWER7,	0,		{RT}},
5336*4882a593Smuzhiyun {"mfrstcfg",	XSPR(31,339,923), XSPR_MASK, TITAN,	0,		{RT}},
5337*4882a593Smuzhiyun {"mfdcdbtrl",	XSPR(31,339,924), XSPR_MASK, TITAN,	0,		{RT}},
5338*4882a593Smuzhiyun {"mfdcdbtrh",	XSPR(31,339,925), XSPR_MASK, TITAN,	0,		{RT}},
5339*4882a593Smuzhiyun {"mficdbtr",	XSPR(31,339,927), XSPR_MASK, TITAN,	0,		{RT}},
5340*4882a593Smuzhiyun {"mfummcr0",	XSPR(31,339,936), XSPR_MASK, PPC750,	0,		{RT}},
5341*4882a593Smuzhiyun {"mfupmc1",	XSPR(31,339,937), XSPR_MASK, PPC750,	0,		{RT}},
5342*4882a593Smuzhiyun {"mfupmc2",	XSPR(31,339,938), XSPR_MASK, PPC750,	0,		{RT}},
5343*4882a593Smuzhiyun {"mfusia",	XSPR(31,339,939), XSPR_MASK, PPC750,	0,		{RT}},
5344*4882a593Smuzhiyun {"mfummcr1",	XSPR(31,339,940), XSPR_MASK, PPC750,	0,		{RT}},
5345*4882a593Smuzhiyun {"mfupmc3",	XSPR(31,339,941), XSPR_MASK, PPC750,	0,		{RT}},
5346*4882a593Smuzhiyun {"mfupmc4",	XSPR(31,339,942), XSPR_MASK, PPC750,	0,		{RT}},
5347*4882a593Smuzhiyun {"mfzpr",	XSPR(31,339,944), XSPR_MASK, PPC403,	0,		{RT}},
5348*4882a593Smuzhiyun {"mfpid",	XSPR(31,339,945), XSPR_MASK, PPC403,	0,		{RT}},
5349*4882a593Smuzhiyun {"mfmmucr",	XSPR(31,339,946), XSPR_MASK, TITAN,	0,		{RT}},
5350*4882a593Smuzhiyun {"mfccr0",	XSPR(31,339,947), XSPR_MASK, PPC405|TITAN, 0,		{RT}},
5351*4882a593Smuzhiyun {"mfiac3",	XSPR(31,339,948), XSPR_MASK, PPC405,	0,		{RT}},
5352*4882a593Smuzhiyun {"mfiac4",	XSPR(31,339,949), XSPR_MASK, PPC405,	0,		{RT}},
5353*4882a593Smuzhiyun {"mfdvc1",	XSPR(31,339,950), XSPR_MASK, PPC405,	0,		{RT}},
5354*4882a593Smuzhiyun {"mfdvc2",	XSPR(31,339,951), XSPR_MASK, PPC405,	0,		{RT}},
5355*4882a593Smuzhiyun {"mfmmcr0",	XSPR(31,339,952), XSPR_MASK, PPC750,	0,		{RT}},
5356*4882a593Smuzhiyun {"mfpmc1",	XSPR(31,339,953), XSPR_MASK, PPC750,	0,		{RT}},
5357*4882a593Smuzhiyun {"mfsgr",	XSPR(31,339,953), XSPR_MASK, PPC403,	0,		{RT}},
5358*4882a593Smuzhiyun {"mfdcwr",	XSPR(31,339,954), XSPR_MASK, PPC403,	0,		{RT}},
5359*4882a593Smuzhiyun {"mfpmc2",	XSPR(31,339,954), XSPR_MASK, PPC750,	0,		{RT}},
5360*4882a593Smuzhiyun {"mfsia",	XSPR(31,339,955), XSPR_MASK, PPC750,	0,		{RT}},
5361*4882a593Smuzhiyun {"mfsler",	XSPR(31,339,955), XSPR_MASK, PPC405,	0,		{RT}},
5362*4882a593Smuzhiyun {"mfmmcr1",	XSPR(31,339,956), XSPR_MASK, PPC750,	0,		{RT}},
5363*4882a593Smuzhiyun {"mfsu0r",	XSPR(31,339,956), XSPR_MASK, PPC405,	0,		{RT}},
5364*4882a593Smuzhiyun {"mfdbcr1",	XSPR(31,339,957), XSPR_MASK, PPC405,	0,		{RT}},
5365*4882a593Smuzhiyun {"mfpmc3",	XSPR(31,339,957), XSPR_MASK, PPC750,	0,		{RT}},
5366*4882a593Smuzhiyun {"mfpmc4",	XSPR(31,339,958), XSPR_MASK, PPC750,	0,		{RT}},
5367*4882a593Smuzhiyun {"mficdbdr",	XSPR(31,339,979), XSPR_MASK, PPC403|TITAN, 0,		{RT}},
5368*4882a593Smuzhiyun {"mfesr",	XSPR(31,339,980), XSPR_MASK, PPC403,	0,		{RT}},
5369*4882a593Smuzhiyun {"mfdear",	XSPR(31,339,981), XSPR_MASK, PPC403,	0,		{RT}},
5370*4882a593Smuzhiyun {"mfevpr",	XSPR(31,339,982), XSPR_MASK, PPC403,	0,		{RT}},
5371*4882a593Smuzhiyun {"mfcdbcr",	XSPR(31,339,983), XSPR_MASK, PPC403,	0,		{RT}},
5372*4882a593Smuzhiyun {"mftsr",	XSPR(31,339,984), XSPR_MASK, PPC403,	0,		{RT}},
5373*4882a593Smuzhiyun {"mftcr",	XSPR(31,339,986), XSPR_MASK, PPC403,	0,		{RT}},
5374*4882a593Smuzhiyun {"mfpit",	XSPR(31,339,987), XSPR_MASK, PPC403,	0,		{RT}},
5375*4882a593Smuzhiyun {"mftbhi",	XSPR(31,339,988), XSPR_MASK, PPC403,	0,		{RT}},
5376*4882a593Smuzhiyun {"mftblo",	XSPR(31,339,989), XSPR_MASK, PPC403,	0,		{RT}},
5377*4882a593Smuzhiyun {"mfsrr2",	XSPR(31,339,990), XSPR_MASK, PPC403,	0,		{RT}},
5378*4882a593Smuzhiyun {"mfsrr3",	XSPR(31,339,991), XSPR_MASK, PPC403,	0,		{RT}},
5379*4882a593Smuzhiyun {"mfdbsr",	XSPR(31,339,1008), XSPR_MASK, PPC403,	0,		{RT}},
5380*4882a593Smuzhiyun {"mfdbcr0",	XSPR(31,339,1010), XSPR_MASK, PPC405,	0,		{RT}},
5381*4882a593Smuzhiyun {"mfdbdr",	XSPR(31,339,1011), XSPR_MASK, TITAN,	0,		{RS}},
5382*4882a593Smuzhiyun {"mfiac1",	XSPR(31,339,1012), XSPR_MASK, PPC403,	0,		{RT}},
5383*4882a593Smuzhiyun {"mfiac2",	XSPR(31,339,1013), XSPR_MASK, PPC403,	0,		{RT}},
5384*4882a593Smuzhiyun {"mfdac1",	XSPR(31,339,1014), XSPR_MASK, PPC403,	0,		{RT}},
5385*4882a593Smuzhiyun {"mfdac2",	XSPR(31,339,1015), XSPR_MASK, PPC403,	0,		{RT}},
5386*4882a593Smuzhiyun {"mfl2cr",	XSPR(31,339,1017), XSPR_MASK, PPC750,	0,		{RT}},
5387*4882a593Smuzhiyun {"mfdccr",	XSPR(31,339,1018), XSPR_MASK, PPC403,	0,		{RT}},
5388*4882a593Smuzhiyun {"mficcr",	XSPR(31,339,1019), XSPR_MASK, PPC403,	0,		{RT}},
5389*4882a593Smuzhiyun {"mfictc",	XSPR(31,339,1019), XSPR_MASK, PPC750,	0,		{RT}},
5390*4882a593Smuzhiyun {"mfpbl1",	XSPR(31,339,1020), XSPR_MASK, PPC403,	0,		{RT}},
5391*4882a593Smuzhiyun {"mfthrm1",	XSPR(31,339,1020), XSPR_MASK, PPC750,	0,		{RT}},
5392*4882a593Smuzhiyun {"mfpbu1",	XSPR(31,339,1021), XSPR_MASK, PPC403,	0,		{RT}},
5393*4882a593Smuzhiyun {"mfthrm2",	XSPR(31,339,1021), XSPR_MASK, PPC750,	0,		{RT}},
5394*4882a593Smuzhiyun {"mfpbl2",	XSPR(31,339,1022), XSPR_MASK, PPC403,	0,		{RT}},
5395*4882a593Smuzhiyun {"mfthrm3",	XSPR(31,339,1022), XSPR_MASK, PPC750,	0,		{RT}},
5396*4882a593Smuzhiyun {"mfpbu2",	XSPR(31,339,1023), XSPR_MASK, PPC403,	0,		{RT}},
5397*4882a593Smuzhiyun {"mfspr",	X(31,339),	X_MASK,	     COM,	0,		{RT, SPR}},
5398*4882a593Smuzhiyun 
5399*4882a593Smuzhiyun {"lwax",	X(31,341),	X_MASK,	     PPC64,	0,		{RT, RA0, RB}},
5400*4882a593Smuzhiyun 
5401*4882a593Smuzhiyun {"dst",		XDSS(31,342,0),	XDSS_MASK,   PPCVEC,	0,		{RA, RB, STRM}},
5402*4882a593Smuzhiyun 
5403*4882a593Smuzhiyun {"lhax",	X(31,343),	X_MASK,	     COM,	0,		{RT, RA0, RB}},
5404*4882a593Smuzhiyun 
5405*4882a593Smuzhiyun {"lvxl",	X(31,359),	X_MASK,	     PPCVEC,	0,		{VD, RA0, RB}},
5406*4882a593Smuzhiyun 
5407*4882a593Smuzhiyun {"abs",		XO(31,360,0,0),	XORB_MASK,   M601,	0,		{RT, RA}},
5408*4882a593Smuzhiyun {"abs.",	XO(31,360,0,1),	XORB_MASK,   M601,	0,		{RT, RA}},
5409*4882a593Smuzhiyun 
5410*4882a593Smuzhiyun {"divs",	XO(31,363,0,0),	XO_MASK,     M601,	0,		{RT, RA, RB}},
5411*4882a593Smuzhiyun {"divs.",	XO(31,363,0,1),	XO_MASK,     M601,	0,		{RT, RA, RB}},
5412*4882a593Smuzhiyun 
5413*4882a593Smuzhiyun {"lxvwsx",	X(31,364),	XX1_MASK,    PPCVSX3,	0,		{XT6, RA0, RB}},
5414*4882a593Smuzhiyun 
5415*4882a593Smuzhiyun {"tlbia",	X(31,370),	0xffffffff,  PPC,	E500|TITAN,	{0}},
5416*4882a593Smuzhiyun 
5417*4882a593Smuzhiyun {"mftbu",	XSPR(31,371,269), XSPR_MASK, PPC,	NO371|POWER4,	{RT}},
5418*4882a593Smuzhiyun {"mftb",	X(31,371),	X_MASK,	     PPC,	NO371|POWER4,	{RT, TBR}},
5419*4882a593Smuzhiyun {"mftbl",	XSPR(31,371,268), XSPR_MASK, PPC,	NO371|POWER4,	{RT}},
5420*4882a593Smuzhiyun 
5421*4882a593Smuzhiyun {"lwaux",	X(31,373),	X_MASK,	     PPC64,	0,		{RT, RAL, RB}},
5422*4882a593Smuzhiyun 
5423*4882a593Smuzhiyun {"dstst",	XDSS(31,374,0),	XDSS_MASK,   PPCVEC,	0,		{RA, RB, STRM}},
5424*4882a593Smuzhiyun 
5425*4882a593Smuzhiyun {"lhaux",	X(31,375),	X_MASK,	     COM,	0,		{RT, RAL, RB}},
5426*4882a593Smuzhiyun 
5427*4882a593Smuzhiyun {"popcntw",	X(31,378),	XRB_MASK,    POWER7|PPCA2, 0,		{RA, RS}},
5428*4882a593Smuzhiyun 
5429*4882a593Smuzhiyun {"mtdcrx",	X(31,387),	X_MASK,	     BOOKE|PPCA2|PPC476, TITAN,	{RA, RS}},
5430*4882a593Smuzhiyun {"mtdcrx.",	XRC(31,387,1),	X_MASK,	     PPCA2,	0,		{RA, RS}},
5431*4882a593Smuzhiyun 
5432*4882a593Smuzhiyun {"stvexbx",	X(31,389),	X_MASK,	     PPCVEC2,	0,		{VS, RA0, RB}},
5433*4882a593Smuzhiyun 
5434*4882a593Smuzhiyun {"dcblc",	X(31,390),	X_MASK,	 PPCCHLK|PPC476|TITAN, 0,	{CT, RA0, RB}},
5435*4882a593Smuzhiyun {"stdfcmx",	APU(31,391,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
5436*4882a593Smuzhiyun 
5437*4882a593Smuzhiyun {"divdeu",	XO(31,393,0,0),	XO_MASK,     POWER7|PPCA2, 0,		{RT, RA, RB}},
5438*4882a593Smuzhiyun {"divdeu.",	XO(31,393,0,1),	XO_MASK,     POWER7|PPCA2, 0,		{RT, RA, RB}},
5439*4882a593Smuzhiyun {"divweu",	XO(31,395,0,0),	XO_MASK,     POWER7|PPCA2, 0,		{RT, RA, RB}},
5440*4882a593Smuzhiyun {"divweu.",	XO(31,395,0,1),	XO_MASK,     POWER7|PPCA2, 0,		{RT, RA, RB}},
5441*4882a593Smuzhiyun 
5442*4882a593Smuzhiyun {"stxvx",	X(31,396),	XX1_MASK,    PPCVSX3,	0,		{XS6, RA0, RB}},
5443*4882a593Smuzhiyun {"stxvl",	X(31,397),	XX1_MASK,    PPCVSX3,	0,		{XS6, RA0, RB}},
5444*4882a593Smuzhiyun 
5445*4882a593Smuzhiyun {"dcblce",	X(31,398),	X_MASK,	     PPCCHLK,	E500MC,		{CT, RA, RB}},
5446*4882a593Smuzhiyun 
5447*4882a593Smuzhiyun {"slbmte",	X(31,402),	XRA_MASK,    PPC64,	0,		{RS, RB}},
5448*4882a593Smuzhiyun 
5449*4882a593Smuzhiyun {"mtvsrws",	X(31,403),	XX1RB_MASK,  PPCVSX3,	0,		{XT6, RA}},
5450*4882a593Smuzhiyun 
5451*4882a593Smuzhiyun {"pbt.",	XRC(31,404,1),	X_MASK,	     POWER8,	0,		{RS, RA0, RB}},
5452*4882a593Smuzhiyun 
5453*4882a593Smuzhiyun {"icswx",	XRC(31,406,0),	X_MASK,	  POWER7|PPCA2,	0,		{RS, RA, RB}},
5454*4882a593Smuzhiyun {"icswx.",	XRC(31,406,1),	X_MASK,	  POWER7|PPCA2,	0,		{RS, RA, RB}},
5455*4882a593Smuzhiyun 
5456*4882a593Smuzhiyun {"sthx",	X(31,407),	X_MASK,	     COM,	0,		{RS, RA0, RB}},
5457*4882a593Smuzhiyun 
5458*4882a593Smuzhiyun {"orc",		XRC(31,412,0),	X_MASK,	     COM,	0,		{RA, RS, RB}},
5459*4882a593Smuzhiyun {"orc.",	XRC(31,412,1),	X_MASK,	     COM,	0,		{RA, RS, RB}},
5460*4882a593Smuzhiyun 
5461*4882a593Smuzhiyun {"sthepx",	X(31,415),	X_MASK,	  E500MC|PPCA2, 0,		{RS, RA0, RB}},
5462*4882a593Smuzhiyun 
5463*4882a593Smuzhiyun {"mtdcrux",	X(31,419),	X_MASK,	     PPC464,	0,		{RA, RS}},
5464*4882a593Smuzhiyun 
5465*4882a593Smuzhiyun {"stvexhx",	X(31,421),	X_MASK,	     PPCVEC2,	0,		{VS, RA0, RB}},
5466*4882a593Smuzhiyun 
5467*4882a593Smuzhiyun {"dcblq.",	XRC(31,422,1),	X_MASK,	     E6500,	0,		{CT, RA0, RB}},
5468*4882a593Smuzhiyun 
5469*4882a593Smuzhiyun {"divde",	XO(31,425,0,0),	XO_MASK,  POWER7|PPCA2,	0,		{RT, RA, RB}},
5470*4882a593Smuzhiyun {"divde.",	XO(31,425,0,1),	XO_MASK,  POWER7|PPCA2,	0,		{RT, RA, RB}},
5471*4882a593Smuzhiyun {"divwe",	XO(31,427,0,0),	XO_MASK,  POWER7|PPCA2,	0,		{RT, RA, RB}},
5472*4882a593Smuzhiyun {"divwe.",	XO(31,427,0,1),	XO_MASK,  POWER7|PPCA2,	0,		{RT, RA, RB}},
5473*4882a593Smuzhiyun 
5474*4882a593Smuzhiyun {"stxvll",	X(31,429),	XX1_MASK,    PPCVSX3,	0,		{XS6, RA0, RB}},
5475*4882a593Smuzhiyun 
5476*4882a593Smuzhiyun {"clrbhrb",	X(31,430),	0xffffffff,  POWER8,	0,		{0}},
5477*4882a593Smuzhiyun 
5478*4882a593Smuzhiyun {"slbie",	X(31,434),	XRTRA_MASK,  PPC64,	0,		{RB}},
5479*4882a593Smuzhiyun 
5480*4882a593Smuzhiyun {"mtvsrdd",	X(31,435),	XX1_MASK,    PPCVSX3,	0,		{XT6, RA0, RB}},
5481*4882a593Smuzhiyun 
5482*4882a593Smuzhiyun {"ecowx",	X(31,438),	X_MASK,	     PPC,	E500|TITAN,	{RT, RA0, RB}},
5483*4882a593Smuzhiyun 
5484*4882a593Smuzhiyun {"sthux",	X(31,439),	X_MASK,	     COM,	0,		{RS, RAS, RB}},
5485*4882a593Smuzhiyun 
5486*4882a593Smuzhiyun {"mdors",	0x7f9ce378,	0xffffffff,  E500MC,	0,		{0}},
5487*4882a593Smuzhiyun 
5488*4882a593Smuzhiyun {"miso",	0x7f5ad378,	0xffffffff,  E6500,	0,		{0}},
5489*4882a593Smuzhiyun 
5490*4882a593Smuzhiyun /* The "yield", "mdoio" and "mdoom" instructions are extended mnemonics for
5491*4882a593Smuzhiyun    "or rX,rX,rX", with rX being r27, r29 and r30 respectively.	*/
5492*4882a593Smuzhiyun {"yield",	0x7f7bdb78,	0xffffffff,  POWER7,	0,		{0}},
5493*4882a593Smuzhiyun {"mdoio",	0x7fbdeb78,	0xffffffff,  POWER7,	0,		{0}},
5494*4882a593Smuzhiyun {"mdoom",	0x7fdef378,	0xffffffff,  POWER7,	0,		{0}},
5495*4882a593Smuzhiyun {"mr",		XRC(31,444,0),	X_MASK,	     COM,	0,		{RA, RS, RBS}},
5496*4882a593Smuzhiyun {"or",		XRC(31,444,0),	X_MASK,	     COM,	0,		{RA, RS, RB}},
5497*4882a593Smuzhiyun {"mr.",		XRC(31,444,1),	X_MASK,	     COM,	0,		{RA, RS, RBS}},
5498*4882a593Smuzhiyun {"or.",		XRC(31,444,1),	X_MASK,	     COM,	0,		{RA, RS, RB}},
5499*4882a593Smuzhiyun 
5500*4882a593Smuzhiyun {"mtexisr",	XSPR(31,451, 64), XSPR_MASK, PPC403,	0,		{RS}},
5501*4882a593Smuzhiyun {"mtexier",	XSPR(31,451, 66), XSPR_MASK, PPC403,	0,		{RS}},
5502*4882a593Smuzhiyun {"mtbr0",	XSPR(31,451,128), XSPR_MASK, PPC403,	0,		{RS}},
5503*4882a593Smuzhiyun {"mtbr1",	XSPR(31,451,129), XSPR_MASK, PPC403,	0,		{RS}},
5504*4882a593Smuzhiyun {"mtbr2",	XSPR(31,451,130), XSPR_MASK, PPC403,	0,		{RS}},
5505*4882a593Smuzhiyun {"mtbr3",	XSPR(31,451,131), XSPR_MASK, PPC403,	0,		{RS}},
5506*4882a593Smuzhiyun {"mtbr4",	XSPR(31,451,132), XSPR_MASK, PPC403,	0,		{RS}},
5507*4882a593Smuzhiyun {"mtbr5",	XSPR(31,451,133), XSPR_MASK, PPC403,	0,		{RS}},
5508*4882a593Smuzhiyun {"mtbr6",	XSPR(31,451,134), XSPR_MASK, PPC403,	0,		{RS}},
5509*4882a593Smuzhiyun {"mtbr7",	XSPR(31,451,135), XSPR_MASK, PPC403,	0,		{RS}},
5510*4882a593Smuzhiyun {"mtbear",	XSPR(31,451,144), XSPR_MASK, PPC403,	0,		{RS}},
5511*4882a593Smuzhiyun {"mtbesr",	XSPR(31,451,145), XSPR_MASK, PPC403,	0,		{RS}},
5512*4882a593Smuzhiyun {"mtiocr",	XSPR(31,451,160), XSPR_MASK, PPC403,	0,		{RS}},
5513*4882a593Smuzhiyun {"mtdmacr0",	XSPR(31,451,192), XSPR_MASK, PPC403,	0,		{RS}},
5514*4882a593Smuzhiyun {"mtdmact0",	XSPR(31,451,193), XSPR_MASK, PPC403,	0,		{RS}},
5515*4882a593Smuzhiyun {"mtdmada0",	XSPR(31,451,194), XSPR_MASK, PPC403,	0,		{RS}},
5516*4882a593Smuzhiyun {"mtdmasa0",	XSPR(31,451,195), XSPR_MASK, PPC403,	0,		{RS}},
5517*4882a593Smuzhiyun {"mtdmacc0",	XSPR(31,451,196), XSPR_MASK, PPC403,	0,		{RS}},
5518*4882a593Smuzhiyun {"mtdmacr1",	XSPR(31,451,200), XSPR_MASK, PPC403,	0,		{RS}},
5519*4882a593Smuzhiyun {"mtdmact1",	XSPR(31,451,201), XSPR_MASK, PPC403,	0,		{RS}},
5520*4882a593Smuzhiyun {"mtdmada1",	XSPR(31,451,202), XSPR_MASK, PPC403,	0,		{RS}},
5521*4882a593Smuzhiyun {"mtdmasa1",	XSPR(31,451,203), XSPR_MASK, PPC403,	0,		{RS}},
5522*4882a593Smuzhiyun {"mtdmacc1",	XSPR(31,451,204), XSPR_MASK, PPC403,	0,		{RS}},
5523*4882a593Smuzhiyun {"mtdmacr2",	XSPR(31,451,208), XSPR_MASK, PPC403,	0,		{RS}},
5524*4882a593Smuzhiyun {"mtdmact2",	XSPR(31,451,209), XSPR_MASK, PPC403,	0,		{RS}},
5525*4882a593Smuzhiyun {"mtdmada2",	XSPR(31,451,210), XSPR_MASK, PPC403,	0,		{RS}},
5526*4882a593Smuzhiyun {"mtdmasa2",	XSPR(31,451,211), XSPR_MASK, PPC403,	0,		{RS}},
5527*4882a593Smuzhiyun {"mtdmacc2",	XSPR(31,451,212), XSPR_MASK, PPC403,	0,		{RS}},
5528*4882a593Smuzhiyun {"mtdmacr3",	XSPR(31,451,216), XSPR_MASK, PPC403,	0,		{RS}},
5529*4882a593Smuzhiyun {"mtdmact3",	XSPR(31,451,217), XSPR_MASK, PPC403,	0,		{RS}},
5530*4882a593Smuzhiyun {"mtdmada3",	XSPR(31,451,218), XSPR_MASK, PPC403,	0,		{RS}},
5531*4882a593Smuzhiyun {"mtdmasa3",	XSPR(31,451,219), XSPR_MASK, PPC403,	0,		{RS}},
5532*4882a593Smuzhiyun {"mtdmacc3",	XSPR(31,451,220), XSPR_MASK, PPC403,	0,		{RS}},
5533*4882a593Smuzhiyun {"mtdmasr",	XSPR(31,451,224), XSPR_MASK, PPC403,	0,		{RS}},
5534*4882a593Smuzhiyun {"mtdcr",	X(31,451), X_MASK, PPC403|BOOKE|PPCA2|PPC476, E500|TITAN, {SPR, RS}},
5535*4882a593Smuzhiyun {"mtdcr.",	XRC(31,451,1), X_MASK,	     PPCA2,	0,		{SPR, RS}},
5536*4882a593Smuzhiyun 
5537*4882a593Smuzhiyun {"stvexwx",	X(31,453),	X_MASK,	     PPCVEC2,	0,		{VS, RA0, RB}},
5538*4882a593Smuzhiyun 
5539*4882a593Smuzhiyun {"dccci",	X(31,454), XRT_MASK, PPC403|PPC440|TITAN|PPCA2, 0,	{RAOPT, RBOPT}},
5540*4882a593Smuzhiyun {"dci",		X(31,454),	XRARB_MASK, PPCA2|PPC476, 0,		{CT}},
5541*4882a593Smuzhiyun 
5542*4882a593Smuzhiyun {"divdu",	XO(31,457,0,0),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
5543*4882a593Smuzhiyun {"divdu.",	XO(31,457,0,1),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
5544*4882a593Smuzhiyun 
5545*4882a593Smuzhiyun {"divwu",	XO(31,459,0,0),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
5546*4882a593Smuzhiyun {"divwu.",	XO(31,459,0,1),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
5547*4882a593Smuzhiyun 
5548*4882a593Smuzhiyun {"mtpmr",	X(31,462),	X_MASK, PPCPMR|PPCE300, 0,		{PMR, RS}},
5549*4882a593Smuzhiyun {"mttmr",	X(31,494),	X_MASK,	PPCTMR|E6500,	0,		{TMR, RS}},
5550*4882a593Smuzhiyun 
5551*4882a593Smuzhiyun {"slbieg",	X(31,466),	XRA_MASK,    POWER9,	0,		{RS, RB}},
5552*4882a593Smuzhiyun 
5553*4882a593Smuzhiyun {"mtmq",	XSPR(31,467,  0), XSPR_MASK, M601,	0,		{RS}},
5554*4882a593Smuzhiyun {"mtxer",	XSPR(31,467,  1), XSPR_MASK, COM,	0,		{RS}},
5555*4882a593Smuzhiyun {"mtlr",	XSPR(31,467,  8), XSPR_MASK, COM,	0,		{RS}},
5556*4882a593Smuzhiyun {"mtctr",	XSPR(31,467,  9), XSPR_MASK, COM,	0,		{RS}},
5557*4882a593Smuzhiyun {"mtdscr",	XSPR(31,467, 17), XSPR_MASK, POWER6,	0,		{RS}},
5558*4882a593Smuzhiyun {"mttid",	XSPR(31,467, 17), XSPR_MASK, POWER,	0,		{RS}},
5559*4882a593Smuzhiyun {"mtdsisr",	XSPR(31,467, 18), XSPR_MASK, COM,	TITAN,		{RS}},
5560*4882a593Smuzhiyun {"mtdar",	XSPR(31,467, 19), XSPR_MASK, COM,	TITAN,		{RS}},
5561*4882a593Smuzhiyun {"mtrtcu",	XSPR(31,467, 20), XSPR_MASK, COM,	TITAN,		{RS}},
5562*4882a593Smuzhiyun {"mtrtcl",	XSPR(31,467, 21), XSPR_MASK, COM,	TITAN,		{RS}},
5563*4882a593Smuzhiyun {"mtdec",	XSPR(31,467, 22), XSPR_MASK, COM,	0,		{RS}},
5564*4882a593Smuzhiyun {"mtsdr0",	XSPR(31,467, 24), XSPR_MASK, POWER,	0,		{RS}},
5565*4882a593Smuzhiyun {"mtsdr1",	XSPR(31,467, 25), XSPR_MASK, COM,	TITAN,		{RS}},
5566*4882a593Smuzhiyun {"mtsrr0",	XSPR(31,467, 26), XSPR_MASK, COM,	0,		{RS}},
5567*4882a593Smuzhiyun {"mtsrr1",	XSPR(31,467, 27), XSPR_MASK, COM,	0,		{RS}},
5568*4882a593Smuzhiyun {"mtcfar",	XSPR(31,467, 28), XSPR_MASK, POWER6,	0,		{RS}},
5569*4882a593Smuzhiyun {"mtpid",	XSPR(31,467, 48), XSPR_MASK, BOOKE,	0,		{RS}},
5570*4882a593Smuzhiyun {"mtdecar",	XSPR(31,467, 54), XSPR_MASK, BOOKE,	0,		{RS}},
5571*4882a593Smuzhiyun {"mtcsrr0",	XSPR(31,467, 58), XSPR_MASK, BOOKE,	0,		{RS}},
5572*4882a593Smuzhiyun {"mtcsrr1",	XSPR(31,467, 59), XSPR_MASK, BOOKE,	0,		{RS}},
5573*4882a593Smuzhiyun {"mtdear",	XSPR(31,467, 61), XSPR_MASK, BOOKE,	0,		{RS}},
5574*4882a593Smuzhiyun {"mtesr",	XSPR(31,467, 62), XSPR_MASK, BOOKE,	0,		{RS}},
5575*4882a593Smuzhiyun {"mtivpr",	XSPR(31,467, 63), XSPR_MASK, BOOKE,	0,		{RS}},
5576*4882a593Smuzhiyun {"mtcmpa",	XSPR(31,467,144), XSPR_MASK, PPC860,	0,		{RS}},
5577*4882a593Smuzhiyun {"mtcmpb",	XSPR(31,467,145), XSPR_MASK, PPC860,	0,		{RS}},
5578*4882a593Smuzhiyun {"mtcmpc",	XSPR(31,467,146), XSPR_MASK, PPC860,	0,		{RS}},
5579*4882a593Smuzhiyun {"mtcmpd",	XSPR(31,467,147), XSPR_MASK, PPC860,	0,		{RS}},
5580*4882a593Smuzhiyun {"mticr",	XSPR(31,467,148), XSPR_MASK, PPC860,	0,		{RS}},
5581*4882a593Smuzhiyun {"mtder",	XSPR(31,467,149), XSPR_MASK, PPC860,	0,		{RS}},
5582*4882a593Smuzhiyun {"mtcounta",	XSPR(31,467,150), XSPR_MASK, PPC860,	0,		{RS}},
5583*4882a593Smuzhiyun {"mtcountb",	XSPR(31,467,151), XSPR_MASK, PPC860,	0,		{RS}},
5584*4882a593Smuzhiyun {"mtctrl",	XSPR(31,467,152), XSPR_MASK, POWER4,	0,		{RS}},
5585*4882a593Smuzhiyun {"mtcmpe",	XSPR(31,467,152), XSPR_MASK, PPC860,	0,		{RS}},
5586*4882a593Smuzhiyun {"mtcmpf",	XSPR(31,467,153), XSPR_MASK, PPC860,	0,		{RS}},
5587*4882a593Smuzhiyun {"mtcmpg",	XSPR(31,467,154), XSPR_MASK, PPC860,	0,		{RS}},
5588*4882a593Smuzhiyun {"mtcmph",	XSPR(31,467,155), XSPR_MASK, PPC860,	0,		{RS}},
5589*4882a593Smuzhiyun {"mtlctrl1",	XSPR(31,467,156), XSPR_MASK, PPC860,	0,		{RS}},
5590*4882a593Smuzhiyun {"mtlctrl2",	XSPR(31,467,157), XSPR_MASK, PPC860,	0,		{RS}},
5591*4882a593Smuzhiyun {"mtictrl",	XSPR(31,467,158), XSPR_MASK, PPC860,	0,		{RS}},
5592*4882a593Smuzhiyun {"mtbar",	XSPR(31,467,159), XSPR_MASK, PPC860,	0,		{RS}},
5593*4882a593Smuzhiyun {"mtvrsave",	XSPR(31,467,256), XSPR_MASK, PPCVEC,	0,		{RS}},
5594*4882a593Smuzhiyun {"mtusprg0",	XSPR(31,467,256), XSPR_MASK, BOOKE,	0,		{RS}},
5595*4882a593Smuzhiyun {"mtsprg",	XSPR(31,467,256), XSPRG_MASK, PPC,	0,		{SPRG, RS}},
5596*4882a593Smuzhiyun {"mtsprg0",	XSPR(31,467,272), XSPR_MASK, PPC,	0,		{RS}},
5597*4882a593Smuzhiyun {"mtsprg1",	XSPR(31,467,273), XSPR_MASK, PPC,	0,		{RS}},
5598*4882a593Smuzhiyun {"mtsprg2",	XSPR(31,467,274), XSPR_MASK, PPC,	0,		{RS}},
5599*4882a593Smuzhiyun {"mtsprg3",	XSPR(31,467,275), XSPR_MASK, PPC,	0,		{RS}},
5600*4882a593Smuzhiyun {"mtsprg4",	XSPR(31,467,276), XSPR_MASK, PPC405|BOOKE, 0,		{RS}},
5601*4882a593Smuzhiyun {"mtsprg5",	XSPR(31,467,277), XSPR_MASK, PPC405|BOOKE, 0,		{RS}},
5602*4882a593Smuzhiyun {"mtsprg6",	XSPR(31,467,278), XSPR_MASK, PPC405|BOOKE, 0,		{RS}},
5603*4882a593Smuzhiyun {"mtsprg7",	XSPR(31,467,279), XSPR_MASK, PPC405|BOOKE, 0,		{RS}},
5604*4882a593Smuzhiyun {"mtasr",	XSPR(31,467,280), XSPR_MASK, PPC64,	0,		{RS}},
5605*4882a593Smuzhiyun {"mtear",	XSPR(31,467,282), XSPR_MASK, PPC,	TITAN,		{RS}},
5606*4882a593Smuzhiyun {"mttbl",	XSPR(31,467,284), XSPR_MASK, PPC,	0,		{RS}},
5607*4882a593Smuzhiyun {"mttbu",	XSPR(31,467,285), XSPR_MASK, PPC,	0,		{RS}},
5608*4882a593Smuzhiyun {"mtdbsr",	XSPR(31,467,304), XSPR_MASK, BOOKE,	0,		{RS}},
5609*4882a593Smuzhiyun {"mtdbcr0",	XSPR(31,467,308), XSPR_MASK, BOOKE,	0,		{RS}},
5610*4882a593Smuzhiyun {"mtdbcr1",	XSPR(31,467,309), XSPR_MASK, BOOKE,	0,		{RS}},
5611*4882a593Smuzhiyun {"mtdbcr2",	XSPR(31,467,310), XSPR_MASK, BOOKE,	0,		{RS}},
5612*4882a593Smuzhiyun {"mtiac1",	XSPR(31,467,312), XSPR_MASK, BOOKE,	0,		{RS}},
5613*4882a593Smuzhiyun {"mtiac2",	XSPR(31,467,313), XSPR_MASK, BOOKE,	0,		{RS}},
5614*4882a593Smuzhiyun {"mtiac3",	XSPR(31,467,314), XSPR_MASK, BOOKE,	0,		{RS}},
5615*4882a593Smuzhiyun {"mtiac4",	XSPR(31,467,315), XSPR_MASK, BOOKE,	0,		{RS}},
5616*4882a593Smuzhiyun {"mtdac1",	XSPR(31,467,316), XSPR_MASK, BOOKE,	0,		{RS}},
5617*4882a593Smuzhiyun {"mtdac2",	XSPR(31,467,317), XSPR_MASK, BOOKE,	0,		{RS}},
5618*4882a593Smuzhiyun {"mtdvc1",	XSPR(31,467,318), XSPR_MASK, BOOKE,	0,		{RS}},
5619*4882a593Smuzhiyun {"mtdvc2",	XSPR(31,467,319), XSPR_MASK, BOOKE,	0,		{RS}},
5620*4882a593Smuzhiyun {"mttsr",	XSPR(31,467,336), XSPR_MASK, BOOKE,	0,		{RS}},
5621*4882a593Smuzhiyun {"mttcr",	XSPR(31,467,340), XSPR_MASK, BOOKE,	0,		{RS}},
5622*4882a593Smuzhiyun {"mtivor0",	XSPR(31,467,400), XSPR_MASK, BOOKE,	0,		{RS}},
5623*4882a593Smuzhiyun {"mtivor1",	XSPR(31,467,401), XSPR_MASK, BOOKE,	0,		{RS}},
5624*4882a593Smuzhiyun {"mtivor2",	XSPR(31,467,402), XSPR_MASK, BOOKE,	0,		{RS}},
5625*4882a593Smuzhiyun {"mtivor3",	XSPR(31,467,403), XSPR_MASK, BOOKE,	0,		{RS}},
5626*4882a593Smuzhiyun {"mtivor4",	XSPR(31,467,404), XSPR_MASK, BOOKE,	0,		{RS}},
5627*4882a593Smuzhiyun {"mtivor5",	XSPR(31,467,405), XSPR_MASK, BOOKE,	0,		{RS}},
5628*4882a593Smuzhiyun {"mtivor6",	XSPR(31,467,406), XSPR_MASK, BOOKE,	0,		{RS}},
5629*4882a593Smuzhiyun {"mtivor7",	XSPR(31,467,407), XSPR_MASK, BOOKE,	0,		{RS}},
5630*4882a593Smuzhiyun {"mtivor8",	XSPR(31,467,408), XSPR_MASK, BOOKE,	0,		{RS}},
5631*4882a593Smuzhiyun {"mtivor9",	XSPR(31,467,409), XSPR_MASK, BOOKE,	0,		{RS}},
5632*4882a593Smuzhiyun {"mtivor10",	XSPR(31,467,410), XSPR_MASK, BOOKE,	0,		{RS}},
5633*4882a593Smuzhiyun {"mtivor11",	XSPR(31,467,411), XSPR_MASK, BOOKE,	0,		{RS}},
5634*4882a593Smuzhiyun {"mtivor12",	XSPR(31,467,412), XSPR_MASK, BOOKE,	0,		{RS}},
5635*4882a593Smuzhiyun {"mtivor13",	XSPR(31,467,413), XSPR_MASK, BOOKE,	0,		{RS}},
5636*4882a593Smuzhiyun {"mtivor14",	XSPR(31,467,414), XSPR_MASK, BOOKE,	0,		{RS}},
5637*4882a593Smuzhiyun {"mtivor15",	XSPR(31,467,415), XSPR_MASK, BOOKE,	0,		{RS}},
5638*4882a593Smuzhiyun {"mtspefscr",	XSPR(31,467,512), XSPR_MASK, PPCSPE,	0,		{RS}},
5639*4882a593Smuzhiyun {"mtbbear",	XSPR(31,467,513), XSPR_MASK, PPCBRLK,	0,		{RS}},
5640*4882a593Smuzhiyun {"mtbbtar",	XSPR(31,467,514), XSPR_MASK, PPCBRLK,	0,		{RS}},
5641*4882a593Smuzhiyun {"mtivor32",	XSPR(31,467,528), XSPR_MASK, PPCSPE,	0,		{RS}},
5642*4882a593Smuzhiyun {"mtibatu",	XSPR(31,467,528), XSPRBAT_MASK, PPC,	TITAN,		{SPRBAT, RS}},
5643*4882a593Smuzhiyun {"mtivor33",	XSPR(31,467,529), XSPR_MASK, PPCSPE,	0,		{RS}},
5644*4882a593Smuzhiyun {"mtibatl",	XSPR(31,467,529), XSPRBAT_MASK, PPC,	TITAN,		{SPRBAT, RS}},
5645*4882a593Smuzhiyun {"mtivor34",	XSPR(31,467,530), XSPR_MASK, PPCSPE,	0,		{RS}},
5646*4882a593Smuzhiyun {"mtivor35",	XSPR(31,467,531), XSPR_MASK, PPCPMR,	0,		{RS}},
5647*4882a593Smuzhiyun {"mtdbatu",	XSPR(31,467,536), XSPRBAT_MASK, PPC,	TITAN,		{SPRBAT, RS}},
5648*4882a593Smuzhiyun {"mtdbatl",	XSPR(31,467,537), XSPRBAT_MASK, PPC,	TITAN,		{SPRBAT, RS}},
5649*4882a593Smuzhiyun {"mtmcsrr0",	XSPR(31,467,570), XSPR_MASK, PPCRFMCI,	0,		{RS}},
5650*4882a593Smuzhiyun {"mtmcsrr1",	XSPR(31,467,571), XSPR_MASK, PPCRFMCI,	0,		{RS}},
5651*4882a593Smuzhiyun {"mtmcsr",	XSPR(31,467,572), XSPR_MASK, PPCRFMCI,	0,		{RS}},
5652*4882a593Smuzhiyun {"mtivndx",	XSPR(31,467,880), XSPR_MASK, TITAN,	0,		{RS}},
5653*4882a593Smuzhiyun {"mtdvndx",	XSPR(31,467,881), XSPR_MASK, TITAN,	0,		{RS}},
5654*4882a593Smuzhiyun {"mtivlim",	XSPR(31,467,882), XSPR_MASK, TITAN,	0,		{RS}},
5655*4882a593Smuzhiyun {"mtdvlim",	XSPR(31,467,883), XSPR_MASK, TITAN,	0,		{RS}},
5656*4882a593Smuzhiyun {"mtclcsr",	XSPR(31,467,884), XSPR_MASK, TITAN,	0,		{RS}},
5657*4882a593Smuzhiyun {"mtccr1",	XSPR(31,467,888), XSPR_MASK, TITAN,	0,		{RS}},
5658*4882a593Smuzhiyun {"mtppr",	XSPR(31,467,896), XSPR_MASK, POWER7,	0,		{RS}},
5659*4882a593Smuzhiyun {"mtppr32",	XSPR(31,467,898), XSPR_MASK, POWER7,	0,		{RS}},
5660*4882a593Smuzhiyun {"mtummcr0",	XSPR(31,467,936), XSPR_MASK, PPC750,	0,		{RS}},
5661*4882a593Smuzhiyun {"mtupmc1",	XSPR(31,467,937), XSPR_MASK, PPC750,	0,		{RS}},
5662*4882a593Smuzhiyun {"mtupmc2",	XSPR(31,467,938), XSPR_MASK, PPC750,	0,		{RS}},
5663*4882a593Smuzhiyun {"mtusia",	XSPR(31,467,939), XSPR_MASK, PPC750,	0,		{RS}},
5664*4882a593Smuzhiyun {"mtummcr1",	XSPR(31,467,940), XSPR_MASK, PPC750,	0,		{RS}},
5665*4882a593Smuzhiyun {"mtupmc3",	XSPR(31,467,941), XSPR_MASK, PPC750,	0,		{RS}},
5666*4882a593Smuzhiyun {"mtupmc4",	XSPR(31,467,942), XSPR_MASK, PPC750,	0,		{RS}},
5667*4882a593Smuzhiyun {"mtzpr",	XSPR(31,467,944), XSPR_MASK, PPC403,	0,		{RS}},
5668*4882a593Smuzhiyun {"mtpid",	XSPR(31,467,945), XSPR_MASK, PPC403,	0,		{RS}},
5669*4882a593Smuzhiyun {"mtrmmucr",	XSPR(31,467,946), XSPR_MASK, TITAN,	0,		{RS}},
5670*4882a593Smuzhiyun {"mtccr0",	XSPR(31,467,947), XSPR_MASK, PPC405|TITAN, 0,		{RS}},
5671*4882a593Smuzhiyun {"mtiac3",	XSPR(31,467,948), XSPR_MASK, PPC405,	0,		{RS}},
5672*4882a593Smuzhiyun {"mtiac4",	XSPR(31,467,949), XSPR_MASK, PPC405,	0,		{RS}},
5673*4882a593Smuzhiyun {"mtdvc1",	XSPR(31,467,950), XSPR_MASK, PPC405,	0,		{RS}},
5674*4882a593Smuzhiyun {"mtdvc2",	XSPR(31,467,951), XSPR_MASK, PPC405,	0,		{RS}},
5675*4882a593Smuzhiyun {"mtmmcr0",	XSPR(31,467,952), XSPR_MASK, PPC750,	0,		{RS}},
5676*4882a593Smuzhiyun {"mtpmc1",	XSPR(31,467,953), XSPR_MASK, PPC750,	0,		{RS}},
5677*4882a593Smuzhiyun {"mtsgr",	XSPR(31,467,953), XSPR_MASK, PPC403,	0,		{RS}},
5678*4882a593Smuzhiyun {"mtdcwr",	XSPR(31,467,954), XSPR_MASK, PPC403,	0,		{RS}},
5679*4882a593Smuzhiyun {"mtpmc2",	XSPR(31,467,954), XSPR_MASK, PPC750,	0,		{RS}},
5680*4882a593Smuzhiyun {"mtsia",	XSPR(31,467,955), XSPR_MASK, PPC750,	0,		{RS}},
5681*4882a593Smuzhiyun {"mtsler",	XSPR(31,467,955), XSPR_MASK, PPC405,	0,		{RS}},
5682*4882a593Smuzhiyun {"mtmmcr1",	XSPR(31,467,956), XSPR_MASK, PPC750,	0,		{RS}},
5683*4882a593Smuzhiyun {"mtsu0r",	XSPR(31,467,956), XSPR_MASK, PPC405,	0,		{RS}},
5684*4882a593Smuzhiyun {"mtdbcr1",	XSPR(31,467,957), XSPR_MASK, PPC405,	0,		{RS}},
5685*4882a593Smuzhiyun {"mtpmc3",	XSPR(31,467,957), XSPR_MASK, PPC750,	0,		{RS}},
5686*4882a593Smuzhiyun {"mtpmc4",	XSPR(31,467,958), XSPR_MASK, PPC750,	0,		{RS}},
5687*4882a593Smuzhiyun {"mticdbdr",	XSPR(31,467,979), XSPR_MASK, PPC403,	0,		{RS}},
5688*4882a593Smuzhiyun {"mtesr",	XSPR(31,467,980), XSPR_MASK, PPC403,	0,		{RS}},
5689*4882a593Smuzhiyun {"mtdear",	XSPR(31,467,981), XSPR_MASK, PPC403,	0,		{RS}},
5690*4882a593Smuzhiyun {"mtevpr",	XSPR(31,467,982), XSPR_MASK, PPC403,	0,		{RS}},
5691*4882a593Smuzhiyun {"mtcdbcr",	XSPR(31,467,983), XSPR_MASK, PPC403,	0,		{RS}},
5692*4882a593Smuzhiyun {"mttsr",	XSPR(31,467,984), XSPR_MASK, PPC403,	0,		{RS}},
5693*4882a593Smuzhiyun {"mttcr",	XSPR(31,467,986), XSPR_MASK, PPC403,	0,		{RS}},
5694*4882a593Smuzhiyun {"mtpit",	XSPR(31,467,987), XSPR_MASK, PPC403,	0,		{RS}},
5695*4882a593Smuzhiyun {"mttbhi",	XSPR(31,467,988), XSPR_MASK, PPC403,	0,		{RS}},
5696*4882a593Smuzhiyun {"mttblo",	XSPR(31,467,989), XSPR_MASK, PPC403,	0,		{RS}},
5697*4882a593Smuzhiyun {"mtsrr2",	XSPR(31,467,990), XSPR_MASK, PPC403,	0,		{RS}},
5698*4882a593Smuzhiyun {"mtsrr3",	XSPR(31,467,991), XSPR_MASK, PPC403,	0,		{RS}},
5699*4882a593Smuzhiyun {"mtdbsr",	XSPR(31,467,1008), XSPR_MASK, PPC403,	0,		{RS}},
5700*4882a593Smuzhiyun {"mtdbdr",	XSPR(31,467,1011), XSPR_MASK, TITAN,	0,		{RS}},
5701*4882a593Smuzhiyun {"mtdbcr0",	XSPR(31,467,1010), XSPR_MASK, PPC405,	0,		{RS}},
5702*4882a593Smuzhiyun {"mtiac1",	XSPR(31,467,1012), XSPR_MASK, PPC403,	0,		{RS}},
5703*4882a593Smuzhiyun {"mtiac2",	XSPR(31,467,1013), XSPR_MASK, PPC403,	0,		{RS}},
5704*4882a593Smuzhiyun {"mtdac1",	XSPR(31,467,1014), XSPR_MASK, PPC403,	0,		{RS}},
5705*4882a593Smuzhiyun {"mtdac2",	XSPR(31,467,1015), XSPR_MASK, PPC403,	0,		{RS}},
5706*4882a593Smuzhiyun {"mtl2cr",	XSPR(31,467,1017), XSPR_MASK, PPC750,	0,		{RS}},
5707*4882a593Smuzhiyun {"mtdccr",	XSPR(31,467,1018), XSPR_MASK, PPC403,	0,		{RS}},
5708*4882a593Smuzhiyun {"mticcr",	XSPR(31,467,1019), XSPR_MASK, PPC403,	0,		{RS}},
5709*4882a593Smuzhiyun {"mtictc",	XSPR(31,467,1019), XSPR_MASK, PPC750,	0,		{RS}},
5710*4882a593Smuzhiyun {"mtpbl1",	XSPR(31,467,1020), XSPR_MASK, PPC403,	0,		{RS}},
5711*4882a593Smuzhiyun {"mtthrm1",	XSPR(31,467,1020), XSPR_MASK, PPC750,	0,		{RS}},
5712*4882a593Smuzhiyun {"mtpbu1",	XSPR(31,467,1021), XSPR_MASK, PPC403,	0,		{RS}},
5713*4882a593Smuzhiyun {"mtthrm2",	XSPR(31,467,1021), XSPR_MASK, PPC750,	0,		{RS}},
5714*4882a593Smuzhiyun {"mtpbl2",	XSPR(31,467,1022), XSPR_MASK, PPC403,	0,		{RS}},
5715*4882a593Smuzhiyun {"mtthrm3",	XSPR(31,467,1022), XSPR_MASK, PPC750,	0,		{RS}},
5716*4882a593Smuzhiyun {"mtpbu2",	XSPR(31,467,1023), XSPR_MASK, PPC403,	0,		{RS}},
5717*4882a593Smuzhiyun {"mtspr",	X(31,467),	X_MASK,	     COM,	0,		{SPR, RS}},
5718*4882a593Smuzhiyun 
5719*4882a593Smuzhiyun {"dcbi",	X(31,470),	XRT_MASK,    PPC,	0,		{RA0, RB}},
5720*4882a593Smuzhiyun 
5721*4882a593Smuzhiyun {"nand",	XRC(31,476,0),	X_MASK,	     COM,	0,		{RA, RS, RB}},
5722*4882a593Smuzhiyun {"nand.",	XRC(31,476,1),	X_MASK,	     COM,	0,		{RA, RS, RB}},
5723*4882a593Smuzhiyun 
5724*4882a593Smuzhiyun {"dsn",		X(31,483),	XRT_MASK,    E500MC,	0,		{RA, RB}},
5725*4882a593Smuzhiyun 
5726*4882a593Smuzhiyun {"dcread",	X(31,486),	X_MASK,	 PPC403|PPC440, PPCA2|PPC476,	{RT, RA0, RB}},
5727*4882a593Smuzhiyun 
5728*4882a593Smuzhiyun {"icbtls",	X(31,486),	X_MASK,	 PPCCHLK|PPC476|TITAN, 0,	{CT, RA0, RB}},
5729*4882a593Smuzhiyun 
5730*4882a593Smuzhiyun {"stvxl",	X(31,487),	X_MASK,	     PPCVEC,	0,		{VS, RA0, RB}},
5731*4882a593Smuzhiyun 
5732*4882a593Smuzhiyun {"nabs",	XO(31,488,0,0),	XORB_MASK,   M601,	0,		{RT, RA}},
5733*4882a593Smuzhiyun {"nabs.",	XO(31,488,0,1),	XORB_MASK,   M601,	0,		{RT, RA}},
5734*4882a593Smuzhiyun 
5735*4882a593Smuzhiyun {"divd",	XO(31,489,0,0),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
5736*4882a593Smuzhiyun {"divd.",	XO(31,489,0,1),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
5737*4882a593Smuzhiyun 
5738*4882a593Smuzhiyun {"divw",	XO(31,491,0,0),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
5739*4882a593Smuzhiyun {"divw.",	XO(31,491,0,1),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
5740*4882a593Smuzhiyun 
5741*4882a593Smuzhiyun {"icbtlse",	X(31,494),	X_MASK,	     PPCCHLK,	E500MC,		{CT, RA, RB}},
5742*4882a593Smuzhiyun 
5743*4882a593Smuzhiyun {"slbia",	X(31,498),	0xff1fffff,  POWER6,	0,		{IH}},
5744*4882a593Smuzhiyun {"slbia",	X(31,498),	0xffffffff,  PPC64,	POWER6,		{0}},
5745*4882a593Smuzhiyun 
5746*4882a593Smuzhiyun {"cli",		X(31,502),	XRB_MASK,    POWER,	0,		{RT, RA}},
5747*4882a593Smuzhiyun 
5748*4882a593Smuzhiyun {"popcntd",	X(31,506),	XRB_MASK, POWER7|PPCA2,	0,		{RA, RS}},
5749*4882a593Smuzhiyun 
5750*4882a593Smuzhiyun {"cmpb",	X(31,508),	X_MASK, POWER6|PPCA2|PPC476, 0,		{RA, RS, RB}},
5751*4882a593Smuzhiyun 
5752*4882a593Smuzhiyun {"mcrxr",	X(31,512),	XBFRARB_MASK, COM,	POWER7,		{BF}},
5753*4882a593Smuzhiyun 
5754*4882a593Smuzhiyun {"lbdcbx",	X(31,514),	X_MASK,      E200Z4,	0,		{RT, RA, RB}},
5755*4882a593Smuzhiyun {"lbdx",	X(31,515),	X_MASK,	     E500MC,	0,		{RT, RA, RB}},
5756*4882a593Smuzhiyun 
5757*4882a593Smuzhiyun {"bblels",	X(31,518),	X_MASK,	     PPCBRLK,	0,		{0}},
5758*4882a593Smuzhiyun 
5759*4882a593Smuzhiyun {"lvlx",	X(31,519),	X_MASK,	     CELL,	0,		{VD, RA0, RB}},
5760*4882a593Smuzhiyun {"lbfcmux",	APU(31,519,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
5761*4882a593Smuzhiyun 
5762*4882a593Smuzhiyun {"subfco",	XO(31,8,1,0),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
5763*4882a593Smuzhiyun {"sfo",		XO(31,8,1,0),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
5764*4882a593Smuzhiyun {"subco",	XO(31,8,1,0),	XO_MASK,     PPCCOM,	0,		{RT, RB, RA}},
5765*4882a593Smuzhiyun {"subfco.",	XO(31,8,1,1),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
5766*4882a593Smuzhiyun {"sfo.",	XO(31,8,1,1),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
5767*4882a593Smuzhiyun {"subco.",	XO(31,8,1,1),	XO_MASK,     PPCCOM,	0,		{RT, RB, RA}},
5768*4882a593Smuzhiyun 
5769*4882a593Smuzhiyun {"addco",	XO(31,10,1,0),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
5770*4882a593Smuzhiyun {"ao",		XO(31,10,1,0),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
5771*4882a593Smuzhiyun {"addco.",	XO(31,10,1,1),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
5772*4882a593Smuzhiyun {"ao.",		XO(31,10,1,1),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
5773*4882a593Smuzhiyun 
5774*4882a593Smuzhiyun {"lxsspx",	X(31,524),	XX1_MASK,    PPCVSX2,	0,		{XT6, RA0, RB}},
5775*4882a593Smuzhiyun 
5776*4882a593Smuzhiyun {"clcs",	X(31,531),	XRB_MASK,    M601,	0,		{RT, RA}},
5777*4882a593Smuzhiyun 
5778*4882a593Smuzhiyun {"ldbrx",	X(31,532),	X_MASK, CELL|POWER7|PPCA2, 0,		{RT, RA0, RB}},
5779*4882a593Smuzhiyun 
5780*4882a593Smuzhiyun {"lswx",	X(31,533),	X_MASK,	     PPCCOM,	E500|E500MC,	{RT, RAX, RBX}},
5781*4882a593Smuzhiyun {"lsx",		X(31,533),	X_MASK,	     PWRCOM,	0,		{RT, RA, RB}},
5782*4882a593Smuzhiyun 
5783*4882a593Smuzhiyun {"lwbrx",	X(31,534),	X_MASK,	     PPCCOM,	0,		{RT, RA0, RB}},
5784*4882a593Smuzhiyun {"lbrx",	X(31,534),	X_MASK,	     PWRCOM,	0,		{RT, RA, RB}},
5785*4882a593Smuzhiyun 
5786*4882a593Smuzhiyun {"lfsx",	X(31,535),	X_MASK,	     COM,	PPCEFS,		{FRT, RA0, RB}},
5787*4882a593Smuzhiyun 
5788*4882a593Smuzhiyun {"srw",		XRC(31,536,0),	X_MASK,	     PPCCOM,	0,		{RA, RS, RB}},
5789*4882a593Smuzhiyun {"sr",		XRC(31,536,0),	X_MASK,	     PWRCOM,	0,		{RA, RS, RB}},
5790*4882a593Smuzhiyun {"srw.",	XRC(31,536,1),	X_MASK,	     PPCCOM,	0,		{RA, RS, RB}},
5791*4882a593Smuzhiyun {"sr.",		XRC(31,536,1),	X_MASK,	     PWRCOM,	0,		{RA, RS, RB}},
5792*4882a593Smuzhiyun 
5793*4882a593Smuzhiyun {"rrib",	XRC(31,537,0),	X_MASK,	     M601,	0,		{RA, RS, RB}},
5794*4882a593Smuzhiyun {"rrib.",	XRC(31,537,1),	X_MASK,	     M601,	0,		{RA, RS, RB}},
5795*4882a593Smuzhiyun 
5796*4882a593Smuzhiyun {"cnttzw",	XRC(31,538,0),	XRB_MASK,    POWER9,	0,		{RA, RS}},
5797*4882a593Smuzhiyun {"cnttzw.",	XRC(31,538,1),	XRB_MASK,    POWER9,	0,		{RA, RS}},
5798*4882a593Smuzhiyun 
5799*4882a593Smuzhiyun {"srd",		XRC(31,539,0),	X_MASK,	     PPC64,	0,		{RA, RS, RB}},
5800*4882a593Smuzhiyun {"srd.",	XRC(31,539,1),	X_MASK,	     PPC64,	0,		{RA, RS, RB}},
5801*4882a593Smuzhiyun 
5802*4882a593Smuzhiyun {"maskir",	XRC(31,541,0),	X_MASK,	     M601,	0,		{RA, RS, RB}},
5803*4882a593Smuzhiyun {"maskir.",	XRC(31,541,1),	X_MASK,	     M601,	0,		{RA, RS, RB}},
5804*4882a593Smuzhiyun 
5805*4882a593Smuzhiyun {"lhdcbx",	X(31,546),	X_MASK,      E200Z4,	0,		{RT, RA, RB}},
5806*4882a593Smuzhiyun {"lhdx",	X(31,547),	X_MASK,	     E500MC,	0,		{RT, RA, RB}},
5807*4882a593Smuzhiyun 
5808*4882a593Smuzhiyun {"lvtrx",	X(31,549),	X_MASK,	     PPCVEC2,	0,		{VD, RA0, RB}},
5809*4882a593Smuzhiyun 
5810*4882a593Smuzhiyun {"bbelr",	X(31,550),	X_MASK,	     PPCBRLK,	0,		{0}},
5811*4882a593Smuzhiyun 
5812*4882a593Smuzhiyun {"lvrx",	X(31,551),	X_MASK,	     CELL,	0,		{VD, RA0, RB}},
5813*4882a593Smuzhiyun {"lhfcmux",	APU(31,551,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
5814*4882a593Smuzhiyun 
5815*4882a593Smuzhiyun {"subfo",	XO(31,40,1,0),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
5816*4882a593Smuzhiyun {"subo",	XO(31,40,1,0),	XO_MASK,     PPC,	0,		{RT, RB, RA}},
5817*4882a593Smuzhiyun {"subfo.",	XO(31,40,1,1),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
5818*4882a593Smuzhiyun {"subo.",	XO(31,40,1,1),	XO_MASK,     PPC,	0,		{RT, RB, RA}},
5819*4882a593Smuzhiyun 
5820*4882a593Smuzhiyun {"tlbsync",	X(31,566),	0xffffffff,  PPC,	0,		{0}},
5821*4882a593Smuzhiyun 
5822*4882a593Smuzhiyun {"lfsux",	X(31,567),	X_MASK,	     COM,	PPCEFS,		{FRT, RAS, RB}},
5823*4882a593Smuzhiyun 
5824*4882a593Smuzhiyun {"cnttzd",	XRC(31,570,0),	XRB_MASK,    POWER9,	0,		{RA, RS}},
5825*4882a593Smuzhiyun {"cnttzd.",	XRC(31,570,1),	XRB_MASK,    POWER9,	0,		{RA, RS}},
5826*4882a593Smuzhiyun 
5827*4882a593Smuzhiyun {"mcrxrx",	X(31,576),     XBFRARB_MASK, POWER9,	0,		{BF}},
5828*4882a593Smuzhiyun 
5829*4882a593Smuzhiyun {"lwdcbx",	X(31,578),	X_MASK,      E200Z4,	0,		{RT, RA, RB}},
5830*4882a593Smuzhiyun {"lwdx",	X(31,579),	X_MASK,	     E500MC,	0,		{RT, RA, RB}},
5831*4882a593Smuzhiyun 
5832*4882a593Smuzhiyun {"lvtlx",	X(31,581),	X_MASK,	     PPCVEC2,	0,		{VD, RA0, RB}},
5833*4882a593Smuzhiyun 
5834*4882a593Smuzhiyun {"lwat",	X(31,582),	X_MASK,	     POWER9,	0,		{RT, RA0, FC}},
5835*4882a593Smuzhiyun 
5836*4882a593Smuzhiyun {"lwfcmux",	APU(31,583,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
5837*4882a593Smuzhiyun 
5838*4882a593Smuzhiyun {"lxsdx",	X(31,588),	XX1_MASK,    PPCVSX,	0,		{XT6, RA0, RB}},
5839*4882a593Smuzhiyun 
5840*4882a593Smuzhiyun {"mfsr",	X(31,595), XRB_MASK|(1<<20), COM,	NON32,		{RT, SR}},
5841*4882a593Smuzhiyun 
5842*4882a593Smuzhiyun {"lswi",	X(31,597),	X_MASK,	     PPCCOM,	E500|E500MC,	{RT, RAX, NBI}},
5843*4882a593Smuzhiyun {"lsi",		X(31,597),	X_MASK,	     PWRCOM,	0,		{RT, RA0, NB}},
5844*4882a593Smuzhiyun 
5845*4882a593Smuzhiyun {"hwsync",	XSYNC(31,598,0), 0xffffffff, POWER4,	BOOKE|PPC476,	{0}},
5846*4882a593Smuzhiyun {"lwsync",	XSYNC(31,598,1), 0xffffffff, PPC,	E500,		{0}},
5847*4882a593Smuzhiyun {"ptesync",	XSYNC(31,598,2), 0xffffffff, PPC64,	0,		{0}},
5848*4882a593Smuzhiyun {"sync",	X(31,598),     XSYNCLE_MASK, E6500,	0,		{LS, ESYNC}},
5849*4882a593Smuzhiyun {"sync",	X(31,598),     XSYNC_MASK,   PPCCOM,	BOOKE|PPC476,	{LS}},
5850*4882a593Smuzhiyun {"msync",	X(31,598),     0xffffffff, BOOKE|PPCA2|PPC476, 0,	{0}},
5851*4882a593Smuzhiyun {"sync",	X(31,598),     0xffffffff,   BOOKE|PPC476, E6500,	{0}},
5852*4882a593Smuzhiyun {"lwsync",	X(31,598),     0xffffffff,   E500,	0,		{0}},
5853*4882a593Smuzhiyun {"dcs",		X(31,598),     0xffffffff,   PWRCOM,	0,		{0}},
5854*4882a593Smuzhiyun 
5855*4882a593Smuzhiyun {"lfdx",	X(31,599),	X_MASK,	     COM,	PPCEFS,		{FRT, RA0, RB}},
5856*4882a593Smuzhiyun 
5857*4882a593Smuzhiyun {"mffgpr",	XRC(31,607,0),	XRA_MASK,    POWER6,	POWER7,		{FRT, RB}},
5858*4882a593Smuzhiyun {"lfdepx",	X(31,607),	X_MASK,	  E500MC|PPCA2, 0,		{FRT, RA0, RB}},
5859*4882a593Smuzhiyun 
5860*4882a593Smuzhiyun {"lddx",	X(31,611),	X_MASK,	     E500MC,	0,		{RT, RA, RB}},
5861*4882a593Smuzhiyun 
5862*4882a593Smuzhiyun {"lvswx",	X(31,613),	X_MASK,	     PPCVEC2,	0,		{VD, RA0, RB}},
5863*4882a593Smuzhiyun 
5864*4882a593Smuzhiyun {"ldat",	X(31,614),	X_MASK,	     POWER9,	0,		{RT, RA0, FC}},
5865*4882a593Smuzhiyun 
5866*4882a593Smuzhiyun {"lqfcmux",	APU(31,615,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
5867*4882a593Smuzhiyun 
5868*4882a593Smuzhiyun {"nego",	XO(31,104,1,0),	XORB_MASK,   COM,	0,		{RT, RA}},
5869*4882a593Smuzhiyun {"nego.",	XO(31,104,1,1),	XORB_MASK,   COM,	0,		{RT, RA}},
5870*4882a593Smuzhiyun 
5871*4882a593Smuzhiyun {"mulo",	XO(31,107,1,0),	XO_MASK,     M601,	0,		{RT, RA, RB}},
5872*4882a593Smuzhiyun {"mulo.",	XO(31,107,1,1),	XO_MASK,     M601,	0,		{RT, RA, RB}},
5873*4882a593Smuzhiyun 
5874*4882a593Smuzhiyun {"mfsri",	X(31,627),	X_MASK,	     M601,	0,		{RT, RA, RB}},
5875*4882a593Smuzhiyun 
5876*4882a593Smuzhiyun {"dclst",	X(31,630),	XRB_MASK,    M601,	0,		{RS, RA}},
5877*4882a593Smuzhiyun 
5878*4882a593Smuzhiyun {"lfdux",	X(31,631),	X_MASK,	     COM,	PPCEFS,		{FRT, RAS, RB}},
5879*4882a593Smuzhiyun 
5880*4882a593Smuzhiyun {"stbdcbx",	X(31,642),	X_MASK,      E200Z4,	0,		{RS, RA, RB}},
5881*4882a593Smuzhiyun {"stbdx",	X(31,643),	X_MASK,	     E500MC,	0,		{RS, RA, RB}},
5882*4882a593Smuzhiyun 
5883*4882a593Smuzhiyun {"stvlx",	X(31,647),	X_MASK,	     CELL,	0,		{VS, RA0, RB}},
5884*4882a593Smuzhiyun {"stbfcmux",	APU(31,647,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
5885*4882a593Smuzhiyun 
5886*4882a593Smuzhiyun {"stxsspx",	X(31,652),	XX1_MASK,    PPCVSX2,	0,		{XS6, RA0, RB}},
5887*4882a593Smuzhiyun 
5888*4882a593Smuzhiyun {"tbegin.",	XRC(31,654,1), XRTLRARB_MASK, PPCHTM,	0,		{HTM_R}},
5889*4882a593Smuzhiyun 
5890*4882a593Smuzhiyun {"subfeo",	XO(31,136,1,0),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
5891*4882a593Smuzhiyun {"sfeo",	XO(31,136,1,0),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
5892*4882a593Smuzhiyun {"subfeo.",	XO(31,136,1,1),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
5893*4882a593Smuzhiyun {"sfeo.",	XO(31,136,1,1),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
5894*4882a593Smuzhiyun 
5895*4882a593Smuzhiyun {"addeo",	XO(31,138,1,0),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
5896*4882a593Smuzhiyun {"aeo",		XO(31,138,1,0),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
5897*4882a593Smuzhiyun {"addeo.",	XO(31,138,1,1),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
5898*4882a593Smuzhiyun {"aeo.",	XO(31,138,1,1),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
5899*4882a593Smuzhiyun 
5900*4882a593Smuzhiyun {"mfsrin",	X(31,659),	XRA_MASK,    PPC,	NON32,		{RT, RB}},
5901*4882a593Smuzhiyun 
5902*4882a593Smuzhiyun {"stdbrx",	X(31,660),	X_MASK, CELL|POWER7|PPCA2, 0,		{RS, RA0, RB}},
5903*4882a593Smuzhiyun 
5904*4882a593Smuzhiyun {"stswx",	X(31,661),	X_MASK,	     PPCCOM,	E500|E500MC,	{RS, RA0, RB}},
5905*4882a593Smuzhiyun {"stsx",	X(31,661),	X_MASK,	     PWRCOM,	0,		{RS, RA0, RB}},
5906*4882a593Smuzhiyun 
5907*4882a593Smuzhiyun {"stwbrx",	X(31,662),	X_MASK,	     PPCCOM,	0,		{RS, RA0, RB}},
5908*4882a593Smuzhiyun {"stbrx",	X(31,662),	X_MASK,	     PWRCOM,	0,		{RS, RA0, RB}},
5909*4882a593Smuzhiyun 
5910*4882a593Smuzhiyun {"stfsx",	X(31,663),	X_MASK,	     COM,	PPCEFS,		{FRS, RA0, RB}},
5911*4882a593Smuzhiyun 
5912*4882a593Smuzhiyun {"srq",		XRC(31,664,0),	X_MASK,	     M601,	0,		{RA, RS, RB}},
5913*4882a593Smuzhiyun {"srq.",	XRC(31,664,1),	X_MASK,	     M601,	0,		{RA, RS, RB}},
5914*4882a593Smuzhiyun 
5915*4882a593Smuzhiyun {"sre",		XRC(31,665,0),	X_MASK,	     M601,	0,		{RA, RS, RB}},
5916*4882a593Smuzhiyun {"sre.",	XRC(31,665,1),	X_MASK,	     M601,	0,		{RA, RS, RB}},
5917*4882a593Smuzhiyun 
5918*4882a593Smuzhiyun {"sthdcbx",	X(31,674),	X_MASK,      E200Z4,	0,		{RS, RA, RB}},
5919*4882a593Smuzhiyun {"sthdx",	X(31,675),	X_MASK,	     E500MC,	0,		{RS, RA, RB}},
5920*4882a593Smuzhiyun 
5921*4882a593Smuzhiyun {"stvfrx",	X(31,677),	X_MASK,	     PPCVEC2,	0,		{VS, RA0, RB}},
5922*4882a593Smuzhiyun 
5923*4882a593Smuzhiyun {"stvrx",	X(31,679),	X_MASK,	     CELL,	0,		{VS, RA0, RB}},
5924*4882a593Smuzhiyun {"sthfcmux",	APU(31,679,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
5925*4882a593Smuzhiyun 
5926*4882a593Smuzhiyun {"tendall.",	XRC(31,686,1)|(1<<25), XRTRARB_MASK, PPCHTM, 0,		{0}},
5927*4882a593Smuzhiyun {"tend.",	XRC(31,686,1), XRTARARB_MASK, PPCHTM,	0,		{HTM_A}},
5928*4882a593Smuzhiyun 
5929*4882a593Smuzhiyun {"stbcx.",	XRC(31,694,1),	X_MASK,	  POWER8|E6500, 0,		{RS, RA0, RB}},
5930*4882a593Smuzhiyun 
5931*4882a593Smuzhiyun {"stfsux",	X(31,695),	X_MASK,	     COM,	PPCEFS,		{FRS, RAS, RB}},
5932*4882a593Smuzhiyun 
5933*4882a593Smuzhiyun {"sriq",	XRC(31,696,0),	X_MASK,	     M601,	0,		{RA, RS, SH}},
5934*4882a593Smuzhiyun {"sriq.",	XRC(31,696,1),	X_MASK,	     M601,	0,		{RA, RS, SH}},
5935*4882a593Smuzhiyun 
5936*4882a593Smuzhiyun {"stwdcbx",	X(31,706),	X_MASK,	     E200Z4,	0,		{RS, RA, RB}},
5937*4882a593Smuzhiyun {"stwdx",	X(31,707),	X_MASK,	     E500MC,	0,		{RS, RA, RB}},
5938*4882a593Smuzhiyun 
5939*4882a593Smuzhiyun {"stvflx",	X(31,709),	X_MASK,	     PPCVEC2,	0,		{VS, RA0, RB}},
5940*4882a593Smuzhiyun 
5941*4882a593Smuzhiyun {"stwat",	X(31,710),	X_MASK,	     POWER9,	0,		{RS, RA0, FC}},
5942*4882a593Smuzhiyun 
5943*4882a593Smuzhiyun {"stwfcmux",	APU(31,711,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
5944*4882a593Smuzhiyun 
5945*4882a593Smuzhiyun {"stxsdx",	X(31,716),	XX1_MASK,    PPCVSX,	0,		{XS6, RA0, RB}},
5946*4882a593Smuzhiyun 
5947*4882a593Smuzhiyun {"tcheck",	X(31,718),   XRTBFRARB_MASK, PPCHTM,	0,		{BF}},
5948*4882a593Smuzhiyun 
5949*4882a593Smuzhiyun {"subfzeo",	XO(31,200,1,0),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
5950*4882a593Smuzhiyun {"sfzeo",	XO(31,200,1,0),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
5951*4882a593Smuzhiyun {"subfzeo.",	XO(31,200,1,1),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
5952*4882a593Smuzhiyun {"sfzeo.",	XO(31,200,1,1),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
5953*4882a593Smuzhiyun 
5954*4882a593Smuzhiyun {"addzeo",	XO(31,202,1,0),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
5955*4882a593Smuzhiyun {"azeo",	XO(31,202,1,0),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
5956*4882a593Smuzhiyun {"addzeo.",	XO(31,202,1,1),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
5957*4882a593Smuzhiyun {"azeo.",	XO(31,202,1,1),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
5958*4882a593Smuzhiyun 
5959*4882a593Smuzhiyun {"stswi",	X(31,725),	X_MASK,	     PPCCOM,	E500|E500MC,	{RS, RA0, NB}},
5960*4882a593Smuzhiyun {"stsi",	X(31,725),	X_MASK,	     PWRCOM,	0,		{RS, RA0, NB}},
5961*4882a593Smuzhiyun 
5962*4882a593Smuzhiyun {"sthcx.",	XRC(31,726,1),	X_MASK,	  POWER8|E6500, 0,		{RS, RA0, RB}},
5963*4882a593Smuzhiyun 
5964*4882a593Smuzhiyun {"stfdx",	X(31,727),	X_MASK,	     COM,	PPCEFS,		{FRS, RA0, RB}},
5965*4882a593Smuzhiyun 
5966*4882a593Smuzhiyun {"srlq",	XRC(31,728,0),	X_MASK,	     M601,	0,		{RA, RS, RB}},
5967*4882a593Smuzhiyun {"srlq.",	XRC(31,728,1),	X_MASK,	     M601,	0,		{RA, RS, RB}},
5968*4882a593Smuzhiyun 
5969*4882a593Smuzhiyun {"sreq",	XRC(31,729,0),	X_MASK,	     M601,	0,		{RA, RS, RB}},
5970*4882a593Smuzhiyun {"sreq.",	XRC(31,729,1),	X_MASK,	     M601,	0,		{RA, RS, RB}},
5971*4882a593Smuzhiyun 
5972*4882a593Smuzhiyun {"mftgpr",	XRC(31,735,0),	XRA_MASK,    POWER6,	POWER7,		{RT, FRB}},
5973*4882a593Smuzhiyun {"stfdepx",	X(31,735),	X_MASK,	  E500MC|PPCA2, 0,		{FRS, RA0, RB}},
5974*4882a593Smuzhiyun 
5975*4882a593Smuzhiyun {"stddx",	X(31,739),	X_MASK,	     E500MC,	0,		{RS, RA, RB}},
5976*4882a593Smuzhiyun 
5977*4882a593Smuzhiyun {"stvswx",	X(31,741),	X_MASK,	     PPCVEC2,	0,		{VS, RA0, RB}},
5978*4882a593Smuzhiyun 
5979*4882a593Smuzhiyun {"stdat",	X(31,742),	X_MASK,	     POWER9,	0,		{RS, RA0, FC}},
5980*4882a593Smuzhiyun 
5981*4882a593Smuzhiyun {"stqfcmux",	APU(31,743,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
5982*4882a593Smuzhiyun 
5983*4882a593Smuzhiyun {"subfmeo",	XO(31,232,1,0),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
5984*4882a593Smuzhiyun {"sfmeo",	XO(31,232,1,0),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
5985*4882a593Smuzhiyun {"subfmeo.",	XO(31,232,1,1),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
5986*4882a593Smuzhiyun {"sfmeo.",	XO(31,232,1,1),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
5987*4882a593Smuzhiyun 
5988*4882a593Smuzhiyun {"mulldo",	XO(31,233,1,0),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
5989*4882a593Smuzhiyun {"mulldo.",	XO(31,233,1,1),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
5990*4882a593Smuzhiyun 
5991*4882a593Smuzhiyun {"addmeo",	XO(31,234,1,0),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
5992*4882a593Smuzhiyun {"ameo",	XO(31,234,1,0),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
5993*4882a593Smuzhiyun {"addmeo.",	XO(31,234,1,1),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
5994*4882a593Smuzhiyun {"ameo.",	XO(31,234,1,1),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
5995*4882a593Smuzhiyun 
5996*4882a593Smuzhiyun {"mullwo",	XO(31,235,1,0),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
5997*4882a593Smuzhiyun {"mulso",	XO(31,235,1,0),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
5998*4882a593Smuzhiyun {"mullwo.",	XO(31,235,1,1),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
5999*4882a593Smuzhiyun {"mulso.",	XO(31,235,1,1),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
6000*4882a593Smuzhiyun 
6001*4882a593Smuzhiyun {"tsuspend.",	XRCL(31,750,0,1), XRTRARB_MASK,PPCHTM,	0,		{0}},
6002*4882a593Smuzhiyun {"tresume.",	XRCL(31,750,1,1), XRTRARB_MASK,PPCHTM,	0,		{0}},
6003*4882a593Smuzhiyun {"tsr.",	XRC(31,750,1),	  XRTLRARB_MASK,PPCHTM,	0,		{L}},
6004*4882a593Smuzhiyun 
6005*4882a593Smuzhiyun {"darn",	X(31,755),	XLRAND_MASK, POWER9,	0,		{RT, LRAND}},
6006*4882a593Smuzhiyun 
6007*4882a593Smuzhiyun {"dcba",	X(31,758), XRT_MASK, PPC405|PPC7450|BOOKE|PPCA2|PPC476, 0, {RA0, RB}},
6008*4882a593Smuzhiyun {"dcbal",	XOPL(31,758,1), XRT_MASK,    E500MC,	0,		{RA0, RB}},
6009*4882a593Smuzhiyun 
6010*4882a593Smuzhiyun {"stfdux",	X(31,759),	X_MASK,	     COM,	PPCEFS,		{FRS, RAS, RB}},
6011*4882a593Smuzhiyun 
6012*4882a593Smuzhiyun {"srliq",	XRC(31,760,0),	X_MASK,	     M601,	0,		{RA, RS, SH}},
6013*4882a593Smuzhiyun {"srliq.",	XRC(31,760,1),	X_MASK,	     M601,	0,		{RA, RS, SH}},
6014*4882a593Smuzhiyun 
6015*4882a593Smuzhiyun {"lvsm",	X(31,773),	X_MASK,	     PPCVEC2,	0,		{VD, RA0, RB}},
6016*4882a593Smuzhiyun 
6017*4882a593Smuzhiyun {"copy",	XOPL(31,774,1),	XRT_MASK,    POWER9,	0,		{RA0, RB}},
6018*4882a593Smuzhiyun 
6019*4882a593Smuzhiyun {"stvepxl",	X(31,775),	X_MASK,	     PPCVEC2,	0,		{VS, RA0, RB}},
6020*4882a593Smuzhiyun {"lvlxl",	X(31,775),	X_MASK,	     CELL,	0,		{VD, RA0, RB}},
6021*4882a593Smuzhiyun {"ldfcmux",	APU(31,775,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
6022*4882a593Smuzhiyun 
6023*4882a593Smuzhiyun {"dozo",	XO(31,264,1,0),	XO_MASK,     M601,	0,		{RT, RA, RB}},
6024*4882a593Smuzhiyun {"dozo.",	XO(31,264,1,1),	XO_MASK,     M601,	0,		{RT, RA, RB}},
6025*4882a593Smuzhiyun 
6026*4882a593Smuzhiyun {"addo",	XO(31,266,1,0),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
6027*4882a593Smuzhiyun {"caxo",	XO(31,266,1,0),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
6028*4882a593Smuzhiyun {"addo.",	XO(31,266,1,1),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
6029*4882a593Smuzhiyun {"caxo.",	XO(31,266,1,1),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
6030*4882a593Smuzhiyun 
6031*4882a593Smuzhiyun {"modsd",	X(31,777),	X_MASK,	     POWER9,	0,		{RT, RA, RB}},
6032*4882a593Smuzhiyun {"modsw",	X(31,779),	X_MASK,	     POWER9,	0,		{RT, RA, RB}},
6033*4882a593Smuzhiyun 
6034*4882a593Smuzhiyun {"lxvw4x",	X(31,780),	XX1_MASK,    PPCVSX,	0,		{XT6, RA0, RB}},
6035*4882a593Smuzhiyun {"lxsibzx",	X(31,781),	XX1_MASK,    PPCVSX3,	0,		{XT6, RA0, RB}},
6036*4882a593Smuzhiyun 
6037*4882a593Smuzhiyun {"tabortwc.",	XRC(31,782,1),	X_MASK,	     PPCHTM,	0,		{TO, RA, RB}},
6038*4882a593Smuzhiyun 
6039*4882a593Smuzhiyun {"tlbivax",	X(31,786),	XRT_MASK, BOOKE|PPCA2|PPC476, 0,	{RA0, RB}},
6040*4882a593Smuzhiyun 
6041*4882a593Smuzhiyun {"lwzcix",	X(31,789),	X_MASK,	     POWER6,	0,		{RT, RA0, RB}},
6042*4882a593Smuzhiyun 
6043*4882a593Smuzhiyun {"lhbrx",	X(31,790),	X_MASK,	     COM,	0,		{RT, RA0, RB}},
6044*4882a593Smuzhiyun 
6045*4882a593Smuzhiyun {"lfdpx",	X(31,791),	X_MASK,	     POWER6,	POWER7,		{FRTp, RA0, RB}},
6046*4882a593Smuzhiyun {"lfqx",	X(31,791),	X_MASK,	     POWER2,	0,		{FRT, RA, RB}},
6047*4882a593Smuzhiyun 
6048*4882a593Smuzhiyun {"sraw",	XRC(31,792,0),	X_MASK,	     PPCCOM,	0,		{RA, RS, RB}},
6049*4882a593Smuzhiyun {"sra",		XRC(31,792,0),	X_MASK,	     PWRCOM,	0,		{RA, RS, RB}},
6050*4882a593Smuzhiyun {"sraw.",	XRC(31,792,1),	X_MASK,	     PPCCOM,	0,		{RA, RS, RB}},
6051*4882a593Smuzhiyun {"sra.",	XRC(31,792,1),	X_MASK,	     PWRCOM,	0,		{RA, RS, RB}},
6052*4882a593Smuzhiyun 
6053*4882a593Smuzhiyun {"srad",	XRC(31,794,0),	X_MASK,	     PPC64,	0,		{RA, RS, RB}},
6054*4882a593Smuzhiyun {"srad.",	XRC(31,794,1),	X_MASK,	     PPC64,	0,		{RA, RS, RB}},
6055*4882a593Smuzhiyun 
6056*4882a593Smuzhiyun {"lfddx",	X(31,803),	X_MASK,	     E500MC,	0,		{FRT, RA, RB}},
6057*4882a593Smuzhiyun 
6058*4882a593Smuzhiyun {"lvtrxl",	X(31,805),	X_MASK,	     PPCVEC2,	0,		{VD, RA0, RB}},
6059*4882a593Smuzhiyun {"stvepx",	X(31,807),	X_MASK,	     PPCVEC2,	0,		{VS, RA0, RB}},
6060*4882a593Smuzhiyun {"lvrxl",	X(31,807),	X_MASK,	     CELL,	0,		{VD, RA0, RB}},
6061*4882a593Smuzhiyun 
6062*4882a593Smuzhiyun {"lxvh8x",	X(31,812),	XX1_MASK,    PPCVSX3,	0,		{XT6, RA0, RB}},
6063*4882a593Smuzhiyun {"lxsihzx",	X(31,813),	XX1_MASK,    PPCVSX3,	0,		{XT6, RA0, RB}},
6064*4882a593Smuzhiyun 
6065*4882a593Smuzhiyun {"tabortdc.",	XRC(31,814,1),	X_MASK,	     PPCHTM,	0,		{TO, RA, RB}},
6066*4882a593Smuzhiyun 
6067*4882a593Smuzhiyun {"rac",		X(31,818),	X_MASK,	     M601,	0,		{RT, RA, RB}},
6068*4882a593Smuzhiyun 
6069*4882a593Smuzhiyun {"erativax",	X(31,819),	X_MASK,	     PPCA2,	0,		{RS, RA0, RB}},
6070*4882a593Smuzhiyun 
6071*4882a593Smuzhiyun {"lhzcix",	X(31,821),	X_MASK,	     POWER6,	0,		{RT, RA0, RB}},
6072*4882a593Smuzhiyun 
6073*4882a593Smuzhiyun {"dss",		XDSS(31,822,0),	XDSS_MASK,   PPCVEC,	0,		{STRM}},
6074*4882a593Smuzhiyun 
6075*4882a593Smuzhiyun {"lfqux",	X(31,823),	X_MASK,	     POWER2,	0,		{FRT, RA, RB}},
6076*4882a593Smuzhiyun 
6077*4882a593Smuzhiyun {"srawi",	XRC(31,824,0),	X_MASK,	     PPCCOM,	0,		{RA, RS, SH}},
6078*4882a593Smuzhiyun {"srai",	XRC(31,824,0),	X_MASK,	     PWRCOM,	0,		{RA, RS, SH}},
6079*4882a593Smuzhiyun {"srawi.",	XRC(31,824,1),	X_MASK,	     PPCCOM,	0,		{RA, RS, SH}},
6080*4882a593Smuzhiyun {"srai.",	XRC(31,824,1),	X_MASK,	     PWRCOM,	0,		{RA, RS, SH}},
6081*4882a593Smuzhiyun 
6082*4882a593Smuzhiyun {"sradi",	XS(31,413,0),	XS_MASK,     PPC64,	0,		{RA, RS, SH6}},
6083*4882a593Smuzhiyun {"sradi.",	XS(31,413,1),	XS_MASK,     PPC64,	0,		{RA, RS, SH6}},
6084*4882a593Smuzhiyun 
6085*4882a593Smuzhiyun {"lvtlxl",	X(31,837),	X_MASK,	     PPCVEC2,	0,		{VD, RA0, RB}},
6086*4882a593Smuzhiyun 
6087*4882a593Smuzhiyun {"cpabort",	X(31,838),	XRTRARB_MASK,POWER9,	0,		{0}},
6088*4882a593Smuzhiyun 
6089*4882a593Smuzhiyun {"divo",	XO(31,331,1,0),	XO_MASK,     M601,	0,		{RT, RA, RB}},
6090*4882a593Smuzhiyun {"divo.",	XO(31,331,1,1),	XO_MASK,     M601,	0,		{RT, RA, RB}},
6091*4882a593Smuzhiyun 
6092*4882a593Smuzhiyun {"lxvd2x",	X(31,844),	XX1_MASK,    PPCVSX,	0,		{XT6, RA0, RB}},
6093*4882a593Smuzhiyun {"lxvx",	X(31,844),	XX1_MASK,    POWER8,	POWER9|PPCVSX3,	{XT6, RA0, RB}},
6094*4882a593Smuzhiyun 
6095*4882a593Smuzhiyun {"tabortwci.",	XRC(31,846,1),	X_MASK,	     PPCHTM,	0,		{TO, RA, HTM_SI}},
6096*4882a593Smuzhiyun 
6097*4882a593Smuzhiyun {"tlbsrx.",	XRC(31,850,1),	XRT_MASK,    PPCA2,	0,		{RA0, RB}},
6098*4882a593Smuzhiyun 
6099*4882a593Smuzhiyun {"slbiag",	X(31,850),	XRARB_MASK,  POWER9,	0,		{RS}},
6100*4882a593Smuzhiyun {"slbmfev",	X(31,851),	XRLA_MASK,   POWER9,	0,		{RT, RB, A_L}},
6101*4882a593Smuzhiyun {"slbmfev",	X(31,851),	XRA_MASK,    PPC64,	POWER9,		{RT, RB}},
6102*4882a593Smuzhiyun 
6103*4882a593Smuzhiyun {"lbzcix",	X(31,853),	X_MASK,	     POWER6,	0,		{RT, RA0, RB}},
6104*4882a593Smuzhiyun 
6105*4882a593Smuzhiyun {"eieio",	X(31,854),	0xffffffff,  PPC,   BOOKE|PPCA2|PPC476,	{0}},
6106*4882a593Smuzhiyun {"mbar",	X(31,854),	X_MASK,	   BOOKE|PPCA2|PPC476, 0,	{MO}},
6107*4882a593Smuzhiyun {"eieio",	XMBAR(31,854,1),0xffffffff,  E500,	0,		{0}},
6108*4882a593Smuzhiyun {"eieio",	X(31,854),	0xffffffff, PPCA2|PPC476, 0,		{0}},
6109*4882a593Smuzhiyun 
6110*4882a593Smuzhiyun {"lfiwax",	X(31,855),	X_MASK, POWER6|PPCA2|PPC476, 0,		{FRT, RA0, RB}},
6111*4882a593Smuzhiyun 
6112*4882a593Smuzhiyun {"lvswxl",	X(31,869),	X_MASK,	     PPCVEC2,	0,		{VD, RA0, RB}},
6113*4882a593Smuzhiyun 
6114*4882a593Smuzhiyun {"abso",	XO(31,360,1,0),	XORB_MASK,   M601,	0,		{RT, RA}},
6115*4882a593Smuzhiyun {"abso.",	XO(31,360,1,1),	XORB_MASK,   M601,	0,		{RT, RA}},
6116*4882a593Smuzhiyun 
6117*4882a593Smuzhiyun {"divso",	XO(31,363,1,0),	XO_MASK,     M601,	0,		{RT, RA, RB}},
6118*4882a593Smuzhiyun {"divso.",	XO(31,363,1,1),	XO_MASK,     M601,	0,		{RT, RA, RB}},
6119*4882a593Smuzhiyun 
6120*4882a593Smuzhiyun {"lxvb16x",	X(31,876),	XX1_MASK,    PPCVSX3,	0,		{XT6, RA0, RB}},
6121*4882a593Smuzhiyun 
6122*4882a593Smuzhiyun {"tabortdci.",	XRC(31,878,1),	X_MASK,	     PPCHTM,	0,		{TO, RA, HTM_SI}},
6123*4882a593Smuzhiyun 
6124*4882a593Smuzhiyun {"rmieg",	X(31,882),	XRTRA_MASK,  POWER9,	0,		{RB}},
6125*4882a593Smuzhiyun 
6126*4882a593Smuzhiyun {"ldcix",	X(31,885),	X_MASK,	     POWER6,	0,		{RT, RA0, RB}},
6127*4882a593Smuzhiyun 
6128*4882a593Smuzhiyun {"msgsync",	X(31,886),	0xffffffff,  POWER9,	0,		{0}},
6129*4882a593Smuzhiyun 
6130*4882a593Smuzhiyun {"lfiwzx",	X(31,887),	X_MASK,	  POWER7|PPCA2,	0,		{FRT, RA0, RB}},
6131*4882a593Smuzhiyun 
6132*4882a593Smuzhiyun {"extswsli",	XS(31,445,0),	XS_MASK,     POWER9,	0,		{RA, RS, SH6}},
6133*4882a593Smuzhiyun {"extswsli.",	XS(31,445,1),	XS_MASK,     POWER9,	0,		{RA, RS, SH6}},
6134*4882a593Smuzhiyun 
6135*4882a593Smuzhiyun {"paste.",	XRCL(31,902,1,1),XRT_MASK,   POWER9,	0,		{RA0, RB}},
6136*4882a593Smuzhiyun 
6137*4882a593Smuzhiyun {"stvlxl",	X(31,903),	X_MASK,	     CELL,	0,		{VS, RA0, RB}},
6138*4882a593Smuzhiyun {"stdfcmux",	APU(31,903,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
6139*4882a593Smuzhiyun 
6140*4882a593Smuzhiyun {"divdeuo",	XO(31,393,1,0),	XO_MASK,  POWER7|PPCA2,	0,		{RT, RA, RB}},
6141*4882a593Smuzhiyun {"divdeuo.",	XO(31,393,1,1),	XO_MASK,  POWER7|PPCA2,	0,		{RT, RA, RB}},
6142*4882a593Smuzhiyun {"divweuo",	XO(31,395,1,0),	XO_MASK,  POWER7|PPCA2,	0,		{RT, RA, RB}},
6143*4882a593Smuzhiyun {"divweuo.",	XO(31,395,1,1),	XO_MASK,  POWER7|PPCA2,	0,		{RT, RA, RB}},
6144*4882a593Smuzhiyun 
6145*4882a593Smuzhiyun {"stxvw4x",	X(31,908),	XX1_MASK,    PPCVSX,	0,		{XS6, RA0, RB}},
6146*4882a593Smuzhiyun {"stxsibx",	X(31,909),	XX1_MASK,    PPCVSX3,	0,		{XS6, RA0, RB}},
6147*4882a593Smuzhiyun 
6148*4882a593Smuzhiyun {"tabort.",	XRC(31,910,1),	XRTRB_MASK,  PPCHTM,	0,		{RA}},
6149*4882a593Smuzhiyun 
6150*4882a593Smuzhiyun {"tlbsx",	XRC(31,914,0),	X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0,	{RTO, RA0, RB}},
6151*4882a593Smuzhiyun {"tlbsx.",	XRC(31,914,1),	X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0,	{RTO, RA0, RB}},
6152*4882a593Smuzhiyun 
6153*4882a593Smuzhiyun {"slbmfee",	X(31,915),	XRLA_MASK,   POWER9,	0,		{RT, RB, A_L}},
6154*4882a593Smuzhiyun {"slbmfee",	X(31,915),	XRA_MASK,    PPC64,	POWER9,		{RT, RB}},
6155*4882a593Smuzhiyun 
6156*4882a593Smuzhiyun {"stwcix",	X(31,917),	X_MASK,	     POWER6,	0,		{RS, RA0, RB}},
6157*4882a593Smuzhiyun 
6158*4882a593Smuzhiyun {"sthbrx",	X(31,918),	X_MASK,	     COM,	0,		{RS, RA0, RB}},
6159*4882a593Smuzhiyun 
6160*4882a593Smuzhiyun {"stfdpx",	X(31,919),	X_MASK,	     POWER6,	POWER7,		{FRSp, RA0, RB}},
6161*4882a593Smuzhiyun {"stfqx",	X(31,919),	X_MASK,	     POWER2,	0,		{FRS, RA0, RB}},
6162*4882a593Smuzhiyun 
6163*4882a593Smuzhiyun {"sraq",	XRC(31,920,0),	X_MASK,	     M601,	0,		{RA, RS, RB}},
6164*4882a593Smuzhiyun {"sraq.",	XRC(31,920,1),	X_MASK,	     M601,	0,		{RA, RS, RB}},
6165*4882a593Smuzhiyun 
6166*4882a593Smuzhiyun {"srea",	XRC(31,921,0),	X_MASK,	     M601,	0,		{RA, RS, RB}},
6167*4882a593Smuzhiyun {"srea.",	XRC(31,921,1),	X_MASK,	     M601,	0,		{RA, RS, RB}},
6168*4882a593Smuzhiyun 
6169*4882a593Smuzhiyun {"extsh",	XRC(31,922,0),	XRB_MASK,    PPCCOM,	0,		{RA, RS}},
6170*4882a593Smuzhiyun {"exts",	XRC(31,922,0),	XRB_MASK,    PWRCOM,	0,		{RA, RS}},
6171*4882a593Smuzhiyun {"extsh.",	XRC(31,922,1),	XRB_MASK,    PPCCOM,	0,		{RA, RS}},
6172*4882a593Smuzhiyun {"exts.",	XRC(31,922,1),	XRB_MASK,    PWRCOM,	0,		{RA, RS}},
6173*4882a593Smuzhiyun 
6174*4882a593Smuzhiyun {"stfddx",	X(31,931),	X_MASK,	     E500MC,	0,		{FRS, RA, RB}},
6175*4882a593Smuzhiyun 
6176*4882a593Smuzhiyun {"stvfrxl",	X(31,933),	X_MASK,	     PPCVEC2,	0,		{VS, RA0, RB}},
6177*4882a593Smuzhiyun 
6178*4882a593Smuzhiyun {"wclrone",	XOPL2(31,934,2),XRT_MASK,    PPCA2,	0,		{RA0, RB}},
6179*4882a593Smuzhiyun {"wclrall",	X(31,934),	XRARB_MASK,  PPCA2,	0,		{L2}},
6180*4882a593Smuzhiyun {"wclr",	X(31,934),	X_MASK,	     PPCA2,	0,		{L2, RA0, RB}},
6181*4882a593Smuzhiyun 
6182*4882a593Smuzhiyun {"stvrxl",	X(31,935),	X_MASK,	     CELL,	0,		{VS, RA0, RB}},
6183*4882a593Smuzhiyun 
6184*4882a593Smuzhiyun {"divdeo",	XO(31,425,1,0),	XO_MASK,  POWER7|PPCA2,	0,		{RT, RA, RB}},
6185*4882a593Smuzhiyun {"divdeo.",	XO(31,425,1,1),	XO_MASK,  POWER7|PPCA2,	0,		{RT, RA, RB}},
6186*4882a593Smuzhiyun {"divweo",	XO(31,427,1,0),	XO_MASK,  POWER7|PPCA2,	0,		{RT, RA, RB}},
6187*4882a593Smuzhiyun {"divweo.",	XO(31,427,1,1),	XO_MASK,  POWER7|PPCA2,	0,		{RT, RA, RB}},
6188*4882a593Smuzhiyun 
6189*4882a593Smuzhiyun {"stxvh8x",	X(31,940),	XX1_MASK,    PPCVSX3,	0,		{XS6, RA0, RB}},
6190*4882a593Smuzhiyun {"stxsihx",	X(31,941),	XX1_MASK,    PPCVSX3,	0,		{XS6, RA0, RB}},
6191*4882a593Smuzhiyun 
6192*4882a593Smuzhiyun {"treclaim.",	XRC(31,942,1),	XRTRB_MASK,  PPCHTM,	0,		{RA}},
6193*4882a593Smuzhiyun 
6194*4882a593Smuzhiyun {"tlbrehi",	XTLB(31,946,0),	XTLB_MASK,   PPC403,	PPCA2,		{RT, RA}},
6195*4882a593Smuzhiyun {"tlbrelo",	XTLB(31,946,1),	XTLB_MASK,   PPC403,	PPCA2,		{RT, RA}},
6196*4882a593Smuzhiyun {"tlbre",	X(31,946),  X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0,	{RSO, RAOPT, SHO}},
6197*4882a593Smuzhiyun 
6198*4882a593Smuzhiyun {"sthcix",	X(31,949),	X_MASK,	     POWER6,	0,		{RS, RA0, RB}},
6199*4882a593Smuzhiyun 
6200*4882a593Smuzhiyun {"icswepx",	XRC(31,950,0),	X_MASK,	     PPCA2,	0,		{RS, RA, RB}},
6201*4882a593Smuzhiyun {"icswepx.",	XRC(31,950,1),	X_MASK,	     PPCA2,	0,		{RS, RA, RB}},
6202*4882a593Smuzhiyun 
6203*4882a593Smuzhiyun {"stfqux",	X(31,951),	X_MASK,	     POWER2,	0,		{FRS, RA, RB}},
6204*4882a593Smuzhiyun 
6205*4882a593Smuzhiyun {"sraiq",	XRC(31,952,0),	X_MASK,	     M601,	0,		{RA, RS, SH}},
6206*4882a593Smuzhiyun {"sraiq.",	XRC(31,952,1),	X_MASK,	     M601,	0,		{RA, RS, SH}},
6207*4882a593Smuzhiyun 
6208*4882a593Smuzhiyun {"extsb",	XRC(31,954,0),	XRB_MASK,    PPC,	0,		{RA, RS}},
6209*4882a593Smuzhiyun {"extsb.",	XRC(31,954,1),	XRB_MASK,    PPC,	0,		{RA, RS}},
6210*4882a593Smuzhiyun 
6211*4882a593Smuzhiyun {"stvflxl",	X(31,965),	X_MASK,	     PPCVEC2,	0,		{VS, RA0, RB}},
6212*4882a593Smuzhiyun 
6213*4882a593Smuzhiyun {"iccci",	X(31,966), XRT_MASK, PPC403|PPC440|TITAN|PPCA2, 0,	 {RAOPT, RBOPT}},
6214*4882a593Smuzhiyun {"ici",		X(31,966),	XRARB_MASK,  PPCA2|PPC476, 0,		{CT}},
6215*4882a593Smuzhiyun 
6216*4882a593Smuzhiyun {"divduo",	XO(31,457,1,0),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
6217*4882a593Smuzhiyun {"divduo.",	XO(31,457,1,1),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
6218*4882a593Smuzhiyun 
6219*4882a593Smuzhiyun {"divwuo",	XO(31,459,1,0),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
6220*4882a593Smuzhiyun {"divwuo.",	XO(31,459,1,1),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
6221*4882a593Smuzhiyun 
6222*4882a593Smuzhiyun {"stxvd2x",	X(31,972),	XX1_MASK,    PPCVSX,	0,		{XS6, RA0, RB}},
6223*4882a593Smuzhiyun {"stxvx",	X(31,972),	XX1_MASK,    POWER8,	POWER9|PPCVSX3,	{XS6, RA0, RB}},
6224*4882a593Smuzhiyun 
6225*4882a593Smuzhiyun {"tlbld",	X(31,978),	XRTRA_MASK,  PPC, PPC403|BOOKE|PPCA2|PPC476, {RB}},
6226*4882a593Smuzhiyun {"tlbwehi",	XTLB(31,978,0),	XTLB_MASK,   PPC403,	0,		{RT, RA}},
6227*4882a593Smuzhiyun {"tlbwelo",	XTLB(31,978,1),	XTLB_MASK,   PPC403,	0,		{RT, RA}},
6228*4882a593Smuzhiyun {"tlbwe",	X(31,978),  X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0,	{RSO, RAOPT, SHO}},
6229*4882a593Smuzhiyun 
6230*4882a593Smuzhiyun {"slbfee.",	XRC(31,979,1),	XRA_MASK,    POWER6,	0,		{RT, RB}},
6231*4882a593Smuzhiyun 
6232*4882a593Smuzhiyun {"stbcix",	X(31,981),	X_MASK,	     POWER6,	0,		{RS, RA0, RB}},
6233*4882a593Smuzhiyun 
6234*4882a593Smuzhiyun {"icbi",	X(31,982),	XRT_MASK,    PPC,	0,		{RA0, RB}},
6235*4882a593Smuzhiyun 
6236*4882a593Smuzhiyun {"stfiwx",	X(31,983),	X_MASK,	     PPC,	PPCEFS,		{FRS, RA0, RB}},
6237*4882a593Smuzhiyun 
6238*4882a593Smuzhiyun {"extsw",	XRC(31,986,0),	XRB_MASK,    PPC64,	0,		{RA, RS}},
6239*4882a593Smuzhiyun {"extsw.",	XRC(31,986,1),	XRB_MASK,    PPC64,	0,		{RA, RS}},
6240*4882a593Smuzhiyun 
6241*4882a593Smuzhiyun {"icbiep",	XRT(31,991,0),	XRT_MASK,    E500MC|PPCA2, 0,		{RA0, RB}},
6242*4882a593Smuzhiyun 
6243*4882a593Smuzhiyun {"stvswxl",	X(31,997),	X_MASK,	     PPCVEC2,	0,		{VS, RA0, RB}},
6244*4882a593Smuzhiyun 
6245*4882a593Smuzhiyun {"icread",	X(31,998),     XRT_MASK, PPC403|PPC440|PPC476|TITAN, 0,	{RA0, RB}},
6246*4882a593Smuzhiyun 
6247*4882a593Smuzhiyun {"nabso",	XO(31,488,1,0),	XORB_MASK,   M601,	0,		{RT, RA}},
6248*4882a593Smuzhiyun {"nabso.",	XO(31,488,1,1),	XORB_MASK,   M601,	0,		{RT, RA}},
6249*4882a593Smuzhiyun 
6250*4882a593Smuzhiyun {"divdo",	XO(31,489,1,0),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
6251*4882a593Smuzhiyun {"divdo.",	XO(31,489,1,1),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
6252*4882a593Smuzhiyun 
6253*4882a593Smuzhiyun {"divwo",	XO(31,491,1,0),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
6254*4882a593Smuzhiyun {"divwo.",	XO(31,491,1,1),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
6255*4882a593Smuzhiyun 
6256*4882a593Smuzhiyun {"stxvb16x",	X(31,1004),	XX1_MASK,    PPCVSX3,	0,		{XS6, RA0, RB}},
6257*4882a593Smuzhiyun 
6258*4882a593Smuzhiyun {"trechkpt.",	XRC(31,1006,1),	XRTRARB_MASK,PPCHTM,	0,		{0}},
6259*4882a593Smuzhiyun 
6260*4882a593Smuzhiyun {"tlbli",	X(31,1010),	XRTRA_MASK,  PPC,	TITAN,		{RB}},
6261*4882a593Smuzhiyun 
6262*4882a593Smuzhiyun {"stdcix",	X(31,1013),	X_MASK,	     POWER6,	0,		{RS, RA0, RB}},
6263*4882a593Smuzhiyun 
6264*4882a593Smuzhiyun {"dcbz",	X(31,1014),	XRT_MASK,    PPC,	0,		{RA0, RB}},
6265*4882a593Smuzhiyun {"dclz",	X(31,1014),	XRT_MASK,    PPC,	0,		{RA0, RB}},
6266*4882a593Smuzhiyun 
6267*4882a593Smuzhiyun {"dcbzep",	XRT(31,1023,0),	XRT_MASK,    E500MC|PPCA2, 0,		{RA0, RB}},
6268*4882a593Smuzhiyun 
6269*4882a593Smuzhiyun {"dcbzl",	XOPL(31,1014,1), XRT_MASK,   POWER4|E500MC, PPC476,	{RA0, RB}},
6270*4882a593Smuzhiyun 
6271*4882a593Smuzhiyun {"cctpl",	0x7c210b78,	0xffffffff,  CELL,	0,		{0}},
6272*4882a593Smuzhiyun {"cctpm",	0x7c421378,	0xffffffff,  CELL,	0,		{0}},
6273*4882a593Smuzhiyun {"cctph",	0x7c631b78,	0xffffffff,  CELL,	0,		{0}},
6274*4882a593Smuzhiyun 
6275*4882a593Smuzhiyun {"dstt",	XDSS(31,342,1),	XDSS_MASK,   PPCVEC,	0,		{RA, RB, STRM}},
6276*4882a593Smuzhiyun {"dststt",	XDSS(31,374,1),	XDSS_MASK,   PPCVEC,	0,		{RA, RB, STRM}},
6277*4882a593Smuzhiyun {"dssall",	XDSS(31,822,1),	XDSS_MASK,   PPCVEC,	0,		{0}},
6278*4882a593Smuzhiyun 
6279*4882a593Smuzhiyun {"db8cyc",	0x7f9ce378,	0xffffffff,  CELL,	0,		{0}},
6280*4882a593Smuzhiyun {"db10cyc",	0x7fbdeb78,	0xffffffff,  CELL,	0,		{0}},
6281*4882a593Smuzhiyun {"db12cyc",	0x7fdef378,	0xffffffff,  CELL,	0,		{0}},
6282*4882a593Smuzhiyun {"db16cyc",	0x7ffffb78,	0xffffffff,  CELL,	0,		{0}},
6283*4882a593Smuzhiyun 
6284*4882a593Smuzhiyun {"lwz",		OP(32),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, D, RA0}},
6285*4882a593Smuzhiyun {"l",		OP(32),		OP_MASK,     PWRCOM,	PPCVLE,		{RT, D, RA0}},
6286*4882a593Smuzhiyun 
6287*4882a593Smuzhiyun {"lwzu",	OP(33),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, D, RAL}},
6288*4882a593Smuzhiyun {"lu",		OP(33),		OP_MASK,     PWRCOM,	PPCVLE,		{RT, D, RA0}},
6289*4882a593Smuzhiyun 
6290*4882a593Smuzhiyun {"lbz",		OP(34),		OP_MASK,     COM,	PPCVLE,		{RT, D, RA0}},
6291*4882a593Smuzhiyun 
6292*4882a593Smuzhiyun {"lbzu",	OP(35),		OP_MASK,     COM,	PPCVLE,		{RT, D, RAL}},
6293*4882a593Smuzhiyun 
6294*4882a593Smuzhiyun {"stw",		OP(36),		OP_MASK,     PPCCOM,	PPCVLE,		{RS, D, RA0}},
6295*4882a593Smuzhiyun {"st",		OP(36),		OP_MASK,     PWRCOM,	PPCVLE,		{RS, D, RA0}},
6296*4882a593Smuzhiyun 
6297*4882a593Smuzhiyun {"stwu",	OP(37),		OP_MASK,     PPCCOM,	PPCVLE,		{RS, D, RAS}},
6298*4882a593Smuzhiyun {"stu",		OP(37),		OP_MASK,     PWRCOM,	PPCVLE,		{RS, D, RA0}},
6299*4882a593Smuzhiyun 
6300*4882a593Smuzhiyun {"stb",		OP(38),		OP_MASK,     COM,	PPCVLE,		{RS, D, RA0}},
6301*4882a593Smuzhiyun 
6302*4882a593Smuzhiyun {"stbu",	OP(39),		OP_MASK,     COM,	PPCVLE,		{RS, D, RAS}},
6303*4882a593Smuzhiyun 
6304*4882a593Smuzhiyun {"lhz",		OP(40),		OP_MASK,     COM,	PPCVLE,		{RT, D, RA0}},
6305*4882a593Smuzhiyun 
6306*4882a593Smuzhiyun {"lhzu",	OP(41),		OP_MASK,     COM,	PPCVLE,		{RT, D, RAL}},
6307*4882a593Smuzhiyun 
6308*4882a593Smuzhiyun {"lha",		OP(42),		OP_MASK,     COM,	PPCVLE,		{RT, D, RA0}},
6309*4882a593Smuzhiyun 
6310*4882a593Smuzhiyun {"lhau",	OP(43),		OP_MASK,     COM,	PPCVLE,		{RT, D, RAL}},
6311*4882a593Smuzhiyun 
6312*4882a593Smuzhiyun {"sth",		OP(44),		OP_MASK,     COM,	PPCVLE,		{RS, D, RA0}},
6313*4882a593Smuzhiyun 
6314*4882a593Smuzhiyun {"sthu",	OP(45),		OP_MASK,     COM,	PPCVLE,		{RS, D, RAS}},
6315*4882a593Smuzhiyun 
6316*4882a593Smuzhiyun {"lmw",		OP(46),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, D, RAM}},
6317*4882a593Smuzhiyun {"lm",		OP(46),		OP_MASK,     PWRCOM,	PPCVLE,		{RT, D, RA0}},
6318*4882a593Smuzhiyun 
6319*4882a593Smuzhiyun {"stmw",	OP(47),		OP_MASK,     PPCCOM,	PPCVLE,		{RS, D, RA0}},
6320*4882a593Smuzhiyun {"stm",		OP(47),		OP_MASK,     PWRCOM,	PPCVLE,		{RS, D, RA0}},
6321*4882a593Smuzhiyun 
6322*4882a593Smuzhiyun {"lfs",		OP(48),		OP_MASK,     COM,	PPCEFS|PPCVLE,	{FRT, D, RA0}},
6323*4882a593Smuzhiyun 
6324*4882a593Smuzhiyun {"lfsu",	OP(49),		OP_MASK,     COM,	PPCEFS|PPCVLE,	{FRT, D, RAS}},
6325*4882a593Smuzhiyun 
6326*4882a593Smuzhiyun {"lfd",		OP(50),		OP_MASK,     COM,	PPCEFS|PPCVLE,	{FRT, D, RA0}},
6327*4882a593Smuzhiyun 
6328*4882a593Smuzhiyun {"lfdu",	OP(51),		OP_MASK,     COM,	PPCEFS|PPCVLE,	{FRT, D, RAS}},
6329*4882a593Smuzhiyun 
6330*4882a593Smuzhiyun {"stfs",	OP(52),		OP_MASK,     COM,	PPCEFS|PPCVLE,	{FRS, D, RA0}},
6331*4882a593Smuzhiyun 
6332*4882a593Smuzhiyun {"stfsu",	OP(53),		OP_MASK,     COM,	PPCEFS|PPCVLE,	{FRS, D, RAS}},
6333*4882a593Smuzhiyun 
6334*4882a593Smuzhiyun {"stfd",	OP(54),		OP_MASK,     COM,	PPCEFS|PPCVLE,	{FRS, D, RA0}},
6335*4882a593Smuzhiyun 
6336*4882a593Smuzhiyun {"stfdu",	OP(55),		OP_MASK,     COM,	PPCEFS|PPCVLE,	{FRS, D, RAS}},
6337*4882a593Smuzhiyun 
6338*4882a593Smuzhiyun {"lq",		OP(56),		OP_MASK,     POWER4,	PPC476|PPCVLE,	{RTQ, DQ, RAQ}},
6339*4882a593Smuzhiyun {"psq_l",	OP(56),		OP_MASK,     PPCPS,	PPCVLE,		{FRT,PSD,RA,PSW,PSQ}},
6340*4882a593Smuzhiyun {"lfq",		OP(56),		OP_MASK,     POWER2,	PPCVLE,		{FRT, D, RA0}},
6341*4882a593Smuzhiyun 
6342*4882a593Smuzhiyun {"lxsd",	DSO(57,2),	DS_MASK,     PPCVSX3,	PPCVLE,		{VD, DS, RA0}},
6343*4882a593Smuzhiyun {"lxssp",	DSO(57,3),	DS_MASK,     PPCVSX3,	PPCVLE,		{VD, DS, RA0}},
6344*4882a593Smuzhiyun {"lfdp",	OP(57),		OP_MASK,     POWER6,	POWER7|PPCVLE,	{FRTp, DS, RA0}},
6345*4882a593Smuzhiyun {"psq_lu",	OP(57),		OP_MASK,     PPCPS,	PPCVLE,		{FRT,PSD,RA,PSW,PSQ}},
6346*4882a593Smuzhiyun {"lfqu",	OP(57),		OP_MASK,     POWER2,	PPCVLE,		{FRT, D, RA0}},
6347*4882a593Smuzhiyun 
6348*4882a593Smuzhiyun {"ld",		DSO(58,0),	DS_MASK,     PPC64,	PPCVLE,		{RT, DS, RA0}},
6349*4882a593Smuzhiyun {"ldu",		DSO(58,1),	DS_MASK,     PPC64,	PPCVLE,		{RT, DS, RAL}},
6350*4882a593Smuzhiyun {"lwa",		DSO(58,2),	DS_MASK,     PPC64,	PPCVLE,		{RT, DS, RA0}},
6351*4882a593Smuzhiyun 
6352*4882a593Smuzhiyun {"dadd",	XRC(59,2,0),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, FRB}},
6353*4882a593Smuzhiyun {"dadd.",	XRC(59,2,1),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, FRB}},
6354*4882a593Smuzhiyun 
6355*4882a593Smuzhiyun {"dqua",	ZRC(59,3,0),	Z2_MASK,     POWER6,	PPCVLE,		{FRT,FRA,FRB,RMC}},
6356*4882a593Smuzhiyun {"dqua.",	ZRC(59,3,1),	Z2_MASK,     POWER6,	PPCVLE,		{FRT,FRA,FRB,RMC}},
6357*4882a593Smuzhiyun 
6358*4882a593Smuzhiyun {"fdivs",	A(59,18,0),	AFRC_MASK,   PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRB}},
6359*4882a593Smuzhiyun {"fdivs.",	A(59,18,1),	AFRC_MASK,   PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRB}},
6360*4882a593Smuzhiyun 
6361*4882a593Smuzhiyun {"fsubs",	A(59,20,0),	AFRC_MASK,   PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRB}},
6362*4882a593Smuzhiyun {"fsubs.",	A(59,20,1),	AFRC_MASK,   PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRB}},
6363*4882a593Smuzhiyun 
6364*4882a593Smuzhiyun {"fadds",	A(59,21,0),	AFRC_MASK,   PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRB}},
6365*4882a593Smuzhiyun {"fadds.",	A(59,21,1),	AFRC_MASK,   PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRB}},
6366*4882a593Smuzhiyun 
6367*4882a593Smuzhiyun {"fsqrts",	A(59,22,0),    AFRAFRC_MASK, PPC,	TITAN|PPCVLE,	{FRT, FRB}},
6368*4882a593Smuzhiyun {"fsqrts.",	A(59,22,1),    AFRAFRC_MASK, PPC,	TITAN|PPCVLE,	{FRT, FRB}},
6369*4882a593Smuzhiyun 
6370*4882a593Smuzhiyun {"fres",	A(59,24,0),   AFRAFRC_MASK,  POWER7,	PPCVLE,		{FRT, FRB}},
6371*4882a593Smuzhiyun {"fres",	A(59,24,0),   AFRALFRC_MASK, PPC,	POWER7|PPCVLE,	{FRT, FRB, A_L}},
6372*4882a593Smuzhiyun {"fres.",	A(59,24,1),   AFRAFRC_MASK,  POWER7,	PPCVLE,		{FRT, FRB}},
6373*4882a593Smuzhiyun {"fres.",	A(59,24,1),   AFRALFRC_MASK, PPC,	POWER7|PPCVLE,	{FRT, FRB, A_L}},
6374*4882a593Smuzhiyun 
6375*4882a593Smuzhiyun {"fmuls",	A(59,25,0),	AFRB_MASK,   PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRC}},
6376*4882a593Smuzhiyun {"fmuls.",	A(59,25,1),	AFRB_MASK,   PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRC}},
6377*4882a593Smuzhiyun 
6378*4882a593Smuzhiyun {"frsqrtes",	A(59,26,0),   AFRAFRC_MASK,  POWER7,	PPCVLE,		{FRT, FRB}},
6379*4882a593Smuzhiyun {"frsqrtes",	A(59,26,0),   AFRALFRC_MASK, POWER5,	POWER7|PPCVLE,	{FRT, FRB, A_L}},
6380*4882a593Smuzhiyun {"frsqrtes.",	A(59,26,1),   AFRAFRC_MASK,  POWER7,	PPCVLE,		{FRT, FRB}},
6381*4882a593Smuzhiyun {"frsqrtes.",	A(59,26,1),   AFRALFRC_MASK, POWER5,	POWER7|PPCVLE,	{FRT, FRB, A_L}},
6382*4882a593Smuzhiyun 
6383*4882a593Smuzhiyun {"fmsubs",	A(59,28,0),	A_MASK,	     PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
6384*4882a593Smuzhiyun {"fmsubs.",	A(59,28,1),	A_MASK,	     PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
6385*4882a593Smuzhiyun 
6386*4882a593Smuzhiyun {"fmadds",	A(59,29,0),	A_MASK,	     PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
6387*4882a593Smuzhiyun {"fmadds.",	A(59,29,1),	A_MASK,	     PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
6388*4882a593Smuzhiyun 
6389*4882a593Smuzhiyun {"fnmsubs",	A(59,30,0),	A_MASK,	     PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
6390*4882a593Smuzhiyun {"fnmsubs.",	A(59,30,1),	A_MASK,	     PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
6391*4882a593Smuzhiyun 
6392*4882a593Smuzhiyun {"fnmadds",	A(59,31,0),	A_MASK,	     PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
6393*4882a593Smuzhiyun {"fnmadds.",	A(59,31,1),	A_MASK,	     PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
6394*4882a593Smuzhiyun 
6395*4882a593Smuzhiyun {"dmul",	XRC(59,34,0),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, FRB}},
6396*4882a593Smuzhiyun {"dmul.",	XRC(59,34,1),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, FRB}},
6397*4882a593Smuzhiyun 
6398*4882a593Smuzhiyun {"drrnd",	ZRC(59,35,0),	Z2_MASK,     POWER6,	PPCVLE,		{FRT, FRA, FRB, RMC}},
6399*4882a593Smuzhiyun {"drrnd.",	ZRC(59,35,1),	Z2_MASK,     POWER6,	PPCVLE,		{FRT, FRA, FRB, RMC}},
6400*4882a593Smuzhiyun 
6401*4882a593Smuzhiyun {"dscli",	ZRC(59,66,0),	Z_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, SH16}},
6402*4882a593Smuzhiyun {"dscli.",	ZRC(59,66,1),	Z_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, SH16}},
6403*4882a593Smuzhiyun 
6404*4882a593Smuzhiyun {"dquai",	ZRC(59,67,0),	Z2_MASK,     POWER6,	PPCVLE,		{TE, FRT,FRB,RMC}},
6405*4882a593Smuzhiyun {"dquai.",	ZRC(59,67,1),	Z2_MASK,     POWER6,	PPCVLE,		{TE, FRT,FRB,RMC}},
6406*4882a593Smuzhiyun 
6407*4882a593Smuzhiyun {"dscri",	ZRC(59,98,0),	Z_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, SH16}},
6408*4882a593Smuzhiyun {"dscri.",	ZRC(59,98,1),	Z_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, SH16}},
6409*4882a593Smuzhiyun 
6410*4882a593Smuzhiyun {"drintx",	ZRC(59,99,0),	Z2_MASK,     POWER6,	PPCVLE,		{R, FRT, FRB, RMC}},
6411*4882a593Smuzhiyun {"drintx.",	ZRC(59,99,1),	Z2_MASK,     POWER6,	PPCVLE,		{R, FRT, FRB, RMC}},
6412*4882a593Smuzhiyun 
6413*4882a593Smuzhiyun {"dcmpo",	X(59,130),	X_MASK,	     POWER6,	PPCVLE,		{BF,  FRA, FRB}},
6414*4882a593Smuzhiyun 
6415*4882a593Smuzhiyun {"dtstex",	X(59,162),	X_MASK,	     POWER6,	PPCVLE,		{BF,  FRA, FRB}},
6416*4882a593Smuzhiyun {"dtstdc",	Z(59,194),	Z_MASK,	     POWER6,	PPCVLE,		{BF,  FRA, DCM}},
6417*4882a593Smuzhiyun {"dtstdg",	Z(59,226),	Z_MASK,	     POWER6,	PPCVLE,		{BF,  FRA, DGM}},
6418*4882a593Smuzhiyun 
6419*4882a593Smuzhiyun {"drintn",	ZRC(59,227,0),	Z2_MASK,     POWER6,	PPCVLE,		{R, FRT, FRB, RMC}},
6420*4882a593Smuzhiyun {"drintn.",	ZRC(59,227,1),	Z2_MASK,     POWER6,	PPCVLE,		{R, FRT, FRB, RMC}},
6421*4882a593Smuzhiyun 
6422*4882a593Smuzhiyun {"dctdp",	XRC(59,258,0),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRB}},
6423*4882a593Smuzhiyun {"dctdp.",	XRC(59,258,1),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRB}},
6424*4882a593Smuzhiyun 
6425*4882a593Smuzhiyun {"dctfix",	XRC(59,290,0),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRB}},
6426*4882a593Smuzhiyun {"dctfix.",	XRC(59,290,1),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRB}},
6427*4882a593Smuzhiyun 
6428*4882a593Smuzhiyun {"ddedpd",	XRC(59,322,0),	X_MASK,	     POWER6,	PPCVLE,		{SP, FRT, FRB}},
6429*4882a593Smuzhiyun {"ddedpd.",	XRC(59,322,1),	X_MASK,	     POWER6,	PPCVLE,		{SP, FRT, FRB}},
6430*4882a593Smuzhiyun 
6431*4882a593Smuzhiyun {"dxex",	XRC(59,354,0),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRB}},
6432*4882a593Smuzhiyun {"dxex.",	XRC(59,354,1),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRB}},
6433*4882a593Smuzhiyun 
6434*4882a593Smuzhiyun {"dsub",	XRC(59,514,0),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, FRB}},
6435*4882a593Smuzhiyun {"dsub.",	XRC(59,514,1),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, FRB}},
6436*4882a593Smuzhiyun 
6437*4882a593Smuzhiyun {"ddiv",	XRC(59,546,0),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, FRB}},
6438*4882a593Smuzhiyun {"ddiv.",	XRC(59,546,1),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, FRB}},
6439*4882a593Smuzhiyun 
6440*4882a593Smuzhiyun {"dcmpu",	X(59,642),	X_MASK,	     POWER6,	PPCVLE,		{BF,  FRA, FRB}},
6441*4882a593Smuzhiyun 
6442*4882a593Smuzhiyun {"dtstsf",	X(59,674),	X_MASK,	     POWER6,	PPCVLE,		{BF,  FRA, FRB}},
6443*4882a593Smuzhiyun {"dtstsfi",	X(59,675),	X_MASK|1<<22,POWER9,	PPCVLE,		{BF, UIM6, FRB}},
6444*4882a593Smuzhiyun 
6445*4882a593Smuzhiyun {"drsp",	XRC(59,770,0),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRB}},
6446*4882a593Smuzhiyun {"drsp.",	XRC(59,770,1),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRB}},
6447*4882a593Smuzhiyun 
6448*4882a593Smuzhiyun {"dcffix",	XRC(59,802,0), X_MASK|FRA_MASK, POWER7,	PPCVLE,		{FRT, FRB}},
6449*4882a593Smuzhiyun {"dcffix.",	XRC(59,802,1), X_MASK|FRA_MASK, POWER7,	PPCVLE,		{FRT, FRB}},
6450*4882a593Smuzhiyun 
6451*4882a593Smuzhiyun {"denbcd",	XRC(59,834,0),	X_MASK,	     POWER6,	PPCVLE,		{S, FRT, FRB}},
6452*4882a593Smuzhiyun {"denbcd.",	XRC(59,834,1),	X_MASK,	     POWER6,	PPCVLE,		{S, FRT, FRB}},
6453*4882a593Smuzhiyun 
6454*4882a593Smuzhiyun {"fcfids",	XRC(59,846,0),	XRA_MASK, POWER7|PPCA2,	PPCVLE,		{FRT, FRB}},
6455*4882a593Smuzhiyun {"fcfids.",	XRC(59,846,1),	XRA_MASK, POWER7|PPCA2,	PPCVLE,		{FRT, FRB}},
6456*4882a593Smuzhiyun 
6457*4882a593Smuzhiyun {"diex",	XRC(59,866,0),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, FRB}},
6458*4882a593Smuzhiyun {"diex.",	XRC(59,866,1),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, FRB}},
6459*4882a593Smuzhiyun 
6460*4882a593Smuzhiyun {"fcfidus",	XRC(59,974,0),	XRA_MASK, POWER7|PPCA2,	PPCVLE,		{FRT, FRB}},
6461*4882a593Smuzhiyun {"fcfidus.",	XRC(59,974,1),	XRA_MASK, POWER7|PPCA2,	PPCVLE,		{FRT, FRB}},
6462*4882a593Smuzhiyun 
6463*4882a593Smuzhiyun {"xsaddsp",	XX3(60,0),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
6464*4882a593Smuzhiyun {"xsmaddasp",	XX3(60,1),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
6465*4882a593Smuzhiyun {"xxsldwi",	XX3(60,2),	XX3SHW_MASK, PPCVSX,	PPCVLE,		{XT6, XA6, XB6, SHW}},
6466*4882a593Smuzhiyun {"xscmpeqdp",	XX3(60,3),	XX3_MASK,    PPCVSX3,	PPCVLE,		{XT6, XA6, XB6}},
6467*4882a593Smuzhiyun {"xsrsqrtesp",	XX2(60,10),	XX2_MASK,    PPCVSX2,	PPCVLE,		{XT6, XB6}},
6468*4882a593Smuzhiyun {"xssqrtsp",	XX2(60,11),	XX2_MASK,    PPCVSX2,	PPCVLE,		{XT6, XB6}},
6469*4882a593Smuzhiyun {"xxsel",	XX4(60,3),	XX4_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6, XC6}},
6470*4882a593Smuzhiyun {"xssubsp",	XX3(60,8),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
6471*4882a593Smuzhiyun {"xsmaddmsp",	XX3(60,9),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
6472*4882a593Smuzhiyun {"xxspltd",	XX3(60,10),	XX3DM_MASK,  PPCVSX,	PPCVLE,		{XT6, XA6, XB6S, DMEX}},
6473*4882a593Smuzhiyun {"xxmrghd",	XX3(60,10),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6474*4882a593Smuzhiyun {"xxswapd",	XX3(60,10)|(2<<8), XX3_MASK, PPCVSX,	PPCVLE,		{XT6, XA6, XB6S}},
6475*4882a593Smuzhiyun {"xxmrgld",	XX3(60,10)|(3<<8), XX3_MASK, PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6476*4882a593Smuzhiyun {"xxpermdi",	XX3(60,10),	XX3DM_MASK,  PPCVSX,	PPCVLE,		{XT6, XA6, XB6, DM}},
6477*4882a593Smuzhiyun {"xscmpgtdp",	XX3(60,11),	XX3_MASK,    PPCVSX3,	PPCVLE,		{XT6, XA6, XB6}},
6478*4882a593Smuzhiyun {"xsresp",	XX2(60,26),	XX2_MASK,    PPCVSX2,	PPCVLE,		{XT6, XB6}},
6479*4882a593Smuzhiyun {"xsmulsp",	XX3(60,16),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
6480*4882a593Smuzhiyun {"xsmsubasp",	XX3(60,17),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
6481*4882a593Smuzhiyun {"xxmrghw",	XX3(60,18),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6482*4882a593Smuzhiyun {"xscmpgedp",	XX3(60,19),	XX3_MASK,    PPCVSX3,	PPCVLE,		{XT6, XA6, XB6}},
6483*4882a593Smuzhiyun {"xsdivsp",	XX3(60,24),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
6484*4882a593Smuzhiyun {"xsmsubmsp",	XX3(60,25),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
6485*4882a593Smuzhiyun {"xxperm",	XX3(60,26),	XX3_MASK,    PPCVSX3,	PPCVLE,		{XT6, XA6, XB6}},
6486*4882a593Smuzhiyun {"xsadddp",	XX3(60,32),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6487*4882a593Smuzhiyun {"xsmaddadp",	XX3(60,33),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6488*4882a593Smuzhiyun {"xscmpudp",	XX3(60,35),	XX3BF_MASK,  PPCVSX,	PPCVLE,		{BF, XA6, XB6}},
6489*4882a593Smuzhiyun {"xscvdpuxws",	XX2(60,72),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6490*4882a593Smuzhiyun {"xsrdpi",	XX2(60,73),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6491*4882a593Smuzhiyun {"xsrsqrtedp",	XX2(60,74),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6492*4882a593Smuzhiyun {"xssqrtdp",	XX2(60,75),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6493*4882a593Smuzhiyun {"xssubdp",	XX3(60,40),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6494*4882a593Smuzhiyun {"xsmaddmdp",	XX3(60,41),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6495*4882a593Smuzhiyun {"xscmpodp",	XX3(60,43),	XX3BF_MASK,  PPCVSX,	PPCVLE,		{BF, XA6, XB6}},
6496*4882a593Smuzhiyun {"xscvdpsxws",	XX2(60,88),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6497*4882a593Smuzhiyun {"xsrdpiz",	XX2(60,89),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6498*4882a593Smuzhiyun {"xsredp",	XX2(60,90),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6499*4882a593Smuzhiyun {"xsmuldp",	XX3(60,48),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6500*4882a593Smuzhiyun {"xsmsubadp",	XX3(60,49),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6501*4882a593Smuzhiyun {"xxmrglw",	XX3(60,50),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6502*4882a593Smuzhiyun {"xsrdpip",	XX2(60,105),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6503*4882a593Smuzhiyun {"xstsqrtdp",	XX2(60,106),	XX2BF_MASK,  PPCVSX,	PPCVLE,		{BF, XB6}},
6504*4882a593Smuzhiyun {"xsrdpic",	XX2(60,107),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6505*4882a593Smuzhiyun {"xsdivdp",	XX3(60,56),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6506*4882a593Smuzhiyun {"xsmsubmdp",	XX3(60,57),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6507*4882a593Smuzhiyun {"xxpermr",	XX3(60,58),	XX3_MASK,    PPCVSX3,	PPCVLE,		{XT6, XA6, XB6}},
6508*4882a593Smuzhiyun {"xscmpexpdp",	XX3(60,59),	XX3BF_MASK,  PPCVSX3,	PPCVLE,		{BF, XA6, XB6}},
6509*4882a593Smuzhiyun {"xsrdpim",	XX2(60,121),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6510*4882a593Smuzhiyun {"xstdivdp",	XX3(60,61),	XX3BF_MASK,  PPCVSX,	PPCVLE,		{BF, XA6, XB6}},
6511*4882a593Smuzhiyun {"xvaddsp",	XX3(60,64),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6512*4882a593Smuzhiyun {"xvmaddasp",	XX3(60,65),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6513*4882a593Smuzhiyun {"xvcmpeqsp",	XX3RC(60,67,0),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6514*4882a593Smuzhiyun {"xvcmpeqsp.",	XX3RC(60,67,1),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6515*4882a593Smuzhiyun {"xvcvspuxws",	XX2(60,136),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6516*4882a593Smuzhiyun {"xvrspi",	XX2(60,137),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6517*4882a593Smuzhiyun {"xvrsqrtesp",	XX2(60,138),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6518*4882a593Smuzhiyun {"xvsqrtsp",	XX2(60,139),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6519*4882a593Smuzhiyun {"xvsubsp",	XX3(60,72),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6520*4882a593Smuzhiyun {"xvmaddmsp",	XX3(60,73),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6521*4882a593Smuzhiyun {"xvcmpgtsp",	XX3RC(60,75,0),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6522*4882a593Smuzhiyun {"xvcmpgtsp.",	XX3RC(60,75,1),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6523*4882a593Smuzhiyun {"xvcvspsxws",	XX2(60,152),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6524*4882a593Smuzhiyun {"xvrspiz",	XX2(60,153),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6525*4882a593Smuzhiyun {"xvresp",	XX2(60,154),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6526*4882a593Smuzhiyun {"xvmulsp",	XX3(60,80),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6527*4882a593Smuzhiyun {"xvmsubasp",	XX3(60,81),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6528*4882a593Smuzhiyun {"xxspltw",	XX2(60,164),	XX2UIM_MASK, PPCVSX,	PPCVLE,		{XT6, XB6, UIM}},
6529*4882a593Smuzhiyun {"xxextractuw",	XX2(60,165),   XX2UIM4_MASK, PPCVSX3,	PPCVLE,		{XT6, XB6, UIMM4}},
6530*4882a593Smuzhiyun {"xvcmpgesp",	XX3RC(60,83,0),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6531*4882a593Smuzhiyun {"xvcmpgesp.",	XX3RC(60,83,1),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6532*4882a593Smuzhiyun {"xvcvuxwsp",	XX2(60,168),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6533*4882a593Smuzhiyun {"xvrspip",	XX2(60,169),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6534*4882a593Smuzhiyun {"xvtsqrtsp",	XX2(60,170),	XX2BF_MASK,  PPCVSX,	PPCVLE,		{BF, XB6}},
6535*4882a593Smuzhiyun {"xvrspic",	XX2(60,171),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6536*4882a593Smuzhiyun {"xvdivsp",	XX3(60,88),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6537*4882a593Smuzhiyun {"xvmsubmsp",	XX3(60,89),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6538*4882a593Smuzhiyun {"xxspltib",	X(60,360),   XX1_MASK|3<<19, PPCVSX3,	PPCVLE,		{XT6, IMM8}},
6539*4882a593Smuzhiyun {"xxinsertw",	XX2(60,181),   XX2UIM4_MASK, PPCVSX3,	PPCVLE,		{XT6, XB6, UIMM4}},
6540*4882a593Smuzhiyun {"xvcvsxwsp",	XX2(60,184),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6541*4882a593Smuzhiyun {"xvrspim",	XX2(60,185),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6542*4882a593Smuzhiyun {"xvtdivsp",	XX3(60,93),	XX3BF_MASK,  PPCVSX,	PPCVLE,		{BF, XA6, XB6}},
6543*4882a593Smuzhiyun {"xvadddp",	XX3(60,96),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6544*4882a593Smuzhiyun {"xvmaddadp",	XX3(60,97),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6545*4882a593Smuzhiyun {"xvcmpeqdp",	XX3RC(60,99,0),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6546*4882a593Smuzhiyun {"xvcmpeqdp.",	XX3RC(60,99,1),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6547*4882a593Smuzhiyun {"xvcvdpuxws",	XX2(60,200),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6548*4882a593Smuzhiyun {"xvrdpi",	XX2(60,201),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6549*4882a593Smuzhiyun {"xvrsqrtedp",	XX2(60,202),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6550*4882a593Smuzhiyun {"xvsqrtdp",	XX2(60,203),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6551*4882a593Smuzhiyun {"xvsubdp",	XX3(60,104),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6552*4882a593Smuzhiyun {"xvmaddmdp",	XX3(60,105),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6553*4882a593Smuzhiyun {"xvcmpgtdp",	XX3RC(60,107,0), XX3_MASK,   PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6554*4882a593Smuzhiyun {"xvcmpgtdp.",	XX3RC(60,107,1), XX3_MASK,   PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6555*4882a593Smuzhiyun {"xvcvdpsxws",	XX2(60,216),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6556*4882a593Smuzhiyun {"xvrdpiz",	XX2(60,217),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6557*4882a593Smuzhiyun {"xvredp",	XX2(60,218),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6558*4882a593Smuzhiyun {"xvmuldp",	XX3(60,112),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6559*4882a593Smuzhiyun {"xvmsubadp",	XX3(60,113),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6560*4882a593Smuzhiyun {"xvcmpgedp",	XX3RC(60,115,0), XX3_MASK,   PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6561*4882a593Smuzhiyun {"xvcmpgedp.",	XX3RC(60,115,1), XX3_MASK,   PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6562*4882a593Smuzhiyun {"xvcvuxwdp",	XX2(60,232),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6563*4882a593Smuzhiyun {"xvrdpip",	XX2(60,233),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6564*4882a593Smuzhiyun {"xvtsqrtdp",	XX2(60,234),	XX2BF_MASK,  PPCVSX,	PPCVLE,		{BF, XB6}},
6565*4882a593Smuzhiyun {"xvrdpic",	XX2(60,235),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6566*4882a593Smuzhiyun {"xvdivdp",	XX3(60,120),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6567*4882a593Smuzhiyun {"xvmsubmdp",	XX3(60,121),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6568*4882a593Smuzhiyun {"xvcvsxwdp",	XX2(60,248),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6569*4882a593Smuzhiyun {"xvrdpim",	XX2(60,249),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6570*4882a593Smuzhiyun {"xvtdivdp",	XX3(60,125),	XX3BF_MASK,  PPCVSX,	PPCVLE,		{BF, XA6, XB6}},
6571*4882a593Smuzhiyun {"xsmaxcdp",	XX3(60,128),	XX3_MASK,    PPCVSX3,	PPCVLE,		{XT6, XA6, XB6}},
6572*4882a593Smuzhiyun {"xsnmaddasp",	XX3(60,129),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
6573*4882a593Smuzhiyun {"xxland",	XX3(60,130),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6574*4882a593Smuzhiyun {"xscvdpsp",	XX2(60,265),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6575*4882a593Smuzhiyun {"xscvdpspn",	XX2(60,267),	XX2_MASK,    PPCVSX2,	PPCVLE,		{XT6, XB6}},
6576*4882a593Smuzhiyun {"xsmincdp",	XX3(60,136),	XX3_MASK,    PPCVSX3,	PPCVLE,		{XT6, XA6, XB6}},
6577*4882a593Smuzhiyun {"xsnmaddmsp",	XX3(60,137),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
6578*4882a593Smuzhiyun {"xxlandc",	XX3(60,138),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6579*4882a593Smuzhiyun {"xsrsp",	XX2(60,281),	XX2_MASK,    PPCVSX2,	PPCVLE,		{XT6, XB6}},
6580*4882a593Smuzhiyun {"xsmaxjdp",	XX3(60,144),	XX3_MASK,    PPCVSX3,	PPCVLE,		{XT6, XA6, XB6}},
6581*4882a593Smuzhiyun {"xsnmsubasp",	XX3(60,145),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
6582*4882a593Smuzhiyun {"xxlor",	XX3(60,146),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6583*4882a593Smuzhiyun {"xscvuxdsp",	XX2(60,296),	XX2_MASK,    PPCVSX2,	PPCVLE,		{XT6, XB6}},
6584*4882a593Smuzhiyun {"xststdcsp",	XX2(60,298),	XX2BFD_MASK, PPCVSX3,	PPCVLE,		{BF, XB6, DCMX}},
6585*4882a593Smuzhiyun {"xsminjdp",	XX3(60,152),	XX3_MASK,    PPCVSX3,	PPCVLE,		{XT6, XA6, XB6}},
6586*4882a593Smuzhiyun {"xsnmsubmsp",	XX3(60,153),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
6587*4882a593Smuzhiyun {"xxlxor",	XX3(60,154),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6588*4882a593Smuzhiyun {"xscvsxdsp",	XX2(60,312),	XX2_MASK,    PPCVSX2,	PPCVLE,		{XT6, XB6}},
6589*4882a593Smuzhiyun {"xsmaxdp",	XX3(60,160),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6590*4882a593Smuzhiyun {"xsnmaddadp",	XX3(60,161),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6591*4882a593Smuzhiyun {"xxlnor",	XX3(60,162),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6592*4882a593Smuzhiyun {"xscvdpuxds",	XX2(60,328),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6593*4882a593Smuzhiyun {"xscvspdp",	XX2(60,329),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6594*4882a593Smuzhiyun {"xscvspdpn",	XX2(60,331),	XX2_MASK,    PPCVSX2,	PPCVLE,		{XT6, XB6}},
6595*4882a593Smuzhiyun {"xsmindp",	XX3(60,168),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6596*4882a593Smuzhiyun {"xsnmaddmdp",	XX3(60,169),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6597*4882a593Smuzhiyun {"xxlorc",	XX3(60,170),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
6598*4882a593Smuzhiyun {"xscvdpsxds",	XX2(60,344),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6599*4882a593Smuzhiyun {"xsabsdp",	XX2(60,345),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6600*4882a593Smuzhiyun {"xsxexpdp",	XX2VA(60,347,0),XX2_MASK|1,  PPCVSX3,	PPCVLE,		{RT, XB6}},
6601*4882a593Smuzhiyun {"xsxsigdp",	XX2VA(60,347,1),XX2_MASK|1,  PPCVSX3,	PPCVLE,		{RT, XB6}},
6602*4882a593Smuzhiyun {"xscvhpdp",	XX2VA(60,347,16),XX2_MASK,   PPCVSX3,	PPCVLE,		{XT6, XB6}},
6603*4882a593Smuzhiyun {"xscvdphp",	XX2VA(60,347,17),XX2_MASK,   PPCVSX3,	PPCVLE,		{XT6, XB6}},
6604*4882a593Smuzhiyun {"xscpsgndp",	XX3(60,176),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6605*4882a593Smuzhiyun {"xsnmsubadp",	XX3(60,177),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6606*4882a593Smuzhiyun {"xxlnand",	XX3(60,178),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
6607*4882a593Smuzhiyun {"xscvuxddp",	XX2(60,360),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6608*4882a593Smuzhiyun {"xsnabsdp",	XX2(60,361),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6609*4882a593Smuzhiyun {"xststdcdp",	XX2(60,362),	XX2BFD_MASK, PPCVSX3,	PPCVLE,		{BF, XB6, DCMX}},
6610*4882a593Smuzhiyun {"xsnmsubmdp",	XX3(60,185),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6611*4882a593Smuzhiyun {"xxleqv",	XX3(60,186),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
6612*4882a593Smuzhiyun {"xscvsxddp",	XX2(60,376),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6613*4882a593Smuzhiyun {"xsnegdp",	XX2(60,377),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6614*4882a593Smuzhiyun {"xvmaxsp",	XX3(60,192),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6615*4882a593Smuzhiyun {"xvnmaddasp",	XX3(60,193),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6616*4882a593Smuzhiyun {"xvcvspuxds",	XX2(60,392),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6617*4882a593Smuzhiyun {"xvcvdpsp",	XX2(60,393),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6618*4882a593Smuzhiyun {"xvminsp",	XX3(60,200),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6619*4882a593Smuzhiyun {"xvnmaddmsp",	XX3(60,201),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6620*4882a593Smuzhiyun {"xvcvspsxds",	XX2(60,408),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6621*4882a593Smuzhiyun {"xvabssp",	XX2(60,409),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6622*4882a593Smuzhiyun {"xvmovsp",	XX3(60,208),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6S}},
6623*4882a593Smuzhiyun {"xvcpsgnsp",	XX3(60,208),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6624*4882a593Smuzhiyun {"xvnmsubasp",	XX3(60,209),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6625*4882a593Smuzhiyun {"xvcvuxdsp",	XX2(60,424),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6626*4882a593Smuzhiyun {"xvnabssp",	XX2(60,425),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6627*4882a593Smuzhiyun {"xvtstdcsp",	XX2(60,426),  XX2DCMXS_MASK, PPCVSX3,	PPCVLE,		{XT6, XB6, DCMXS}},
6628*4882a593Smuzhiyun {"xviexpsp",	XX3(60,216),	XX3_MASK,    PPCVSX3,	PPCVLE,		{XT6, XA6, XB6}},
6629*4882a593Smuzhiyun {"xvnmsubmsp",	XX3(60,217),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6630*4882a593Smuzhiyun {"xvcvsxdsp",	XX2(60,440),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6631*4882a593Smuzhiyun {"xvnegsp",	XX2(60,441),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6632*4882a593Smuzhiyun {"xvmaxdp",	XX3(60,224),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6633*4882a593Smuzhiyun {"xvnmaddadp",	XX3(60,225),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6634*4882a593Smuzhiyun {"xvcvdpuxds",	XX2(60,456),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6635*4882a593Smuzhiyun {"xvcvspdp",	XX2(60,457),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6636*4882a593Smuzhiyun {"xsiexpdp",	X(60,918),	XX1_MASK,    PPCVSX3,	PPCVLE,		{XT6, RA, RB}},
6637*4882a593Smuzhiyun {"xvmindp",	XX3(60,232),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6638*4882a593Smuzhiyun {"xvnmaddmdp",	XX3(60,233),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6639*4882a593Smuzhiyun {"xvcvdpsxds",	XX2(60,472),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6640*4882a593Smuzhiyun {"xvabsdp",	XX2(60,473),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6641*4882a593Smuzhiyun {"xvxexpdp",	XX2VA(60,475,0),XX2_MASK,    PPCVSX3,	PPCVLE,		{XT6, XB6}},
6642*4882a593Smuzhiyun {"xvxsigdp",	XX2VA(60,475,1),XX2_MASK,    PPCVSX3,	PPCVLE,		{XT6, XB6}},
6643*4882a593Smuzhiyun {"xxbrh",	XX2VA(60,475,7),XX2_MASK,    PPCVSX3,	PPCVLE,		{XT6, XB6}},
6644*4882a593Smuzhiyun {"xvxexpsp",	XX2VA(60,475,8),XX2_MASK,    PPCVSX3,	PPCVLE,		{XT6, XB6}},
6645*4882a593Smuzhiyun {"xvxsigsp",	XX2VA(60,475,9),XX2_MASK,    PPCVSX3,	PPCVLE,		{XT6, XB6}},
6646*4882a593Smuzhiyun {"xxbrw",	XX2VA(60,475,15),XX2_MASK,   PPCVSX3,	PPCVLE,		{XT6, XB6}},
6647*4882a593Smuzhiyun {"xxbrd",	XX2VA(60,475,23),XX2_MASK,   PPCVSX3,	PPCVLE,		{XT6, XB6}},
6648*4882a593Smuzhiyun {"xvcvhpsp",	XX2VA(60,475,24),XX2_MASK,   PPCVSX3,	PPCVLE,		{XT6, XB6}},
6649*4882a593Smuzhiyun {"xvcvsphp",	XX2VA(60,475,25),XX2_MASK,   PPCVSX3,	PPCVLE,		{XT6, XB6}},
6650*4882a593Smuzhiyun {"xxbrq",	XX2VA(60,475,31),XX2_MASK,   PPCVSX3,	PPCVLE,		{XT6, XB6}},
6651*4882a593Smuzhiyun {"xvmovdp",	XX3(60,240),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6S}},
6652*4882a593Smuzhiyun {"xvcpsgndp",	XX3(60,240),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6653*4882a593Smuzhiyun {"xvnmsubadp",	XX3(60,241),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6654*4882a593Smuzhiyun {"xvcvuxddp",	XX2(60,488),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6655*4882a593Smuzhiyun {"xvnabsdp",	XX2(60,489),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6656*4882a593Smuzhiyun {"xvtstdcdp",	XX2(60,490),  XX2DCMXS_MASK, PPCVSX3,	PPCVLE,		{XT6, XB6, DCMXS}},
6657*4882a593Smuzhiyun {"xviexpdp",	XX3(60,248),	XX3_MASK,    PPCVSX3,	PPCVLE,		{XT6, XA6, XB6}},
6658*4882a593Smuzhiyun {"xvnmsubmdp",	XX3(60,249),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
6659*4882a593Smuzhiyun {"xvcvsxddp",	XX2(60,504),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6660*4882a593Smuzhiyun {"xvnegdp",	XX2(60,505),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
6661*4882a593Smuzhiyun 
6662*4882a593Smuzhiyun {"psq_st",	OP(60),		OP_MASK,     PPCPS,	PPCVLE,		{FRS,PSD,RA,PSW,PSQ}},
6663*4882a593Smuzhiyun {"stfq",	OP(60),		OP_MASK,     POWER2,	PPCVLE,		{FRS, D, RA}},
6664*4882a593Smuzhiyun 
6665*4882a593Smuzhiyun {"lxv",		DQX(61,1),	DQX_MASK,    PPCVSX3,	PPCVLE,		{XTQ6, DQ, RA0}},
6666*4882a593Smuzhiyun {"stxv",	DQX(61,5),	DQX_MASK,    PPCVSX3,	PPCVLE,		{XSQ6, DQ, RA0}},
6667*4882a593Smuzhiyun {"stxsd",	DSO(61,2),	DS_MASK,     PPCVSX3,	PPCVLE,		{VS, DS, RA0}},
6668*4882a593Smuzhiyun {"stxssp",	DSO(61,3),	DS_MASK,     PPCVSX3,	PPCVLE,		{VS, DS, RA0}},
6669*4882a593Smuzhiyun {"stfdp",	OP(61),		OP_MASK,     POWER6,	POWER7|PPCVLE,	{FRSp, DS, RA0}},
6670*4882a593Smuzhiyun {"psq_stu",	OP(61),		OP_MASK,     PPCPS,	PPCVLE,		{FRS,PSD,RA,PSW,PSQ}},
6671*4882a593Smuzhiyun {"stfqu",	OP(61),		OP_MASK,     POWER2,	PPCVLE,		{FRS, D, RA}},
6672*4882a593Smuzhiyun 
6673*4882a593Smuzhiyun {"std",		DSO(62,0),	DS_MASK,     PPC64,	PPCVLE,		{RS, DS, RA0}},
6674*4882a593Smuzhiyun {"stdu",	DSO(62,1),	DS_MASK,     PPC64,	PPCVLE,		{RS, DS, RAS}},
6675*4882a593Smuzhiyun {"stq",		DSO(62,2),	DS_MASK,     POWER4,	PPC476|PPCVLE,	{RSQ, DS, RA0}},
6676*4882a593Smuzhiyun 
6677*4882a593Smuzhiyun {"fcmpu",	X(63,0),	XBF_MASK,    COM,	PPCEFS|PPCVLE,	{BF, FRA, FRB}},
6678*4882a593Smuzhiyun 
6679*4882a593Smuzhiyun {"daddq",	XRC(63,2,0),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRAp, FRBp}},
6680*4882a593Smuzhiyun {"daddq.",	XRC(63,2,1),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRAp, FRBp}},
6681*4882a593Smuzhiyun 
6682*4882a593Smuzhiyun {"dquaq",	ZRC(63,3,0),	Z2_MASK,     POWER6,	PPCVLE,		{FRTp, FRAp, FRBp, RMC}},
6683*4882a593Smuzhiyun {"dquaq.",	ZRC(63,3,1),	Z2_MASK,     POWER6,	PPCVLE,		{FRTp, FRAp, FRBp, RMC}},
6684*4882a593Smuzhiyun 
6685*4882a593Smuzhiyun {"xsaddqp",	XRC(63,4,0),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
6686*4882a593Smuzhiyun {"xsaddqpo",	XRC(63,4,1),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
6687*4882a593Smuzhiyun 
6688*4882a593Smuzhiyun {"xsrqpi",	ZRC(63,5,0),	Z2_MASK,     PPCVSX3,	PPCVLE,		{R, VD, VB, RMC}},
6689*4882a593Smuzhiyun {"xsrqpix",	ZRC(63,5,1),	Z2_MASK,     PPCVSX3,	PPCVLE,		{R, VD, VB, RMC}},
6690*4882a593Smuzhiyun 
6691*4882a593Smuzhiyun {"fcpsgn",	XRC(63,8,0),	X_MASK, POWER6|PPCA2|PPC476, PPCVLE,	{FRT, FRA, FRB}},
6692*4882a593Smuzhiyun {"fcpsgn.",	XRC(63,8,1),	X_MASK, POWER6|PPCA2|PPC476, PPCVLE,	{FRT, FRA, FRB}},
6693*4882a593Smuzhiyun 
6694*4882a593Smuzhiyun {"frsp",	XRC(63,12,0),	XRA_MASK,    COM,	PPCEFS|PPCVLE,	{FRT, FRB}},
6695*4882a593Smuzhiyun {"frsp.",	XRC(63,12,1),	XRA_MASK,    COM,	PPCEFS|PPCVLE,	{FRT, FRB}},
6696*4882a593Smuzhiyun 
6697*4882a593Smuzhiyun {"fctiw",	XRC(63,14,0),	XRA_MASK,    PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRB}},
6698*4882a593Smuzhiyun {"fcir",	XRC(63,14,0),	XRA_MASK,    PWR2COM,	PPCVLE,		{FRT, FRB}},
6699*4882a593Smuzhiyun {"fctiw.",	XRC(63,14,1),	XRA_MASK,    PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRB}},
6700*4882a593Smuzhiyun {"fcir.",	XRC(63,14,1),	XRA_MASK,    PWR2COM,	PPCVLE,		{FRT, FRB}},
6701*4882a593Smuzhiyun 
6702*4882a593Smuzhiyun {"fctiwz",	XRC(63,15,0),	XRA_MASK,    PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRB}},
6703*4882a593Smuzhiyun {"fcirz",	XRC(63,15,0),	XRA_MASK,    PWR2COM,	PPCVLE,		{FRT, FRB}},
6704*4882a593Smuzhiyun {"fctiwz.",	XRC(63,15,1),	XRA_MASK,    PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRB}},
6705*4882a593Smuzhiyun {"fcirz.",	XRC(63,15,1),	XRA_MASK,    PWR2COM,	PPCVLE,		{FRT, FRB}},
6706*4882a593Smuzhiyun 
6707*4882a593Smuzhiyun {"fdiv",	A(63,18,0),	AFRC_MASK,   PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRB}},
6708*4882a593Smuzhiyun {"fd",		A(63,18,0),	AFRC_MASK,   PWRCOM,	PPCVLE,		{FRT, FRA, FRB}},
6709*4882a593Smuzhiyun {"fdiv.",	A(63,18,1),	AFRC_MASK,   PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRB}},
6710*4882a593Smuzhiyun {"fd.",		A(63,18,1),	AFRC_MASK,   PWRCOM,	PPCVLE,		{FRT, FRA, FRB}},
6711*4882a593Smuzhiyun 
6712*4882a593Smuzhiyun {"fsub",	A(63,20,0),	AFRC_MASK,   PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRB}},
6713*4882a593Smuzhiyun {"fs",		A(63,20,0),	AFRC_MASK,   PWRCOM,	PPCVLE,		{FRT, FRA, FRB}},
6714*4882a593Smuzhiyun {"fsub.",	A(63,20,1),	AFRC_MASK,   PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRB}},
6715*4882a593Smuzhiyun {"fs.",		A(63,20,1),	AFRC_MASK,   PWRCOM,	PPCVLE,		{FRT, FRA, FRB}},
6716*4882a593Smuzhiyun 
6717*4882a593Smuzhiyun {"fadd",	A(63,21,0),	AFRC_MASK,   PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRB}},
6718*4882a593Smuzhiyun {"fa",		A(63,21,0),	AFRC_MASK,   PWRCOM,	PPCVLE,		{FRT, FRA, FRB}},
6719*4882a593Smuzhiyun {"fadd.",	A(63,21,1),	AFRC_MASK,   PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRB}},
6720*4882a593Smuzhiyun {"fa.",		A(63,21,1),	AFRC_MASK,   PWRCOM,	PPCVLE,		{FRT, FRA, FRB}},
6721*4882a593Smuzhiyun 
6722*4882a593Smuzhiyun {"fsqrt",	A(63,22,0),    AFRAFRC_MASK, PPCPWR2,	TITAN|PPCVLE,	{FRT, FRB}},
6723*4882a593Smuzhiyun {"fsqrt.",	A(63,22,1),    AFRAFRC_MASK, PPCPWR2,	TITAN|PPCVLE,	{FRT, FRB}},
6724*4882a593Smuzhiyun 
6725*4882a593Smuzhiyun {"fsel",	A(63,23,0),	A_MASK,	     PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
6726*4882a593Smuzhiyun {"fsel.",	A(63,23,1),	A_MASK,	     PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
6727*4882a593Smuzhiyun 
6728*4882a593Smuzhiyun {"fre",		A(63,24,0),   AFRAFRC_MASK,  POWER7,	PPCVLE,		{FRT, FRB}},
6729*4882a593Smuzhiyun {"fre",		A(63,24,0),   AFRALFRC_MASK, POWER5,	POWER7|PPCVLE,	{FRT, FRB, A_L}},
6730*4882a593Smuzhiyun {"fre.",	A(63,24,1),   AFRAFRC_MASK,  POWER7,	PPCVLE,		{FRT, FRB}},
6731*4882a593Smuzhiyun {"fre.",	A(63,24,1),   AFRALFRC_MASK, POWER5,	POWER7|PPCVLE,	{FRT, FRB, A_L}},
6732*4882a593Smuzhiyun 
6733*4882a593Smuzhiyun {"fmul",	A(63,25,0),	AFRB_MASK,   PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRC}},
6734*4882a593Smuzhiyun {"fm",		A(63,25,0),	AFRB_MASK,   PWRCOM,	PPCVLE|PPCVLE,	{FRT, FRA, FRC}},
6735*4882a593Smuzhiyun {"fmul.",	A(63,25,1),	AFRB_MASK,   PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRC}},
6736*4882a593Smuzhiyun {"fm.",		A(63,25,1),	AFRB_MASK,   PWRCOM,	PPCVLE|PPCVLE,	{FRT, FRA, FRC}},
6737*4882a593Smuzhiyun 
6738*4882a593Smuzhiyun {"frsqrte",	A(63,26,0),   AFRAFRC_MASK,  POWER7,	PPCVLE,		{FRT, FRB}},
6739*4882a593Smuzhiyun {"frsqrte",	A(63,26,0),   AFRALFRC_MASK, PPC,	POWER7|PPCVLE,	{FRT, FRB, A_L}},
6740*4882a593Smuzhiyun {"frsqrte.",	A(63,26,1),   AFRAFRC_MASK,  POWER7,	PPCVLE,		{FRT, FRB}},
6741*4882a593Smuzhiyun {"frsqrte.",	A(63,26,1),   AFRALFRC_MASK, PPC,	POWER7|PPCVLE,	{FRT, FRB, A_L}},
6742*4882a593Smuzhiyun 
6743*4882a593Smuzhiyun {"fmsub",	A(63,28,0),	A_MASK,	     PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
6744*4882a593Smuzhiyun {"fms",		A(63,28,0),	A_MASK,	     PWRCOM,	PPCVLE,		{FRT, FRA, FRC, FRB}},
6745*4882a593Smuzhiyun {"fmsub.",	A(63,28,1),	A_MASK,	     PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
6746*4882a593Smuzhiyun {"fms.",	A(63,28,1),	A_MASK,	     PWRCOM,	PPCVLE,		{FRT, FRA, FRC, FRB}},
6747*4882a593Smuzhiyun 
6748*4882a593Smuzhiyun {"fmadd",	A(63,29,0),	A_MASK,	     PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
6749*4882a593Smuzhiyun {"fma",		A(63,29,0),	A_MASK,	     PWRCOM,	PPCVLE,		{FRT, FRA, FRC, FRB}},
6750*4882a593Smuzhiyun {"fmadd.",	A(63,29,1),	A_MASK,	     PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
6751*4882a593Smuzhiyun {"fma.",	A(63,29,1),	A_MASK,	     PWRCOM,	PPCVLE,		{FRT, FRA, FRC, FRB}},
6752*4882a593Smuzhiyun 
6753*4882a593Smuzhiyun {"fnmsub",	A(63,30,0),	A_MASK,	     PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
6754*4882a593Smuzhiyun {"fnms",	A(63,30,0),	A_MASK,	     PWRCOM,	PPCVLE,		{FRT, FRA, FRC, FRB}},
6755*4882a593Smuzhiyun {"fnmsub.",	A(63,30,1),	A_MASK,	     PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
6756*4882a593Smuzhiyun {"fnms.",	A(63,30,1),	A_MASK,	     PWRCOM,	PPCVLE,		{FRT, FRA, FRC, FRB}},
6757*4882a593Smuzhiyun 
6758*4882a593Smuzhiyun {"fnmadd",	A(63,31,0),	A_MASK,	     PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
6759*4882a593Smuzhiyun {"fnma",	A(63,31,0),	A_MASK,	     PWRCOM,	PPCVLE,		{FRT, FRA, FRC, FRB}},
6760*4882a593Smuzhiyun {"fnmadd.",	A(63,31,1),	A_MASK,	     PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
6761*4882a593Smuzhiyun {"fnma.",	A(63,31,1),	A_MASK,	     PWRCOM,	PPCVLE,		{FRT, FRA, FRC, FRB}},
6762*4882a593Smuzhiyun 
6763*4882a593Smuzhiyun {"fcmpo",	X(63,32),	XBF_MASK,    COM,	PPCEFS|PPCVLE,	{BF, FRA, FRB}},
6764*4882a593Smuzhiyun 
6765*4882a593Smuzhiyun {"dmulq",	XRC(63,34,0),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRAp, FRBp}},
6766*4882a593Smuzhiyun {"dmulq.",	XRC(63,34,1),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRAp, FRBp}},
6767*4882a593Smuzhiyun 
6768*4882a593Smuzhiyun {"drrndq",	ZRC(63,35,0),	Z2_MASK,     POWER6,	PPCVLE,		{FRTp, FRA, FRBp, RMC}},
6769*4882a593Smuzhiyun {"drrndq.",	ZRC(63,35,1),	Z2_MASK,     POWER6,	PPCVLE,		{FRTp, FRA, FRBp, RMC}},
6770*4882a593Smuzhiyun 
6771*4882a593Smuzhiyun {"xsmulqp",	XRC(63,36,0),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
6772*4882a593Smuzhiyun {"xsmulqpo",	XRC(63,36,1),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
6773*4882a593Smuzhiyun 
6774*4882a593Smuzhiyun {"xsrqpxp",	Z(63,37),	Z2_MASK,     PPCVSX3,	PPCVLE,		{R, VD, VB, RMC}},
6775*4882a593Smuzhiyun 
6776*4882a593Smuzhiyun {"mtfsb1",	XRC(63,38,0),	XRARB_MASK,  COM,	PPCVLE,		{BT}},
6777*4882a593Smuzhiyun {"mtfsb1.",	XRC(63,38,1),	XRARB_MASK,  COM,	PPCVLE,		{BT}},
6778*4882a593Smuzhiyun 
6779*4882a593Smuzhiyun {"fneg",	XRC(63,40,0),	XRA_MASK,    COM,	PPCEFS|PPCVLE,	{FRT, FRB}},
6780*4882a593Smuzhiyun {"fneg.",	XRC(63,40,1),	XRA_MASK,    COM,	PPCEFS|PPCVLE,	{FRT, FRB}},
6781*4882a593Smuzhiyun 
6782*4882a593Smuzhiyun {"mcrfs",      X(63,64), XRB_MASK|(3<<21)|(3<<16), COM,	PPCVLE,		{BF, BFA}},
6783*4882a593Smuzhiyun 
6784*4882a593Smuzhiyun {"dscliq",	ZRC(63,66,0),	Z_MASK,	     POWER6,	PPCVLE,		{FRTp, FRAp, SH16}},
6785*4882a593Smuzhiyun {"dscliq.",	ZRC(63,66,1),	Z_MASK,	     POWER6,	PPCVLE,		{FRTp, FRAp, SH16}},
6786*4882a593Smuzhiyun 
6787*4882a593Smuzhiyun {"dquaiq",	ZRC(63,67,0),	Z2_MASK,     POWER6,	PPCVLE,		{TE, FRTp, FRBp, RMC}},
6788*4882a593Smuzhiyun {"dquaiq.",	ZRC(63,67,1),	Z2_MASK,     POWER6,	PPCVLE,		{TE, FRTp, FRBp, RMC}},
6789*4882a593Smuzhiyun 
6790*4882a593Smuzhiyun {"mtfsb0",	XRC(63,70,0),	XRARB_MASK,  COM,	PPCVLE,		{BT}},
6791*4882a593Smuzhiyun {"mtfsb0.",	XRC(63,70,1),	XRARB_MASK,  COM,	PPCVLE,		{BT}},
6792*4882a593Smuzhiyun 
6793*4882a593Smuzhiyun {"fmr",		XRC(63,72,0),	XRA_MASK,    COM,	PPCEFS|PPCVLE,	{FRT, FRB}},
6794*4882a593Smuzhiyun {"fmr.",	XRC(63,72,1),	XRA_MASK,    COM,	PPCEFS|PPCVLE,	{FRT, FRB}},
6795*4882a593Smuzhiyun 
6796*4882a593Smuzhiyun {"dscriq",	ZRC(63,98,0),	Z_MASK,	     POWER6,	PPCVLE,		{FRTp, FRAp, SH16}},
6797*4882a593Smuzhiyun {"dscriq.",	ZRC(63,98,1),	Z_MASK,	     POWER6,	PPCVLE,		{FRTp, FRAp, SH16}},
6798*4882a593Smuzhiyun 
6799*4882a593Smuzhiyun {"drintxq",	ZRC(63,99,0),	Z2_MASK,     POWER6,	PPCVLE,		{R, FRTp, FRBp, RMC}},
6800*4882a593Smuzhiyun {"drintxq.",	ZRC(63,99,1),	Z2_MASK,     POWER6,	PPCVLE,		{R, FRTp, FRBp, RMC}},
6801*4882a593Smuzhiyun 
6802*4882a593Smuzhiyun {"xscpsgnqp",	X(63,100),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
6803*4882a593Smuzhiyun 
6804*4882a593Smuzhiyun {"ftdiv",	X(63,128),	XBF_MASK,    POWER7,	PPCVLE,		{BF, FRA, FRB}},
6805*4882a593Smuzhiyun 
6806*4882a593Smuzhiyun {"dcmpoq",	X(63,130),	X_MASK,	     POWER6,	PPCVLE,		{BF, FRAp, FRBp}},
6807*4882a593Smuzhiyun 
6808*4882a593Smuzhiyun {"xscmpoqp",	X(63,132),	XBF_MASK,    PPCVSX3,	PPCVLE,		{BF, VA, VB}},
6809*4882a593Smuzhiyun 
6810*4882a593Smuzhiyun {"mtfsfi",  XRC(63,134,0), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCVLE, {BFF, U, W}},
6811*4882a593Smuzhiyun {"mtfsfi",  XRC(63,134,0), XRA_MASK|(3<<21)|(1<<11), COM, POWER6|PPCA2|PPC476|PPCVLE, {BFF, U}},
6812*4882a593Smuzhiyun {"mtfsfi.", XRC(63,134,1), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCVLE, {BFF, U, W}},
6813*4882a593Smuzhiyun {"mtfsfi.", XRC(63,134,1), XRA_MASK|(3<<21)|(1<<11), COM, POWER6|PPCA2|PPC476|PPCVLE, {BFF, U}},
6814*4882a593Smuzhiyun 
6815*4882a593Smuzhiyun {"fnabs",	XRC(63,136,0),	XRA_MASK,    COM,	PPCEFS|PPCVLE,	{FRT, FRB}},
6816*4882a593Smuzhiyun {"fnabs.",	XRC(63,136,1),	XRA_MASK,    COM,	PPCEFS|PPCVLE,	{FRT, FRB}},
6817*4882a593Smuzhiyun 
6818*4882a593Smuzhiyun {"fctiwu",	XRC(63,142,0),	XRA_MASK,    POWER7,	PPCVLE,		{FRT, FRB}},
6819*4882a593Smuzhiyun {"fctiwu.",	XRC(63,142,1),	XRA_MASK,    POWER7,	PPCVLE,		{FRT, FRB}},
6820*4882a593Smuzhiyun {"fctiwuz",	XRC(63,143,0),	XRA_MASK,    POWER7,	PPCVLE,		{FRT, FRB}},
6821*4882a593Smuzhiyun {"fctiwuz.",	XRC(63,143,1),	XRA_MASK,    POWER7,	PPCVLE,		{FRT, FRB}},
6822*4882a593Smuzhiyun 
6823*4882a593Smuzhiyun {"ftsqrt",	X(63,160),	XBF_MASK|FRA_MASK, POWER7, PPCVLE,	{BF, FRB}},
6824*4882a593Smuzhiyun 
6825*4882a593Smuzhiyun {"dtstexq",	X(63,162),	X_MASK,	     POWER6,	PPCVLE,		{BF, FRAp, FRBp}},
6826*4882a593Smuzhiyun 
6827*4882a593Smuzhiyun {"xscmpexpqp",	X(63,164),	XBF_MASK,    PPCVSX3,	PPCVLE,		{BF, VA, VB}},
6828*4882a593Smuzhiyun 
6829*4882a593Smuzhiyun {"dtstdcq",	Z(63,194),	Z_MASK,	     POWER6,	PPCVLE,		{BF, FRAp, DCM}},
6830*4882a593Smuzhiyun {"dtstdgq",	Z(63,226),	Z_MASK,	     POWER6,	PPCVLE,		{BF, FRAp, DGM}},
6831*4882a593Smuzhiyun 
6832*4882a593Smuzhiyun {"drintnq",	ZRC(63,227,0),	Z2_MASK,     POWER6,	PPCVLE,		{R, FRTp, FRBp, RMC}},
6833*4882a593Smuzhiyun {"drintnq.",	ZRC(63,227,1),	Z2_MASK,     POWER6,	PPCVLE,		{R, FRTp, FRBp, RMC}},
6834*4882a593Smuzhiyun 
6835*4882a593Smuzhiyun {"dctqpq",	XRC(63,258,0),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRB}},
6836*4882a593Smuzhiyun {"dctqpq.",	XRC(63,258,1),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRB}},
6837*4882a593Smuzhiyun 
6838*4882a593Smuzhiyun {"fabs",	XRC(63,264,0),	XRA_MASK,    COM,	PPCEFS|PPCVLE,	{FRT, FRB}},
6839*4882a593Smuzhiyun {"fabs.",	XRC(63,264,1),	XRA_MASK,    COM,	PPCEFS|PPCVLE,	{FRT, FRB}},
6840*4882a593Smuzhiyun 
6841*4882a593Smuzhiyun {"dctfixq",	XRC(63,290,0),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRBp}},
6842*4882a593Smuzhiyun {"dctfixq.",	XRC(63,290,1),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRBp}},
6843*4882a593Smuzhiyun 
6844*4882a593Smuzhiyun {"ddedpdq",	XRC(63,322,0),	X_MASK,	     POWER6,	PPCVLE,		{SP, FRTp, FRBp}},
6845*4882a593Smuzhiyun {"ddedpdq.",	XRC(63,322,1),	X_MASK,	     POWER6,	PPCVLE,		{SP, FRTp, FRBp}},
6846*4882a593Smuzhiyun 
6847*4882a593Smuzhiyun {"dxexq",	XRC(63,354,0),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRBp}},
6848*4882a593Smuzhiyun {"dxexq.",	XRC(63,354,1),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRBp}},
6849*4882a593Smuzhiyun 
6850*4882a593Smuzhiyun {"xsmaddqp",	XRC(63,388,0),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
6851*4882a593Smuzhiyun {"xsmaddqpo",	XRC(63,388,1),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
6852*4882a593Smuzhiyun 
6853*4882a593Smuzhiyun {"frin",	XRC(63,392,0),	XRA_MASK,    POWER5,	PPCVLE,		{FRT, FRB}},
6854*4882a593Smuzhiyun {"frin.",	XRC(63,392,1),	XRA_MASK,    POWER5,	PPCVLE,		{FRT, FRB}},
6855*4882a593Smuzhiyun 
6856*4882a593Smuzhiyun {"xsmsubqp",	XRC(63,420,0),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
6857*4882a593Smuzhiyun {"xsmsubqpo",	XRC(63,420,1),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
6858*4882a593Smuzhiyun 
6859*4882a593Smuzhiyun {"friz",	XRC(63,424,0),	XRA_MASK,    POWER5,	PPCVLE,		{FRT, FRB}},
6860*4882a593Smuzhiyun {"friz.",	XRC(63,424,1),	XRA_MASK,    POWER5,	PPCVLE,		{FRT, FRB}},
6861*4882a593Smuzhiyun 
6862*4882a593Smuzhiyun {"xsnmaddqp",	XRC(63,452,0),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
6863*4882a593Smuzhiyun {"xsnmaddqpo",	XRC(63,452,1),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
6864*4882a593Smuzhiyun 
6865*4882a593Smuzhiyun {"frip",	XRC(63,456,0),	XRA_MASK,    POWER5,	PPCVLE,		{FRT, FRB}},
6866*4882a593Smuzhiyun {"frip.",	XRC(63,456,1),	XRA_MASK,    POWER5,	PPCVLE,		{FRT, FRB}},
6867*4882a593Smuzhiyun 
6868*4882a593Smuzhiyun {"xsnmsubqp",	XRC(63,484,0),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
6869*4882a593Smuzhiyun {"xsnmsubqpo",	XRC(63,484,1),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
6870*4882a593Smuzhiyun 
6871*4882a593Smuzhiyun {"frim",	XRC(63,488,0),	XRA_MASK,    POWER5,	PPCVLE,		{FRT, FRB}},
6872*4882a593Smuzhiyun {"frim.",	XRC(63,488,1),	XRA_MASK,    POWER5,	PPCVLE,		{FRT, FRB}},
6873*4882a593Smuzhiyun 
6874*4882a593Smuzhiyun {"dsubq",	XRC(63,514,0),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRAp, FRBp}},
6875*4882a593Smuzhiyun {"dsubq.",	XRC(63,514,1),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRAp, FRBp}},
6876*4882a593Smuzhiyun 
6877*4882a593Smuzhiyun {"xssubqp",	XRC(63,516,0),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
6878*4882a593Smuzhiyun {"xssubqpo",	XRC(63,516,1),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
6879*4882a593Smuzhiyun 
6880*4882a593Smuzhiyun {"ddivq",	XRC(63,546,0),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRAp, FRBp}},
6881*4882a593Smuzhiyun {"ddivq.",	XRC(63,546,1),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRAp, FRBp}},
6882*4882a593Smuzhiyun 
6883*4882a593Smuzhiyun {"xsdivqp",	XRC(63,548,0),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
6884*4882a593Smuzhiyun {"xsdivqpo",	XRC(63,548,1),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
6885*4882a593Smuzhiyun 
6886*4882a593Smuzhiyun {"mffs",	XRC(63,583,0),	XRARB_MASK,  COM,	PPCEFS|PPCVLE,	{FRT}},
6887*4882a593Smuzhiyun {"mffs.",	XRC(63,583,1),	XRARB_MASK,  COM,	PPCEFS|PPCVLE,	{FRT}},
6888*4882a593Smuzhiyun 
6889*4882a593Smuzhiyun {"mffsce",	XMMF(63,583,0,1), XMMF_MASK|RB_MASK, POWER9, PPCVLE,	{FRT}},
6890*4882a593Smuzhiyun {"mffscdrn",	XMMF(63,583,2,4), XMMF_MASK,         POWER9, PPCVLE,	{FRT, FRB}},
6891*4882a593Smuzhiyun {"mffscdrni",	XMMF(63,583,2,5), XMMF_MASK|(3<<14), POWER9, PPCVLE,	{FRT, DRM}},
6892*4882a593Smuzhiyun {"mffscrn",	XMMF(63,583,2,6), XMMF_MASK,         POWER9, PPCVLE,	{FRT, FRB}},
6893*4882a593Smuzhiyun {"mffscrni",	XMMF(63,583,2,7), XMMF_MASK|(7<<13), POWER9, PPCVLE,	{FRT, RM}},
6894*4882a593Smuzhiyun {"mffsl",	XMMF(63,583,3,0), XMMF_MASK|RB_MASK, POWER9, PPCVLE,	{FRT}},
6895*4882a593Smuzhiyun 
6896*4882a593Smuzhiyun {"dcmpuq",	X(63,642),	X_MASK,	     POWER6,	PPCVLE,		{BF, FRAp, FRBp}},
6897*4882a593Smuzhiyun 
6898*4882a593Smuzhiyun {"xscmpuqp",	X(63,644),	XBF_MASK,    PPCVSX3,	PPCVLE,		{BF, VA, VB}},
6899*4882a593Smuzhiyun 
6900*4882a593Smuzhiyun {"dtstsfq",	X(63,674),	X_MASK,	     POWER6,	PPCVLE,		{BF, FRA, FRBp}},
6901*4882a593Smuzhiyun {"dtstsfiq",	X(63,675),	X_MASK|1<<22,POWER9,	PPCVLE,		{BF, UIM6, FRBp}},
6902*4882a593Smuzhiyun 
6903*4882a593Smuzhiyun {"xststdcqp",	X(63,708),	X_MASK,	     PPCVSX3,	PPCVLE,		{BF, VB, DCMX}},
6904*4882a593Smuzhiyun 
6905*4882a593Smuzhiyun {"mtfsf",	XFL(63,711,0),	XFL_MASK, POWER6|PPCA2|PPC476, PPCVLE,	{FLM, FRB, XFL_L, W}},
6906*4882a593Smuzhiyun {"mtfsf",	XFL(63,711,0),	XFL_MASK,    COM, POWER6|PPCA2|PPC476|PPCEFS|PPCVLE, {FLM, FRB}},
6907*4882a593Smuzhiyun {"mtfsf.",	XFL(63,711,1),	XFL_MASK, POWER6|PPCA2|PPC476, PPCVLE,	{FLM, FRB, XFL_L, W}},
6908*4882a593Smuzhiyun {"mtfsf.",	XFL(63,711,1),	XFL_MASK,    COM, POWER6|PPCA2|PPC476|PPCEFS|PPCVLE, {FLM, FRB}},
6909*4882a593Smuzhiyun 
6910*4882a593Smuzhiyun {"drdpq",	XRC(63,770,0),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRBp}},
6911*4882a593Smuzhiyun {"drdpq.",	XRC(63,770,1),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRBp}},
6912*4882a593Smuzhiyun 
6913*4882a593Smuzhiyun {"dcffixq",	XRC(63,802,0),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRB}},
6914*4882a593Smuzhiyun {"dcffixq.",	XRC(63,802,1),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRB}},
6915*4882a593Smuzhiyun 
6916*4882a593Smuzhiyun {"xsabsqp",	XVA(63,804,0),	XVA_MASK,    PPCVSX3,	PPCVLE,		{VD, VB}},
6917*4882a593Smuzhiyun {"xsxexpqp",	XVA(63,804,2),	XVA_MASK,    PPCVSX3,	PPCVLE,		{VD, VB}},
6918*4882a593Smuzhiyun {"xsnabsqp",	XVA(63,804,8),	XVA_MASK,    PPCVSX3,	PPCVLE,		{VD, VB}},
6919*4882a593Smuzhiyun {"xsnegqp",	XVA(63,804,16),	XVA_MASK,    PPCVSX3,	PPCVLE,		{VD, VB}},
6920*4882a593Smuzhiyun {"xsxsigqp",	XVA(63,804,18),	XVA_MASK,    PPCVSX3,	PPCVLE,		{VD, VB}},
6921*4882a593Smuzhiyun {"xssqrtqp",	XVARC(63,804,27,0), XVA_MASK, PPCVSX3,	PPCVLE,		{VD, VB}},
6922*4882a593Smuzhiyun {"xssqrtqpo",	XVARC(63,804,27,1), XVA_MASK, PPCVSX3,	PPCVLE,		{VD, VB}},
6923*4882a593Smuzhiyun 
6924*4882a593Smuzhiyun {"fctid",	XRC(63,814,0),	XRA_MASK,    PPC64,	PPCVLE,		{FRT, FRB}},
6925*4882a593Smuzhiyun {"fctid",	XRC(63,814,0),	XRA_MASK,    PPC476,	PPCVLE,		{FRT, FRB}},
6926*4882a593Smuzhiyun {"fctid.",	XRC(63,814,1),	XRA_MASK,    PPC64,	PPCVLE,		{FRT, FRB}},
6927*4882a593Smuzhiyun {"fctid.",	XRC(63,814,1),	XRA_MASK,    PPC476,	PPCVLE,		{FRT, FRB}},
6928*4882a593Smuzhiyun 
6929*4882a593Smuzhiyun {"fctidz",	XRC(63,815,0),	XRA_MASK,    PPC64,	PPCVLE,		{FRT, FRB}},
6930*4882a593Smuzhiyun {"fctidz",	XRC(63,815,0),	XRA_MASK,    PPC476,	PPCVLE,		{FRT, FRB}},
6931*4882a593Smuzhiyun {"fctidz.",	XRC(63,815,1),	XRA_MASK,    PPC64,	PPCVLE,		{FRT, FRB}},
6932*4882a593Smuzhiyun {"fctidz.",	XRC(63,815,1),	XRA_MASK,    PPC476,	PPCVLE,		{FRT, FRB}},
6933*4882a593Smuzhiyun 
6934*4882a593Smuzhiyun {"denbcdq",	XRC(63,834,0),	X_MASK,	     POWER6,	PPCVLE,		{S, FRTp, FRBp}},
6935*4882a593Smuzhiyun {"denbcdq.",	XRC(63,834,1),	X_MASK,	     POWER6,	PPCVLE,		{S, FRTp, FRBp}},
6936*4882a593Smuzhiyun 
6937*4882a593Smuzhiyun {"xscvqpuwz",	XVA(63,836,1),	XVA_MASK,    PPCVSX3,	PPCVLE,		{VD, VB}},
6938*4882a593Smuzhiyun {"xscvudqp",	XVA(63,836,2),	XVA_MASK,    PPCVSX3,	PPCVLE,		{VD, VB}},
6939*4882a593Smuzhiyun {"xscvqpswz",	XVA(63,836,9),	XVA_MASK,    PPCVSX3,	PPCVLE,		{VD, VB}},
6940*4882a593Smuzhiyun {"xscvsdqp",	XVA(63,836,10),	XVA_MASK,    PPCVSX3,	PPCVLE,		{VD, VB}},
6941*4882a593Smuzhiyun {"xscvqpudz",	XVA(63,836,17),	XVA_MASK,    PPCVSX3,	PPCVLE,		{VD, VB}},
6942*4882a593Smuzhiyun {"xscvqpdp",	XVARC(63,836,20,0), XVA_MASK, PPCVSX3,	PPCVLE,		{VD, VB}},
6943*4882a593Smuzhiyun {"xscvqpdpo",	XVARC(63,836,20,1), XVA_MASK, PPCVSX3,	PPCVLE,		{VD, VB}},
6944*4882a593Smuzhiyun {"xscvdpqp",	XVA(63,836,22),	XVA_MASK,    PPCVSX3,	PPCVLE,		{VD, VB}},
6945*4882a593Smuzhiyun {"xscvqpsdz",	XVA(63,836,25),	XVA_MASK,    PPCVSX3,	PPCVLE,		{VD, VB}},
6946*4882a593Smuzhiyun 
6947*4882a593Smuzhiyun {"fmrgow",	X(63,838),	X_MASK,	     PPCVSX2,	PPCVLE,		{FRT, FRA, FRB}},
6948*4882a593Smuzhiyun 
6949*4882a593Smuzhiyun {"fcfid",	XRC(63,846,0),	XRA_MASK,    PPC64,	PPCVLE,		{FRT, FRB}},
6950*4882a593Smuzhiyun {"fcfid",	XRC(63,846,0),	XRA_MASK,    PPC476,	PPCVLE,		{FRT, FRB}},
6951*4882a593Smuzhiyun {"fcfid.",	XRC(63,846,1),	XRA_MASK,    PPC64,	PPCVLE,		{FRT, FRB}},
6952*4882a593Smuzhiyun {"fcfid.",	XRC(63,846,1),	XRA_MASK,    PPC476,	PPCVLE,		{FRT, FRB}},
6953*4882a593Smuzhiyun 
6954*4882a593Smuzhiyun {"diexq",	XRC(63,866,0),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRA, FRBp}},
6955*4882a593Smuzhiyun {"diexq.",	XRC(63,866,1),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRA, FRBp}},
6956*4882a593Smuzhiyun 
6957*4882a593Smuzhiyun {"xsiexpqp",	X(63,868),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
6958*4882a593Smuzhiyun 
6959*4882a593Smuzhiyun {"fctidu",	XRC(63,942,0),	XRA_MASK, POWER7|PPCA2,	PPCVLE,		{FRT, FRB}},
6960*4882a593Smuzhiyun {"fctidu.",	XRC(63,942,1),	XRA_MASK, POWER7|PPCA2,	PPCVLE,		{FRT, FRB}},
6961*4882a593Smuzhiyun 
6962*4882a593Smuzhiyun {"fctiduz",	XRC(63,943,0),	XRA_MASK, POWER7|PPCA2,	PPCVLE,		{FRT, FRB}},
6963*4882a593Smuzhiyun {"fctiduz.",	XRC(63,943,1),	XRA_MASK, POWER7|PPCA2,	PPCVLE,		{FRT, FRB}},
6964*4882a593Smuzhiyun 
6965*4882a593Smuzhiyun {"fmrgew",	X(63,966),	X_MASK,	     PPCVSX2,	PPCVLE,		{FRT, FRA, FRB}},
6966*4882a593Smuzhiyun 
6967*4882a593Smuzhiyun {"fcfidu",	XRC(63,974,0),	XRA_MASK, POWER7|PPCA2,	PPCVLE,		{FRT, FRB}},
6968*4882a593Smuzhiyun {"fcfidu.",	XRC(63,974,1),	XRA_MASK, POWER7|PPCA2,	PPCVLE,		{FRT, FRB}},
6969*4882a593Smuzhiyun };
6970*4882a593Smuzhiyun 
6971*4882a593Smuzhiyun const int powerpc_num_opcodes =
6972*4882a593Smuzhiyun   sizeof (powerpc_opcodes) / sizeof (powerpc_opcodes[0]);
6973*4882a593Smuzhiyun 
6974*4882a593Smuzhiyun /* The VLE opcode table.
6975*4882a593Smuzhiyun 
6976*4882a593Smuzhiyun    The format of this opcode table is the same as the main opcode table.  */
6977*4882a593Smuzhiyun 
6978*4882a593Smuzhiyun const struct powerpc_opcode vle_opcodes[] = {
6979*4882a593Smuzhiyun {"se_illegal",	C(0),		C_MASK,		PPCVLE,	0,		{}},
6980*4882a593Smuzhiyun {"se_isync",	C(1),		C_MASK,		PPCVLE,	0,		{}},
6981*4882a593Smuzhiyun {"se_sc",	C(2),		C_MASK,		PPCVLE,	0,		{}},
6982*4882a593Smuzhiyun {"se_blr",	C_LK(2,0),	C_LK_MASK,	PPCVLE,	0,		{}},
6983*4882a593Smuzhiyun {"se_blrl",	C_LK(2,1),	C_LK_MASK,	PPCVLE,	0,		{}},
6984*4882a593Smuzhiyun {"se_bctr",	C_LK(3,0),	C_LK_MASK,	PPCVLE,	0,		{}},
6985*4882a593Smuzhiyun {"se_bctrl",	C_LK(3,1),	C_LK_MASK,	PPCVLE,	0,		{}},
6986*4882a593Smuzhiyun {"se_rfi",	C(8),		C_MASK,		PPCVLE,	0,		{}},
6987*4882a593Smuzhiyun {"se_rfci",	C(9),		C_MASK,		PPCVLE,	0,		{}},
6988*4882a593Smuzhiyun {"se_rfdi",	C(10),		C_MASK,		PPCVLE,	0,		{}},
6989*4882a593Smuzhiyun {"se_rfmci",	C(11),		C_MASK, PPCRFMCI|PPCVLE, 0,		{}},
6990*4882a593Smuzhiyun {"se_not",	SE_R(0,2),	SE_R_MASK,	PPCVLE,	0,		{RX}},
6991*4882a593Smuzhiyun {"se_neg",	SE_R(0,3),	SE_R_MASK,	PPCVLE,	0,		{RX}},
6992*4882a593Smuzhiyun {"se_mflr",	SE_R(0,8),	SE_R_MASK,	PPCVLE,	0,		{RX}},
6993*4882a593Smuzhiyun {"se_mtlr",	SE_R(0,9),	SE_R_MASK,	PPCVLE,	0,		{RX}},
6994*4882a593Smuzhiyun {"se_mfctr",	SE_R(0,10),	SE_R_MASK,	PPCVLE,	0,		{RX}},
6995*4882a593Smuzhiyun {"se_mtctr",	SE_R(0,11),	SE_R_MASK,	PPCVLE,	0,		{RX}},
6996*4882a593Smuzhiyun {"se_extzb",	SE_R(0,12),	SE_R_MASK,	PPCVLE,	0,		{RX}},
6997*4882a593Smuzhiyun {"se_extsb",	SE_R(0,13),	SE_R_MASK,	PPCVLE,	0,		{RX}},
6998*4882a593Smuzhiyun {"se_extzh",	SE_R(0,14),	SE_R_MASK,	PPCVLE,	0,		{RX}},
6999*4882a593Smuzhiyun {"se_extsh",	SE_R(0,15),	SE_R_MASK,	PPCVLE,	0,		{RX}},
7000*4882a593Smuzhiyun {"se_mr",	SE_RR(0,1),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
7001*4882a593Smuzhiyun {"se_mtar",	SE_RR(0,2),	SE_RR_MASK,	PPCVLE,	0,		{ARX, RY}},
7002*4882a593Smuzhiyun {"se_mfar",	SE_RR(0,3),	SE_RR_MASK,	PPCVLE,	0,		{RX, ARY}},
7003*4882a593Smuzhiyun {"se_add",	SE_RR(1,0),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
7004*4882a593Smuzhiyun {"se_mullw",	SE_RR(1,1),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
7005*4882a593Smuzhiyun {"se_sub",	SE_RR(1,2),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
7006*4882a593Smuzhiyun {"se_subf",	SE_RR(1,3),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
7007*4882a593Smuzhiyun {"se_cmp",	SE_RR(3,0),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
7008*4882a593Smuzhiyun {"se_cmpl",	SE_RR(3,1),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
7009*4882a593Smuzhiyun {"se_cmph",	SE_RR(3,2),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
7010*4882a593Smuzhiyun {"se_cmphl",	SE_RR(3,3),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
7011*4882a593Smuzhiyun 
7012*4882a593Smuzhiyun {"e_cmpi",	SCI8BF(6,0,21),	SCI8BF_MASK,	PPCVLE,	0,		{CRD32, RA, SCLSCI8}},
7013*4882a593Smuzhiyun {"e_cmpwi",	SCI8BF(6,0,21),	SCI8BF_MASK,	PPCVLE,	0,		{CRD32, RA, SCLSCI8}},
7014*4882a593Smuzhiyun {"e_cmpli",	SCI8BF(6,1,21),	SCI8BF_MASK,	PPCVLE,	0,		{CRD32, RA, SCLSCI8}},
7015*4882a593Smuzhiyun {"e_cmplwi",	SCI8BF(6,1,21),	SCI8BF_MASK,	PPCVLE,	0,		{CRD32, RA, SCLSCI8}},
7016*4882a593Smuzhiyun {"e_addi",	SCI8(6,16),	SCI8_MASK,	PPCVLE,	0,		{RT, RA, SCLSCI8}},
7017*4882a593Smuzhiyun {"e_subi",	SCI8(6,16),	SCI8_MASK,	PPCVLE,	0,		{RT, RA, SCLSCI8N}},
7018*4882a593Smuzhiyun {"e_addi.",	SCI8(6,17),	SCI8_MASK,	PPCVLE,	0,		{RT, RA, SCLSCI8}},
7019*4882a593Smuzhiyun {"e_addic",	SCI8(6,18),	SCI8_MASK,	PPCVLE,	0,		{RT, RA, SCLSCI8}},
7020*4882a593Smuzhiyun {"e_subic",	SCI8(6,18),	SCI8_MASK,	PPCVLE,	0,		{RT, RA, SCLSCI8N}},
7021*4882a593Smuzhiyun {"e_addic.",	SCI8(6,19),	SCI8_MASK,	PPCVLE,	0,		{RT, RA, SCLSCI8}},
7022*4882a593Smuzhiyun {"e_subic.",	SCI8(6,19),	SCI8_MASK,	PPCVLE,	0,		{RT, RA, SCLSCI8N}},
7023*4882a593Smuzhiyun {"e_mulli",	SCI8(6,20),	SCI8_MASK,	PPCVLE,	0,		{RT, RA, SCLSCI8}},
7024*4882a593Smuzhiyun {"e_subfic",	SCI8(6,22),	SCI8_MASK,	PPCVLE,	0,		{RT, RA, SCLSCI8}},
7025*4882a593Smuzhiyun {"e_subfic.",	SCI8(6,23),	SCI8_MASK,	PPCVLE,	0,		{RT, RA, SCLSCI8}},
7026*4882a593Smuzhiyun {"e_andi",	SCI8(6,24),	SCI8_MASK,	PPCVLE,	0,		{RA, RS, SCLSCI8}},
7027*4882a593Smuzhiyun {"e_andi.",	SCI8(6,25),	SCI8_MASK,	PPCVLE,	0,		{RA, RS, SCLSCI8}},
7028*4882a593Smuzhiyun {"e_nop",	SCI8(6,26),	0xffffffff,	PPCVLE,	0,		{0}},
7029*4882a593Smuzhiyun {"e_ori",	SCI8(6,26),	SCI8_MASK,	PPCVLE,	0,		{RA, RS, SCLSCI8}},
7030*4882a593Smuzhiyun {"e_ori.",	SCI8(6,27),	SCI8_MASK,	PPCVLE,	0,		{RA, RS, SCLSCI8}},
7031*4882a593Smuzhiyun {"e_xori",	SCI8(6,28),	SCI8_MASK,	PPCVLE,	0,		{RA, RS, SCLSCI8}},
7032*4882a593Smuzhiyun {"e_xori.",	SCI8(6,29),	SCI8_MASK,	PPCVLE,	0,		{RA, RS, SCLSCI8}},
7033*4882a593Smuzhiyun {"e_lbzu",	OPVUP(6,0),	OPVUP_MASK,	PPCVLE,	0,		{RT, D8, RA0}},
7034*4882a593Smuzhiyun {"e_lhau",	OPVUP(6,3),	OPVUP_MASK,	PPCVLE,	0,		{RT, D8, RA0}},
7035*4882a593Smuzhiyun {"e_lhzu",	OPVUP(6,1),	OPVUP_MASK,	PPCVLE,	0,		{RT, D8, RA0}},
7036*4882a593Smuzhiyun {"e_lmw",	OPVUP(6,8),	OPVUP_MASK,	PPCVLE,	0,		{RT, D8, RA0}},
7037*4882a593Smuzhiyun {"e_lwzu",	OPVUP(6,2),	OPVUP_MASK,	PPCVLE,	0,		{RT, D8, RA0}},
7038*4882a593Smuzhiyun {"e_stbu",	OPVUP(6,4),	OPVUP_MASK,	PPCVLE,	0,		{RT, D8, RA0}},
7039*4882a593Smuzhiyun {"e_sthu",	OPVUP(6,5),	OPVUP_MASK,	PPCVLE,	0,		{RT, D8, RA0}},
7040*4882a593Smuzhiyun {"e_stwu",	OPVUP(6,6),	OPVUP_MASK,	PPCVLE,	0,		{RT, D8, RA0}},
7041*4882a593Smuzhiyun {"e_stmw",	OPVUP(6,9),	OPVUP_MASK,	PPCVLE,	0,		{RT, D8, RA0}},
7042*4882a593Smuzhiyun {"e_ldmvgprw",	OPVUPRT(6,16,0),OPVUPRT_MASK,	PPCVLE,	0,		{D8, RA0}},
7043*4882a593Smuzhiyun {"e_stmvgprw",	OPVUPRT(6,17,0),OPVUPRT_MASK,	PPCVLE,	0,		{D8, RA0}},
7044*4882a593Smuzhiyun {"e_ldmvsprw",	OPVUPRT(6,16,1),OPVUPRT_MASK,	PPCVLE,	0,		{D8, RA0}},
7045*4882a593Smuzhiyun {"e_stmvsprw",	OPVUPRT(6,17,1),OPVUPRT_MASK,	PPCVLE,	0,		{D8, RA0}},
7046*4882a593Smuzhiyun {"e_ldmvsrrw",	OPVUPRT(6,16,4),OPVUPRT_MASK,	PPCVLE,	0,		{D8, RA0}},
7047*4882a593Smuzhiyun {"e_stmvsrrw",	OPVUPRT(6,17,4),OPVUPRT_MASK,	PPCVLE,	0,		{D8, RA0}},
7048*4882a593Smuzhiyun {"e_ldmvcsrrw",	OPVUPRT(6,16,5),OPVUPRT_MASK,	PPCVLE,	0,		{D8, RA0}},
7049*4882a593Smuzhiyun {"e_stmvcsrrw",	OPVUPRT(6,17,5),OPVUPRT_MASK,	PPCVLE,	0,		{D8, RA0}},
7050*4882a593Smuzhiyun {"e_ldmvdsrrw",	OPVUPRT(6,16,6),OPVUPRT_MASK,	PPCVLE,	0,		{D8, RA0}},
7051*4882a593Smuzhiyun {"e_stmvdsrrw",	OPVUPRT(6,17,6),OPVUPRT_MASK,	PPCVLE,	0,		{D8, RA0}},
7052*4882a593Smuzhiyun {"e_add16i",	OP(7),		OP_MASK,	PPCVLE,	0,		{RT, RA, SI}},
7053*4882a593Smuzhiyun {"e_la",	OP(7),		OP_MASK,	PPCVLE,	0,		{RT, D, RA0}},
7054*4882a593Smuzhiyun {"e_sub16i",	OP(7),		OP_MASK,	PPCVLE,	0,		{RT, RA, NSI}},
7055*4882a593Smuzhiyun 
7056*4882a593Smuzhiyun {"se_addi",	SE_IM5(8,0),	SE_IM5_MASK,	PPCVLE,	0,		{RX, OIMM5}},
7057*4882a593Smuzhiyun {"se_cmpli",	SE_IM5(8,1),	SE_IM5_MASK,	PPCVLE,	0,		{RX, OIMM5}},
7058*4882a593Smuzhiyun {"se_subi",	SE_IM5(9,0),	SE_IM5_MASK,	PPCVLE,	0,		{RX, OIMM5}},
7059*4882a593Smuzhiyun {"se_subi.",	SE_IM5(9,1),	SE_IM5_MASK,	PPCVLE,	0,		{RX, OIMM5}},
7060*4882a593Smuzhiyun {"se_cmpi",	SE_IM5(10,1),	SE_IM5_MASK,	PPCVLE,	0,		{RX, UI5}},
7061*4882a593Smuzhiyun {"se_bmaski",	SE_IM5(11,0),	SE_IM5_MASK,	PPCVLE,	0,		{RX, UI5}},
7062*4882a593Smuzhiyun {"se_andi",	SE_IM5(11,1),	SE_IM5_MASK,	PPCVLE,	0,		{RX, UI5}},
7063*4882a593Smuzhiyun 
7064*4882a593Smuzhiyun {"e_lbz",	OP(12),		OP_MASK,	PPCVLE,	0,		{RT, D, RA0}},
7065*4882a593Smuzhiyun {"e_stb",	OP(13),		OP_MASK,	PPCVLE,	0,		{RT, D, RA0}},
7066*4882a593Smuzhiyun {"e_lha",	OP(14),		OP_MASK,	PPCVLE,	0,		{RT, D, RA0}},
7067*4882a593Smuzhiyun 
7068*4882a593Smuzhiyun {"se_srw",	SE_RR(16,0),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
7069*4882a593Smuzhiyun {"se_sraw",	SE_RR(16,1),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
7070*4882a593Smuzhiyun {"se_slw",	SE_RR(16,2),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
7071*4882a593Smuzhiyun {"se_nop",	SE_RR(17,0),	0xffff,		PPCVLE,	0,		{0}},
7072*4882a593Smuzhiyun {"se_or",	SE_RR(17,0),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
7073*4882a593Smuzhiyun {"se_andc",	SE_RR(17,1),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
7074*4882a593Smuzhiyun {"se_and",	SE_RR(17,2),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
7075*4882a593Smuzhiyun {"se_and.",	SE_RR(17,3),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
7076*4882a593Smuzhiyun {"se_li",	IM7(9),		IM7_MASK,	PPCVLE,	0,		{RX, UI7}},
7077*4882a593Smuzhiyun 
7078*4882a593Smuzhiyun {"e_lwz",	OP(20),		OP_MASK,	PPCVLE,	0,		{RT, D, RA0}},
7079*4882a593Smuzhiyun {"e_stw",	OP(21),		OP_MASK,	PPCVLE,	0,		{RT, D, RA0}},
7080*4882a593Smuzhiyun {"e_lhz",	OP(22),		OP_MASK,	PPCVLE,	0,		{RT, D, RA0}},
7081*4882a593Smuzhiyun {"e_sth",	OP(23),		OP_MASK,	PPCVLE,	0,		{RT, D, RA0}},
7082*4882a593Smuzhiyun 
7083*4882a593Smuzhiyun {"se_bclri",	SE_IM5(24,0),	SE_IM5_MASK,	PPCVLE,	0,		{RX, UI5}},
7084*4882a593Smuzhiyun {"se_bgeni",	SE_IM5(24,1),	SE_IM5_MASK,	PPCVLE,	0,		{RX, UI5}},
7085*4882a593Smuzhiyun {"se_bseti",	SE_IM5(25,0),	SE_IM5_MASK,	PPCVLE,	0,		{RX, UI5}},
7086*4882a593Smuzhiyun {"se_btsti",	SE_IM5(25,1),	SE_IM5_MASK,	PPCVLE,	0,		{RX, UI5}},
7087*4882a593Smuzhiyun {"se_srwi",	SE_IM5(26,0),	SE_IM5_MASK,	PPCVLE,	0,		{RX, UI5}},
7088*4882a593Smuzhiyun {"se_srawi",	SE_IM5(26,1),	SE_IM5_MASK,	PPCVLE,	0,		{RX, UI5}},
7089*4882a593Smuzhiyun {"se_slwi",	SE_IM5(27,0),	SE_IM5_MASK,	PPCVLE,	0,		{RX, UI5}},
7090*4882a593Smuzhiyun 
7091*4882a593Smuzhiyun {"e_lis",	I16L(28,28),	I16L_MASK,	PPCVLE,	0,		{RD, VLEUIMML}},
7092*4882a593Smuzhiyun {"e_and2is.",	I16L(28,29),	I16L_MASK,	PPCVLE,	0,		{RD, VLEUIMML}},
7093*4882a593Smuzhiyun {"e_or2is",	I16L(28,26),	I16L_MASK,	PPCVLE,	0,		{RD, VLEUIMML}},
7094*4882a593Smuzhiyun {"e_and2i.",	I16L(28,25),	I16L_MASK,	PPCVLE,	0,		{RD, VLEUIMML}},
7095*4882a593Smuzhiyun {"e_or2i",	I16L(28,24),	I16L_MASK,	PPCVLE,	0,		{RD, VLEUIMML}},
7096*4882a593Smuzhiyun {"e_cmphl16i",	IA16(28,23),	IA16_MASK,	PPCVLE,	0,		{RA, VLEUIMM}},
7097*4882a593Smuzhiyun {"e_cmph16i",	IA16(28,22),	IA16_MASK,	PPCVLE,	0,		{RA, VLESIMM}},
7098*4882a593Smuzhiyun {"e_cmpl16i",	I16A(28,21),	I16A_MASK,	PPCVLE,	0,		{RA, VLEUIMM}},
7099*4882a593Smuzhiyun {"e_mull2i",	I16A(28,20),	I16A_MASK,	PPCVLE,	0,		{RA, VLESIMM}},
7100*4882a593Smuzhiyun {"e_cmp16i",	IA16(28,19),	IA16_MASK,	PPCVLE,	0,		{RA, VLESIMM}},
7101*4882a593Smuzhiyun {"e_sub2is",	I16A(28,18),	I16A_MASK,	PPCVLE,	0,		{RA, VLENSIMM}},
7102*4882a593Smuzhiyun {"e_add2is",	I16A(28,18),	I16A_MASK,	PPCVLE,	0,		{RA, VLESIMM}},
7103*4882a593Smuzhiyun {"e_sub2i.",	I16A(28,17),	I16A_MASK,	PPCVLE,	0,		{RA, VLENSIMM}},
7104*4882a593Smuzhiyun {"e_add2i.",	I16A(28,17),	I16A_MASK,	PPCVLE,	0,		{RA, VLESIMM}},
7105*4882a593Smuzhiyun {"e_li",	LI20(28,0),	LI20_MASK,	PPCVLE,	0,		{RT, IMM20}},
7106*4882a593Smuzhiyun {"e_rlwimi",	M(29,0),	M_MASK,		PPCVLE,	0,		{RA, RS, SH, MB, ME}},
7107*4882a593Smuzhiyun {"e_rlwinm",	M(29,1),	M_MASK,		PPCVLE,	0,		{RA, RT, SH, MBE, ME}},
7108*4882a593Smuzhiyun {"e_b",		BD24(30,0,0),	BD24_MASK,	PPCVLE,	0,		{B24}},
7109*4882a593Smuzhiyun {"e_bl",	BD24(30,0,1),	BD24_MASK,	PPCVLE,	0,		{B24}},
7110*4882a593Smuzhiyun {"e_bdnz",	EBD15(30,8,BO32DNZ,0),	EBD15_MASK, PPCVLE, 0,		{B15}},
7111*4882a593Smuzhiyun {"e_bdnzl",	EBD15(30,8,BO32DNZ,1),	EBD15_MASK, PPCVLE, 0,		{B15}},
7112*4882a593Smuzhiyun {"e_bdz",	EBD15(30,8,BO32DZ,0),	EBD15_MASK, PPCVLE, 0,		{B15}},
7113*4882a593Smuzhiyun {"e_bdzl",	EBD15(30,8,BO32DZ,1),	EBD15_MASK, PPCVLE, 0,		{B15}},
7114*4882a593Smuzhiyun {"e_bge",	EBD15BI(30,8,BO32F,CBLT,0), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
7115*4882a593Smuzhiyun {"e_bgel",	EBD15BI(30,8,BO32F,CBLT,1), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
7116*4882a593Smuzhiyun {"e_bnl",	EBD15BI(30,8,BO32F,CBLT,0), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
7117*4882a593Smuzhiyun {"e_bnll",	EBD15BI(30,8,BO32F,CBLT,1), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
7118*4882a593Smuzhiyun {"e_blt",	EBD15BI(30,8,BO32T,CBLT,0), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
7119*4882a593Smuzhiyun {"e_bltl",	EBD15BI(30,8,BO32T,CBLT,1), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
7120*4882a593Smuzhiyun {"e_bgt",	EBD15BI(30,8,BO32T,CBGT,0), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
7121*4882a593Smuzhiyun {"e_bgtl",	EBD15BI(30,8,BO32T,CBGT,1), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
7122*4882a593Smuzhiyun {"e_ble",	EBD15BI(30,8,BO32F,CBGT,0), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
7123*4882a593Smuzhiyun {"e_blel",	EBD15BI(30,8,BO32F,CBGT,1), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
7124*4882a593Smuzhiyun {"e_bng",	EBD15BI(30,8,BO32F,CBGT,0), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
7125*4882a593Smuzhiyun {"e_bngl",	EBD15BI(30,8,BO32F,CBGT,1), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
7126*4882a593Smuzhiyun {"e_bne",	EBD15BI(30,8,BO32F,CBEQ,0), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
7127*4882a593Smuzhiyun {"e_bnel",	EBD15BI(30,8,BO32F,CBEQ,1), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
7128*4882a593Smuzhiyun {"e_beq",	EBD15BI(30,8,BO32T,CBEQ,0), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
7129*4882a593Smuzhiyun {"e_beql",	EBD15BI(30,8,BO32T,CBEQ,1), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
7130*4882a593Smuzhiyun {"e_bso",	EBD15BI(30,8,BO32T,CBSO,0), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
7131*4882a593Smuzhiyun {"e_bsol",	EBD15BI(30,8,BO32T,CBSO,1), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
7132*4882a593Smuzhiyun {"e_bun",	EBD15BI(30,8,BO32T,CBSO,0), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
7133*4882a593Smuzhiyun {"e_bunl",	EBD15BI(30,8,BO32T,CBSO,1), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
7134*4882a593Smuzhiyun {"e_bns",	EBD15BI(30,8,BO32F,CBSO,0), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
7135*4882a593Smuzhiyun {"e_bnsl",	EBD15BI(30,8,BO32F,CBSO,1), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
7136*4882a593Smuzhiyun {"e_bnu",	EBD15BI(30,8,BO32F,CBSO,0), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
7137*4882a593Smuzhiyun {"e_bnul",	EBD15BI(30,8,BO32F,CBSO,1), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
7138*4882a593Smuzhiyun {"e_bc",	BD15(30,8,0),	BD15_MASK,	PPCVLE,	0,		{BO32, BI32, B15}},
7139*4882a593Smuzhiyun {"e_bcl",	BD15(30,8,1),	BD15_MASK,	PPCVLE,	0,		{BO32, BI32, B15}},
7140*4882a593Smuzhiyun 
7141*4882a593Smuzhiyun {"e_bf",	EBD15(30,8,BO32F,0), EBD15_MASK, PPCVLE, 0,		{BI32,B15}},
7142*4882a593Smuzhiyun {"e_bfl",	EBD15(30,8,BO32F,1), EBD15_MASK, PPCVLE, 0,		{BI32,B15}},
7143*4882a593Smuzhiyun {"e_bt",	EBD15(30,8,BO32T,0), EBD15_MASK, PPCVLE, 0,		{BI32,B15}},
7144*4882a593Smuzhiyun {"e_btl",	EBD15(30,8,BO32T,1), EBD15_MASK, PPCVLE, 0,		{BI32,B15}},
7145*4882a593Smuzhiyun 
7146*4882a593Smuzhiyun {"e_cmph",	X(31,14),	X_MASK,		PPCVLE,	0,		{CRD, RA, RB}},
7147*4882a593Smuzhiyun {"e_cmphl",	X(31,46),	X_MASK,		PPCVLE,	0,		{CRD, RA, RB}},
7148*4882a593Smuzhiyun {"e_crandc",	XL(31,129),	XL_MASK,	PPCVLE,	0,		{BT, BA, BB}},
7149*4882a593Smuzhiyun {"e_crnand",	XL(31,225),	XL_MASK,	PPCVLE,	0,		{BT, BA, BB}},
7150*4882a593Smuzhiyun {"e_crnot",	XL(31,33),	XL_MASK,	PPCVLE,	0,		{BT, BA, BBA}},
7151*4882a593Smuzhiyun {"e_crnor",	XL(31,33),	XL_MASK,	PPCVLE,	0,		{BT, BA, BB}},
7152*4882a593Smuzhiyun {"e_crclr",	XL(31,193),	XL_MASK,	PPCVLE,	0,		{BT, BAT, BBA}},
7153*4882a593Smuzhiyun {"e_crxor",	XL(31,193),	XL_MASK,	PPCVLE,	0,		{BT, BA, BB}},
7154*4882a593Smuzhiyun {"e_mcrf",	XL(31,16),	XL_MASK,	PPCVLE,	0,		{CRD, CR}},
7155*4882a593Smuzhiyun {"e_slwi",	EX(31,112),	EX_MASK,	PPCVLE,	0,		{RA, RS, SH}},
7156*4882a593Smuzhiyun {"e_slwi.",	EX(31,113),	EX_MASK,	PPCVLE,	0,		{RA, RS, SH}},
7157*4882a593Smuzhiyun 
7158*4882a593Smuzhiyun {"e_crand",	XL(31,257),	XL_MASK,	PPCVLE,	0,		{BT, BA, BB}},
7159*4882a593Smuzhiyun 
7160*4882a593Smuzhiyun {"e_rlw",	EX(31,560),	EX_MASK,	PPCVLE,	0,		{RA, RS, RB}},
7161*4882a593Smuzhiyun {"e_rlw.",	EX(31,561),	EX_MASK,	PPCVLE,	0,		{RA, RS, RB}},
7162*4882a593Smuzhiyun 
7163*4882a593Smuzhiyun {"e_crset",	XL(31,289),	XL_MASK,	PPCVLE,	0,		{BT, BAT, BBA}},
7164*4882a593Smuzhiyun {"e_creqv",	XL(31,289),	XL_MASK,	PPCVLE,	0,		{BT, BA, BB}},
7165*4882a593Smuzhiyun 
7166*4882a593Smuzhiyun {"e_rlwi",	EX(31,624),	EX_MASK,	PPCVLE,	0,		{RA, RS, SH}},
7167*4882a593Smuzhiyun {"e_rlwi.",	EX(31,625),	EX_MASK,	PPCVLE,	0,		{RA, RS, SH}},
7168*4882a593Smuzhiyun 
7169*4882a593Smuzhiyun {"e_crorc",	XL(31,417),	XL_MASK,	PPCVLE,	0,		{BT, BA, BB}},
7170*4882a593Smuzhiyun 
7171*4882a593Smuzhiyun {"e_crmove",	XL(31,449),	XL_MASK,	PPCVLE,	0,		{BT, BA, BBA}},
7172*4882a593Smuzhiyun {"e_cror",	XL(31,449),	XL_MASK,	PPCVLE,	0,		{BT, BA, BB}},
7173*4882a593Smuzhiyun 
7174*4882a593Smuzhiyun {"mtmas1",	XSPR(31,467,625), XSPR_MASK,	PPCVLE,	0,		{RS}},
7175*4882a593Smuzhiyun 
7176*4882a593Smuzhiyun {"e_srwi",	EX(31,1136),	EX_MASK,	PPCVLE,	0,		{RA, RS, SH}},
7177*4882a593Smuzhiyun {"e_srwi.",	EX(31,1137),	EX_MASK,	PPCVLE,	0,		{RA, RS, SH}},
7178*4882a593Smuzhiyun 
7179*4882a593Smuzhiyun {"se_lbz",	SD4(8),		SD4_MASK,	PPCVLE,	0,		{RZ, SE_SD, RX}},
7180*4882a593Smuzhiyun 
7181*4882a593Smuzhiyun {"se_stb",	SD4(9),		SD4_MASK,	PPCVLE,	0,		{RZ, SE_SD, RX}},
7182*4882a593Smuzhiyun 
7183*4882a593Smuzhiyun {"se_lhz",	SD4(10),	SD4_MASK,	PPCVLE,	0,		{RZ, SE_SDH, RX}},
7184*4882a593Smuzhiyun 
7185*4882a593Smuzhiyun {"se_sth",	SD4(11),	SD4_MASK,	PPCVLE,	0,		{RZ, SE_SDH, RX}},
7186*4882a593Smuzhiyun 
7187*4882a593Smuzhiyun {"se_lwz",	SD4(12),	SD4_MASK,	PPCVLE,	0,		{RZ, SE_SDW, RX}},
7188*4882a593Smuzhiyun 
7189*4882a593Smuzhiyun {"se_stw",	SD4(13),	SD4_MASK,	PPCVLE,	0,		{RZ, SE_SDW, RX}},
7190*4882a593Smuzhiyun 
7191*4882a593Smuzhiyun {"se_bge",	EBD8IO(28,0,0),	EBD8IO3_MASK,	PPCVLE,	0,		{B8}},
7192*4882a593Smuzhiyun {"se_bnl",	EBD8IO(28,0,0),	EBD8IO3_MASK,	PPCVLE,	0,		{B8}},
7193*4882a593Smuzhiyun {"se_ble",	EBD8IO(28,0,1),	EBD8IO3_MASK,	PPCVLE,	0,		{B8}},
7194*4882a593Smuzhiyun {"se_bng",	EBD8IO(28,0,1),	EBD8IO3_MASK,	PPCVLE,	0,		{B8}},
7195*4882a593Smuzhiyun {"se_bne",	EBD8IO(28,0,2),	EBD8IO3_MASK,	PPCVLE,	0,		{B8}},
7196*4882a593Smuzhiyun {"se_bns",	EBD8IO(28,0,3),	EBD8IO3_MASK,	PPCVLE,	0,		{B8}},
7197*4882a593Smuzhiyun {"se_bnu",	EBD8IO(28,0,3),	EBD8IO3_MASK,	PPCVLE,	0,		{B8}},
7198*4882a593Smuzhiyun {"se_bf",	EBD8IO(28,0,0),	EBD8IO2_MASK,	PPCVLE,	0,		{BI16, B8}},
7199*4882a593Smuzhiyun {"se_blt",	EBD8IO(28,1,0),	EBD8IO3_MASK,	PPCVLE,	0,		{B8}},
7200*4882a593Smuzhiyun {"se_bgt",	EBD8IO(28,1,1),	EBD8IO3_MASK,	PPCVLE,	0,		{B8}},
7201*4882a593Smuzhiyun {"se_beq",	EBD8IO(28,1,2),	EBD8IO3_MASK,	PPCVLE,	0,		{B8}},
7202*4882a593Smuzhiyun {"se_bso",	EBD8IO(28,1,3),	EBD8IO3_MASK,	PPCVLE,	0,		{B8}},
7203*4882a593Smuzhiyun {"se_bun",	EBD8IO(28,1,3),	EBD8IO3_MASK,	PPCVLE,	0,		{B8}},
7204*4882a593Smuzhiyun {"se_bt",	EBD8IO(28,1,0),	EBD8IO2_MASK,	PPCVLE,	0,		{BI16, B8}},
7205*4882a593Smuzhiyun {"se_bc",	BD8IO(28),	BD8IO_MASK,	PPCVLE,	0,		{BO16, BI16, B8}},
7206*4882a593Smuzhiyun {"se_b",	BD8(58,0,0),	BD8_MASK,	PPCVLE,	0,		{B8}},
7207*4882a593Smuzhiyun {"se_bl",	BD8(58,0,1),	BD8_MASK,	PPCVLE,	0,		{B8}},
7208*4882a593Smuzhiyun };
7209*4882a593Smuzhiyun 
7210*4882a593Smuzhiyun const int vle_num_opcodes =
7211*4882a593Smuzhiyun   sizeof (vle_opcodes) / sizeof (vle_opcodes[0]);
7212*4882a593Smuzhiyun 
7213*4882a593Smuzhiyun /* The macro table.  This is only used by the assembler.  */
7214*4882a593Smuzhiyun 
7215*4882a593Smuzhiyun /* The expressions of the form (-x ! 31) & (x | 31) have the value 0
7216*4882a593Smuzhiyun    when x=0; 32-x when x is between 1 and 31; are negative if x is
7217*4882a593Smuzhiyun    negative; and are 32 or more otherwise.  This is what you want
7218*4882a593Smuzhiyun    when, for instance, you are emulating a right shift by a
7219*4882a593Smuzhiyun    rotate-left-and-mask, because the underlying instructions support
7220*4882a593Smuzhiyun    shifts of size 0 but not shifts of size 32.  By comparison, when
7221*4882a593Smuzhiyun    extracting x bits from some word you want to use just 32-x, because
7222*4882a593Smuzhiyun    the underlying instructions don't support extracting 0 bits but do
7223*4882a593Smuzhiyun    support extracting the whole word (32 bits in this case).  */
7224*4882a593Smuzhiyun 
7225*4882a593Smuzhiyun const struct powerpc_macro powerpc_macros[] = {
7226*4882a593Smuzhiyun {"extldi",   4,	PPC64,	"rldicr %0,%1,%3,(%2)-1"},
7227*4882a593Smuzhiyun {"extldi.",  4,	PPC64,	"rldicr. %0,%1,%3,(%2)-1"},
7228*4882a593Smuzhiyun {"extrdi",   4,	PPC64,	"rldicl %0,%1,((%2)+(%3))&((%2)+(%3)<>64),64-(%2)"},
7229*4882a593Smuzhiyun {"extrdi.",  4,	PPC64,	"rldicl. %0,%1,((%2)+(%3))&((%2)+(%3)<>64),64-(%2)"},
7230*4882a593Smuzhiyun {"insrdi",   4,	PPC64,	"rldimi %0,%1,64-((%2)+(%3)),%3"},
7231*4882a593Smuzhiyun {"insrdi.",  4,	PPC64,	"rldimi. %0,%1,64-((%2)+(%3)),%3"},
7232*4882a593Smuzhiyun {"rotrdi",   3,	PPC64,	"rldicl %0,%1,(-(%2)!63)&((%2)|63),0"},
7233*4882a593Smuzhiyun {"rotrdi.",  3,	PPC64,	"rldicl. %0,%1,(-(%2)!63)&((%2)|63),0"},
7234*4882a593Smuzhiyun {"sldi",     3,	PPC64,	"rldicr %0,%1,%2,63-(%2)"},
7235*4882a593Smuzhiyun {"sldi.",    3,	PPC64,	"rldicr. %0,%1,%2,63-(%2)"},
7236*4882a593Smuzhiyun {"srdi",     3,	PPC64,	"rldicl %0,%1,(-(%2)!63)&((%2)|63),%2"},
7237*4882a593Smuzhiyun {"srdi.",    3,	PPC64,	"rldicl. %0,%1,(-(%2)!63)&((%2)|63),%2"},
7238*4882a593Smuzhiyun {"clrrdi",   3,	PPC64,	"rldicr %0,%1,0,63-(%2)"},
7239*4882a593Smuzhiyun {"clrrdi.",  3,	PPC64,	"rldicr. %0,%1,0,63-(%2)"},
7240*4882a593Smuzhiyun {"clrlsldi", 4,	PPC64,	"rldic %0,%1,%3,(%2)-(%3)"},
7241*4882a593Smuzhiyun {"clrlsldi.",4,	PPC64,	"rldic. %0,%1,%3,(%2)-(%3)"},
7242*4882a593Smuzhiyun 
7243*4882a593Smuzhiyun {"extlwi",   4,	PPCCOM,	"rlwinm %0,%1,%3,0,(%2)-1"},
7244*4882a593Smuzhiyun {"extlwi.",  4,	PPCCOM,	"rlwinm. %0,%1,%3,0,(%2)-1"},
7245*4882a593Smuzhiyun {"extrwi",   4,	PPCCOM,	"rlwinm %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"},
7246*4882a593Smuzhiyun {"extrwi.",  4,	PPCCOM,	"rlwinm. %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"},
7247*4882a593Smuzhiyun {"inslwi",   4,	PPCCOM,	"rlwimi %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"},
7248*4882a593Smuzhiyun {"inslwi.",  4,	PPCCOM,	"rlwimi. %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"},
7249*4882a593Smuzhiyun {"insrwi",   4,	PPCCOM,	"rlwimi %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"},
7250*4882a593Smuzhiyun {"insrwi.",  4,	PPCCOM,	"rlwimi. %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"},
7251*4882a593Smuzhiyun {"rotrwi",   3,	PPCCOM,	"rlwinm %0,%1,(-(%2)!31)&((%2)|31),0,31"},
7252*4882a593Smuzhiyun {"rotrwi.",  3,	PPCCOM,	"rlwinm. %0,%1,(-(%2)!31)&((%2)|31),0,31"},
7253*4882a593Smuzhiyun {"slwi",     3,	PPCCOM,	"rlwinm %0,%1,%2,0,31-(%2)"},
7254*4882a593Smuzhiyun {"sli",      3,	PWRCOM,	"rlinm %0,%1,%2,0,31-(%2)"},
7255*4882a593Smuzhiyun {"slwi.",    3,	PPCCOM,	"rlwinm. %0,%1,%2,0,31-(%2)"},
7256*4882a593Smuzhiyun {"sli.",     3,	PWRCOM,	"rlinm. %0,%1,%2,0,31-(%2)"},
7257*4882a593Smuzhiyun {"srwi",     3,	PPCCOM,	"rlwinm %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
7258*4882a593Smuzhiyun {"sri",      3,	PWRCOM,	"rlinm %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
7259*4882a593Smuzhiyun {"srwi.",    3,	PPCCOM,	"rlwinm. %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
7260*4882a593Smuzhiyun {"sri.",     3,	PWRCOM,	"rlinm. %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
7261*4882a593Smuzhiyun {"clrrwi",   3,	PPCCOM,	"rlwinm %0,%1,0,0,31-(%2)"},
7262*4882a593Smuzhiyun {"clrrwi.",  3,	PPCCOM,	"rlwinm. %0,%1,0,0,31-(%2)"},
7263*4882a593Smuzhiyun {"clrlslwi", 4,	PPCCOM,	"rlwinm %0,%1,%3,(%2)-(%3),31-(%3)"},
7264*4882a593Smuzhiyun {"clrlslwi.",4, PPCCOM,	"rlwinm. %0,%1,%3,(%2)-(%3),31-(%3)"},
7265*4882a593Smuzhiyun 
7266*4882a593Smuzhiyun {"e_extlwi", 4,	PPCVLE, "e_rlwinm %0,%1,%3,0,(%2)-1"},
7267*4882a593Smuzhiyun {"e_extrwi", 4,	PPCVLE, "e_rlwinm %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"},
7268*4882a593Smuzhiyun {"e_inslwi", 4,	PPCVLE, "e_rlwimi %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"},
7269*4882a593Smuzhiyun {"e_insrwi", 4,	PPCVLE, "e_rlwimi %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"},
7270*4882a593Smuzhiyun {"e_rotlwi", 3,	PPCVLE, "e_rlwinm %0,%1,%2,0,31"},
7271*4882a593Smuzhiyun {"e_rotrwi", 3,	PPCVLE, "e_rlwinm %0,%1,(-(%2)!31)&((%2)|31),0,31"},
7272*4882a593Smuzhiyun {"e_slwi",   3,	PPCVLE, "e_rlwinm %0,%1,%2,0,31-(%2)"},
7273*4882a593Smuzhiyun {"e_srwi",   3,	PPCVLE, "e_rlwinm %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
7274*4882a593Smuzhiyun {"e_clrlwi", 3,	PPCVLE, "e_rlwinm %0,%1,0,%2,31"},
7275*4882a593Smuzhiyun {"e_clrrwi", 3,	PPCVLE, "e_rlwinm %0,%1,0,0,31-(%2)"},
7276*4882a593Smuzhiyun {"e_clrlslwi",4, PPCVLE, "e_rlwinm %0,%1,%3,(%2)-(%3),31-(%3)"},
7277*4882a593Smuzhiyun };
7278*4882a593Smuzhiyun 
7279*4882a593Smuzhiyun const int powerpc_num_macros =
7280*4882a593Smuzhiyun   sizeof (powerpc_macros) / sizeof (powerpc_macros[0]);
7281