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