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