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