PowerPC opcode table and disassembler.
[binutils-gdb.git] / opcodes / ppc-opc.c
1 /* ppc-opc.c -- PowerPC opcode list
2 Copyright 1994 Free Software Foundation, Inc.
3 Written by Ian Lance Taylor, Cygnus Support
4
5 This file is part of GDB, GAS, and the GNU binutils.
6
7 GDB, GAS, and the GNU binutils are free software; you can redistribute
8 them and/or modify them under the terms of the GNU General Public
9 License as published by the Free Software Foundation; either version
10 2, or (at your option) any later version.
11
12 GDB, GAS, and the GNU binutils are distributed in the hope that they
13 will be useful, but WITHOUT ANY WARRANTY; without even the implied
14 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
15 the GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this file; see the file COPYING. If not, write to the Free
19 Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
20
21 #include <stdio.h>
22 #include "ansidecl.h"
23 #include "opcode/ppc.h"
24
25 /* This file holds the PowerPC opcode table. The opcode table
26 includes almost all of the extended instruction mnemonics. This
27 permits the disassembler to use them, and simplifies the assembler
28 logic, at the cost of increasing the table size. The table is
29 strictly constant data, so the compiler should be able to put it in
30 the .text section.
31
32 This file also holds the operand table. All knowledge about
33 inserting operands into instructions and vice-versa is kept in this
34 file. */
35 \f
36 /* Local insertion and extraction functions. */
37
38 static unsigned long insert_bat PARAMS ((unsigned long, long, const char **));
39 static long extract_bat PARAMS ((unsigned long, int *));
40 static unsigned long insert_bba PARAMS ((unsigned long, long, const char **));
41 static long extract_bba PARAMS ((unsigned long, int *));
42 static unsigned long insert_bd PARAMS ((unsigned long, long, const char **));
43 static long extract_bd PARAMS ((unsigned long, int *));
44 static unsigned long insert_bdm PARAMS ((unsigned long, long, const char **));
45 static long extract_bdm PARAMS ((unsigned long, int *));
46 static unsigned long insert_bdp PARAMS ((unsigned long, long, const char **));
47 static long extract_bdp PARAMS ((unsigned long, int *));
48 static unsigned long insert_bo PARAMS ((unsigned long, long, const char **));
49 static long extract_bo PARAMS ((unsigned long, int *));
50 static unsigned long insert_boe PARAMS ((unsigned long, long, const char **));
51 static long extract_boe PARAMS ((unsigned long, int *));
52 static unsigned long insert_cr PARAMS ((unsigned long, long, const char **));
53 static long extract_cr PARAMS ((unsigned long, int *));
54 static unsigned long insert_ds PARAMS ((unsigned long, long, const char **));
55 static long extract_ds PARAMS ((unsigned long, int *));
56 static unsigned long insert_li PARAMS ((unsigned long, long, const char **));
57 static long extract_li PARAMS ((unsigned long, int *));
58 static unsigned long insert_mb6 PARAMS ((unsigned long, long, const char **));
59 static long extract_mb6 PARAMS ((unsigned long, int *));
60 static unsigned long insert_nsi PARAMS ((unsigned long, long, const char **));
61 static long extract_nsi PARAMS ((unsigned long, int *));
62 static unsigned long insert_rbs PARAMS ((unsigned long, long, const char **));
63 static long extract_rbs PARAMS ((unsigned long, int *));
64 static unsigned long insert_sh6 PARAMS ((unsigned long, long, const char **));
65 static long extract_sh6 PARAMS ((unsigned long, int *));
66 static unsigned long insert_spr PARAMS ((unsigned long, long, const char **));
67 static long extract_spr PARAMS ((unsigned long, int *));
68 \f
69 /* The operands table.
70
71 The fields are bits, shift, signed, insert, extract, flags. */
72
73 const struct powerpc_operand powerpc_operands[] =
74 {
75 /* The zero index is used to indicate the end of the list of
76 operands. */
77 #define UNUSED (0)
78 { 0, 0, 0, 0, 0, 0 },
79
80 /* The BA field in an XL form instruction. */
81 #define BA (UNUSED + 1)
82 #define BA_MASK (0x1f << 16)
83 { 5, 16, 0, 0, 0, PPC_OPERAND_CR },
84
85 /* The BA field in an XL form instruction when it must be the same
86 as the BT field in the same instruction. */
87 #define BAT (BA + 1)
88 { 5, 16, 0, insert_bat, extract_bat, PPC_OPERAND_FAKE },
89
90 /* The BB field in an XL form instruction. */
91 #define BB (BAT + 1)
92 #define BB_MASK (0x1f << 11)
93 { 5, 11, 0, 0, 0, PPC_OPERAND_CR },
94
95 /* The BB field in an XL form instruction when it must be the same
96 as the BA field in the same instruction. */
97 #define BBA (BB + 1)
98 { 5, 11, 0, insert_bba, extract_bba, PPC_OPERAND_FAKE },
99
100 /* The BD field in a B form instruction. The lower two bits are
101 forced to zero. */
102 #define BD (BBA + 1)
103 { 16, 0, 1, insert_bd, extract_bd, PPC_OPERAND_RELATIVE },
104
105 /* The BD field in a B form instruction when absolute addressing is
106 used. */
107 #define BDA (BD + 1)
108 { 16, 0, 1, insert_bd, extract_bd, PPC_OPERAND_ABSOLUTE },
109
110 /* The BD field in a B form instruction when the - modifier is used.
111 This sets the y bit of the BO field appropriately. */
112 #define BDM (BDA + 1)
113 { 16, 0, 1, insert_bdm, extract_bdm, PPC_OPERAND_RELATIVE },
114
115 /* The BD field in a B form instruction when the - modifier is used
116 and absolute address is used. */
117 #define BDMA (BDM + 1)
118 { 16, 0, 1, insert_bdm, extract_bdm, PPC_OPERAND_ABSOLUTE },
119
120 /* The BD field in a B form instruction when the + modifier is used.
121 This sets the y bit of the BO field appropriately. */
122 #define BDP (BDMA + 1)
123 { 16, 0, 1, insert_bdp, extract_bdp, PPC_OPERAND_RELATIVE },
124
125 /* The BD field in a B form instruction when the + modifier is used
126 and absolute addressing is used. */
127 #define BDPA (BDP + 1)
128 { 16, 0, 1, insert_bdp, extract_bdp, PPC_OPERAND_ABSOLUTE },
129
130 /* The BF field in an X or XL form instruction. */
131 #define BF (BDPA + 1)
132 { 3, 23, 0, 0, 0, PPC_OPERAND_CR },
133
134 /* An optional BF field. This is used for comparison instructions,
135 in which an omitted BF field is taken as zero. */
136 #define OBF (BF + 1)
137 { 3, 23, 0, 0, 0, PPC_OPERAND_CR | PPC_OPERAND_OPTIONAL },
138
139 /* The BFA field in an X or XL form instruction. */
140 #define BFA (OBF + 1)
141 { 3, 18, 0, 0, 0, PPC_OPERAND_CR },
142
143 /* The BI field in a B form or XL form instruction. */
144 #define BI (BFA + 1)
145 #define BI_MASK (0x1f << 16)
146 { 5, 16, 0, 0, 0, PPC_OPERAND_CR },
147
148 /* The BO field in a B form instruction. Certain values are
149 illegal. */
150 #define BO (BI + 1)
151 #define BO_MASK (0x1f << 21)
152 { 5, 21, 0, insert_bo, extract_bo, 0 },
153
154 /* The BO field in a B form instruction when the + or - modifier is
155 used. This is like the BO field, but it must be even. */
156 #define BOE (BO + 1)
157 { 5, 21, 0, insert_boe, extract_boe, 0 },
158
159 /* The BT field in an X or XL form instruction. */
160 #define BT (BOE + 1)
161 { 5, 21, 0, 0, 0, PPC_OPERAND_CR },
162
163 /* The condition register number portion of the BI field in a B form
164 or XL form instruction. This is used for the extended
165 conditional branch mnemonics, which set the lower two bits of the
166 BI field. This field is optional. */
167 #define CR (BT + 1)
168 { 5, 16, 0, insert_cr, extract_cr, PPC_OPERAND_CR | PPC_OPERAND_OPTIONAL },
169
170 /* The D field in a D form instruction. This is a displacement off
171 a register, and implies that the next operand is a register in
172 parentheses. */
173 #define D (CR + 1)
174 { 16, 0, 1, 0, 0, PPC_OPERAND_PARENS },
175
176 /* The DS field in a DS form instruction. This is like D, but the
177 lower two bits are forced to zero. */
178 #define DS (D + 1)
179 { 16, 0, 1, insert_ds, extract_ds, PPC_OPERAND_PARENS },
180
181 /* The FL1 field in a POWER SC form instruction. */
182 #define FL1 (DS + 1)
183 { 4, 12, 0, 0, 0, 0 },
184
185 /* The FL2 field in a POWER SC form instruction. */
186 #define FL2 (FL1 + 1)
187 { 3, 2, 0, 0, 0, 0 },
188
189 /* The FLM field in an XFL form instruction. */
190 #define FLM (FL2 + 1)
191 { 8, 17, 0, 0, 0, 0 },
192
193 /* The FRA field in an X or A form instruction. */
194 #define FRA (FLM + 1)
195 #define FRA_MASK (0x1f << 16)
196 { 5, 16, 0, 0, 0, PPC_OPERAND_FPR },
197
198 /* The FRB field in an X or A form instruction. */
199 #define FRB (FRA + 1)
200 #define FRB_MASK (0x1f << 11)
201 { 5, 11, 0, 0, 0, PPC_OPERAND_FPR },
202
203 /* The FRC field in an A form instruction. */
204 #define FRC (FRB + 1)
205 #define FRC_MASK (0x1f << 6)
206 { 5, 6, 0, 0, 0, PPC_OPERAND_FPR },
207
208 /* The FRS field in an X form instruction or the FRT field in a D, X
209 or A form instruction. */
210 #define FRS (FRC + 1)
211 #define FRT (FRS)
212 { 5, 21, 0, 0, 0, PPC_OPERAND_FPR },
213
214 /* The FXM field in an XFX instruction. */
215 #define FXM (FRS + 1)
216 { 8, 12, 0, 0, 0, 0 },
217
218 /* The L field in a D or X form instruction. */
219 #define L (FXM + 1)
220 { 1, 21, 0, 0, 0, PPC_OPERAND_OPTIONAL },
221
222 /* The LEV field in a POWER SC form instruction. */
223 #define LEV (L + 1)
224 { 7, 5, 0, 0, 0, 0 },
225
226 /* The LI field in an I form instruction. The lower two bits are
227 forced to zero. */
228 #define LI (LEV + 1)
229 { 25, 0, 1, insert_li, extract_li, PPC_OPERAND_RELATIVE },
230
231 /* The LI field in an I form instruction when used as an absolute
232 address. */
233 #define LIA (LI + 1)
234 { 25, 0, 1, insert_li, extract_li, PPC_OPERAND_ABSOLUTE },
235
236 /* The MB field in an M form instruction. */
237 #define MB (LIA + 1)
238 #define MB_MASK (0x1f << 6)
239 { 5, 6, 0, 0, 0, 0 },
240
241 /* The ME field in an M form instruction. */
242 #define ME (MB + 1)
243 #define ME_MASK (0x1f << 1)
244 { 5, 1, 0, 0, 0, 0 },
245
246 /* The MB or ME field in an MD or MDS form instruction. The high
247 bit is wrapped to the low end. */
248 #define MB6 (ME + 1)
249 #define ME6 (MB6)
250 #define MB6_MASK (0x3f << 5)
251 { 6, 5, 0, insert_mb6, extract_mb6, 0 },
252
253 /* The NB field in an X form instruction or the SH field in an X or
254 M form instruction. */
255 #define NB (MB6 + 1)
256 #define SH (NB)
257 #define SH_MASK (0x1f << 11)
258 { 5, 11, 0, 0, 0, 0 },
259
260 /* The NSI field in a D form instruction. This is the same as the
261 SI field, only negated. */
262 #define NSI (NB + 1)
263 { 16, 0, 1, insert_nsi, extract_nsi, PPC_OPERAND_NEGATIVE },
264
265 /* The RA field in an D, DS, X, XO, M, or MDS form instruction. */
266 #define RA (NSI + 1)
267 #define RA_MASK (0x1f << 16)
268 { 5, 16, 0, 0, 0, PPC_OPERAND_GPR },
269
270 /* The RB field in an X, XO, M, or MDS form instruction. */
271 #define RB (RA + 1)
272 #define RB_MASK (0x1f << 11)
273 { 5, 11, 0, 0, 0, PPC_OPERAND_GPR },
274
275 /* The RB field in an X form instruction when it must be the same as
276 the RS field in the instruction. This is used for extended
277 mnemonics like mr. */
278 #define RBS (RB + 1)
279 { 5, 1, 0, insert_rbs, extract_rbs, PPC_OPERAND_FAKE },
280
281 /* The RS field in a D, DS, X, XFX, XS, M, MD or MDS form
282 instruction or the RT field in a D, DS, X, XFX or XO form
283 instruction. */
284 #define RS (RBS + 1)
285 #define RT (RS)
286 #define RT_MASK (0x1f << 21)
287 { 5, 21, 0, 0, 0, PPC_OPERAND_GPR },
288
289 /* The SH field in an MD form instruction. This is split. */
290 #define SH6 (RS + 1)
291 #define SH6_MASK ((0x1f << 11) | (1 << 1))
292 { 6, 1, 0, insert_sh6, extract_sh6, 0 },
293
294 /* The SI field in a D form instruction. */
295 #define SI (SH6 + 1)
296 { 16, 0, 1, 0, 0, 0 },
297
298 /* The SPR or TBR field in an XFX form instruction. This is
299 flipped--the lower 5 bits are stored in the upper 5 and vice-
300 versa. */
301 #define SPR (SI + 1)
302 #define TBR (SPR)
303 #define SPR_MASK (0x3ff << 11)
304 { 10, 11, 0, insert_spr, extract_spr, 0 },
305
306 /* The SR field in an X form instruction. */
307 #define SR (SPR + 1)
308 { 4, 16, 0, 0, 0, 0 },
309
310 /* The SV field in a POWER SC form instruction. */
311 #define SV (SR + 1)
312 { 14, 2, 0, 0, 0, 0 },
313
314 /* The TO field in a D or X form instruction. */
315 #define TO (SV + 1)
316 #define TO_MASK (0x1f << 21)
317 { 5, 21, 0, 0, 0, 0 },
318
319 /* The U field in an X form instruction. */
320 #define U (TO + 1)
321 { 4, 12, 0, 0, 0, 0 },
322
323 /* The UI field in a D form instruction. */
324 #define UI (U + 1)
325 { 16, 0, 0, 0, 0, 0 },
326 };
327
328 /* The functions used to insert and extract complicated operands. */
329
330 /* The BA field in an XL form instruction when it must be the same as
331 the BT field in the same instruction. This operand is marked FAKE.
332 The insertion function just copies the BT field into the BA field,
333 and the extraction function just checks that the fields are the
334 same. */
335
336 /*ARGSUSED*/
337 static unsigned long
338 insert_bat (insn, value, errmsg)
339 unsigned long insn;
340 long value;
341 const char **errmsg;
342 {
343 return insn | (((insn >> 21) & 0x1f) << 16);
344 }
345
346 static long
347 extract_bat (insn, invalid)
348 unsigned long insn;
349 int *invalid;
350 {
351 if (invalid != (int *) NULL
352 && ((insn >> 21) & 0x1f) != ((insn >> 16) & 0x1f))
353 *invalid = 1;
354 return 0;
355 }
356
357 /* The BB field in an XL form instruction when it must be the same as
358 the BA field in the same instruction. This operand is marked FAKE.
359 The insertion function just copies the BA field into the BB field,
360 and the extraction function just checks that the fields are the
361 same. */
362
363 /*ARGSUSED*/
364 static unsigned long
365 insert_bba (insn, value, errmsg)
366 unsigned long insn;
367 long value;
368 const char **errmsg;
369 {
370 return insn | (((insn >> 16) & 0x1f) << 11);
371 }
372
373 static long
374 extract_bba (insn, invalid)
375 unsigned long insn;
376 int *invalid;
377 {
378 if (invalid != (int *) NULL
379 && ((insn >> 16) & 0x1f) != ((insn >> 11) & 0x1f))
380 *invalid = 1;
381 return 0;
382 }
383
384 /* The BD field in a B form instruction. The lower two bits are
385 forced to zero. */
386
387 /*ARGSUSED*/
388 static unsigned long
389 insert_bd (insn, value, errmsg)
390 unsigned long insn;
391 long value;
392 const char **errmsg;
393 {
394 return insn | (value & 0xfffc);
395 }
396
397 /*ARGSUSED*/
398 static long
399 extract_bd (insn, invalid)
400 unsigned long insn;
401 int *invalid;
402 {
403 if ((insn & 0x8000) != 0)
404 return (insn & 0xfffc) - 0x10000;
405 else
406 return insn & 0xfffc;
407 }
408
409 /* The BD field in a B form instruction when the - modifier is used.
410 This modifier means that the branch is not expected to be taken.
411 We must set the y bit of the BO field to 1 if the offset is
412 negative. When extracting, we require that the y bit be 1 and that
413 the offset be positive, since if the y bit is 0 we just want to
414 print the normal form of the instruction. */
415
416 /*ARGSUSED*/
417 static unsigned long
418 insert_bdm (insn, value, errmsg)
419 unsigned long insn;
420 long value;
421 const char **errmsg;
422 {
423 if ((value & 0x8000) != 0)
424 insn |= 1 << 21;
425 return insn | (value & 0xfffc);
426 }
427
428 static long
429 extract_bdm (insn, invalid)
430 unsigned long insn;
431 int *invalid;
432 {
433 if (invalid != (int *) NULL
434 && ((insn & (1 << 21)) == 0
435 || (insn & (1 << 15) == 0)))
436 *invalid = 1;
437 if ((insn & 0x8000) != 0)
438 return (insn & 0xfffc) - 0x10000;
439 else
440 return insn & 0xfffc;
441 }
442
443 /* The BD field in a B form instruction when the + modifier is used.
444 This is like BDM, above, except that the branch is expected to be
445 taken. */
446
447 /*ARGSUSED*/
448 static unsigned long
449 insert_bdp (insn, value, errmsg)
450 unsigned long insn;
451 long value;
452 const char **errmsg;
453 {
454 if ((value & 0x8000) == 0)
455 insn |= 1 << 21;
456 return insn | (value & 0xfffc);
457 }
458
459 static long
460 extract_bdp (insn, invalid)
461 unsigned long insn;
462 int *invalid;
463 {
464 if (invalid != (int *) NULL
465 && ((insn & (1 << 21)) == 0
466 || (insn & (1 << 15)) != 0))
467 *invalid = 1;
468 if ((insn & 0x8000) != 0)
469 return (insn & 0xfffc) - 0x10000;
470 else
471 return insn & 0xfffc;
472 }
473
474 /* Check for legal values of a BO field. */
475
476 static int
477 valid_bo (value)
478 long value;
479 {
480 /* Certain encodings have bits that are required to be zero. These
481 are (z must be zero, y may be anything):
482 001zy
483 011zy
484 1z00y
485 1z01y
486 1z1zz
487 */
488 switch (value & 0x14)
489 {
490 default:
491 case 0:
492 return 1;
493 case 0x4:
494 return (value & 0x2) == 0;
495 case 0x10:
496 return (value & 0x8) == 0;
497 case 0x14:
498 return value == 0x14;
499 }
500 }
501
502 /* The BO field in a B form instruction. Warn about attempts to set
503 the field to an illegal value. */
504
505 static unsigned long
506 insert_bo (insn, value, errmsg)
507 unsigned long insn;
508 long value;
509 const char **errmsg;
510 {
511 if (errmsg != (const char **) NULL
512 && ! valid_bo (value))
513 *errmsg = "invalid conditional option";
514 return insn | ((value & 0x1f) << 21);
515 }
516
517 static long
518 extract_bo (insn, invalid)
519 unsigned long insn;
520 int *invalid;
521 {
522 long value;
523
524 value = (insn >> 21) & 0x1f;
525 if (invalid != (int *) NULL
526 && ! valid_bo (value))
527 *invalid = 1;
528 return value;
529 }
530
531 /* The BO field in a B form instruction when the + or - modifier is
532 used. This is like the BO field, but it must be even. When
533 extracting it, we force it to be even. */
534
535 static unsigned long
536 insert_boe (insn, value, errmsg)
537 unsigned long insn;
538 long value;
539 const char **errmsg;
540 {
541 if (errmsg != (const char **) NULL)
542 {
543 if (! valid_bo (value))
544 *errmsg = "invalid conditional option";
545 else if ((value & 1) != 0)
546 *errmsg = "attempt to set y bit when using + or - modifier";
547 }
548 return insn | ((value & 0x1f) << 21);
549 }
550
551 static long
552 extract_boe (insn, invalid)
553 unsigned long insn;
554 int *invalid;
555 {
556 long value;
557
558 value = (insn >> 21) & 0x1f;
559 if (invalid != (int *) NULL
560 && ! valid_bo (value))
561 *invalid = 1;
562 return value & 0x1e;
563 }
564
565 /* The condition register number portion of the BI field in a B form
566 or XL form instruction. This is used for the extended conditional
567 branch mnemonics, which set the lower two bits of the BI field. It
568 is the BI field with the lower two bits ignored. */
569
570 /*ARGSUSED*/
571 static unsigned long
572 insert_cr (insn, value, errmsg)
573 unsigned long insn;
574 long value;
575 const char **errmsg;
576 {
577 return insn | ((value & 0x1c) << 16);
578 }
579
580 /*ARGSUSED*/
581 static long
582 extract_cr (insn, invalid)
583 unsigned long insn;
584 int *invalid;
585 {
586 return (insn >> 16) & 0x1c;
587 }
588
589 /* The DS field in a DS form instruction. This is like D, but the
590 lower two bits are forced to zero. */
591
592 /*ARGSUSED*/
593 static unsigned long
594 insert_ds (insn, value, errmsg)
595 unsigned long insn;
596 long value;
597 const char **errmsg;
598 {
599 return insn | (value & 0xfffc);
600 }
601
602 /*ARGSUSED*/
603 static long
604 extract_ds (insn, invalid)
605 unsigned long insn;
606 int *invalid;
607 {
608 if ((insn & 0x8000) != 0)
609 return (insn & 0xfffc) - 0x10000;
610 else
611 return insn & 0xfffc;
612 }
613
614 /* The LI field in an I form instruction. The lower two bits are
615 forced to zero. */
616
617 /*ARGSUSED*/
618 static unsigned long
619 insert_li (insn, value, errmsg)
620 unsigned long insn;
621 long value;
622 const char **errmsg;
623 {
624 return insn | (value & 0x3fffffc);
625 }
626
627 /*ARGSUSED*/
628 static long
629 extract_li (insn, invalid)
630 unsigned long insn;
631 int *invalid;
632 {
633 if ((insn & 0x2000000) != 0)
634 return (insn & 0x3fffffc) - 0x4000000;
635 else
636 return insn & 0x3fffffc;
637 }
638
639 /* The MB or ME field in an MD or MDS form instruction. The high bit
640 is wrapped to the low end. */
641
642 /*ARGSUSED*/
643 static unsigned long
644 insert_mb6 (insn, value, errmsg)
645 unsigned long insn;
646 long value;
647 const char **errmsg;
648 {
649 return insn | ((value & 0x1f) << 6) | (value & 0x20);
650 }
651
652 /*ARGSUSED*/
653 static long
654 extract_mb6 (insn, invalid)
655 unsigned long insn;
656 int *invalid;
657 {
658 return ((insn >> 6) & 0x1f) | (insn & 0x20);
659 }
660
661 /* The NSI field in a D form instruction. This is the same as the SI
662 field, only negated. The extraction function always mark it as
663 invalid, since we never want to recognize an instruction which uses
664 a field of this type. */
665
666 /*ARGSUSED*/
667 static unsigned long
668 insert_nsi (insn, value, errmsg)
669 unsigned long insn;
670 long value;
671 const char **errmsg;
672 {
673 return insn | ((- value) & 0xffff);
674 }
675
676 static long
677 extract_nsi (insn, invalid)
678 unsigned long insn;
679 int *invalid;
680 {
681 if (invalid != (int *) NULL)
682 *invalid = 1;
683 if ((insn & 0x8000) != 0)
684 return - ((insn & 0xffff) - 0x10000);
685 else
686 return - (insn & 0xffff);
687 }
688
689 /* The RB field in an X form instruction when it must be the same as
690 the RS field in the instruction. This is used for extended
691 mnemonics like mr. This operand is marked FAKE. The insertion
692 function just copies the BT field into the BA field, and the
693 extraction function just checks that the fields are the same. */
694
695 /*ARGSUSED*/
696 static unsigned long
697 insert_rbs (insn, value, errmsg)
698 unsigned long insn;
699 long value;
700 const char **errmsg;
701 {
702 return insn | (((insn >> 21) & 0x1f) << 11);
703 }
704
705 static long
706 extract_rbs (insn, invalid)
707 unsigned long insn;
708 int *invalid;
709 {
710 if (invalid != (int *) NULL
711 && ((insn >> 21) & 0x1f) != ((insn >> 11) & 0x1f))
712 *invalid = 1;
713 return 0;
714 }
715
716 /* The SH field in an MD form instruction. This is split. */
717
718 /*ARGSUSED*/
719 static unsigned long
720 insert_sh6 (insn, value, errmsg)
721 unsigned long insn;
722 long value;
723 const char **errmsg;
724 {
725 return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
726 }
727
728 /*ARGSUSED*/
729 static long
730 extract_sh6 (insn, invalid)
731 unsigned long insn;
732 int *invalid;
733 {
734 return ((insn >> 11) & 0x1f) | ((insn << 4) & 0x20);
735 }
736
737 /* The SPR or TBR field in an XFX form instruction. This is
738 flipped--the lower 5 bits are stored in the upper 5 and vice-
739 versa. */
740
741 static unsigned long
742 insert_spr (insn, value, errmsg)
743 unsigned long insn;
744 long value;
745 const char **errmsg;
746 {
747 return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
748 }
749
750 static long
751 extract_spr (insn, invalid)
752 unsigned long insn;
753 int *invalid;
754 {
755 return ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
756 }
757 \f
758 /* Macros used to form opcodes. */
759
760 /* The main opcode. */
761 #define OP(x) (((x) & 0x3f) << 26)
762 #define OP_MASK OP (0x3f)
763
764 /* The main opcode combined with a trap code in the TO field of a D
765 form instruction. Used for extended mnemonics for the trap
766 instructions. */
767 #define OPTO(x,to) (OP (x) | (((to) & 0x1f) << 21))
768 #define OPTO_MASK (OP_MASK | TO_MASK)
769
770 /* The main opcode combined with a comparison size bit in the L field
771 of a D form or X form instruction. Used for extended mnemonics for
772 the comparison instructions. */
773 #define OPL(x,l) (OP (x) | (((l) & 1) << 21))
774 #define OPL_MASK OPL (0x3f,1)
775
776 /* An A form instruction. */
777 #define A(op, xop, rc) (OP (op) | (((xop) & 0x1f) << 1) | ((rc) & 1))
778 #define A_MASK A (0x3f, 0x1f, 1)
779
780 /* An A_MASK with the FRB field fixed. */
781 #define AFRB_MASK (A_MASK | FRB_MASK)
782
783 /* An A_MASK with the FRC field fixed. */
784 #define AFRC_MASK (A_MASK | FRC_MASK)
785
786 /* An A_MASK with the FRA and FRC fields fixed. */
787 #define AFRAFRC_MASK (A_MASK | FRA_MASK | FRC_MASK)
788
789 /* A B form instruction. */
790 #define B(op, aa, lk) (OP (op) | (((aa) & 1) << 1) | ((lk) & 1))
791 #define B_MASK B (0x3f, 1, 1)
792
793 /* A B form instruction setting the BO field. */
794 #define BBO(op, bo, aa, lk) (B ((op), (aa), (lk)) | (((bo) & 0x1f) << 21))
795 #define BBO_MASK BBO (0x3f, 0x1f, 1, 1)
796
797 /* A BBO_MASK with the y bit of the BO field removed. This permits
798 matching a conditional branch regardless of the setting of the y
799 bit. */
800 #define Y_MASK (1 << 21)
801 #define BBOY_MASK (BBO_MASK &~ Y_MASK)
802
803 /* A B form instruction setting the BO field and the condition bits of
804 the BI field. */
805 #define BBOCB(op, bo, cb, aa, lk) \
806 (BBO ((op), (bo), (aa), (lk)) | (((cb) & 0x3) << 16))
807 #define BBOCB_MASK BBOCB (0x3f, 0x1f, 0x3, 1, 1)
808
809 /* A BBOCB_MASK with the y bit of the BO field removed. */
810 #define BBOYCB_MASK (BBOCB_MASK &~ Y_MASK)
811
812 /* A BBOYCB_MASK in which the BI field is fixed. */
813 #define BBOYBI_MASK (BBOYCB_MASK | BI_MASK)
814
815 /* The main opcode mask with the RA field clear. */
816 #define DRA_MASK (OP_MASK | RA_MASK)
817
818 /* A DS form instruction. */
819 #define DSO(op, xop) (OP (op) | ((xop) & 0x3))
820 #define DS_MASK DSO (0x3f, 3)
821
822 /* An M form instruction. */
823 #define M(op, rc) (OP (op) | ((rc) & 1))
824 #define M_MASK M (0x3f, 1)
825
826 /* An M form instruction with the ME field specified. */
827 #define MME(op, me, rc) (M ((op), (rc)) | (((me) & 0x1f) << 1))
828
829 /* An M_MASK with the MB and ME fields fixed. */
830 #define MMBME_MASK (M_MASK | MB_MASK | ME_MASK)
831
832 /* An M_MASK with the SH and ME fields fixed. */
833 #define MSHME_MASK (M_MASK | SH_MASK | ME_MASK)
834
835 /* An MD form instruction. */
836 #define MD(op, xop, rc) (OP (op) | (((xop) & 0x7) << 2) | ((rc) & 1))
837 #define MD_MASK MD (0x3f, 0x7, 1)
838
839 /* An MD_MASK with the MB field fixed. */
840 #define MDMB_MASK (MD_MASK | MB6_MASK)
841
842 /* An MD_MASK with the SH field fixed. */
843 #define MDSH_MASK (MD_MASK | SH6_MASK)
844
845 /* An MDS form instruction. */
846 #define MDS(op, xop, rc) (OP (op) | (((xop) & 0xf) << 1) | ((rc) & 1))
847 #define MDS_MASK MDS (0x3f, 0xf, 1)
848
849 /* An MDS_MASK with the MB field fixed. */
850 #define MDSMB_MASK (MDS_MASK | MB6_MASK)
851
852 /* An SC form instruction. */
853 #define SC(op, sa, lk) (OP (op) | (((sa) & 1) << 1) | ((lk) & 1))
854 #define SC_MASK (OP_MASK | (0x3ff << 16))
855
856 /* An X form instruction. */
857 #define X(op, xop) (OP (op) | (((xop) & 0x3ff) << 1))
858
859 /* An X form instruction with the RC bit specified. */
860 #define XRC(op, xop, rc) (X ((op), (xop)) | ((rc) & 1))
861
862 /* The mask for an X form instruction. */
863 #define X_MASK XRC (0x3f, 0x3ff, 1)
864
865 /* An X_MASK with the RA field fixed. */
866 #define XRA_MASK (X_MASK | RA_MASK)
867
868 /* An X_MASK with the RB field fixed. */
869 #define XRB_MASK (X_MASK | RB_MASK)
870
871 /* An X_MASK with the RT field fixed. */
872 #define XRT_MASK (X_MASK | RT_MASK)
873
874 /* An X_MASK with the RA and RB fields fixed. */
875 #define XRARB_MASK (X_MASK | RA_MASK | RB_MASK)
876
877 /* An X_MASK with the RT and RA fields fixed. */
878 #define XRTRA_MASK (X_MASK | RT_MASK | RA_MASK)
879
880 /* An X form comparison instruction. */
881 #define XCMPL(op, xop, l) (X ((op), (xop)) | (((l) & 1) << 21))
882
883 /* The mask for an X form comparison instruction. */
884 #define XCMP_MASK (X_MASK | (1 << 22))
885
886 /* The mask for an X form comparison instruction with the L field
887 fixed. */
888 #define XCMPL_MASK (XCMP_MASK | (1 << 21))
889
890 /* An X form trap instruction with the TO field specified. */
891 #define XTO(op, xop, to) (X ((op), (xop)) | (((to) & 0x1f) << 21))
892 #define XTO_MASK (X_MASK | TO_MASK)
893
894 /* An XFL form instruction. */
895 #define XFL(op, xop, rc) (OP (op) | (((xop) & 0x3ff) << 1) | ((rc) & 1))
896 #define XFL_MASK (XFL (0x3f, 0x3ff, 1) | (1 << 25) | (1 << 16))
897
898 /* An XL form instruction with the LK field set to 0. */
899 #define XL(op, xop) (OP (op) | (((xop) & 0x3ff) << 1))
900
901 /* An XL form instruction which uses the LK field. */
902 #define XLLK(op, xop, lk) (XL ((op), (xop)) | ((lk) & 1))
903
904 /* The mask for an XL form instruction. */
905 #define XL_MASK XLLK (0x3f, 0x3ff, 1)
906
907 /* An XL form instruction which explicitly sets the BO field. */
908 #define XLO(op, bo, xop, lk) \
909 (XLLK ((op), (xop), (lk)) | (((bo) & 0x1f) << 21))
910 #define XLO_MASK (XL_MASK | BO_MASK)
911
912 /* An XL form instruction which explicitly sets the y bit of the BO
913 field. */
914 #define XLYLK(op, xop, y, lk) (XLLK ((op), (xop), (lk)) | (((y) & 1) << 21))
915 #define XLYLK_MASK (XL_MASK | Y_MASK)
916
917 /* An XL form instruction which sets the BO field and the condition
918 bits of the BI field. */
919 #define XLOCB(op, bo, cb, xop, lk) \
920 (XLO ((op), (bo), (xop), (lk)) | (((cb) & 3) << 16))
921 #define XLOCB_MASK XLOCB (0x3f, 0x1f, 0x3, 0x3ff, 1)
922
923 /* An XL_MASK or XLYLK_MASK or XLOCB_MASK with the BB field fixed. */
924 #define XLBB_MASK (XL_MASK | BB_MASK)
925 #define XLYBB_MASK (XLYLK_MASK | BB_MASK)
926 #define XLBOCBBB_MASK (XLOCB_MASK | BB_MASK)
927
928 /* An XL_MASK with the BO and BB fields fixed. */
929 #define XLBOBB_MASK (XL_MASK | BO_MASK | BB_MASK)
930
931 /* An XL_MASK with the BO, BI and BB fields fixed. */
932 #define XLBOBIBB_MASK (XL_MASK | BO_MASK | BI_MASK | BB_MASK)
933
934 /* An XO form instruction. */
935 #define XO(op, xop, oe, rc) \
936 (OP (op) | (((xop) & 0x1ff) << 1) | (((oe) & 1) << 10) | ((rc) & 1))
937 #define XO_MASK XO (0x3f, 0x1ff, 1, 1)
938
939 /* An XO_MASK with the RB field fixed. */
940 #define XORB_MASK (XO_MASK | RB_MASK)
941
942 /* An XS form instruction. */
943 #define XS(op, xop, rc) (OP (op) | (((xop) & 0x1ff) << 2) | ((rc) & 1))
944 #define XS_MASK XS (0x3f, 0x1ff, 1)
945
946 /* An XFX form instruction with the SPR field filled in. */
947 #define XSPR(op, xop, spr) \
948 (X ((op), (xop)) | (((spr) & 0x1f) << 16) | (((spr) & 0x3e0) << 6))
949 #define XSPR_MASK (X_MASK | SPR_MASK)
950
951 /* The BO encodings used in extended conditional branch mnemonics. */
952 #define BODNZF (0x0)
953 #define BODNZFP (0x1)
954 #define BODZF (0x2)
955 #define BODZFP (0x3)
956 #define BOF (0x4)
957 #define BOFP (0x5)
958 #define BODNZT (0x8)
959 #define BODNZTP (0x9)
960 #define BODZT (0xa)
961 #define BODZTP (0xb)
962 #define BOT (0xc)
963 #define BOTP (0xd)
964 #define BODNZ (0x10)
965 #define BODNZP (0x11)
966 #define BODZ (0x12)
967 #define BODZP (0x13)
968 #define BOU (0x14)
969
970 /* The BI condition bit encodings used in extended conditional branch
971 mnemonics. */
972 #define CBLT (0)
973 #define CBGT (1)
974 #define CBEQ (2)
975 #define CBSO (3)
976
977 /* The TO encodings used in extended trap mnemonics. */
978 #define TOLGT (0x1)
979 #define TOLLT (0x2)
980 #define TOEQ (0x4)
981 #define TOLGE (0x5)
982 #define TOLNL (0x5)
983 #define TOLLE (0x6)
984 #define TOLNG (0x6)
985 #define TOGT (0x8)
986 #define TOGE (0xc)
987 #define TONL (0xc)
988 #define TOLT (0x10)
989 #define TOLE (0x14)
990 #define TONG (0x14)
991 #define TONE (0x18)
992 #define TOU (0x1f)
993 \f
994 /* Smaller names for the flags so each entry in the opcodes table will
995 fit on a single line. */
996 #define PPC PPC_OPCODE_PPC
997 #define POWER PPC_OPCODE_POWER
998 #define B32 PPC_OPCODE_32
999 #define B64 PPC_OPCODE_64
1000 \f
1001 /* The opcode table.
1002
1003 The format of the opcode table is:
1004
1005 NAME OPCODE MASK FLAGS { OPERANDS }
1006
1007 NAME is the name of the instruction.
1008 OPCODE is the instruction opcode.
1009 MASK is the opcode mask; this is used to tell the disassembler
1010 which bits in the actual opcode must match OPCODE.
1011 FLAGS are flags indicated what processors support the instruction.
1012 OPERANDS is the list of operands.
1013
1014 The disassembler reads the table in order and prints the first
1015 instruction which matches, so this table is sorted to put more
1016 specific instructions before more general instructions. It is also
1017 sorted by major opcode. */
1018
1019 const struct powerpc_opcode powerpc_opcodes[] = {
1020 { "tdlgti", OPTO(2,TOLGT), OPTO_MASK, PPC|B64, { RA, SI } },
1021 { "tdllti", OPTO(2,TOLLT), OPTO_MASK, PPC|B64, { RA, SI } },
1022 { "tdeqi", OPTO(2,TOEQ), OPTO_MASK, PPC|B64, { RA, SI } },
1023 { "tdlgei", OPTO(2,TOLGE), OPTO_MASK, PPC|B64, { RA, SI } },
1024 { "tdlnli", OPTO(2,TOLNL), OPTO_MASK, PPC|B64, { RA, SI } },
1025 { "tdllei", OPTO(2,TOLLE), OPTO_MASK, PPC|B64, { RA, SI } },
1026 { "tdlngi", OPTO(2,TOLNG), OPTO_MASK, PPC|B64, { RA, SI } },
1027 { "tdgti", OPTO(2,TOGT), OPTO_MASK, PPC|B64, { RA, SI } },
1028 { "tdgei", OPTO(2,TOGE), OPTO_MASK, PPC|B64, { RA, SI } },
1029 { "tdnli", OPTO(2,TONL), OPTO_MASK, PPC|B64, { RA, SI } },
1030 { "tdlti", OPTO(2,TOLT), OPTO_MASK, PPC|B64, { RA, SI } },
1031 { "tdlei", OPTO(2,TOLE), OPTO_MASK, PPC|B64, { RA, SI } },
1032 { "tdngi", OPTO(2,TONG), OPTO_MASK, PPC|B64, { RA, SI } },
1033 { "tdnei", OPTO(2,TONE), OPTO_MASK, PPC|B64, { RA, SI } },
1034 { "tdi", OP(2), OP_MASK, PPC|B64, { TO, RA, SI } },
1035
1036 { "twlgti", OPTO(3,TOLGT), OPTO_MASK, PPC, { RA, SI } },
1037 { "tlgti", OPTO(3,TOLGT), OPTO_MASK, POWER, { RA, SI } },
1038 { "twllti", OPTO(3,TOLLT), OPTO_MASK, PPC, { RA, SI } },
1039 { "tllti", OPTO(3,TOLLT), OPTO_MASK, POWER, { RA, SI } },
1040 { "tweqi", OPTO(3,TOEQ), OPTO_MASK, PPC, { RA, SI } },
1041 { "teqi", OPTO(3,TOEQ), OPTO_MASK, POWER, { RA, SI } },
1042 { "twlgei", OPTO(3,TOLGE), OPTO_MASK, PPC, { RA, SI } },
1043 { "tlgei", OPTO(3,TOLGE), OPTO_MASK, POWER, { RA, SI } },
1044 { "twlnli", OPTO(3,TOLNL), OPTO_MASK, PPC, { RA, SI } },
1045 { "tlnli", OPTO(3,TOLNL), OPTO_MASK, POWER, { RA, SI } },
1046 { "twllei", OPTO(3,TOLLE), OPTO_MASK, PPC, { RA, SI } },
1047 { "tllei", OPTO(3,TOLLE), OPTO_MASK, POWER, { RA, SI } },
1048 { "twlngi", OPTO(3,TOLNG), OPTO_MASK, PPC, { RA, SI } },
1049 { "tlngi", OPTO(3,TOLNG), OPTO_MASK, POWER, { RA, SI } },
1050 { "twgti", OPTO(3,TOGT), OPTO_MASK, PPC, { RA, SI } },
1051 { "tgti", OPTO(3,TOGT), OPTO_MASK, POWER, { RA, SI } },
1052 { "twgei", OPTO(3,TOGE), OPTO_MASK, PPC, { RA, SI } },
1053 { "tgei", OPTO(3,TOGE), OPTO_MASK, POWER, { RA, SI } },
1054 { "twnli", OPTO(3,TONL), OPTO_MASK, PPC, { RA, SI } },
1055 { "tnli", OPTO(3,TONL), OPTO_MASK, POWER, { RA, SI } },
1056 { "twlti", OPTO(3,TOLT), OPTO_MASK, PPC, { RA, SI } },
1057 { "tlti", OPTO(3,TOLT), OPTO_MASK, POWER, { RA, SI } },
1058 { "twlei", OPTO(3,TOLE), OPTO_MASK, PPC, { RA, SI } },
1059 { "tlei", OPTO(3,TOLE), OPTO_MASK, POWER, { RA, SI } },
1060 { "twngi", OPTO(3,TONG), OPTO_MASK, PPC, { RA, SI } },
1061 { "tngi", OPTO(3,TONG), OPTO_MASK, POWER, { RA, SI } },
1062 { "twnei", OPTO(3,TONE), OPTO_MASK, PPC, { RA, SI } },
1063 { "tnei", OPTO(3,TONE), OPTO_MASK, POWER, { RA, SI } },
1064 { "twi", OP(3), OP_MASK, PPC, { TO, RA, SI } },
1065 { "ti", OP(3), OP_MASK, POWER, { TO, RA, SI } },
1066
1067 { "mulli", OP(7), OP_MASK, PPC, { RT, RA, SI } },
1068 { "muli", OP(7), OP_MASK, POWER, { RT, RA, SI } },
1069
1070 { "subfic", OP(8), OP_MASK, PPC, { RT, RA, SI } },
1071 { "sfi", OP(8), OP_MASK, POWER, { RT, RA, SI } },
1072
1073 { "dozi", OP(9), OP_MASK, POWER, { RT, RA, SI } },
1074
1075 { "cmplwi", OPL(10,0), OPL_MASK, PPC, { OBF, RA, UI } },
1076 { "cmpldi", OPL(10,1), OPL_MASK, PPC|B64, { OBF, RA, UI } },
1077 { "cmpli", OP(10), OP_MASK, PPC, { BF, L, RA, UI } },
1078 { "cmpli", OP(10), OP_MASK, POWER, { BF, RA, UI } },
1079
1080 { "cmpwi", OPL(11,0), OPL_MASK, PPC, { OBF, RA, SI } },
1081 { "cmpdi", OPL(11,1), OPL_MASK, PPC|B64, { OBF, RA, SI } },
1082 { "cmpi", OP(11), OP_MASK, PPC, { BF, L, RA, SI } },
1083 { "cmpi", OP(11), OP_MASK, POWER, { BF, RA, SI } },
1084
1085 { "addic", OP(12), OP_MASK, PPC, { RT, RA, SI } },
1086 { "ai", OP(12), OP_MASK, POWER, { RT, RA, SI } },
1087 { "subic", OP(12), OP_MASK, PPC, { RT, RA, NSI } },
1088
1089 { "addic.", OP(13), OP_MASK, PPC, { RT, RA, SI } },
1090 { "ai.", OP(13), OP_MASK, POWER, { RT, RA, SI } },
1091 { "subic.", OP(13), OP_MASK, PPC, { RT, RA, NSI } },
1092
1093 { "li", OP(14), DRA_MASK, PPC, { RT, SI } },
1094 { "lil", OP(14), DRA_MASK, POWER, { RT, SI } },
1095 { "addi", OP(14), OP_MASK, PPC, { RT, RA, SI } },
1096 { "cal", OP(14), OP_MASK, POWER, { RT, RA, SI } },
1097 { "subi", OP(14), OP_MASK, PPC, { RT, RA, NSI } },
1098 { "la", OP(14), OP_MASK, PPC, { RT, D, RA } },
1099
1100 { "lis", OP(15), DRA_MASK, PPC, { RT, SI } },
1101 { "liu", OP(15), DRA_MASK, POWER, { RT, SI } },
1102 { "addis", OP(15), OP_MASK, PPC, { RT, RA, SI } },
1103 { "cau", OP(15), OP_MASK, POWER, { RT, RA, SI } },
1104 { "subis", OP(15), OP_MASK, PPC, { RT, RA, NSI } },
1105
1106 { "bdnz-", BBO(16,BODNZ,0,0), BBOYBI_MASK, PPC, { BDM } },
1107 { "bdnz+", BBO(16,BODNZ,0,0), BBOYBI_MASK, PPC, { BDP } },
1108 { "bdnz", BBO(16,BODNZ,0,0), BBOYBI_MASK, PPC|POWER, { BD } },
1109 { "bdnzl-", BBO(16,BODNZ,0,1), BBOYBI_MASK, PPC, { BDM } },
1110 { "bdnzl+", BBO(16,BODNZ,0,1), BBOYBI_MASK, PPC, { BDP } },
1111 { "bdnzl", BBO(16,BODNZ,0,1), BBOYBI_MASK, PPC|POWER, { BD } },
1112 { "bdnza-", BBO(16,BODNZ,1,0), BBOYBI_MASK, PPC, { BDMA } },
1113 { "bdnza+", BBO(16,BODNZ,1,0), BBOYBI_MASK, PPC, { BDPA } },
1114 { "bdnza", BBO(16,BODNZ,1,0), BBOYBI_MASK, PPC|POWER, { BDA } },
1115 { "bdnzla-", BBO(16,BODNZ,1,1), BBOYBI_MASK, PPC, { BDMA } },
1116 { "bdnzla+", BBO(16,BODNZ,1,1), BBOYBI_MASK, PPC, { BDPA } },
1117 { "bdnzla", BBO(16,BODNZ,1,1), BBOYBI_MASK, PPC|POWER, { BDA } },
1118 { "bdz-", BBO(16,BODZ,0,0), BBOYBI_MASK, PPC, { BDM } },
1119 { "bdz+", BBO(16,BODZ,0,0), BBOYBI_MASK, PPC, { BDP } },
1120 { "bdz", BBO(16,BODZ,0,0), BBOYBI_MASK, PPC|POWER, { BD } },
1121 { "bdzl-", BBO(16,BODZ,0,1), BBOYBI_MASK, PPC, { BDM } },
1122 { "bdzl+", BBO(16,BODZ,0,1), BBOYBI_MASK, PPC, { BDP } },
1123 { "bdzl", BBO(16,BODZ,0,1), BBOYBI_MASK, PPC|POWER, { BD } },
1124 { "bdza-", BBO(16,BODZ,1,0), BBOYBI_MASK, PPC, { BDMA } },
1125 { "bdza+", BBO(16,BODZ,1,0), BBOYBI_MASK, PPC, { BDPA } },
1126 { "bdza", BBO(16,BODZ,1,0), BBOYBI_MASK, PPC|POWER, { BDA } },
1127 { "bdzla-", BBO(16,BODZ,1,1), BBOYBI_MASK, PPC, { BDMA } },
1128 { "bdzla+", BBO(16,BODZ,1,1), BBOYBI_MASK, PPC, { BDPA } },
1129 { "bdzla", BBO(16,BODZ,1,1), BBOYBI_MASK, PPC|POWER, { BDA } },
1130 { "blt-", BBOCB(16,BOT,CBLT,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
1131 { "blt+", BBOCB(16,BOT,CBLT,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
1132 { "blt", BBOCB(16,BOT,CBLT,0,0), BBOYCB_MASK, PPC|POWER, { CR, BD } },
1133 { "bltl-", BBOCB(16,BOT,CBLT,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
1134 { "bltl+", BBOCB(16,BOT,CBLT,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
1135 { "bltl", BBOCB(16,BOT,CBLT,0,1), BBOYCB_MASK, PPC|POWER, { CR, BD } },
1136 { "blta-", BBOCB(16,BOT,CBLT,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
1137 { "blta+", BBOCB(16,BOT,CBLT,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
1138 { "blta", BBOCB(16,BOT,CBLT,1,0), BBOYCB_MASK, PPC|POWER, { CR, BDA } },
1139 { "bltla-", BBOCB(16,BOT,CBLT,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
1140 { "bltla+", BBOCB(16,BOT,CBLT,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
1141 { "bltla", BBOCB(16,BOT,CBLT,1,1), BBOYCB_MASK, PPC|POWER, { CR, BDA } },
1142 { "bgt-", BBOCB(16,BOT,CBGT,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
1143 { "bgt+", BBOCB(16,BOT,CBGT,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
1144 { "bgt", BBOCB(16,BOT,CBGT,0,0), BBOYCB_MASK, PPC|POWER, { CR, BD } },
1145 { "bgtl-", BBOCB(16,BOT,CBGT,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
1146 { "bgtl+", BBOCB(16,BOT,CBGT,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
1147 { "bgtl", BBOCB(16,BOT,CBGT,0,1), BBOYCB_MASK, PPC|POWER, { CR, BD } },
1148 { "bgta-", BBOCB(16,BOT,CBGT,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
1149 { "bgta+", BBOCB(16,BOT,CBGT,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
1150 { "bgta", BBOCB(16,BOT,CBGT,1,0), BBOYCB_MASK, PPC|POWER, { CR, BDA } },
1151 { "bgtla-", BBOCB(16,BOT,CBGT,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
1152 { "bgtla+", BBOCB(16,BOT,CBGT,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
1153 { "bgtla", BBOCB(16,BOT,CBGT,1,1), BBOYCB_MASK, PPC|POWER, { CR, BDA } },
1154 { "beq-", BBOCB(16,BOT,CBEQ,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
1155 { "beq+", BBOCB(16,BOT,CBEQ,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
1156 { "beq", BBOCB(16,BOT,CBEQ,0,0), BBOYCB_MASK, PPC|POWER, { CR, BD } },
1157 { "beql-", BBOCB(16,BOT,CBEQ,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
1158 { "beql+", BBOCB(16,BOT,CBEQ,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
1159 { "beql", BBOCB(16,BOT,CBEQ,0,1), BBOYCB_MASK, PPC|POWER, { CR, BD } },
1160 { "beqa-", BBOCB(16,BOT,CBEQ,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
1161 { "beqa+", BBOCB(16,BOT,CBEQ,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
1162 { "beqa", BBOCB(16,BOT,CBEQ,1,0), BBOYCB_MASK, PPC|POWER, { CR, BDA } },
1163 { "beqla-", BBOCB(16,BOT,CBEQ,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
1164 { "beqla+", BBOCB(16,BOT,CBEQ,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
1165 { "beqla", BBOCB(16,BOT,CBEQ,1,1), BBOYCB_MASK, PPC|POWER, { CR, BDA } },
1166 { "bso-", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
1167 { "bso+", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
1168 { "bso", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, PPC|POWER, { CR, BD } },
1169 { "bsol-", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
1170 { "bsol+", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
1171 { "bsol", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, PPC|POWER, { CR, BD } },
1172 { "bsoa-", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
1173 { "bsoa+", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
1174 { "bsoa", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, PPC|POWER, { CR, BDA } },
1175 { "bsola-", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
1176 { "bsola+", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
1177 { "bsola", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, PPC|POWER, { CR, BDA } },
1178 { "bun-", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
1179 { "bun+", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
1180 { "bun", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, PPC, { CR, BD } },
1181 { "bunl-", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
1182 { "bunl+", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
1183 { "bunl", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, PPC, { CR, BD } },
1184 { "buna-", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
1185 { "buna+", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
1186 { "buna", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, PPC, { CR, BDA } },
1187 { "bunla-", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
1188 { "bunla+", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
1189 { "bunla", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, PPC, { CR, BDA } },
1190 { "bge-", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
1191 { "bge+", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
1192 { "bge", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, PPC|POWER, { CR, BD } },
1193 { "bgel-", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
1194 { "bgel+", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
1195 { "bgel", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, PPC|POWER, { CR, BD } },
1196 { "bgea-", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
1197 { "bgea+", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
1198 { "bgea", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, PPC|POWER, { CR, BDA } },
1199 { "bgela-", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
1200 { "bgela+", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
1201 { "bgela", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, PPC|POWER, { CR, BDA } },
1202 { "bnl-", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
1203 { "bnl+", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
1204 { "bnl", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, PPC|POWER, { CR, BD } },
1205 { "bnll-", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
1206 { "bnll+", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
1207 { "bnll", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, PPC|POWER, { CR, BD } },
1208 { "bnla-", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
1209 { "bnla+", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
1210 { "bnla", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, PPC|POWER, { CR, BDA } },
1211 { "bnlla-", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
1212 { "bnlla+", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
1213 { "bnlla", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, PPC|POWER, { CR, BDA } },
1214 { "ble-", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
1215 { "ble+", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
1216 { "ble", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, PPC|POWER, { CR, BD } },
1217 { "blel-", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
1218 { "blel+", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
1219 { "blel", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, PPC|POWER, { CR, BD } },
1220 { "blea-", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
1221 { "blea+", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
1222 { "blea", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, PPC|POWER, { CR, BDA } },
1223 { "blela-", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
1224 { "blela+", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
1225 { "blela", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, PPC|POWER, { CR, BDA } },
1226 { "bng-", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
1227 { "bng+", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
1228 { "bng", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, PPC|POWER, { CR, BD } },
1229 { "bngl-", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
1230 { "bngl+", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
1231 { "bngl", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, PPC|POWER, { CR, BD } },
1232 { "bnga-", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
1233 { "bnga+", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
1234 { "bnga", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, PPC|POWER, { CR, BDA } },
1235 { "bngla-", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
1236 { "bngla+", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
1237 { "bngla", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, PPC|POWER, { CR, BDA } },
1238 { "bne-", BBOCB(16,BOF,CBEQ,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
1239 { "bne+", BBOCB(16,BOF,CBEQ,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
1240 { "bne", BBOCB(16,BOF,CBEQ,0,0), BBOYCB_MASK, PPC|POWER, { CR, BD } },
1241 { "bnel-", BBOCB(16,BOF,CBEQ,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
1242 { "bnel+", BBOCB(16,BOF,CBEQ,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
1243 { "bnel", BBOCB(16,BOF,CBEQ,0,1), BBOYCB_MASK, PPC|POWER, { CR, BD } },
1244 { "bnea-", BBOCB(16,BOF,CBEQ,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
1245 { "bnea+", BBOCB(16,BOF,CBEQ,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
1246 { "bnea", BBOCB(16,BOF,CBEQ,1,0), BBOYCB_MASK, PPC|POWER, { CR, BDA } },
1247 { "bnela-", BBOCB(16,BOF,CBEQ,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
1248 { "bnela+", BBOCB(16,BOF,CBEQ,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
1249 { "bnela", BBOCB(16,BOF,CBEQ,1,1), BBOYCB_MASK, PPC|POWER, { CR, BDA } },
1250 { "bns-", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
1251 { "bns+", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
1252 { "bns", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, PPC|POWER, { CR, BD } },
1253 { "bnsl-", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
1254 { "bnsl+", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
1255 { "bnsl", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, PPC|POWER, { CR, BD } },
1256 { "bnsa-", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
1257 { "bnsa+", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
1258 { "bnsa", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, PPC|POWER, { CR, BDA } },
1259 { "bnsla-", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
1260 { "bnsla+", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
1261 { "bnsla", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, PPC|POWER, { CR, BDA } },
1262 { "bnu-", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
1263 { "bnu+", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
1264 { "bnu", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, PPC, { CR, BD } },
1265 { "bnul-", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
1266 { "bnul+", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
1267 { "bnul", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, PPC, { CR, BD } },
1268 { "bnua-", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
1269 { "bnua+", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
1270 { "bnua", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, PPC, { CR, BDA } },
1271 { "bnula-", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
1272 { "bnula+", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
1273 { "bnula", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, PPC, { CR, BDA } },
1274 { "bdnzt-", BBO(16,BODNZT,0,0), BBOY_MASK, PPC, { BI, BDM } },
1275 { "bdnzt+", BBO(16,BODNZT,0,0), BBOY_MASK, PPC, { BI, BDP } },
1276 { "bdnzt", BBO(16,BODNZT,0,0), BBOY_MASK, PPC, { BI, BD } },
1277 { "bdnztl-", BBO(16,BODNZT,0,1), BBOY_MASK, PPC, { BI, BDM } },
1278 { "bdnztl+", BBO(16,BODNZT,0,1), BBOY_MASK, PPC, { BI, BDP } },
1279 { "bdnztl", BBO(16,BODNZT,0,1), BBOY_MASK, PPC, { BI, BD } },
1280 { "bdnzta-", BBO(16,BODNZT,1,0), BBOY_MASK, PPC, { BI, BDMA } },
1281 { "bdnzta+", BBO(16,BODNZT,1,0), BBOY_MASK, PPC, { BI, BDPA } },
1282 { "bdnzta", BBO(16,BODNZT,1,0), BBOY_MASK, PPC, { BI, BDA } },
1283 { "bdnztla-",BBO(16,BODNZT,1,1), BBOY_MASK, PPC, { BI, BDMA } },
1284 { "bdnztla+",BBO(16,BODNZT,1,1), BBOY_MASK, PPC, { BI, BDPA } },
1285 { "bdnztla", BBO(16,BODNZT,1,1), BBOY_MASK, PPC, { BI, BDA } },
1286 { "bdnzf-", BBO(16,BODNZF,0,0), BBOY_MASK, PPC, { BI, BDM } },
1287 { "bdnzf+", BBO(16,BODNZF,0,0), BBOY_MASK, PPC, { BI, BDP } },
1288 { "bdnzf", BBO(16,BODNZF,0,0), BBOY_MASK, PPC, { BI, BD } },
1289 { "bdnzfl-", BBO(16,BODNZF,0,1), BBOY_MASK, PPC, { BI, BDM } },
1290 { "bdnzfl+", BBO(16,BODNZF,0,1), BBOY_MASK, PPC, { BI, BDP } },
1291 { "bdnzfl", BBO(16,BODNZF,0,1), BBOY_MASK, PPC, { BI, BD } },
1292 { "bdnzfa-", BBO(16,BODNZF,1,0), BBOY_MASK, PPC, { BI, BDMA } },
1293 { "bdnzfa+", BBO(16,BODNZF,1,0), BBOY_MASK, PPC, { BI, BDPA } },
1294 { "bdnzfa", BBO(16,BODNZF,1,0), BBOY_MASK, PPC, { BI, BDA } },
1295 { "bdnzfla-",BBO(16,BODNZF,1,1), BBOY_MASK, PPC, { BI, BDMA } },
1296 { "bdnzfla+",BBO(16,BODNZF,1,1), BBOY_MASK, PPC, { BI, BDPA } },
1297 { "bdnzfla", BBO(16,BODNZF,1,1), BBOY_MASK, PPC, { BI, BDA } },
1298 { "bt-", BBO(16,BOT,0,0), BBOY_MASK, PPC, { BI, BDM } },
1299 { "bt+", BBO(16,BOT,0,0), BBOY_MASK, PPC, { BI, BDP } },
1300 { "bt", BBO(16,BOT,0,0), BBOY_MASK, PPC, { BI, BD } },
1301 { "bbt", BBO(16,BOT,0,0), BBOY_MASK, POWER, { BI, BD } },
1302 { "btl-", BBO(16,BOT,0,1), BBOY_MASK, PPC, { BI, BDM } },
1303 { "btl+", BBO(16,BOT,0,1), BBOY_MASK, PPC, { BI, BDP } },
1304 { "btl", BBO(16,BOT,0,1), BBOY_MASK, PPC, { BI, BD } },
1305 { "bbtl", BBO(16,BOT,0,1), BBOY_MASK, POWER, { BI, BD } },
1306 { "bta-", BBO(16,BOT,1,0), BBOY_MASK, PPC, { BI, BDMA } },
1307 { "bta+", BBO(16,BOT,1,0), BBOY_MASK, PPC, { BI, BDPA } },
1308 { "bta", BBO(16,BOT,1,0), BBOY_MASK, PPC, { BI, BDA } },
1309 { "bbta", BBO(16,BOT,1,0), BBOY_MASK, POWER, { BI, BDA } },
1310 { "btla-", BBO(16,BOT,1,1), BBOY_MASK, PPC, { BI, BDMA } },
1311 { "btla+", BBO(16,BOT,1,1), BBOY_MASK, PPC, { BI, BDPA } },
1312 { "btla", BBO(16,BOT,1,1), BBOY_MASK, PPC, { BI, BDA } },
1313 { "bbtla", BBO(16,BOT,1,1), BBOY_MASK, POWER, { BI, BDA } },
1314 { "bf-", BBO(16,BOF,0,0), BBOY_MASK, PPC, { BI, BDM } },
1315 { "bf+", BBO(16,BOF,0,0), BBOY_MASK, PPC, { BI, BDP } },
1316 { "bf", BBO(16,BOF,0,0), BBOY_MASK, PPC, { BI, BD } },
1317 { "bbf", BBO(16,BOF,0,0), BBOY_MASK, POWER, { BI, BD } },
1318 { "bfl-", BBO(16,BOF,0,1), BBOY_MASK, PPC, { BI, BDM } },
1319 { "bfl+", BBO(16,BOF,0,1), BBOY_MASK, PPC, { BI, BDP } },
1320 { "bfl", BBO(16,BOF,0,1), BBOY_MASK, PPC, { BI, BD } },
1321 { "bbfl", BBO(16,BOF,0,1), BBOY_MASK, POWER, { BI, BD } },
1322 { "bfa-", BBO(16,BOF,1,0), BBOY_MASK, PPC, { BI, BDMA } },
1323 { "bfa+", BBO(16,BOF,1,0), BBOY_MASK, PPC, { BI, BDPA } },
1324 { "bfa", BBO(16,BOF,1,0), BBOY_MASK, PPC, { BI, BDA } },
1325 { "bbfa", BBO(16,BOF,1,0), BBOY_MASK, POWER, { BI, BDA } },
1326 { "bfla-", BBO(16,BOF,1,1), BBOY_MASK, PPC, { BI, BDMA } },
1327 { "bfla+", BBO(16,BOF,1,1), BBOY_MASK, PPC, { BI, BDPA } },
1328 { "bfla", BBO(16,BOF,1,1), BBOY_MASK, PPC, { BI, BDA } },
1329 { "bbfla", BBO(16,BOF,1,1), BBOY_MASK, POWER, { BI, BDA } },
1330 { "bdzt-", BBO(16,BODZT,0,0), BBOY_MASK, PPC, { BI, BDM } },
1331 { "bdzt+", BBO(16,BODZT,0,0), BBOY_MASK, PPC, { BI, BDP } },
1332 { "bdzt", BBO(16,BODZT,0,0), BBOY_MASK, PPC, { BI, BD } },
1333 { "bdztl-", BBO(16,BODZT,0,1), BBOY_MASK, PPC, { BI, BDM } },
1334 { "bdztl+", BBO(16,BODZT,0,1), BBOY_MASK, PPC, { BI, BDP } },
1335 { "bdztl", BBO(16,BODZT,0,1), BBOY_MASK, PPC, { BI, BD } },
1336 { "bdzta-", BBO(16,BODZT,1,0), BBOY_MASK, PPC, { BI, BDMA } },
1337 { "bdzta+", BBO(16,BODZT,1,0), BBOY_MASK, PPC, { BI, BDPA } },
1338 { "bdzta", BBO(16,BODZT,1,0), BBOY_MASK, PPC, { BI, BDA } },
1339 { "bdztla-", BBO(16,BODZT,1,1), BBOY_MASK, PPC, { BI, BDMA } },
1340 { "bdztla+", BBO(16,BODZT,1,1), BBOY_MASK, PPC, { BI, BDPA } },
1341 { "bdztla", BBO(16,BODZT,1,1), BBOY_MASK, PPC, { BI, BDA } },
1342 { "bdzf-", BBO(16,BODZF,0,0), BBOY_MASK, PPC, { BI, BDM } },
1343 { "bdzf+", BBO(16,BODZF,0,0), BBOY_MASK, PPC, { BI, BDP } },
1344 { "bdzf", BBO(16,BODZF,0,0), BBOY_MASK, PPC, { BI, BD } },
1345 { "bdzfl-", BBO(16,BODZF,0,1), BBOY_MASK, PPC, { BI, BDM } },
1346 { "bdzfl+", BBO(16,BODZF,0,1), BBOY_MASK, PPC, { BI, BDP } },
1347 { "bdzfl", BBO(16,BODZF,0,1), BBOY_MASK, PPC, { BI, BD } },
1348 { "bdzfa-", BBO(16,BODZF,1,0), BBOY_MASK, PPC, { BI, BDMA } },
1349 { "bdzfa+", BBO(16,BODZF,1,0), BBOY_MASK, PPC, { BI, BDPA } },
1350 { "bdzfa", BBO(16,BODZF,1,0), BBOY_MASK, PPC, { BI, BDA } },
1351 { "bdzfla-", BBO(16,BODZF,1,1), BBOY_MASK, PPC, { BI, BDMA } },
1352 { "bdzfla+", BBO(16,BODZF,1,1), BBOY_MASK, PPC, { BI, BDPA } },
1353 { "bdzfla", BBO(16,BODZF,1,1), BBOY_MASK, PPC, { BI, BDA } },
1354 { "bc-", B(16,0,0), B_MASK, PPC, { BOE, BI, BDM } },
1355 { "bc+", B(16,0,0), B_MASK, PPC, { BOE, BI, BDP } },
1356 { "bc", B(16,0,0), B_MASK, PPC|POWER, { BO, BI, BD } },
1357 { "bcl-", B(16,0,1), B_MASK, PPC, { BOE, BI, BDM } },
1358 { "bcl+", B(16,0,1), B_MASK, PPC, { BOE, BI, BDP } },
1359 { "bcl", B(16,0,1), B_MASK, PPC|POWER, { BO, BI, BD } },
1360 { "bca-", B(16,1,0), B_MASK, PPC, { BOE, BI, BDMA } },
1361 { "bca+", B(16,1,0), B_MASK, PPC, { BOE, BI, BDPA } },
1362 { "bca", B(16,1,0), B_MASK, PPC|POWER, { BO, BI, BDA } },
1363 { "bcla-", B(16,1,1), B_MASK, PPC, { BOE, BI, BDMA } },
1364 { "bcla+", B(16,1,1), B_MASK, PPC, { BOE, BI, BDPA } },
1365 { "bcla", B(16,1,1), B_MASK, PPC|POWER, { BO, BI, BDA } },
1366
1367 { "sc", SC(17,1,0), 0xffffffff, PPC, { 0 } },
1368 { "svc", SC(17,0,0), SC_MASK, POWER, { LEV, FL1, FL2 } },
1369 { "svcl", SC(17,0,1), SC_MASK, POWER, { LEV, FL1, FL2 } },
1370 { "svca", SC(17,1,0), SC_MASK, POWER, { SV } },
1371 { "svcla", SC(17,1,1), SC_MASK, POWER, { SV } },
1372
1373 { "b", B(18,0,0), B_MASK, PPC|POWER, { LI } },
1374 { "bl", B(18,0,1), B_MASK, PPC|POWER, { LI } },
1375 { "ba", B(18,1,0), B_MASK, PPC|POWER, { LIA } },
1376 { "bla", B(18,1,1), B_MASK, PPC|POWER, { LIA } },
1377
1378 { "mcrf", XL(19,0), XLBB_MASK|(3<<21)|(3<<16), PPC|POWER, { BF, BFA } },
1379
1380 { "blr", XLO(19,BOU,16,0), XLBOBIBB_MASK, PPC, { 0 } },
1381 { "br", XLO(19,BOU,16,0), XLBOBIBB_MASK, POWER, { 0 } },
1382 { "blrl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PPC, { 0 } },
1383 { "brl", XLO(19,BOU,16,1), XLBOBIBB_MASK, POWER, { 0 } },
1384 { "bdnzlr", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPC, { 0 } },
1385 { "bdnzlr-", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPC, { 0 } },
1386 { "bdnzlr+", XLO(19,BODNZP,16,0), XLBOBIBB_MASK, PPC, { 0 } },
1387 { "bdnzlrl", XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPC, { 0 } },
1388 { "bdnzlrl-",XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPC, { 0 } },
1389 { "bdnzlrl+",XLO(19,BODNZP,16,1), XLBOBIBB_MASK, PPC, { 0 } },
1390 { "bdzlr", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPC, { 0 } },
1391 { "bdzlr-", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPC, { 0 } },
1392 { "bdzlr+", XLO(19,BODZP,16,0), XLBOBIBB_MASK, PPC, { 0 } },
1393 { "bdzlrl", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPC, { 0 } },
1394 { "bdzlrl-", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPC, { 0 } },
1395 { "bdzlrl+", XLO(19,BODZP,16,1), XLBOBIBB_MASK, PPC, { 0 } },
1396 { "bltlr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPC, { CR } },
1397 { "bltlr-", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPC, { CR } },
1398 { "bltlr+", XLOCB(19,BOTP,CBLT,16,0), XLBOCBBB_MASK, PPC, { CR } },
1399 { "bltr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, POWER, { CR } },
1400 { "bltlrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPC, { CR } },
1401 { "bltlrl-", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPC, { CR } },
1402 { "bltlrl+", XLOCB(19,BOTP,CBLT,16,1), XLBOCBBB_MASK, PPC, { CR } },
1403 { "bltrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, POWER, { CR } },
1404 { "bgtlr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPC, { CR } },
1405 { "bgtlr-", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPC, { CR } },
1406 { "bgtlr+", XLOCB(19,BOTP,CBGT,16,0), XLBOCBBB_MASK, PPC, { CR } },
1407 { "bgtr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, POWER, { CR } },
1408 { "bgtlrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPC, { CR } },
1409 { "bgtlrl-", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPC, { CR } },
1410 { "bgtlrl+", XLOCB(19,BOTP,CBGT,16,1), XLBOCBBB_MASK, PPC, { CR } },
1411 { "bgtrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, POWER, { CR } },
1412 { "beqlr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPC, { CR } },
1413 { "beqlr-", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPC, { CR } },
1414 { "beqlr+", XLOCB(19,BOTP,CBEQ,16,0), XLBOCBBB_MASK, PPC, { CR } },
1415 { "beqr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, POWER, { CR } },
1416 { "beqlrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPC, { CR } },
1417 { "beqlrl-", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPC, { CR } },
1418 { "beqlrl+", XLOCB(19,BOTP,CBEQ,16,1), XLBOCBBB_MASK, PPC, { CR } },
1419 { "beqrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, POWER, { CR } },
1420 { "bsolr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
1421 { "bsolr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
1422 { "bsolr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
1423 { "bsor", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, POWER, { CR } },
1424 { "bsolrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
1425 { "bsolrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
1426 { "bsolrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
1427 { "bsorl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, POWER, { CR } },
1428 { "bunlr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
1429 { "bunlr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
1430 { "bunlr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
1431 { "bunlrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
1432 { "bunlrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
1433 { "bunlrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
1434 { "bgelr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPC, { CR } },
1435 { "bgelr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPC, { CR } },
1436 { "bgelr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, PPC, { CR } },
1437 { "bger", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, POWER, { CR } },
1438 { "bgelrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPC, { CR } },
1439 { "bgelrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPC, { CR } },
1440 { "bgelrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, PPC, { CR } },
1441 { "bgerl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, POWER, { CR } },
1442 { "bnllr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPC, { CR } },
1443 { "bnllr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPC, { CR } },
1444 { "bnllr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, PPC, { CR } },
1445 { "bnlr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, POWER, { CR } },
1446 { "bnllrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPC, { CR } },
1447 { "bnllrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPC, { CR } },
1448 { "bnllrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, PPC, { CR } },
1449 { "bnlrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, POWER, { CR } },
1450 { "blelr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPC, { CR } },
1451 { "blelr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPC, { CR } },
1452 { "blelr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, PPC, { CR } },
1453 { "bler", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, POWER, { CR } },
1454 { "blelrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPC, { CR } },
1455 { "blelrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPC, { CR } },
1456 { "blelrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, PPC, { CR } },
1457 { "blerl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, POWER, { CR } },
1458 { "bnglr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPC, { CR } },
1459 { "bnglr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPC, { CR } },
1460 { "bnglr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, PPC, { CR } },
1461 { "bngr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, POWER, { CR } },
1462 { "bnglrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPC, { CR } },
1463 { "bnglrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPC, { CR } },
1464 { "bnglrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, PPC, { CR } },
1465 { "bngrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, POWER, { CR } },
1466 { "bnelr", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPC, { CR } },
1467 { "bnelr-", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPC, { CR } },
1468 { "bnelr+", XLOCB(19,BOFP,CBEQ,16,0), XLBOCBBB_MASK, PPC, { CR } },
1469 { "bner", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, POWER, { CR } },
1470 { "bnelrl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPC, { CR } },
1471 { "bnelrl-", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPC, { CR } },
1472 { "bnelrl+", XLOCB(19,BOFP,CBEQ,16,1), XLBOCBBB_MASK, PPC, { CR } },
1473 { "bnerl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, POWER, { CR } },
1474 { "bnslr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
1475 { "bnslr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
1476 { "bnslr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
1477 { "bnsr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, POWER, { CR } },
1478 { "bnslrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
1479 { "bnslrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
1480 { "bnslrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
1481 { "bnsrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, POWER, { CR } },
1482 { "bnulr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
1483 { "bnulr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
1484 { "bnulr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
1485 { "bnulrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
1486 { "bnulrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
1487 { "bnulrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
1488 { "btlr", XLO(19,BOT,16,0), XLBOBB_MASK, PPC, { BI } },
1489 { "btlr-", XLO(19,BOT,16,0), XLBOBB_MASK, PPC, { BI } },
1490 { "btlr+", XLO(19,BOTP,16,0), XLBOBB_MASK, PPC, { BI } },
1491 { "bbtr", XLO(19,BOT,16,0), XLBOBB_MASK, POWER, { BI } },
1492 { "btlrl", XLO(19,BOT,16,1), XLBOBB_MASK, PPC, { BI } },
1493 { "btlrl-", XLO(19,BOT,16,1), XLBOBB_MASK, PPC, { BI } },
1494 { "btlrl+", XLO(19,BOTP,16,1), XLBOBB_MASK, PPC, { BI } },
1495 { "bbtrl", XLO(19,BOT,16,1), XLBOBB_MASK, POWER, { BI } },
1496 { "bflr", XLO(19,BOF,16,0), XLBOBB_MASK, PPC, { BI } },
1497 { "bflr-", XLO(19,BOF,16,0), XLBOBB_MASK, PPC, { BI } },
1498 { "bflr+", XLO(19,BOFP,16,0), XLBOBB_MASK, PPC, { BI } },
1499 { "bbfr", XLO(19,BOF,16,0), XLBOBB_MASK, POWER, { BI } },
1500 { "bflrl", XLO(19,BOF,16,1), XLBOBB_MASK, PPC, { BI } },
1501 { "bflrl-", XLO(19,BOF,16,1), XLBOBB_MASK, PPC, { BI } },
1502 { "bflrl+", XLO(19,BOFP,16,1), XLBOBB_MASK, PPC, { BI } },
1503 { "bbfrl", XLO(19,BOF,16,1), XLBOBB_MASK, POWER, { BI } },
1504 { "bdnztlr", XLO(19,BODNZT,16,0), XLBOBB_MASK, PPC, { BI } },
1505 { "bdnztlr-",XLO(19,BODNZT,16,0), XLBOBB_MASK, PPC, { BI } },
1506 { "bdnztlr+",XLO(19,BODNZTP,16,0), XLBOBB_MASK, PPC, { BI } },
1507 { "bdnztlrl",XLO(19,BODNZT,16,1), XLBOBB_MASK, PPC, { BI } },
1508 { "bdnztlrl-",XLO(19,BODNZT,16,1), XLBOBB_MASK, PPC, { BI } },
1509 { "bdnztlrl+",XLO(19,BODNZTP,16,1), XLBOBB_MASK, PPC, { BI } },
1510 { "bdnzflr", XLO(19,BODNZF,16,0), XLBOBB_MASK, PPC, { BI } },
1511 { "bdnzflr-",XLO(19,BODNZF,16,0), XLBOBB_MASK, PPC, { BI } },
1512 { "bdnzflr+",XLO(19,BODNZFP,16,0), XLBOBB_MASK, PPC, { BI } },
1513 { "bdnzflrl",XLO(19,BODNZF,16,1), XLBOBB_MASK, PPC, { BI } },
1514 { "bdnzflrl-",XLO(19,BODNZF,16,1), XLBOBB_MASK, PPC, { BI } },
1515 { "bdnzflrl+",XLO(19,BODNZFP,16,1), XLBOBB_MASK, PPC, { BI } },
1516 { "bdztlr", XLO(19,BODZT,16,0), XLBOBB_MASK, PPC, { BI } },
1517 { "bdztlr-", XLO(19,BODZT,16,0), XLBOBB_MASK, PPC, { BI } },
1518 { "bdztlr+", XLO(19,BODZTP,16,0), XLBOBB_MASK, PPC, { BI } },
1519 { "bdztlrl", XLO(19,BODZT,16,1), XLBOBB_MASK, PPC, { BI } },
1520 { "bdztlrl-",XLO(19,BODZT,16,1), XLBOBB_MASK, PPC, { BI } },
1521 { "bdztlrl+",XLO(19,BODZTP,16,1), XLBOBB_MASK, PPC, { BI } },
1522 { "bdzflr", XLO(19,BODZF,16,0), XLBOBB_MASK, PPC, { BI } },
1523 { "bdzflr-", XLO(19,BODZF,16,0), XLBOBB_MASK, PPC, { BI } },
1524 { "bdzflr+", XLO(19,BODZFP,16,0), XLBOBB_MASK, PPC, { BI } },
1525 { "bdzflrl", XLO(19,BODZF,16,1), XLBOBB_MASK, PPC, { BI } },
1526 { "bdzflrl-",XLO(19,BODZF,16,1), XLBOBB_MASK, PPC, { BI } },
1527 { "bdzflrl+",XLO(19,BODZFP,16,1), XLBOBB_MASK, PPC, { BI } },
1528 { "bclr", XLLK(19,16,0), XLYBB_MASK, PPC, { BO, BI } },
1529 { "bclrl", XLLK(19,16,1), XLYBB_MASK, PPC, { BO, BI } },
1530 { "bclr+", XLYLK(19,16,1,0), XLYBB_MASK, PPC, { BOE, BI } },
1531 { "bclrl+", XLYLK(19,16,1,1), XLYBB_MASK, PPC, { BOE, BI } },
1532 { "bclr-", XLYLK(19,16,0,0), XLYBB_MASK, PPC, { BOE, BI } },
1533 { "bclrl-", XLYLK(19,16,0,1), XLYBB_MASK, PPC, { BOE, BI } },
1534 { "bcr", XLLK(19,16,0), XLBB_MASK, POWER, { BO, BI } },
1535 { "bcrl", XLLK(19,16,1), XLBB_MASK, POWER, { BO, BI } },
1536
1537 { "crnot", XL(19,33), XL_MASK, PPC, { BT, BA, BBA } },
1538 { "crnor", XL(19,33), XL_MASK, PPC|POWER, { BT, BA, BB } },
1539
1540 { "rfi", XL(19,50), 0xffffffff, PPC|POWER, { 0 } },
1541
1542 { "rfsvc", XL(19,82), 0xffffffff, POWER, { 0 } },
1543
1544 { "crandc", XL(19,129), XL_MASK, PPC|POWER, { BT, BA, BB } },
1545
1546 { "isync", XL(19,150), 0xffffffff, PPC, { 0 } },
1547 { "ics", XL(19,150), 0xffffffff, POWER, { 0 } },
1548
1549 { "crclr", XL(19,193), XL_MASK, PPC, { BT, BAT, BBA } },
1550 { "crxor", XL(19,193), XL_MASK, PPC|POWER, { BT, BA, BB } },
1551
1552 { "crnand", XL(19,225), XL_MASK, PPC|POWER, { BT, BA, BB } },
1553
1554 { "crand", XL(19,257), XL_MASK, PPC|POWER, { BT, BA, BB } },
1555
1556 { "crset", XL(19,289), XL_MASK, PPC, { BT, BAT, BBA } },
1557 { "creqv", XL(19,289), XL_MASK, PPC|POWER, { BT, BA, BB } },
1558
1559 { "crorc", XL(19,417), XL_MASK, PPC|POWER, { BT, BA, BB } },
1560
1561 { "crmove", XL(19,449), XL_MASK, PPC, { BT, BA, BBA } },
1562 { "cror", XL(19,449), XL_MASK, PPC|POWER, { BT, BA, BB } },
1563
1564 { "bctr", XLO(19,BOU,528,0), XLBOBIBB_MASK, PPC, { 0 } },
1565 { "bctrl", XLO(19,BOU,528,1), XLBOBIBB_MASK, PPC, { 0 } },
1566 { "bltctr", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPC, { CR } },
1567 { "bltctr-", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPC, { CR } },
1568 { "bltctr+", XLOCB(19,BOTP,CBLT,528,0), XLBOCBBB_MASK, PPC, { CR } },
1569 { "bltctrl", XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPC, { CR } },
1570 { "bltctrl-",XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPC, { CR } },
1571 { "bltctrl+",XLOCB(19,BOTP,CBLT,528,1), XLBOCBBB_MASK, PPC, { CR } },
1572 { "bgtctr", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPC, { CR } },
1573 { "bgtctr-", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPC, { CR } },
1574 { "bgtctr+", XLOCB(19,BOTP,CBGT,528,0), XLBOCBBB_MASK, PPC, { CR } },
1575 { "bgtctrl", XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPC, { CR } },
1576 { "bgtctrl-",XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPC, { CR } },
1577 { "bgtctrl+",XLOCB(19,BOTP,CBGT,528,1), XLBOCBBB_MASK, PPC, { CR } },
1578 { "beqctr", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPC, { CR } },
1579 { "beqctr-", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPC, { CR } },
1580 { "beqctr+", XLOCB(19,BOTP,CBEQ,528,0), XLBOCBBB_MASK, PPC, { CR } },
1581 { "beqctrl", XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPC, { CR } },
1582 { "beqctrl-",XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPC, { CR } },
1583 { "beqctrl+",XLOCB(19,BOTP,CBEQ,528,1), XLBOCBBB_MASK, PPC, { CR } },
1584 { "bsoctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
1585 { "bsoctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
1586 { "bsoctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
1587 { "bsoctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
1588 { "bsoctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
1589 { "bsoctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
1590 { "bunctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
1591 { "bunctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
1592 { "bunctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
1593 { "bunctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
1594 { "bunctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
1595 { "bunctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
1596 { "bgectr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPC, { CR } },
1597 { "bgectr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPC, { CR } },
1598 { "bgectr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, PPC, { CR } },
1599 { "bgectrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPC, { CR } },
1600 { "bgectrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPC, { CR } },
1601 { "bgectrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, PPC, { CR } },
1602 { "bnlctr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPC, { CR } },
1603 { "bnlctr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPC, { CR } },
1604 { "bnlctr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, PPC, { CR } },
1605 { "bnlctrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPC, { CR } },
1606 { "bnlctrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPC, { CR } },
1607 { "bnlctrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, PPC, { CR } },
1608 { "blectr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPC, { CR } },
1609 { "blectr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPC, { CR } },
1610 { "blectr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, PPC, { CR } },
1611 { "blectrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPC, { CR } },
1612 { "blectrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPC, { CR } },
1613 { "blectrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, PPC, { CR } },
1614 { "bngctr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPC, { CR } },
1615 { "bngctr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPC, { CR } },
1616 { "bngctr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, PPC, { CR } },
1617 { "bngctrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPC, { CR } },
1618 { "bngctrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPC, { CR } },
1619 { "bngctrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, PPC, { CR } },
1620 { "bnectr", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPC, { CR } },
1621 { "bnectr-", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPC, { CR } },
1622 { "bnectr+", XLOCB(19,BOFP,CBEQ,528,0), XLBOCBBB_MASK, PPC, { CR } },
1623 { "bnectrl", XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPC, { CR } },
1624 { "bnectrl-",XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPC, { CR } },
1625 { "bnectrl+",XLOCB(19,BOFP,CBEQ,528,1), XLBOCBBB_MASK, PPC, { CR } },
1626 { "bnsctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
1627 { "bnsctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
1628 { "bnsctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
1629 { "bnsctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
1630 { "bnsctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
1631 { "bnsctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
1632 { "bnuctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
1633 { "bnuctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
1634 { "bnuctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
1635 { "bnuctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
1636 { "bnuctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
1637 { "bnuctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
1638 { "btctr", XLO(19,BOT,528,0), XLBOBB_MASK, PPC, { BI } },
1639 { "btctr-", XLO(19,BOT,528,0), XLBOBB_MASK, PPC, { BI } },
1640 { "btctr+", XLO(19,BOTP,528,0), XLBOBB_MASK, PPC, { BI } },
1641 { "btctrl", XLO(19,BOT,528,1), XLBOBB_MASK, PPC, { BI } },
1642 { "btctrl-", XLO(19,BOT,528,1), XLBOBB_MASK, PPC, { BI } },
1643 { "btctrl+", XLO(19,BOTP,528,1), XLBOBB_MASK, PPC, { BI } },
1644 { "bfctr", XLO(19,BOF,528,0), XLBOBB_MASK, PPC, { BI } },
1645 { "bfctr-", XLO(19,BOF,528,0), XLBOBB_MASK, PPC, { BI } },
1646 { "bfctr+", XLO(19,BOFP,528,0), XLBOBB_MASK, PPC, { BI } },
1647 { "bfctrl", XLO(19,BOF,528,1), XLBOBB_MASK, PPC, { BI } },
1648 { "bfctrl-", XLO(19,BOF,528,1), XLBOBB_MASK, PPC, { BI } },
1649 { "bfctrl+", XLO(19,BOFP,528,1), XLBOBB_MASK, PPC, { BI } },
1650 { "bcctr", XLLK(19,528,0), XLYBB_MASK, PPC, { BO, BI } },
1651 { "bcctr-", XLYLK(19,528,0,0), XLYBB_MASK, PPC, { BOE, BI } },
1652 { "bcctr+", XLYLK(19,528,1,0), XLYBB_MASK, PPC, { BOE, BI } },
1653 { "bcctrl", XLLK(19,528,1), XLYBB_MASK, PPC, { BO, BI } },
1654 { "bcctrl-", XLYLK(19,528,0,1), XLYBB_MASK, PPC, { BOE, BI } },
1655 { "bcctrl+", XLYLK(19,528,1,1), XLYBB_MASK, PPC, { BOE, BI } },
1656 { "bcc", XLLK(19,528,0), XLBB_MASK, POWER, { BO, BI } },
1657 { "bccl", XLLK(19,528,1), XLBB_MASK, POWER, { BO, BI } },
1658
1659 { "rlwimi", M(20,0), M_MASK, PPC, { RA,RS,SH,MB,ME } },
1660 { "rlimi", M(20,0), M_MASK, POWER, { RA,RS,SH,MB,ME } },
1661
1662 { "rlwimi.", M(20,1), M_MASK, PPC, { RA,RS,SH,MB,ME } },
1663 { "rlimi.", M(20,1), M_MASK, POWER, { RA,RS,SH,MB,ME } },
1664
1665 { "rotlwi", MME(21,31,0), MMBME_MASK, PPC, { RA, RS, SH } },
1666 { "clrlwi", MME(21,31,0), MSHME_MASK, PPC, { RA, RS, MB } },
1667 { "rlwinm", M(21,0), M_MASK, PPC, { RA,RS,SH,MB,ME } },
1668 { "rlinm", M(21,0), M_MASK, POWER, { RA,RS,SH,MB,ME } },
1669 { "rotlwi.", MME(21,31,1), MMBME_MASK, PPC, { RA,RS,SH } },
1670 { "clrlwi.", MME(21,31,1), MSHME_MASK, PPC, { RA, RS, MB } },
1671 { "rlwinm.", M(21,1), M_MASK, PPC, { RA,RS,SH,MB,ME } },
1672 { "rlinm.", M(21,1), M_MASK, POWER, { RA,RS,SH,MB,ME } },
1673
1674 { "rlmi", M(22,0), M_MASK, POWER, { RA,RS,RB,MB,ME } },
1675 { "rlmi.", M(22,1), M_MASK, POWER, { RA,RS,RB,MB,ME } },
1676
1677 { "rotlw", MME(23,31,0), MMBME_MASK, PPC, { RA, RS, RB } },
1678 { "rlwnm", M(23,0), M_MASK, PPC, { RA,RS,RB,MB,ME } },
1679 { "rlnm", M(23,0), M_MASK, POWER, { RA,RS,RB,MB,ME } },
1680 { "rotlw.", MME(23,31,1), MMBME_MASK, PPC, { RA, RS, RB } },
1681 { "rlwnm.", M(23,1), M_MASK, PPC, { RA,RS,RB,MB,ME } },
1682 { "rlnm.", M(23,1), M_MASK, POWER, { RA,RS,RB,MB,ME } },
1683
1684 { "nop", OP(24), 0xffffffff, PPC, { 0 } },
1685 { "ori", OP(24), OP_MASK, PPC, { RA, RS, UI } },
1686 { "oril", OP(24), OP_MASK, POWER, { RA, RS, UI } },
1687
1688 { "oris", OP(25), OP_MASK, PPC, { RA, RS, UI } },
1689 { "oriu", OP(25), OP_MASK, POWER, { RA, RS, UI } },
1690
1691 { "xori", OP(26), OP_MASK, PPC, { RA, RS, UI } },
1692 { "xoril", OP(26), OP_MASK, POWER, { RA, RS, UI } },
1693
1694 { "xoris", OP(27), OP_MASK, PPC, { RA, RS, UI } },
1695 { "xoriu", OP(27), OP_MASK, POWER, { RA, RS, UI } },
1696
1697 { "andi.", OP(28), OP_MASK, PPC, { RA, RS, UI } },
1698 { "andil.", OP(28), OP_MASK, POWER, { RA, RS, UI } },
1699
1700 { "andis.", OP(29), OP_MASK, PPC, { RA, RS, UI } },
1701 { "andiu.", OP(29), OP_MASK, POWER, { RA, RS, UI } },
1702
1703 { "rotldi", MD(30,0,0), MDMB_MASK, PPC|B64, { RA, RS, SH6 } },
1704 { "clrldi", MD(30,0,0), MDSH_MASK, PPC|B64, { RA, RS, MB6 } },
1705 { "rldicl", MD(30,0,0), MD_MASK, PPC|B64, { RA, RS, SH6, MB6 } },
1706 { "rotldi.", MD(30,0,1), MDMB_MASK, PPC|B64, { RA, RS, SH6 } },
1707 { "clrldi.", MD(30,0,1), MDSH_MASK, PPC|B64, { RA, RS, MB6 } },
1708 { "rldicl.", MD(30,0,1), MD_MASK, PPC|B64, { RA, RS, SH6, MB6 } },
1709
1710 { "rldicr", MD(30,1,0), MD_MASK, PPC|B64, { RA, RS, SH6, ME6 } },
1711 { "rldicr.", MD(30,1,1), MD_MASK, PPC|B64, { RA, RS, SH6, ME6 } },
1712
1713 { "rldic", MD(30,2,0), MD_MASK, PPC|B64, { RA, RS, SH6, MB6 } },
1714 { "rldic.", MD(30,2,1), MD_MASK, PPC|B64, { RA, RS, SH6, MB6 } },
1715
1716 { "rldimi", MD(30,3,0), MD_MASK, PPC|B64, { RA, RS, SH6, MB6 } },
1717 { "rldimi.", MD(30,3,1), MD_MASK, PPC|B64, { RA, RS, SH6, MB6 } },
1718
1719 { "rotld", MDS(30,8,0), MDSMB_MASK, PPC|B64, { RA, RS, RB } },
1720 { "rldcl", MDS(30,8,0), MDS_MASK, PPC|B64, { RA, RS, RB, MB6 } },
1721 { "rotld.", MDS(30,8,1), MDSMB_MASK, PPC|B64, { RA, RS, RB } },
1722 { "rldcl.", MDS(30,8,1), MDS_MASK, PPC|B64, { RA, RS, RB, MB6 } },
1723
1724 { "rldcr", MDS(30,9,0), MDS_MASK, PPC|B64, { RA, RS, RB, ME6 } },
1725 { "rldcr.", MDS(30,9,1), MDS_MASK, PPC|B64, { RA, RS, RB, ME6 } },
1726
1727 { "cmpw", XCMPL(31,0,0), XCMPL_MASK, PPC, { OBF, RA, RB } },
1728 { "cmpd", XCMPL(31,0,1), XCMPL_MASK, PPC|B64, { OBF, RA, RB } },
1729 { "cmp", X(31,0), XCMPL_MASK, POWER, { BF, RA, RB } },
1730 { "cmp", X(31,0), XCMP_MASK, PPC, { BF, L, RA, RB } },
1731
1732 { "twlgt", XTO(31,4,TOLGT), XTO_MASK, PPC, { RA, RB } },
1733 { "tlgt", XTO(31,4,TOLGT), XTO_MASK, POWER, { RA, RB } },
1734 { "twllt", XTO(31,4,TOLLT), XTO_MASK, PPC, { RA, RB } },
1735 { "tllt", XTO(31,4,TOLLT), XTO_MASK, POWER, { RA, RB } },
1736 { "tweq", XTO(31,4,TOEQ), XTO_MASK, PPC, { RA, RB } },
1737 { "teq", XTO(31,4,TOEQ), XTO_MASK, POWER, { RA, RB } },
1738 { "twlge", XTO(31,4,TOLGE), XTO_MASK, PPC, { RA, RB } },
1739 { "tlge", XTO(31,4,TOLGE), XTO_MASK, POWER, { RA, RB } },
1740 { "twlnl", XTO(31,4,TOLNL), XTO_MASK, PPC, { RA, RB } },
1741 { "tlnl", XTO(31,4,TOLNL), XTO_MASK, POWER, { RA, RB } },
1742 { "twlle", XTO(31,4,TOLLE), XTO_MASK, PPC, { RA, RB } },
1743 { "tlle", XTO(31,4,TOLLE), XTO_MASK, POWER, { RA, RB } },
1744 { "twlng", XTO(31,4,TOLNG), XTO_MASK, PPC, { RA, RB } },
1745 { "tlng", XTO(31,4,TOLNG), XTO_MASK, POWER, { RA, RB } },
1746 { "twgt", XTO(31,4,TOGT), XTO_MASK, PPC, { RA, RB } },
1747 { "tgt", XTO(31,4,TOGT), XTO_MASK, POWER, { RA, RB } },
1748 { "twge", XTO(31,4,TOGE), XTO_MASK, PPC, { RA, RB } },
1749 { "tge", XTO(31,4,TOGE), XTO_MASK, POWER, { RA, RB } },
1750 { "twnl", XTO(31,4,TONL), XTO_MASK, PPC, { RA, RB } },
1751 { "tnl", XTO(31,4,TONL), XTO_MASK, POWER, { RA, RB } },
1752 { "twlt", XTO(31,4,TOLT), XTO_MASK, PPC, { RA, RB } },
1753 { "tlt", XTO(31,4,TOLT), XTO_MASK, POWER, { RA, RB } },
1754 { "twle", XTO(31,4,TOLE), XTO_MASK, PPC, { RA, RB } },
1755 { "tle", XTO(31,4,TOLE), XTO_MASK, POWER, { RA, RB } },
1756 { "twng", XTO(31,4,TONG), XTO_MASK, PPC, { RA, RB } },
1757 { "tng", XTO(31,4,TONG), XTO_MASK, POWER, { RA, RB } },
1758 { "twne", XTO(31,4,TONE), XTO_MASK, PPC, { RA, RB } },
1759 { "tne", XTO(31,4,TONE), XTO_MASK, POWER, { RA, RB } },
1760 { "trap", XTO(31,4,TOU), 0xffffffff, PPC, { 0 } },
1761 { "tw", X(31,4), X_MASK, PPC, { TO, RA, RB } },
1762 { "t", X(31,4), X_MASK, POWER, { TO, RA, RB } },
1763
1764 { "subfc", XO(31,8,0,0), XO_MASK, PPC, { RT, RA, RB } },
1765 { "sf", XO(31,8,0,0), XO_MASK, POWER, { RT, RA, RB } },
1766 { "subc", XO(31,8,0,0), XO_MASK, PPC, { RT, RB, RA } },
1767 { "subfc.", XO(31,8,0,1), XO_MASK, PPC, { RT, RA, RB } },
1768 { "sf.", XO(31,8,0,1), XO_MASK, POWER, { RT, RA, RB } },
1769 { "subc.", XO(31,8,0,1), XO_MASK, PPC, { RT, RB, RA } },
1770 { "subfco", XO(31,8,1,0), XO_MASK, PPC, { RT, RA, RB } },
1771 { "sfo", XO(31,8,1,0), XO_MASK, POWER, { RT, RA, RB } },
1772 { "subco", XO(31,8,1,0), XO_MASK, PPC, { RT, RB, RA } },
1773 { "subfco.", XO(31,8,1,1), XO_MASK, PPC, { RT, RA, RB } },
1774 { "sfo.", XO(31,8,1,1), XO_MASK, POWER, { RT, RA, RB } },
1775 { "subco.", XO(31,8,1,1), XO_MASK, PPC, { RT, RB, RA } },
1776
1777 { "mulhdu", XO(31,9,0,0), XO_MASK, PPC|B64, { RT, RA, RB } },
1778 { "mulhdu.", XO(31,9,0,1), XO_MASK, PPC|B64, { RT, RA, RB } },
1779
1780 { "addc", XO(31,10,0,0), XO_MASK, PPC, { RT, RA, RB } },
1781 { "a", XO(31,10,0,0), XO_MASK, POWER, { RT, RA, RB } },
1782 { "addc.", XO(31,10,0,1), XO_MASK, PPC, { RT, RA, RB } },
1783 { "a.", XO(31,10,0,1), XO_MASK, POWER, { RT, RA, RB } },
1784 { "addco", XO(31,10,1,0), XO_MASK, PPC, { RT, RA, RB } },
1785 { "ao", XO(31,10,1,0), XO_MASK, POWER, { RT, RA, RB } },
1786 { "addco.", XO(31,10,1,1), XO_MASK, PPC, { RT, RA, RB } },
1787 { "ao.", XO(31,10,1,1), XO_MASK, POWER, { RT, RA, RB } },
1788
1789 { "mulhwu", XO(31,11,0,0), XO_MASK, PPC, { RT, RA, RB } },
1790 { "mulhwu.", XO(31,11,0,1), XO_MASK, PPC, { RT, RA, RB } },
1791
1792 { "mfcr", X(31,19), XRARB_MASK, POWER|PPC, { RT } },
1793
1794 { "lwarx", X(31,20), X_MASK, PPC, { RT, RA, RB } },
1795
1796 { "ldx", X(31,21), X_MASK, PPC|B64, { RT, RA, RB } },
1797
1798 { "lwzx", X(31,23), X_MASK, PPC, { RT, RA, RB } },
1799 { "lx", X(31,23), X_MASK, POWER, { RT, RA, RB } },
1800
1801 { "slw", XRC(31,24,0), X_MASK, PPC, { RA, RS, RB } },
1802 { "sl", XRC(31,24,0), X_MASK, POWER, { RA, RS, RB } },
1803 { "slw.", XRC(31,24,1), X_MASK, PPC, { RA, RS, RB } },
1804 { "sl.", XRC(31,24,1), X_MASK, POWER, { RA, RS, RB } },
1805
1806 { "cntlzw", XRC(31,26,0), XRB_MASK, PPC, { RA, RS } },
1807 { "cntlz", XRC(31,26,0), XRB_MASK, POWER, { RA, RS } },
1808 { "cntlzw.", XRC(31,26,1), XRB_MASK, PPC, { RA, RS } },
1809 { "cntlz.", XRC(31,26,1), XRB_MASK, POWER, { RA, RS } },
1810
1811 { "sld", XRC(31,27,0), X_MASK, PPC|B64, { RA, RS, RB } },
1812 { "sld.", XRC(31,27,1), X_MASK, PPC|B64, { RA, RS, RB } },
1813
1814 { "and", XRC(31,28,0), X_MASK, PPC|POWER, { RA, RS, RB } },
1815 { "and.", XRC(31,28,1), X_MASK, PPC|POWER, { RA, RS, RB } },
1816
1817 { "maskg", XRC(31,29,0), X_MASK, POWER, { RA, RS, RB } },
1818 { "maskg.", XRC(31,29,1), X_MASK, POWER, { RA, RS, RB } },
1819
1820 { "cmplw", XCMPL(31,32,0), XCMPL_MASK, PPC, { OBF, RA, RB } },
1821 { "cmpld", XCMPL(31,32,1), XCMPL_MASK, PPC|B64, { OBF, RA, RB } },
1822 { "cmpl", X(31,32), XCMPL_MASK, POWER, { BF, RA, RB } },
1823 { "cmpl", X(31,32), XCMP_MASK, PPC, { BF, L, RA, RB } },
1824
1825 { "subf", XO(31,40,0,0), XO_MASK, PPC, { RT, RA, RB } },
1826 { "sub", XO(31,40,0,0), XO_MASK, PPC, { RT, RB, RA } },
1827 { "subf.", XO(31,40,0,1), XO_MASK, PPC, { RT, RA, RB } },
1828 { "sub.", XO(31,40,0,1), XO_MASK, PPC, { RT, RB, RA } },
1829 { "subfo", XO(31,40,1,0), XO_MASK, PPC, { RT, RA, RB } },
1830 { "subo", XO(31,40,1,0), XO_MASK, PPC, { RT, RB, RA } },
1831 { "subfo.", XO(31,40,1,1), XO_MASK, PPC, { RT, RA, RB } },
1832 { "subo.", XO(31,40,1,1), XO_MASK, PPC, { RT, RB, RA } },
1833
1834 { "ldux", X(31,53), X_MASK, PPC|B64, { RT, RA, RB } },
1835
1836 { "dcbst", X(31,54), XRT_MASK, PPC, { RA, RB } },
1837
1838 { "lwzux", X(31,55), X_MASK, PPC, { RT, RA, RB } },
1839 { "lux", X(31,55), X_MASK, POWER, { RT, RA, RB } },
1840
1841 { "cntlzd", XRC(31,58,0), XRB_MASK, PPC|B64, { RA, RS } },
1842 { "cntlzd.", XRC(31,58,1), XRB_MASK, PPC|B64, { RA, RS } },
1843
1844 { "andc", XRC(31,60,0), X_MASK, PPC|POWER, { RA, RS, RB } },
1845 { "andc.", XRC(31,60,1), X_MASK, PPC|POWER, { RA, RS, RB } },
1846
1847 { "tdlgt", XTO(31,68,TOLGT), XTO_MASK, PPC|B64, { RA, RB } },
1848 { "tdllt", XTO(31,68,TOLLT), XTO_MASK, PPC|B64, { RA, RB } },
1849 { "tdeq", XTO(31,68,TOEQ), XTO_MASK, PPC|B64, { RA, RB } },
1850 { "tdlge", XTO(31,68,TOLGE), XTO_MASK, PPC|B64, { RA, RB } },
1851 { "tdlnl", XTO(31,68,TOLNL), XTO_MASK, PPC|B64, { RA, RB } },
1852 { "tdlle", XTO(31,68,TOLLE), XTO_MASK, PPC|B64, { RA, RB } },
1853 { "tdlng", XTO(31,68,TOLNG), XTO_MASK, PPC|B64, { RA, RB } },
1854 { "tdgt", XTO(31,68,TOGT), XTO_MASK, PPC|B64, { RA, RB } },
1855 { "tdge", XTO(31,68,TOGE), XTO_MASK, PPC|B64, { RA, RB } },
1856 { "tdnl", XTO(31,68,TONL), XTO_MASK, PPC|B64, { RA, RB } },
1857 { "tdlt", XTO(31,68,TOLT), XTO_MASK, PPC|B64, { RA, RB } },
1858 { "tdle", XTO(31,68,TOLE), XTO_MASK, PPC|B64, { RA, RB } },
1859 { "tdng", XTO(31,68,TONG), XTO_MASK, PPC|B64, { RA, RB } },
1860 { "tdne", XTO(31,68,TONE), XTO_MASK, PPC|B64, { RA, RB } },
1861 { "td", X(31,68), X_MASK, PPC|B64, { TO, RA, RB } },
1862
1863 { "mulhd", XO(31,73,0,0), XO_MASK, PPC|B64, { RT, RA, RB } },
1864 { "mulhd.", XO(31,73,0,1), XO_MASK, PPC|B64, { RT, RA, RB } },
1865
1866 { "mulhw", XO(31,75,0,0), XO_MASK, PPC, { RT, RA, RB } },
1867 { "mulhw.", XO(31,75,0,1), XO_MASK, PPC, { RT, RA, RB } },
1868
1869 { "mfmsr", X(31,83), XRARB_MASK, PPC|POWER, { RT } },
1870
1871 { "ldarx", X(31,84), X_MASK, PPC|B64, { RT, RA, RB } },
1872
1873 { "dcbf", X(31,86), XRT_MASK, PPC, { RA, RB } },
1874
1875 { "lbzx", X(31,87), X_MASK, PPC|POWER, { RT, RA, RB } },
1876
1877 { "neg", XO(31,104,0,0), XORB_MASK, PPC|POWER, { RT, RA } },
1878 { "neg.", XO(31,104,0,1), XORB_MASK, PPC|POWER, { RT, RA } },
1879 { "nego", XO(31,104,1,0), XORB_MASK, PPC|POWER, { RT, RA } },
1880 { "nego.", XO(31,104,1,1), XORB_MASK, PPC|POWER, { RT, RA } },
1881
1882 { "mul", XO(31,107,0,0), XO_MASK, POWER, { RT, RA, RB } },
1883 { "mul.", XO(31,107,0,1), XO_MASK, POWER, { RT, RA, RB } },
1884 { "mulo", XO(31,107,1,0), XO_MASK, POWER, { RT, RA, RB } },
1885 { "mulo.", XO(31,107,1,1), XO_MASK, POWER, { RT, RA, RB } },
1886
1887 { "clf", X(31,118), XRB_MASK, POWER, { RT, RA } },
1888
1889 { "lbzux", X(31,119), X_MASK, PPC|POWER, { RT, RA, RB } },
1890
1891 { "not", XRC(31,124,0), X_MASK, PPC|POWER, { RA, RS, RBS } },
1892 { "nor", XRC(31,124,0), X_MASK, PPC|POWER, { RA, RS, RB } },
1893 { "not.", XRC(31,124,1), X_MASK, PPC|POWER, { RA, RS, RBS } },
1894 { "nor.", XRC(31,124,1), X_MASK, PPC|POWER, { RA, RS, RB } },
1895
1896 { "subfe", XO(31,136,0,0), XO_MASK, PPC, { RT, RA, RB } },
1897 { "sfe", XO(31,136,0,0), XO_MASK, POWER, { RT, RA, RB } },
1898 { "subfe.", XO(31,136,0,1), XO_MASK, PPC, { RT, RA, RB } },
1899 { "sfe.", XO(31,136,0,1), XO_MASK, POWER, { RT, RA, RB } },
1900 { "subfeo", XO(31,136,1,0), XO_MASK, PPC, { RT, RA, RB } },
1901 { "sfeo", XO(31,136,1,0), XO_MASK, POWER, { RT, RA, RB } },
1902 { "subfeo.", XO(31,136,1,1), XO_MASK, PPC, { RT, RA, RB } },
1903 { "sfeo.", XO(31,136,1,1), XO_MASK, POWER, { RT, RA, RB } },
1904
1905 { "adde", XO(31,138,0,0), XO_MASK, PPC, { RT, RA, RB } },
1906 { "ae", XO(31,138,0,0), XO_MASK, POWER, { RT, RA, RB } },
1907 { "adde.", XO(31,138,0,1), XO_MASK, PPC, { RT, RA, RB } },
1908 { "ae.", XO(31,138,0,1), XO_MASK, POWER, { RT, RA, RB } },
1909 { "addeo", XO(31,138,1,0), XO_MASK, PPC, { RT, RA, RB } },
1910 { "aeo", XO(31,138,1,0), XO_MASK, POWER, { RT, RA, RB } },
1911 { "addeo.", XO(31,138,1,1), XO_MASK, PPC, { RT, RA, RB } },
1912 { "aeo.", XO(31,138,1,1), XO_MASK, POWER, { RT, RA, RB } },
1913
1914 { "mtcrf", X(31,144), X_MASK|(1<<20)|(1<<11), PPC|POWER, { FXM, RS } },
1915
1916 { "mtmsr", X(31,146), XRARB_MASK, PPC|POWER, { RS } },
1917
1918 { "stdx", X(31,149), X_MASK, PPC|B64, { RS, RA, RB } },
1919
1920 { "stwcx.", XRC(31,150,1), X_MASK, PPC, { RS, RA, RB } },
1921
1922 { "stwx", X(31,151), X_MASK, PPC, { RS, RA, RB } },
1923 { "stx", X(31,151), X_MASK, POWER, { RS, RA, RB } },
1924
1925 { "slq", XRC(31,152,0), X_MASK, POWER, { RA, RS, RB } },
1926 { "slq.", XRC(31,152,1), X_MASK, POWER, { RA, RS, RB } },
1927
1928 { "sle", XRC(31,153,0), X_MASK, POWER, { RA, RS, RB } },
1929 { "sle.", XRC(31,153,1), X_MASK, POWER, { RA, RS, RB } },
1930
1931 { "stdux", X(31,181), X_MASK, PPC|B64, { RS, RA, RB } },
1932
1933 { "stwux", X(31,183), X_MASK, PPC, { RS, RA, RB } },
1934 { "stux", X(31,183), X_MASK, POWER, { RS, RA, RB } },
1935
1936 { "sliq", XRC(31,184,0), X_MASK, POWER, { RA, RS, SH } },
1937 { "sliq.", XRC(31,184,1), X_MASK, POWER, { RA, RS, SH } },
1938
1939 { "subfze", XO(31,200,0,0), XORB_MASK, PPC, { RT, RA } },
1940 { "sfze", XO(31,200,0,0), XORB_MASK, POWER, { RT, RA } },
1941 { "subfze.", XO(31,200,0,1), XORB_MASK, PPC, { RT, RA } },
1942 { "sfze.", XO(31,200,0,1), XORB_MASK, POWER, { RT, RA } },
1943 { "subfzeo", XO(31,200,1,0), XORB_MASK, PPC, { RT, RA } },
1944 { "sfzeo", XO(31,200,1,0), XORB_MASK, POWER, { RT, RA } },
1945 { "subfzeo.",XO(31,200,1,1), XORB_MASK, PPC, { RT, RA } },
1946 { "sfzeo.", XO(31,200,1,1), XORB_MASK, POWER, { RT, RA } },
1947
1948 { "addze", XO(31,202,0,0), XORB_MASK, PPC, { RT, RA } },
1949 { "aze", XO(31,202,0,0), XORB_MASK, POWER, { RT, RA } },
1950 { "addze.", XO(31,202,0,1), XORB_MASK, PPC, { RT, RA } },
1951 { "aze.", XO(31,202,0,1), XORB_MASK, POWER, { RT, RA } },
1952 { "addzeo", XO(31,202,1,0), XORB_MASK, PPC, { RT, RA } },
1953 { "azeo", XO(31,202,1,0), XORB_MASK, POWER, { RT, RA } },
1954 { "addzeo.", XO(31,202,1,1), XORB_MASK, PPC, { RT, RA } },
1955 { "azeo.", XO(31,202,1,1), XORB_MASK, POWER, { RT, RA } },
1956
1957 { "mtsr", X(31,210), XRB_MASK|(1<<20), PPC|POWER|B32, { SR, RS } },
1958
1959 { "stdcx.", XRC(31,214,1), X_MASK, PPC|B64, { RS, RA, RB } },
1960
1961 { "stbx", X(31,215), X_MASK, PPC|POWER, { RS, RA, RB } },
1962
1963 { "sllq", XRC(31,216,0), X_MASK, POWER, { RA, RS, RB } },
1964 { "sllq.", XRC(31,216,1), X_MASK, POWER, { RA, RS, RB } },
1965
1966 { "sleq", XRC(31,217,0), X_MASK, POWER, { RA, RS, RB } },
1967 { "sleq.", XRC(31,217,1), X_MASK, POWER, { RA, RS, RB } },
1968
1969 { "subfme", XO(31,232,0,0), XORB_MASK, PPC, { RT, RA } },
1970 { "sfme", XO(31,232,0,0), XORB_MASK, POWER, { RT, RA } },
1971 { "subfme.", XO(31,232,0,1), XORB_MASK, PPC, { RT, RA } },
1972 { "sfme.", XO(31,232,0,1), XORB_MASK, POWER, { RT, RA } },
1973 { "subfmeo", XO(31,232,1,0), XORB_MASK, PPC, { RT, RA } },
1974 { "sfmeo", XO(31,232,1,0), XORB_MASK, POWER, { RT, RA } },
1975 { "subfmeo.",XO(31,232,1,1), XORB_MASK, PPC, { RT, RA } },
1976 { "sfmeo.", XO(31,232,1,1), XORB_MASK, POWER, { RT, RA } },
1977
1978 { "mulld", XO(31,233,0,0), XO_MASK, PPC|B64, { RT, RA, RB } },
1979 { "mulld.", XO(31,233,0,1), XO_MASK, PPC|B64, { RT, RA, RB } },
1980 { "mulldo", XO(31,233,1,0), XO_MASK, PPC|B64, { RT, RA, RB } },
1981 { "mulldo.", XO(31,233,1,1), XO_MASK, PPC|B64, { RT, RA, RB } },
1982
1983 { "addme", XO(31,234,0,0), XORB_MASK, PPC, { RT, RA } },
1984 { "ame", XO(31,234,0,0), XORB_MASK, POWER, { RT, RA } },
1985 { "addme.", XO(31,234,0,1), XORB_MASK, PPC, { RT, RA } },
1986 { "ame.", XO(31,234,0,1), XORB_MASK, POWER, { RT, RA } },
1987 { "addmeo", XO(31,234,1,0), XORB_MASK, PPC, { RT, RA } },
1988 { "ameo", XO(31,234,1,0), XORB_MASK, POWER, { RT, RA } },
1989 { "addmeo.", XO(31,234,1,1), XORB_MASK, PPC, { RT, RA } },
1990 { "ameo.", XO(31,234,1,1), XORB_MASK, POWER, { RT, RA } },
1991
1992 { "mullw", XO(31,235,0,0), XO_MASK, PPC, { RT, RA, RB } },
1993 { "muls", XO(31,235,0,0), XO_MASK, POWER, { RT, RA, RB } },
1994 { "mullw.", XO(31,235,0,1), XO_MASK, PPC, { RT, RA, RB } },
1995 { "muls.", XO(31,235,0,1), XO_MASK, POWER, { RT, RA, RB } },
1996 { "mullwo", XO(31,235,1,0), XO_MASK, PPC, { RT, RA, RB } },
1997 { "mulso", XO(31,235,1,0), XO_MASK, POWER, { RT, RA, RB } },
1998 { "mullwo.", XO(31,235,1,1), XO_MASK, PPC, { RT, RA, RB } },
1999 { "mulso.", XO(31,235,1,1), XO_MASK, POWER, { RT, RA, RB } },
2000
2001 { "mtsrin", X(31,242), XRA_MASK, PPC|B32, { RS, RB } },
2002 { "mtsri", X(31,242), XRA_MASK, POWER|B32, { RS, RB } },
2003
2004 { "dcbtst", X(31,246), XRT_MASK, PPC, { RA, RB } },
2005
2006 { "stbux", X(31,247), X_MASK, PPC|POWER, { RS, RA, RB } },
2007
2008 { "slliq", XRC(31,248,0), X_MASK, POWER, { RA, RS, SH } },
2009 { "slliq.", XRC(31,248,1), X_MASK, POWER, { RA, RS, SH } },
2010
2011 { "doz", XO(31,264,0,0), XO_MASK, POWER, { RT, RA, RB } },
2012 { "doz.", XO(31,264,0,1), XO_MASK, POWER, { RT, RA, RB } },
2013 { "dozo", XO(31,264,1,0), XO_MASK, POWER, { RT, RA, RB } },
2014 { "dozo.", XO(31,264,1,1), XO_MASK, POWER, { RT, RA, RB } },
2015
2016 { "add", XO(31,266,0,0), XO_MASK, PPC, { RT, RA, RB } },
2017 { "cax", XO(31,266,0,0), XO_MASK, POWER, { RT, RA, RB } },
2018 { "add.", XO(31,266,0,1), XO_MASK, PPC, { RT, RA, RB } },
2019 { "cax.", XO(31,266,0,1), XO_MASK, POWER, { RT, RA, RB } },
2020 { "addo", XO(31,266,1,0), XO_MASK, PPC, { RT, RA, RB } },
2021 { "caxo", XO(31,266,1,0), XO_MASK, POWER, { RT, RA, RB } },
2022 { "addo.", XO(31,266,1,1), XO_MASK, PPC, { RT, RA, RB } },
2023 { "caxo.", XO(31,266,1,1), XO_MASK, POWER, { RT, RA, RB } },
2024
2025 { "lscbx", XRC(31,277,0), X_MASK, POWER, { RT, RA, RB } },
2026 { "lscbx.", XRC(31,277,1), X_MASK, POWER, { RT, RA, RB } },
2027
2028 { "dcbt", X(31,278), XRT_MASK, PPC, { RA, RB } },
2029
2030 { "lhzx", X(31,279), X_MASK, PPC|POWER, { RT, RA, RB } },
2031
2032 { "eqv", XRC(31,284,0), X_MASK, PPC|POWER, { RA, RS, RB } },
2033 { "eqv.", XRC(31,284,1), X_MASK, PPC|POWER, { RA, RS, RB } },
2034
2035 { "tlbie", X(31,306), XRTRA_MASK, PPC, { RB } },
2036 { "tlbi", X(31,306), XRTRA_MASK, POWER, { RB } },
2037
2038 { "eciwx", X(31,310), X_MASK, PPC, { RT, RA, RB } },
2039
2040 { "lhzux", X(31,311), X_MASK, PPC|POWER, { RT, RA, RB } },
2041
2042 { "xor", XRC(31,316,0), X_MASK, PPC|POWER, { RA, RS, RB } },
2043 { "xor.", XRC(31,316,1), X_MASK, PPC|POWER, { RA, RS, RB } },
2044
2045 { "div", XO(31,331,0,0), XO_MASK, POWER, { RT, RA, RB } },
2046 { "div.", XO(31,331,0,1), XO_MASK, POWER, { RT, RA, RB } },
2047 { "divo", XO(31,331,1,0), XO_MASK, POWER, { RT, RA, RB } },
2048 { "divo.", XO(31,331,1,1), XO_MASK, POWER, { RT, RA, RB } },
2049
2050 { "mfxer", XSPR(31,339,1), XSPR_MASK, PPC|POWER, { RT } },
2051 { "mflr", XSPR(31,339,8), XSPR_MASK, PPC|POWER, { RT } },
2052 { "mfctr", XSPR(31,339,9), XSPR_MASK, PPC|POWER, { RT } },
2053 { "mfspr", X(31,339), X_MASK, PPC|POWER, { RT, SPR } },
2054
2055 { "lwax", X(31,341), X_MASK, PPC|B64, { RT, RA, RB } },
2056
2057 { "lhax", X(31,343), X_MASK, PPC|POWER, { RT, RA, RB } },
2058
2059 { "abs", XO(31,360,0,0), XORB_MASK, POWER, { RT, RA } },
2060 { "abs.", XO(31,360,0,1), XORB_MASK, POWER, { RT, RA } },
2061 { "abso", XO(31,360,1,0), XORB_MASK, POWER, { RT, RA } },
2062 { "abso.", XO(31,360,1,1), XORB_MASK, POWER, { RT, RA } },
2063
2064 { "divs", XO(31,363,0,0), XO_MASK, POWER, { RT, RA, RB } },
2065 { "divs.", XO(31,363,0,1), XO_MASK, POWER, { RT, RA, RB } },
2066 { "divso", XO(31,363,1,0), XO_MASK, POWER, { RT, RA, RB } },
2067 { "divso.", XO(31,363,1,1), XO_MASK, POWER, { RT, RA, RB } },
2068
2069 { "tlbia", X(31,370), 0xffffffff, PPC, { 0 } },
2070
2071 { "mftb", X(31,371), X_MASK, PPC, { RT, TBR } },
2072
2073 { "lwaux", X(31,373), X_MASK, PPC|B64, { RT, RA, RB } },
2074
2075 { "lhaux", X(31,375), X_MASK, PPC|POWER, { RT, RA, RB } },
2076
2077 { "sthx", X(31,407), X_MASK, PPC|POWER, { RS, RA, RB } },
2078
2079 { "orc", XRC(31,412,0), X_MASK, PPC|POWER, { RA, RS, RB } },
2080 { "orc.", XRC(31,412,1), X_MASK, PPC|POWER, { RA, RS, RB } },
2081
2082 { "sradi", XS(31,413,0), XS_MASK, PPC|B64, { RA, RS, SH6 } },
2083 { "sradi.", XS(31,413,1), XS_MASK, PPC|B64, { RA, RS, SH6 } },
2084
2085 { "slbie", X(31,434), XRTRA_MASK, PPC|B64, { RB } },
2086
2087 { "ecowx", X(31,438), X_MASK, PPC, { RT, RA, RB } },
2088
2089 { "sthux", X(31,439), X_MASK, PPC|POWER, { RS, RA, RB } },
2090
2091 { "mr", XRC(31,444,0), X_MASK, PPC|POWER, { RA, RS, RBS } },
2092 { "or", XRC(31,444,0), X_MASK, PPC|POWER, { RA, RS, RB } },
2093 { "mr.", XRC(31,444,1), X_MASK, PPC|POWER, { RA, RS, RBS } },
2094 { "or.", XRC(31,444,1), X_MASK, PPC|POWER, { RA, RS, RB } },
2095
2096 { "divdu", XO(31,457,0,0), XO_MASK, PPC|B64, { RT, RA, RB } },
2097 { "divdu.", XO(31,457,0,1), XO_MASK, PPC|B64, { RT, RA, RB } },
2098 { "divduo", XO(31,457,1,0), XO_MASK, PPC|B64, { RT, RA, RB } },
2099 { "divduo.", XO(31,457,1,1), XO_MASK, PPC|B64, { RT, RA, RB } },
2100
2101 { "divwu", XO(31,459,0,0), XO_MASK, PPC, { RT, RA, RB } },
2102 { "divwu.", XO(31,459,0,1), XO_MASK, PPC, { RT, RA, RB } },
2103 { "divwuo", XO(31,459,1,0), XO_MASK, PPC, { RT, RA, RB } },
2104 { "divwuo.", XO(31,459,1,1), XO_MASK, PPC, { RT, RA, RB } },
2105
2106 { "mtxer", XSPR(31,467,1), XSPR_MASK, PPC|POWER, { RS } },
2107 { "mtlr", XSPR(31,467,8), XSPR_MASK, PPC|POWER, { RS } },
2108 { "mtctr", XSPR(31,467,9), XSPR_MASK, PPC|POWER, { RS } },
2109 { "mtspr", X(31,467), X_MASK, PPC|POWER, { SPR, RS } },
2110
2111 { "dcbi", X(31,470), XRT_MASK, PPC, { RA, RB } },
2112
2113 { "nand", XRC(31,476,0), X_MASK, PPC|POWER, { RA, RS, RB } },
2114 { "nand.", XRC(31,476,1), X_MASK, PPC|POWER, { RA, RS, RB } },
2115
2116 { "nabs", XO(31,488,0,0), XORB_MASK, POWER, { RT, RA } },
2117 { "nabs.", XO(31,488,0,1), XORB_MASK, POWER, { RT, RA } },
2118 { "nabso", XO(31,488,1,0), XORB_MASK, POWER, { RT, RA } },
2119 { "nabso.", XO(31,488,1,1), XORB_MASK, POWER, { RT, RA } },
2120
2121 { "divd", XO(31,489,0,0), XO_MASK, PPC|B64, { RT, RA, RB } },
2122 { "divd.", XO(31,489,0,1), XO_MASK, PPC|B64, { RT, RA, RB } },
2123 { "divdo", XO(31,489,1,0), XO_MASK, PPC|B64, { RT, RA, RB } },
2124 { "divdo.", XO(31,489,1,1), XO_MASK, PPC|B64, { RT, RA, RB } },
2125
2126 { "divw", XO(31,491,0,0), XO_MASK, PPC, { RT, RA, RB } },
2127 { "divw.", XO(31,491,0,1), XO_MASK, PPC, { RT, RA, RB } },
2128 { "divwo", XO(31,491,1,0), XO_MASK, PPC, { RT, RA, RB } },
2129 { "divwo.", XO(31,491,1,1), XO_MASK, PPC, { RT, RA, RB } },
2130
2131 { "slbia", X(31,498), 0xffffffff, PPC|B64, { 0 } },
2132
2133 { "cli", X(31,502), XRB_MASK, POWER, { RT, RA } },
2134
2135 { "mcrxr", X(31,512), XRARB_MASK|(3<<21), PPC|POWER, { BF } },
2136
2137 { "clcs", X(31,531), XRB_MASK, POWER, { RT, RA } },
2138
2139 { "lswx", X(31,533), X_MASK, PPC, { RT, RA, RB } },
2140 { "lsx", X(31,533), X_MASK, POWER, { RT, RA, RB } },
2141
2142 { "lwbrx", X(31,534), X_MASK, PPC, { RT, RA, RB } },
2143 { "lbrx", X(31,534), X_MASK, POWER, { RT, RA, RB } },
2144
2145 { "lfsx", X(31,535), X_MASK, PPC|POWER, { FRT, RA, RB } },
2146
2147 { "srw", XRC(31,536,0), X_MASK, PPC, { RA, RS, RB } },
2148 { "sr", XRC(31,536,0), X_MASK, POWER, { RA, RS, RB } },
2149 { "srw.", XRC(31,536,1), X_MASK, PPC, { RA, RS, RB } },
2150 { "sr.", XRC(31,536,1), X_MASK, POWER, { RA, RS, RB } },
2151
2152 { "rrib", XRC(31,537,0), X_MASK, POWER, { RA, RS, RB } },
2153 { "rrib.", XRC(31,537,1), X_MASK, POWER, { RA, RS, RB } },
2154
2155 { "srd", XRC(31,539,0), X_MASK, PPC|B64, { RA, RS, RB } },
2156 { "srd.", XRC(31,539,1), X_MASK, PPC|B64, { RA, RS, RB } },
2157
2158 { "maskir", XRC(31,541,0), X_MASK, POWER, { RA, RS, RB } },
2159 { "maskir.", XRC(31,541,1), X_MASK, POWER, { RA, RS, RB } },
2160
2161 { "tlbsync", X(31,566), 0xffffffff, PPC, { 0 } },
2162
2163 { "lfsux", X(31,567), X_MASK, PPC|POWER, { FRT, RA, RB } },
2164
2165 { "mfsr", X(31,595), XRB_MASK|(1<<20), PPC|POWER|B32, { RT, SR } },
2166
2167 { "lswi", X(31,597), X_MASK, PPC, { RT, RA, NB } },
2168 { "lsi", X(31,597), X_MASK, POWER, { RT, RA, NB } },
2169
2170 { "sync", X(31,598), 0xffffffff, PPC, { 0 } },
2171 { "dcs", X(31,598), 0xffffffff, POWER, { 0 } },
2172
2173 { "lfdx", X(31,599), X_MASK, PPC|POWER, { FRT, RA, RB } },
2174
2175 { "mfsri", X(31,627), X_MASK, POWER, { RT, RA, RB } },
2176
2177 { "dclst", X(31,630), XRB_MASK, POWER, { RS, RA } },
2178
2179 { "lfdux", X(31,631), X_MASK, PPC|POWER, { FRT, RA, RB } },
2180
2181 { "mfsrin", X(31,659), XRA_MASK, PPC|B32, { RT, RB } },
2182
2183 { "stswx", X(31,661), X_MASK, PPC, { RS, RA, RB } },
2184 { "stsx", X(31,661), X_MASK, POWER, { RS, RA, RB } },
2185
2186 { "stwbrx", X(31,662), X_MASK, PPC, { RS, RA, RB } },
2187 { "stbrx", X(31,662), X_MASK, POWER, { RS, RA, RB } },
2188
2189 { "stfsx", X(31,663), X_MASK, PPC|POWER, { FRS, RA, RB } },
2190
2191 { "srq", XRC(31,664,0), X_MASK, POWER, { RA, RS, RB } },
2192 { "srq.", XRC(31,664,1), X_MASK, POWER, { RA, RS, RB } },
2193
2194 { "sre", XRC(31,665,0), X_MASK, POWER, { RA, RS, RB } },
2195 { "sre.", XRC(31,665,1), X_MASK, POWER, { RA, RS, RB } },
2196
2197 { "stfsux", X(31,695), X_MASK, PPC|POWER, { FRS, RA, RB } },
2198
2199 { "sriq", XRC(31,696,0), X_MASK, POWER, { RA, RS, SH } },
2200 { "sriq.", XRC(31,696,1), X_MASK, POWER, { RA, RS, SH } },
2201
2202 { "stswi", X(31,725), X_MASK, PPC, { RS, RA, NB } },
2203 { "stsi", X(31,725), X_MASK, POWER, { RS, RA, NB } },
2204
2205 { "stfdx", X(31,727), X_MASK, PPC|POWER, { FRS, RA, RB } },
2206
2207 { "srlq", XRC(31,728,0), X_MASK, POWER, { RA, RS, RB } },
2208 { "srlq.", XRC(31,728,1), X_MASK, POWER, { RA, RS, RB } },
2209
2210 { "sreq", XRC(31,729,0), X_MASK, POWER, { RA, RS, RB } },
2211 { "sreq.", XRC(31,729,1), X_MASK, POWER, { RA, RS, RB } },
2212
2213 { "stfdux", X(31,759), X_MASK, PPC|POWER, { FRS, RA, RB } },
2214
2215 { "srliq", XRC(31,760,0), X_MASK, POWER, { RA, RS, SH } },
2216 { "srliq.", XRC(31,760,1), X_MASK, POWER, { RA, RS, SH } },
2217
2218 { "lhbrx", X(31,790), X_MASK, PPC|POWER, { RT, RA, RB } },
2219
2220 { "sraw", XRC(31,792,0), X_MASK, PPC, { RA, RS, RB } },
2221 { "sra", XRC(31,792,0), X_MASK, POWER, { RA, RS, RB } },
2222 { "sraw.", XRC(31,792,1), X_MASK, PPC, { RA, RS, RB } },
2223 { "sra.", XRC(31,792,1), X_MASK, POWER, { RA, RS, RB } },
2224
2225 { "srad", XRC(31,794,0), X_MASK, PPC|B64, { RA, RS, RB } },
2226 { "srad.", XRC(31,794,1), X_MASK, PPC|B64, { RA, RS, RB } },
2227
2228 { "rac", X(31,818), X_MASK, POWER, { RT, RA, RB } },
2229
2230 { "srawi", XRC(31,824,0), X_MASK, PPC, { RA, RS, SH } },
2231 { "srai", XRC(31,824,0), X_MASK, POWER, { RA, RS, SH } },
2232 { "srawi.", XRC(31,824,1), X_MASK, PPC, { RA, RS, SH } },
2233 { "srai.", XRC(31,824,1), X_MASK, POWER, { RA, RS, SH } },
2234
2235 { "eieio", X(31,854), 0xffffffff, PPC, { 0 } },
2236
2237 { "sthbrx", X(31,918), X_MASK, PPC|POWER, { RS, RA, RB } },
2238
2239 { "sraq", XRC(31,920,0), X_MASK, POWER, { RA, RS, RB } },
2240 { "sraq.", XRC(31,920,1), X_MASK, POWER, { RA, RS, RB } },
2241
2242 { "srea", XRC(31,921,0), X_MASK, POWER, { RA, RS, RB } },
2243 { "srea.", XRC(31,921,1), X_MASK, POWER, { RA, RS, RB } },
2244
2245 { "extsh", XRC(31,922,0), XRB_MASK, PPC, { RA, RS } },
2246 { "exts", XRC(31,922,0), XRB_MASK, POWER, { RA, RS } },
2247 { "extsh.", XRC(31,922,1), XRB_MASK, PPC, { RA, RS } },
2248 { "exts.", XRC(31,922,1), XRB_MASK, POWER, { RA, RS } },
2249
2250 { "sraiq", XRC(31,952,0), X_MASK, POWER, { RA, RS, SH } },
2251 { "sraiq.", XRC(31,952,1), X_MASK, POWER, { RA, RS, SH } },
2252
2253 { "extsb", XRC(31,954,0), XRB_MASK, PPC, { RA, RS} },
2254 { "extsb.", XRC(31,954,1), XRB_MASK, PPC, { RA, RS} },
2255
2256 { "icbi", X(31,982), XRT_MASK, PPC, { RA, RB } },
2257
2258 { "stfiwx", X(31,983), X_MASK, PPC, { FRS, RA, RB } },
2259
2260 { "extsw", XRC(31,986,0), XRB_MASK, PPC, { RA, RS } },
2261 { "extsw.", XRC(31,986,1), XRB_MASK, PPC, { RA, RS } },
2262
2263 { "dcbz", X(31,1014), XRT_MASK, PPC, { RA, RB } },
2264 { "dclz", X(31,1014), XRT_MASK, PPC, { RA, RB } },
2265
2266 { "lwz", OP(32), OP_MASK, PPC, { RT, D, RA } },
2267 { "l", OP(32), OP_MASK, POWER, { RT, D, RA } },
2268
2269 { "lwzu", OP(33), OP_MASK, PPC, { RT, D, RA } },
2270 { "lu", OP(33), OP_MASK, POWER, { RT, D, RA } },
2271
2272 { "lbz", OP(34), OP_MASK, PPC|POWER, { RT, D, RA } },
2273
2274 { "lbzu", OP(35), OP_MASK, PPC|POWER, { RT, D, RA } },
2275
2276 { "stw", OP(36), OP_MASK, PPC, { RS, D, RA } },
2277 { "st", OP(36), OP_MASK, POWER, { RS, D, RA } },
2278
2279 { "stwu", OP(37), OP_MASK, PPC, { RS, D, RA } },
2280 { "stu", OP(37), OP_MASK, POWER, { RS, D, RA } },
2281
2282 { "stb", OP(38), OP_MASK, PPC|POWER, { RS, D, RA } },
2283
2284 { "stbu", OP(39), OP_MASK, PPC|POWER, { RS, D, RA } },
2285
2286 { "lhz", OP(40), OP_MASK, PPC|POWER, { RT, D, RA } },
2287
2288 { "lhzu", OP(41), OP_MASK, PPC|POWER, { RT, D, RA } },
2289
2290 { "lha", OP(42), OP_MASK, PPC|POWER, { RT, D, RA } },
2291
2292 { "lhau", OP(43), OP_MASK, PPC|POWER, { RT, D, RA } },
2293
2294 { "sth", OP(44), OP_MASK, PPC|POWER, { RS, D, RA } },
2295
2296 { "sthu", OP(45), OP_MASK, PPC|POWER, { RS, D, RA } },
2297
2298 { "lmw", OP(46), OP_MASK, PPC, { RT, D, RA } },
2299 { "lm", OP(46), OP_MASK, POWER, { RT, D, RA } },
2300
2301 { "stmw", OP(47), OP_MASK, PPC, { RS, D, RA } },
2302 { "stm", OP(47), OP_MASK, POWER, { RS, D, RA } },
2303
2304 { "lfs", OP(48), OP_MASK, PPC|POWER, { FRT, D, RA } },
2305
2306 { "lfsu", OP(49), OP_MASK, PPC|POWER, { FRT, D, RA } },
2307
2308 { "lfd", OP(50), OP_MASK, PPC|POWER, { FRT, D, RA } },
2309
2310 { "lfdu", OP(51), OP_MASK, PPC|POWER, { FRT, D, RA } },
2311
2312 { "stfs", OP(52), OP_MASK, PPC|POWER, { FRS, D, RA } },
2313
2314 { "stfsu", OP(53), OP_MASK, PPC|POWER, { FRS, D, RA } },
2315
2316 { "stfd", OP(54), OP_MASK, PPC|POWER, { FRS, D, RA } },
2317
2318 { "stfdu", OP(55), OP_MASK, PPC|POWER, { FRS, D, RA } },
2319
2320 { "ld", DSO(58,0), DS_MASK, PPC|B64, { RT, DS, RA } },
2321
2322 { "ldu", DSO(58,1), DS_MASK, PPC|B64, { RT, DS, RA } },
2323
2324 { "lwa", DSO(58,2), DS_MASK, PPC|B64, { RT, DS, RA } },
2325
2326 { "fdivs", A(59,18,0), AFRC_MASK, PPC, { FRT, FRA, FRB } },
2327 { "fdivs.", A(59,18,1), AFRC_MASK, PPC, { FRT, FRA, FRB } },
2328
2329 { "fsubs", A(59,20,0), AFRC_MASK, PPC, { FRT, FRA, FRB } },
2330 { "fsubs.", A(59,20,1), AFRC_MASK, PPC, { FRT, FRA, FRB } },
2331
2332 { "fadds", A(59,21,0), AFRC_MASK, PPC, { FRT, FRA, FRB } },
2333 { "fadds.", A(59,21,1), AFRC_MASK, PPC, { FRT, FRA, FRB } },
2334
2335 { "fsqrts", A(59,22,0), AFRAFRC_MASK, PPC, { FRT, FRB } },
2336 { "fsqrts.", A(59,22,1), AFRAFRC_MASK, PPC, { FRT, FRB } },
2337
2338 { "fres", A(59,24,0), AFRAFRC_MASK, PPC, { FRT, FRB } },
2339 { "fres.", A(59,24,1), AFRAFRC_MASK, PPC, { FRT, FRB } },
2340
2341 { "fmuls", A(59,25,0), AFRB_MASK, PPC, { FRT, FRA, FRC } },
2342 { "fmuls.", A(59,25,1), AFRB_MASK, PPC, { FRT, FRA, FRC } },
2343
2344 { "fmsubs", A(59,28,0), A_MASK, PPC, { FRT,FRA,FRC,FRB } },
2345 { "fmsubs.", A(59,28,1), A_MASK, PPC, { FRT,FRA,FRC,FRB } },
2346
2347 { "fmadds", A(59,29,0), A_MASK, PPC, { FRT,FRA,FRC,FRB } },
2348 { "fmadds.", A(59,29,1), A_MASK, PPC, { FRT,FRA,FRC,FRB } },
2349
2350 { "fnmsubs", A(59,30,0), A_MASK, PPC, { FRT,FRA,FRC,FRB } },
2351 { "fnmsubs.",A(59,30,1), A_MASK, PPC, { FRT,FRA,FRC,FRB } },
2352
2353 { "fnmadds", A(59,31,0), A_MASK, PPC, { FRT,FRA,FRC,FRB } },
2354 { "fnmadds.",A(59,31,1), A_MASK, PPC, { FRT,FRA,FRC,FRB } },
2355
2356 { "std", DSO(62,0), DS_MASK, PPC|B64, { RS, DS, RA } },
2357
2358 { "stdu", DSO(62,1), DS_MASK, PPC|B64, { RS, DS, RA } },
2359
2360 { "fcmpu", X(63,0), X_MASK|(3<<21), PPC|POWER, { BF, FRA, FRB } },
2361
2362 { "frsp", XRC(63,12,0), XRA_MASK, PPC|POWER, { FRT, FRB } },
2363 { "frsp.", XRC(63,12,1), XRA_MASK, PPC|POWER, { FRT, FRB } },
2364
2365 { "fctiw", XRC(63,14,0), XRA_MASK, PPC, { FRT, FRB } },
2366 { "fctiw.", XRC(63,14,1), XRA_MASK, PPC, { FRT, FRB } },
2367
2368 { "fctiwz", XRC(63,15,0), XRA_MASK, PPC, { FRT, FRB } },
2369 { "fctiwz.", XRC(63,15,1), XRA_MASK, PPC, { FRT, FRB } },
2370
2371 { "fdiv", A(63,18,0), AFRC_MASK, PPC, { FRT, FRA, FRB } },
2372 { "fd", A(63,18,0), AFRC_MASK, POWER, { FRT, FRA, FRB } },
2373 { "fdiv.", A(63,18,1), AFRC_MASK, PPC, { FRT, FRA, FRB } },
2374 { "fd.", A(63,18,1), AFRC_MASK, POWER, { FRT, FRA, FRB } },
2375
2376 { "fsub", A(63,20,0), AFRC_MASK, PPC, { FRT, FRA, FRB } },
2377 { "fs", A(63,20,0), AFRC_MASK, POWER, { FRT, FRA, FRB } },
2378 { "fsub.", A(63,20,1), AFRC_MASK, PPC, { FRT, FRA, FRB } },
2379 { "fs.", A(63,20,1), AFRC_MASK, POWER, { FRT, FRA, FRB } },
2380
2381 { "fadd", A(63,21,0), AFRC_MASK, PPC, { FRT, FRA, FRB } },
2382 { "fa", A(63,21,0), AFRC_MASK, POWER, { FRT, FRA, FRB } },
2383 { "fadd.", A(63,21,1), AFRC_MASK, PPC, { FRT, FRA, FRB } },
2384 { "fa.", A(63,21,1), AFRC_MASK, POWER, { FRT, FRA, FRB } },
2385
2386 { "fsqrt", A(63,22,0), AFRAFRC_MASK, PPC, { FRT, FRB } },
2387 { "fsqrt.", A(63,22,1), AFRAFRC_MASK, PPC, { FRT, FRB } },
2388
2389 { "fsel", A(63,23,0), A_MASK, PPC, { FRT,FRA,FRC,FRB } },
2390 { "fsel.", A(63,23,1), A_MASK, PPC, { FRT,FRA,FRC,FRB } },
2391
2392 { "fmul", A(63,25,0), AFRB_MASK, PPC, { FRT, FRA, FRC } },
2393 { "fm", A(63,25,0), AFRB_MASK, POWER, { FRT, FRA, FRC } },
2394 { "fmul.", A(63,25,1), AFRB_MASK, PPC, { FRT, FRA, FRC } },
2395 { "fm.", A(63,25,1), AFRB_MASK, POWER, { FRT, FRA, FRC } },
2396
2397 { "frsqrte", A(63,26,0), AFRAFRC_MASK, PPC, { FRT, FRB } },
2398 { "frsqrte.",A(63,26,1), AFRAFRC_MASK, PPC, { FRT, FRB } },
2399
2400 { "fmsub", A(63,28,0), A_MASK, PPC, { FRT,FRA,FRC,FRB } },
2401 { "fms", A(63,28,0), A_MASK, POWER, { FRT,FRA,FRC,FRB } },
2402 { "fmsub.", A(63,28,1), A_MASK, PPC, { FRT,FRA,FRC,FRB } },
2403 { "fms.", A(63,28,1), A_MASK, POWER, { FRT,FRA,FRC,FRB } },
2404
2405 { "fmadd", A(63,29,0), A_MASK, PPC, { FRT,FRA,FRC,FRB } },
2406 { "fma", A(63,29,0), A_MASK, POWER, { FRT,FRA,FRC,FRB } },
2407 { "fmadd.", A(63,29,1), A_MASK, PPC, { FRT,FRA,FRC,FRB } },
2408 { "fma.", A(63,29,1), A_MASK, POWER, { FRT,FRA,FRC,FRB } },
2409
2410 { "fnmsub", A(63,30,0), A_MASK, PPC, { FRT,FRA,FRC,FRB } },
2411 { "fnms", A(63,30,0), A_MASK, POWER, { FRT,FRA,FRC,FRB } },
2412 { "fnmsub.", A(63,30,1), A_MASK, PPC, { FRT,FRA,FRC,FRB } },
2413 { "fnms.", A(63,30,1), A_MASK, POWER, { FRT,FRA,FRC,FRB } },
2414
2415 { "fnmadd", A(63,31,0), A_MASK, PPC, { FRT,FRA,FRC,FRB } },
2416 { "fnma", A(63,31,0), A_MASK, POWER, { FRT,FRA,FRC,FRB } },
2417 { "fnmadd.", A(63,31,1), A_MASK, PPC, { FRT,FRA,FRC,FRB } },
2418 { "fnma.", A(63,31,1), A_MASK, POWER, { FRT,FRA,FRC,FRB } },
2419
2420 { "fcmpo", X(63,30), X_MASK|(3<<21), PPC|POWER, { BF, FRA, FRB } },
2421
2422 { "mtfsb1", XRC(63,38,0), XRARB_MASK, PPC|POWER, { BT } },
2423 { "mtfsb1.", XRC(63,38,1), XRARB_MASK, PPC|POWER, { BT } },
2424
2425 { "fneg", XRC(63,40,0), XRA_MASK, PPC|POWER, { FRT, FRB } },
2426 { "fneg.", XRC(63,40,1), XRA_MASK, PPC|POWER, { FRT, FRB } },
2427
2428 { "mcrfs", X(63,64), XRB_MASK|(3<<21)|(3<<16), PPC|POWER, { BF, BFA } },
2429
2430 { "mtfsb0", XRC(63,70,0), XRARB_MASK, PPC|POWER, { BT } },
2431 { "mtfsb0.", XRC(63,70,1), XRARB_MASK, PPC|POWER, { BT } },
2432
2433 { "fmr", XRC(63,72,0), XRA_MASK, PPC|POWER, { FRT, FRB } },
2434 { "fmr.", XRC(63,72,1), XRA_MASK, PPC|POWER, { FRT, FRB } },
2435
2436 { "mtfsfi", XRC(63,134,0), XRA_MASK|(3<<21)|(1<<11), PPC|POWER, { BF, U } },
2437 { "mtfsfi.", XRC(63,134,1), XRA_MASK|(3<<21)|(1<<11), PPC|POWER, { BF, U } },
2438
2439 { "fnabs", XRC(63,136,0), XRA_MASK, PPC|POWER, { FRT, FRB } },
2440 { "fnabs.", XRC(63,136,1), XRA_MASK, PPC|POWER, { FRT, FRB } },
2441
2442 { "fabs", XRC(63,264,0), XRA_MASK, PPC|POWER, { FRT, FRB } },
2443 { "fabs.", XRC(63,264,1), XRA_MASK, PPC|POWER, { FRT, FRB } },
2444
2445 { "mffs", XRC(63,583,0), XRARB_MASK, PPC|POWER, { FRT } },
2446 { "mffs.", XRC(63,583,1), XRARB_MASK, PPC|POWER, { FRT } },
2447
2448 { "mtfsf", XFL(63,711,0), XFL_MASK, PPC|POWER, { FLM, FRB } },
2449 { "mtfsf.", XFL(63,711,1), XFL_MASK, PPC|POWER, { FLM, FRB } },
2450
2451 { "fctid", XRC(63,814,0), XRA_MASK, PPC|B64, { FRT, FRB } },
2452 { "fctid.", XRC(63,814,1), XRA_MASK, PPC|B64, { FRT, FRB } },
2453
2454 { "fctidz", XRC(63,815,0), XRA_MASK, PPC|B64, { FRT, FRB } },
2455 { "fctidz.", XRC(63,815,1), XRA_MASK, PPC|B64, { FRT, FRB } },
2456
2457 { "fcfid", XRC(63,846,0), XRA_MASK, PPC|B64, { FRT, FRB } },
2458 { "fcfid.", XRC(63,846,1), XRA_MASK, PPC|B64, { FRT, FRB } },
2459
2460 };
2461
2462 const int powerpc_num_opcodes =
2463 sizeof (powerpc_opcodes) / sizeof (powerpc_opcodes[0]);