Silence gcc printf warnings
[deliverable/binutils-gdb.git] / opcodes / ppc-opc.c
CommitLineData
252b5132 1/* ppc-opc.c -- PowerPC opcode list
5e8cb021 2 Copyright 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004,
930bb4cf 3 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
252b5132
RH
4 Written by Ian Lance Taylor, Cygnus Support
5
9b201bb5 6 This file is part of the GNU opcodes library.
252b5132 7
9b201bb5
NC
8 This library is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 3, or (at your option)
11 any later version.
252b5132 12
9b201bb5
NC
13 It is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
16 License for more details.
252b5132 17
112290ab 18 You should have received a copy of the GNU General Public License
9b201bb5
NC
19 along with this file; see the file COPYING. If not, write to the
20 Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
21 MA 02110-1301, USA. */
252b5132
RH
22
23#include <stdio.h>
0d8dfecf 24#include "sysdep.h"
252b5132
RH
25#include "opcode/ppc.h"
26#include "opintl.h"
27
28/* This file holds the PowerPC opcode table. The opcode table
29 includes almost all of the extended instruction mnemonics. This
30 permits the disassembler to use them, and simplifies the assembler
31 logic, at the cost of increasing the table size. The table is
32 strictly constant data, so the compiler should be able to put it in
33 the .text section.
34
35 This file also holds the operand table. All knowledge about
36 inserting operands into instructions and vice-versa is kept in this
37 file. */
38\f
39/* Local insertion and extraction functions. */
40
fa452fa6
PB
41static unsigned long insert_bat (unsigned long, long, ppc_cpu_t, const char **);
42static long extract_bat (unsigned long, ppc_cpu_t, int *);
43static unsigned long insert_bba (unsigned long, long, ppc_cpu_t, const char **);
44static long extract_bba (unsigned long, ppc_cpu_t, int *);
45static unsigned long insert_bdm (unsigned long, long, ppc_cpu_t, const char **);
46static long extract_bdm (unsigned long, ppc_cpu_t, int *);
47static unsigned long insert_bdp (unsigned long, long, ppc_cpu_t, const char **);
48static long extract_bdp (unsigned long, ppc_cpu_t, int *);
49static unsigned long insert_bo (unsigned long, long, ppc_cpu_t, const char **);
50static long extract_bo (unsigned long, ppc_cpu_t, int *);
51static unsigned long insert_boe (unsigned long, long, ppc_cpu_t, const char **);
52static long extract_boe (unsigned long, ppc_cpu_t, int *);
53static unsigned long insert_fxm (unsigned long, long, ppc_cpu_t, const char **);
54static long extract_fxm (unsigned long, ppc_cpu_t, int *);
55static unsigned long insert_mbe (unsigned long, long, ppc_cpu_t, const char **);
56static long extract_mbe (unsigned long, ppc_cpu_t, int *);
57static unsigned long insert_mb6 (unsigned long, long, ppc_cpu_t, const char **);
58static long extract_mb6 (unsigned long, ppc_cpu_t, int *);
59static long extract_nb (unsigned long, ppc_cpu_t, int *);
60static unsigned long insert_nsi (unsigned long, long, ppc_cpu_t, const char **);
61static long extract_nsi (unsigned long, ppc_cpu_t, int *);
62static unsigned long insert_ral (unsigned long, long, ppc_cpu_t, const char **);
63static unsigned long insert_ram (unsigned long, long, ppc_cpu_t, const char **);
64static unsigned long insert_raq (unsigned long, long, ppc_cpu_t, const char **);
65static unsigned long insert_ras (unsigned long, long, ppc_cpu_t, const char **);
66static unsigned long insert_rbs (unsigned long, long, ppc_cpu_t, const char **);
67static long extract_rbs (unsigned long, ppc_cpu_t, int *);
68static unsigned long insert_sh6 (unsigned long, long, ppc_cpu_t, const char **);
69static long extract_sh6 (unsigned long, ppc_cpu_t, int *);
70static unsigned long insert_spr (unsigned long, long, ppc_cpu_t, const char **);
71static long extract_spr (unsigned long, ppc_cpu_t, int *);
72static unsigned long insert_sprg (unsigned long, long, ppc_cpu_t, const char **);
73static long extract_sprg (unsigned long, ppc_cpu_t, int *);
74static unsigned long insert_tbr (unsigned long, long, ppc_cpu_t, const char **);
75static long extract_tbr (unsigned long, ppc_cpu_t, int *);
252b5132
RH
76\f
77/* The operands table.
78
717bbdf1 79 The fields are bitm, shift, insert, extract, flags.
252b5132
RH
80
81 We used to put parens around the various additions, like the one
82 for BA just below. However, that caused trouble with feeble
83 compilers with a limit on depth of a parenthesized expression, like
84 (reportedly) the compiler in Microsoft Developer Studio 5. So we
85 omit the parens, since the macros are never used in a context where
86 the addition will be ambiguous. */
87
88const struct powerpc_operand powerpc_operands[] =
89{
90 /* The zero index is used to indicate the end of the list of
91 operands. */
92#define UNUSED 0
bbac1f2a 93 { 0, 0, NULL, NULL, 0 },
252b5132
RH
94
95 /* The BA field in an XL form instruction. */
96#define BA UNUSED + 1
717bbdf1
AM
97 /* The BI field in a B form or XL form instruction. */
98#define BI BA
99#define BI_MASK (0x1f << 16)
b84bf58a 100 { 0x1f, 16, NULL, NULL, PPC_OPERAND_CR },
252b5132
RH
101
102 /* The BA field in an XL form instruction when it must be the same
103 as the BT field in the same instruction. */
104#define BAT BA + 1
b84bf58a 105 { 0x1f, 16, insert_bat, extract_bat, PPC_OPERAND_FAKE },
252b5132
RH
106
107 /* The BB field in an XL form instruction. */
108#define BB BAT + 1
109#define BB_MASK (0x1f << 11)
b84bf58a 110 { 0x1f, 11, NULL, NULL, PPC_OPERAND_CR },
252b5132
RH
111
112 /* The BB field in an XL form instruction when it must be the same
113 as the BA field in the same instruction. */
114#define BBA BB + 1
b84bf58a 115 { 0x1f, 11, insert_bba, extract_bba, PPC_OPERAND_FAKE },
252b5132
RH
116
117 /* The BD field in a B form instruction. The lower two bits are
118 forced to zero. */
119#define BD BBA + 1
b84bf58a 120 { 0xfffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
252b5132
RH
121
122 /* The BD field in a B form instruction when absolute addressing is
123 used. */
124#define BDA BD + 1
b84bf58a 125 { 0xfffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
252b5132
RH
126
127 /* The BD field in a B form instruction when the - modifier is used.
128 This sets the y bit of the BO field appropriately. */
129#define BDM BDA + 1
b84bf58a 130 { 0xfffc, 0, insert_bdm, extract_bdm,
11b37b7b 131 PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
252b5132
RH
132
133 /* The BD field in a B form instruction when the - modifier is used
134 and absolute address is used. */
135#define BDMA BDM + 1
b84bf58a 136 { 0xfffc, 0, insert_bdm, extract_bdm,
11b37b7b 137 PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
252b5132
RH
138
139 /* The BD field in a B form instruction when the + modifier is used.
140 This sets the y bit of the BO field appropriately. */
141#define BDP BDMA + 1
b84bf58a 142 { 0xfffc, 0, insert_bdp, extract_bdp,
11b37b7b 143 PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
252b5132
RH
144
145 /* The BD field in a B form instruction when the + modifier is used
146 and absolute addressing is used. */
147#define BDPA BDP + 1
b84bf58a 148 { 0xfffc, 0, insert_bdp, extract_bdp,
11b37b7b 149 PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
252b5132
RH
150
151 /* The BF field in an X or XL form instruction. */
152#define BF BDPA + 1
717bbdf1
AM
153 /* The CRFD field in an X form instruction. */
154#define CRFD BF
b84bf58a 155 { 0x7, 23, NULL, NULL, PPC_OPERAND_CR },
252b5132 156
ea192fa3
PB
157 /* The BF field in an X or XL form instruction. */
158#define BFF BF + 1
159 { 0x7, 23, NULL, NULL, 0 },
160
252b5132
RH
161 /* An optional BF field. This is used for comparison instructions,
162 in which an omitted BF field is taken as zero. */
ea192fa3 163#define OBF BFF + 1
b84bf58a 164 { 0x7, 23, NULL, NULL, PPC_OPERAND_CR | PPC_OPERAND_OPTIONAL },
252b5132
RH
165
166 /* The BFA field in an X or XL form instruction. */
167#define BFA OBF + 1
b84bf58a 168 { 0x7, 18, NULL, NULL, PPC_OPERAND_CR },
252b5132 169
252b5132
RH
170 /* The BO field in a B form instruction. Certain values are
171 illegal. */
717bbdf1 172#define BO BFA + 1
252b5132 173#define BO_MASK (0x1f << 21)
b84bf58a 174 { 0x1f, 21, insert_bo, extract_bo, 0 },
252b5132
RH
175
176 /* The BO field in a B form instruction when the + or - modifier is
177 used. This is like the BO field, but it must be even. */
178#define BOE BO + 1
b84bf58a 179 { 0x1e, 21, insert_boe, extract_boe, 0 },
252b5132 180
d0618d1c 181#define BH BOE + 1
b84bf58a 182 { 0x3, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
d0618d1c 183
252b5132 184 /* The BT field in an X or XL form instruction. */
d0618d1c 185#define BT BH + 1
b84bf58a 186 { 0x1f, 21, NULL, NULL, PPC_OPERAND_CR },
252b5132
RH
187
188 /* The condition register number portion of the BI field in a B form
189 or XL form instruction. This is used for the extended
190 conditional branch mnemonics, which set the lower two bits of the
191 BI field. This field is optional. */
192#define CR BT + 1
b84bf58a 193 { 0x7, 18, NULL, NULL, PPC_OPERAND_CR | PPC_OPERAND_OPTIONAL },
252b5132 194
23976049
EZ
195 /* The CRB field in an X form instruction. */
196#define CRB CR + 1
717bbdf1
AM
197 /* The MB field in an M form instruction. */
198#define MB CRB
199#define MB_MASK (0x1f << 6)
b84bf58a 200 { 0x1f, 6, NULL, NULL, 0 },
23976049 201
23976049 202 /* The CRFS field in an X form instruction. */
717bbdf1 203#define CRFS CRB + 1
b84bf58a 204 { 0x7, 0, NULL, NULL, PPC_OPERAND_CR },
23976049 205
418c1742 206 /* The CT field in an X form instruction. */
23976049 207#define CT CRFS + 1
717bbdf1
AM
208 /* The MO field in an mbar instruction. */
209#define MO CT
b84bf58a 210 { 0x1f, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
418c1742 211
252b5132
RH
212 /* The D field in a D form instruction. This is a displacement off
213 a register, and implies that the next operand is a register in
214 parentheses. */
418c1742 215#define D CT + 1
b84bf58a 216 { 0xffff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
252b5132 217
418c1742
MG
218 /* The DE field in a DE form instruction. This is like D, but is 12
219 bits only. */
220#define DE D + 1
b84bf58a 221 { 0xfff, 4, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
418c1742
MG
222
223 /* The DES field in a DES form instruction. This is like DS, but is 14
224 bits only (12 stored.) */
225#define DES DE + 1
b84bf58a 226 { 0x3ffc, 2, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
418c1742 227
adadcc0c
AM
228 /* The DQ field in a DQ form instruction. This is like D, but the
229 lower four bits are forced to zero. */
230#define DQ DES + 1
b84bf58a
AM
231 { 0xfff0, 0, NULL, NULL,
232 PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DQ },
adadcc0c 233
252b5132
RH
234 /* The DS field in a DS form instruction. This is like D, but the
235 lower two bits are forced to zero. */
adadcc0c 236#define DS DQ + 1
b84bf58a
AM
237 { 0xfffc, 0, NULL, NULL,
238 PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DS },
252b5132 239
19a6653c
AM
240 /* The DUIS field in a XFX form instruction, 10 bits unsigned imediate */
241#define DUIS DS + 1
242 { 0x3ff, 11, NULL, NULL, 0 },
243
252b5132 244 /* The E field in a wrteei instruction. */
c3d65c1c 245 /* And the W bit in the pair singles instructions. */
19a6653c 246#define E DUIS + 1
c3d65c1c 247#define PSW E
b84bf58a 248 { 0x1, 15, NULL, NULL, 0 },
252b5132
RH
249
250 /* The FL1 field in a POWER SC form instruction. */
251#define FL1 E + 1
717bbdf1
AM
252 /* The U field in an X form instruction. */
253#define U FL1
b84bf58a 254 { 0xf, 12, NULL, NULL, 0 },
252b5132
RH
255
256 /* The FL2 field in a POWER SC form instruction. */
257#define FL2 FL1 + 1
b84bf58a 258 { 0x7, 2, NULL, NULL, 0 },
252b5132
RH
259
260 /* The FLM field in an XFL form instruction. */
261#define FLM FL2 + 1
b84bf58a 262 { 0xff, 17, NULL, NULL, 0 },
252b5132
RH
263
264 /* The FRA field in an X or A form instruction. */
265#define FRA FLM + 1
266#define FRA_MASK (0x1f << 16)
b84bf58a 267 { 0x1f, 16, NULL, NULL, PPC_OPERAND_FPR },
252b5132
RH
268
269 /* The FRB field in an X or A form instruction. */
270#define FRB FRA + 1
271#define FRB_MASK (0x1f << 11)
b84bf58a 272 { 0x1f, 11, NULL, NULL, PPC_OPERAND_FPR },
252b5132
RH
273
274 /* The FRC field in an A form instruction. */
275#define FRC FRB + 1
276#define FRC_MASK (0x1f << 6)
b84bf58a 277 { 0x1f, 6, NULL, NULL, PPC_OPERAND_FPR },
252b5132
RH
278
279 /* The FRS field in an X form instruction or the FRT field in a D, X
280 or A form instruction. */
281#define FRS FRC + 1
282#define FRT FRS
b84bf58a 283 { 0x1f, 21, NULL, NULL, PPC_OPERAND_FPR },
252b5132
RH
284
285 /* The FXM field in an XFX instruction. */
286#define FXM FRS + 1
b84bf58a 287 { 0xff, 12, insert_fxm, extract_fxm, 0 },
c168870a
AM
288
289 /* Power4 version for mfcr. */
290#define FXM4 FXM + 1
b84bf58a 291 { 0xff, 12, insert_fxm, extract_fxm, PPC_OPERAND_OPTIONAL },
252b5132
RH
292
293 /* The L field in a D or X form instruction. */
c168870a 294#define L FXM4 + 1
b84bf58a 295 { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
252b5132 296
1ed8e1e4
AM
297 /* The LEV field in a POWER SVC form instruction. */
298#define SVC_LEV L + 1
b84bf58a 299 { 0x7f, 5, NULL, NULL, 0 },
252b5132 300
1ed8e1e4
AM
301 /* The LEV field in an SC form instruction. */
302#define LEV SVC_LEV + 1
b84bf58a 303 { 0x7f, 5, NULL, NULL, PPC_OPERAND_OPTIONAL },
1ed8e1e4 304
252b5132
RH
305 /* The LI field in an I form instruction. The lower two bits are
306 forced to zero. */
307#define LI LEV + 1
b84bf58a 308 { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
252b5132
RH
309
310 /* The LI field in an I form instruction when used as an absolute
311 address. */
312#define LIA LI + 1
b84bf58a 313 { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
252b5132 314
6ba045b1
AM
315 /* The LS field in an X (sync) form instruction. */
316#define LS LIA + 1
b84bf58a 317 { 0x3, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
6ba045b1 318
252b5132 319 /* The ME field in an M form instruction. */
717bbdf1 320#define ME LS + 1
252b5132 321#define ME_MASK (0x1f << 1)
b84bf58a 322 { 0x1f, 1, NULL, NULL, 0 },
252b5132
RH
323
324 /* The MB and ME fields in an M form instruction expressed a single
325 operand which is a bitmask indicating which bits to select. This
326 is a two operand form using PPC_OPERAND_NEXT. See the
327 description in opcode/ppc.h for what this means. */
328#define MBE ME + 1
b84bf58a 329 { 0x1f, 6, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_NEXT },
eb42fac1 330 { -1, 0, insert_mbe, extract_mbe, 0 },
252b5132
RH
331
332 /* The MB or ME field in an MD or MDS form instruction. The high
333 bit is wrapped to the low end. */
334#define MB6 MBE + 2
335#define ME6 MB6
336#define MB6_MASK (0x3f << 5)
b84bf58a 337 { 0x3f, 5, insert_mb6, extract_mb6, 0 },
252b5132
RH
338
339 /* The NB field in an X form instruction. The value 32 is stored as
340 0. */
717bbdf1 341#define NB MB6 + 1
b84bf58a 342 { 0x1f, 11, NULL, extract_nb, PPC_OPERAND_PLUS1 },
252b5132
RH
343
344 /* The NSI field in a D form instruction. This is the same as the
345 SI field, only negated. */
346#define NSI NB + 1
b84bf58a 347 { 0xffff, 0, insert_nsi, extract_nsi,
11b37b7b 348 PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
252b5132 349
adadcc0c 350 /* The RA field in an D, DS, DQ, X, XO, M, or MDS form instruction. */
914749f6 351#define RA NSI + 1
252b5132 352#define RA_MASK (0x1f << 16)
b84bf58a 353 { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR },
252b5132 354
fdd12ef3
AM
355 /* As above, but 0 in the RA field means zero, not r0. */
356#define RA0 RA + 1
b84bf58a 357 { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR_0 },
fdd12ef3
AM
358
359 /* The RA field in the DQ form lq instruction, which has special
adadcc0c 360 value restrictions. */
fdd12ef3 361#define RAQ RA0 + 1
b84bf58a 362 { 0x1f, 16, insert_raq, NULL, PPC_OPERAND_GPR_0 },
adadcc0c 363
252b5132
RH
364 /* The RA field in a D or X form instruction which is an updating
365 load, which means that the RA field may not be zero and may not
366 equal the RT field. */
adadcc0c 367#define RAL RAQ + 1
b84bf58a 368 { 0x1f, 16, insert_ral, NULL, PPC_OPERAND_GPR_0 },
252b5132
RH
369
370 /* The RA field in an lmw instruction, which has special value
371 restrictions. */
372#define RAM RAL + 1
b84bf58a 373 { 0x1f, 16, insert_ram, NULL, PPC_OPERAND_GPR_0 },
252b5132
RH
374
375 /* The RA field in a D or X form instruction which is an updating
376 store or an updating floating point load, which means that the RA
377 field may not be zero. */
378#define RAS RAM + 1
b84bf58a 379 { 0x1f, 16, insert_ras, NULL, PPC_OPERAND_GPR_0 },
252b5132 380
1f6c9eb0 381 /* The RA field of the tlbwe instruction, which is optional. */
fdd12ef3 382#define RAOPT RAS + 1
b84bf58a 383 { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
1f6c9eb0 384
252b5132 385 /* The RB field in an X, XO, M, or MDS form instruction. */
fdd12ef3 386#define RB RAOPT + 1
252b5132 387#define RB_MASK (0x1f << 11)
b84bf58a 388 { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR },
252b5132
RH
389
390 /* The RB field in an X form instruction when it must be the same as
391 the RS field in the instruction. This is used for extended
392 mnemonics like mr. */
393#define RBS RB + 1
b84bf58a 394 { 0x1f, 11, insert_rbs, extract_rbs, PPC_OPERAND_FAKE },
252b5132
RH
395
396 /* The RS field in a D, DS, X, XFX, XS, M, MD or MDS form
397 instruction or the RT field in a D, DS, X, XFX or XO form
398 instruction. */
399#define RS RBS + 1
400#define RT RS
401#define RT_MASK (0x1f << 21)
b84bf58a 402 { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR },
252b5132 403
717bbdf1
AM
404 /* The RS and RT fields of the DS form stq instruction, which have
405 special value restrictions. */
adadcc0c 406#define RSQ RS + 1
717bbdf1 407#define RTQ RSQ
b84bf58a 408 { 0x1e, 21, NULL, NULL, PPC_OPERAND_GPR_0 },
adadcc0c 409
1f6c9eb0 410 /* The RS field of the tlbwe instruction, which is optional. */
717bbdf1 411#define RSO RSQ + 1
eed0d89a 412#define RTO RSO
b84bf58a 413 { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
1f6c9eb0 414
252b5132 415 /* The SH field in an X or M form instruction. */
1f6c9eb0 416#define SH RSO + 1
252b5132 417#define SH_MASK (0x1f << 11)
717bbdf1
AM
418 /* The other UIMM field in a EVX form instruction. */
419#define EVUIMM SH
b84bf58a 420 { 0x1f, 11, NULL, NULL, 0 },
252b5132
RH
421
422 /* The SH field in an MD form instruction. This is split. */
423#define SH6 SH + 1
424#define SH6_MASK ((0x1f << 11) | (1 << 1))
b84bf58a 425 { 0x3f, -1, insert_sh6, extract_sh6, 0 },
252b5132 426
1f6c9eb0
ZW
427 /* The SH field of the tlbwe instruction, which is optional. */
428#define SHO SH6 + 1
b84bf58a 429 { 0x1f, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
1f6c9eb0 430
252b5132 431 /* The SI field in a D form instruction. */
1f6c9eb0 432#define SI SHO + 1
b84bf58a 433 { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED },
252b5132
RH
434
435 /* The SI field in a D form instruction when we accept a wide range
436 of positive values. */
437#define SISIGNOPT SI + 1
b84bf58a 438 { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
252b5132
RH
439
440 /* The SPR field in an XFX form instruction. This is flipped--the
441 lower 5 bits are stored in the upper 5 and vice- versa. */
442#define SPR SISIGNOPT + 1
914749f6 443#define PMR SPR
252b5132 444#define SPR_MASK (0x3ff << 11)
b84bf58a 445 { 0x3ff, 11, insert_spr, extract_spr, 0 },
252b5132
RH
446
447 /* The BAT index number in an XFX form m[ft]ibat[lu] instruction. */
448#define SPRBAT SPR + 1
449#define SPRBAT_MASK (0x3 << 17)
b84bf58a 450 { 0x3, 17, NULL, NULL, 0 },
252b5132
RH
451
452 /* The SPRG register number in an XFX form m[ft]sprg instruction. */
453#define SPRG SPRBAT + 1
b84bf58a 454 { 0x1f, 16, insert_sprg, extract_sprg, 0 },
252b5132
RH
455
456 /* The SR field in an X form instruction. */
457#define SR SPRG + 1
b84bf58a 458 { 0xf, 16, NULL, NULL, 0 },
252b5132 459
f5c120c5
MG
460 /* The STRM field in an X AltiVec form instruction. */
461#define STRM SR + 1
19a6653c
AM
462 /* The T field in a tlbilx form instruction. */
463#define T STRM
b84bf58a 464 { 0x3, 21, NULL, NULL, 0 },
f5c120c5 465
252b5132 466 /* The SV field in a POWER SC form instruction. */
f5c120c5 467#define SV STRM + 1
b84bf58a 468 { 0x3fff, 2, NULL, NULL, 0 },
252b5132
RH
469
470 /* The TBR field in an XFX form instruction. This is like the SPR
471 field, but it is optional. */
472#define TBR SV + 1
b84bf58a 473 { 0x3ff, 11, insert_tbr, extract_tbr, PPC_OPERAND_OPTIONAL },
252b5132
RH
474
475 /* The TO field in a D or X form instruction. */
476#define TO TBR + 1
19a6653c 477#define DUI TO
252b5132 478#define TO_MASK (0x1f << 21)
b84bf58a 479 { 0x1f, 21, NULL, NULL, 0 },
252b5132 480
252b5132 481 /* The UI field in a D form instruction. */
717bbdf1 482#define UI TO + 1
b84bf58a 483 { 0xffff, 0, NULL, NULL, 0 },
786e2c0f 484
112290ab 485 /* The VA field in a VA, VX or VXR form instruction. */
786e2c0f 486#define VA UI + 1
b84bf58a 487 { 0x1f, 16, NULL, NULL, PPC_OPERAND_VR },
786e2c0f 488
112290ab 489 /* The VB field in a VA, VX or VXR form instruction. */
786e2c0f 490#define VB VA + 1
b84bf58a 491 { 0x1f, 11, NULL, NULL, PPC_OPERAND_VR },
786e2c0f 492
112290ab 493 /* The VC field in a VA form instruction. */
786e2c0f 494#define VC VB + 1
b84bf58a 495 { 0x1f, 6, NULL, NULL, PPC_OPERAND_VR },
786e2c0f 496
112290ab 497 /* The VD or VS field in a VA, VX, VXR or X form instruction. */
786e2c0f
C
498#define VD VC + 1
499#define VS VD
b84bf58a 500 { 0x1f, 21, NULL, NULL, PPC_OPERAND_VR },
786e2c0f 501
8dbcd839 502 /* The SIMM field in a VX form instruction, and TE in Z form. */
786e2c0f 503#define SIMM VD + 1
8dbcd839 504#define TE SIMM
b84bf58a 505 { 0x1f, 16, NULL, NULL, PPC_OPERAND_SIGNED},
786e2c0f 506
8dbcd839 507 /* The UIMM field in a VX form instruction. */
786e2c0f 508#define UIMM SIMM + 1
b84bf58a 509 { 0x1f, 16, NULL, NULL, 0 },
786e2c0f 510
112290ab 511 /* The SHB field in a VA form instruction. */
786e2c0f 512#define SHB UIMM + 1
b84bf58a 513 { 0xf, 6, NULL, NULL, 0 },
ff3a6ee3 514
112290ab 515 /* The other UIMM field in a half word EVX form instruction. */
717bbdf1 516#define EVUIMM_2 SHB + 1
b84bf58a 517 { 0x3e, 10, NULL, NULL, PPC_OPERAND_PARENS },
23976049 518
112290ab 519 /* The other UIMM field in a word EVX form instruction. */
23976049 520#define EVUIMM_4 EVUIMM_2 + 1
b84bf58a 521 { 0x7c, 9, NULL, NULL, PPC_OPERAND_PARENS },
23976049 522
112290ab 523 /* The other UIMM field in a double EVX form instruction. */
23976049 524#define EVUIMM_8 EVUIMM_4 + 1
b84bf58a 525 { 0xf8, 8, NULL, NULL, PPC_OPERAND_PARENS },
23976049 526
ff3a6ee3 527 /* The WS field. */
23976049 528#define WS EVUIMM_8 + 1
b84bf58a 529 { 0x7, 11, NULL, NULL, 0 },
ff3a6ee3 530
c3d65c1c
BE
531 /* PowerPC paired singles extensions. */
532 /* W bit in the pair singles instructions for x type instructions. */
533#define PSWM WS + 1
534 { 0x1, 10, 0, 0, 0 },
535
536 /* IDX bits for quantization in the pair singles instructions. */
537#define PSQ PSWM + 1
538 { 0x7, 12, 0, 0, 0 },
539
540 /* IDX bits for quantization in the pair singles x-type instructions. */
541#define PSQM PSQ + 1
542 { 0x7, 7, 0, 0, 0 },
543
544 /* Smaller D field for quantization in the pair singles instructions. */
545#define PSD PSQM + 1
546 { 0xfff, 0, 0, 0, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
547
548#define A_L PSD + 1
ea192fa3 549#define W A_L
c3d65c1c 550#define MTMSRD_L W
b84bf58a 551 { 0x1, 16, NULL, NULL, PPC_OPERAND_OPTIONAL },
5ae2e65e 552
c3d65c1c 553#define RMC MTMSRD_L + 1
b84bf58a 554 { 0x3, 9, NULL, NULL, 0 },
702f0fb4
PB
555
556#define R RMC + 1
b84bf58a 557 { 0x1, 16, NULL, NULL, 0 },
702f0fb4
PB
558
559#define SP R + 1
b84bf58a 560 { 0x3, 19, NULL, NULL, 0 },
702f0fb4
PB
561
562#define S SP + 1
b84bf58a 563 { 0x1, 20, NULL, NULL, 0 },
702f0fb4
PB
564
565 /* SH field starting at bit position 16. */
566#define SH16 S + 1
0bbdef92
AM
567 /* The DCM and DGM fields in a Z form instruction. */
568#define DCM SH16
569#define DGM DCM
b84bf58a 570 { 0x3f, 10, NULL, NULL, 0 },
702f0fb4 571
702f0fb4 572 /* The EH field in larx instruction. */
717bbdf1 573#define EH SH16 + 1
b84bf58a 574 { 0x1, 0, NULL, NULL, PPC_OPERAND_OPTIONAL },
ea192fa3
PB
575
576 /* The L field in an mtfsf or XFL form instruction. */
577#define XFL_L EH + 1
578 { 0x1, 25, NULL, NULL, PPC_OPERAND_OPTIONAL},
252b5132
RH
579};
580
b84bf58a
AM
581const unsigned int num_powerpc_operands = (sizeof (powerpc_operands)
582 / sizeof (powerpc_operands[0]));
583
252b5132
RH
584/* The functions used to insert and extract complicated operands. */
585
586/* The BA field in an XL form instruction when it must be the same as
587 the BT field in the same instruction. This operand is marked FAKE.
588 The insertion function just copies the BT field into the BA field,
589 and the extraction function just checks that the fields are the
590 same. */
591
252b5132 592static unsigned long
2fbfdc41
AM
593insert_bat (unsigned long insn,
594 long value ATTRIBUTE_UNUSED,
fa452fa6 595 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 596 const char **errmsg ATTRIBUTE_UNUSED)
252b5132
RH
597{
598 return insn | (((insn >> 21) & 0x1f) << 16);
599}
600
601static long
2fbfdc41 602extract_bat (unsigned long insn,
fa452fa6 603 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 604 int *invalid)
252b5132 605{
8427c424 606 if (((insn >> 21) & 0x1f) != ((insn >> 16) & 0x1f))
252b5132
RH
607 *invalid = 1;
608 return 0;
609}
610
611/* The BB field in an XL form instruction when it must be the same as
612 the BA field in the same instruction. This operand is marked FAKE.
613 The insertion function just copies the BA field into the BB field,
614 and the extraction function just checks that the fields are the
615 same. */
616
252b5132 617static unsigned long
2fbfdc41
AM
618insert_bba (unsigned long insn,
619 long value ATTRIBUTE_UNUSED,
fa452fa6 620 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 621 const char **errmsg ATTRIBUTE_UNUSED)
252b5132
RH
622{
623 return insn | (((insn >> 16) & 0x1f) << 11);
624}
625
626static long
2fbfdc41 627extract_bba (unsigned long insn,
fa452fa6 628 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 629 int *invalid)
252b5132 630{
8427c424 631 if (((insn >> 16) & 0x1f) != ((insn >> 11) & 0x1f))
252b5132
RH
632 *invalid = 1;
633 return 0;
634}
635
252b5132
RH
636/* The BD field in a B form instruction when the - modifier is used.
637 This modifier means that the branch is not expected to be taken.
94efba12
AM
638 For chips built to versions of the architecture prior to version 2
639 (ie. not Power4 compatible), we set the y bit of the BO field to 1
640 if the offset is negative. When extracting, we require that the y
641 bit be 1 and that the offset be positive, since if the y bit is 0
642 we just want to print the normal form of the instruction.
643 Power4 compatible targets use two bits, "a", and "t", instead of
644 the "y" bit. "at" == 00 => no hint, "at" == 01 => unpredictable,
645 "at" == 10 => not taken, "at" == 11 => taken. The "t" bit is 00001
646 in BO field, the "a" bit is 00010 for branch on CR(BI) and 01000
ba4e851b
AM
647 for branch on CTR. We only handle the taken/not-taken hint here.
648 Note that we don't relax the conditions tested here when
649 disassembling with -Many because insns using extract_bdm and
650 extract_bdp always occur in pairs. One or the other will always
651 be valid. */
252b5132 652
252b5132 653static unsigned long
2fbfdc41
AM
654insert_bdm (unsigned long insn,
655 long value,
fa452fa6 656 ppc_cpu_t dialect,
2fbfdc41 657 const char **errmsg ATTRIBUTE_UNUSED)
252b5132 658{
94efba12 659 if ((dialect & PPC_OPCODE_POWER4) == 0)
802a735e
AM
660 {
661 if ((value & 0x8000) != 0)
662 insn |= 1 << 21;
663 }
664 else
665 {
666 if ((insn & (0x14 << 21)) == (0x04 << 21))
667 insn |= 0x02 << 21;
668 else if ((insn & (0x14 << 21)) == (0x10 << 21))
669 insn |= 0x08 << 21;
670 }
252b5132
RH
671 return insn | (value & 0xfffc);
672}
673
674static long
2fbfdc41 675extract_bdm (unsigned long insn,
fa452fa6 676 ppc_cpu_t dialect,
2fbfdc41 677 int *invalid)
252b5132 678{
8427c424 679 if ((dialect & PPC_OPCODE_POWER4) == 0)
802a735e 680 {
8427c424
AM
681 if (((insn & (1 << 21)) == 0) != ((insn & (1 << 15)) == 0))
682 *invalid = 1;
802a735e 683 }
8427c424
AM
684 else
685 {
686 if ((insn & (0x17 << 21)) != (0x06 << 21)
687 && (insn & (0x1d << 21)) != (0x18 << 21))
688 *invalid = 1;
689 }
690
802a735e 691 return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
252b5132
RH
692}
693
694/* The BD field in a B form instruction when the + modifier is used.
695 This is like BDM, above, except that the branch is expected to be
696 taken. */
697
252b5132 698static unsigned long
2fbfdc41
AM
699insert_bdp (unsigned long insn,
700 long value,
fa452fa6 701 ppc_cpu_t dialect,
2fbfdc41 702 const char **errmsg ATTRIBUTE_UNUSED)
252b5132 703{
94efba12 704 if ((dialect & PPC_OPCODE_POWER4) == 0)
802a735e
AM
705 {
706 if ((value & 0x8000) == 0)
707 insn |= 1 << 21;
708 }
709 else
710 {
711 if ((insn & (0x14 << 21)) == (0x04 << 21))
712 insn |= 0x03 << 21;
713 else if ((insn & (0x14 << 21)) == (0x10 << 21))
714 insn |= 0x09 << 21;
715 }
252b5132
RH
716 return insn | (value & 0xfffc);
717}
718
719static long
2fbfdc41 720extract_bdp (unsigned long insn,
fa452fa6 721 ppc_cpu_t dialect,
2fbfdc41 722 int *invalid)
252b5132 723{
8427c424 724 if ((dialect & PPC_OPCODE_POWER4) == 0)
802a735e 725 {
8427c424
AM
726 if (((insn & (1 << 21)) == 0) == ((insn & (1 << 15)) == 0))
727 *invalid = 1;
728 }
729 else
730 {
731 if ((insn & (0x17 << 21)) != (0x07 << 21)
732 && (insn & (0x1d << 21)) != (0x19 << 21))
733 *invalid = 1;
802a735e 734 }
8427c424 735
802a735e 736 return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
252b5132
RH
737}
738
739/* Check for legal values of a BO field. */
740
741static int
fa452fa6 742valid_bo (long value, ppc_cpu_t dialect, int extract)
252b5132 743{
94efba12 744 if ((dialect & PPC_OPCODE_POWER4) == 0)
252b5132 745 {
ba4e851b 746 int valid;
802a735e
AM
747 /* Certain encodings have bits that are required to be zero.
748 These are (z must be zero, y may be anything):
749 001zy
750 011zy
751 1z00y
752 1z01y
753 1z1zz
754 */
755 switch (value & 0x14)
756 {
757 default:
758 case 0:
ba4e851b
AM
759 valid = 1;
760 break;
802a735e 761 case 0x4:
ba4e851b
AM
762 valid = (value & 0x2) == 0;
763 break;
802a735e 764 case 0x10:
ba4e851b
AM
765 valid = (value & 0x8) == 0;
766 break;
802a735e 767 case 0x14:
ba4e851b
AM
768 valid = value == 0x14;
769 break;
802a735e 770 }
ba4e851b
AM
771 /* When disassembling with -Many, accept power4 encodings too. */
772 if (valid
773 || (dialect & PPC_OPCODE_ANY) == 0
774 || !extract)
775 return valid;
802a735e 776 }
ba4e851b
AM
777
778 /* Certain encodings have bits that are required to be zero.
779 These are (z must be zero, a & t may be anything):
780 0000z
781 0001z
782 0100z
783 0101z
784 001at
785 011at
786 1a00t
787 1a01t
788 1z1zz
789 */
790 if ((value & 0x14) == 0)
791 return (value & 0x1) == 0;
792 else if ((value & 0x14) == 0x14)
793 return value == 0x14;
802a735e 794 else
ba4e851b 795 return 1;
252b5132
RH
796}
797
798/* The BO field in a B form instruction. Warn about attempts to set
799 the field to an illegal value. */
800
801static unsigned long
2fbfdc41
AM
802insert_bo (unsigned long insn,
803 long value,
fa452fa6 804 ppc_cpu_t dialect,
2fbfdc41 805 const char **errmsg)
252b5132 806{
ba4e851b 807 if (!valid_bo (value, dialect, 0))
252b5132
RH
808 *errmsg = _("invalid conditional option");
809 return insn | ((value & 0x1f) << 21);
810}
811
812static long
2fbfdc41 813extract_bo (unsigned long insn,
fa452fa6 814 ppc_cpu_t dialect,
2fbfdc41 815 int *invalid)
252b5132
RH
816{
817 long value;
818
819 value = (insn >> 21) & 0x1f;
ba4e851b 820 if (!valid_bo (value, dialect, 1))
252b5132
RH
821 *invalid = 1;
822 return value;
823}
824
825/* The BO field in a B form instruction when the + or - modifier is
826 used. This is like the BO field, but it must be even. When
827 extracting it, we force it to be even. */
828
829static unsigned long
2fbfdc41
AM
830insert_boe (unsigned long insn,
831 long value,
fa452fa6 832 ppc_cpu_t dialect,
2fbfdc41 833 const char **errmsg)
252b5132 834{
ba4e851b 835 if (!valid_bo (value, dialect, 0))
8427c424
AM
836 *errmsg = _("invalid conditional option");
837 else if ((value & 1) != 0)
838 *errmsg = _("attempt to set y bit when using + or - modifier");
839
252b5132
RH
840 return insn | ((value & 0x1f) << 21);
841}
842
843static long
2fbfdc41 844extract_boe (unsigned long insn,
fa452fa6 845 ppc_cpu_t dialect,
2fbfdc41 846 int *invalid)
252b5132
RH
847{
848 long value;
849
850 value = (insn >> 21) & 0x1f;
ba4e851b 851 if (!valid_bo (value, dialect, 1))
252b5132
RH
852 *invalid = 1;
853 return value & 0x1e;
854}
855
2fbfdc41
AM
856/* FXM mask in mfcr and mtcrf instructions. */
857
858static unsigned long
859insert_fxm (unsigned long insn,
860 long value,
fa452fa6 861 ppc_cpu_t dialect,
2fbfdc41 862 const char **errmsg)
c168870a 863{
98e69875
AM
864 /* If we're handling the mfocrf and mtocrf insns ensure that exactly
865 one bit of the mask field is set. */
866 if ((insn & (1 << 20)) != 0)
867 {
868 if (value == 0 || (value & -value) != value)
869 {
870 *errmsg = _("invalid mask field");
871 value = 0;
872 }
873 }
874
c168870a
AM
875 /* If the optional field on mfcr is missing that means we want to use
876 the old form of the instruction that moves the whole cr. In that
877 case we'll have VALUE zero. There doesn't seem to be a way to
878 distinguish this from the case where someone writes mfcr %r3,0. */
98e69875 879 else if (value == 0)
c168870a
AM
880 ;
881
882 /* If only one bit of the FXM field is set, we can use the new form
661bd698 883 of the instruction, which is faster. Unlike the Power4 branch hint
a30e9cc4
AM
884 encoding, this is not backward compatible. Do not generate the
885 new form unless -mpower4 has been given, or -many and the two
886 operand form of mfcr was used. */
887 else if ((value & -value) == value
888 && ((dialect & PPC_OPCODE_POWER4) != 0
889 || ((dialect & PPC_OPCODE_ANY) != 0
890 && (insn & (0x3ff << 1)) == 19 << 1)))
c168870a
AM
891 insn |= 1 << 20;
892
893 /* Any other value on mfcr is an error. */
894 else if ((insn & (0x3ff << 1)) == 19 << 1)
895 {
8427c424 896 *errmsg = _("ignoring invalid mfcr mask");
c168870a
AM
897 value = 0;
898 }
899
900 return insn | ((value & 0xff) << 12);
901}
902
2fbfdc41
AM
903static long
904extract_fxm (unsigned long insn,
fa452fa6 905 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 906 int *invalid)
c168870a
AM
907{
908 long mask = (insn >> 12) & 0xff;
909
910 /* Is this a Power4 insn? */
911 if ((insn & (1 << 20)) != 0)
912 {
98e69875
AM
913 /* Exactly one bit of MASK should be set. */
914 if (mask == 0 || (mask & -mask) != mask)
8427c424 915 *invalid = 1;
c168870a
AM
916 }
917
918 /* Check that non-power4 form of mfcr has a zero MASK. */
919 else if ((insn & (0x3ff << 1)) == 19 << 1)
920 {
8427c424 921 if (mask != 0)
c168870a
AM
922 *invalid = 1;
923 }
924
925 return mask;
926}
927
252b5132
RH
928/* The MB and ME fields in an M form instruction expressed as a single
929 operand which is itself a bitmask. The extraction function always
930 marks it as invalid, since we never want to recognize an
931 instruction which uses a field of this type. */
932
933static unsigned long
2fbfdc41
AM
934insert_mbe (unsigned long insn,
935 long value,
fa452fa6 936 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 937 const char **errmsg)
252b5132
RH
938{
939 unsigned long uval, mask;
940 int mb, me, mx, count, last;
941
942 uval = value;
943
944 if (uval == 0)
945 {
8427c424 946 *errmsg = _("illegal bitmask");
252b5132
RH
947 return insn;
948 }
949
950 mb = 0;
951 me = 32;
952 if ((uval & 1) != 0)
953 last = 1;
954 else
955 last = 0;
956 count = 0;
957
958 /* mb: location of last 0->1 transition */
959 /* me: location of last 1->0 transition */
960 /* count: # transitions */
961
0deb7ac5 962 for (mx = 0, mask = 1L << 31; mx < 32; ++mx, mask >>= 1)
252b5132
RH
963 {
964 if ((uval & mask) && !last)
965 {
966 ++count;
967 mb = mx;
968 last = 1;
969 }
970 else if (!(uval & mask) && last)
971 {
972 ++count;
973 me = mx;
974 last = 0;
975 }
976 }
977 if (me == 0)
978 me = 32;
979
980 if (count != 2 && (count != 0 || ! last))
8427c424 981 *errmsg = _("illegal bitmask");
252b5132
RH
982
983 return insn | (mb << 6) | ((me - 1) << 1);
984}
985
986static long
2fbfdc41 987extract_mbe (unsigned long insn,
fa452fa6 988 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 989 int *invalid)
252b5132
RH
990{
991 long ret;
992 int mb, me;
993 int i;
994
8427c424 995 *invalid = 1;
252b5132
RH
996
997 mb = (insn >> 6) & 0x1f;
998 me = (insn >> 1) & 0x1f;
999 if (mb < me + 1)
1000 {
1001 ret = 0;
1002 for (i = mb; i <= me; i++)
0deb7ac5 1003 ret |= 1L << (31 - i);
252b5132
RH
1004 }
1005 else if (mb == me + 1)
8427c424 1006 ret = ~0;
252b5132
RH
1007 else /* (mb > me + 1) */
1008 {
2fbfdc41 1009 ret = ~0;
252b5132 1010 for (i = me + 1; i < mb; i++)
0deb7ac5 1011 ret &= ~(1L << (31 - i));
252b5132
RH
1012 }
1013 return ret;
1014}
1015
1016/* The MB or ME field in an MD or MDS form instruction. The high bit
1017 is wrapped to the low end. */
1018
252b5132 1019static unsigned long
2fbfdc41
AM
1020insert_mb6 (unsigned long insn,
1021 long value,
fa452fa6 1022 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1023 const char **errmsg ATTRIBUTE_UNUSED)
252b5132
RH
1024{
1025 return insn | ((value & 0x1f) << 6) | (value & 0x20);
1026}
1027
252b5132 1028static long
2fbfdc41 1029extract_mb6 (unsigned long insn,
fa452fa6 1030 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1031 int *invalid ATTRIBUTE_UNUSED)
252b5132
RH
1032{
1033 return ((insn >> 6) & 0x1f) | (insn & 0x20);
1034}
1035
1036/* The NB field in an X form instruction. The value 32 is stored as
1037 0. */
1038
252b5132 1039static long
2fbfdc41 1040extract_nb (unsigned long insn,
fa452fa6 1041 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1042 int *invalid ATTRIBUTE_UNUSED)
252b5132
RH
1043{
1044 long ret;
1045
1046 ret = (insn >> 11) & 0x1f;
1047 if (ret == 0)
1048 ret = 32;
1049 return ret;
1050}
1051
1052/* The NSI field in a D form instruction. This is the same as the SI
1053 field, only negated. The extraction function always marks it as
1054 invalid, since we never want to recognize an instruction which uses
1055 a field of this type. */
1056
252b5132 1057static unsigned long
2fbfdc41
AM
1058insert_nsi (unsigned long insn,
1059 long value,
fa452fa6 1060 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1061 const char **errmsg ATTRIBUTE_UNUSED)
252b5132 1062{
2fbfdc41 1063 return insn | (-value & 0xffff);
252b5132
RH
1064}
1065
1066static long
2fbfdc41 1067extract_nsi (unsigned long insn,
fa452fa6 1068 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1069 int *invalid)
252b5132 1070{
8427c424 1071 *invalid = 1;
2fbfdc41 1072 return -(((insn & 0xffff) ^ 0x8000) - 0x8000);
252b5132
RH
1073}
1074
1075/* The RA field in a D or X form instruction which is an updating
1076 load, which means that the RA field may not be zero and may not
1077 equal the RT field. */
1078
1079static unsigned long
2fbfdc41
AM
1080insert_ral (unsigned long insn,
1081 long value,
fa452fa6 1082 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1083 const char **errmsg)
252b5132
RH
1084{
1085 if (value == 0
1086 || (unsigned long) value == ((insn >> 21) & 0x1f))
1087 *errmsg = "invalid register operand when updating";
1088 return insn | ((value & 0x1f) << 16);
1089}
1090
1091/* The RA field in an lmw instruction, which has special value
1092 restrictions. */
1093
1094static unsigned long
2fbfdc41
AM
1095insert_ram (unsigned long insn,
1096 long value,
fa452fa6 1097 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1098 const char **errmsg)
252b5132
RH
1099{
1100 if ((unsigned long) value >= ((insn >> 21) & 0x1f))
1101 *errmsg = _("index register in load range");
1102 return insn | ((value & 0x1f) << 16);
1103}
1104
fdd12ef3 1105/* The RA field in the DQ form lq instruction, which has special
8427c424 1106 value restrictions. */
adadcc0c 1107
adadcc0c 1108static unsigned long
2fbfdc41
AM
1109insert_raq (unsigned long insn,
1110 long value,
fa452fa6 1111 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1112 const char **errmsg)
adadcc0c
AM
1113{
1114 long rtvalue = (insn & RT_MASK) >> 21;
1115
8427c424 1116 if (value == rtvalue)
adadcc0c
AM
1117 *errmsg = _("source and target register operands must be different");
1118 return insn | ((value & 0x1f) << 16);
1119}
1120
252b5132
RH
1121/* The RA field in a D or X form instruction which is an updating
1122 store or an updating floating point load, which means that the RA
1123 field may not be zero. */
1124
1125static unsigned long
2fbfdc41
AM
1126insert_ras (unsigned long insn,
1127 long value,
fa452fa6 1128 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1129 const char **errmsg)
252b5132
RH
1130{
1131 if (value == 0)
1132 *errmsg = _("invalid register operand when updating");
1133 return insn | ((value & 0x1f) << 16);
1134}
1135
1136/* The RB field in an X form instruction when it must be the same as
1137 the RS field in the instruction. This is used for extended
1138 mnemonics like mr. This operand is marked FAKE. The insertion
1139 function just copies the BT field into the BA field, and the
1140 extraction function just checks that the fields are the same. */
1141
252b5132 1142static unsigned long
2fbfdc41
AM
1143insert_rbs (unsigned long insn,
1144 long value ATTRIBUTE_UNUSED,
fa452fa6 1145 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1146 const char **errmsg ATTRIBUTE_UNUSED)
252b5132
RH
1147{
1148 return insn | (((insn >> 21) & 0x1f) << 11);
1149}
1150
1151static long
2fbfdc41 1152extract_rbs (unsigned long insn,
fa452fa6 1153 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1154 int *invalid)
252b5132 1155{
8427c424 1156 if (((insn >> 21) & 0x1f) != ((insn >> 11) & 0x1f))
252b5132
RH
1157 *invalid = 1;
1158 return 0;
1159}
1160
1161/* The SH field in an MD form instruction. This is split. */
1162
252b5132 1163static unsigned long
2fbfdc41
AM
1164insert_sh6 (unsigned long insn,
1165 long value,
fa452fa6 1166 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1167 const char **errmsg ATTRIBUTE_UNUSED)
252b5132
RH
1168{
1169 return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
1170}
1171
252b5132 1172static long
2fbfdc41 1173extract_sh6 (unsigned long insn,
fa452fa6 1174 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1175 int *invalid ATTRIBUTE_UNUSED)
252b5132
RH
1176{
1177 return ((insn >> 11) & 0x1f) | ((insn << 4) & 0x20);
1178}
1179
1180/* The SPR field in an XFX form instruction. This is flipped--the
1181 lower 5 bits are stored in the upper 5 and vice- versa. */
1182
1183static unsigned long
2fbfdc41
AM
1184insert_spr (unsigned long insn,
1185 long value,
fa452fa6 1186 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1187 const char **errmsg ATTRIBUTE_UNUSED)
252b5132
RH
1188{
1189 return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
1190}
1191
1192static long
2fbfdc41 1193extract_spr (unsigned long insn,
fa452fa6 1194 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1195 int *invalid ATTRIBUTE_UNUSED)
252b5132
RH
1196{
1197 return ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
1198}
1199
da99ee72
AM
1200/* Some dialects have 8 SPRG registers instead of the standard 4. */
1201
1202static unsigned long
1203insert_sprg (unsigned long insn,
1204 long value,
fa452fa6 1205 ppc_cpu_t dialect,
da99ee72
AM
1206 const char **errmsg)
1207{
1208 /* This check uses PPC_OPCODE_403 because PPC405 is later defined
1209 as a synonym. If ever a 405 specific dialect is added this
1210 check should use that instead. */
1211 if (value > 7
1212 || (value > 3
1213 && (dialect & (PPC_OPCODE_BOOKE | PPC_OPCODE_403)) == 0))
1214 *errmsg = _("invalid sprg number");
1215
1216 /* If this is mfsprg4..7 then use spr 260..263 which can be read in
1217 user mode. Anything else must use spr 272..279. */
1218 if (value <= 3 || (insn & 0x100) != 0)
1219 value |= 0x10;
1220
1221 return insn | ((value & 0x17) << 16);
1222}
1223
1224static long
1225extract_sprg (unsigned long insn,
fa452fa6 1226 ppc_cpu_t dialect,
da99ee72
AM
1227 int *invalid)
1228{
1229 unsigned long val = (insn >> 16) & 0x1f;
1230
1231 /* mfsprg can use 260..263 and 272..279. mtsprg only uses spr 272..279
1232 If not BOOKE or 405, then both use only 272..275. */
1233 if (val <= 3
1234 || (val < 0x10 && (insn & 0x100) != 0)
1235 || (val - 0x10 > 3
1236 && (dialect & (PPC_OPCODE_BOOKE | PPC_OPCODE_403)) == 0))
1237 *invalid = 1;
1238 return val & 7;
1239}
1240
252b5132
RH
1241/* The TBR field in an XFX instruction. This is just like SPR, but it
1242 is optional. When TBR is omitted, it must be inserted as 268 (the
1243 magic number of the TB register). These functions treat 0
1244 (indicating an omitted optional operand) as 268. This means that
1245 ``mftb 4,0'' is not handled correctly. This does not matter very
1246 much, since the architecture manual does not define mftb as
1247 accepting any values other than 268 or 269. */
1248
1249#define TB (268)
1250
1251static unsigned long
2fbfdc41
AM
1252insert_tbr (unsigned long insn,
1253 long value,
fa452fa6 1254 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1255 const char **errmsg ATTRIBUTE_UNUSED)
252b5132
RH
1256{
1257 if (value == 0)
1258 value = TB;
1259 return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
1260}
1261
1262static long
2fbfdc41 1263extract_tbr (unsigned long insn,
fa452fa6 1264 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1265 int *invalid ATTRIBUTE_UNUSED)
252b5132
RH
1266{
1267 long ret;
1268
1269 ret = ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
1270 if (ret == TB)
1271 ret = 0;
1272 return ret;
1273}
1274\f
1275/* Macros used to form opcodes. */
1276
1277/* The main opcode. */
1278#define OP(x) ((((unsigned long)(x)) & 0x3f) << 26)
1279#define OP_MASK OP (0x3f)
1280
1281/* The main opcode combined with a trap code in the TO field of a D
1282 form instruction. Used for extended mnemonics for the trap
1283 instructions. */
1284#define OPTO(x,to) (OP (x) | ((((unsigned long)(to)) & 0x1f) << 21))
1285#define OPTO_MASK (OP_MASK | TO_MASK)
1286
1287/* The main opcode combined with a comparison size bit in the L field
1288 of a D form or X form instruction. Used for extended mnemonics for
1289 the comparison instructions. */
1290#define OPL(x,l) (OP (x) | ((((unsigned long)(l)) & 1) << 21))
1291#define OPL_MASK OPL (0x3f,1)
1292
1293/* An A form instruction. */
1294#define A(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1) | (((unsigned long)(rc)) & 1))
1295#define A_MASK A (0x3f, 0x1f, 1)
1296
1297/* An A_MASK with the FRB field fixed. */
1298#define AFRB_MASK (A_MASK | FRB_MASK)
1299
1300/* An A_MASK with the FRC field fixed. */
1301#define AFRC_MASK (A_MASK | FRC_MASK)
1302
1303/* An A_MASK with the FRA and FRC fields fixed. */
1304#define AFRAFRC_MASK (A_MASK | FRA_MASK | FRC_MASK)
1305
702f0fb4
PB
1306/* An AFRAFRC_MASK, but with L bit clear. */
1307#define AFRALFRC_MASK (AFRAFRC_MASK & ~((unsigned long) 1 << 16))
1308
252b5132
RH
1309/* A B form instruction. */
1310#define B(op, aa, lk) (OP (op) | ((((unsigned long)(aa)) & 1) << 1) | ((lk) & 1))
1311#define B_MASK B (0x3f, 1, 1)
1312
1313/* A B form instruction setting the BO field. */
1314#define BBO(op, bo, aa, lk) (B ((op), (aa), (lk)) | ((((unsigned long)(bo)) & 0x1f) << 21))
1315#define BBO_MASK BBO (0x3f, 0x1f, 1, 1)
1316
1317/* A BBO_MASK with the y bit of the BO field removed. This permits
1318 matching a conditional branch regardless of the setting of the y
94efba12 1319 bit. Similarly for the 'at' bits used for power4 branch hints. */
de866fcc 1320#define Y_MASK (((unsigned long) 1) << 21)
802a735e
AM
1321#define AT1_MASK (((unsigned long) 3) << 21)
1322#define AT2_MASK (((unsigned long) 9) << 21)
1323#define BBOY_MASK (BBO_MASK &~ Y_MASK)
1324#define BBOAT_MASK (BBO_MASK &~ AT1_MASK)
252b5132
RH
1325
1326/* A B form instruction setting the BO field and the condition bits of
1327 the BI field. */
1328#define BBOCB(op, bo, cb, aa, lk) \
1329 (BBO ((op), (bo), (aa), (lk)) | ((((unsigned long)(cb)) & 0x3) << 16))
1330#define BBOCB_MASK BBOCB (0x3f, 0x1f, 0x3, 1, 1)
1331
1332/* A BBOCB_MASK with the y bit of the BO field removed. */
1333#define BBOYCB_MASK (BBOCB_MASK &~ Y_MASK)
802a735e
AM
1334#define BBOATCB_MASK (BBOCB_MASK &~ AT1_MASK)
1335#define BBOAT2CB_MASK (BBOCB_MASK &~ AT2_MASK)
252b5132
RH
1336
1337/* A BBOYCB_MASK in which the BI field is fixed. */
1338#define BBOYBI_MASK (BBOYCB_MASK | BI_MASK)
802a735e 1339#define BBOATBI_MASK (BBOAT2CB_MASK | BI_MASK)
252b5132 1340
23976049
EZ
1341/* An Context form instruction. */
1342#define CTX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x7))
fdd12ef3 1343#define CTX_MASK CTX(0x3f, 0x7)
23976049
EZ
1344
1345/* An User Context form instruction. */
1346#define UCTX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f))
fdd12ef3 1347#define UCTX_MASK UCTX(0x3f, 0x1f)
23976049 1348
252b5132
RH
1349/* The main opcode mask with the RA field clear. */
1350#define DRA_MASK (OP_MASK | RA_MASK)
1351
1352/* A DS form instruction. */
1353#define DSO(op, xop) (OP (op) | ((xop) & 0x3))
1354#define DS_MASK DSO (0x3f, 3)
1355
418c1742
MG
1356/* A DE form instruction. */
1357#define DEO(op, xop) (OP (op) | ((xop) & 0xf))
1358#define DE_MASK DEO (0x3e, 0xf)
1359
23976049
EZ
1360/* An EVSEL form instruction. */
1361#define EVSEL(op, xop) (OP (op) | (((unsigned long)(xop)) & 0xff) << 3)
1362#define EVSEL_MASK EVSEL(0x3f, 0xff)
1363
252b5132
RH
1364/* An M form instruction. */
1365#define M(op, rc) (OP (op) | ((rc) & 1))
1366#define M_MASK M (0x3f, 1)
1367
1368/* An M form instruction with the ME field specified. */
1369#define MME(op, me, rc) (M ((op), (rc)) | ((((unsigned long)(me)) & 0x1f) << 1))
1370
1371/* An M_MASK with the MB and ME fields fixed. */
1372#define MMBME_MASK (M_MASK | MB_MASK | ME_MASK)
1373
1374/* An M_MASK with the SH and ME fields fixed. */
1375#define MSHME_MASK (M_MASK | SH_MASK | ME_MASK)
1376
1377/* An MD form instruction. */
1378#define MD(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x7) << 2) | ((rc) & 1))
1379#define MD_MASK MD (0x3f, 0x7, 1)
1380
1381/* An MD_MASK with the MB field fixed. */
1382#define MDMB_MASK (MD_MASK | MB6_MASK)
1383
1384/* An MD_MASK with the SH field fixed. */
1385#define MDSH_MASK (MD_MASK | SH6_MASK)
1386
1387/* An MDS form instruction. */
1388#define MDS(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0xf) << 1) | ((rc) & 1))
1389#define MDS_MASK MDS (0x3f, 0xf, 1)
1390
1391/* An MDS_MASK with the MB field fixed. */
1392#define MDSMB_MASK (MDS_MASK | MB6_MASK)
1393
1394/* An SC form instruction. */
1395#define SC(op, sa, lk) (OP (op) | ((((unsigned long)(sa)) & 1) << 1) | ((lk) & 1))
1396#define SC_MASK (OP_MASK | (((unsigned long)0x3ff) << 16) | (((unsigned long)1) << 1) | 1)
1397
112290ab 1398/* An VX form instruction. */
786e2c0f
C
1399#define VX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x7ff))
1400
112290ab 1401/* The mask for an VX form instruction. */
786e2c0f
C
1402#define VX_MASK VX(0x3f, 0x7ff)
1403
112290ab 1404/* An VA form instruction. */
2613489e 1405#define VXA(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x03f))
786e2c0f 1406
112290ab 1407/* The mask for an VA form instruction. */
2613489e 1408#define VXA_MASK VXA(0x3f, 0x3f)
786e2c0f 1409
112290ab 1410/* An VXR form instruction. */
786e2c0f
C
1411#define VXR(op, xop, rc) (OP (op) | (((rc) & 1) << 10) | (((unsigned long)(xop)) & 0x3ff))
1412
112290ab 1413/* The mask for a VXR form instruction. */
786e2c0f
C
1414#define VXR_MASK VXR(0x3f, 0x3ff, 1)
1415
252b5132
RH
1416/* An X form instruction. */
1417#define X(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1))
1418
702f0fb4
PB
1419/* A Z form instruction. */
1420#define Z(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 1))
1421
252b5132
RH
1422/* An X form instruction with the RC bit specified. */
1423#define XRC(op, xop, rc) (X ((op), (xop)) | ((rc) & 1))
1424
702f0fb4
PB
1425/* A Z form instruction with the RC bit specified. */
1426#define ZRC(op, xop, rc) (Z ((op), (xop)) | ((rc) & 1))
1427
252b5132
RH
1428/* The mask for an X form instruction. */
1429#define X_MASK XRC (0x3f, 0x3ff, 1)
1430
702f0fb4
PB
1431/* The mask for a Z form instruction. */
1432#define Z_MASK ZRC (0x3f, 0x1ff, 1)
0bbdef92 1433#define Z2_MASK ZRC (0x3f, 0xff, 1)
702f0fb4 1434
252b5132
RH
1435/* An X_MASK with the RA field fixed. */
1436#define XRA_MASK (X_MASK | RA_MASK)
1437
ea192fa3
PB
1438/* An XRA_MASK with the W field clear. */
1439#define XWRA_MASK (XRA_MASK & ~((unsigned long) 1 << 16))
1440
252b5132
RH
1441/* An X_MASK with the RB field fixed. */
1442#define XRB_MASK (X_MASK | RB_MASK)
1443
1444/* An X_MASK with the RT field fixed. */
1445#define XRT_MASK (X_MASK | RT_MASK)
1446
702f0fb4
PB
1447/* An XRT_MASK mask with the L bits clear. */
1448#define XLRT_MASK (XRT_MASK & ~((unsigned long) 0x3 << 21))
1449
252b5132
RH
1450/* An X_MASK with the RA and RB fields fixed. */
1451#define XRARB_MASK (X_MASK | RA_MASK | RB_MASK)
1452
112290ab 1453/* An XRARB_MASK, but with the L bit clear. */
5ae2e65e
AM
1454#define XRLARB_MASK (XRARB_MASK & ~((unsigned long) 1 << 16))
1455
252b5132
RH
1456/* An X_MASK with the RT and RA fields fixed. */
1457#define XRTRA_MASK (X_MASK | RT_MASK | RA_MASK)
1458
98acc1c5
AM
1459/* An XRTRA_MASK, but with L bit clear. */
1460#define XRTLRA_MASK (XRTRA_MASK & ~((unsigned long) 1 << 21))
1461
f3806e43
BE
1462/* An X form instruction with the L bit specified. */
1463#define XOPL(op, xop, l) (X ((op), (xop)) | ((((unsigned long)(l)) & 1) << 21))
252b5132 1464
19a6653c
AM
1465/* An X form instruction with RT fields specified */
1466#define XRT(op, xop, rt) (X ((op), (xop)) \
1467 | ((((unsigned long)(rt)) & 0x1f) << 21))
1468
1469/* An X form instruction with RT and RA fields specified */
1470#define XRTRA(op, xop, rt, ra) (X ((op), (xop)) \
1471 | ((((unsigned long)(rt)) & 0x1f) << 21) \
1472 | ((((unsigned long)(ra)) & 0x1f) << 16))
1473
252b5132
RH
1474/* The mask for an X form comparison instruction. */
1475#define XCMP_MASK (X_MASK | (((unsigned long)1) << 22))
1476
520ceea4
BE
1477/* The mask for an X form comparison instruction with the L field
1478 fixed. */
1479#define XCMPL_MASK (XCMP_MASK | (((unsigned long)1) << 21))
252b5132
RH
1480
1481/* An X form trap instruction with the TO field specified. */
1482#define XTO(op, xop, to) (X ((op), (xop)) | ((((unsigned long)(to)) & 0x1f) << 21))
1483#define XTO_MASK (X_MASK | TO_MASK)
1484
e0c21649
GK
1485/* An X form tlb instruction with the SH field specified. */
1486#define XTLB(op, xop, sh) (X ((op), (xop)) | ((((unsigned long)(sh)) & 0x1f) << 11))
1487#define XTLB_MASK (X_MASK | SH_MASK)
1488
6ba045b1
AM
1489/* An X form sync instruction. */
1490#define XSYNC(op, xop, l) (X ((op), (xop)) | ((((unsigned long)(l)) & 3) << 21))
1491
1492/* An X form sync instruction with everything filled in except the LS field. */
1493#define XSYNC_MASK (0xff9fffff)
1494
702f0fb4
PB
1495/* An X_MASK, but with the EH bit clear. */
1496#define XEH_MASK (X_MASK & ~((unsigned long )1))
1497
f5c120c5
MG
1498/* An X form AltiVec dss instruction. */
1499#define XDSS(op, xop, a) (X ((op), (xop)) | ((((unsigned long)(a)) & 1) << 25))
1500#define XDSS_MASK XDSS(0x3f, 0x3ff, 1)
1501
252b5132
RH
1502/* An XFL form instruction. */
1503#define XFL(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1) | (((unsigned long)(rc)) & 1))
ea192fa3 1504#define XFL_MASK XFL (0x3f, 0x3ff, 1)
252b5132 1505
23976049 1506/* An X form isel instruction. */
de866fcc
AM
1507#define XISEL(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1))
1508#define XISEL_MASK XISEL(0x3f, 0x1f)
23976049 1509
252b5132
RH
1510/* An XL form instruction with the LK field set to 0. */
1511#define XL(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1))
1512
1513/* An XL form instruction which uses the LK field. */
1514#define XLLK(op, xop, lk) (XL ((op), (xop)) | ((lk) & 1))
1515
1516/* The mask for an XL form instruction. */
1517#define XL_MASK XLLK (0x3f, 0x3ff, 1)
1518
1519/* An XL form instruction which explicitly sets the BO field. */
1520#define XLO(op, bo, xop, lk) \
1521 (XLLK ((op), (xop), (lk)) | ((((unsigned long)(bo)) & 0x1f) << 21))
1522#define XLO_MASK (XL_MASK | BO_MASK)
1523
1524/* An XL form instruction which explicitly sets the y bit of the BO
1525 field. */
1526#define XLYLK(op, xop, y, lk) (XLLK ((op), (xop), (lk)) | ((((unsigned long)(y)) & 1) << 21))
1527#define XLYLK_MASK (XL_MASK | Y_MASK)
1528
1529/* An XL form instruction which sets the BO field and the condition
1530 bits of the BI field. */
1531#define XLOCB(op, bo, cb, xop, lk) \
1532 (XLO ((op), (bo), (xop), (lk)) | ((((unsigned long)(cb)) & 3) << 16))
1533#define XLOCB_MASK XLOCB (0x3f, 0x1f, 0x3, 0x3ff, 1)
1534
1535/* An XL_MASK or XLYLK_MASK or XLOCB_MASK with the BB field fixed. */
1536#define XLBB_MASK (XL_MASK | BB_MASK)
1537#define XLYBB_MASK (XLYLK_MASK | BB_MASK)
1538#define XLBOCBBB_MASK (XLOCB_MASK | BB_MASK)
1539
d0618d1c
AM
1540/* A mask for branch instructions using the BH field. */
1541#define XLBH_MASK (XL_MASK | (0x1c << 11))
1542
252b5132
RH
1543/* An XL_MASK with the BO and BB fields fixed. */
1544#define XLBOBB_MASK (XL_MASK | BO_MASK | BB_MASK)
1545
1546/* An XL_MASK with the BO, BI and BB fields fixed. */
1547#define XLBOBIBB_MASK (XL_MASK | BO_MASK | BI_MASK | BB_MASK)
1548
1549/* An XO form instruction. */
1550#define XO(op, xop, oe, rc) \
1551 (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 1) | ((((unsigned long)(oe)) & 1) << 10) | (((unsigned long)(rc)) & 1))
1552#define XO_MASK XO (0x3f, 0x1ff, 1, 1)
1553
1554/* An XO_MASK with the RB field fixed. */
1555#define XORB_MASK (XO_MASK | RB_MASK)
1556
c3d65c1c
BE
1557/* An XOPS form instruction for paired singles. */
1558#define XOPS(op, xop, rc) \
1559 (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1) | (((unsigned long)(rc)) & 1))
1560#define XOPS_MASK XOPS (0x3f, 0x3ff, 1)
1561
1562
252b5132
RH
1563/* An XS form instruction. */
1564#define XS(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 2) | (((unsigned long)(rc)) & 1))
1565#define XS_MASK XS (0x3f, 0x1ff, 1)
1566
1567/* A mask for the FXM version of an XFX form instruction. */
98e69875 1568#define XFXFXM_MASK (X_MASK | (1 << 11) | (1 << 20))
252b5132
RH
1569
1570/* An XFX form instruction with the FXM field filled in. */
98e69875
AM
1571#define XFXM(op, xop, fxm, p4) \
1572 (X ((op), (xop)) | ((((unsigned long)(fxm)) & 0xff) << 12) \
1573 | ((unsigned long)(p4) << 20))
252b5132
RH
1574
1575/* An XFX form instruction with the SPR field filled in. */
1576#define XSPR(op, xop, spr) \
1577 (X ((op), (xop)) | ((((unsigned long)(spr)) & 0x1f) << 16) | ((((unsigned long)(spr)) & 0x3e0) << 6))
1578#define XSPR_MASK (X_MASK | SPR_MASK)
1579
1580/* An XFX form instruction with the SPR field filled in except for the
1581 SPRBAT field. */
1582#define XSPRBAT_MASK (XSPR_MASK &~ SPRBAT_MASK)
1583
1584/* An XFX form instruction with the SPR field filled in except for the
1585 SPRG field. */
b84bf58a 1586#define XSPRG_MASK (XSPR_MASK & ~(0x1f << 16))
252b5132
RH
1587
1588/* An X form instruction with everything filled in except the E field. */
1589#define XE_MASK (0xffff7fff)
1590
23976049
EZ
1591/* An X form user context instruction. */
1592#define XUC(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f))
1593#define XUC_MASK XUC(0x3f, 0x1f)
1594
c3d65c1c
BE
1595/* An XW form instruction. */
1596#define XW(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x3f) << 1) | ((rc) & 1))
1597/* The mask for a G form instruction. rc not supported at present. */
1598#define XW_MASK XW (0x3f, 0x3f, 0)
1599
252b5132
RH
1600/* The BO encodings used in extended conditional branch mnemonics. */
1601#define BODNZF (0x0)
1602#define BODNZFP (0x1)
1603#define BODZF (0x2)
1604#define BODZFP (0x3)
252b5132
RH
1605#define BODNZT (0x8)
1606#define BODNZTP (0x9)
1607#define BODZT (0xa)
1608#define BODZTP (0xb)
802a735e
AM
1609
1610#define BOF (0x4)
1611#define BOFP (0x5)
94efba12
AM
1612#define BOFM4 (0x6)
1613#define BOFP4 (0x7)
252b5132
RH
1614#define BOT (0xc)
1615#define BOTP (0xd)
94efba12
AM
1616#define BOTM4 (0xe)
1617#define BOTP4 (0xf)
802a735e 1618
252b5132
RH
1619#define BODNZ (0x10)
1620#define BODNZP (0x11)
1621#define BODZ (0x12)
1622#define BODZP (0x13)
94efba12
AM
1623#define BODNZM4 (0x18)
1624#define BODNZP4 (0x19)
1625#define BODZM4 (0x1a)
1626#define BODZP4 (0x1b)
802a735e 1627
252b5132
RH
1628#define BOU (0x14)
1629
1630/* The BI condition bit encodings used in extended conditional branch
1631 mnemonics. */
1632#define CBLT (0)
1633#define CBGT (1)
1634#define CBEQ (2)
1635#define CBSO (3)
1636
1637/* The TO encodings used in extended trap mnemonics. */
1638#define TOLGT (0x1)
1639#define TOLLT (0x2)
1640#define TOEQ (0x4)
1641#define TOLGE (0x5)
1642#define TOLNL (0x5)
1643#define TOLLE (0x6)
1644#define TOLNG (0x6)
1645#define TOGT (0x8)
1646#define TOGE (0xc)
1647#define TONL (0xc)
1648#define TOLT (0x10)
1649#define TOLE (0x14)
1650#define TONG (0x14)
1651#define TONE (0x18)
1652#define TOU (0x1f)
1653\f
1654/* Smaller names for the flags so each entry in the opcodes table will
1655 fit on a single line. */
1656#undef PPC
de866fcc 1657#define PPC PPC_OPCODE_PPC
661bd698 1658#define PPCCOM PPC_OPCODE_PPC | PPC_OPCODE_COMMON
94efba12 1659#define NOPOWER4 PPC_OPCODE_NOPOWER4 | PPCCOM
661bd698 1660#define POWER4 PPC_OPCODE_POWER4
1ed8e1e4 1661#define POWER5 PPC_OPCODE_POWER5
702f0fb4 1662#define POWER6 PPC_OPCODE_POWER6
ede602d7 1663#define CELL PPC_OPCODE_CELL
de866fcc
AM
1664#define PPC32 PPC_OPCODE_32 | PPC_OPCODE_PPC
1665#define PPC64 PPC_OPCODE_64 | PPC_OPCODE_PPC
418c1742 1666#define PPC403 PPC_OPCODE_403
e0c21649 1667#define PPC405 PPC403
7d5b217e 1668#define PPC440 PPC_OPCODE_440
c8187e15 1669#define PPC464 PPC440
252b5132 1670#define PPC750 PPC
33e8d5ac 1671#define PPC7450 PPC
252b5132 1672#define PPC860 PPC
c3d65c1c 1673#define PPCPS PPC_OPCODE_PPCPS
a404d431 1674#define PPCVEC PPC_OPCODE_ALTIVEC
de866fcc
AM
1675#define POWER PPC_OPCODE_POWER
1676#define POWER2 PPC_OPCODE_POWER | PPC_OPCODE_POWER2
1677#define PPCPWR2 PPC_OPCODE_PPC | PPC_OPCODE_POWER | PPC_OPCODE_POWER2
1678#define POWER32 PPC_OPCODE_POWER | PPC_OPCODE_32
1679#define COM PPC_OPCODE_POWER | PPC_OPCODE_PPC | PPC_OPCODE_COMMON
1680#define COM32 PPC_OPCODE_POWER | PPC_OPCODE_PPC | PPC_OPCODE_COMMON | PPC_OPCODE_32
1681#define M601 PPC_OPCODE_POWER | PPC_OPCODE_601
661bd698 1682#define PWRCOM PPC_OPCODE_POWER | PPC_OPCODE_601 | PPC_OPCODE_COMMON
de866fcc
AM
1683#define MFDEC1 PPC_OPCODE_POWER
1684#define MFDEC2 PPC_OPCODE_PPC | PPC_OPCODE_601 | PPC_OPCODE_BOOKE
418c1742 1685#define BOOKE PPC_OPCODE_BOOKE
de866fcc
AM
1686#define BOOKE64 PPC_OPCODE_BOOKE64
1687#define CLASSIC PPC_OPCODE_CLASSIC
36ae0db3 1688#define PPCE300 PPC_OPCODE_E300
23976049 1689#define PPCSPE PPC_OPCODE_SPE
de866fcc 1690#define PPCISEL PPC_OPCODE_ISEL
23976049 1691#define PPCEFS PPC_OPCODE_EFS
de866fcc 1692#define PPCBRLK PPC_OPCODE_BRLOCK
23976049 1693#define PPCPMR PPC_OPCODE_PMR
de866fcc 1694#define PPCCHLK PPC_OPCODE_CACHELCK
dde1b132 1695#define PPCCHLK64 PPC_OPCODE_CACHELCK | PPC_OPCODE_BOOKE64
23976049 1696#define PPCRFMCI PPC_OPCODE_RFMCI
19a6653c 1697#define E500MC PPC_OPCODE_E500MC
252b5132
RH
1698\f
1699/* The opcode table.
1700
1701 The format of the opcode table is:
1702
de866fcc 1703 NAME OPCODE MASK FLAGS {OPERANDS}
252b5132
RH
1704
1705 NAME is the name of the instruction.
1706 OPCODE is the instruction opcode.
1707 MASK is the opcode mask; this is used to tell the disassembler
1708 which bits in the actual opcode must match OPCODE.
1709 FLAGS are flags indicated what processors support the instruction.
1710 OPERANDS is the list of operands.
1711
1712 The disassembler reads the table in order and prints the first
1713 instruction which matches, so this table is sorted to put more
de866fcc
AM
1714 specific instructions before more general instructions.
1715
1716 This table must be sorted by major opcode. Please try to keep it
1717 vaguely sorted within major opcode too, except of course where
1718 constrained otherwise by disassembler operation. */
252b5132
RH
1719
1720const struct powerpc_opcode powerpc_opcodes[] = {
de866fcc
AM
1721{"attn", X(0,256), X_MASK, POWER4, {0}},
1722{"tdlgti", OPTO(2,TOLGT), OPTO_MASK, PPC64, {RA, SI}},
1723{"tdllti", OPTO(2,TOLLT), OPTO_MASK, PPC64, {RA, SI}},
1724{"tdeqi", OPTO(2,TOEQ), OPTO_MASK, PPC64, {RA, SI}},
1725{"tdlgei", OPTO(2,TOLGE), OPTO_MASK, PPC64, {RA, SI}},
1726{"tdlnli", OPTO(2,TOLNL), OPTO_MASK, PPC64, {RA, SI}},
1727{"tdllei", OPTO(2,TOLLE), OPTO_MASK, PPC64, {RA, SI}},
1728{"tdlngi", OPTO(2,TOLNG), OPTO_MASK, PPC64, {RA, SI}},
1729{"tdgti", OPTO(2,TOGT), OPTO_MASK, PPC64, {RA, SI}},
1730{"tdgei", OPTO(2,TOGE), OPTO_MASK, PPC64, {RA, SI}},
1731{"tdnli", OPTO(2,TONL), OPTO_MASK, PPC64, {RA, SI}},
1732{"tdlti", OPTO(2,TOLT), OPTO_MASK, PPC64, {RA, SI}},
1733{"tdlei", OPTO(2,TOLE), OPTO_MASK, PPC64, {RA, SI}},
1734{"tdngi", OPTO(2,TONG), OPTO_MASK, PPC64, {RA, SI}},
1735{"tdnei", OPTO(2,TONE), OPTO_MASK, PPC64, {RA, SI}},
1736{"tdi", OP(2), OP_MASK, PPC64, {TO, RA, SI}},
1737
1738{"twlgti", OPTO(3,TOLGT), OPTO_MASK, PPCCOM, {RA, SI}},
1739{"tlgti", OPTO(3,TOLGT), OPTO_MASK, PWRCOM, {RA, SI}},
1740{"twllti", OPTO(3,TOLLT), OPTO_MASK, PPCCOM, {RA, SI}},
1741{"tllti", OPTO(3,TOLLT), OPTO_MASK, PWRCOM, {RA, SI}},
1742{"tweqi", OPTO(3,TOEQ), OPTO_MASK, PPCCOM, {RA, SI}},
1743{"teqi", OPTO(3,TOEQ), OPTO_MASK, PWRCOM, {RA, SI}},
1744{"twlgei", OPTO(3,TOLGE), OPTO_MASK, PPCCOM, {RA, SI}},
1745{"tlgei", OPTO(3,TOLGE), OPTO_MASK, PWRCOM, {RA, SI}},
1746{"twlnli", OPTO(3,TOLNL), OPTO_MASK, PPCCOM, {RA, SI}},
1747{"tlnli", OPTO(3,TOLNL), OPTO_MASK, PWRCOM, {RA, SI}},
1748{"twllei", OPTO(3,TOLLE), OPTO_MASK, PPCCOM, {RA, SI}},
1749{"tllei", OPTO(3,TOLLE), OPTO_MASK, PWRCOM, {RA, SI}},
1750{"twlngi", OPTO(3,TOLNG), OPTO_MASK, PPCCOM, {RA, SI}},
1751{"tlngi", OPTO(3,TOLNG), OPTO_MASK, PWRCOM, {RA, SI}},
1752{"twgti", OPTO(3,TOGT), OPTO_MASK, PPCCOM, {RA, SI}},
1753{"tgti", OPTO(3,TOGT), OPTO_MASK, PWRCOM, {RA, SI}},
1754{"twgei", OPTO(3,TOGE), OPTO_MASK, PPCCOM, {RA, SI}},
1755{"tgei", OPTO(3,TOGE), OPTO_MASK, PWRCOM, {RA, SI}},
1756{"twnli", OPTO(3,TONL), OPTO_MASK, PPCCOM, {RA, SI}},
1757{"tnli", OPTO(3,TONL), OPTO_MASK, PWRCOM, {RA, SI}},
1758{"twlti", OPTO(3,TOLT), OPTO_MASK, PPCCOM, {RA, SI}},
1759{"tlti", OPTO(3,TOLT), OPTO_MASK, PWRCOM, {RA, SI}},
1760{"twlei", OPTO(3,TOLE), OPTO_MASK, PPCCOM, {RA, SI}},
1761{"tlei", OPTO(3,TOLE), OPTO_MASK, PWRCOM, {RA, SI}},
1762{"twngi", OPTO(3,TONG), OPTO_MASK, PPCCOM, {RA, SI}},
1763{"tngi", OPTO(3,TONG), OPTO_MASK, PWRCOM, {RA, SI}},
1764{"twnei", OPTO(3,TONE), OPTO_MASK, PPCCOM, {RA, SI}},
1765{"tnei", OPTO(3,TONE), OPTO_MASK, PWRCOM, {RA, SI}},
1766{"twi", OP(3), OP_MASK, PPCCOM, {TO, RA, SI}},
1767{"ti", OP(3), OP_MASK, PWRCOM, {TO, RA, SI}},
1768
1769{"ps_cmpu0", X (4, 0), X_MASK|(3<<21), PPCPS, {BF, FRA, FRB}},
1770{"vaddubm", VX (4, 0), VX_MASK, PPCVEC, {VD, VA, VB}},
1771{"vmaxub", VX (4, 2), VX_MASK, PPCVEC, {VD, VA, VB}},
1772{"vrlb", VX (4, 4), VX_MASK, PPCVEC, {VD, VA, VB}},
1773{"vcmpequb", VXR(4, 6,0), VXR_MASK, PPCVEC, {VD, VA, VB}},
1774{"vmuloub", VX (4, 8), VX_MASK, PPCVEC, {VD, VA, VB}},
1775{"vaddfp", VX (4, 10), VX_MASK, PPCVEC, {VD, VA, VB}},
1776{"psq_lx", XW (4, 6,0), XW_MASK, PPCPS, {FRT,RA,RB,PSWM,PSQM}},
1777{"vmrghb", VX (4, 12), VX_MASK, PPCVEC, {VD, VA, VB}},
1778{"psq_stx", XW (4, 7,0), XW_MASK, PPCPS, {FRS,RA,RB,PSWM,PSQM}},
1779{"vpkuhum", VX (4, 14), VX_MASK, PPCVEC, {VD, VA, VB}},
1780{"mulhhwu", XRC(4, 8,0), X_MASK, PPC405|PPC440, {RT, RA, RB}},
1781{"mulhhwu.", XRC(4, 8,1), X_MASK, PPC405|PPC440, {RT, RA, RB}},
1782{"ps_sum0", A (4, 10,0), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
1783{"ps_sum0.", A (4, 10,1), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
1784{"ps_sum1", A (4, 11,0), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
1785{"ps_sum1.", A (4, 11,1), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
1786{"ps_muls0", A (4, 12,0), AFRB_MASK, PPCPS, {FRT, FRA, FRC}},
1787{"machhwu", XO (4, 12,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
1788{"ps_muls0.", A (4, 12,1), AFRB_MASK, PPCPS, {FRT, FRA, FRC}},
1789{"machhwu.", XO (4, 12,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
1790{"ps_muls1", A (4, 13,0), AFRB_MASK, PPCPS, {FRT, FRA, FRC}},
1791{"ps_muls1.", A (4, 13,1), AFRB_MASK, PPCPS, {FRT, FRA, FRC}},
1792{"ps_madds0", A (4, 14,0), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
1793{"ps_madds0.", A (4, 14,1), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
1794{"ps_madds1", A (4, 15,0), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
1795{"ps_madds1.", A (4, 15,1), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
1796{"vmhaddshs", VXA(4, 32), VXA_MASK, PPCVEC, {VD, VA, VB, VC}},
1797{"vmhraddshs", VXA(4, 33), VXA_MASK, PPCVEC, {VD, VA, VB, VC}},
1798{"vmladduhm", VXA(4, 34), VXA_MASK, PPCVEC, {VD, VA, VB, VC}},
1799{"ps_div", A (4, 18,0), AFRC_MASK, PPCPS, {FRT, FRA, FRB}},
1800{"vmsumubm", VXA(4, 36), VXA_MASK, PPCVEC, {VD, VA, VB, VC}},
1801{"ps_div.", A (4, 18,1), AFRC_MASK, PPCPS, {FRT, FRA, FRB}},
1802{"vmsummbm", VXA(4, 37), VXA_MASK, PPCVEC, {VD, VA, VB, VC}},
1803{"vmsumuhm", VXA(4, 38), VXA_MASK, PPCVEC, {VD, VA, VB, VC}},
1804{"vmsumuhs", VXA(4, 39), VXA_MASK, PPCVEC, {VD, VA, VB, VC}},
1805{"ps_sub", A (4, 20,0), AFRC_MASK, PPCPS, {FRT, FRA, FRB}},
1806{"vmsumshm", VXA(4, 40), VXA_MASK, PPCVEC, {VD, VA, VB, VC}},
1807{"ps_sub.", A (4, 20,1), AFRC_MASK, PPCPS, {FRT, FRA, FRB}},
1808{"vmsumshs", VXA(4, 41), VXA_MASK, PPCVEC, {VD, VA, VB, VC}},
1809{"ps_add", A (4, 21,0), AFRC_MASK, PPCPS, {FRT, FRA, FRB}},
1810{"vsel", VXA(4, 42), VXA_MASK, PPCVEC, {VD, VA, VB, VC}},
1811{"ps_add.", A (4, 21,1), AFRC_MASK, PPCPS, {FRT, FRA, FRB}},
1812{"vperm", VXA(4, 43), VXA_MASK, PPCVEC, {VD, VA, VB, VC}},
1813{"vsldoi", VXA(4, 44), VXA_MASK, PPCVEC, {VD, VA, VB, SHB}},
1814{"ps_sel", A (4, 23,0), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
1815{"vmaddfp", VXA(4, 46), VXA_MASK, PPCVEC, {VD, VA, VC, VB}},
1816{"ps_sel.", A (4, 23,1), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
1817{"vnmsubfp", VXA(4, 47), VXA_MASK, PPCVEC, {VD, VA, VC, VB}},
1818{"ps_res", A (4, 24,0), AFRAFRC_MASK, PPCPS, {FRT, FRB}},
1819{"ps_res.", A (4, 24,1), AFRAFRC_MASK, PPCPS, {FRT, FRB}},
1820{"ps_mul", A (4, 25,0), AFRB_MASK, PPCPS, {FRT, FRA, FRC}},
1821{"ps_mul.", A (4, 25,1), AFRB_MASK, PPCPS, {FRT, FRA, FRC}},
1822{"ps_rsqrte", A (4, 26,0), AFRAFRC_MASK, PPCPS, {FRT, FRB}},
1823{"ps_rsqrte.", A (4, 26,1), AFRAFRC_MASK, PPCPS, {FRT, FRB}},
1824{"ps_msub", A (4, 28,0), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
1825{"ps_msub.", A (4, 28,1), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
1826{"ps_madd", A (4, 29,0), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
1827{"ps_madd.", A (4, 29,1), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
1828{"ps_nmsub", A (4, 30,0), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
1829{"ps_nmsub.", A (4, 30,1), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
1830{"ps_nmadd", A (4, 31,0), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
1831{"ps_nmadd.", A (4, 31,1), A_MASK, PPCPS, {FRT, FRA, FRC, FRB}},
1832{"ps_cmpo0", X (4, 32), X_MASK|(3<<21), PPCPS, {BF, FRA, FRB}},
1833{"vadduhm", VX (4, 64), VX_MASK, PPCVEC, {VD, VA, VB}},
1834{"vmaxuh", VX (4, 66), VX_MASK, PPCVEC, {VD, VA, VB}},
1835{"vrlh", VX (4, 68), VX_MASK, PPCVEC, {VD, VA, VB}},
1836{"vcmpequh", VXR(4, 70,0), VXR_MASK, PPCVEC, {VD, VA, VB}},
1837{"vmulouh", VX (4, 72), VX_MASK, PPCVEC, {VD, VA, VB}},
1838{"vsubfp", VX (4, 74), VX_MASK, PPCVEC, {VD, VA, VB}},
1839{"psq_lux", XW (4, 38,0), XW_MASK, PPCPS, {FRT,RA,RB,PSWM,PSQM}},
1840{"vmrghh", VX (4, 76), VX_MASK, PPCVEC, {VD, VA, VB}},
1841{"psq_stux", XW (4, 39,0), XW_MASK, PPCPS, {FRS,RA,RB,PSWM,PSQM}},
1842{"vpkuwum", VX (4, 78), VX_MASK, PPCVEC, {VD, VA, VB}},
1843{"ps_neg", XRC(4, 40,0), XRA_MASK, PPCPS, {FRT, FRB}},
1844{"mulhhw", XRC(4, 40,0), X_MASK, PPC405|PPC440, {RT, RA, RB}},
1845{"ps_neg.", XRC(4, 40,1), XRA_MASK, PPCPS, {FRT, FRB}},
1846{"mulhhw.", XRC(4, 40,1), X_MASK, PPC405|PPC440, {RT, RA, RB}},
1847{"machhw", XO (4, 44,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
1848{"machhw.", XO (4, 44,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
1849{"nmachhw", XO (4, 46,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
1850{"nmachhw.", XO (4, 46,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
1851{"ps_cmpu1", X (4, 64), X_MASK|(3<<21), PPCPS, {BF, FRA, FRB}},
1852{"vadduwm", VX (4, 128), VX_MASK, PPCVEC, {VD, VA, VB}},
1853{"vmaxuw", VX (4, 130), VX_MASK, PPCVEC, {VD, VA, VB}},
1854{"vrlw", VX (4, 132), VX_MASK, PPCVEC, {VD, VA, VB}},
1855{"vcmpequw", VXR(4, 134,0), VXR_MASK, PPCVEC, {VD, VA, VB}},
1856{"vmrghw", VX (4, 140), VX_MASK, PPCVEC, {VD, VA, VB}},
1857{"vpkuhus", VX (4, 142), VX_MASK, PPCVEC, {VD, VA, VB}},
1858{"ps_mr", XRC(4, 72,0), XRA_MASK, PPCPS, {FRT, FRB}},
1859{"ps_mr.", XRC(4, 72,1), XRA_MASK, PPCPS, {FRT, FRB}},
1860{"machhwsu", XO (4, 76,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
1861{"machhwsu.", XO (4, 76,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
1862{"ps_cmpo1", X (4, 96), X_MASK|(3<<21), PPCPS, {BF, FRA, FRB}},
1863{"vcmpeqfp", VXR(4, 198,0), VXR_MASK, PPCVEC, {VD, VA, VB}},
1864{"vpkuwus", VX (4, 206), VX_MASK, PPCVEC, {VD, VA, VB}},
1865{"machhws", XO (4, 108,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
1866{"machhws.", XO (4, 108,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
1867{"nmachhws", XO (4, 110,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
1868{"nmachhws.", XO (4, 110,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
1869{"vmaxsb", VX (4, 258), VX_MASK, PPCVEC, {VD, VA, VB}},
1870{"vslb", VX (4, 260), VX_MASK, PPCVEC, {VD, VA, VB}},
1871{"vmulosb", VX (4, 264), VX_MASK, PPCVEC, {VD, VA, VB}},
1872{"vrefp", VX (4, 266), VX_MASK, PPCVEC, {VD, VB}},
1873{"vmrglb", VX (4, 268), VX_MASK, PPCVEC, {VD, VA, VB}},
1874{"vpkshus", VX (4, 270), VX_MASK, PPCVEC, {VD, VA, VB}},
1875{"ps_nabs", XRC(4, 136,0), XRA_MASK, PPCPS, {FRT, FRB}},
1876{"mulchwu", XRC(4, 136,0), X_MASK, PPC405|PPC440, {RT, RA, RB}},
1877{"ps_nabs.", XRC(4, 136,1), XRA_MASK, PPCPS, {FRT, FRB}},
1878{"mulchwu.", XRC(4, 136,1), X_MASK, PPC405|PPC440, {RT, RA, RB}},
1879{"macchwu", XO (4, 140,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
1880{"macchwu.", XO (4, 140,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
1881{"vmaxsh", VX (4, 322), VX_MASK, PPCVEC, {VD, VA, VB}},
1882{"vslh", VX (4, 324), VX_MASK, PPCVEC, {VD, VA, VB}},
1883{"vmulosh", VX (4, 328), VX_MASK, PPCVEC, {VD, VA, VB}},
1884{"vrsqrtefp", VX (4, 330), VX_MASK, PPCVEC, {VD, VB}},
1885{"vmrglh", VX (4, 332), VX_MASK, PPCVEC, {VD, VA, VB}},
1886{"vpkswus", VX (4, 334), VX_MASK, PPCVEC, {VD, VA, VB}},
1887{"mulchw", XRC(4, 168,0), X_MASK, PPC405|PPC440, {RT, RA, RB}},
1888{"mulchw.", XRC(4, 168,1), X_MASK, PPC405|PPC440, {RT, RA, RB}},
1889{"macchw", XO (4, 172,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
1890{"macchw.", XO (4, 172,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
1891{"nmacchw", XO (4, 174,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
1892{"nmacchw.", XO (4, 174,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
1893{"vaddcuw", VX (4, 384), VX_MASK, PPCVEC, {VD, VA, VB}},
1894{"vmaxsw", VX (4, 386), VX_MASK, PPCVEC, {VD, VA, VB}},
1895{"vslw", VX (4, 388), VX_MASK, PPCVEC, {VD, VA, VB}},
1896{"vexptefp", VX (4, 394), VX_MASK, PPCVEC, {VD, VB}},
1897{"vmrglw", VX (4, 396), VX_MASK, PPCVEC, {VD, VA, VB}},
1898{"vpkshss", VX (4, 398), VX_MASK, PPCVEC, {VD, VA, VB}},
1899{"macchwsu", XO (4, 204,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
1900{"macchwsu.", XO (4, 204,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
1901{"vsl", VX (4, 452), VX_MASK, PPCVEC, {VD, VA, VB}},
1902{"vcmpgefp", VXR(4, 454,0), VXR_MASK, PPCVEC, {VD, VA, VB}},
1903{"vlogefp", VX (4, 458), VX_MASK, PPCVEC, {VD, VB}},
1904{"vpkswss", VX (4, 462), VX_MASK, PPCVEC, {VD, VA, VB}},
1905{"macchws", XO (4, 236,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
1906{"macchws.", XO (4, 236,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
1907{"nmacchws", XO (4, 238,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
1908{"nmacchws.", XO (4, 238,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
1909{"evaddw", VX (4, 512), VX_MASK, PPCSPE, {RS, RA, RB}},
1910{"vaddubs", VX (4, 512), VX_MASK, PPCVEC, {VD, VA, VB}},
1911{"evaddiw", VX (4, 514), VX_MASK, PPCSPE, {RS, RB, UIMM}},
1912{"vminub", VX (4, 514), VX_MASK, PPCVEC, {VD, VA, VB}},
1913{"evsubfw", VX (4, 516), VX_MASK, PPCSPE, {RS, RA, RB}},
1914{"evsubw", VX (4, 516), VX_MASK, PPCSPE, {RS, RB, RA}},
1915{"vsrb", VX (4, 516), VX_MASK, PPCVEC, {VD, VA, VB}},
1916{"evsubifw", VX (4, 518), VX_MASK, PPCSPE, {RS, UIMM, RB}},
1917{"evsubiw", VX (4, 518), VX_MASK, PPCSPE, {RS, RB, UIMM}},
1918{"vcmpgtub", VXR(4, 518,0), VXR_MASK, PPCVEC, {VD, VA, VB}},
1919{"evabs", VX (4, 520), VX_MASK, PPCSPE, {RS, RA}},
1920{"vmuleub", VX (4, 520), VX_MASK, PPCVEC, {VD, VA, VB}},
1921{"evneg", VX (4, 521), VX_MASK, PPCSPE, {RS, RA}},
1922{"evextsb", VX (4, 522), VX_MASK, PPCSPE, {RS, RA}},
1923{"vrfin", VX (4, 522), VX_MASK, PPCVEC, {VD, VB}},
1924{"evextsh", VX (4, 523), VX_MASK, PPCSPE, {RS, RA}},
1925{"evrndw", VX (4, 524), VX_MASK, PPCSPE, {RS, RA}},
1926{"vspltb", VX (4, 524), VX_MASK, PPCVEC, {VD, VB, UIMM}},
1927{"evcntlzw", VX (4, 525), VX_MASK, PPCSPE, {RS, RA}},
1928{"evcntlsw", VX (4, 526), VX_MASK, PPCSPE, {RS, RA}},
1929{"vupkhsb", VX (4, 526), VX_MASK, PPCVEC, {VD, VB}},
1930{"brinc", VX (4, 527), VX_MASK, PPCSPE, {RS, RA, RB}},
1931{"ps_abs", XRC(4, 264,0), XRA_MASK, PPCPS, {FRT, FRB}},
1932{"ps_abs.", XRC(4, 264,1), XRA_MASK, PPCPS, {FRT, FRB}},
1933{"evand", VX (4, 529), VX_MASK, PPCSPE, {RS, RA, RB}},
1934{"evandc", VX (4, 530), VX_MASK, PPCSPE, {RS, RA, RB}},
1935{"evxor", VX (4, 534), VX_MASK, PPCSPE, {RS, RA, RB}},
1936{"evmr", VX (4, 535), VX_MASK, PPCSPE, {RS, RA, BBA}},
1937{"evor", VX (4, 535), VX_MASK, PPCSPE, {RS, RA, RB}},
1938{"evnor", VX (4, 536), VX_MASK, PPCSPE, {RS, RA, RB}},
1939{"evnot", VX (4, 536), VX_MASK, PPCSPE, {RS, RA, BBA}},
1940{"eveqv", VX (4, 537), VX_MASK, PPCSPE, {RS, RA, RB}},
1941{"evorc", VX (4, 539), VX_MASK, PPCSPE, {RS, RA, RB}},
1942{"evnand", VX (4, 542), VX_MASK, PPCSPE, {RS, RA, RB}},
1943{"evsrwu", VX (4, 544), VX_MASK, PPCSPE, {RS, RA, RB}},
1944{"evsrws", VX (4, 545), VX_MASK, PPCSPE, {RS, RA, RB}},
1945{"evsrwiu", VX (4, 546), VX_MASK, PPCSPE, {RS, RA, EVUIMM}},
1946{"evsrwis", VX (4, 547), VX_MASK, PPCSPE, {RS, RA, EVUIMM}},
1947{"evslw", VX (4, 548), VX_MASK, PPCSPE, {RS, RA, RB}},
1948{"evslwi", VX (4, 550), VX_MASK, PPCSPE, {RS, RA, EVUIMM}},
1949{"evrlw", VX (4, 552), VX_MASK, PPCSPE, {RS, RA, RB}},
1950{"evsplati", VX (4, 553), VX_MASK, PPCSPE, {RS, SIMM}},
1951{"evrlwi", VX (4, 554), VX_MASK, PPCSPE, {RS, RA, EVUIMM}},
1952{"evsplatfi", VX (4, 555), VX_MASK, PPCSPE, {RS, SIMM}},
1953{"evmergehi", VX (4, 556), VX_MASK, PPCSPE, {RS, RA, RB}},
1954{"evmergelo", VX (4, 557), VX_MASK, PPCSPE, {RS, RA, RB}},
1955{"evmergehilo", VX (4, 558), VX_MASK, PPCSPE, {RS, RA, RB}},
1956{"evmergelohi", VX (4, 559), VX_MASK, PPCSPE, {RS, RA, RB}},
1957{"evcmpgtu", VX (4, 560), VX_MASK, PPCSPE, {CRFD, RA, RB}},
1958{"evcmpgts", VX (4, 561), VX_MASK, PPCSPE, {CRFD, RA, RB}},
1959{"evcmpltu", VX (4, 562), VX_MASK, PPCSPE, {CRFD, RA, RB}},
1960{"evcmplts", VX (4, 563), VX_MASK, PPCSPE, {CRFD, RA, RB}},
1961{"evcmpeq", VX (4, 564), VX_MASK, PPCSPE, {CRFD, RA, RB}},
1962{"vadduhs", VX (4, 576), VX_MASK, PPCVEC, {VD, VA, VB}},
1963{"vminuh", VX (4, 578), VX_MASK, PPCVEC, {VD, VA, VB}},
1964{"vsrh", VX (4, 580), VX_MASK, PPCVEC, {VD, VA, VB}},
1965{"vcmpgtuh", VXR(4, 582,0), VXR_MASK, PPCVEC, {VD, VA, VB}},
1966{"vmuleuh", VX (4, 584), VX_MASK, PPCVEC, {VD, VA, VB}},
1967{"vrfiz", VX (4, 586), VX_MASK, PPCVEC, {VD, VB}},
1968{"vsplth", VX (4, 588), VX_MASK, PPCVEC, {VD, VB, UIMM}},
1969{"vupkhsh", VX (4, 590), VX_MASK, PPCVEC, {VD, VB}},
1970{"evsel", EVSEL(4,79), EVSEL_MASK, PPCSPE, {RS, RA, RB, CRFS}},
1971{"evfsadd", VX (4, 640), VX_MASK, PPCSPE, {RS, RA, RB}},
1972{"vadduws", VX (4, 640), VX_MASK, PPCVEC, {VD, VA, VB}},
1973{"evfssub", VX (4, 641), VX_MASK, PPCSPE, {RS, RA, RB}},
1974{"vminuw", VX (4, 642), VX_MASK, PPCVEC, {VD, VA, VB}},
1975{"evfsabs", VX (4, 644), VX_MASK, PPCSPE, {RS, RA}},
1976{"vsrw", VX (4, 644), VX_MASK, PPCVEC, {VD, VA, VB}},
1977{"evfsnabs", VX (4, 645), VX_MASK, PPCSPE, {RS, RA}},
1978{"evfsneg", VX (4, 646), VX_MASK, PPCSPE, {RS, RA}},
1979{"vcmpgtuw", VXR(4, 646,0), VXR_MASK, PPCVEC, {VD, VA, VB}},
1980{"evfsmul", VX (4, 648), VX_MASK, PPCSPE, {RS, RA, RB}},
1981{"evfsdiv", VX (4, 649), VX_MASK, PPCSPE, {RS, RA, RB}},
1982{"vrfip", VX (4, 650), VX_MASK, PPCVEC, {VD, VB}},
1983{"evfscmpgt", VX (4, 652), VX_MASK, PPCSPE, {CRFD, RA, RB}},
1984{"vspltw", VX (4, 652), VX_MASK, PPCVEC, {VD, VB, UIMM}},
1985{"evfscmplt", VX (4, 653), VX_MASK, PPCSPE, {CRFD, RA, RB}},
1986{"evfscmpeq", VX (4, 654), VX_MASK, PPCSPE, {CRFD, RA, RB}},
1987{"vupklsb", VX (4, 654), VX_MASK, PPCVEC, {VD, VB}},
1988{"evfscfui", VX (4, 656), VX_MASK, PPCSPE, {RS, RB}},
1989{"evfscfsi", VX (4, 657), VX_MASK, PPCSPE, {RS, RB}},
1990{"evfscfuf", VX (4, 658), VX_MASK, PPCSPE, {RS, RB}},
1991{"evfscfsf", VX (4, 659), VX_MASK, PPCSPE, {RS, RB}},
1992{"evfsctui", VX (4, 660), VX_MASK, PPCSPE, {RS, RB}},
1993{"evfsctsi", VX (4, 661), VX_MASK, PPCSPE, {RS, RB}},
1994{"evfsctuf", VX (4, 662), VX_MASK, PPCSPE, {RS, RB}},
1995{"evfsctsf", VX (4, 663), VX_MASK, PPCSPE, {RS, RB}},
1996{"evfsctuiz", VX (4, 664), VX_MASK, PPCSPE, {RS, RB}},
1997{"evfsctsiz", VX (4, 666), VX_MASK, PPCSPE, {RS, RB}},
1998{"evfststgt", VX (4, 668), VX_MASK, PPCSPE, {CRFD, RA, RB}},
1999{"evfststlt", VX (4, 669), VX_MASK, PPCSPE, {CRFD, RA, RB}},
2000{"evfststeq", VX (4, 670), VX_MASK, PPCSPE, {CRFD, RA, RB}},
2001{"efsadd", VX (4, 704), VX_MASK, PPCEFS, {RS, RA, RB}},
2002{"efssub", VX (4, 705), VX_MASK, PPCEFS, {RS, RA, RB}},
2003{"efsabs", VX (4, 708), VX_MASK, PPCEFS, {RS, RA}},
2004{"vsr", VX (4, 708), VX_MASK, PPCVEC, {VD, VA, VB}},
2005{"efsnabs", VX (4, 709), VX_MASK, PPCEFS, {RS, RA}},
2006{"efsneg", VX (4, 710), VX_MASK, PPCEFS, {RS, RA}},
2007{"vcmpgtfp", VXR(4, 710,0), VXR_MASK, PPCVEC, {VD, VA, VB}},
2008{"efsmul", VX (4, 712), VX_MASK, PPCEFS, {RS, RA, RB}},
2009{"efsdiv", VX (4, 713), VX_MASK, PPCEFS, {RS, RA, RB}},
2010{"vrfim", VX (4, 714), VX_MASK, PPCVEC, {VD, VB}},
2011{"efscmpgt", VX (4, 716), VX_MASK, PPCEFS, {CRFD, RA, RB}},
2012{"efscmplt", VX (4, 717), VX_MASK, PPCEFS, {CRFD, RA, RB}},
2013{"efscmpeq", VX (4, 718), VX_MASK, PPCEFS, {CRFD, RA, RB}},
2014{"vupklsh", VX (4, 718), VX_MASK, PPCVEC, {VD, VB}},
2015{"efscfd", VX (4, 719), VX_MASK, PPCEFS, {RS, RB}},
2016{"efscfui", VX (4, 720), VX_MASK, PPCEFS, {RS, RB}},
2017{"efscfsi", VX (4, 721), VX_MASK, PPCEFS, {RS, RB}},
2018{"efscfuf", VX (4, 722), VX_MASK, PPCEFS, {RS, RB}},
2019{"efscfsf", VX (4, 723), VX_MASK, PPCEFS, {RS, RB}},
2020{"efsctui", VX (4, 724), VX_MASK, PPCEFS, {RS, RB}},
2021{"efsctsi", VX (4, 725), VX_MASK, PPCEFS, {RS, RB}},
2022{"efsctuf", VX (4, 726), VX_MASK, PPCEFS, {RS, RB}},
2023{"efsctsf", VX (4, 727), VX_MASK, PPCEFS, {RS, RB}},
2024{"efsctuiz", VX (4, 728), VX_MASK, PPCEFS, {RS, RB}},
2025{"efsctsiz", VX (4, 730), VX_MASK, PPCEFS, {RS, RB}},
2026{"efststgt", VX (4, 732), VX_MASK, PPCEFS, {CRFD, RA, RB}},
2027{"efststlt", VX (4, 733), VX_MASK, PPCEFS, {CRFD, RA, RB}},
2028{"efststeq", VX (4, 734), VX_MASK, PPCEFS, {CRFD, RA, RB}},
2029{"efdadd", VX (4, 736), VX_MASK, PPCEFS, {RS, RA, RB}},
2030{"efdsub", VX (4, 737), VX_MASK, PPCEFS, {RS, RA, RB}},
2031{"efdcfuid", VX (4, 738), VX_MASK, PPCEFS, {RS, RB}},
2032{"efdcfsid", VX (4, 739), VX_MASK, PPCEFS, {RS, RB}},
2033{"efdabs", VX (4, 740), VX_MASK, PPCEFS, {RS, RA}},
2034{"efdnabs", VX (4, 741), VX_MASK, PPCEFS, {RS, RA}},
2035{"efdneg", VX (4, 742), VX_MASK, PPCEFS, {RS, RA}},
2036{"efdmul", VX (4, 744), VX_MASK, PPCEFS, {RS, RA, RB}},
2037{"efddiv", VX (4, 745), VX_MASK, PPCEFS, {RS, RA, RB}},
2038{"efdctuidz", VX (4, 746), VX_MASK, PPCEFS, {RS, RB}},
2039{"efdctsidz", VX (4, 747), VX_MASK, PPCEFS, {RS, RB}},
2040{"efdcmpgt", VX (4, 748), VX_MASK, PPCEFS, {CRFD, RA, RB}},
2041{"efdcmplt", VX (4, 749), VX_MASK, PPCEFS, {CRFD, RA, RB}},
2042{"efdcmpeq", VX (4, 750), VX_MASK, PPCEFS, {CRFD, RA, RB}},
2043{"efdcfs", VX (4, 751), VX_MASK, PPCEFS, {RS, RB}},
2044{"efdcfui", VX (4, 752), VX_MASK, PPCEFS, {RS, RB}},
2045{"efdcfsi", VX (4, 753), VX_MASK, PPCEFS, {RS, RB}},
2046{"efdcfuf", VX (4, 754), VX_MASK, PPCEFS, {RS, RB}},
2047{"efdcfsf", VX (4, 755), VX_MASK, PPCEFS, {RS, RB}},
2048{"efdctui", VX (4, 756), VX_MASK, PPCEFS, {RS, RB}},
2049{"efdctsi", VX (4, 757), VX_MASK, PPCEFS, {RS, RB}},
2050{"efdctuf", VX (4, 758), VX_MASK, PPCEFS, {RS, RB}},
2051{"efdctsf", VX (4, 759), VX_MASK, PPCEFS, {RS, RB}},
2052{"efdctuiz", VX (4, 760), VX_MASK, PPCEFS, {RS, RB}},
2053{"efdctsiz", VX (4, 762), VX_MASK, PPCEFS, {RS, RB}},
2054{"efdtstgt", VX (4, 764), VX_MASK, PPCEFS, {CRFD, RA, RB}},
2055{"efdtstlt", VX (4, 765), VX_MASK, PPCEFS, {CRFD, RA, RB}},
2056{"efdtsteq", VX (4, 766), VX_MASK, PPCEFS, {CRFD, RA, RB}},
2057{"evlddx", VX (4, 768), VX_MASK, PPCSPE, {RS, RA, RB}},
2058{"vaddsbs", VX (4, 768), VX_MASK, PPCVEC, {VD, VA, VB}},
2059{"evldd", VX (4, 769), VX_MASK, PPCSPE, {RS, EVUIMM_8, RA}},
2060{"evldwx", VX (4, 770), VX_MASK, PPCSPE, {RS, RA, RB}},
2061{"vminsb", VX (4, 770), VX_MASK, PPCVEC, {VD, VA, VB}},
2062{"evldw", VX (4, 771), VX_MASK, PPCSPE, {RS, EVUIMM_8, RA}},
2063{"evldhx", VX (4, 772), VX_MASK, PPCSPE, {RS, RA, RB}},
2064{"vsrab", VX (4, 772), VX_MASK, PPCVEC, {VD, VA, VB}},
2065{"evldh", VX (4, 773), VX_MASK, PPCSPE, {RS, EVUIMM_8, RA}},
2066{"vcmpgtsb", VXR(4, 774,0), VXR_MASK, PPCVEC, {VD, VA, VB}},
2067{"evlhhesplatx",VX (4, 776), VX_MASK, PPCSPE, {RS, RA, RB}},
2068{"vmulesb", VX (4, 776), VX_MASK, PPCVEC, {VD, VA, VB}},
2069{"evlhhesplat", VX (4, 777), VX_MASK, PPCSPE, {RS, EVUIMM_2, RA}},
2070{"vcfux", VX (4, 778), VX_MASK, PPCVEC, {VD, VB, UIMM}},
2071{"evlhhousplatx",VX(4, 780), VX_MASK, PPCSPE, {RS, RA, RB}},
2072{"vspltisb", VX (4, 780), VX_MASK, PPCVEC, {VD, SIMM}},
2073{"evlhhousplat",VX (4, 781), VX_MASK, PPCSPE, {RS, EVUIMM_2, RA}},
2074{"evlhhossplatx",VX(4, 782), VX_MASK, PPCSPE, {RS, RA, RB}},
2075{"vpkpx", VX (4, 782), VX_MASK, PPCVEC, {VD, VA, VB}},
2076{"evlhhossplat",VX (4, 783), VX_MASK, PPCSPE, {RS, EVUIMM_2, RA}},
2077{"mullhwu", XRC(4, 392,0), X_MASK, PPC405|PPC440, {RT, RA, RB}},
2078{"evlwhex", VX (4, 784), VX_MASK, PPCSPE, {RS, RA, RB}},
2079{"mullhwu.", XRC(4, 392,1), X_MASK, PPC405|PPC440, {RT, RA, RB}},
2080{"evlwhe", VX (4, 785), VX_MASK, PPCSPE, {RS, EVUIMM_4, RA}},
2081{"evlwhoux", VX (4, 788), VX_MASK, PPCSPE, {RS, RA, RB}},
2082{"evlwhou", VX (4, 789), VX_MASK, PPCSPE, {RS, EVUIMM_4, RA}},
2083{"evlwhosx", VX (4, 790), VX_MASK, PPCSPE, {RS, RA, RB}},
2084{"evlwhos", VX (4, 791), VX_MASK, PPCSPE, {RS, EVUIMM_4, RA}},
2085{"maclhwu", XO (4, 396,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2086{"evlwwsplatx", VX (4, 792), VX_MASK, PPCSPE, {RS, RA, RB}},
2087{"maclhwu.", XO (4, 396,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2088{"evlwwsplat", VX (4, 793), VX_MASK, PPCSPE, {RS, EVUIMM_4, RA}},
2089{"evlwhsplatx", VX (4, 796), VX_MASK, PPCSPE, {RS, RA, RB}},
2090{"evlwhsplat", VX (4, 797), VX_MASK, PPCSPE, {RS, EVUIMM_4, RA}},
2091{"evstddx", VX (4, 800), VX_MASK, PPCSPE, {RS, RA, RB}},
2092{"evstdd", VX (4, 801), VX_MASK, PPCSPE, {RS, EVUIMM_8, RA}},
2093{"evstdwx", VX (4, 802), VX_MASK, PPCSPE, {RS, RA, RB}},
2094{"evstdw", VX (4, 803), VX_MASK, PPCSPE, {RS, EVUIMM_8, RA}},
2095{"evstdhx", VX (4, 804), VX_MASK, PPCSPE, {RS, RA, RB}},
2096{"evstdh", VX (4, 805), VX_MASK, PPCSPE, {RS, EVUIMM_8, RA}},
2097{"evstwhex", VX (4, 816), VX_MASK, PPCSPE, {RS, RA, RB}},
2098{"evstwhe", VX (4, 817), VX_MASK, PPCSPE, {RS, EVUIMM_4, RA}},
2099{"evstwhox", VX (4, 820), VX_MASK, PPCSPE, {RS, RA, RB}},
2100{"evstwho", VX (4, 821), VX_MASK, PPCSPE, {RS, EVUIMM_4, RA}},
2101{"evstwwex", VX (4, 824), VX_MASK, PPCSPE, {RS, RA, RB}},
2102{"evstwwe", VX (4, 825), VX_MASK, PPCSPE, {RS, EVUIMM_4, RA}},
2103{"evstwwox", VX (4, 828), VX_MASK, PPCSPE, {RS, RA, RB}},
2104{"evstwwo", VX (4, 829), VX_MASK, PPCSPE, {RS, EVUIMM_4, RA}},
2105{"vaddshs", VX (4, 832), VX_MASK, PPCVEC, {VD, VA, VB}},
2106{"vminsh", VX (4, 834), VX_MASK, PPCVEC, {VD, VA, VB}},
2107{"vsrah", VX (4, 836), VX_MASK, PPCVEC, {VD, VA, VB}},
2108{"vcmpgtsh", VXR(4, 838,0), VXR_MASK, PPCVEC, {VD, VA, VB}},
2109{"vmulesh", VX (4, 840), VX_MASK, PPCVEC, {VD, VA, VB}},
2110{"vcfsx", VX (4, 842), VX_MASK, PPCVEC, {VD, VB, UIMM}},
2111{"vspltish", VX (4, 844), VX_MASK, PPCVEC, {VD, SIMM}},
2112{"vupkhpx", VX (4, 846), VX_MASK, PPCVEC, {VD, VB}},
2113{"mullhw", XRC(4, 424,0), X_MASK, PPC405|PPC440, {RT, RA, RB}},
2114{"mullhw.", XRC(4, 424,1), X_MASK, PPC405|PPC440, {RT, RA, RB}},
2115{"maclhw", XO (4, 428,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2116{"maclhw.", XO (4, 428,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2117{"nmaclhw", XO (4, 430,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2118{"nmaclhw.", XO (4, 430,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2119{"vaddsws", VX (4, 896), VX_MASK, PPCVEC, {VD, VA, VB}},
2120{"vminsw", VX (4, 898), VX_MASK, PPCVEC, {VD, VA, VB}},
2121{"vsraw", VX (4, 900), VX_MASK, PPCVEC, {VD, VA, VB}},
2122{"vcmpgtsw", VXR(4, 902,0), VXR_MASK, PPCVEC, {VD, VA, VB}},
2123{"vctuxs", VX (4, 906), VX_MASK, PPCVEC, {VD, VB, UIMM}},
2124{"vspltisw", VX (4, 908), VX_MASK, PPCVEC, {VD, SIMM}},
2125{"maclhwsu", XO (4, 460,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2126{"maclhwsu.", XO (4, 460,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2127{"vcmpbfp", VXR(4, 966,0), VXR_MASK, PPCVEC, {VD, VA, VB}},
2128{"vctsxs", VX (4, 970), VX_MASK, PPCVEC, {VD, VB, UIMM}},
2129{"vupklpx", VX (4, 974), VX_MASK, PPCVEC, {VD, VB}},
2130{"maclhws", XO (4, 492,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2131{"maclhws.", XO (4, 492,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2132{"nmaclhws", XO (4, 494,0,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2133{"nmaclhws.", XO (4, 494,0,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2134{"vsububm", VX (4,1024), VX_MASK, PPCVEC, {VD, VA, VB}},
2135{"vavgub", VX (4,1026), VX_MASK, PPCVEC, {VD, VA, VB}},
2136{"evmhessf", VX (4,1027), VX_MASK, PPCSPE, {RS, RA, RB}},
2137{"vand", VX (4,1028), VX_MASK, PPCVEC, {VD, VA, VB}},
2138{"vcmpequb.", VXR(4, 6,1), VXR_MASK, PPCVEC, {VD, VA, VB}},
2139{"evmhossf", VX (4,1031), VX_MASK, PPCSPE, {RS, RA, RB}},
2140{"evmheumi", VX (4,1032), VX_MASK, PPCSPE, {RS, RA, RB}},
2141{"evmhesmi", VX (4,1033), VX_MASK, PPCSPE, {RS, RA, RB}},
2142{"vmaxfp", VX (4,1034), VX_MASK, PPCVEC, {VD, VA, VB}},
2143{"evmhesmf", VX (4,1035), VX_MASK, PPCSPE, {RS, RA, RB}},
2144{"evmhoumi", VX (4,1036), VX_MASK, PPCSPE, {RS, RA, RB}},
2145{"vslo", VX (4,1036), VX_MASK, PPCVEC, {VD, VA, VB}},
2146{"evmhosmi", VX (4,1037), VX_MASK, PPCSPE, {RS, RA, RB}},
2147{"evmhosmf", VX (4,1039), VX_MASK, PPCSPE, {RS, RA, RB}},
2148{"machhwuo", XO (4, 12,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2149{"machhwuo.", XO (4, 12,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2150{"ps_merge00", XOPS(4,528,0), XOPS_MASK, PPCPS, {FRT, FRA, FRB}},
2151{"ps_merge00.", XOPS(4,528,1), XOPS_MASK, PPCPS, {FRT, FRA, FRB}},
2152{"evmhessfa", VX (4,1059), VX_MASK, PPCSPE, {RS, RA, RB}},
2153{"evmhossfa", VX (4,1063), VX_MASK, PPCSPE, {RS, RA, RB}},
2154{"evmheumia", VX (4,1064), VX_MASK, PPCSPE, {RS, RA, RB}},
2155{"evmhesmia", VX (4,1065), VX_MASK, PPCSPE, {RS, RA, RB}},
2156{"evmhesmfa", VX (4,1067), VX_MASK, PPCSPE, {RS, RA, RB}},
2157{"evmhoumia", VX (4,1068), VX_MASK, PPCSPE, {RS, RA, RB}},
2158{"evmhosmia", VX (4,1069), VX_MASK, PPCSPE, {RS, RA, RB}},
2159{"evmhosmfa", VX (4,1071), VX_MASK, PPCSPE, {RS, RA, RB}},
2160{"vsubuhm", VX (4,1088), VX_MASK, PPCVEC, {VD, VA, VB}},
2161{"vavguh", VX (4,1090), VX_MASK, PPCVEC, {VD, VA, VB}},
2162{"vandc", VX (4,1092), VX_MASK, PPCVEC, {VD, VA, VB}},
2163{"vcmpequh.", VXR(4, 70,1), VXR_MASK, PPCVEC, {VD, VA, VB}},
2164{"evmwhssf", VX (4,1095), VX_MASK, PPCSPE, {RS, RA, RB}},
2165{"evmwlumi", VX (4,1096), VX_MASK, PPCSPE, {RS, RA, RB}},
2166{"vminfp", VX (4,1098), VX_MASK, PPCVEC, {VD, VA, VB}},
2167{"evmwhumi", VX (4,1100), VX_MASK, PPCSPE, {RS, RA, RB}},
2168{"vsro", VX (4,1100), VX_MASK, PPCVEC, {VD, VA, VB}},
2169{"evmwhsmi", VX (4,1101), VX_MASK, PPCSPE, {RS, RA, RB}},
2170{"evmwhsmf", VX (4,1103), VX_MASK, PPCSPE, {RS, RA, RB}},
2171{"evmwssf", VX (4,1107), VX_MASK, PPCSPE, {RS, RA, RB}},
2172{"machhwo", XO (4, 44,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2173{"evmwumi", VX (4,1112), VX_MASK, PPCSPE, {RS, RA, RB}},
2174{"machhwo.", XO (4, 44,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2175{"evmwsmi", VX (4,1113), VX_MASK, PPCSPE, {RS, RA, RB}},
2176{"evmwsmf", VX (4,1115), VX_MASK, PPCSPE, {RS, RA, RB}},
2177{"nmachhwo", XO (4, 46,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2178{"nmachhwo.", XO (4, 46,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2179{"ps_merge01", XOPS(4,560,0), XOPS_MASK, PPCPS, {FRT, FRA, FRB}},
2180{"ps_merge01.", XOPS(4,560,1), XOPS_MASK, PPCPS, {FRT, FRA, FRB}},
2181{"evmwhssfa", VX (4,1127), VX_MASK, PPCSPE, {RS, RA, RB}},
2182{"evmwlumia", VX (4,1128), VX_MASK, PPCSPE, {RS, RA, RB}},
2183{"evmwhumia", VX (4,1132), VX_MASK, PPCSPE, {RS, RA, RB}},
2184{"evmwhsmia", VX (4,1133), VX_MASK, PPCSPE, {RS, RA, RB}},
2185{"evmwhsmfa", VX (4,1135), VX_MASK, PPCSPE, {RS, RA, RB}},
2186{"evmwssfa", VX (4,1139), VX_MASK, PPCSPE, {RS, RA, RB}},
2187{"evmwumia", VX (4,1144), VX_MASK, PPCSPE, {RS, RA, RB}},
2188{"evmwsmia", VX (4,1145), VX_MASK, PPCSPE, {RS, RA, RB}},
2189{"evmwsmfa", VX (4,1147), VX_MASK, PPCSPE, {RS, RA, RB}},
2190{"vsubuwm", VX (4,1152), VX_MASK, PPCVEC, {VD, VA, VB}},
2191{"vavguw", VX (4,1154), VX_MASK, PPCVEC, {VD, VA, VB}},
2192{"vor", VX (4,1156), VX_MASK, PPCVEC, {VD, VA, VB}},
2193{"vcmpequw.", VXR(4, 134,1), VXR_MASK, PPCVEC, {VD, VA, VB}},
2194{"machhwsuo", XO (4, 76,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2195{"machhwsuo.", XO (4, 76,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2196{"ps_merge10", XOPS(4,592,0), XOPS_MASK, PPCPS, {FRT, FRA, FRB}},
2197{"ps_merge10.", XOPS(4,592,1), XOPS_MASK, PPCPS, {FRT, FRA, FRB}},
2198{"evaddusiaaw", VX (4,1216), VX_MASK, PPCSPE, {RS, RA}},
2199{"evaddssiaaw", VX (4,1217), VX_MASK, PPCSPE, {RS, RA}},
2200{"evsubfusiaaw",VX (4,1218), VX_MASK, PPCSPE, {RS, RA}},
2201{"evsubfssiaaw",VX (4,1219), VX_MASK, PPCSPE, {RS, RA}},
2202{"evmra", VX (4,1220), VX_MASK, PPCSPE, {RS, RA}},
2203{"vxor", VX (4,1220), VX_MASK, PPCVEC, {VD, VA, VB}},
2204{"evdivws", VX (4,1222), VX_MASK, PPCSPE, {RS, RA, RB}},
2205{"vcmpeqfp.", VXR(4, 198,1), VXR_MASK, PPCVEC, {VD, VA, VB}},
2206{"evdivwu", VX (4,1223), VX_MASK, PPCSPE, {RS, RA, RB}},
2207{"evaddumiaaw", VX (4,1224), VX_MASK, PPCSPE, {RS, RA}},
2208{"evaddsmiaaw", VX (4,1225), VX_MASK, PPCSPE, {RS, RA}},
2209{"evsubfumiaaw",VX (4,1226), VX_MASK, PPCSPE, {RS, RA}},
2210{"evsubfsmiaaw",VX (4,1227), VX_MASK, PPCSPE, {RS, RA}},
2211{"machhwso", XO (4, 108,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2212{"machhwso.", XO (4, 108,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2213{"nmachhwso", XO (4, 110,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2214{"nmachhwso.", XO (4, 110,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2215{"ps_merge11", XOPS(4,624,0), XOPS_MASK, PPCPS, {FRT, FRA, FRB}},
2216{"ps_merge11.", XOPS(4,624,1), XOPS_MASK, PPCPS, {FRT, FRA, FRB}},
2217{"evmheusiaaw", VX (4,1280), VX_MASK, PPCSPE, {RS, RA, RB}},
2218{"evmhessiaaw", VX (4,1281), VX_MASK, PPCSPE, {RS, RA, RB}},
2219{"vavgsb", VX (4,1282), VX_MASK, PPCVEC, {VD, VA, VB}},
2220{"evmhessfaaw", VX (4,1283), VX_MASK, PPCSPE, {RS, RA, RB}},
2221{"evmhousiaaw", VX (4,1284), VX_MASK, PPCSPE, {RS, RA, RB}},
2222{"vnor", VX (4,1284), VX_MASK, PPCVEC, {VD, VA, VB}},
2223{"evmhossiaaw", VX (4,1285), VX_MASK, PPCSPE, {RS, RA, RB}},
2224{"evmhossfaaw", VX (4,1287), VX_MASK, PPCSPE, {RS, RA, RB}},
2225{"evmheumiaaw", VX (4,1288), VX_MASK, PPCSPE, {RS, RA, RB}},
2226{"evmhesmiaaw", VX (4,1289), VX_MASK, PPCSPE, {RS, RA, RB}},
2227{"evmhesmfaaw", VX (4,1291), VX_MASK, PPCSPE, {RS, RA, RB}},
2228{"evmhoumiaaw", VX (4,1292), VX_MASK, PPCSPE, {RS, RA, RB}},
2229{"evmhosmiaaw", VX (4,1293), VX_MASK, PPCSPE, {RS, RA, RB}},
2230{"evmhosmfaaw", VX (4,1295), VX_MASK, PPCSPE, {RS, RA, RB}},
2231{"macchwuo", XO (4, 140,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2232{"macchwuo.", XO (4, 140,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2233{"evmhegumiaa", VX (4,1320), VX_MASK, PPCSPE, {RS, RA, RB}},
2234{"evmhegsmiaa", VX (4,1321), VX_MASK, PPCSPE, {RS, RA, RB}},
2235{"evmhegsmfaa", VX (4,1323), VX_MASK, PPCSPE, {RS, RA, RB}},
2236{"evmhogumiaa", VX (4,1324), VX_MASK, PPCSPE, {RS, RA, RB}},
2237{"evmhogsmiaa", VX (4,1325), VX_MASK, PPCSPE, {RS, RA, RB}},
2238{"evmhogsmfaa", VX (4,1327), VX_MASK, PPCSPE, {RS, RA, RB}},
2239{"evmwlusiaaw", VX (4,1344), VX_MASK, PPCSPE, {RS, RA, RB}},
2240{"evmwlssiaaw", VX (4,1345), VX_MASK, PPCSPE, {RS, RA, RB}},
2241{"vavgsh", VX (4,1346), VX_MASK, PPCVEC, {VD, VA, VB}},
2242{"evmwlumiaaw", VX (4,1352), VX_MASK, PPCSPE, {RS, RA, RB}},
2243{"evmwlsmiaaw", VX (4,1353), VX_MASK, PPCSPE, {RS, RA, RB}},
2244{"evmwssfaa", VX (4,1363), VX_MASK, PPCSPE, {RS, RA, RB}},
2245{"macchwo", XO (4, 172,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2246{"evmwumiaa", VX (4,1368), VX_MASK, PPCSPE, {RS, RA, RB}},
2247{"macchwo.", XO (4, 172,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2248{"evmwsmiaa", VX (4,1369), VX_MASK, PPCSPE, {RS, RA, RB}},
2249{"evmwsmfaa", VX (4,1371), VX_MASK, PPCSPE, {RS, RA, RB}},
2250{"nmacchwo", XO (4, 174,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2251{"nmacchwo.", XO (4, 174,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2252{"evmheusianw", VX (4,1408), VX_MASK, PPCSPE, {RS, RA, RB}},
2253{"vsubcuw", VX (4,1408), VX_MASK, PPCVEC, {VD, VA, VB}},
2254{"evmhessianw", VX (4,1409), VX_MASK, PPCSPE, {RS, RA, RB}},
2255{"vavgsw", VX (4,1410), VX_MASK, PPCVEC, {VD, VA, VB}},
2256{"evmhessfanw", VX (4,1411), VX_MASK, PPCSPE, {RS, RA, RB}},
2257{"evmhousianw", VX (4,1412), VX_MASK, PPCSPE, {RS, RA, RB}},
2258{"evmhossianw", VX (4,1413), VX_MASK, PPCSPE, {RS, RA, RB}},
2259{"evmhossfanw", VX (4,1415), VX_MASK, PPCSPE, {RS, RA, RB}},
2260{"evmheumianw", VX (4,1416), VX_MASK, PPCSPE, {RS, RA, RB}},
2261{"evmhesmianw", VX (4,1417), VX_MASK, PPCSPE, {RS, RA, RB}},
2262{"evmhesmfanw", VX (4,1419), VX_MASK, PPCSPE, {RS, RA, RB}},
2263{"evmhoumianw", VX (4,1420), VX_MASK, PPCSPE, {RS, RA, RB}},
2264{"evmhosmianw", VX (4,1421), VX_MASK, PPCSPE, {RS, RA, RB}},
2265{"evmhosmfanw", VX (4,1423), VX_MASK, PPCSPE, {RS, RA, RB}},
2266{"macchwsuo", XO (4, 204,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2267{"macchwsuo.", XO (4, 204,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2268{"evmhegumian", VX (4,1448), VX_MASK, PPCSPE, {RS, RA, RB}},
2269{"evmhegsmian", VX (4,1449), VX_MASK, PPCSPE, {RS, RA, RB}},
2270{"evmhegsmfan", VX (4,1451), VX_MASK, PPCSPE, {RS, RA, RB}},
2271{"evmhogumian", VX (4,1452), VX_MASK, PPCSPE, {RS, RA, RB}},
2272{"evmhogsmian", VX (4,1453), VX_MASK, PPCSPE, {RS, RA, RB}},
2273{"evmhogsmfan", VX (4,1455), VX_MASK, PPCSPE, {RS, RA, RB}},
2274{"evmwlusianw", VX (4,1472), VX_MASK, PPCSPE, {RS, RA, RB}},
2275{"evmwlssianw", VX (4,1473), VX_MASK, PPCSPE, {RS, RA, RB}},
2276{"vcmpgefp.", VXR(4, 454,1), VXR_MASK, PPCVEC, {VD, VA, VB}},
2277{"evmwlumianw", VX (4,1480), VX_MASK, PPCSPE, {RS, RA, RB}},
2278{"evmwlsmianw", VX (4,1481), VX_MASK, PPCSPE, {RS, RA, RB}},
2279{"evmwssfan", VX (4,1491), VX_MASK, PPCSPE, {RS, RA, RB}},
2280{"macchwso", XO (4, 236,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2281{"evmwumian", VX (4,1496), VX_MASK, PPCSPE, {RS, RA, RB}},
2282{"macchwso.", XO (4, 236,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2283{"evmwsmian", VX (4,1497), VX_MASK, PPCSPE, {RS, RA, RB}},
2284{"evmwsmfan", VX (4,1499), VX_MASK, PPCSPE, {RS, RA, RB}},
2285{"nmacchwso", XO (4, 238,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2286{"nmacchwso.", XO (4, 238,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2287{"vsububs", VX (4,1536), VX_MASK, PPCVEC, {VD, VA, VB}},
2288{"mfvscr", VX (4,1540), VX_MASK, PPCVEC, {VD}},
2289{"vcmpgtub.", VXR(4, 518,1), VXR_MASK, PPCVEC, {VD, VA, VB}},
2290{"vsum4ubs", VX (4,1544), VX_MASK, PPCVEC, {VD, VA, VB}},
2291{"vsubuhs", VX (4,1600), VX_MASK, PPCVEC, {VD, VA, VB}},
2292{"mtvscr", VX (4,1604), VX_MASK, PPCVEC, {VB}},
2293{"vcmpgtuh.", VXR(4, 582,1), VXR_MASK, PPCVEC, {VD, VA, VB}},
2294{"vsum4shs", VX (4,1608), VX_MASK, PPCVEC, {VD, VA, VB}},
2295{"vsubuws", VX (4,1664), VX_MASK, PPCVEC, {VD, VA, VB}},
2296{"vcmpgtuw.", VXR(4, 646,1), VXR_MASK, PPCVEC, {VD, VA, VB}},
2297{"vsum2sws", VX (4,1672), VX_MASK, PPCVEC, {VD, VA, VB}},
2298{"vcmpgtfp.", VXR(4, 710,1), VXR_MASK, PPCVEC, {VD, VA, VB}},
2299{"vsubsbs", VX (4,1792), VX_MASK, PPCVEC, {VD, VA, VB}},
2300{"vcmpgtsb.", VXR(4, 774,1), VXR_MASK, PPCVEC, {VD, VA, VB}},
2301{"vsum4sbs", VX (4,1800), VX_MASK, PPCVEC, {VD, VA, VB}},
2302{"maclhwuo", XO (4, 396,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2303{"maclhwuo.", XO (4, 396,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2304{"vsubshs", VX (4,1856), VX_MASK, PPCVEC, {VD, VA, VB}},
2305{"vcmpgtsh.", VXR(4, 838,1), VXR_MASK, PPCVEC, {VD, VA, VB}},
2306{"maclhwo", XO (4, 428,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2307{"maclhwo.", XO (4, 428,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2308{"nmaclhwo", XO (4, 430,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2309{"nmaclhwo.", XO (4, 430,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2310{"vsubsws", VX (4,1920), VX_MASK, PPCVEC, {VD, VA, VB}},
2311{"vcmpgtsw.", VXR(4, 902,1), VXR_MASK, PPCVEC, {VD, VA, VB}},
2312{"vsumsws", VX (4,1928), VX_MASK, PPCVEC, {VD, VA, VB}},
2313{"maclhwsuo", XO (4, 460,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2314{"maclhwsuo.", XO (4, 460,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2315{"vcmpbfp.", VXR(4, 966,1), VXR_MASK, PPCVEC, {VD, VA, VB}},
2316{"maclhwso", XO (4, 492,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2317{"maclhwso.", XO (4, 492,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2318{"nmaclhwso", XO (4, 494,1,0),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2319{"nmaclhwso.", XO (4, 494,1,1),XO_MASK, PPC405|PPC440, {RT, RA, RB}},
2320{"dcbz_l", X (4,1014), XRT_MASK, PPCPS, {RA, RB}},
2321
2322{"mulli", OP(7), OP_MASK, PPCCOM, {RT, RA, SI}},
2323{"muli", OP(7), OP_MASK, PWRCOM, {RT, RA, SI}},
2324
2325{"subfic", OP(8), OP_MASK, PPCCOM, {RT, RA, SI}},
2326{"sfi", OP(8), OP_MASK, PWRCOM, {RT, RA, SI}},
2327
2328{"dozi", OP(9), OP_MASK, M601, {RT, RA, SI}},
2329
2330{"bce", B(9,0,0), B_MASK, BOOKE64, {BO, BI, BD}},
2331{"bcel", B(9,0,1), B_MASK, BOOKE64, {BO, BI, BD}},
2332{"bcea", B(9,1,0), B_MASK, BOOKE64, {BO, BI, BDA}},
2333{"bcela", B(9,1,1), B_MASK, BOOKE64, {BO, BI, BDA}},
2334
2335{"cmplwi", OPL(10,0), OPL_MASK, PPCCOM, {OBF, RA, UI}},
2336{"cmpldi", OPL(10,1), OPL_MASK, PPC64, {OBF, RA, UI}},
2337{"cmpli", OP(10), OP_MASK, PPC, {BF, L, RA, UI}},
2338{"cmpli", OP(10), OP_MASK, PWRCOM, {BF, RA, UI}},
2339
2340{"cmpwi", OPL(11,0), OPL_MASK, PPCCOM, {OBF, RA, SI}},
2341{"cmpdi", OPL(11,1), OPL_MASK, PPC64, {OBF, RA, SI}},
2342{"cmpi", OP(11), OP_MASK, PPC, {BF, L, RA, SI}},
2343{"cmpi", OP(11), OP_MASK, PWRCOM, {BF, RA, SI}},
2344
2345{"addic", OP(12), OP_MASK, PPCCOM, {RT, RA, SI}},
2346{"ai", OP(12), OP_MASK, PWRCOM, {RT, RA, SI}},
2347{"subic", OP(12), OP_MASK, PPCCOM, {RT, RA, NSI}},
2348
2349{"addic.", OP(13), OP_MASK, PPCCOM, {RT, RA, SI}},
2350{"ai.", OP(13), OP_MASK, PWRCOM, {RT, RA, SI}},
2351{"subic.", OP(13), OP_MASK, PPCCOM, {RT, RA, NSI}},
2352
2353{"li", OP(14), DRA_MASK, PPCCOM, {RT, SI}},
2354{"lil", OP(14), DRA_MASK, PWRCOM, {RT, SI}},
2355{"addi", OP(14), OP_MASK, PPCCOM, {RT, RA0, SI}},
2356{"cal", OP(14), OP_MASK, PWRCOM, {RT, D, RA0}},
2357{"subi", OP(14), OP_MASK, PPCCOM, {RT, RA0, NSI}},
2358{"la", OP(14), OP_MASK, PPCCOM, {RT, D, RA0}},
2359
2360{"lis", OP(15), DRA_MASK, PPCCOM, {RT, SISIGNOPT}},
2361{"liu", OP(15), DRA_MASK, PWRCOM, {RT, SISIGNOPT}},
2362{"addis", OP(15), OP_MASK, PPCCOM, {RT, RA0, SISIGNOPT}},
2363{"cau", OP(15), OP_MASK, PWRCOM, {RT, RA0, SISIGNOPT}},
2364{"subis", OP(15), OP_MASK, PPCCOM, {RT, RA0, NSI}},
2365
2366{"bdnz-", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, {BDM}},
2367{"bdnz+", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, {BDP}},
2368{"bdnz", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, {BD}},
2369{"bdn", BBO(16,BODNZ,0,0), BBOATBI_MASK, PWRCOM, {BD}},
2370{"bdnzl-", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, {BDM}},
2371{"bdnzl+", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, {BDP}},
2372{"bdnzl", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, {BD}},
2373{"bdnl", BBO(16,BODNZ,0,1), BBOATBI_MASK, PWRCOM, {BD}},
2374{"bdnza-", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, {BDMA}},
2375{"bdnza+", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, {BDPA}},
2376{"bdnza", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, {BDA}},
2377{"bdna", BBO(16,BODNZ,1,0), BBOATBI_MASK, PWRCOM, {BDA}},
2378{"bdnzla-", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, {BDMA}},
2379{"bdnzla+", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, {BDPA}},
2380{"bdnzla", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, {BDA}},
2381{"bdnla", BBO(16,BODNZ,1,1), BBOATBI_MASK, PWRCOM, {BDA}},
2382{"bdz-", BBO(16,BODZ,0,0), BBOATBI_MASK, PPCCOM, {BDM}},
2383{"bdz+", BBO(16,BODZ,0,0), BBOATBI_MASK, PPCCOM, {BDP}},
2384{"bdz", BBO(16,BODZ,0,0), BBOATBI_MASK, COM, {BD}},
2385{"bdzl-", BBO(16,BODZ,0,1), BBOATBI_MASK, PPCCOM, {BDM}},
2386{"bdzl+", BBO(16,BODZ,0,1), BBOATBI_MASK, PPCCOM, {BDP}},
2387{"bdzl", BBO(16,BODZ,0,1), BBOATBI_MASK, COM, {BD}},
2388{"bdza-", BBO(16,BODZ,1,0), BBOATBI_MASK, PPCCOM, {BDMA}},
2389{"bdza+", BBO(16,BODZ,1,0), BBOATBI_MASK, PPCCOM, {BDPA}},
2390{"bdza", BBO(16,BODZ,1,0), BBOATBI_MASK, COM, {BDA}},
2391{"bdzla-", BBO(16,BODZ,1,1), BBOATBI_MASK, PPCCOM, {BDMA}},
2392{"bdzla+", BBO(16,BODZ,1,1), BBOATBI_MASK, PPCCOM, {BDPA}},
2393{"bdzla", BBO(16,BODZ,1,1), BBOATBI_MASK, COM, {BDA}},
2394
2395{"bge-", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, {CR, BDM}},
2396{"bge+", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, {CR, BDP}},
2397{"bge", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, COM, {CR, BD}},
2398{"bnl-", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, {CR, BDM}},
2399{"bnl+", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, {CR, BDP}},
2400{"bnl", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, COM, {CR, BD}},
2401{"bgel-", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, {CR, BDM}},
2402{"bgel+", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, {CR, BDP}},
2403{"bgel", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, COM, {CR, BD}},
2404{"bnll-", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, {CR, BDM}},
2405{"bnll+", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, {CR, BDP}},
2406{"bnll", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, COM, {CR, BD}},
2407{"bgea-", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
2408{"bgea+", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
2409{"bgea", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, COM, {CR, BDA}},
2410{"bnla-", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
2411{"bnla+", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
2412{"bnla", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, COM, {CR, BDA}},
2413{"bgela-", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
2414{"bgela+", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
2415{"bgela", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, COM, {CR, BDA}},
2416{"bnlla-", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
2417{"bnlla+", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
2418{"bnlla", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, COM, {CR, BDA}},
2419{"ble-", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, {CR, BDM}},
2420{"ble+", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, {CR, BDP}},
2421{"ble", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, COM, {CR, BD}},
2422{"bng-", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, {CR, BDM}},
2423{"bng+", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, {CR, BDP}},
2424{"bng", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, COM, {CR, BD}},
2425{"blel-", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, {CR, BDM}},
2426{"blel+", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, {CR, BDP}},
2427{"blel", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, COM, {CR, BD}},
2428{"bngl-", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, {CR, BDM}},
2429{"bngl+", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, {CR, BDP}},
2430{"bngl", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, COM, {CR, BD}},
2431{"blea-", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
2432{"blea+", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
2433{"blea", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, COM, {CR, BDA}},
2434{"bnga-", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
2435{"bnga+", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
2436{"bnga", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, COM, {CR, BDA}},
2437{"blela-", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
2438{"blela+", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
2439{"blela", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, COM, {CR, BDA}},
2440{"bngla-", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
2441{"bngla+", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
2442{"bngla", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, COM, {CR, BDA}},
2443{"bne-", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, PPCCOM, {CR, BDM}},
2444{"bne+", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, PPCCOM, {CR, BDP}},
2445{"bne", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, COM, {CR, BD}},
2446{"bnel-", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, PPCCOM, {CR, BDM}},
2447{"bnel+", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, PPCCOM, {CR, BDP}},
2448{"bnel", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, COM, {CR, BD}},
2449{"bnea-", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
2450{"bnea+", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
2451{"bnea", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, COM, {CR, BDA}},
2452{"bnela-", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
2453{"bnela+", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
2454{"bnela", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, COM, {CR, BDA}},
2455{"bns-", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, {CR, BDM}},
2456{"bns+", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, {CR, BDP}},
2457{"bns", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, COM, {CR, BD}},
2458{"bnu-", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, {CR, BDM}},
2459{"bnu+", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, {CR, BDP}},
2460{"bnu", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, {CR, BD}},
2461{"bnsl-", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, {CR, BDM}},
2462{"bnsl+", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, {CR, BDP}},
2463{"bnsl", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, COM, {CR, BD}},
2464{"bnul-", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, {CR, BDM}},
2465{"bnul+", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, {CR, BDP}},
2466{"bnul", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, {CR, BD}},
2467{"bnsa-", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
2468{"bnsa+", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
2469{"bnsa", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, COM, {CR, BDA}},
2470{"bnua-", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
2471{"bnua+", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
2472{"bnua", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, {CR, BDA}},
2473{"bnsla-", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
2474{"bnsla+", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
2475{"bnsla", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, COM, {CR, BDA}},
2476{"bnula-", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
2477{"bnula+", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
2478{"bnula", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, {CR, BDA}},
2479
2480{"blt-", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, PPCCOM, {CR, BDM}},
2481{"blt+", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, PPCCOM, {CR, BDP}},
2482{"blt", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, COM, {CR, BD}},
2483{"bltl-", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, PPCCOM, {CR, BDM}},
2484{"bltl+", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, PPCCOM, {CR, BDP}},
2485{"bltl", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, COM, {CR, BD}},
2486{"blta-", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
2487{"blta+", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
2488{"blta", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, COM, {CR, BDA}},
2489{"bltla-", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
2490{"bltla+", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
2491{"bltla", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, COM, {CR, BDA}},
2492{"bgt-", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, PPCCOM, {CR, BDM}},
2493{"bgt+", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, PPCCOM, {CR, BDP}},
2494{"bgt", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, COM, {CR, BD}},
2495{"bgtl-", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, PPCCOM, {CR, BDM}},
2496{"bgtl+", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, PPCCOM, {CR, BDP}},
2497{"bgtl", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, COM, {CR, BD}},
2498{"bgta-", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
2499{"bgta+", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
2500{"bgta", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, COM, {CR, BDA}},
2501{"bgtla-", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
2502{"bgtla+", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
2503{"bgtla", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, COM, {CR, BDA}},
2504{"beq-", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, PPCCOM, {CR, BDM}},
2505{"beq+", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, PPCCOM, {CR, BDP}},
2506{"beq", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, COM, {CR, BD}},
2507{"beql-", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, PPCCOM, {CR, BDM}},
2508{"beql+", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, PPCCOM, {CR, BDP}},
2509{"beql", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, COM, {CR, BD}},
2510{"beqa-", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
2511{"beqa+", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
2512{"beqa", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, COM, {CR, BDA}},
2513{"beqla-", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
2514{"beqla+", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
2515{"beqla", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, COM, {CR, BDA}},
2516{"bso-", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, {CR, BDM}},
2517{"bso+", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, {CR, BDP}},
2518{"bso", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, COM, {CR, BD}},
2519{"bun-", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, {CR, BDM}},
2520{"bun+", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, {CR, BDP}},
2521{"bun", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, {CR, BD}},
2522{"bsol-", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, {CR, BDM}},
2523{"bsol+", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, {CR, BDP}},
2524{"bsol", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, COM, {CR, BD}},
2525{"bunl-", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, {CR, BDM}},
2526{"bunl+", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, {CR, BDP}},
2527{"bunl", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, {CR, BD}},
2528{"bsoa-", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
2529{"bsoa+", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
2530{"bsoa", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, COM, {CR, BDA}},
2531{"buna-", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
2532{"buna+", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
2533{"buna", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, {CR, BDA}},
2534{"bsola-", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
2535{"bsola+", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
2536{"bsola", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, COM, {CR, BDA}},
2537{"bunla-", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, {CR, BDMA}},
2538{"bunla+", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, {CR, BDPA}},
2539{"bunla", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, {CR, BDA}},
2540
2541{"bdnzf-", BBO(16,BODNZF,0,0), BBOY_MASK, NOPOWER4, {BI, BDM}},
2542{"bdnzf+", BBO(16,BODNZF,0,0), BBOY_MASK, NOPOWER4, {BI, BDP}},
2543{"bdnzf", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, {BI, BD}},
2544{"bdnzfl-", BBO(16,BODNZF,0,1), BBOY_MASK, NOPOWER4, {BI, BDM}},
2545{"bdnzfl+", BBO(16,BODNZF,0,1), BBOY_MASK, NOPOWER4, {BI, BDP}},
2546{"bdnzfl", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, {BI, BD}},
2547{"bdnzfa-", BBO(16,BODNZF,1,0), BBOY_MASK, NOPOWER4, {BI, BDMA}},
2548{"bdnzfa+", BBO(16,BODNZF,1,0), BBOY_MASK, NOPOWER4, {BI, BDPA}},
2549{"bdnzfa", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, {BI, BDA}},
2550{"bdnzfla-", BBO(16,BODNZF,1,1), BBOY_MASK, NOPOWER4, {BI, BDMA}},
2551{"bdnzfla+", BBO(16,BODNZF,1,1), BBOY_MASK, NOPOWER4, {BI, BDPA}},
2552{"bdnzfla", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, {BI, BDA}},
2553{"bdzf-", BBO(16,BODZF,0,0), BBOY_MASK, NOPOWER4, {BI, BDM}},
2554{"bdzf+", BBO(16,BODZF,0,0), BBOY_MASK, NOPOWER4, {BI, BDP}},
2555{"bdzf", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, {BI, BD}},
2556{"bdzfl-", BBO(16,BODZF,0,1), BBOY_MASK, NOPOWER4, {BI, BDM}},
2557{"bdzfl+", BBO(16,BODZF,0,1), BBOY_MASK, NOPOWER4, {BI, BDP}},
2558{"bdzfl", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, {BI, BD}},
2559{"bdzfa-", BBO(16,BODZF,1,0), BBOY_MASK, NOPOWER4, {BI, BDMA}},
2560{"bdzfa+", BBO(16,BODZF,1,0), BBOY_MASK, NOPOWER4, {BI, BDPA}},
2561{"bdzfa", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, {BI, BDA}},
2562{"bdzfla-", BBO(16,BODZF,1,1), BBOY_MASK, NOPOWER4, {BI, BDMA}},
2563{"bdzfla+", BBO(16,BODZF,1,1), BBOY_MASK, NOPOWER4, {BI, BDPA}},
2564{"bdzfla", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, {BI, BDA}},
2565
2566{"bf-", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, {BI, BDM}},
2567{"bf+", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, {BI, BDP}},
2568{"bf", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, {BI, BD}},
2569{"bbf", BBO(16,BOF,0,0), BBOAT_MASK, PWRCOM, {BI, BD}},
2570{"bfl-", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, {BI, BDM}},
2571{"bfl+", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, {BI, BDP}},
2572{"bfl", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, {BI, BD}},
2573{"bbfl", BBO(16,BOF,0,1), BBOAT_MASK, PWRCOM, {BI, BD}},
2574{"bfa-", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, {BI, BDMA}},
2575{"bfa+", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, {BI, BDPA}},
2576{"bfa", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, {BI, BDA}},
2577{"bbfa", BBO(16,BOF,1,0), BBOAT_MASK, PWRCOM, {BI, BDA}},
2578{"bfla-", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, {BI, BDMA}},
2579{"bfla+", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, {BI, BDPA}},
2580{"bfla", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, {BI, BDA}},
2581{"bbfla", BBO(16,BOF,1,1), BBOAT_MASK, PWRCOM, {BI, BDA}},
2582
2583{"bdnzt-", BBO(16,BODNZT,0,0), BBOY_MASK, NOPOWER4, {BI, BDM}},
2584{"bdnzt+", BBO(16,BODNZT,0,0), BBOY_MASK, NOPOWER4, {BI, BDP}},
2585{"bdnzt", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, {BI, BD}},
2586{"bdnztl-", BBO(16,BODNZT,0,1), BBOY_MASK, NOPOWER4, {BI, BDM}},
2587{"bdnztl+", BBO(16,BODNZT,0,1), BBOY_MASK, NOPOWER4, {BI, BDP}},
2588{"bdnztl", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, {BI, BD}},
2589{"bdnzta-", BBO(16,BODNZT,1,0), BBOY_MASK, NOPOWER4, {BI, BDMA}},
2590{"bdnzta+", BBO(16,BODNZT,1,0), BBOY_MASK, NOPOWER4, {BI, BDPA}},
2591{"bdnzta", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, {BI, BDA}},
2592{"bdnztla-", BBO(16,BODNZT,1,1), BBOY_MASK, NOPOWER4, {BI, BDMA}},
2593{"bdnztla+", BBO(16,BODNZT,1,1), BBOY_MASK, NOPOWER4, {BI, BDPA}},
2594{"bdnztla", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, {BI, BDA}},
2595{"bdzt-", BBO(16,BODZT,0,0), BBOY_MASK, NOPOWER4, {BI, BDM}},
2596{"bdzt+", BBO(16,BODZT,0,0), BBOY_MASK, NOPOWER4, {BI, BDP}},
2597{"bdzt", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, {BI, BD}},
2598{"bdztl-", BBO(16,BODZT,0,1), BBOY_MASK, NOPOWER4, {BI, BDM}},
2599{"bdztl+", BBO(16,BODZT,0,1), BBOY_MASK, NOPOWER4, {BI, BDP}},
2600{"bdztl", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, {BI, BD}},
2601{"bdzta-", BBO(16,BODZT,1,0), BBOY_MASK, NOPOWER4, {BI, BDMA}},
2602{"bdzta+", BBO(16,BODZT,1,0), BBOY_MASK, NOPOWER4, {BI, BDPA}},
2603{"bdzta", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, {BI, BDA}},
2604{"bdztla-", BBO(16,BODZT,1,1), BBOY_MASK, NOPOWER4, {BI, BDMA}},
2605{"bdztla+", BBO(16,BODZT,1,1), BBOY_MASK, NOPOWER4, {BI, BDPA}},
2606{"bdztla", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, {BI, BDA}},
2607
2608{"bt-", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, {BI, BDM}},
2609{"bt+", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, {BI, BDP}},
2610{"bt", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, {BI, BD}},
2611{"bbt", BBO(16,BOT,0,0), BBOAT_MASK, PWRCOM, {BI, BD}},
2612{"btl-", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, {BI, BDM}},
2613{"btl+", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, {BI, BDP}},
2614{"btl", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, {BI, BD}},
2615{"bbtl", BBO(16,BOT,0,1), BBOAT_MASK, PWRCOM, {BI, BD}},
2616{"bta-", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, {BI, BDMA}},
2617{"bta+", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, {BI, BDPA}},
2618{"bta", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, {BI, BDA}},
2619{"bbta", BBO(16,BOT,1,0), BBOAT_MASK, PWRCOM, {BI, BDA}},
2620{"btla-", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, {BI, BDMA}},
2621{"btla+", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, {BI, BDPA}},
2622{"btla", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, {BI, BDA}},
2623{"bbtla", BBO(16,BOT,1,1), BBOAT_MASK, PWRCOM, {BI, BDA}},
2624
2625{"bc-", B(16,0,0), B_MASK, PPCCOM, {BOE, BI, BDM}},
2626{"bc+", B(16,0,0), B_MASK, PPCCOM, {BOE, BI, BDP}},
2627{"bc", B(16,0,0), B_MASK, COM, {BO, BI, BD}},
2628{"bcl-", B(16,0,1), B_MASK, PPCCOM, {BOE, BI, BDM}},
2629{"bcl+", B(16,0,1), B_MASK, PPCCOM, {BOE, BI, BDP}},
2630{"bcl", B(16,0,1), B_MASK, COM, {BO, BI, BD}},
2631{"bca-", B(16,1,0), B_MASK, PPCCOM, {BOE, BI, BDMA}},
2632{"bca+", B(16,1,0), B_MASK, PPCCOM, {BOE, BI, BDPA}},
2633{"bca", B(16,1,0), B_MASK, COM, {BO, BI, BDA}},
2634{"bcla-", B(16,1,1), B_MASK, PPCCOM, {BOE, BI, BDMA}},
2635{"bcla+", B(16,1,1), B_MASK, PPCCOM, {BOE, BI, BDPA}},
2636{"bcla", B(16,1,1), B_MASK, COM, {BO, BI, BDA}},
2637
2638{"svc", SC(17,0,0), SC_MASK, POWER, {SVC_LEV, FL1, FL2}},
2639{"svcl", SC(17,0,1), SC_MASK, POWER, {SVC_LEV, FL1, FL2}},
2640{"sc", SC(17,1,0), SC_MASK, PPC, {LEV}},
2641{"svca", SC(17,1,0), SC_MASK, PWRCOM, {SV}},
2642{"svcla", SC(17,1,1), SC_MASK, POWER, {SV}},
2643
2644{"b", B(18,0,0), B_MASK, COM, {LI}},
2645{"bl", B(18,0,1), B_MASK, COM, {LI}},
2646{"ba", B(18,1,0), B_MASK, COM, {LIA}},
2647{"bla", B(18,1,1), B_MASK, COM, {LIA}},
2648
2649{"mcrf", XL(19,0), XLBB_MASK|(3<<21)|(3<<16), COM, {BF, BFA}},
2650
2651{"bdnzlr", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPCCOM, {0}},
2652{"bdnzlr-", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, NOPOWER4, {0}},
2653{"bdnzlrl", XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPCCOM, {0}},
2654{"bdnzlrl-", XLO(19,BODNZ,16,1), XLBOBIBB_MASK, NOPOWER4, {0}},
2655{"bdnzlr+", XLO(19,BODNZP,16,0), XLBOBIBB_MASK, NOPOWER4, {0}},
2656{"bdnzlrl+", XLO(19,BODNZP,16,1), XLBOBIBB_MASK, NOPOWER4, {0}},
2657{"bdzlr", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPCCOM, {0}},
2658{"bdzlr-", XLO(19,BODZ,16,0), XLBOBIBB_MASK, NOPOWER4, {0}},
2659{"bdzlrl", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPCCOM, {0}},
2660{"bdzlrl-", XLO(19,BODZ,16,1), XLBOBIBB_MASK, NOPOWER4, {0}},
2661{"bdzlr+", XLO(19,BODZP,16,0), XLBOBIBB_MASK, NOPOWER4, {0}},
2662{"bdzlrl+", XLO(19,BODZP,16,1), XLBOBIBB_MASK, NOPOWER4, {0}},
2663{"blr", XLO(19,BOU,16,0), XLBOBIBB_MASK, PPCCOM, {0}},
2664{"br", XLO(19,BOU,16,0), XLBOBIBB_MASK, PWRCOM, {0}},
2665{"blrl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PPCCOM, {0}},
2666{"brl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PWRCOM, {0}},
2667{"bdnzlr-", XLO(19,BODNZM4,16,0), XLBOBIBB_MASK, POWER4, {0}},
2668{"bdnzlrl-", XLO(19,BODNZM4,16,1), XLBOBIBB_MASK, POWER4, {0}},
2669{"bdnzlr+", XLO(19,BODNZP4,16,0), XLBOBIBB_MASK, POWER4, {0}},
2670{"bdnzlrl+", XLO(19,BODNZP4,16,1), XLBOBIBB_MASK, POWER4, {0}},
2671{"bdzlr-", XLO(19,BODZM4,16,0), XLBOBIBB_MASK, POWER4, {0}},
2672{"bdzlrl-", XLO(19,BODZM4,16,1), XLBOBIBB_MASK, POWER4, {0}},
2673{"bdzlr+", XLO(19,BODZP4,16,0), XLBOBIBB_MASK, POWER4, {0}},
2674{"bdzlrl+", XLO(19,BODZP4,16,1), XLBOBIBB_MASK, POWER4, {0}},
2675
2676{"bgelr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, {CR}},
2677{"bgelr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2678{"bger", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, {CR}},
2679{"bnllr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, {CR}},
2680{"bnllr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2681{"bnlr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, {CR}},
2682{"bgelrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, {CR}},
2683{"bgelrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2684{"bgerl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, {CR}},
2685{"bnllrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, {CR}},
2686{"bnllrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2687{"bnlrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, {CR}},
2688{"blelr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, {CR}},
2689{"blelr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2690{"bler", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, {CR}},
2691{"bnglr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, {CR}},
2692{"bnglr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2693{"bngr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, {CR}},
2694{"blelrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, {CR}},
2695{"blelrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2696{"blerl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, {CR}},
2697{"bnglrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, {CR}},
2698{"bnglrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2699{"bngrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, {CR}},
2700{"bnelr", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, {CR}},
2701{"bnelr-", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2702{"bner", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, {CR}},
2703{"bnelrl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, {CR}},
2704{"bnelrl-", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2705{"bnerl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, {CR}},
2706{"bnslr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, {CR}},
2707{"bnslr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2708{"bnsr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, {CR}},
2709{"bnulr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, {CR}},
2710{"bnulr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2711{"bnslrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, {CR}},
2712{"bnslrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2713{"bnsrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, {CR}},
2714{"bnulrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, {CR}},
2715{"bnulrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2716{"bgelr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2717{"bnllr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2718{"bgelrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2719{"bnllrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2720{"blelr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2721{"bnglr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2722{"blelrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2723{"bnglrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2724{"bnelr+", XLOCB(19,BOFP,CBEQ,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2725{"bnelrl+", XLOCB(19,BOFP,CBEQ,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2726{"bnslr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2727{"bnulr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2728{"bnslrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2729{"bnulrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2730{"bgelr-", XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, POWER4, {CR}},
2731{"bnllr-", XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, POWER4, {CR}},
2732{"bgelrl-", XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, POWER4, {CR}},
2733{"bnllrl-", XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, POWER4, {CR}},
2734{"blelr-", XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, POWER4, {CR}},
2735{"bnglr-", XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, POWER4, {CR}},
2736{"blelrl-", XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, POWER4, {CR}},
2737{"bnglrl-", XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, POWER4, {CR}},
2738{"bnelr-", XLOCB(19,BOFM4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, {CR}},
2739{"bnelrl-", XLOCB(19,BOFM4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, {CR}},
2740{"bnslr-", XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, {CR}},
2741{"bnulr-", XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, {CR}},
2742{"bnslrl-", XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, {CR}},
2743{"bnulrl-", XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, {CR}},
2744{"bgelr+", XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, POWER4, {CR}},
2745{"bnllr+", XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, POWER4, {CR}},
2746{"bgelrl+", XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, POWER4, {CR}},
2747{"bnllrl+", XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, POWER4, {CR}},
2748{"blelr+", XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, POWER4, {CR}},
2749{"bnglr+", XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, POWER4, {CR}},
2750{"blelrl+", XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, POWER4, {CR}},
2751{"bnglrl+", XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, POWER4, {CR}},
2752{"bnelr+", XLOCB(19,BOFP4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, {CR}},
2753{"bnelrl+", XLOCB(19,BOFP4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, {CR}},
2754{"bnslr+", XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, {CR}},
2755{"bnulr+", XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, {CR}},
2756{"bnslrl+", XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, {CR}},
2757{"bnulrl+", XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, {CR}},
2758{"bltlr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, {CR}},
2759{"bltlr-", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2760{"bltr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, {CR}},
2761{"bltlrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, {CR}},
2762{"bltlrl-", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2763{"bltrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, {CR}},
2764{"bgtlr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, {CR}},
2765{"bgtlr-", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2766{"bgtr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, {CR}},
2767{"bgtlrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, {CR}},
2768{"bgtlrl-", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2769{"bgtrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, {CR}},
2770{"beqlr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, {CR}},
2771{"beqlr-", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2772{"beqr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, {CR}},
2773{"beqlrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, {CR}},
2774{"beqlrl-", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2775{"beqrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, {CR}},
2776{"bsolr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, {CR}},
2777{"bsolr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2778{"bsor", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, {CR}},
2779{"bunlr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, {CR}},
2780{"bunlr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2781{"bsolrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, {CR}},
2782{"bsolrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2783{"bsorl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, {CR}},
2784{"bunlrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, {CR}},
2785{"bunlrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2786{"bltlr+", XLOCB(19,BOTP,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2787{"bltlrl+", XLOCB(19,BOTP,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2788{"bgtlr+", XLOCB(19,BOTP,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2789{"bgtlrl+", XLOCB(19,BOTP,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2790{"beqlr+", XLOCB(19,BOTP,CBEQ,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2791{"beqlrl+", XLOCB(19,BOTP,CBEQ,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2792{"bsolr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2793{"bunlr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2794{"bsolrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2795{"bunlrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2796{"bltlr-", XLOCB(19,BOTM4,CBLT,16,0), XLBOCBBB_MASK, POWER4, {CR}},
2797{"bltlrl-", XLOCB(19,BOTM4,CBLT,16,1), XLBOCBBB_MASK, POWER4, {CR}},
2798{"bgtlr-", XLOCB(19,BOTM4,CBGT,16,0), XLBOCBBB_MASK, POWER4, {CR}},
2799{"bgtlrl-", XLOCB(19,BOTM4,CBGT,16,1), XLBOCBBB_MASK, POWER4, {CR}},
2800{"beqlr-", XLOCB(19,BOTM4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, {CR}},
2801{"beqlrl-", XLOCB(19,BOTM4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, {CR}},
2802{"bsolr-", XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, {CR}},
2803{"bunlr-", XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, {CR}},
2804{"bsolrl-", XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, {CR}},
2805{"bunlrl-", XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, {CR}},
2806{"bltlr+", XLOCB(19,BOTP4,CBLT,16,0), XLBOCBBB_MASK, POWER4, {CR}},
2807{"bltlrl+", XLOCB(19,BOTP4,CBLT,16,1), XLBOCBBB_MASK, POWER4, {CR}},
2808{"bgtlr+", XLOCB(19,BOTP4,CBGT,16,0), XLBOCBBB_MASK, POWER4, {CR}},
2809{"bgtlrl+", XLOCB(19,BOTP4,CBGT,16,1), XLBOCBBB_MASK, POWER4, {CR}},
2810{"beqlr+", XLOCB(19,BOTP4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, {CR}},
2811{"beqlrl+", XLOCB(19,BOTP4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, {CR}},
2812{"bsolr+", XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, {CR}},
2813{"bunlr+", XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, {CR}},
2814{"bsolrl+", XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, {CR}},
2815{"bunlrl+", XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, {CR}},
2816
2817{"bdnzflr", XLO(19,BODNZF,16,0), XLBOBB_MASK, PPCCOM, {BI}},
2818{"bdnzflr-", XLO(19,BODNZF,16,0), XLBOBB_MASK, NOPOWER4, {BI}},
2819{"bdnzflrl", XLO(19,BODNZF,16,1), XLBOBB_MASK, PPCCOM, {BI}},
2820{"bdnzflrl-",XLO(19,BODNZF,16,1), XLBOBB_MASK, NOPOWER4, {BI}},
2821{"bdnzflr+", XLO(19,BODNZFP,16,0), XLBOBB_MASK, NOPOWER4, {BI}},
2822{"bdnzflrl+",XLO(19,BODNZFP,16,1), XLBOBB_MASK, NOPOWER4, {BI}},
2823{"bdzflr", XLO(19,BODZF,16,0), XLBOBB_MASK, PPCCOM, {BI}},
2824{"bdzflr-", XLO(19,BODZF,16,0), XLBOBB_MASK, NOPOWER4, {BI}},
2825{"bdzflrl", XLO(19,BODZF,16,1), XLBOBB_MASK, PPCCOM, {BI}},
2826{"bdzflrl-", XLO(19,BODZF,16,1), XLBOBB_MASK, NOPOWER4, {BI}},
2827{"bdzflr+", XLO(19,BODZFP,16,0), XLBOBB_MASK, NOPOWER4, {BI}},
2828{"bdzflrl+", XLO(19,BODZFP,16,1), XLBOBB_MASK, NOPOWER4, {BI}},
2829{"bflr", XLO(19,BOF,16,0), XLBOBB_MASK, PPCCOM, {BI}},
2830{"bflr-", XLO(19,BOF,16,0), XLBOBB_MASK, NOPOWER4, {BI}},
2831{"bbfr", XLO(19,BOF,16,0), XLBOBB_MASK, PWRCOM, {BI}},
2832{"bflrl", XLO(19,BOF,16,1), XLBOBB_MASK, PPCCOM, {BI}},
2833{"bflrl-", XLO(19,BOF,16,1), XLBOBB_MASK, NOPOWER4, {BI}},
2834{"bbfrl", XLO(19,BOF,16,1), XLBOBB_MASK, PWRCOM, {BI}},
2835{"bflr+", XLO(19,BOFP,16,0), XLBOBB_MASK, NOPOWER4, {BI}},
2836{"bflrl+", XLO(19,BOFP,16,1), XLBOBB_MASK, NOPOWER4, {BI}},
2837{"bflr-", XLO(19,BOFM4,16,0), XLBOBB_MASK, POWER4, {BI}},
2838{"bflrl-", XLO(19,BOFM4,16,1), XLBOBB_MASK, POWER4, {BI}},
2839{"bflr+", XLO(19,BOFP4,16,0), XLBOBB_MASK, POWER4, {BI}},
2840{"bflrl+", XLO(19,BOFP4,16,1), XLBOBB_MASK, POWER4, {BI}},
2841{"bdnztlr", XLO(19,BODNZT,16,0), XLBOBB_MASK, PPCCOM, {BI}},
2842{"bdnztlr-", XLO(19,BODNZT,16,0), XLBOBB_MASK, NOPOWER4, {BI}},
2843{"bdnztlrl", XLO(19,BODNZT,16,1), XLBOBB_MASK, PPCCOM, {BI}},
2844{"bdnztlrl-",XLO(19,BODNZT,16,1), XLBOBB_MASK, NOPOWER4, {BI}},
2845{"bdnztlr+", XLO(19,BODNZTP,16,0), XLBOBB_MASK, NOPOWER4, {BI}},
2846{"bdnztlrl+",XLO(19,BODNZTP,16,1), XLBOBB_MASK, NOPOWER4, {BI}},
2847{"bdztlr", XLO(19,BODZT,16,0), XLBOBB_MASK, PPCCOM, {BI}},
2848{"bdztlr-", XLO(19,BODZT,16,0), XLBOBB_MASK, NOPOWER4, {BI}},
2849{"bdztlrl", XLO(19,BODZT,16,1), XLBOBB_MASK, PPCCOM, {BI}},
2850{"bdztlrl-", XLO(19,BODZT,16,1), XLBOBB_MASK, NOPOWER4, {BI}},
2851{"bdztlr+", XLO(19,BODZTP,16,0), XLBOBB_MASK, NOPOWER4, {BI}},
2852{"bdztlrl+", XLO(19,BODZTP,16,1), XLBOBB_MASK, NOPOWER4, {BI}},
2853{"btlr", XLO(19,BOT,16,0), XLBOBB_MASK, PPCCOM, {BI}},
2854{"btlr-", XLO(19,BOT,16,0), XLBOBB_MASK, NOPOWER4, {BI}},
2855{"bbtr", XLO(19,BOT,16,0), XLBOBB_MASK, PWRCOM, {BI}},
2856{"btlrl", XLO(19,BOT,16,1), XLBOBB_MASK, PPCCOM, {BI}},
2857{"btlrl-", XLO(19,BOT,16,1), XLBOBB_MASK, NOPOWER4, {BI}},
2858{"bbtrl", XLO(19,BOT,16,1), XLBOBB_MASK, PWRCOM, {BI}},
2859{"btlr+", XLO(19,BOTP,16,0), XLBOBB_MASK, NOPOWER4, {BI}},
2860{"btlrl+", XLO(19,BOTP,16,1), XLBOBB_MASK, NOPOWER4, {BI}},
2861{"btlr-", XLO(19,BOTM4,16,0), XLBOBB_MASK, POWER4, {BI}},
2862{"btlrl-", XLO(19,BOTM4,16,1), XLBOBB_MASK, POWER4, {BI}},
2863{"btlr+", XLO(19,BOTP4,16,0), XLBOBB_MASK, POWER4, {BI}},
2864{"btlrl+", XLO(19,BOTP4,16,1), XLBOBB_MASK, POWER4, {BI}},
2865
2866{"bclr-", XLYLK(19,16,0,0), XLYBB_MASK, PPCCOM, {BOE, BI}},
2867{"bclrl-", XLYLK(19,16,0,1), XLYBB_MASK, PPCCOM, {BOE, BI}},
2868{"bclr+", XLYLK(19,16,1,0), XLYBB_MASK, PPCCOM, {BOE, BI}},
2869{"bclrl+", XLYLK(19,16,1,1), XLYBB_MASK, PPCCOM, {BOE, BI}},
2870{"bclr", XLLK(19,16,0), XLBH_MASK, PPCCOM, {BO, BI, BH}},
2871{"bcr", XLLK(19,16,0), XLBB_MASK, PWRCOM, {BO, BI}},
2872{"bclrl", XLLK(19,16,1), XLBH_MASK, PPCCOM, {BO, BI, BH}},
2873{"bcrl", XLLK(19,16,1), XLBB_MASK, PWRCOM, {BO, BI}},
2874
2875{"bclre", XLLK(19,17,0), XLBB_MASK, BOOKE64, {BO, BI}},
2876{"bclrel", XLLK(19,17,1), XLBB_MASK, BOOKE64, {BO, BI}},
2877
2878{"rfid", XL(19,18), 0xffffffff, PPC64, {0}},
2879
2880{"crnot", XL(19,33), XL_MASK, PPCCOM, {BT, BA, BBA}},
2881{"crnor", XL(19,33), XL_MASK, COM, {BT, BA, BB}},
2882{"rfmci", X(19,38), 0xffffffff, PPCRFMCI, {0}},
2883
19a6653c 2884{"rfdi", XL(19,39), 0xffffffff, E500MC, {0}},
de866fcc
AM
2885{"rfi", XL(19,50), 0xffffffff, COM, {0}},
2886{"rfci", XL(19,51), 0xffffffff, PPC403|BOOKE, {0}},
2887
2888{"rfsvc", XL(19,82), 0xffffffff, POWER, {0}},
2889
19a6653c
AM
2890{"rfgi", XL(19,102), 0xffffffff, E500MC, {0}},
2891
de866fcc
AM
2892{"crandc", XL(19,129), XL_MASK, COM, {BT, BA, BB}},
2893
2894{"isync", XL(19,150), 0xffffffff, PPCCOM, {0}},
2895{"ics", XL(19,150), 0xffffffff, PWRCOM, {0}},
2896
2897{"crclr", XL(19,193), XL_MASK, PPCCOM, {BT, BAT, BBA}},
2898{"crxor", XL(19,193), XL_MASK, COM, {BT, BA, BB}},
2899
19a6653c
AM
2900{"dnh", X(19,198), X_MASK, E500MC, {DUI, DUIS}},
2901
de866fcc
AM
2902{"crnand", XL(19,225), XL_MASK, COM, {BT, BA, BB}},
2903
2904{"crand", XL(19,257), XL_MASK, COM, {BT, BA, BB}},
2905
2906{"hrfid", XL(19,274), 0xffffffff, POWER5|CELL, {0}},
2907
2908{"crset", XL(19,289), XL_MASK, PPCCOM, {BT, BAT, BBA}},
2909{"creqv", XL(19,289), XL_MASK, COM, {BT, BA, BB}},
2910
2911{"doze", XL(19,402), 0xffffffff, POWER6, {0}},
2912
2913{"crorc", XL(19,417), XL_MASK, COM, {BT, BA, BB}},
2914
2915{"nap", XL(19,434), 0xffffffff, POWER6, {0}},
2916
2917{"crmove", XL(19,449), XL_MASK, PPCCOM, {BT, BA, BBA}},
2918{"cror", XL(19,449), XL_MASK, COM, {BT, BA, BB}},
2919
2920{"sleep", XL(19,466), 0xffffffff, POWER6, {0}},
2921{"rvwinkle", XL(19,498), 0xffffffff, POWER6, {0}},
2922
2923{"bctr", XLO(19,BOU,528,0), XLBOBIBB_MASK, COM, {0}},
2924{"bctrl", XLO(19,BOU,528,1), XLBOBIBB_MASK, COM, {0}},
2925
2926{"bgectr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, {CR}},
2927{"bgectr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2928{"bnlctr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, {CR}},
2929{"bnlctr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2930{"bgectrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, {CR}},
2931{"bgectrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2932{"bnlctrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, {CR}},
2933{"bnlctrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2934{"blectr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, {CR}},
2935{"blectr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2936{"bngctr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, {CR}},
2937{"bngctr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2938{"blectrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, {CR}},
2939{"blectrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2940{"bngctrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, {CR}},
2941{"bngctrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2942{"bnectr", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, {CR}},
2943{"bnectr-", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2944{"bnectrl", XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, {CR}},
2945{"bnectrl-",XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2946{"bnsctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, {CR}},
2947{"bnsctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2948{"bnuctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, {CR}},
2949{"bnuctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2950{"bnsctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, {CR}},
2951{"bnsctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2952{"bnuctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, {CR}},
2953{"bnuctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2954{"bgectr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2955{"bnlctr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2956{"bgectrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2957{"bnlctrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2958{"blectr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2959{"bngctr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2960{"blectrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2961{"bngctrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2962{"bnectr+", XLOCB(19,BOFP,CBEQ,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2963{"bnectrl+",XLOCB(19,BOFP,CBEQ,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2964{"bnsctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2965{"bnuctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2966{"bnsctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2967{"bnuctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
2968{"bgectr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, POWER4, {CR}},
2969{"bnlctr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, POWER4, {CR}},
2970{"bgectrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, POWER4, {CR}},
2971{"bnlctrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, POWER4, {CR}},
2972{"blectr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, POWER4, {CR}},
2973{"bngctr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, POWER4, {CR}},
2974{"blectrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, POWER4, {CR}},
2975{"bngctrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, POWER4, {CR}},
2976{"bnectr-", XLOCB(19,BOFM4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, {CR}},
2977{"bnectrl-",XLOCB(19,BOFM4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, {CR}},
2978{"bnsctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, {CR}},
2979{"bnuctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, {CR}},
2980{"bnsctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, {CR}},
2981{"bnuctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, {CR}},
2982{"bgectr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, POWER4, {CR}},
2983{"bnlctr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, POWER4, {CR}},
2984{"bgectrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, POWER4, {CR}},
2985{"bnlctrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, POWER4, {CR}},
2986{"blectr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, POWER4, {CR}},
2987{"bngctr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, POWER4, {CR}},
2988{"blectrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, POWER4, {CR}},
2989{"bngctrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, POWER4, {CR}},
2990{"bnectr+", XLOCB(19,BOFP4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, {CR}},
2991{"bnectrl+",XLOCB(19,BOFP4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, {CR}},
2992{"bnsctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, {CR}},
2993{"bnuctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, {CR}},
2994{"bnsctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, {CR}},
2995{"bnuctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, {CR}},
2996{"bltctr", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, {CR}},
2997{"bltctr-", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
2998{"bltctrl", XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, {CR}},
2999{"bltctrl-",XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
3000{"bgtctr", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, {CR}},
3001{"bgtctr-", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
3002{"bgtctrl", XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, {CR}},
3003{"bgtctrl-",XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
3004{"beqctr", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, {CR}},
3005{"beqctr-", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
3006{"beqctrl", XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, {CR}},
3007{"beqctrl-",XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
3008{"bsoctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, {CR}},
3009{"bsoctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
3010{"bunctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, {CR}},
3011{"bunctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
3012{"bsoctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, {CR}},
3013{"bsoctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
3014{"bunctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, {CR}},
3015{"bunctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
3016{"bltctr+", XLOCB(19,BOTP,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
3017{"bltctrl+",XLOCB(19,BOTP,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
3018{"bgtctr+", XLOCB(19,BOTP,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
3019{"bgtctrl+",XLOCB(19,BOTP,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
3020{"beqctr+", XLOCB(19,BOTP,CBEQ,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
3021{"beqctrl+",XLOCB(19,BOTP,CBEQ,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
3022{"bsoctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
3023{"bunctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, {CR}},
3024{"bsoctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
3025{"bunctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, {CR}},
3026{"bltctr-", XLOCB(19,BOTM4,CBLT,528,0), XLBOCBBB_MASK, POWER4, {CR}},
3027{"bltctrl-",XLOCB(19,BOTM4,CBLT,528,1), XLBOCBBB_MASK, POWER4, {CR}},
3028{"bgtctr-", XLOCB(19,BOTM4,CBGT,528,0), XLBOCBBB_MASK, POWER4, {CR}},
3029{"bgtctrl-",XLOCB(19,BOTM4,CBGT,528,1), XLBOCBBB_MASK, POWER4, {CR}},
3030{"beqctr-", XLOCB(19,BOTM4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, {CR}},
3031{"beqctrl-",XLOCB(19,BOTM4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, {CR}},
3032{"bsoctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, {CR}},
3033{"bunctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, {CR}},
3034{"bsoctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, {CR}},
3035{"bunctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, {CR}},
3036{"bltctr+", XLOCB(19,BOTP4,CBLT,528,0), XLBOCBBB_MASK, POWER4, {CR}},
3037{"bltctrl+",XLOCB(19,BOTP4,CBLT,528,1), XLBOCBBB_MASK, POWER4, {CR}},
3038{"bgtctr+", XLOCB(19,BOTP4,CBGT,528,0), XLBOCBBB_MASK, POWER4, {CR}},
3039{"bgtctrl+",XLOCB(19,BOTP4,CBGT,528,1), XLBOCBBB_MASK, POWER4, {CR}},
3040{"beqctr+", XLOCB(19,BOTP4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, {CR}},
3041{"beqctrl+",XLOCB(19,BOTP4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, {CR}},
3042{"bsoctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, {CR}},
3043{"bunctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, {CR}},
3044{"bsoctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, {CR}},
3045{"bunctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, {CR}},
3046
3047{"bfctr", XLO(19,BOF,528,0), XLBOBB_MASK, PPCCOM, {BI}},
3048{"bfctr-", XLO(19,BOF,528,0), XLBOBB_MASK, NOPOWER4, {BI}},
3049{"bfctrl", XLO(19,BOF,528,1), XLBOBB_MASK, PPCCOM, {BI}},
3050{"bfctrl-", XLO(19,BOF,528,1), XLBOBB_MASK, NOPOWER4, {BI}},
3051{"bfctr+", XLO(19,BOFP,528,0), XLBOBB_MASK, NOPOWER4, {BI}},
3052{"bfctrl+", XLO(19,BOFP,528,1), XLBOBB_MASK, NOPOWER4, {BI}},
3053{"bfctr-", XLO(19,BOFM4,528,0), XLBOBB_MASK, POWER4, {BI}},
3054{"bfctrl-", XLO(19,BOFM4,528,1), XLBOBB_MASK, POWER4, {BI}},
3055{"bfctr+", XLO(19,BOFP4,528,0), XLBOBB_MASK, POWER4, {BI}},
3056{"bfctrl+", XLO(19,BOFP4,528,1), XLBOBB_MASK, POWER4, {BI}},
3057{"btctr", XLO(19,BOT,528,0), XLBOBB_MASK, PPCCOM, {BI}},
3058{"btctr-", XLO(19,BOT,528,0), XLBOBB_MASK, NOPOWER4, {BI}},
3059{"btctrl", XLO(19,BOT,528,1), XLBOBB_MASK, PPCCOM, {BI}},
3060{"btctrl-", XLO(19,BOT,528,1), XLBOBB_MASK, NOPOWER4, {BI}},
3061{"btctr+", XLO(19,BOTP,528,0), XLBOBB_MASK, NOPOWER4, {BI}},
3062{"btctrl+", XLO(19,BOTP,528,1), XLBOBB_MASK, NOPOWER4, {BI}},
3063{"btctr-", XLO(19,BOTM4,528,0), XLBOBB_MASK, POWER4, {BI}},
3064{"btctrl-", XLO(19,BOTM4,528,1), XLBOBB_MASK, POWER4, {BI}},
3065{"btctr+", XLO(19,BOTP4,528,0), XLBOBB_MASK, POWER4, {BI}},
3066{"btctrl+", XLO(19,BOTP4,528,1), XLBOBB_MASK, POWER4, {BI}},
3067
3068{"bcctr-", XLYLK(19,528,0,0), XLYBB_MASK, PPCCOM, {BOE, BI}},
3069{"bcctrl-", XLYLK(19,528,0,1), XLYBB_MASK, PPCCOM, {BOE, BI}},
3070{"bcctr+", XLYLK(19,528,1,0), XLYBB_MASK, PPCCOM, {BOE, BI}},
3071{"bcctrl+", XLYLK(19,528,1,1), XLYBB_MASK, PPCCOM, {BOE, BI}},
3072{"bcctr", XLLK(19,528,0), XLBH_MASK, PPCCOM, {BO, BI, BH}},
3073{"bcc", XLLK(19,528,0), XLBB_MASK, PWRCOM, {BO, BI}},
3074{"bcctrl", XLLK(19,528,1), XLBH_MASK, PPCCOM, {BO, BI, BH}},
3075{"bccl", XLLK(19,528,1), XLBB_MASK, PWRCOM, {BO, BI}},
3076
3077{"bcctre", XLLK(19,529,0), XLBB_MASK, BOOKE64, {BO, BI}},
3078{"bcctrel", XLLK(19,529,1), XLBB_MASK, BOOKE64, {BO, BI}},
3079
3080{"rlwimi", M(20,0), M_MASK, PPCCOM, {RA, RS, SH, MBE, ME}},
3081{"rlimi", M(20,0), M_MASK, PWRCOM, {RA, RS, SH, MBE, ME}},
3082
3083{"rlwimi.", M(20,1), M_MASK, PPCCOM, {RA, RS, SH, MBE, ME}},
3084{"rlimi.", M(20,1), M_MASK, PWRCOM, {RA, RS, SH, MBE, ME}},
3085
3086{"rotlwi", MME(21,31,0), MMBME_MASK, PPCCOM, {RA, RS, SH}},
3087{"clrlwi", MME(21,31,0), MSHME_MASK, PPCCOM, {RA, RS, MB}},
3088{"rlwinm", M(21,0), M_MASK, PPCCOM, {RA, RS, SH, MBE, ME}},
3089{"rlinm", M(21,0), M_MASK, PWRCOM, {RA, RS, SH, MBE, ME}},
3090{"rotlwi.", MME(21,31,1), MMBME_MASK, PPCCOM, {RA, RS, SH}},
3091{"clrlwi.", MME(21,31,1), MSHME_MASK, PPCCOM, {RA, RS, MB}},
3092{"rlwinm.", M(21,1), M_MASK, PPCCOM, {RA, RS, SH, MBE, ME}},
3093{"rlinm.", M(21,1), M_MASK, PWRCOM, {RA, RS, SH, MBE, ME}},
3094
3095{"rlmi", M(22,0), M_MASK, M601, {RA, RS, RB, MBE, ME}},
3096{"be", B(22,0,0), B_MASK, BOOKE64, {LI}},
3097{"bel", B(22,0,1), B_MASK, BOOKE64, {LI}},
3098{"rlmi.", M(22,1), M_MASK, M601, {RA, RS, RB, MBE, ME}},
3099{"bea", B(22,1,0), B_MASK, BOOKE64, {LIA}},
3100{"bela", B(22,1,1), B_MASK, BOOKE64, {LIA}},
3101
3102{"rotlw", MME(23,31,0), MMBME_MASK, PPCCOM, {RA, RS, RB}},
3103{"rlwnm", M(23,0), M_MASK, PPCCOM, {RA, RS, RB, MBE, ME}},
3104{"rlnm", M(23,0), M_MASK, PWRCOM, {RA, RS, RB, MBE, ME}},
3105{"rotlw.", MME(23,31,1), MMBME_MASK, PPCCOM, {RA, RS, RB}},
3106{"rlwnm.", M(23,1), M_MASK, PPCCOM, {RA, RS, RB, MBE, ME}},
3107{"rlnm.", M(23,1), M_MASK, PWRCOM, {RA, RS, RB, MBE, ME}},
3108
3109{"nop", OP(24), 0xffffffff, PPCCOM, {0}},
3110{"ori", OP(24), OP_MASK, PPCCOM, {RA, RS, UI}},
3111{"oril", OP(24), OP_MASK, PWRCOM, {RA, RS, UI}},
3112
3113{"oris", OP(25), OP_MASK, PPCCOM, {RA, RS, UI}},
3114{"oriu", OP(25), OP_MASK, PWRCOM, {RA, RS, UI}},
3115
3116{"xori", OP(26), OP_MASK, PPCCOM, {RA, RS, UI}},
3117{"xoril", OP(26), OP_MASK, PWRCOM, {RA, RS, UI}},
3118
3119{"xoris", OP(27), OP_MASK, PPCCOM, {RA, RS, UI}},
3120{"xoriu", OP(27), OP_MASK, PWRCOM, {RA, RS, UI}},
3121
3122{"andi.", OP(28), OP_MASK, PPCCOM, {RA, RS, UI}},
3123{"andil.", OP(28), OP_MASK, PWRCOM, {RA, RS, UI}},
3124
3125{"andis.", OP(29), OP_MASK, PPCCOM, {RA, RS, UI}},
3126{"andiu.", OP(29), OP_MASK, PWRCOM, {RA, RS, UI}},
3127
3128{"rotldi", MD(30,0,0), MDMB_MASK, PPC64, {RA, RS, SH6}},
3129{"clrldi", MD(30,0,0), MDSH_MASK, PPC64, {RA, RS, MB6}},
3130{"rldicl", MD(30,0,0), MD_MASK, PPC64, {RA, RS, SH6, MB6}},
3131{"rotldi.", MD(30,0,1), MDMB_MASK, PPC64, {RA, RS, SH6}},
3132{"clrldi.", MD(30,0,1), MDSH_MASK, PPC64, {RA, RS, MB6}},
3133{"rldicl.", MD(30,0,1), MD_MASK, PPC64, {RA, RS, SH6, MB6}},
3134
3135{"rldicr", MD(30,1,0), MD_MASK, PPC64, {RA, RS, SH6, ME6}},
3136{"rldicr.", MD(30,1,1), MD_MASK, PPC64, {RA, RS, SH6, ME6}},
3137
3138{"rldic", MD(30,2,0), MD_MASK, PPC64, {RA, RS, SH6, MB6}},
3139{"rldic.", MD(30,2,1), MD_MASK, PPC64, {RA, RS, SH6, MB6}},
3140
3141{"rldimi", MD(30,3,0), MD_MASK, PPC64, {RA, RS, SH6, MB6}},
3142{"rldimi.", MD(30,3,1), MD_MASK, PPC64, {RA, RS, SH6, MB6}},
3143
3144{"rotld", MDS(30,8,0), MDSMB_MASK, PPC64, {RA, RS, RB}},
3145{"rldcl", MDS(30,8,0), MDS_MASK, PPC64, {RA, RS, RB, MB6}},
3146{"rotld.", MDS(30,8,1), MDSMB_MASK, PPC64, {RA, RS, RB}},
3147{"rldcl.", MDS(30,8,1), MDS_MASK, PPC64, {RA, RS, RB, MB6}},
3148
3149{"rldcr", MDS(30,9,0), MDS_MASK, PPC64, {RA, RS, RB, ME6}},
3150{"rldcr.", MDS(30,9,1), MDS_MASK, PPC64, {RA, RS, RB, ME6}},
3151
3152{"cmpw", XOPL(31,0,0), XCMPL_MASK, PPCCOM, {OBF, RA, RB}},
3153{"cmpd", XOPL(31,0,1), XCMPL_MASK, PPC64, {OBF, RA, RB}},
3154{"cmp", X(31,0), XCMP_MASK, PPC, {BF, L, RA, RB}},
3155{"cmp", X(31,0), XCMPL_MASK, PWRCOM, {BF, RA, RB}},
3156
3157{"twlgt", XTO(31,4,TOLGT), XTO_MASK, PPCCOM, {RA, RB}},
3158{"tlgt", XTO(31,4,TOLGT), XTO_MASK, PWRCOM, {RA, RB}},
3159{"twllt", XTO(31,4,TOLLT), XTO_MASK, PPCCOM, {RA, RB}},
3160{"tllt", XTO(31,4,TOLLT), XTO_MASK, PWRCOM, {RA, RB}},
3161{"tweq", XTO(31,4,TOEQ), XTO_MASK, PPCCOM, {RA, RB}},
3162{"teq", XTO(31,4,TOEQ), XTO_MASK, PWRCOM, {RA, RB}},
3163{"twlge", XTO(31,4,TOLGE), XTO_MASK, PPCCOM, {RA, RB}},
3164{"tlge", XTO(31,4,TOLGE), XTO_MASK, PWRCOM, {RA, RB}},
3165{"twlnl", XTO(31,4,TOLNL), XTO_MASK, PPCCOM, {RA, RB}},
3166{"tlnl", XTO(31,4,TOLNL), XTO_MASK, PWRCOM, {RA, RB}},
3167{"twlle", XTO(31,4,TOLLE), XTO_MASK, PPCCOM, {RA, RB}},
3168{"tlle", XTO(31,4,TOLLE), XTO_MASK, PWRCOM, {RA, RB}},
3169{"twlng", XTO(31,4,TOLNG), XTO_MASK, PPCCOM, {RA, RB}},
3170{"tlng", XTO(31,4,TOLNG), XTO_MASK, PWRCOM, {RA, RB}},
3171{"twgt", XTO(31,4,TOGT), XTO_MASK, PPCCOM, {RA, RB}},
3172{"tgt", XTO(31,4,TOGT), XTO_MASK, PWRCOM, {RA, RB}},
3173{"twge", XTO(31,4,TOGE), XTO_MASK, PPCCOM, {RA, RB}},
3174{"tge", XTO(31,4,TOGE), XTO_MASK, PWRCOM, {RA, RB}},
3175{"twnl", XTO(31,4,TONL), XTO_MASK, PPCCOM, {RA, RB}},
3176{"tnl", XTO(31,4,TONL), XTO_MASK, PWRCOM, {RA, RB}},
3177{"twlt", XTO(31,4,TOLT), XTO_MASK, PPCCOM, {RA, RB}},
3178{"tlt", XTO(31,4,TOLT), XTO_MASK, PWRCOM, {RA, RB}},
3179{"twle", XTO(31,4,TOLE), XTO_MASK, PPCCOM, {RA, RB}},
3180{"tle", XTO(31,4,TOLE), XTO_MASK, PWRCOM, {RA, RB}},
3181{"twng", XTO(31,4,TONG), XTO_MASK, PPCCOM, {RA, RB}},
3182{"tng", XTO(31,4,TONG), XTO_MASK, PWRCOM, {RA, RB}},
3183{"twne", XTO(31,4,TONE), XTO_MASK, PPCCOM, {RA, RB}},
3184{"tne", XTO(31,4,TONE), XTO_MASK, PWRCOM, {RA, RB}},
3185{"trap", XTO(31,4,TOU), 0xffffffff, PPCCOM, {0}},
3186{"tw", X(31,4), X_MASK, PPCCOM, {TO, RA, RB}},
3187{"t", X(31,4), X_MASK, PWRCOM, {TO, RA, RB}},
3188
3189{"lvsl", X(31,6), X_MASK, PPCVEC, {VD, RA, RB}},
3190{"lvebx", X(31,7), X_MASK, PPCVEC, {VD, RA, RB}},
3191
3192{"subfc", XO(31,8,0,0), XO_MASK, PPCCOM, {RT, RA, RB}},
3193{"sf", XO(31,8,0,0), XO_MASK, PWRCOM, {RT, RA, RB}},
3194{"subc", XO(31,8,0,0), XO_MASK, PPC, {RT, RB, RA}},
3195{"subfc.", XO(31,8,0,1), XO_MASK, PPCCOM, {RT, RA, RB}},
3196{"sf.", XO(31,8,0,1), XO_MASK, PWRCOM, {RT, RA, RB}},
3197{"subc.", XO(31,8,0,1), XO_MASK, PPCCOM, {RT, RB, RA}},
3198
3199{"mulhdu", XO(31,9,0,0), XO_MASK, PPC64, {RT, RA, RB}},
3200{"mulhdu.", XO(31,9,0,1), XO_MASK, PPC64, {RT, RA, RB}},
3201
3202{"addc", XO(31,10,0,0), XO_MASK, PPCCOM, {RT, RA, RB}},
3203{"a", XO(31,10,0,0), XO_MASK, PWRCOM, {RT, RA, RB}},
3204{"addc.", XO(31,10,0,1), XO_MASK, PPCCOM, {RT, RA, RB}},
3205{"a.", XO(31,10,0,1), XO_MASK, PWRCOM, {RT, RA, RB}},
3206
3207{"mulhwu", XO(31,11,0,0), XO_MASK, PPC, {RT, RA, RB}},
3208{"mulhwu.", XO(31,11,0,1), XO_MASK, PPC, {RT, RA, RB}},
3209
3210{"isellt", X(31,15), X_MASK, PPCISEL, {RT, RA, RB}},
3211
3212{"mfcr", XFXM(31,19,0,0), XRARB_MASK, NOPOWER4|COM, {RT}},
3213{"mfcr", XFXM(31,19,0,0), XFXFXM_MASK, POWER4, {RT, FXM4}},
3214{"mfocrf", XFXM(31,19,0,1), XFXFXM_MASK, COM, {RT, FXM}},
3215
3216{"lwarx", X(31,20), XEH_MASK, PPC, {RT, RA0, RB, EH}},
3217
3218{"ldx", X(31,21), X_MASK, PPC64, {RT, RA0, RB}},
3219
3220{"icbt", X(31,22), X_MASK, BOOKE|PPCE300, {CT, RA, RB}},
3221
3222{"lwzx", X(31,23), X_MASK, PPCCOM, {RT, RA0, RB}},
3223{"lx", X(31,23), X_MASK, PWRCOM, {RT, RA, RB}},
3224
3225{"slw", XRC(31,24,0), X_MASK, PPCCOM, {RA, RS, RB}},
3226{"sl", XRC(31,24,0), X_MASK, PWRCOM, {RA, RS, RB}},
3227{"slw.", XRC(31,24,1), X_MASK, PPCCOM, {RA, RS, RB}},
3228{"sl.", XRC(31,24,1), X_MASK, PWRCOM, {RA, RS, RB}},
3229
3230{"cntlzw", XRC(31,26,0), XRB_MASK, PPCCOM, {RA, RS}},
3231{"cntlz", XRC(31,26,0), XRB_MASK, PWRCOM, {RA, RS}},
3232{"cntlzw.", XRC(31,26,1), XRB_MASK, PPCCOM, {RA, RS}},
3233{"cntlz.", XRC(31,26,1), XRB_MASK, PWRCOM, {RA, RS}},
3234
3235{"sld", XRC(31,27,0), X_MASK, PPC64, {RA, RS, RB}},
3236{"sld.", XRC(31,27,1), X_MASK, PPC64, {RA, RS, RB}},
3237
3238{"and", XRC(31,28,0), X_MASK, COM, {RA, RS, RB}},
3239{"and.", XRC(31,28,1), X_MASK, COM, {RA, RS, RB}},
3240
3241{"maskg", XRC(31,29,0), X_MASK, M601, {RA, RS, RB}},
3242{"maskg.", XRC(31,29,1), X_MASK, M601, {RA, RS, RB}},
3243
19a6653c
AM
3244{"ldepx", X(31,29), X_MASK, E500MC, {RT, RA, RB}},
3245
de866fcc
AM
3246{"icbte", X(31,30), X_MASK, BOOKE64, {CT, RA, RB}},
3247
3248{"lwzxe", X(31,31), X_MASK, BOOKE64, {RT, RA0, RB}},
19a6653c 3249{"lwepx", X(31,31), X_MASK, E500MC, {RT, RA, RB}},
de866fcc
AM
3250
3251{"cmplw", XOPL(31,32,0), XCMPL_MASK, PPCCOM, {OBF, RA, RB}},
3252{"cmpld", XOPL(31,32,1), XCMPL_MASK, PPC64, {OBF, RA, RB}},
3253{"cmpl", X(31,32), XCMP_MASK, PPC, {BF, L, RA, RB}},
3254{"cmpl", X(31,32), XCMPL_MASK, PWRCOM, {BF, RA, RB}},
3255
3256{"lvsr", X(31,38), X_MASK, PPCVEC, {VD, RA, RB}},
3257{"lvehx", X(31,39), X_MASK, PPCVEC, {VD, RA, RB}},
3258
3259{"iselgt", X(31,47), X_MASK, PPCISEL, {RT, RA, RB}},
3260
3261{"lvewx", X(31,71), X_MASK, PPCVEC, {VD, RA, RB}},
3262
3263{"iseleq", X(31,79), X_MASK, PPCISEL, {RT, RA, RB}},
3264
3265{"isel", XISEL(31,15), XISEL_MASK, PPCISEL, {RT, RA, RB, CRB}},
3266
3267{"subf", XO(31,40,0,0), XO_MASK, PPC, {RT, RA, RB}},
3268{"sub", XO(31,40,0,0), XO_MASK, PPC, {RT, RB, RA}},
3269{"subf.", XO(31,40,0,1), XO_MASK, PPC, {RT, RA, RB}},
3270{"sub.", XO(31,40,0,1), XO_MASK, PPC, {RT, RB, RA}},
3271
3272{"ldux", X(31,53), X_MASK, PPC64, {RT, RAL, RB}},
3273
3274{"dcbst", X(31,54), XRT_MASK, PPC, {RA, RB}},
3275
3276{"lwzux", X(31,55), X_MASK, PPCCOM, {RT, RAL, RB}},
3277{"lux", X(31,55), X_MASK, PWRCOM, {RT, RA, RB}},
3278
3279{"cntlzd", XRC(31,58,0), XRB_MASK, PPC64, {RA, RS}},
3280{"cntlzd.", XRC(31,58,1), XRB_MASK, PPC64, {RA, RS}},
3281
3282{"andc", XRC(31,60,0), X_MASK, COM, {RA, RS, RB}},
3283{"andc.", XRC(31,60,1), X_MASK, COM, {RA, RS, RB}},
3284
3285{"dcbste", X(31,62), XRT_MASK, BOOKE64, {RA, RB}},
3286
19a6653c
AM
3287{"wait", X(31,62), 0xffffffff, E500MC, {0}},
3288
de866fcc
AM
3289{"lwzuxe", X(31,63), X_MASK, BOOKE64, {RT, RAL, RB}},
3290
19a6653c
AM
3291{"dcbstep", XRT(31,63,0), XRT_MASK, E500MC, {RA, RB}},
3292
de866fcc
AM
3293{"tdlgt", XTO(31,68,TOLGT), XTO_MASK, PPC64, {RA, RB}},
3294{"tdllt", XTO(31,68,TOLLT), XTO_MASK, PPC64, {RA, RB}},
3295{"tdeq", XTO(31,68,TOEQ), XTO_MASK, PPC64, {RA, RB}},
3296{"tdlge", XTO(31,68,TOLGE), XTO_MASK, PPC64, {RA, RB}},
3297{"tdlnl", XTO(31,68,TOLNL), XTO_MASK, PPC64, {RA, RB}},
3298{"tdlle", XTO(31,68,TOLLE), XTO_MASK, PPC64, {RA, RB}},
3299{"tdlng", XTO(31,68,TOLNG), XTO_MASK, PPC64, {RA, RB}},
3300{"tdgt", XTO(31,68,TOGT), XTO_MASK, PPC64, {RA, RB}},
3301{"tdge", XTO(31,68,TOGE), XTO_MASK, PPC64, {RA, RB}},
3302{"tdnl", XTO(31,68,TONL), XTO_MASK, PPC64, {RA, RB}},
3303{"tdlt", XTO(31,68,TOLT), XTO_MASK, PPC64, {RA, RB}},
3304{"tdle", XTO(31,68,TOLE), XTO_MASK, PPC64, {RA, RB}},
3305{"tdng", XTO(31,68,TONG), XTO_MASK, PPC64, {RA, RB}},
3306{"tdne", XTO(31,68,TONE), XTO_MASK, PPC64, {RA, RB}},
3307{"td", X(31,68), X_MASK, PPC64, {TO, RA, RB}},
3308
3309{"mulhd", XO(31,73,0,0), XO_MASK, PPC64, {RT, RA, RB}},
3310{"mulhd.", XO(31,73,0,1), XO_MASK, PPC64, {RT, RA, RB}},
3311
3312{"mulhw", XO(31,75,0,0), XO_MASK, PPC, {RT, RA, RB}},
3313{"mulhw.", XO(31,75,0,1), XO_MASK, PPC, {RT, RA, RB}},
3314
3315{"dlmzb", XRC(31,78,0), X_MASK, PPC403|PPC440, {RA, RS, RB}},
3316{"dlmzb.", XRC(31,78,1), X_MASK, PPC403|PPC440, {RA, RS, RB}},
3317
3318{"mtsrd", X(31,82), XRB_MASK|(1<<20), PPC64, {SR, RS}},
3319
3320{"mfmsr", X(31,83), XRARB_MASK, COM, {RT}},
3321
3322{"ldarx", X(31,84), XEH_MASK, PPC64, {RT, RA0, RB, EH}},
3323
3324{"dcbfl", XOPL(31,86,1), XRT_MASK, POWER5, {RA, RB}},
3325{"dcbf", X(31,86), XLRT_MASK, PPC, {RA, RB, L}},
3326
3327{"lbzx", X(31,87), X_MASK, COM, {RT, RA0, RB}},
3328
3329{"dcbfe", X(31,94), XRT_MASK, BOOKE64, {RA, RB}},
3330
3331{"lbzxe", X(31,95), X_MASK, BOOKE64, {RT, RA0, RB}},
19a6653c 3332{"lbepx", X(31,95), X_MASK, E500MC, {RT, RA, RB}},
de866fcc
AM
3333
3334{"lvx", X(31,103), X_MASK, PPCVEC, {VD, RA, RB}},
3335
3336{"neg", XO(31,104,0,0), XORB_MASK, COM, {RT, RA}},
3337{"neg.", XO(31,104,0,1), XORB_MASK, COM, {RT, RA}},
3338
3339{"mul", XO(31,107,0,0), XO_MASK, M601, {RT, RA, RB}},
3340{"mul.", XO(31,107,0,1), XO_MASK, M601, {RT, RA, RB}},
3341
3342{"mtsrdin", X(31,114), XRA_MASK, PPC64, {RS, RB}},
3343
3344{"clf", X(31,118), XTO_MASK, POWER, {RA, RB}},
3345
3346{"lbzux", X(31,119), X_MASK, COM, {RT, RAL, RB}},
3347
3348{"popcntb", X(31,122), XRB_MASK, POWER5, {RA, RS}},
3349
3350{"not", XRC(31,124,0), X_MASK, COM, {RA, RS, RBS}},
3351{"nor", XRC(31,124,0), X_MASK, COM, {RA, RS, RB}},
3352{"not.", XRC(31,124,1), X_MASK, COM, {RA, RS, RBS}},
3353{"nor.", XRC(31,124,1), X_MASK, COM, {RA, RS, RB}},
3354
3355{"lwarxe", X(31,126), X_MASK, BOOKE64, {RT, RA0, RB}},
3356
3357{"lbzuxe", X(31,127), X_MASK, BOOKE64, {RT, RAL, RB}},
3358
19a6653c
AM
3359{"dcbfep", XRT(31,127,0), XRT_MASK, E500MC, {RA, RB}},
3360
de866fcc
AM
3361{"wrtee", X(31,131), XRARB_MASK, PPC403|BOOKE, {RS}},
3362
3363{"dcbtstls", X(31,134), X_MASK, PPCCHLK, {CT, RA, RB}},
3364
3365{"stvebx", X(31,135), X_MASK, PPCVEC, {VS, RA, RB}},
3366
3367{"subfe", XO(31,136,0,0), XO_MASK, PPCCOM, {RT, RA, RB}},
3368{"sfe", XO(31,136,0,0), XO_MASK, PWRCOM, {RT, RA, RB}},
3369{"subfe.", XO(31,136,0,1), XO_MASK, PPCCOM, {RT, RA, RB}},
3370{"sfe.", XO(31,136,0,1), XO_MASK, PWRCOM, {RT, RA, RB}},
3371
3372{"adde", XO(31,138,0,0), XO_MASK, PPCCOM, {RT, RA, RB}},
3373{"ae", XO(31,138,0,0), XO_MASK, PWRCOM, {RT, RA, RB}},
3374{"adde.", XO(31,138,0,1), XO_MASK, PPCCOM, {RT, RA, RB}},
3375{"ae.", XO(31,138,0,1), XO_MASK, PWRCOM, {RT, RA, RB}},
3376
3377{"dcbtstlse", X(31,142), X_MASK, PPCCHLK64, {CT, RA, RB}},
3378
3379{"mtcr", XFXM(31,144,0xff,0), XRARB_MASK, COM, {RS}},
3380{"mtcrf", XFXM(31,144,0,0), XFXFXM_MASK, COM, {FXM, RS}},
3381{"mtocrf", XFXM(31,144,0,1), XFXFXM_MASK, COM, {FXM, RS}},
3382
3383{"mtmsr", X(31,146), XRLARB_MASK, COM, {RS, A_L}},
3384
3385{"stdx", X(31,149), X_MASK, PPC64, {RS, RA0, RB}},
3386
3387{"stwcx.", XRC(31,150,1), X_MASK, PPC, {RS, RA0, RB}},
3388
3389{"stwx", X(31,151), X_MASK, PPCCOM, {RS, RA0, RB}},
3390{"stx", X(31,151), X_MASK, PWRCOM, {RS, RA, RB}},
3391
3392{"slq", XRC(31,152,0), X_MASK, M601, {RA, RS, RB}},
3393{"slq.", XRC(31,152,1), X_MASK, M601, {RA, RS, RB}},
3394
3395{"sle", XRC(31,153,0), X_MASK, M601, {RA, RS, RB}},
3396{"sle.", XRC(31,153,1), X_MASK, M601, {RA, RS, RB}},
3397
3398{"prtyw", X(31,154), XRB_MASK, POWER6, {RA, RS}},
3399
19a6653c
AM
3400{"stdepx", X(31,157), X_MASK, E500MC, {RS, RA, RB}},
3401
de866fcc
AM
3402{"stwcxe.", XRC(31,158,1), X_MASK, BOOKE64, {RS, RA0, RB}},
3403
3404{"stwxe", X(31,159), X_MASK, BOOKE64, {RS, RA0, RB}},
19a6653c 3405{"stwepx", X(31,159), X_MASK, E500MC, {RS, RA, RB}},
de866fcc
AM
3406
3407{"wrteei", X(31,163), XE_MASK, PPC403|BOOKE, {E}},
3408
3409{"dcbtls", X(31,166), X_MASK, PPCCHLK, {CT, RA, RB}},
3410
3411{"stvehx", X(31,167), X_MASK, PPCVEC, {VS, RA, RB}},
3412
3413{"dcbtlse", X(31,174), X_MASK, PPCCHLK64, {CT, RA, RB}},
3414
3415{"mtmsrd", X(31,178), XRLARB_MASK, PPC64, {RS, A_L}},
3416
3417{"stdux", X(31,181), X_MASK, PPC64, {RS, RAS, RB}},
3418
3419{"stwux", X(31,183), X_MASK, PPCCOM, {RS, RAS, RB}},
3420{"stux", X(31,183), X_MASK, PWRCOM, {RS, RA0, RB}},
3421
3422{"sliq", XRC(31,184,0), X_MASK, M601, {RA, RS, SH}},
3423{"sliq.", XRC(31,184,1), X_MASK, M601, {RA, RS, SH}},
3424
3425{"prtyd", X(31,186), XRB_MASK, POWER6, {RA, RS}},
252b5132 3426
de866fcc 3427{"stwuxe", X(31,191), X_MASK, BOOKE64, {RS, RAS, RB}},
252b5132 3428
de866fcc 3429{"stvewx", X(31,199), X_MASK, PPCVEC, {VS, RA, RB}},
252b5132 3430
de866fcc
AM
3431{"subfze", XO(31,200,0,0), XORB_MASK, PPCCOM, {RT, RA}},
3432{"sfze", XO(31,200,0,0), XORB_MASK, PWRCOM, {RT, RA}},
3433{"subfze.", XO(31,200,0,1), XORB_MASK, PPCCOM, {RT, RA}},
3434{"sfze.", XO(31,200,0,1), XORB_MASK, PWRCOM, {RT, RA}},
252b5132 3435
de866fcc
AM
3436{"addze", XO(31,202,0,0), XORB_MASK, PPCCOM, {RT, RA}},
3437{"aze", XO(31,202,0,0), XORB_MASK, PWRCOM, {RT, RA}},
3438{"addze.", XO(31,202,0,1), XORB_MASK, PPCCOM, {RT, RA}},
3439{"aze.", XO(31,202,0,1), XORB_MASK, PWRCOM, {RT, RA}},
418c1742 3440
19a6653c
AM
3441{"msgsnd", XRTRA(31,206,0,0),XRTRA_MASK,E500MC, {RB}},
3442
de866fcc 3443{"mtsr", X(31,210), XRB_MASK|(1<<20), COM32, {SR, RS}},
418c1742 3444
de866fcc 3445{"stdcx.", XRC(31,214,1), X_MASK, PPC64, {RS, RA0, RB}},
252b5132 3446
de866fcc 3447{"stbx", X(31,215), X_MASK, COM, {RS, RA0, RB}},
252b5132 3448
de866fcc
AM
3449{"sllq", XRC(31,216,0), X_MASK, M601, {RA, RS, RB}},
3450{"sllq.", XRC(31,216,1), X_MASK, M601, {RA, RS, RB}},
252b5132 3451
de866fcc
AM
3452{"sleq", XRC(31,217,0), X_MASK, M601, {RA, RS, RB}},
3453{"sleq.", XRC(31,217,1), X_MASK, M601, {RA, RS, RB}},
252b5132 3454
de866fcc 3455{"stbxe", X(31,223), X_MASK, BOOKE64, {RS, RA0, RB}},
19a6653c 3456{"stbepx", X(31,223), X_MASK, E500MC, {RS, RA, RB}},
252b5132 3457
de866fcc 3458{"icblc", X(31,230), X_MASK, PPCCHLK, {CT, RA, RB}},
7d5b217e 3459
de866fcc 3460{"stvx", X(31,231), X_MASK, PPCVEC, {VS, RA, RB}},
f509565f 3461
de866fcc
AM
3462{"subfme", XO(31,232,0,0), XORB_MASK, PPCCOM, {RT, RA}},
3463{"sfme", XO(31,232,0,0), XORB_MASK, PWRCOM, {RT, RA}},
3464{"subfme.", XO(31,232,0,1), XORB_MASK, PPCCOM, {RT, RA}},
3465{"sfme.", XO(31,232,0,1), XORB_MASK, PWRCOM, {RT, RA}},
252b5132 3466
de866fcc
AM
3467{"mulld", XO(31,233,0,0), XO_MASK, PPC64, {RT, RA, RB}},
3468{"mulld.", XO(31,233,0,1), XO_MASK, PPC64, {RT, RA, RB}},
252b5132 3469
de866fcc
AM
3470{"addme", XO(31,234,0,0), XORB_MASK, PPCCOM, {RT, RA}},
3471{"ame", XO(31,234,0,0), XORB_MASK, PWRCOM, {RT, RA}},
3472{"addme.", XO(31,234,0,1), XORB_MASK, PPCCOM, {RT, RA}},
3473{"ame.", XO(31,234,0,1), XORB_MASK, PWRCOM, {RT, RA}},
252b5132 3474
de866fcc
AM
3475{"mullw", XO(31,235,0,0), XO_MASK, PPCCOM, {RT, RA, RB}},
3476{"muls", XO(31,235,0,0), XO_MASK, PWRCOM, {RT, RA, RB}},
3477{"mullw.", XO(31,235,0,1), XO_MASK, PPCCOM, {RT, RA, RB}},
3478{"muls.", XO(31,235,0,1), XO_MASK, PWRCOM, {RT, RA, RB}},
252b5132 3479
19a6653c 3480{"msgclr", XRTRA(31,238,0,0),XRTRA_MASK,E500MC, {RB}},
de866fcc
AM
3481{"icblce", X(31,238), X_MASK, PPCCHLK64, {CT, RA, RB}},
3482{"mtsrin", X(31,242), XRA_MASK, PPC32, {RS, RB}},
3483{"mtsri", X(31,242), XRA_MASK, POWER32, {RS, RB}},
418c1742 3484
de866fcc 3485{"dcbtst", X(31,246), X_MASK, PPC, {CT, RA, RB}},
418c1742 3486
de866fcc 3487{"stbux", X(31,247), X_MASK, COM, {RS, RAS, RB}},
252b5132 3488
de866fcc
AM
3489{"slliq", XRC(31,248,0), X_MASK, M601, {RA, RS, SH}},
3490{"slliq.", XRC(31,248,1), X_MASK, M601, {RA, RS, SH}},
252b5132 3491
de866fcc 3492{"dcbtste", X(31,253), X_MASK, BOOKE64, {CT, RA, RB}},
f509565f 3493
de866fcc 3494{"stbuxe", X(31,255), X_MASK, BOOKE64, {RS, RAS, RB}},
252b5132 3495
19a6653c
AM
3496{"dcbtstep", XRT(31,255,0), X_MASK, E500MC, {RT, RA, RB}},
3497
de866fcc 3498{"mfdcrx", X(31,259), X_MASK, BOOKE, {RS, RA}},
252b5132 3499
de866fcc 3500{"icbt", X(31,262), XRT_MASK, PPC403, {RA, RB}},
1ed8e1e4 3501
de866fcc
AM
3502{"doz", XO(31,264,0,0), XO_MASK, M601, {RT, RA, RB}},
3503{"doz.", XO(31,264,0,1), XO_MASK, M601, {RT, RA, RB}},
252b5132 3504
de866fcc
AM
3505{"add", XO(31,266,0,0), XO_MASK, PPCCOM, {RT, RA, RB}},
3506{"cax", XO(31,266,0,0), XO_MASK, PWRCOM, {RT, RA, RB}},
3507{"add.", XO(31,266,0,1), XO_MASK, PPCCOM, {RT, RA, RB}},
3508{"cax.", XO(31,266,0,1), XO_MASK, PWRCOM, {RT, RA, RB}},
418c1742 3509
19a6653c
AM
3510{"ehpriv", X(31,270), 0xffffffff, E500MC, {0}},
3511
de866fcc 3512{"tlbiel", X(31,274), XRTLRA_MASK, POWER4, {RB, L}},
418c1742 3513
de866fcc 3514{"mfapidi", X(31,275), X_MASK, BOOKE, {RT, RA}},
252b5132 3515
de866fcc
AM
3516{"lscbx", XRC(31,277,0), X_MASK, M601, {RT, RA, RB}},
3517{"lscbx.", XRC(31,277,1), X_MASK, M601, {RT, RA, RB}},
23976049 3518
de866fcc
AM
3519{"dcbt", X(31,278), X_MASK, PPC, {CT, RA, RB}},
3520
3521{"lhzx", X(31,279), X_MASK, COM, {RT, RA0, RB}},
3522
3523{"eqv", XRC(31,284,0), X_MASK, COM, {RA, RS, RB}},
3524{"eqv.", XRC(31,284,1), X_MASK, COM, {RA, RS, RB}},
3525
3526{"dcbte", X(31,286), X_MASK, BOOKE64, {CT, RA, RB}},
3527
3528{"lhzxe", X(31,287), X_MASK, BOOKE64, {RT, RA0, RB}},
19a6653c 3529{"lhepx", X(31,287), X_MASK, E500MC, {RT, RA, RB}},
de866fcc 3530
c8187e15
PB
3531{"mfdcrux", X(31,291), X_MASK, PPC464, {RS, RA}},
3532
de866fcc
AM
3533{"tlbie", X(31,306), XRTLRA_MASK, PPC, {RB, L}},
3534{"tlbi", X(31,306), XRT_MASK, POWER, {RA0, RB}},
3535
3536{"eciwx", X(31,310), X_MASK, PPC, {RT, RA, RB}},
3537
3538{"lhzux", X(31,311), X_MASK, COM, {RT, RAL, RB}},
3539
3540{"xor", XRC(31,316,0), X_MASK, COM, {RA, RS, RB}},
3541{"xor.", XRC(31,316,1), X_MASK, COM, {RA, RS, RB}},
3542
3543{"lhzuxe", X(31,319), X_MASK, BOOKE64, {RT, RAL, RB}},
3544
19a6653c
AM
3545{"dcbtep", XRT(31,319,0), X_MASK, E500MC, {RT, RA, RB}},
3546
de866fcc
AM
3547{"mfexisr", XSPR(31,323, 64), XSPR_MASK, PPC403, {RT}},
3548{"mfexier", XSPR(31,323, 66), XSPR_MASK, PPC403, {RT}},
3549{"mfbr0", XSPR(31,323,128), XSPR_MASK, PPC403, {RT}},
3550{"mfbr1", XSPR(31,323,129), XSPR_MASK, PPC403, {RT}},
3551{"mfbr2", XSPR(31,323,130), XSPR_MASK, PPC403, {RT}},
3552{"mfbr3", XSPR(31,323,131), XSPR_MASK, PPC403, {RT}},
3553{"mfbr4", XSPR(31,323,132), XSPR_MASK, PPC403, {RT}},
3554{"mfbr5", XSPR(31,323,133), XSPR_MASK, PPC403, {RT}},
3555{"mfbr6", XSPR(31,323,134), XSPR_MASK, PPC403, {RT}},
3556{"mfbr7", XSPR(31,323,135), XSPR_MASK, PPC403, {RT}},
3557{"mfbear", XSPR(31,323,144), XSPR_MASK, PPC403, {RT}},
3558{"mfbesr", XSPR(31,323,145), XSPR_MASK, PPC403, {RT}},
3559{"mfiocr", XSPR(31,323,160), XSPR_MASK, PPC403, {RT}},
3560{"mfdmacr0", XSPR(31,323,192), XSPR_MASK, PPC403, {RT}},
3561{"mfdmact0", XSPR(31,323,193), XSPR_MASK, PPC403, {RT}},
3562{"mfdmada0", XSPR(31,323,194), XSPR_MASK, PPC403, {RT}},
3563{"mfdmasa0", XSPR(31,323,195), XSPR_MASK, PPC403, {RT}},
3564{"mfdmacc0", XSPR(31,323,196), XSPR_MASK, PPC403, {RT}},
3565{"mfdmacr1", XSPR(31,323,200), XSPR_MASK, PPC403, {RT}},
3566{"mfdmact1", XSPR(31,323,201), XSPR_MASK, PPC403, {RT}},
3567{"mfdmada1", XSPR(31,323,202), XSPR_MASK, PPC403, {RT}},
3568{"mfdmasa1", XSPR(31,323,203), XSPR_MASK, PPC403, {RT}},
3569{"mfdmacc1", XSPR(31,323,204), XSPR_MASK, PPC403, {RT}},
3570{"mfdmacr2", XSPR(31,323,208), XSPR_MASK, PPC403, {RT}},
3571{"mfdmact2", XSPR(31,323,209), XSPR_MASK, PPC403, {RT}},
3572{"mfdmada2", XSPR(31,323,210), XSPR_MASK, PPC403, {RT}},
3573{"mfdmasa2", XSPR(31,323,211), XSPR_MASK, PPC403, {RT}},
3574{"mfdmacc2", XSPR(31,323,212), XSPR_MASK, PPC403, {RT}},
3575{"mfdmacr3", XSPR(31,323,216), XSPR_MASK, PPC403, {RT}},
3576{"mfdmact3", XSPR(31,323,217), XSPR_MASK, PPC403, {RT}},
3577{"mfdmada3", XSPR(31,323,218), XSPR_MASK, PPC403, {RT}},
3578{"mfdmasa3", XSPR(31,323,219), XSPR_MASK, PPC403, {RT}},
3579{"mfdmacc3", XSPR(31,323,220), XSPR_MASK, PPC403, {RT}},
3580{"mfdmasr", XSPR(31,323,224), XSPR_MASK, PPC403, {RT}},
3581{"mfdcr", X(31,323), X_MASK, PPC403|BOOKE, {RT, SPR}},
3582
3583{"div", XO(31,331,0,0), XO_MASK, M601, {RT, RA, RB}},
3584{"div.", XO(31,331,0,1), XO_MASK, M601, {RT, RA, RB}},
3585
3586{"mfpmr", X(31,334), X_MASK, PPCPMR, {RT, PMR}},
3587
3588{"mfmq", XSPR(31,339, 0), XSPR_MASK, M601, {RT}},
3589{"mfxer", XSPR(31,339, 1), XSPR_MASK, COM, {RT}},
3590{"mfrtcu", XSPR(31,339, 4), XSPR_MASK, COM, {RT}},
3591{"mfrtcl", XSPR(31,339, 5), XSPR_MASK, COM, {RT}},
3592{"mfdec", XSPR(31,339, 6), XSPR_MASK, MFDEC1, {RT}},
3593{"mflr", XSPR(31,339, 8), XSPR_MASK, COM, {RT}},
3594{"mfctr", XSPR(31,339, 9), XSPR_MASK, COM, {RT}},
3595{"mftid", XSPR(31,339, 17), XSPR_MASK, POWER, {RT}},
3596{"mfdsisr", XSPR(31,339, 18), XSPR_MASK, COM, {RT}},
3597{"mfdar", XSPR(31,339, 19), XSPR_MASK, COM, {RT}},
3598{"mfdec", XSPR(31,339, 22), XSPR_MASK, MFDEC2, {RT}},
3599{"mfsdr0", XSPR(31,339, 24), XSPR_MASK, POWER, {RT}},
3600{"mfsdr1", XSPR(31,339, 25), XSPR_MASK, COM, {RT}},
3601{"mfsrr0", XSPR(31,339, 26), XSPR_MASK, COM, {RT}},
3602{"mfsrr1", XSPR(31,339, 27), XSPR_MASK, COM, {RT}},
3603{"mfcfar", XSPR(31,339, 28), XSPR_MASK, POWER6, {RT}},
3604{"mfpid", XSPR(31,339, 48), XSPR_MASK, BOOKE, {RT}},
3605{"mfcsrr0", XSPR(31,339, 58), XSPR_MASK, BOOKE, {RT}},
3606{"mfcsrr1", XSPR(31,339, 59), XSPR_MASK, BOOKE, {RT}},
3607{"mfdear", XSPR(31,339, 61), XSPR_MASK, BOOKE, {RT}},
3608{"mfesr", XSPR(31,339, 62), XSPR_MASK, BOOKE, {RT}},
3609{"mfivpr", XSPR(31,339, 63), XSPR_MASK, BOOKE, {RT}},
3610{"mfcmpa", XSPR(31,339,144), XSPR_MASK, PPC860, {RT}},
3611{"mfcmpb", XSPR(31,339,145), XSPR_MASK, PPC860, {RT}},
3612{"mfcmpc", XSPR(31,339,146), XSPR_MASK, PPC860, {RT}},
3613{"mfcmpd", XSPR(31,339,147), XSPR_MASK, PPC860, {RT}},
3614{"mficr", XSPR(31,339,148), XSPR_MASK, PPC860, {RT}},
3615{"mfder", XSPR(31,339,149), XSPR_MASK, PPC860, {RT}},
3616{"mfcounta", XSPR(31,339,150), XSPR_MASK, PPC860, {RT}},
3617{"mfcountb", XSPR(31,339,151), XSPR_MASK, PPC860, {RT}},
3618{"mfcmpe", XSPR(31,339,152), XSPR_MASK, PPC860, {RT}},
3619{"mfcmpf", XSPR(31,339,153), XSPR_MASK, PPC860, {RT}},
3620{"mfcmpg", XSPR(31,339,154), XSPR_MASK, PPC860, {RT}},
3621{"mfcmph", XSPR(31,339,155), XSPR_MASK, PPC860, {RT}},
3622{"mflctrl1", XSPR(31,339,156), XSPR_MASK, PPC860, {RT}},
3623{"mflctrl2", XSPR(31,339,157), XSPR_MASK, PPC860, {RT}},
3624{"mfictrl", XSPR(31,339,158), XSPR_MASK, PPC860, {RT}},
3625{"mfbar", XSPR(31,339,159), XSPR_MASK, PPC860, {RT}},
3626{"mfvrsave", XSPR(31,339,256), XSPR_MASK, PPCVEC, {RT}},
3627{"mfusprg0", XSPR(31,339,256), XSPR_MASK, BOOKE, {RT}},
3628{"mfsprg", XSPR(31,339,256), XSPRG_MASK, PPC, {RT, SPRG}},
3629{"mfsprg4", XSPR(31,339,260), XSPR_MASK, PPC405|BOOKE, {RT}},
3630{"mfsprg5", XSPR(31,339,261), XSPR_MASK, PPC405|BOOKE, {RT}},
3631{"mfsprg6", XSPR(31,339,262), XSPR_MASK, PPC405|BOOKE, {RT}},
3632{"mfsprg7", XSPR(31,339,263), XSPR_MASK, PPC405|BOOKE, {RT}},
3633{"mftb", XSPR(31,339,268), XSPR_MASK, BOOKE, {RT}},
3634{"mftbl", XSPR(31,339,268), XSPR_MASK, BOOKE, {RT}},
3635{"mftbu", XSPR(31,339,269), XSPR_MASK, BOOKE, {RT}},
3636{"mfsprg0", XSPR(31,339,272), XSPR_MASK, PPC, {RT}},
3637{"mfsprg1", XSPR(31,339,273), XSPR_MASK, PPC, {RT}},
3638{"mfsprg2", XSPR(31,339,274), XSPR_MASK, PPC, {RT}},
3639{"mfsprg3", XSPR(31,339,275), XSPR_MASK, PPC, {RT}},
3640{"mfasr", XSPR(31,339,280), XSPR_MASK, PPC64, {RT}},
3641{"mfear", XSPR(31,339,282), XSPR_MASK, PPC, {RT}},
3642{"mfpir", XSPR(31,339,286), XSPR_MASK, BOOKE, {RT}},
3643{"mfpvr", XSPR(31,339,287), XSPR_MASK, PPC, {RT}},
3644{"mfdbsr", XSPR(31,339,304), XSPR_MASK, BOOKE, {RT}},
3645{"mfdbcr0", XSPR(31,339,308), XSPR_MASK, BOOKE, {RT}},
3646{"mfdbcr1", XSPR(31,339,309), XSPR_MASK, BOOKE, {RT}},
3647{"mfdbcr2", XSPR(31,339,310), XSPR_MASK, BOOKE, {RT}},
3648{"mfiac1", XSPR(31,339,312), XSPR_MASK, BOOKE, {RT}},
3649{"mfiac2", XSPR(31,339,313), XSPR_MASK, BOOKE, {RT}},
3650{"mfiac3", XSPR(31,339,314), XSPR_MASK, BOOKE, {RT}},
3651{"mfiac4", XSPR(31,339,315), XSPR_MASK, BOOKE, {RT}},
3652{"mfdac1", XSPR(31,339,316), XSPR_MASK, BOOKE, {RT}},
3653{"mfdac2", XSPR(31,339,317), XSPR_MASK, BOOKE, {RT}},
3654{"mfdvc1", XSPR(31,339,318), XSPR_MASK, BOOKE, {RT}},
3655{"mfdvc2", XSPR(31,339,319), XSPR_MASK, BOOKE, {RT}},
3656{"mftsr", XSPR(31,339,336), XSPR_MASK, BOOKE, {RT}},
3657{"mftcr", XSPR(31,339,340), XSPR_MASK, BOOKE, {RT}},
3658{"mfivor0", XSPR(31,339,400), XSPR_MASK, BOOKE, {RT}},
3659{"mfivor1", XSPR(31,339,401), XSPR_MASK, BOOKE, {RT}},
3660{"mfivor2", XSPR(31,339,402), XSPR_MASK, BOOKE, {RT}},
3661{"mfivor3", XSPR(31,339,403), XSPR_MASK, BOOKE, {RT}},
3662{"mfivor4", XSPR(31,339,404), XSPR_MASK, BOOKE, {RT}},
3663{"mfivor5", XSPR(31,339,405), XSPR_MASK, BOOKE, {RT}},
3664{"mfivor6", XSPR(31,339,406), XSPR_MASK, BOOKE, {RT}},
3665{"mfivor7", XSPR(31,339,407), XSPR_MASK, BOOKE, {RT}},
3666{"mfivor8", XSPR(31,339,408), XSPR_MASK, BOOKE, {RT}},
3667{"mfivor9", XSPR(31,339,409), XSPR_MASK, BOOKE, {RT}},
3668{"mfivor10", XSPR(31,339,410), XSPR_MASK, BOOKE, {RT}},
3669{"mfivor11", XSPR(31,339,411), XSPR_MASK, BOOKE, {RT}},
3670{"mfivor12", XSPR(31,339,412), XSPR_MASK, BOOKE, {RT}},
3671{"mfivor13", XSPR(31,339,413), XSPR_MASK, BOOKE, {RT}},
3672{"mfivor14", XSPR(31,339,414), XSPR_MASK, BOOKE, {RT}},
3673{"mfivor15", XSPR(31,339,415), XSPR_MASK, BOOKE, {RT}},
3674{"mfspefscr", XSPR(31,339,512), XSPR_MASK, PPCSPE, {RT}},
3675{"mfbbear", XSPR(31,339,513), XSPR_MASK, PPCBRLK, {RT}},
3676{"mfbbtar", XSPR(31,339,514), XSPR_MASK, PPCBRLK, {RT}},
3677{"mfivor32", XSPR(31,339,528), XSPR_MASK, PPCSPE, {RT}},
3678{"mfibatu", XSPR(31,339,528), XSPRBAT_MASK, PPC, {RT, SPRBAT}},
3679{"mfivor33", XSPR(31,339,529), XSPR_MASK, PPCSPE, {RT}},
3680{"mfibatl", XSPR(31,339,529), XSPRBAT_MASK, PPC, {RT, SPRBAT}},
3681{"mfivor34", XSPR(31,339,530), XSPR_MASK, PPCSPE, {RT}},
3682{"mfivor35", XSPR(31,339,531), XSPR_MASK, PPCPMR, {RT}},
3683{"mfdbatu", XSPR(31,339,536), XSPRBAT_MASK, PPC, {RT, SPRBAT}},
3684{"mfdbatl", XSPR(31,339,537), XSPRBAT_MASK, PPC, {RT, SPRBAT}},
3685{"mfic_cst", XSPR(31,339,560), XSPR_MASK, PPC860, {RT}},
3686{"mfic_adr", XSPR(31,339,561), XSPR_MASK, PPC860, {RT}},
3687{"mfic_dat", XSPR(31,339,562), XSPR_MASK, PPC860, {RT}},
3688{"mfdc_cst", XSPR(31,339,568), XSPR_MASK, PPC860, {RT}},
3689{"mfdc_adr", XSPR(31,339,569), XSPR_MASK, PPC860, {RT}},
3690{"mfdc_dat", XSPR(31,339,570), XSPR_MASK, PPC860, {RT}},
3691{"mfmcsrr0", XSPR(31,339,570), XSPR_MASK, PPCRFMCI, {RT}},
3692{"mfmcsrr1", XSPR(31,339,571), XSPR_MASK, PPCRFMCI, {RT}},
3693{"mfmcsr", XSPR(31,339,572), XSPR_MASK, PPCRFMCI, {RT}},
3694{"mfmcar", XSPR(31,339,573), XSPR_MASK, PPCRFMCI, {RT}},
3695{"mfdpdr", XSPR(31,339,630), XSPR_MASK, PPC860, {RT}},
3696{"mfdpir", XSPR(31,339,631), XSPR_MASK, PPC860, {RT}},
3697{"mfimmr", XSPR(31,339,638), XSPR_MASK, PPC860, {RT}},
3698{"mfmi_ctr", XSPR(31,339,784), XSPR_MASK, PPC860, {RT}},
3699{"mfmi_ap", XSPR(31,339,786), XSPR_MASK, PPC860, {RT}},
3700{"mfmi_epn", XSPR(31,339,787), XSPR_MASK, PPC860, {RT}},
3701{"mfmi_twc", XSPR(31,339,789), XSPR_MASK, PPC860, {RT}},
3702{"mfmi_rpn", XSPR(31,339,790), XSPR_MASK, PPC860, {RT}},
3703{"mfmd_ctr", XSPR(31,339,792), XSPR_MASK, PPC860, {RT}},
3704{"mfm_casid", XSPR(31,339,793), XSPR_MASK, PPC860, {RT}},
3705{"mfmd_ap", XSPR(31,339,794), XSPR_MASK, PPC860, {RT}},
3706{"mfmd_epn", XSPR(31,339,795), XSPR_MASK, PPC860, {RT}},
3707{"mfmd_twb", XSPR(31,339,796), XSPR_MASK, PPC860, {RT}},
3708{"mfmd_twc", XSPR(31,339,797), XSPR_MASK, PPC860, {RT}},
3709{"mfmd_rpn", XSPR(31,339,798), XSPR_MASK, PPC860, {RT}},
3710{"mfm_tw", XSPR(31,339,799), XSPR_MASK, PPC860, {RT}},
3711{"mfmi_dbcam", XSPR(31,339,816), XSPR_MASK, PPC860, {RT}},
3712{"mfmi_dbram0", XSPR(31,339,817), XSPR_MASK, PPC860, {RT}},
3713{"mfmi_dbram1", XSPR(31,339,818), XSPR_MASK, PPC860, {RT}},
3714{"mfmd_dbcam", XSPR(31,339,824), XSPR_MASK, PPC860, {RT}},
3715{"mfmd_dbram0", XSPR(31,339,825), XSPR_MASK, PPC860, {RT}},
3716{"mfmd_dbram1", XSPR(31,339,826), XSPR_MASK, PPC860, {RT}},
3717{"mfummcr0", XSPR(31,339,936), XSPR_MASK, PPC750, {RT}},
3718{"mfupmc1", XSPR(31,339,937), XSPR_MASK, PPC750, {RT}},
3719{"mfupmc2", XSPR(31,339,938), XSPR_MASK, PPC750, {RT}},
3720{"mfusia", XSPR(31,339,939), XSPR_MASK, PPC750, {RT}},
3721{"mfummcr1", XSPR(31,339,940), XSPR_MASK, PPC750, {RT}},
3722{"mfupmc3", XSPR(31,339,941), XSPR_MASK, PPC750, {RT}},
3723{"mfupmc4", XSPR(31,339,942), XSPR_MASK, PPC750, {RT}},
3724{"mfzpr", XSPR(31,339,944), XSPR_MASK, PPC403, {RT}},
3725{"mfpid", XSPR(31,339,945), XSPR_MASK, PPC403, {RT}},
3726{"mfccr0", XSPR(31,339,947), XSPR_MASK, PPC405, {RT}},
3727{"mfiac3", XSPR(31,339,948), XSPR_MASK, PPC405, {RT}},
3728{"mfiac4", XSPR(31,339,949), XSPR_MASK, PPC405, {RT}},
3729{"mfdvc1", XSPR(31,339,950), XSPR_MASK, PPC405, {RT}},
3730{"mfdvc2", XSPR(31,339,951), XSPR_MASK, PPC405, {RT}},
3731{"mfmmcr0", XSPR(31,339,952), XSPR_MASK, PPC750, {RT}},
3732{"mfpmc1", XSPR(31,339,953), XSPR_MASK, PPC750, {RT}},
3733{"mfsgr", XSPR(31,339,953), XSPR_MASK, PPC403, {RT}},
3734{"mfdcwr", XSPR(31,339,954), XSPR_MASK, PPC403, {RT}},
3735{"mfpmc2", XSPR(31,339,954), XSPR_MASK, PPC750, {RT}},
3736{"mfsia", XSPR(31,339,955), XSPR_MASK, PPC750, {RT}},
3737{"mfsler", XSPR(31,339,955), XSPR_MASK, PPC405, {RT}},
3738{"mfmmcr1", XSPR(31,339,956), XSPR_MASK, PPC750, {RT}},
3739{"mfsu0r", XSPR(31,339,956), XSPR_MASK, PPC405, {RT}},
3740{"mfdbcr1", XSPR(31,339,957), XSPR_MASK, PPC405, {RT}},
3741{"mfpmc3", XSPR(31,339,957), XSPR_MASK, PPC750, {RT}},
3742{"mfpmc4", XSPR(31,339,958), XSPR_MASK, PPC750, {RT}},
3743{"mficdbdr", XSPR(31,339,979), XSPR_MASK, PPC403, {RT}},
3744{"mfesr", XSPR(31,339,980), XSPR_MASK, PPC403, {RT}},
3745{"mfdear", XSPR(31,339,981), XSPR_MASK, PPC403, {RT}},
3746{"mfevpr", XSPR(31,339,982), XSPR_MASK, PPC403, {RT}},
3747{"mfcdbcr", XSPR(31,339,983), XSPR_MASK, PPC403, {RT}},
3748{"mftsr", XSPR(31,339,984), XSPR_MASK, PPC403, {RT}},
3749{"mftcr", XSPR(31,339,986), XSPR_MASK, PPC403, {RT}},
3750{"mfpit", XSPR(31,339,987), XSPR_MASK, PPC403, {RT}},
3751{"mftbhi", XSPR(31,339,988), XSPR_MASK, PPC403, {RT}},
3752{"mftblo", XSPR(31,339,989), XSPR_MASK, PPC403, {RT}},
3753{"mfsrr2", XSPR(31,339,990), XSPR_MASK, PPC403, {RT}},
3754{"mfsrr3", XSPR(31,339,991), XSPR_MASK, PPC403, {RT}},
3755{"mfdbsr", XSPR(31,339,1008), XSPR_MASK, PPC403, {RT}},
3756{"mfdbcr0", XSPR(31,339,1010), XSPR_MASK, PPC405, {RT}},
3757{"mfiac1", XSPR(31,339,1012), XSPR_MASK, PPC403, {RT}},
3758{"mfiac2", XSPR(31,339,1013), XSPR_MASK, PPC403, {RT}},
3759{"mfdac1", XSPR(31,339,1014), XSPR_MASK, PPC403, {RT}},
3760{"mfdac2", XSPR(31,339,1015), XSPR_MASK, PPC403, {RT}},
3761{"mfl2cr", XSPR(31,339,1017), XSPR_MASK, PPC750, {RT}},
3762{"mfdccr", XSPR(31,339,1018), XSPR_MASK, PPC403, {RT}},
3763{"mficcr", XSPR(31,339,1019), XSPR_MASK, PPC403, {RT}},
3764{"mfictc", XSPR(31,339,1019), XSPR_MASK, PPC750, {RT}},
3765{"mfpbl1", XSPR(31,339,1020), XSPR_MASK, PPC403, {RT}},
3766{"mfthrm1", XSPR(31,339,1020), XSPR_MASK, PPC750, {RT}},
3767{"mfpbu1", XSPR(31,339,1021), XSPR_MASK, PPC403, {RT}},
3768{"mfthrm2", XSPR(31,339,1021), XSPR_MASK, PPC750, {RT}},
3769{"mfpbl2", XSPR(31,339,1022), XSPR_MASK, PPC403, {RT}},
3770{"mfthrm3", XSPR(31,339,1022), XSPR_MASK, PPC750, {RT}},
3771{"mfpbu2", XSPR(31,339,1023), XSPR_MASK, PPC403, {RT}},
3772{"mfspr", X(31,339), X_MASK, COM, {RT, SPR}},
3773
3774{"lwax", X(31,341), X_MASK, PPC64, {RT, RA0, RB}},
3775
3776{"dst", XDSS(31,342,0), XDSS_MASK, PPCVEC, {RA, RB, STRM}},
3777
3778{"lhax", X(31,343), X_MASK, COM, {RT, RA0, RB}},
3779
3780{"lhaxe", X(31,351), X_MASK, BOOKE64, {RT, RA0, RB}},
3781
3782{"lvxl", X(31,359), X_MASK, PPCVEC, {VD, RA, RB}},
3783
3784{"abs", XO(31,360,0,0), XORB_MASK, M601, {RT, RA}},
3785{"abs.", XO(31,360,0,1), XORB_MASK, M601, {RT, RA}},
3786
3787{"divs", XO(31,363,0,0), XO_MASK, M601, {RT, RA, RB}},
3788{"divs.", XO(31,363,0,1), XO_MASK, M601, {RT, RA, RB}},
3789
3790{"tlbia", X(31,370), 0xffffffff, PPC, {0}},
3791
3792{"mftbl", XSPR(31,371,268), XSPR_MASK, CLASSIC, {RT}},
3793{"mftbu", XSPR(31,371,269), XSPR_MASK, CLASSIC, {RT}},
3794{"mftb", X(31,371), X_MASK, CLASSIC, {RT, TBR}},
3795
3796{"lwaux", X(31,373), X_MASK, PPC64, {RT, RAL, RB}},
3797
3798{"dstst", XDSS(31,374,0), XDSS_MASK, PPCVEC, {RA, RB, STRM}},
3799
3800{"lhaux", X(31,375), X_MASK, COM, {RT, RAL, RB}},
3801
3802{"lhauxe", X(31,383), X_MASK, BOOKE64, {RT, RAL, RB}},
3803
3804{"mtdcrx", X(31,387), X_MASK, BOOKE, {RA, RS}},
3805
3806{"dcblc", X(31,390), X_MASK, PPCCHLK, {CT, RA, RB}},
3807
3808{"subfe64", XO(31,392,0,0), XO_MASK, BOOKE64, {RT, RA, RB}},
3809
3810{"adde64", XO(31,394,0,0), XO_MASK, BOOKE64, {RT, RA, RB}},
3811
3812{"dcblce", X(31,398), X_MASK, PPCCHLK64, {CT, RA, RB}},
3813
3814{"slbmte", X(31,402), XRA_MASK, PPC64, {RS, RB}},
3815
3816{"sthx", X(31,407), X_MASK, COM, {RS, RA0, RB}},
3817
3818{"orc", XRC(31,412,0), X_MASK, COM, {RA, RS, RB}},
3819{"orc.", XRC(31,412,1), X_MASK, COM, {RA, RS, RB}},
3820
3821{"sthxe", X(31,415), X_MASK, BOOKE64, {RS, RA0, RB}},
19a6653c 3822{"sthepx", X(31,415), X_MASK, E500MC, {RS, RA, RB}},
de866fcc 3823
c8187e15
PB
3824{"mtdcrux", X(31,419), X_MASK, PPC464, {RA, RS}},
3825
de866fcc
AM
3826{"slbie", X(31,434), XRTRA_MASK, PPC64, {RB}},
3827
3828{"ecowx", X(31,438), X_MASK, PPC, {RT, RA, RB}},
3829
3830{"sthux", X(31,439), X_MASK, COM, {RS, RAS, RB}},
3831
19a6653c
AM
3832{"mdors", 0x7f9ce378, 0xffffffff, E500MC, {0}},
3833
de866fcc
AM
3834{"mr", XRC(31,444,0), X_MASK, COM, {RA, RS, RBS}},
3835{"or", XRC(31,444,0), X_MASK, COM, {RA, RS, RB}},
3836{"mr.", XRC(31,444,1), X_MASK, COM, {RA, RS, RBS}},
3837{"or.", XRC(31,444,1), X_MASK, COM, {RA, RS, RB}},
3838
3839{"sthuxe", X(31,447), X_MASK, BOOKE64, {RS, RAS, RB}},
3840
3841{"mtexisr", XSPR(31,451, 64), XSPR_MASK, PPC403, {RS}},
3842{"mtexier", XSPR(31,451, 66), XSPR_MASK, PPC403, {RS}},
3843{"mtbr0", XSPR(31,451,128), XSPR_MASK, PPC403, {RS}},
3844{"mtbr1", XSPR(31,451,129), XSPR_MASK, PPC403, {RS}},
3845{"mtbr2", XSPR(31,451,130), XSPR_MASK, PPC403, {RS}},
3846{"mtbr3", XSPR(31,451,131), XSPR_MASK, PPC403, {RS}},
3847{"mtbr4", XSPR(31,451,132), XSPR_MASK, PPC403, {RS}},
3848{"mtbr5", XSPR(31,451,133), XSPR_MASK, PPC403, {RS}},
3849{"mtbr6", XSPR(31,451,134), XSPR_MASK, PPC403, {RS}},
3850{"mtbr7", XSPR(31,451,135), XSPR_MASK, PPC403, {RS}},
3851{"mtbear", XSPR(31,451,144), XSPR_MASK, PPC403, {RS}},
3852{"mtbesr", XSPR(31,451,145), XSPR_MASK, PPC403, {RS}},
3853{"mtiocr", XSPR(31,451,160), XSPR_MASK, PPC403, {RS}},
3854{"mtdmacr0", XSPR(31,451,192), XSPR_MASK, PPC403, {RS}},
3855{"mtdmact0", XSPR(31,451,193), XSPR_MASK, PPC403, {RS}},
3856{"mtdmada0", XSPR(31,451,194), XSPR_MASK, PPC403, {RS}},
3857{"mtdmasa0", XSPR(31,451,195), XSPR_MASK, PPC403, {RS}},
3858{"mtdmacc0", XSPR(31,451,196), XSPR_MASK, PPC403, {RS}},
3859{"mtdmacr1", XSPR(31,451,200), XSPR_MASK, PPC403, {RS}},
3860{"mtdmact1", XSPR(31,451,201), XSPR_MASK, PPC403, {RS}},
3861{"mtdmada1", XSPR(31,451,202), XSPR_MASK, PPC403, {RS}},
3862{"mtdmasa1", XSPR(31,451,203), XSPR_MASK, PPC403, {RS}},
3863{"mtdmacc1", XSPR(31,451,204), XSPR_MASK, PPC403, {RS}},
3864{"mtdmacr2", XSPR(31,451,208), XSPR_MASK, PPC403, {RS}},
3865{"mtdmact2", XSPR(31,451,209), XSPR_MASK, PPC403, {RS}},
3866{"mtdmada2", XSPR(31,451,210), XSPR_MASK, PPC403, {RS}},
3867{"mtdmasa2", XSPR(31,451,211), XSPR_MASK, PPC403, {RS}},
3868{"mtdmacc2", XSPR(31,451,212), XSPR_MASK, PPC403, {RS}},
3869{"mtdmacr3", XSPR(31,451,216), XSPR_MASK, PPC403, {RS}},
3870{"mtdmact3", XSPR(31,451,217), XSPR_MASK, PPC403, {RS}},
3871{"mtdmada3", XSPR(31,451,218), XSPR_MASK, PPC403, {RS}},
3872{"mtdmasa3", XSPR(31,451,219), XSPR_MASK, PPC403, {RS}},
3873{"mtdmacc3", XSPR(31,451,220), XSPR_MASK, PPC403, {RS}},
3874{"mtdmasr", XSPR(31,451,224), XSPR_MASK, PPC403, {RS}},
3875{"mtdcr", X(31,451), X_MASK, PPC403|BOOKE, {SPR, RS}},
3876
3877{"dccci", X(31,454), XRT_MASK, PPC403|PPC440, {RA, RB}},
3878
3879{"subfze64", XO(31,456,0,0), XORB_MASK, BOOKE64, {RT, RA}},
3880
3881{"divdu", XO(31,457,0,0), XO_MASK, PPC64, {RT, RA, RB}},
3882{"divdu.", XO(31,457,0,1), XO_MASK, PPC64, {RT, RA, RB}},
3883
3884{"addze64", XO(31,458,0,0), XORB_MASK, BOOKE64, {RT, RA}},
3885
3886{"divwu", XO(31,459,0,0), XO_MASK, PPC, {RT, RA, RB}},
3887{"divwu.", XO(31,459,0,1), XO_MASK, PPC, {RT, RA, RB}},
3888
3889{"mtpmr", X(31,462), X_MASK, PPCPMR, {PMR, RS}},
3890
3891{"mtmq", XSPR(31,467, 0), XSPR_MASK, M601, {RS}},
3892{"mtxer", XSPR(31,467, 1), XSPR_MASK, COM, {RS}},
3893{"mtlr", XSPR(31,467, 8), XSPR_MASK, COM, {RS}},
3894{"mtctr", XSPR(31,467, 9), XSPR_MASK, COM, {RS}},
3895{"mttid", XSPR(31,467, 17), XSPR_MASK, POWER, {RS}},
3896{"mtdsisr", XSPR(31,467, 18), XSPR_MASK, COM, {RS}},
3897{"mtdar", XSPR(31,467, 19), XSPR_MASK, COM, {RS}},
3898{"mtrtcu", XSPR(31,467, 20), XSPR_MASK, COM, {RS}},
3899{"mtrtcl", XSPR(31,467, 21), XSPR_MASK, COM, {RS}},
3900{"mtdec", XSPR(31,467, 22), XSPR_MASK, COM, {RS}},
3901{"mtsdr0", XSPR(31,467, 24), XSPR_MASK, POWER, {RS}},
3902{"mtsdr1", XSPR(31,467, 25), XSPR_MASK, COM, {RS}},
3903{"mtsrr0", XSPR(31,467, 26), XSPR_MASK, COM, {RS}},
3904{"mtsrr1", XSPR(31,467, 27), XSPR_MASK, COM, {RS}},
3905{"mtcfar", XSPR(31,467, 28), XSPR_MASK, POWER6, {RS}},
3906{"mtpid", XSPR(31,467, 48), XSPR_MASK, BOOKE, {RS}},
3907{"mtdecar", XSPR(31,467, 54), XSPR_MASK, BOOKE, {RS}},
3908{"mtcsrr0", XSPR(31,467, 58), XSPR_MASK, BOOKE, {RS}},
3909{"mtcsrr1", XSPR(31,467, 59), XSPR_MASK, BOOKE, {RS}},
3910{"mtdear", XSPR(31,467, 61), XSPR_MASK, BOOKE, {RS}},
3911{"mtesr", XSPR(31,467, 62), XSPR_MASK, BOOKE, {RS}},
3912{"mtivpr", XSPR(31,467, 63), XSPR_MASK, BOOKE, {RS}},
3913{"mtcmpa", XSPR(31,467,144), XSPR_MASK, PPC860, {RS}},
3914{"mtcmpb", XSPR(31,467,145), XSPR_MASK, PPC860, {RS}},
3915{"mtcmpc", XSPR(31,467,146), XSPR_MASK, PPC860, {RS}},
3916{"mtcmpd", XSPR(31,467,147), XSPR_MASK, PPC860, {RS}},
3917{"mticr", XSPR(31,467,148), XSPR_MASK, PPC860, {RS}},
3918{"mtder", XSPR(31,467,149), XSPR_MASK, PPC860, {RS}},
3919{"mtcounta", XSPR(31,467,150), XSPR_MASK, PPC860, {RS}},
3920{"mtcountb", XSPR(31,467,151), XSPR_MASK, PPC860, {RS}},
3921{"mtcmpe", XSPR(31,467,152), XSPR_MASK, PPC860, {RS}},
3922{"mtcmpf", XSPR(31,467,153), XSPR_MASK, PPC860, {RS}},
3923{"mtcmpg", XSPR(31,467,154), XSPR_MASK, PPC860, {RS}},
3924{"mtcmph", XSPR(31,467,155), XSPR_MASK, PPC860, {RS}},
3925{"mtlctrl1", XSPR(31,467,156), XSPR_MASK, PPC860, {RS}},
3926{"mtlctrl2", XSPR(31,467,157), XSPR_MASK, PPC860, {RS}},
3927{"mtictrl", XSPR(31,467,158), XSPR_MASK, PPC860, {RS}},
3928{"mtbar", XSPR(31,467,159), XSPR_MASK, PPC860, {RS}},
3929{"mtvrsave", XSPR(31,467,256), XSPR_MASK, PPCVEC, {RS}},
3930{"mtusprg0", XSPR(31,467,256), XSPR_MASK, BOOKE, {RS}},
3931{"mtsprg", XSPR(31,467,256), XSPRG_MASK,PPC, {SPRG, RS}},
3932{"mtsprg0", XSPR(31,467,272), XSPR_MASK, PPC, {RS}},
3933{"mtsprg1", XSPR(31,467,273), XSPR_MASK, PPC, {RS}},
3934{"mtsprg2", XSPR(31,467,274), XSPR_MASK, PPC, {RS}},
3935{"mtsprg3", XSPR(31,467,275), XSPR_MASK, PPC, {RS}},
3936{"mtsprg4", XSPR(31,467,276), XSPR_MASK, PPC405|BOOKE, {RS}},
3937{"mtsprg5", XSPR(31,467,277), XSPR_MASK, PPC405|BOOKE, {RS}},
3938{"mtsprg6", XSPR(31,467,278), XSPR_MASK, PPC405|BOOKE, {RS}},
3939{"mtsprg7", XSPR(31,467,279), XSPR_MASK, PPC405|BOOKE, {RS}},
3940{"mtasr", XSPR(31,467,280), XSPR_MASK, PPC64, {RS}},
3941{"mtear", XSPR(31,467,282), XSPR_MASK, PPC, {RS}},
3942{"mttbl", XSPR(31,467,284), XSPR_MASK, PPC, {RS}},
3943{"mttbu", XSPR(31,467,285), XSPR_MASK, PPC, {RS}},
3944{"mtdbsr", XSPR(31,467,304), XSPR_MASK, BOOKE, {RS}},
3945{"mtdbcr0", XSPR(31,467,308), XSPR_MASK, BOOKE, {RS}},
3946{"mtdbcr1", XSPR(31,467,309), XSPR_MASK, BOOKE, {RS}},
3947{"mtdbcr2", XSPR(31,467,310), XSPR_MASK, BOOKE, {RS}},
3948{"mtiac1", XSPR(31,467,312), XSPR_MASK, BOOKE, {RS}},
3949{"mtiac2", XSPR(31,467,313), XSPR_MASK, BOOKE, {RS}},
3950{"mtiac3", XSPR(31,467,314), XSPR_MASK, BOOKE, {RS}},
3951{"mtiac4", XSPR(31,467,315), XSPR_MASK, BOOKE, {RS}},
3952{"mtdac1", XSPR(31,467,316), XSPR_MASK, BOOKE, {RS}},
3953{"mtdac2", XSPR(31,467,317), XSPR_MASK, BOOKE, {RS}},
3954{"mtdvc1", XSPR(31,467,318), XSPR_MASK, BOOKE, {RS}},
3955{"mtdvc2", XSPR(31,467,319), XSPR_MASK, BOOKE, {RS}},
3956{"mttsr", XSPR(31,467,336), XSPR_MASK, BOOKE, {RS}},
3957{"mttcr", XSPR(31,467,340), XSPR_MASK, BOOKE, {RS}},
3958{"mtivor0", XSPR(31,467,400), XSPR_MASK, BOOKE, {RS}},
3959{"mtivor1", XSPR(31,467,401), XSPR_MASK, BOOKE, {RS}},
3960{"mtivor2", XSPR(31,467,402), XSPR_MASK, BOOKE, {RS}},
3961{"mtivor3", XSPR(31,467,403), XSPR_MASK, BOOKE, {RS}},
3962{"mtivor4", XSPR(31,467,404), XSPR_MASK, BOOKE, {RS}},
3963{"mtivor5", XSPR(31,467,405), XSPR_MASK, BOOKE, {RS}},
3964{"mtivor6", XSPR(31,467,406), XSPR_MASK, BOOKE, {RS}},
3965{"mtivor7", XSPR(31,467,407), XSPR_MASK, BOOKE, {RS}},
3966{"mtivor8", XSPR(31,467,408), XSPR_MASK, BOOKE, {RS}},
3967{"mtivor9", XSPR(31,467,409), XSPR_MASK, BOOKE, {RS}},
3968{"mtivor10", XSPR(31,467,410), XSPR_MASK, BOOKE, {RS}},
3969{"mtivor11", XSPR(31,467,411), XSPR_MASK, BOOKE, {RS}},
3970{"mtivor12", XSPR(31,467,412), XSPR_MASK, BOOKE, {RS}},
3971{"mtivor13", XSPR(31,467,413), XSPR_MASK, BOOKE, {RS}},
3972{"mtivor14", XSPR(31,467,414), XSPR_MASK, BOOKE, {RS}},
3973{"mtivor15", XSPR(31,467,415), XSPR_MASK, BOOKE, {RS}},
3974{"mtspefscr", XSPR(31,467,512), XSPR_MASK, PPCSPE, {RS}},
3975{"mtbbear", XSPR(31,467,513), XSPR_MASK, PPCBRLK, {RS}},
3976{"mtbbtar", XSPR(31,467,514), XSPR_MASK, PPCBRLK, {RS}},
3977{"mtivor32", XSPR(31,467,528), XSPR_MASK, PPCSPE, {RS}},
3978{"mtibatu", XSPR(31,467,528), XSPRBAT_MASK, PPC, {SPRBAT, RS}},
3979{"mtivor33", XSPR(31,467,529), XSPR_MASK, PPCSPE, {RS}},
3980{"mtibatl", XSPR(31,467,529), XSPRBAT_MASK, PPC, {SPRBAT, RS}},
3981{"mtivor34", XSPR(31,467,530), XSPR_MASK, PPCSPE, {RS}},
3982{"mtivor35", XSPR(31,467,531), XSPR_MASK, PPCPMR, {RS}},
3983{"mtdbatu", XSPR(31,467,536), XSPRBAT_MASK, PPC, {SPRBAT, RS}},
3984{"mtdbatl", XSPR(31,467,537), XSPRBAT_MASK, PPC, {SPRBAT, RS}},
3985{"mtmcsrr0", XSPR(31,467,570), XSPR_MASK, PPCRFMCI, {RS}},
3986{"mtmcsrr1", XSPR(31,467,571), XSPR_MASK, PPCRFMCI, {RS}},
3987{"mtmcsr", XSPR(31,467,572), XSPR_MASK, PPCRFMCI, {RS}},
3988{"mtummcr0", XSPR(31,467,936), XSPR_MASK, PPC750, {RS}},
3989{"mtupmc1", XSPR(31,467,937), XSPR_MASK, PPC750, {RS}},
3990{"mtupmc2", XSPR(31,467,938), XSPR_MASK, PPC750, {RS}},
3991{"mtusia", XSPR(31,467,939), XSPR_MASK, PPC750, {RS}},
3992{"mtummcr1", XSPR(31,467,940), XSPR_MASK, PPC750, {RS}},
3993{"mtupmc3", XSPR(31,467,941), XSPR_MASK, PPC750, {RS}},
3994{"mtupmc4", XSPR(31,467,942), XSPR_MASK, PPC750, {RS}},
3995{"mtzpr", XSPR(31,467,944), XSPR_MASK, PPC403, {RS}},
3996{"mtpid", XSPR(31,467,945), XSPR_MASK, PPC403, {RS}},
3997{"mtccr0", XSPR(31,467,947), XSPR_MASK, PPC405, {RS}},
3998{"mtiac3", XSPR(31,467,948), XSPR_MASK, PPC405, {RS}},
3999{"mtiac4", XSPR(31,467,949), XSPR_MASK, PPC405, {RS}},
4000{"mtdvc1", XSPR(31,467,950), XSPR_MASK, PPC405, {RS}},
4001{"mtdvc2", XSPR(31,467,951), XSPR_MASK, PPC405, {RS}},
4002{"mtmmcr0", XSPR(31,467,952), XSPR_MASK, PPC750, {RS}},
4003{"mtpmc1", XSPR(31,467,953), XSPR_MASK, PPC750, {RS}},
4004{"mtsgr", XSPR(31,467,953), XSPR_MASK, PPC403, {RS}},
4005{"mtdcwr", XSPR(31,467,954), XSPR_MASK, PPC403, {RS}},
4006{"mtpmc2", XSPR(31,467,954), XSPR_MASK, PPC750, {RS}},
4007{"mtsia", XSPR(31,467,955), XSPR_MASK, PPC750, {RS}},
4008{"mtsler", XSPR(31,467,955), XSPR_MASK, PPC405, {RS}},
4009{"mtmmcr1", XSPR(31,467,956), XSPR_MASK, PPC750, {RS}},
4010{"mtsu0r", XSPR(31,467,956), XSPR_MASK, PPC405, {RS}},
4011{"mtdbcr1", XSPR(31,467,957), XSPR_MASK, PPC405, {RS}},
4012{"mtpmc3", XSPR(31,467,957), XSPR_MASK, PPC750, {RS}},
4013{"mtpmc4", XSPR(31,467,958), XSPR_MASK, PPC750, {RS}},
4014{"mticdbdr", XSPR(31,467,979), XSPR_MASK, PPC403, {RS}},
4015{"mtesr", XSPR(31,467,980), XSPR_MASK, PPC403, {RS}},
4016{"mtdear", XSPR(31,467,981), XSPR_MASK, PPC403, {RS}},
4017{"mtevpr", XSPR(31,467,982), XSPR_MASK, PPC403, {RS}},
4018{"mtcdbcr", XSPR(31,467,983), XSPR_MASK, PPC403, {RS}},
4019{"mttsr", XSPR(31,467,984), XSPR_MASK, PPC403, {RS}},
4020{"mttcr", XSPR(31,467,986), XSPR_MASK, PPC403, {RS}},
4021{"mtpit", XSPR(31,467,987), XSPR_MASK, PPC403, {RS}},
4022{"mttbhi", XSPR(31,467,988), XSPR_MASK, PPC403, {RS}},
4023{"mttblo", XSPR(31,467,989), XSPR_MASK, PPC403, {RS}},
4024{"mtsrr2", XSPR(31,467,990), XSPR_MASK, PPC403, {RS}},
4025{"mtsrr3", XSPR(31,467,991), XSPR_MASK, PPC403, {RS}},
4026{"mtdbsr", XSPR(31,467,1008), XSPR_MASK, PPC403, {RS}},
4027{"mtdbcr0", XSPR(31,467,1010), XSPR_MASK, PPC405, {RS}},
4028{"mtiac1", XSPR(31,467,1012), XSPR_MASK, PPC403, {RS}},
4029{"mtiac2", XSPR(31,467,1013), XSPR_MASK, PPC403, {RS}},
4030{"mtdac1", XSPR(31,467,1014), XSPR_MASK, PPC403, {RS}},
4031{"mtdac2", XSPR(31,467,1015), XSPR_MASK, PPC403, {RS}},
4032{"mtl2cr", XSPR(31,467,1017), XSPR_MASK, PPC750, {RS}},
4033{"mtdccr", XSPR(31,467,1018), XSPR_MASK, PPC403, {RS}},
4034{"mticcr", XSPR(31,467,1019), XSPR_MASK, PPC403, {RS}},
4035{"mtictc", XSPR(31,467,1019), XSPR_MASK, PPC750, {RS}},
4036{"mtpbl1", XSPR(31,467,1020), XSPR_MASK, PPC403, {RS}},
4037{"mtthrm1", XSPR(31,467,1020), XSPR_MASK, PPC750, {RS}},
4038{"mtpbu1", XSPR(31,467,1021), XSPR_MASK, PPC403, {RS}},
4039{"mtthrm2", XSPR(31,467,1021), XSPR_MASK, PPC750, {RS}},
4040{"mtpbl2", XSPR(31,467,1022), XSPR_MASK, PPC403, {RS}},
4041{"mtthrm3", XSPR(31,467,1022), XSPR_MASK, PPC750, {RS}},
4042{"mtpbu2", XSPR(31,467,1023), XSPR_MASK, PPC403, {RS}},
4043{"mtspr", X(31,467), X_MASK, COM, {SPR, RS}},
4044
4045{"dcbi", X(31,470), XRT_MASK, PPC, {RA, RB}},
4046
4047{"nand", XRC(31,476,0), X_MASK, COM, {RA, RS, RB}},
4048{"nand.", XRC(31,476,1), X_MASK, COM, {RA, RS, RB}},
4049
4050{"dcbie", X(31,478), XRT_MASK, BOOKE64, {RA, RB}},
4051
19a6653c
AM
4052{"dsn", X(31,483), XRT_MASK, E500MC, {RA, RB}},
4053
de866fcc
AM
4054{"dcread", X(31,486), X_MASK, PPC403|PPC440, {RT, RA, RB}},
4055
4056{"icbtls", X(31,486), X_MASK, PPCCHLK, {CT, RA, RB}},
4057
4058{"stvxl", X(31,487), X_MASK, PPCVEC, {VS, RA, RB}},
4059
4060{"nabs", XO(31,488,0,0), XORB_MASK, M601, {RT, RA}},
4061{"subfme64", XO(31,488,0,0), XORB_MASK, BOOKE64, {RT, RA}},
4062{"nabs.", XO(31,488,0,1), XORB_MASK, M601, {RT, RA}},
4063
4064{"divd", XO(31,489,0,0), XO_MASK, PPC64, {RT, RA, RB}},
4065{"divd.", XO(31,489,0,1), XO_MASK, PPC64, {RT, RA, RB}},
4066
4067{"addme64", XO(31,490,0,0), XORB_MASK, BOOKE64, {RT, RA}},
4068
4069{"divw", XO(31,491,0,0), XO_MASK, PPC, {RT, RA, RB}},
4070{"divw.", XO(31,491,0,1), XO_MASK, PPC, {RT, RA, RB}},
4071
4072{"icbtlse", X(31,494), X_MASK, PPCCHLK64, {CT, RA, RB}},
4073
4074{"slbia", X(31,498), 0xffffffff, PPC64, {0}},
4075
4076{"cli", X(31,502), XRB_MASK, POWER, {RT, RA}},
252b5132 4077
de866fcc 4078{"cmpb", X(31,508), X_MASK, POWER6, {RA, RS, RB}},
252b5132 4079
de866fcc 4080{"stdcxe.", XRC(31,511,1), X_MASK, BOOKE64, {RS, RA, RB}},
23976049 4081
de866fcc 4082{"mcrxr", X(31,512), XRARB_MASK|(3<<21), COM, {BF}},
252b5132 4083
19a6653c
AM
4084{"lbdx", X(31,515), X_MASK, E500MC, {RT, RA, RB}},
4085
de866fcc 4086{"bblels", X(31,518), X_MASK, PPCBRLK, {0}},
252b5132 4087
de866fcc 4088{"lvlx", X(31,519), X_MASK, CELL, {VD, RA0, RB}},
252b5132 4089
de866fcc
AM
4090{"subfco", XO(31,8,1,0), XO_MASK, PPCCOM, {RT, RA, RB}},
4091{"sfo", XO(31,8,1,0), XO_MASK, PWRCOM, {RT, RA, RB}},
4092{"subco", XO(31,8,1,0), XO_MASK, PPC, {RT, RB, RA}},
4093{"subfco.", XO(31,8,1,1), XO_MASK, PPCCOM, {RT, RA, RB}},
4094{"sfo.", XO(31,8,1,1), XO_MASK, PWRCOM, {RT, RA, RB}},
4095{"subco.", XO(31,8,1,1), XO_MASK, PPC, {RT, RB, RA}},
252b5132 4096
de866fcc
AM
4097{"addco", XO(31,10,1,0), XO_MASK, PPCCOM, {RT, RA, RB}},
4098{"ao", XO(31,10,1,0), XO_MASK, PWRCOM, {RT, RA, RB}},
4099{"addco.", XO(31,10,1,1), XO_MASK, PPCCOM, {RT, RA, RB}},
4100{"ao.", XO(31,10,1,1), XO_MASK, PWRCOM, {RT, RA, RB}},
252b5132 4101
de866fcc 4102{"clcs", X(31,531), XRB_MASK, M601, {RT, RA}},
418c1742 4103
de866fcc 4104{"ldbrx", X(31,532), X_MASK, CELL, {RT, RA0, RB}},
418c1742 4105
de866fcc
AM
4106{"lswx", X(31,533), X_MASK, PPCCOM, {RT, RA0, RB}},
4107{"lsx", X(31,533), X_MASK, PWRCOM, {RT, RA, RB}},
252b5132 4108
de866fcc
AM
4109{"lwbrx", X(31,534), X_MASK, PPCCOM, {RT, RA0, RB}},
4110{"lbrx", X(31,534), X_MASK, PWRCOM, {RT, RA, RB}},
252b5132 4111
de866fcc 4112{"lfsx", X(31,535), X_MASK, COM, {FRT, RA0, RB}},
702f0fb4 4113
de866fcc
AM
4114{"srw", XRC(31,536,0), X_MASK, PPCCOM, {RA, RS, RB}},
4115{"sr", XRC(31,536,0), X_MASK, PWRCOM, {RA, RS, RB}},
4116{"srw.", XRC(31,536,1), X_MASK, PPCCOM, {RA, RS, RB}},
4117{"sr.", XRC(31,536,1), X_MASK, PWRCOM, {RA, RS, RB}},
252b5132 4118
de866fcc
AM
4119{"rrib", XRC(31,537,0), X_MASK, M601, {RA, RS, RB}},
4120{"rrib.", XRC(31,537,1), X_MASK, M601, {RA, RS, RB}},
23976049 4121
de866fcc
AM
4122{"srd", XRC(31,539,0), X_MASK, PPC64, {RA, RS, RB}},
4123{"srd.", XRC(31,539,1), X_MASK, PPC64, {RA, RS, RB}},
f509565f 4124
de866fcc
AM
4125{"maskir", XRC(31,541,0), X_MASK, M601, {RA, RS, RB}},
4126{"maskir.", XRC(31,541,1), X_MASK, M601, {RA, RS, RB}},
252b5132 4127
de866fcc 4128{"lwbrxe", X(31,542), X_MASK, BOOKE64, {RT, RA0, RB}},
252b5132 4129
de866fcc 4130{"lfsxe", X(31,543), X_MASK, BOOKE64, {FRT, RA0, RB}},
252b5132 4131
de866fcc 4132{"mcrxr64", X(31,544), XRARB_MASK|(3<<21), BOOKE64, {BF}},
702f0fb4 4133
19a6653c
AM
4134{"lhdx", X(31,547), X_MASK, E500MC, {RT, RA, RB}},
4135
de866fcc 4136{"bbelr", X(31,550), X_MASK, PPCBRLK, {0}},
418c1742 4137
de866fcc 4138{"lvrx", X(31,551), X_MASK, CELL, {VD, RA0, RB}},
252b5132 4139
de866fcc
AM
4140{"subfo", XO(31,40,1,0), XO_MASK, PPC, {RT, RA, RB}},
4141{"subo", XO(31,40,1,0), XO_MASK, PPC, {RT, RB, RA}},
4142{"subfo.", XO(31,40,1,1), XO_MASK, PPC, {RT, RA, RB}},
4143{"subo.", XO(31,40,1,1), XO_MASK, PPC, {RT, RB, RA}},
252b5132 4144
de866fcc 4145{"tlbsync", X(31,566), 0xffffffff, PPC, {0}},
252b5132 4146
de866fcc 4147{"lfsux", X(31,567), X_MASK, COM, {FRT, RAS, RB}},
252b5132 4148
de866fcc 4149{"lfsuxe", X(31,575), X_MASK, BOOKE64, {FRT, RAS, RB}},
252b5132 4150
19a6653c
AM
4151{"lwdx", X(31,579), X_MASK, E500MC, {RT, RA, RB}},
4152
de866fcc 4153{"mfsr", X(31,595), XRB_MASK|(1<<20), COM32, {RT, SR}},
252b5132 4154
de866fcc
AM
4155{"lswi", X(31,597), X_MASK, PPCCOM, {RT, RA0, NB}},
4156{"lsi", X(31,597), X_MASK, PWRCOM, {RT, RA0, NB}},
252b5132 4157
de866fcc
AM
4158{"msync", X(31,598), 0xffffffff, BOOKE, {0}},
4159{"lwsync", XSYNC(31,598,1), 0xffffffff, PPC, {0}},
4160{"ptesync", XSYNC(31,598,2), 0xffffffff, PPC64, {0}},
4161{"sync", X(31,598), XSYNC_MASK, PPCCOM, {LS}},
4162{"dcs", X(31,598), 0xffffffff, PWRCOM, {0}},
418c1742 4163
de866fcc 4164{"lfdx", X(31,599), X_MASK, COM, {FRT, RA0, RB}},
23976049 4165
de866fcc 4166{"lfdxe", X(31,607), X_MASK, BOOKE64, {FRT, RA0, RB}},
19a6653c 4167{"lfdepx", X(31,607), X_MASK, E500MC, {RT, RA, RB}},
de866fcc 4168{"mffgpr", XRC(31,607,0), XRA_MASK, POWER6, {FRT, RB}},
252b5132 4169
19a6653c
AM
4170{"lddx", X(31,611), X_MASK, E500MC, {RT, RA, RB}},
4171
de866fcc
AM
4172{"nego", XO(31,104,1,0), XORB_MASK, COM, {RT, RA}},
4173{"nego.", XO(31,104,1,1), XORB_MASK, COM, {RT, RA}},
252b5132 4174
de866fcc
AM
4175{"mulo", XO(31,107,1,0), XO_MASK, M601, {RT, RA, RB}},
4176{"mulo.", XO(31,107,1,1), XO_MASK, M601, {RT, RA, RB}},
252b5132 4177
de866fcc 4178{"mfsri", X(31,627), X_MASK, PWRCOM, {RT, RA, RB}},
252b5132 4179
de866fcc 4180{"dclst", X(31,630), XRB_MASK, PWRCOM, {RS, RA}},
252b5132 4181
de866fcc 4182{"lfdux", X(31,631), X_MASK, COM, {FRT, RAS, RB}},
252b5132 4183
de866fcc 4184{"lfduxe", X(31,639), X_MASK, BOOKE64, {FRT, RAS, RB}},
252b5132 4185
19a6653c
AM
4186{"stbdx", X(31,643), X_MASK, E500MC, {RS, RA, RB}},
4187
de866fcc 4188{"stvlx", X(31,647), X_MASK, CELL, {VS, RA0, RB}},
23976049 4189
de866fcc
AM
4190{"subfeo", XO(31,136,1,0), XO_MASK, PPCCOM, {RT, RA, RB}},
4191{"sfeo", XO(31,136,1,0), XO_MASK, PWRCOM, {RT, RA, RB}},
4192{"subfeo.", XO(31,136,1,1), XO_MASK, PPCCOM, {RT, RA, RB}},
4193{"sfeo.", XO(31,136,1,1), XO_MASK, PWRCOM, {RT, RA, RB}},
252b5132 4194
de866fcc
AM
4195{"addeo", XO(31,138,1,0), XO_MASK, PPCCOM, {RT, RA, RB}},
4196{"aeo", XO(31,138,1,0), XO_MASK, PWRCOM, {RT, RA, RB}},
4197{"addeo.", XO(31,138,1,1), XO_MASK, PPCCOM, {RT, RA, RB}},
4198{"aeo.", XO(31,138,1,1), XO_MASK, PWRCOM, {RT, RA, RB}},
252b5132 4199
de866fcc 4200{"mfsrin", X(31,659), XRA_MASK, PPC32, {RT, RB}},
418c1742 4201
de866fcc 4202{"stdbrx", X(31,660), X_MASK, CELL, {RS, RA0, RB}},
252b5132 4203
de866fcc
AM
4204{"stswx", X(31,661), X_MASK, PPCCOM, {RS, RA0, RB}},
4205{"stsx", X(31,661), X_MASK, PWRCOM, {RS, RA0, RB}},
418c1742 4206
de866fcc
AM
4207{"stwbrx", X(31,662), X_MASK, PPCCOM, {RS, RA0, RB}},
4208{"stbrx", X(31,662), X_MASK, PWRCOM, {RS, RA0, RB}},
252b5132 4209
de866fcc 4210{"stfsx", X(31,663), X_MASK, COM, {FRS, RA0, RB}},
ede602d7 4211
de866fcc
AM
4212{"srq", XRC(31,664,0), X_MASK, M601, {RA, RS, RB}},
4213{"srq.", XRC(31,664,1), X_MASK, M601, {RA, RS, RB}},
252b5132 4214
de866fcc
AM
4215{"sre", XRC(31,665,0), X_MASK, M601, {RA, RS, RB}},
4216{"sre.", XRC(31,665,1), X_MASK, M601, {RA, RS, RB}},
252b5132 4217
de866fcc 4218{"stwbrxe", X(31,670), X_MASK, BOOKE64, {RS, RA0, RB}},
252b5132 4219
de866fcc 4220{"stfsxe", X(31,671), X_MASK, BOOKE64, {FRS, RA0, RB}},
252b5132 4221
19a6653c
AM
4222{"sthdx", X(31,675), X_MASK, E500MC, {RS, RA, RB}},
4223
de866fcc 4224{"stvrx", X(31,679), X_MASK, CELL, {VS, RA0, RB}},
252b5132 4225
de866fcc 4226{"stfsux", X(31,695), X_MASK, COM, {FRS, RAS, RB}},
252b5132 4227
de866fcc
AM
4228{"sriq", XRC(31,696,0), X_MASK, M601, {RA, RS, SH}},
4229{"sriq.", XRC(31,696,1), X_MASK, M601, {RA, RS, SH}},
252b5132 4230
de866fcc 4231{"stfsuxe", X(31,703), X_MASK, BOOKE64, {FRS, RAS, RB}},
418c1742 4232
19a6653c
AM
4233{"stwdx", X(31,707), X_MASK, E500MC, {RS, RA, RB}},
4234
de866fcc
AM
4235{"subfzeo", XO(31,200,1,0), XORB_MASK, PPCCOM, {RT, RA}},
4236{"sfzeo", XO(31,200,1,0), XORB_MASK, PWRCOM, {RT, RA}},
4237{"subfzeo.", XO(31,200,1,1), XORB_MASK, PPCCOM, {RT, RA}},
4238{"sfzeo.", XO(31,200,1,1), XORB_MASK, PWRCOM, {RT, RA}},
418c1742 4239
de866fcc
AM
4240{"addzeo", XO(31,202,1,0), XORB_MASK, PPCCOM, {RT, RA}},
4241{"azeo", XO(31,202,1,0), XORB_MASK, PWRCOM, {RT, RA}},
4242{"addzeo.", XO(31,202,1,1), XORB_MASK, PPCCOM, {RT, RA}},
4243{"azeo.", XO(31,202,1,1), XORB_MASK, PWRCOM, {RT, RA}},
fdd12ef3 4244
de866fcc
AM
4245{"stswi", X(31,725), X_MASK, PPCCOM, {RS, RA0, NB}},
4246{"stsi", X(31,725), X_MASK, PWRCOM, {RS, RA0, NB}},
252b5132 4247
de866fcc 4248{"stfdx", X(31,727), X_MASK, COM, {FRS, RA0, RB}},
252b5132 4249
de866fcc
AM
4250{"srlq", XRC(31,728,0), X_MASK, M601, {RA, RS, RB}},
4251{"srlq.", XRC(31,728,1), X_MASK, M601, {RA, RS, RB}},
418c1742 4252
de866fcc
AM
4253{"sreq", XRC(31,729,0), X_MASK, M601, {RA, RS, RB}},
4254{"sreq.", XRC(31,729,1), X_MASK, M601, {RA, RS, RB}},
252b5132 4255
de866fcc 4256{"stfdxe", X(31,735), X_MASK, BOOKE64, {FRS, RA0, RB}},
19a6653c 4257{"stfdepx", X(31,735), X_MASK, E500MC, {RS, RA, RB}},
de866fcc 4258{"mftgpr", XRC(31,735,0), XRA_MASK, POWER6, {RT, FRB}},
252b5132 4259
19a6653c
AM
4260{"stddx", X(31,739), X_MASK, E500MC, {RS, RA, RB}},
4261
de866fcc
AM
4262{"subfmeo", XO(31,232,1,0), XORB_MASK, PPCCOM, {RT, RA}},
4263{"sfmeo", XO(31,232,1,0), XORB_MASK, PWRCOM, {RT, RA}},
4264{"subfmeo.", XO(31,232,1,1), XORB_MASK, PPCCOM, {RT, RA}},
4265{"sfmeo.", XO(31,232,1,1), XORB_MASK, PWRCOM, {RT, RA}},
252b5132 4266
de866fcc
AM
4267{"mulldo", XO(31,233,1,0), XO_MASK, PPC64, {RT, RA, RB}},
4268{"mulldo.", XO(31,233,1,1), XO_MASK, PPC64, {RT, RA, RB}},
252b5132 4269
de866fcc
AM
4270{"addmeo", XO(31,234,1,0), XORB_MASK, PPCCOM, {RT, RA}},
4271{"ameo", XO(31,234,1,0), XORB_MASK, PWRCOM, {RT, RA}},
4272{"addmeo.", XO(31,234,1,1), XORB_MASK, PPCCOM, {RT, RA}},
4273{"ameo.", XO(31,234,1,1), XORB_MASK, PWRCOM, {RT, RA}},
418c1742 4274
de866fcc
AM
4275{"mullwo", XO(31,235,1,0), XO_MASK, PPCCOM, {RT, RA, RB}},
4276{"mulso", XO(31,235,1,0), XO_MASK, PWRCOM, {RT, RA, RB}},
4277{"mullwo.", XO(31,235,1,1), XO_MASK, PPCCOM, {RT, RA, RB}},
4278{"mulso.", XO(31,235,1,1), XO_MASK, PWRCOM, {RT, RA, RB}},
702f0fb4 4279
de866fcc 4280{"dcba", X(31,758), XRT_MASK, PPC405|PPC7450|BOOKE, {RA, RB}},
19a6653c 4281{"dcbal", XOPL(31,758,1), XRT_MASK, E500MC, {RA, RB}},
252b5132 4282
de866fcc 4283{"stfdux", X(31,759), X_MASK, COM, {FRS, RAS, RB}},
252b5132 4284
de866fcc
AM
4285{"srliq", XRC(31,760,0), X_MASK, M601, {RA, RS, SH}},
4286{"srliq.", XRC(31,760,1), X_MASK, M601, {RA, RS, SH}},
252b5132 4287
de866fcc 4288{"dcbae", X(31,766), XRT_MASK, BOOKE64, {RA, RB}},
418c1742 4289
de866fcc 4290{"stfduxe", X(31,767), X_MASK, BOOKE64, {FRS, RAS, RB}},
252b5132 4291
de866fcc 4292{"lvlxl", X(31,775), X_MASK, CELL, {VD, RA0, RB}},
ede602d7 4293
de866fcc
AM
4294{"dozo", XO(31,264,1,0), XO_MASK, M601, {RT, RA, RB}},
4295{"dozo.", XO(31,264,1,1), XO_MASK, M601, {RT, RA, RB}},
252b5132 4296
de866fcc
AM
4297{"addo", XO(31,266,1,0), XO_MASK, PPCCOM, {RT, RA, RB}},
4298{"caxo", XO(31,266,1,0), XO_MASK, PWRCOM, {RT, RA, RB}},
4299{"addo.", XO(31,266,1,1), XO_MASK, PPCCOM, {RT, RA, RB}},
4300{"caxo.", XO(31,266,1,1), XO_MASK, PWRCOM, {RT, RA, RB}},
252b5132 4301
de866fcc
AM
4302{"tlbivax", X(31,786), XRT_MASK, BOOKE, {RA, RB}},
4303{"tlbivaxe", X(31,787), XRT_MASK, BOOKE64, {RA, RB}},
19a6653c
AM
4304{"tlbilx", X(31,787), X_MASK, E500MC, {T, RA0, RB}},
4305{"tlbilxlpid", XTO(31,787,0), XTO_MASK, E500MC, {0}},
4306{"tlbilxpid", XTO(31,787,1), XTO_MASK, E500MC, {0}},
4307{"tlbilxva", XTO(31,787,3), XTO_MASK, E500MC, {RA0, RB}},
252b5132 4308
de866fcc 4309{"lwzcix", X(31,789), X_MASK, POWER6, {RT, RA0, RB}},
252b5132 4310
de866fcc 4311{"lhbrx", X(31,790), X_MASK, COM, {RT, RA0, RB}},
252b5132 4312
de866fcc
AM
4313{"lfqx", X(31,791), X_MASK, POWER2, {FRT, RA, RB}},
4314{"lfdpx", X(31,791), X_MASK, POWER6, {FRT, RA, RB}},
418c1742 4315
de866fcc
AM
4316{"sraw", XRC(31,792,0), X_MASK, PPCCOM, {RA, RS, RB}},
4317{"sra", XRC(31,792,0), X_MASK, PWRCOM, {RA, RS, RB}},
4318{"sraw.", XRC(31,792,1), X_MASK, PPCCOM, {RA, RS, RB}},
4319{"sra.", XRC(31,792,1), X_MASK, PWRCOM, {RA, RS, RB}},
fdd12ef3 4320
de866fcc
AM
4321{"srad", XRC(31,794,0), X_MASK, PPC64, {RA, RS, RB}},
4322{"srad.", XRC(31,794,1), X_MASK, PPC64, {RA, RS, RB}},
252b5132 4323
de866fcc 4324{"lhbrxe", X(31,798), X_MASK, BOOKE64, {RT, RA0, RB}},
252b5132 4325
de866fcc 4326{"ldxe", X(31,799), X_MASK, BOOKE64, {RT, RA0, RB}},
418c1742 4327
19a6653c
AM
4328{"lfddx", X(31,803), X_MASK, E500MC, {FRT, RA, RB}},
4329
de866fcc 4330{"lvrxl", X(31,807), X_MASK, CELL, {VD, RA0, RB}},
252b5132 4331
de866fcc 4332{"rac", X(31,818), X_MASK, PWRCOM, {RT, RA, RB}},
252b5132 4333
de866fcc 4334{"lhzcix", X(31,821), X_MASK, POWER6, {RT, RA0, RB}},
252b5132 4335
de866fcc 4336{"dss", XDSS(31,822,0), XDSS_MASK, PPCVEC, {STRM}},
252b5132 4337
de866fcc 4338{"lfqux", X(31,823), X_MASK, POWER2, {FRT, RA, RB}},
fdd12ef3 4339
de866fcc
AM
4340{"srawi", XRC(31,824,0), X_MASK, PPCCOM, {RA, RS, SH}},
4341{"srai", XRC(31,824,0), X_MASK, PWRCOM, {RA, RS, SH}},
4342{"srawi.", XRC(31,824,1), X_MASK, PPCCOM, {RA, RS, SH}},
4343{"srai.", XRC(31,824,1), X_MASK, PWRCOM, {RA, RS, SH}},
702f0fb4 4344
de866fcc
AM
4345{"sradi", XS(31,413,0), XS_MASK, PPC64, {RA, RS, SH6}},
4346{"sradi.", XS(31,413,1), XS_MASK, PPC64, {RA, RS, SH6}},
e0c21649 4347
de866fcc
AM
4348{"divo", XO(31,331,1,0), XO_MASK, M601, {RT, RA, RB}},
4349{"divo.", XO(31,331,1,1), XO_MASK, M601, {RT, RA, RB}},
4350{"lduxe", X(31,831), X_MASK, BOOKE64, {RT, RA0, RB}},
252b5132 4351
de866fcc 4352{"slbmfev", X(31,851), XRA_MASK, PPC64, {RT, RB}},
252b5132 4353
de866fcc 4354{"lbzcix", X(31,853), X_MASK, POWER6, {RT, RA0, RB}},
418c1742 4355
de866fcc
AM
4356{"mbar", X(31,854), X_MASK, BOOKE, {MO}},
4357{"eieio", X(31,854), 0xffffffff, PPC, {0}},
418c1742 4358
de866fcc 4359{"lfiwax", X(31,855), X_MASK, POWER6, {FRT, RA0, RB}},
418c1742 4360
de866fcc
AM
4361{"abso", XO(31,360,1,0), XORB_MASK, M601, {RT, RA}},
4362{"abso.", XO(31,360,1,1), XORB_MASK, M601, {RT, RA}},
702f0fb4 4363
de866fcc
AM
4364{"divso", XO(31,363,1,0), XO_MASK, M601, {RT, RA, RB}},
4365{"divso.", XO(31,363,1,1), XO_MASK, M601, {RT, RA, RB}},
252b5132 4366
de866fcc 4367{"ldcix", X(31,885), X_MASK, POWER6, {RT, RA0, RB}},
252b5132 4368
de866fcc 4369{"stvlxl", X(31,903), X_MASK, CELL, {VS, RA0, RB}},
252b5132 4370
de866fcc 4371{"subfe64o", XO(31,392,1,0), XO_MASK, BOOKE64, {RT, RA, RB}},
418c1742 4372
de866fcc 4373{"adde64o", XO(31,394,1,0), XO_MASK, BOOKE64, {RT, RA, RB}},
418c1742 4374
de866fcc
AM
4375{"tlbsx", XRC(31,914,0), X_MASK, PPC403|BOOKE, {RTO, RA, RB}},
4376{"tlbsx.", XRC(31,914,1), X_MASK, PPC403|BOOKE, {RTO, RA, RB}},
252b5132 4377
de866fcc
AM
4378{"tlbsxe", XRC(31,915,0), X_MASK, BOOKE64, {RTO, RA, RB}},
4379{"tlbsxe.", XRC(31,915,1), X_MASK, BOOKE64, {RTO, RA, RB}},
4380{"slbmfee", X(31,915), XRA_MASK, PPC64, {RT, RB}},
702f0fb4 4381
de866fcc 4382{"stwcix", X(31,917), X_MASK, POWER6, {RS, RA0, RB}},
f5c120c5 4383
de866fcc 4384{"sthbrx", X(31,918), X_MASK, COM, {RS, RA0, RB}},
252b5132 4385
de866fcc
AM
4386{"stfqx", X(31,919), X_MASK, POWER2, {FRS, RA, RB}},
4387{"stfdpx", X(31,919), X_MASK, POWER6, {FRS, RA, RB}},
6ba045b1 4388
de866fcc
AM
4389{"sraq", XRC(31,920,0), X_MASK, M601, {RA, RS, RB}},
4390{"sraq.", XRC(31,920,1), X_MASK, M601, {RA, RS, RB}},
702f0fb4 4391
de866fcc
AM
4392{"srea", XRC(31,921,0), X_MASK, M601, {RA, RS, RB}},
4393{"srea.", XRC(31,921,1), X_MASK, M601, {RA, RS, RB}},
252b5132 4394
de866fcc
AM
4395{"extsh", XRC(31,922,0), XRB_MASK, PPCCOM, {RA, RS}},
4396{"exts", XRC(31,922,0), XRB_MASK, PWRCOM, {RA, RS}},
4397{"extsh.", XRC(31,922,1), XRB_MASK, PPCCOM, {RA, RS}},
4398{"exts.", XRC(31,922,1), XRB_MASK, PWRCOM, {RA, RS}},
702f0fb4 4399
de866fcc 4400{"sthbrxe", X(31,926), X_MASK, BOOKE64, {RS, RA0, RB}},
702f0fb4 4401
de866fcc 4402{"stdxe", X(31,927), X_MASK, BOOKE64, {RS, RA0, RB}},
418c1742 4403
19a6653c
AM
4404{"stfddx", X(31,931), X_MASK, E500MC, {FRS, RA, RB}},
4405
de866fcc 4406{"stvrxl", X(31,935), X_MASK, CELL, {VS, RA0, RB}},
6ba045b1 4407
de866fcc
AM
4408{"tlbrehi", XTLB(31,946,0), XTLB_MASK, PPC403, {RT, RA}},
4409{"tlbrelo", XTLB(31,946,1), XTLB_MASK, PPC403, {RT, RA}},
4410{"tlbre", X(31,946), X_MASK, PPC403|BOOKE, {RSO, RAOPT, SHO}},
702f0fb4 4411
de866fcc 4412{"sthcix", X(31,949), X_MASK, POWER6, {RS, RA0, RB}},
252b5132 4413
de866fcc 4414{"stfqux", X(31,951), X_MASK, POWER2, {FRS, RA, RB}},
252b5132 4415
de866fcc
AM
4416{"sraiq", XRC(31,952,0), X_MASK, M601, {RA, RS, SH}},
4417{"sraiq.", XRC(31,952,1), X_MASK, M601, {RA, RS, SH}},
252b5132 4418
de866fcc
AM
4419{"extsb", XRC(31,954,0), XRB_MASK, PPC, {RA, RS}},
4420{"extsb.", XRC(31,954,1), XRB_MASK, PPC, {RA, RS}},
252b5132 4421
de866fcc 4422{"stduxe", X(31,959), X_MASK, BOOKE64, {RS, RAS, RB}},
418c1742 4423
de866fcc 4424{"iccci", X(31,966), XRT_MASK, PPC403|PPC440, {RA, RB}},
418c1742 4425
de866fcc 4426{"subfze64o", XO(31,456,1,0), XORB_MASK, BOOKE64, {RT, RA}},
252b5132 4427
de866fcc
AM
4428{"divduo", XO(31,457,1,0), XO_MASK, PPC64, {RT, RA, RB}},
4429{"divduo.", XO(31,457,1,1), XO_MASK, PPC64, {RT, RA, RB}},
702f0fb4 4430
de866fcc 4431{"addze64o", XO(31,458,1,0), XORB_MASK, BOOKE64, {RT, RA}},
252b5132 4432
de866fcc
AM
4433{"divwuo", XO(31,459,1,0), XO_MASK, PPC, {RT, RA, RB}},
4434{"divwuo.", XO(31,459,1,1), XO_MASK, PPC, {RT, RA, RB}},
252b5132 4435
de866fcc
AM
4436{"tlbwehi", XTLB(31,978,0), XTLB_MASK, PPC403, {RT, RA}},
4437{"tlbwelo", XTLB(31,978,1), XTLB_MASK, PPC403, {RT, RA}},
4438{"tlbwe", X(31,978), X_MASK, PPC403|BOOKE, {RSO, RAOPT, SHO}},
4439{"tlbld", X(31,978), XRTRA_MASK, PPC, {RB}},
418c1742 4440
de866fcc 4441{"stbcix", X(31,981), X_MASK, POWER6, {RS, RA0, RB}},
252b5132 4442
de866fcc 4443{"icbi", X(31,982), XRT_MASK, PPC, {RA, RB}},
252b5132 4444
de866fcc 4445{"stfiwx", X(31,983), X_MASK, PPC, {FRS, RA0, RB}},
702f0fb4 4446
de866fcc
AM
4447{"extsw", XRC(31,986,0), XRB_MASK, PPC64|BOOKE64, {RA, RS}},
4448{"extsw.", XRC(31,986,1), XRB_MASK, PPC64, {RA, RS}},
252b5132 4449
de866fcc
AM
4450{"icbie", X(31,990), XRT_MASK, BOOKE64, {RA, RB}},
4451{"stfiwxe", X(31,991), X_MASK, BOOKE64, {FRS, RA0, RB}},
252b5132 4452
19a6653c
AM
4453{"icbiep", XRT(31,991,0), XRT_MASK, E500MC, {RA, RB}},
4454
de866fcc 4455{"icread", X(31,998), XRT_MASK, PPC403|PPC440, {RA, RB}},
252b5132 4456
de866fcc
AM
4457{"nabso", XO(31,488,1,0), XORB_MASK, M601, {RT, RA}},
4458{"subfme64o", XO(31,488,1,0), XORB_MASK, BOOKE64, {RT, RA}},
4459{"nabso.", XO(31,488,1,1), XORB_MASK, M601, {RT, RA}},
252b5132 4460
de866fcc
AM
4461{"divdo", XO(31,489,1,0), XO_MASK, PPC64, {RT, RA, RB}},
4462{"divdo.", XO(31,489,1,1), XO_MASK, PPC64, {RT, RA, RB}},
418c1742 4463
de866fcc 4464{"addme64o", XO(31,490,1,0), XORB_MASK, BOOKE64, {RT, RA}},
252b5132 4465
de866fcc
AM
4466{"divwo", XO(31,491,1,0), XO_MASK, PPC, {RT, RA, RB}},
4467{"divwo.", XO(31,491,1,1), XO_MASK, PPC, {RT, RA, RB}},
702f0fb4 4468
de866fcc 4469{"tlbli", X(31,1010), XRTRA_MASK, PPC, {RB}},
252b5132 4470
de866fcc 4471{"stdcix", X(31,1013), X_MASK, POWER6, {RS, RA0, RB}},
418c1742 4472
de866fcc
AM
4473{"dcbz", X(31,1014), XRT_MASK, PPC, {RA, RB}},
4474{"dclz", X(31,1014), XRT_MASK, PPC, {RA, RB}},
786e2c0f 4475
de866fcc 4476{"dcbze", X(31,1022), XRT_MASK, BOOKE64, {RA, RB}},
19a6653c 4477{"dcbzep", XRT(31,1023,0), XRT_MASK, E500MC, {RA, RB}},
ede602d7 4478
de866fcc 4479{"dcbzl", XOPL(31,1014,1), XRT_MASK, POWER4, {RA, RB}},
19a6653c 4480{"dcbzl", XOPL(31,1014,1), XRT_MASK, NOPOWER4|E500MC,{RA, RB}},
252b5132 4481
de866fcc
AM
4482{"cctpl", 0x7c210b78, 0xffffffff, CELL, {0}},
4483{"cctpm", 0x7c421378, 0xffffffff, CELL, {0}},
4484{"cctph", 0x7c631b78, 0xffffffff, CELL, {0}},
252b5132 4485
de866fcc
AM
4486{"dstt", XDSS(31,342,1), XDSS_MASK, PPCVEC, {RA, RB, STRM}},
4487{"dststt", XDSS(31,374,1), XDSS_MASK, PPCVEC, {RA, RB, STRM}},
4488{"dssall", XDSS(31,822,1), XDSS_MASK, PPCVEC, {0}},
252b5132 4489
de866fcc
AM
4490{"db8cyc", 0x7f9ce378, 0xffffffff, CELL, {0}},
4491{"db10cyc", 0x7fbdeb78, 0xffffffff, CELL, {0}},
4492{"db12cyc", 0x7fdef378, 0xffffffff, CELL, {0}},
4493{"db16cyc", 0x7ffffb78, 0xffffffff, CELL, {0}},
252b5132 4494
de866fcc
AM
4495{"lwz", OP(32), OP_MASK, PPCCOM, {RT, D, RA0}},
4496{"l", OP(32), OP_MASK, PWRCOM, {RT, D, RA0}},
252b5132 4497
de866fcc
AM
4498{"lwzu", OP(33), OP_MASK, PPCCOM, {RT, D, RAL}},
4499{"lu", OP(33), OP_MASK, PWRCOM, {RT, D, RA0}},
252b5132 4500
de866fcc 4501{"lbz", OP(34), OP_MASK, COM, {RT, D, RA0}},
252b5132 4502
de866fcc 4503{"lbzu", OP(35), OP_MASK, COM, {RT, D, RAL}},
252b5132 4504
de866fcc
AM
4505{"stw", OP(36), OP_MASK, PPCCOM, {RS, D, RA0}},
4506{"st", OP(36), OP_MASK, PWRCOM, {RS, D, RA0}},
252b5132 4507
de866fcc
AM
4508{"stwu", OP(37), OP_MASK, PPCCOM, {RS, D, RAS}},
4509{"stu", OP(37), OP_MASK, PWRCOM, {RS, D, RA0}},
252b5132 4510
de866fcc 4511{"stb", OP(38), OP_MASK, COM, {RS, D, RA0}},
252b5132 4512
de866fcc 4513{"stbu", OP(39), OP_MASK, COM, {RS, D, RAS}},
252b5132 4514
de866fcc 4515{"lhz", OP(40), OP_MASK, COM, {RT, D, RA0}},
252b5132 4516
de866fcc 4517{"lhzu", OP(41), OP_MASK, COM, {RT, D, RAL}},
252b5132 4518
de866fcc 4519{"lha", OP(42), OP_MASK, COM, {RT, D, RA0}},
252b5132 4520
de866fcc 4521{"lhau", OP(43), OP_MASK, COM, {RT, D, RAL}},
252b5132 4522
de866fcc 4523{"sth", OP(44), OP_MASK, COM, {RS, D, RA0}},
252b5132 4524
de866fcc 4525{"sthu", OP(45), OP_MASK, COM, {RS, D, RAS}},
252b5132 4526
de866fcc
AM
4527{"lmw", OP(46), OP_MASK, PPCCOM, {RT, D, RAM}},
4528{"lm", OP(46), OP_MASK, PWRCOM, {RT, D, RA0}},
252b5132 4529
de866fcc
AM
4530{"stmw", OP(47), OP_MASK, PPCCOM, {RS, D, RA0}},
4531{"stm", OP(47), OP_MASK, PWRCOM, {RS, D, RA0}},
252b5132 4532
de866fcc 4533{"lfs", OP(48), OP_MASK, COM, {FRT, D, RA0}},
252b5132 4534
de866fcc 4535{"lfsu", OP(49), OP_MASK, COM, {FRT, D, RAS}},
252b5132 4536
de866fcc 4537{"lfd", OP(50), OP_MASK, COM, {FRT, D, RA0}},
252b5132 4538
de866fcc 4539{"lfdu", OP(51), OP_MASK, COM, {FRT, D, RAS}},
252b5132 4540
de866fcc 4541{"stfs", OP(52), OP_MASK, COM, {FRS, D, RA0}},
adadcc0c 4542
de866fcc 4543{"stfsu", OP(53), OP_MASK, COM, {FRS, D, RAS}},
252b5132 4544
de866fcc 4545{"stfd", OP(54), OP_MASK, COM, {FRS, D, RA0}},
c3d65c1c 4546
de866fcc 4547{"stfdu", OP(55), OP_MASK, COM, {FRS, D, RAS}},
252b5132 4548
de866fcc 4549{"lq", OP(56), OP_MASK, POWER4, {RTQ, DQ, RAQ}},
c3d65c1c 4550
de866fcc 4551{"lfq", OP(56), OP_MASK, POWER2, {FRT, D, RA0}},
702f0fb4 4552
de866fcc 4553{"psq_l", OP(56), OP_MASK, PPCPS, {FRT,PSD,RA,PSW,PSQ}},
418c1742 4554
de866fcc 4555{"lfqu", OP(57), OP_MASK, POWER2, {FRT, D, RA0}},
802a735e 4556
de866fcc 4557{"psq_lu", OP(57), OP_MASK, PPCPS, {FRT,PSD,RA,PSW,PSQ}},
802a735e 4558
de866fcc 4559{"lfdp", OP(57), OP_MASK, POWER6, {FRT, D, RA0}},
fdd12ef3 4560
de866fcc
AM
4561{"lbze", DEO(58,0), DE_MASK, BOOKE64, {RT, DE, RA0}},
4562{"lbzue", DEO(58,1), DE_MASK, BOOKE64, {RT, DE, RAL}},
4563{"lhze", DEO(58,2), DE_MASK, BOOKE64, {RT, DE, RA0}},
4564{"lhzue", DEO(58,3), DE_MASK, BOOKE64, {RT, DE, RAL}},
4565{"lhae", DEO(58,4), DE_MASK, BOOKE64, {RT, DE, RA0}},
4566{"lhaue", DEO(58,5), DE_MASK, BOOKE64, {RT, DE, RAL}},
4567{"lwze", DEO(58,6), DE_MASK, BOOKE64, {RT, DE, RA0}},
4568{"lwzue", DEO(58,7), DE_MASK, BOOKE64, {RT, DE, RAL}},
4569{"stbe", DEO(58,8), DE_MASK, BOOKE64, {RS, DE, RA0}},
4570{"stbue", DEO(58,9), DE_MASK, BOOKE64, {RS, DE, RAS}},
4571{"sthe", DEO(58,10), DE_MASK, BOOKE64, {RS, DE, RA0}},
4572{"sthue", DEO(58,11), DE_MASK, BOOKE64, {RS, DE, RAS}},
4573{"stwe", DEO(58,14), DE_MASK, BOOKE64, {RS, DE, RA0}},
4574{"stwue", DEO(58,15), DE_MASK, BOOKE64, {RS, DE, RAS}},
702f0fb4 4575
de866fcc
AM
4576{"ld", DSO(58,0), DS_MASK, PPC64, {RT, DS, RA0}},
4577{"ldu", DSO(58,1), DS_MASK, PPC64, {RT, DS, RAL}},
4578{"lwa", DSO(58,2), DS_MASK, PPC64, {RT, DS, RA0}},
702f0fb4 4579
de866fcc
AM
4580{"dadd", XRC(59,2,0), X_MASK, POWER6, {FRT, FRA, FRB}},
4581{"dadd.", XRC(59,2,1), X_MASK, POWER6, {FRT, FRA, FRB}},
252b5132 4582
de866fcc
AM
4583{"dqua", ZRC(59,3,0), Z2_MASK, POWER6, {FRT,FRA,FRB,RMC}},
4584{"dqua.", ZRC(59,3,1), Z2_MASK, POWER6, {FRT,FRA,FRB,RMC}},
252b5132 4585
de866fcc
AM
4586{"fdivs", A(59,18,0), AFRC_MASK, PPC, {FRT, FRA, FRB}},
4587{"fdivs.", A(59,18,1), AFRC_MASK, PPC, {FRT, FRA, FRB}},
252b5132 4588
de866fcc
AM
4589{"fsubs", A(59,20,0), AFRC_MASK, PPC, {FRT, FRA, FRB}},
4590{"fsubs.", A(59,20,1), AFRC_MASK, PPC, {FRT, FRA, FRB}},
252b5132 4591
de866fcc
AM
4592{"fadds", A(59,21,0), AFRC_MASK, PPC, {FRT, FRA, FRB}},
4593{"fadds.", A(59,21,1), AFRC_MASK, PPC, {FRT, FRA, FRB}},
252b5132 4594
de866fcc
AM
4595{"fsqrts", A(59,22,0), AFRAFRC_MASK, PPC, {FRT, FRB}},
4596{"fsqrts.", A(59,22,1), AFRAFRC_MASK, PPC, {FRT, FRB}},
252b5132 4597
de866fcc
AM
4598{"fres", A(59,24,0), AFRALFRC_MASK, PPC, {FRT, FRB, A_L}},
4599{"fres.", A(59,24,1), AFRALFRC_MASK, PPC, {FRT, FRB, A_L}},
1ed8e1e4 4600
de866fcc
AM
4601{"fmuls", A(59,25,0), AFRB_MASK, PPC, {FRT, FRA, FRC}},
4602{"fmuls.", A(59,25,1), AFRB_MASK, PPC, {FRT, FRA, FRC}},
252b5132 4603
de866fcc
AM
4604{"frsqrtes", A(59,26,0), AFRALFRC_MASK, POWER5, {FRT, FRB, A_L}},
4605{"frsqrtes.", A(59,26,1), AFRALFRC_MASK, POWER5, {FRT, FRB, A_L}},
252b5132 4606
de866fcc
AM
4607{"fmsubs", A(59,28,0), A_MASK, PPC, {FRT, FRA, FRC, FRB}},
4608{"fmsubs.", A(59,28,1), A_MASK, PPC, {FRT, FRA, FRC, FRB}},
252b5132 4609
de866fcc
AM
4610{"fmadds", A(59,29,0), A_MASK, PPC, {FRT, FRA, FRC, FRB}},
4611{"fmadds.", A(59,29,1), A_MASK, PPC, {FRT, FRA, FRC, FRB}},
252b5132 4612
de866fcc
AM
4613{"fnmsubs", A(59,30,0), A_MASK, PPC, {FRT, FRA, FRC, FRB}},
4614{"fnmsubs.", A(59,30,1), A_MASK, PPC, {FRT, FRA, FRC, FRB}},
702f0fb4 4615
de866fcc
AM
4616{"fnmadds", A(59,31,0), A_MASK, PPC, {FRT, FRA, FRC, FRB}},
4617{"fnmadds.", A(59,31,1), A_MASK, PPC, {FRT, FRA, FRC, FRB}},
702f0fb4 4618
de866fcc
AM
4619{"dmul", XRC(59,34,0), X_MASK, POWER6, {FRT, FRA, FRB}},
4620{"dmul.", XRC(59,34,1), X_MASK, POWER6, {FRT, FRA, FRB}},
702f0fb4 4621
de866fcc
AM
4622{"drrnd", ZRC(59,35,0), Z2_MASK, POWER6, {FRT, FRA, FRB, RMC}},
4623{"drrnd.", ZRC(59,35,1), Z2_MASK, POWER6, {FRT, FRA, FRB, RMC}},
702f0fb4 4624
de866fcc
AM
4625{"dscli", ZRC(59,66,0), Z_MASK, POWER6, {FRT, FRA, SH16}},
4626{"dscli.", ZRC(59,66,1), Z_MASK, POWER6, {FRT, FRA, SH16}},
702f0fb4 4627
de866fcc
AM
4628{"dquai", ZRC(59,67,0), Z2_MASK, POWER6, {TE, FRT,FRB,RMC}},
4629{"dquai.", ZRC(59,67,1), Z2_MASK, POWER6, {TE, FRT,FRB,RMC}},
702f0fb4 4630
de866fcc
AM
4631{"dscri", ZRC(59,98,0), Z_MASK, POWER6, {FRT, FRA, SH16}},
4632{"dscri.", ZRC(59,98,1), Z_MASK, POWER6, {FRT, FRA, SH16}},
702f0fb4 4633
de866fcc
AM
4634{"drintx", ZRC(59,99,0), Z2_MASK, POWER6, {R, FRT, FRB, RMC}},
4635{"drintx.", ZRC(59,99,1), Z2_MASK, POWER6, {R, FRT, FRB, RMC}},
702f0fb4 4636
de866fcc 4637{"dcmpo", X(59,130), X_MASK, POWER6, {BF, FRA, FRB}},
702f0fb4 4638
de866fcc
AM
4639{"dtstex", X(59,162), X_MASK, POWER6, {BF, FRA, FRB}},
4640{"dtstdc", Z(59,194), Z_MASK, POWER6, {BF, FRA, DCM}},
4641{"dtstdg", Z(59,226), Z_MASK, POWER6, {BF, FRA, DGM}},
702f0fb4 4642
de866fcc
AM
4643{"drintn", ZRC(59,227,0), Z2_MASK, POWER6, {R, FRT, FRB, RMC}},
4644{"drintn.", ZRC(59,227,1), Z2_MASK, POWER6, {R, FRT, FRB, RMC}},
702f0fb4 4645
de866fcc
AM
4646{"dctdp", XRC(59,258,0), X_MASK, POWER6, {FRT, FRB}},
4647{"dctdp.", XRC(59,258,1), X_MASK, POWER6, {FRT, FRB}},
702f0fb4 4648
de866fcc
AM
4649{"dctfix", XRC(59,290,0), X_MASK, POWER6, {FRT, FRB}},
4650{"dctfix.", XRC(59,290,1), X_MASK, POWER6, {FRT, FRB}},
702f0fb4 4651
de866fcc
AM
4652{"ddedpd", XRC(59,322,0), X_MASK, POWER6, {SP, FRT, FRB}},
4653{"ddedpd.", XRC(59,322,1), X_MASK, POWER6, {SP, FRT, FRB}},
702f0fb4 4654
de866fcc
AM
4655{"dxex", XRC(59,354,0), X_MASK, POWER6, {FRT, FRB}},
4656{"dxex.", XRC(59,354,1), X_MASK, POWER6, {FRT, FRB}},
702f0fb4 4657
de866fcc
AM
4658{"dsub", XRC(59,514,0), X_MASK, POWER6, {FRT, FRA, FRB}},
4659{"dsub.", XRC(59,514,1), X_MASK, POWER6, {FRT, FRA, FRB}},
702f0fb4 4660
de866fcc
AM
4661{"ddiv", XRC(59,546,0), X_MASK, POWER6, {FRT, FRA, FRB}},
4662{"ddiv.", XRC(59,546,1), X_MASK, POWER6, {FRT, FRA, FRB}},
702f0fb4 4663
de866fcc 4664{"dcmpu", X(59,642), X_MASK, POWER6, {BF, FRA, FRB}},
702f0fb4 4665
de866fcc 4666{"dtstsf", X(59,674), X_MASK, POWER6, {BF, FRA, FRB}},
702f0fb4 4667
de866fcc
AM
4668{"drsp", XRC(59,770,0), X_MASK, POWER6, {FRT, FRB}},
4669{"drsp.", XRC(59,770,1), X_MASK, POWER6, {FRT, FRB}},
702f0fb4 4670
de866fcc
AM
4671{"denbcd", XRC(59,834,0), X_MASK, POWER6, {S, FRT, FRB}},
4672{"denbcd.", XRC(59,834,1), X_MASK, POWER6, {S, FRT, FRB}},
252b5132 4673
de866fcc
AM
4674{"diex", XRC(59,866,0), X_MASK, POWER6, {FRT, FRA, FRB}},
4675{"diex.", XRC(59,866,1), X_MASK, POWER6, {FRT, FRA, FRB}},
8dbcd839 4676
de866fcc 4677{"stfq", OP(60), OP_MASK, POWER2, {FRS, D, RA}},
252b5132 4678
de866fcc
AM
4679{"psq_st", OP(60), OP_MASK, PPCPS, {FRS,PSD,RA,PSW,PSQ}},
4680{"psq_stu", OP(61), OP_MASK, PPCPS, {FRS,PSD,RA,PSW,PSQ}},
702f0fb4 4681
de866fcc 4682{"stfqu", OP(61), OP_MASK, POWER2, {FRS, D, RA}},
418c1742 4683
de866fcc 4684{"stfdp", OP(61), OP_MASK, POWER6, {FRT, D, RA0}},
802a735e 4685
de866fcc
AM
4686{"lde", DEO(62,0), DE_MASK, BOOKE64, {RT, DES, RA0}},
4687{"ldue", DEO(62,1), DE_MASK, BOOKE64, {RT, DES, RA0}},
4688{"lfse", DEO(62,4), DE_MASK, BOOKE64, {FRT, DES, RA0}},
4689{"lfsue", DEO(62,5), DE_MASK, BOOKE64, {FRT, DES, RAS}},
4690{"lfde", DEO(62,6), DE_MASK, BOOKE64, {FRT, DES, RA0}},
4691{"lfdue", DEO(62,7), DE_MASK, BOOKE64, {FRT, DES, RAS}},
4692{"stde", DEO(62,8), DE_MASK, BOOKE64, {RS, DES, RA0}},
4693{"stdue", DEO(62,9), DE_MASK, BOOKE64, {RS, DES, RAS}},
4694{"stfse", DEO(62,12), DE_MASK, BOOKE64, {FRS, DES, RA0}},
4695{"stfsue", DEO(62,13), DE_MASK, BOOKE64, {FRS, DES, RAS}},
4696{"stfde", DEO(62,14), DE_MASK, BOOKE64, {FRS, DES, RA0}},
4697{"stfdue", DEO(62,15), DE_MASK, BOOKE64, {FRS, DES, RAS}},
802a735e 4698
de866fcc
AM
4699{"std", DSO(62,0), DS_MASK, PPC64, {RS, DS, RA0}},
4700{"stdu", DSO(62,1), DS_MASK, PPC64, {RS, DS, RAS}},
4701{"stq", DSO(62,2), DS_MASK, POWER4, {RSQ, DS, RA0}},
fdd12ef3 4702
de866fcc 4703{"fcmpu", X(63,0), X_MASK|(3<<21), COM, {BF, FRA, FRB}},
252b5132 4704
de866fcc
AM
4705{"daddq", XRC(63,2,0), X_MASK, POWER6, {FRT, FRA, FRB}},
4706{"daddq.", XRC(63,2,1), X_MASK, POWER6, {FRT, FRA, FRB}},
702f0fb4 4707
de866fcc
AM
4708{"dquaq", ZRC(63,3,0), Z2_MASK, POWER6, {FRT, FRA, FRB, RMC}},
4709{"dquaq.", ZRC(63,3,1), Z2_MASK, POWER6, {FRT, FRA, FRB, RMC}},
702f0fb4 4710
de866fcc
AM
4711{"fcpsgn", XRC(63,8,0), X_MASK, POWER6, {FRT, FRA, FRB}},
4712{"fcpsgn.", XRC(63,8,1), X_MASK, POWER6, {FRT, FRA, FRB}},
702f0fb4 4713
de866fcc
AM
4714{"frsp", XRC(63,12,0), XRA_MASK, COM, {FRT, FRB}},
4715{"frsp.", XRC(63,12,1), XRA_MASK, COM, {FRT, FRB}},
252b5132 4716
de866fcc
AM
4717{"fctiw", XRC(63,14,0), XRA_MASK, PPCCOM, {FRT, FRB}},
4718{"fcir", XRC(63,14,0), XRA_MASK, POWER2, {FRT, FRB}},
4719{"fctiw.", XRC(63,14,1), XRA_MASK, PPCCOM, {FRT, FRB}},
4720{"fcir.", XRC(63,14,1), XRA_MASK, POWER2, {FRT, FRB}},
252b5132 4721
de866fcc
AM
4722{"fctiwz", XRC(63,15,0), XRA_MASK, PPCCOM, {FRT, FRB}},
4723{"fcirz", XRC(63,15,0), XRA_MASK, POWER2, {FRT, FRB}},
4724{"fctiwz.", XRC(63,15,1), XRA_MASK, PPCCOM, {FRT, FRB}},
4725{"fcirz.", XRC(63,15,1), XRA_MASK, POWER2, {FRT, FRB}},
252b5132 4726
de866fcc
AM
4727{"fdiv", A(63,18,0), AFRC_MASK, PPCCOM, {FRT, FRA, FRB}},
4728{"fd", A(63,18,0), AFRC_MASK, PWRCOM, {FRT, FRA, FRB}},
4729{"fdiv.", A(63,18,1), AFRC_MASK, PPCCOM, {FRT, FRA, FRB}},
4730{"fd.", A(63,18,1), AFRC_MASK, PWRCOM, {FRT, FRA, FRB}},
252b5132 4731
de866fcc
AM
4732{"fsub", A(63,20,0), AFRC_MASK, PPCCOM, {FRT, FRA, FRB}},
4733{"fs", A(63,20,0), AFRC_MASK, PWRCOM, {FRT, FRA, FRB}},
4734{"fsub.", A(63,20,1), AFRC_MASK, PPCCOM, {FRT, FRA, FRB}},
4735{"fs.", A(63,20,1), AFRC_MASK, PWRCOM, {FRT, FRA, FRB}},
252b5132 4736
de866fcc
AM
4737{"fadd", A(63,21,0), AFRC_MASK, PPCCOM, {FRT, FRA, FRB}},
4738{"fa", A(63,21,0), AFRC_MASK, PWRCOM, {FRT, FRA, FRB}},
4739{"fadd.", A(63,21,1), AFRC_MASK, PPCCOM, {FRT, FRA, FRB}},
4740{"fa.", A(63,21,1), AFRC_MASK, PWRCOM, {FRT, FRA, FRB}},
252b5132 4741
de866fcc
AM
4742{"fsqrt", A(63,22,0), AFRAFRC_MASK, PPCPWR2, {FRT, FRB}},
4743{"fsqrt.", A(63,22,1), AFRAFRC_MASK, PPCPWR2, {FRT, FRB}},
252b5132 4744
de866fcc
AM
4745{"fsel", A(63,23,0), A_MASK, PPC, {FRT, FRA, FRC, FRB}},
4746{"fsel.", A(63,23,1), A_MASK, PPC, {FRT, FRA, FRC, FRB}},
252b5132 4747
de866fcc
AM
4748{"fre", A(63,24,0), AFRALFRC_MASK, POWER5, {FRT, FRB, A_L}},
4749{"fre.", A(63,24,1), AFRALFRC_MASK, POWER5, {FRT, FRB, A_L}},
1ed8e1e4 4750
de866fcc
AM
4751{"fmul", A(63,25,0), AFRB_MASK, PPCCOM, {FRT, FRA, FRC}},
4752{"fm", A(63,25,0), AFRB_MASK, PWRCOM, {FRT, FRA, FRC}},
4753{"fmul.", A(63,25,1), AFRB_MASK, PPCCOM, {FRT, FRA, FRC}},
4754{"fm.", A(63,25,1), AFRB_MASK, PWRCOM, {FRT, FRA, FRC}},
252b5132 4755
de866fcc
AM
4756{"frsqrte", A(63,26,0), AFRALFRC_MASK, PPC, {FRT, FRB, A_L}},
4757{"frsqrte.", A(63,26,1), AFRALFRC_MASK, PPC, {FRT, FRB, A_L}},
252b5132 4758
de866fcc
AM
4759{"fmsub", A(63,28,0), A_MASK, PPCCOM, {FRT, FRA, FRC, FRB}},
4760{"fms", A(63,28,0), A_MASK, PWRCOM, {FRT, FRA, FRC, FRB}},
4761{"fmsub.", A(63,28,1), A_MASK, PPCCOM, {FRT, FRA, FRC, FRB}},
4762{"fms.", A(63,28,1), A_MASK, PWRCOM, {FRT, FRA, FRC, FRB}},
252b5132 4763
de866fcc
AM
4764{"fmadd", A(63,29,0), A_MASK, PPCCOM, {FRT, FRA, FRC, FRB}},
4765{"fma", A(63,29,0), A_MASK, PWRCOM, {FRT, FRA, FRC, FRB}},
4766{"fmadd.", A(63,29,1), A_MASK, PPCCOM, {FRT, FRA, FRC, FRB}},
4767{"fma.", A(63,29,1), A_MASK, PWRCOM, {FRT, FRA, FRC, FRB}},
252b5132 4768
de866fcc
AM
4769{"fnmsub", A(63,30,0), A_MASK, PPCCOM, {FRT, FRA, FRC, FRB}},
4770{"fnms", A(63,30,0), A_MASK, PWRCOM, {FRT, FRA, FRC, FRB}},
4771{"fnmsub.", A(63,30,1), A_MASK, PPCCOM, {FRT, FRA, FRC, FRB}},
4772{"fnms.", A(63,30,1), A_MASK, PWRCOM, {FRT, FRA, FRC, FRB}},
252b5132 4773
de866fcc
AM
4774{"fnmadd", A(63,31,0), A_MASK, PPCCOM, {FRT, FRA, FRC, FRB}},
4775{"fnma", A(63,31,0), A_MASK, PWRCOM, {FRT, FRA, FRC, FRB}},
4776{"fnmadd.", A(63,31,1), A_MASK, PPCCOM, {FRT, FRA, FRC, FRB}},
4777{"fnma.", A(63,31,1), A_MASK, PWRCOM, {FRT, FRA, FRC, FRB}},
252b5132 4778
de866fcc 4779{"fcmpo", X(63,32), X_MASK|(3<<21), COM, {BF, FRA, FRB}},
252b5132 4780
de866fcc
AM
4781{"dmulq", XRC(63,34,0), X_MASK, POWER6, {FRT, FRA, FRB}},
4782{"dmulq.", XRC(63,34,1), X_MASK, POWER6, {FRT, FRA, FRB}},
702f0fb4 4783
de866fcc
AM
4784{"drrndq", ZRC(63,35,0), Z2_MASK, POWER6, {FRT, FRA, FRB, RMC}},
4785{"drrndq.", ZRC(63,35,1), Z2_MASK, POWER6, {FRT, FRA, FRB, RMC}},
702f0fb4 4786
de866fcc
AM
4787{"mtfsb1", XRC(63,38,0), XRARB_MASK, COM, {BT}},
4788{"mtfsb1.", XRC(63,38,1), XRARB_MASK, COM, {BT}},
252b5132 4789
de866fcc
AM
4790{"fneg", XRC(63,40,0), XRA_MASK, COM, {FRT, FRB}},
4791{"fneg.", XRC(63,40,1), XRA_MASK, COM, {FRT, FRB}},
252b5132 4792
de866fcc 4793{"mcrfs", X(63,64), XRB_MASK|(3<<21)|(3<<16), COM, {BF, BFA}},
252b5132 4794
de866fcc
AM
4795{"dscliq", ZRC(63,66,0), Z_MASK, POWER6, {FRT, FRA, SH16}},
4796{"dscliq.", ZRC(63,66,1), Z_MASK, POWER6, {FRT, FRA, SH16}},
702f0fb4 4797
de866fcc
AM
4798{"dquaiq", ZRC(63,67,0), Z2_MASK, POWER6, {TE, FRT, FRB, RMC}},
4799{"dquaiq.", ZRC(63,67,1), Z2_MASK, POWER6, {TE, FRT, FRB, RMC}},
702f0fb4 4800
de866fcc
AM
4801{"mtfsb0", XRC(63,70,0), XRARB_MASK, COM, {BT}},
4802{"mtfsb0.", XRC(63,70,1), XRARB_MASK, COM, {BT}},
252b5132 4803
de866fcc
AM
4804{"fmr", XRC(63,72,0), XRA_MASK, COM, {FRT, FRB}},
4805{"fmr.", XRC(63,72,1), XRA_MASK, COM, {FRT, FRB}},
252b5132 4806
de866fcc
AM
4807{"dscriq", ZRC(63,98,0), Z_MASK, POWER6, {FRT, FRA, SH16}},
4808{"dscriq.", ZRC(63,98,1), Z_MASK, POWER6, {FRT, FRA, SH16}},
702f0fb4 4809
de866fcc
AM
4810{"drintxq", ZRC(63,99,0), Z2_MASK, POWER6, {R, FRT, FRB, RMC}},
4811{"drintxq.", ZRC(63,99,1), Z2_MASK, POWER6, {R, FRT, FRB, RMC}},
702f0fb4 4812
de866fcc 4813{"dcmpoq", X(63,130), X_MASK, POWER6, {BF, FRA, FRB}},
702f0fb4 4814
de866fcc
AM
4815{"mtfsfi", XRC(63,134,0), XWRA_MASK|(3<<21)|(1<<11), COM, {BFF, U, W}},
4816{"mtfsfi.", XRC(63,134,1), XWRA_MASK|(3<<21)|(1<<11), COM, {BFF, U, W}},
252b5132 4817
de866fcc
AM
4818{"fnabs", XRC(63,136,0), XRA_MASK, COM, {FRT, FRB}},
4819{"fnabs.", XRC(63,136,1), XRA_MASK, COM, {FRT, FRB}},
252b5132 4820
de866fcc
AM
4821{"dtstexq", X(63,162), X_MASK, POWER6, {BF, FRA, FRB}},
4822{"dtstdcq", Z(63,194), Z_MASK, POWER6, {BF, FRA, DCM}},
4823{"dtstdgq", Z(63,226), Z_MASK, POWER6, {BF, FRA, DGM}},
702f0fb4 4824
de866fcc
AM
4825{"drintnq", ZRC(63,227,0), Z2_MASK, POWER6, {R, FRT, FRB, RMC}},
4826{"drintnq.", ZRC(63,227,1), Z2_MASK, POWER6, {R, FRT, FRB, RMC}},
702f0fb4 4827
de866fcc
AM
4828{"dctqpq", XRC(63,258,0), X_MASK, POWER6, {FRT, FRB}},
4829{"dctqpq.", XRC(63,258,1), X_MASK, POWER6, {FRT, FRB}},
702f0fb4 4830
de866fcc
AM
4831{"fabs", XRC(63,264,0), XRA_MASK, COM, {FRT, FRB}},
4832{"fabs.", XRC(63,264,1), XRA_MASK, COM, {FRT, FRB}},
252b5132 4833
de866fcc
AM
4834{"dctfixq", XRC(63,290,0), X_MASK, POWER6, {FRT, FRB}},
4835{"dctfixq.", XRC(63,290,1), X_MASK, POWER6, {FRT, FRB}},
702f0fb4 4836
de866fcc
AM
4837{"ddedpdq", XRC(63,322,0), X_MASK, POWER6, {SP, FRT, FRB}},
4838{"ddedpdq.", XRC(63,322,1), X_MASK, POWER6, {SP, FRT, FRB}},
702f0fb4 4839
de866fcc
AM
4840{"dxexq", XRC(63,354,0), X_MASK, POWER6, {FRT, FRB}},
4841{"dxexq.", XRC(63,354,1), X_MASK, POWER6, {FRT, FRB}},
702f0fb4 4842
de866fcc
AM
4843{"frin", XRC(63,392,0), XRA_MASK, POWER5, {FRT, FRB}},
4844{"frin.", XRC(63,392,1), XRA_MASK, POWER5, {FRT, FRB}},
4845{"friz", XRC(63,424,0), XRA_MASK, POWER5, {FRT, FRB}},
4846{"friz.", XRC(63,424,1), XRA_MASK, POWER5, {FRT, FRB}},
4847{"frip", XRC(63,456,0), XRA_MASK, POWER5, {FRT, FRB}},
4848{"frip.", XRC(63,456,1), XRA_MASK, POWER5, {FRT, FRB}},
4849{"frim", XRC(63,488,0), XRA_MASK, POWER5, {FRT, FRB}},
4850{"frim.", XRC(63,488,1), XRA_MASK, POWER5, {FRT, FRB}},
ce7a772b 4851
de866fcc
AM
4852{"dsubq", XRC(63,514,0), X_MASK, POWER6, {FRT, FRA, FRB}},
4853{"dsubq.", XRC(63,514,1), X_MASK, POWER6, {FRT, FRA, FRB}},
702f0fb4 4854
de866fcc
AM
4855{"ddivq", XRC(63,546,0), X_MASK, POWER6, {FRT, FRA, FRB}},
4856{"ddivq.", XRC(63,546,1), X_MASK, POWER6, {FRT, FRA, FRB}},
702f0fb4 4857
de866fcc
AM
4858{"mffs", XRC(63,583,0), XRARB_MASK, COM, {FRT}},
4859{"mffs.", XRC(63,583,1), XRARB_MASK, COM, {FRT}},
252b5132 4860
de866fcc 4861{"dcmpuq", X(63,642), X_MASK, POWER6, {BF, FRA, FRB}},
702f0fb4 4862
de866fcc 4863{"dtstsfq", X(63,674), X_MASK, POWER6, {BF, FRA, FRB}},
702f0fb4 4864
de866fcc
AM
4865{"mtfsf", XFL(63,711,0), XFL_MASK, COM, {FLM, FRB, XFL_L, W}},
4866{"mtfsf.", XFL(63,711,1), XFL_MASK, COM, {FLM, FRB, XFL_L, W}},
252b5132 4867
de866fcc
AM
4868{"drdpq", XRC(63,770,0), X_MASK, POWER6, {FRT, FRB}},
4869{"drdpq.", XRC(63,770,1), X_MASK, POWER6, {FRT, FRB}},
702f0fb4 4870
de866fcc
AM
4871{"dcffixq", XRC(63,802,0), X_MASK, POWER6, {FRT, FRB}},
4872{"dcffixq.", XRC(63,802,1), X_MASK, POWER6, {FRT, FRB}},
702f0fb4 4873
de866fcc
AM
4874{"fctid", XRC(63,814,0), XRA_MASK, PPC64, {FRT, FRB}},
4875{"fctid.", XRC(63,814,1), XRA_MASK, PPC64, {FRT, FRB}},
252b5132 4876
de866fcc
AM
4877{"fctidz", XRC(63,815,0), XRA_MASK, PPC64, {FRT, FRB}},
4878{"fctidz.", XRC(63,815,1), XRA_MASK, PPC64, {FRT, FRB}},
252b5132 4879
de866fcc
AM
4880{"denbcdq", XRC(63,834,0), X_MASK, POWER6, {S, FRT, FRB}},
4881{"denbcdq.", XRC(63,834,1), X_MASK, POWER6, {S, FRT, FRB}},
702f0fb4 4882
de866fcc
AM
4883{"fcfid", XRC(63,846,0), XRA_MASK, PPC64, {FRT, FRB}},
4884{"fcfid.", XRC(63,846,1), XRA_MASK, PPC64, {FRT, FRB}},
252b5132 4885
de866fcc
AM
4886{"diexq", XRC(63,866,0), X_MASK, POWER6, {FRT, FRA, FRB}},
4887{"diexq.", XRC(63,866,1), X_MASK, POWER6, {FRT, FRA, FRB}},
702f0fb4 4888
252b5132
RH
4889};
4890
4891const int powerpc_num_opcodes =
4892 sizeof (powerpc_opcodes) / sizeof (powerpc_opcodes[0]);
4893\f
4894/* The macro table. This is only used by the assembler. */
4895
4896/* The expressions of the form (-x ! 31) & (x | 31) have the value 0
4897 when x=0; 32-x when x is between 1 and 31; are negative if x is
4898 negative; and are 32 or more otherwise. This is what you want
4899 when, for instance, you are emulating a right shift by a
4900 rotate-left-and-mask, because the underlying instructions support
4901 shifts of size 0 but not shifts of size 32. By comparison, when
4902 extracting x bits from some word you want to use just 32-x, because
4903 the underlying instructions don't support extracting 0 bits but do
4904 support extracting the whole word (32 bits in this case). */
4905
4906const struct powerpc_macro powerpc_macros[] = {
de866fcc
AM
4907{"extldi", 4, PPC64, "rldicr %0,%1,%3,(%2)-1"},
4908{"extldi.", 4, PPC64, "rldicr. %0,%1,%3,(%2)-1"},
4909{"extrdi", 4, PPC64, "rldicl %0,%1,(%2)+(%3),64-(%2)"},
4910{"extrdi.", 4, PPC64, "rldicl. %0,%1,(%2)+(%3),64-(%2)"},
4911{"insrdi", 4, PPC64, "rldimi %0,%1,64-((%2)+(%3)),%3"},
4912{"insrdi.", 4, PPC64, "rldimi. %0,%1,64-((%2)+(%3)),%3"},
4913{"rotrdi", 3, PPC64, "rldicl %0,%1,(-(%2)!63)&((%2)|63),0"},
4914{"rotrdi.", 3, PPC64, "rldicl. %0,%1,(-(%2)!63)&((%2)|63),0"},
4915{"sldi", 3, PPC64, "rldicr %0,%1,%2,63-(%2)"},
4916{"sldi.", 3, PPC64, "rldicr. %0,%1,%2,63-(%2)"},
4917{"srdi", 3, PPC64, "rldicl %0,%1,(-(%2)!63)&((%2)|63),%2"},
4918{"srdi.", 3, PPC64, "rldicl. %0,%1,(-(%2)!63)&((%2)|63),%2"},
4919{"clrrdi", 3, PPC64, "rldicr %0,%1,0,63-(%2)"},
4920{"clrrdi.", 3, PPC64, "rldicr. %0,%1,0,63-(%2)"},
4921{"clrlsldi", 4, PPC64, "rldic %0,%1,%3,(%2)-(%3)"},
4922{"clrlsldi.",4, PPC64, "rldic. %0,%1,%3,(%2)-(%3)"},
4923
4924{"extlwi", 4, PPCCOM, "rlwinm %0,%1,%3,0,(%2)-1"},
4925{"extlwi.", 4, PPCCOM, "rlwinm. %0,%1,%3,0,(%2)-1"},
4926{"extrwi", 4, PPCCOM, "rlwinm %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"},
4927{"extrwi.", 4, PPCCOM, "rlwinm. %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"},
4928{"inslwi", 4, PPCCOM, "rlwimi %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"},
4929{"inslwi.", 4, PPCCOM, "rlwimi. %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"},
4930{"insrwi", 4, PPCCOM, "rlwimi %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"},
4931{"insrwi.", 4, PPCCOM, "rlwimi. %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"},
4932{"rotrwi", 3, PPCCOM, "rlwinm %0,%1,(-(%2)!31)&((%2)|31),0,31"},
4933{"rotrwi.", 3, PPCCOM, "rlwinm. %0,%1,(-(%2)!31)&((%2)|31),0,31"},
4934{"slwi", 3, PPCCOM, "rlwinm %0,%1,%2,0,31-(%2)"},
4935{"sli", 3, PWRCOM, "rlinm %0,%1,%2,0,31-(%2)"},
4936{"slwi.", 3, PPCCOM, "rlwinm. %0,%1,%2,0,31-(%2)"},
4937{"sli.", 3, PWRCOM, "rlinm. %0,%1,%2,0,31-(%2)"},
4938{"srwi", 3, PPCCOM, "rlwinm %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
4939{"sri", 3, PWRCOM, "rlinm %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
4940{"srwi.", 3, PPCCOM, "rlwinm. %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
4941{"sri.", 3, PWRCOM, "rlinm. %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
4942{"clrrwi", 3, PPCCOM, "rlwinm %0,%1,0,0,31-(%2)"},
4943{"clrrwi.", 3, PPCCOM, "rlwinm. %0,%1,0,0,31-(%2)"},
4944{"clrlslwi", 4, PPCCOM, "rlwinm %0,%1,%3,(%2)-(%3),31-(%3)"},
4945{"clrlslwi.",4, PPCCOM, "rlwinm. %0,%1,%3,(%2)-(%3),31-(%3)"},
252b5132
RH
4946};
4947
4948const int powerpc_num_macros =
4949 sizeof (powerpc_macros) / sizeof (powerpc_macros[0]);
This page took 0.807403 seconds and 4 git commands to generate.