ppc-opc: sync instructions
[binutils-gdb.git] / opcodes / ppc-opc.c
1 /* ppc-opc.c -- PowerPC opcode list
2 Copyright (C) 1994-2023 Free Software Foundation, Inc.
3 Written by Ian Lance Taylor, Cygnus Support
4
5 This file is part of the GNU opcodes library.
6
7 This library is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3, or (at your option)
10 any later version.
11
12 It is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
15 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
19 Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
20 MA 02110-1301, USA. */
21
22 #include "sysdep.h"
23 #include <stdio.h>
24 #include "opcode/ppc.h"
25 #include "opintl.h"
26 #include "libiberty.h"
27
28 /* This file holds the PowerPC opcode table. The opcode table
29 includes almost all of the extended instruction mnemonics. This
30 permits the disassembler to use them, and simplifies the assembler
31 logic, at the cost of increasing the table size. The table is
32 strictly constant data, so the compiler should be able to put it in
33 the text segment.
34
35 This file also holds the operand table. All knowledge about
36 inserting operands into instructions and vice-versa is kept in this
37 file. */
38
39 /* The functions used to insert and extract complicated operands. */
40
41 /* The ARX, ARY, RX and RY operands are alternate encodings of GPRs. */
42
43 static uint64_t
44 insert_arx (uint64_t insn,
45 int64_t value,
46 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
47 const char **errmsg ATTRIBUTE_UNUSED)
48 {
49 value -= 8;
50 if (value < 0 || value >= 16)
51 {
52 *errmsg = _("invalid register");
53 value = 0xf;
54 }
55 return insn | value;
56 }
57
58 static int64_t
59 extract_arx (uint64_t insn,
60 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
61 int *invalid ATTRIBUTE_UNUSED)
62 {
63 return (insn & 0xf) + 8;
64 }
65
66 static uint64_t
67 insert_ary (uint64_t insn,
68 int64_t value,
69 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
70 const char **errmsg ATTRIBUTE_UNUSED)
71 {
72 value -= 8;
73 if (value < 0 || value >= 16)
74 {
75 *errmsg = _("invalid register");
76 value = 0xf;
77 }
78 return insn | (value << 4);
79 }
80
81 static int64_t
82 extract_ary (uint64_t insn,
83 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
84 int *invalid ATTRIBUTE_UNUSED)
85 {
86 return ((insn >> 4) & 0xf) + 8;
87 }
88
89 static uint64_t
90 insert_rx (uint64_t insn,
91 int64_t value,
92 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
93 const char **errmsg)
94 {
95 if (value >= 0 && value < 8)
96 ;
97 else if (value >= 24 && value <= 31)
98 value -= 16;
99 else
100 {
101 *errmsg = _("invalid register");
102 value = 0xf;
103 }
104 return insn | value;
105 }
106
107 static int64_t
108 extract_rx (uint64_t insn,
109 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
110 int *invalid ATTRIBUTE_UNUSED)
111 {
112 int64_t value = insn & 0xf;
113 if (value >= 0 && value < 8)
114 return value;
115 else
116 return value + 16;
117 }
118
119 static uint64_t
120 insert_ry (uint64_t insn,
121 int64_t value,
122 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
123 const char **errmsg)
124 {
125 if (value >= 0 && value < 8)
126 ;
127 else if (value >= 24 && value <= 31)
128 value -= 16;
129 else
130 {
131 *errmsg = _("invalid register");
132 value = 0xf;
133 }
134 return insn | (value << 4);
135 }
136
137 static int64_t
138 extract_ry (uint64_t insn,
139 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
140 int *invalid ATTRIBUTE_UNUSED)
141 {
142 int64_t value = (insn >> 4) & 0xf;
143 if (value >= 0 && value < 8)
144 return value;
145 else
146 return value + 16;
147 }
148
149 /* The BA and BB fields in an XL form instruction or the RA and RB fields or
150 VRA and VRB fields in a VX form instruction when they must be the same.
151 This is used for extended mnemonics like crclr. The extraction function
152 enforces that the fields are the same. */
153
154 static uint64_t
155 insert_bab (uint64_t insn,
156 int64_t value,
157 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
158 const char **errmsg ATTRIBUTE_UNUSED)
159 {
160 value &= 0x1f;
161 return insn | (value << 16) | (value << 11);
162 }
163
164 static int64_t
165 extract_bab (uint64_t insn,
166 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
167 int *invalid)
168 {
169 int64_t ba = (insn >> 16) & 0x1f;
170 int64_t bb = (insn >> 11) & 0x1f;
171
172 if (ba != bb)
173 *invalid = 1;
174 return ba;
175 }
176
177 /* The BT, BA and BB fields in an XL form instruction when they must all be
178 the same. This is used for extended mnemonics like crclr. The extraction
179 function enforces that the fields are the same. */
180
181 static uint64_t
182 insert_btab (uint64_t insn,
183 int64_t value,
184 ppc_cpu_t dialect,
185 const char **errmsg)
186 {
187 value &= 0x1f;
188 return (value << 21) | insert_bab (insn, value, dialect, errmsg);
189 }
190
191 static int64_t
192 extract_btab (uint64_t insn,
193 ppc_cpu_t dialect,
194 int *invalid)
195 {
196 int64_t bt = (insn >> 21) & 0x1f;
197 int64_t bab = extract_bab (insn, dialect, invalid);
198
199 if (bt != bab)
200 *invalid = 1;
201 return bt;
202 }
203
204 /* The BD field in a B form instruction when the - modifier is used.
205 This modifier means that the branch is not expected to be taken.
206 For chips built to versions of the architecture prior to version 2
207 (ie. not Power4 compatible), we set the y bit of the BO field to 1
208 if the offset is negative. When extracting, we require that the y
209 bit be 1 and that the offset be positive, since if the y bit is 0
210 we just want to print the normal form of the instruction.
211 Power4 compatible targets use two bits, "a", and "t", instead of
212 the "y" bit. "at" == 00 => no hint, "at" == 01 => unpredictable,
213 "at" == 10 => not taken, "at" == 11 => taken. The "t" bit is 00001
214 in BO field, the "a" bit is 00010 for branch on CR(BI) and 01000
215 for branch on CTR. We only handle the taken/not-taken hint here.
216 Note that we don't relax the conditions tested here when
217 disassembling with -Many because insns using extract_bdm and
218 extract_bdp always occur in pairs. One or the other will always
219 be valid. */
220
221 #define ISA_V2 (PPC_OPCODE_POWER4 | PPC_OPCODE_E500MC | PPC_OPCODE_TITAN)
222
223 static uint64_t
224 insert_bdm (uint64_t insn,
225 int64_t value,
226 ppc_cpu_t dialect,
227 const char **errmsg ATTRIBUTE_UNUSED)
228 {
229 if ((dialect & ISA_V2) == 0)
230 {
231 if ((value & 0x8000) != 0)
232 insn |= 1 << 21;
233 }
234 else
235 {
236 if ((insn & (0x14 << 21)) == (0x04 << 21))
237 insn |= 0x02 << 21;
238 else if ((insn & (0x14 << 21)) == (0x10 << 21))
239 insn |= 0x08 << 21;
240 }
241 return insn | (value & 0xfffc);
242 }
243
244 static int64_t
245 extract_bdm (uint64_t insn,
246 ppc_cpu_t dialect,
247 int *invalid)
248 {
249 if ((dialect & ISA_V2) == 0)
250 {
251 if (((insn & (1 << 21)) == 0) != ((insn & (1 << 15)) == 0))
252 *invalid = 1;
253 }
254 else
255 {
256 if ((insn & (0x17 << 21)) != (0x06 << 21)
257 && (insn & (0x1d << 21)) != (0x18 << 21))
258 *invalid = 1;
259 }
260
261 return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
262 }
263
264 /* The BD field in a B form instruction when the + modifier is used.
265 This is like BDM, above, except that the branch is expected to be
266 taken. */
267
268 static uint64_t
269 insert_bdp (uint64_t insn,
270 int64_t value,
271 ppc_cpu_t dialect,
272 const char **errmsg ATTRIBUTE_UNUSED)
273 {
274 if ((dialect & ISA_V2) == 0)
275 {
276 if ((value & 0x8000) == 0)
277 insn |= 1 << 21;
278 }
279 else
280 {
281 if ((insn & (0x14 << 21)) == (0x04 << 21))
282 insn |= 0x03 << 21;
283 else if ((insn & (0x14 << 21)) == (0x10 << 21))
284 insn |= 0x09 << 21;
285 }
286 return insn | (value & 0xfffc);
287 }
288
289 static int64_t
290 extract_bdp (uint64_t insn,
291 ppc_cpu_t dialect,
292 int *invalid)
293 {
294 if ((dialect & ISA_V2) == 0)
295 {
296 if (((insn & (1 << 21)) == 0) == ((insn & (1 << 15)) == 0))
297 *invalid = 1;
298 }
299 else
300 {
301 if ((insn & (0x17 << 21)) != (0x07 << 21)
302 && (insn & (0x1d << 21)) != (0x19 << 21))
303 *invalid = 1;
304 }
305
306 return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
307 }
308
309 static inline int
310 valid_bo_pre_v2 (int64_t value)
311 {
312 /* Certain encodings have bits that are required to be zero.
313 These are (z must be zero, y may be anything):
314 0000y
315 0001y
316 001zy
317 0100y
318 0101y
319 011zy
320 1z00y
321 1z01y
322 1z1zz
323 */
324 if ((value & 0x14) == 0)
325 /* BO: 0000y, 0001y, 0100y, 0101y. */
326 return 1;
327 else if ((value & 0x14) == 0x4)
328 /* BO: 001zy, 011zy. */
329 return (value & 0x2) == 0;
330 else if ((value & 0x14) == 0x10)
331 /* BO: 1z00y, 1z01y. */
332 return (value & 0x8) == 0;
333 else
334 /* BO: 1z1zz. */
335 return value == 0x14;
336 }
337
338 static inline int
339 valid_bo_post_v2 (int64_t value)
340 {
341 /* Certain encodings have bits that are required to be zero.
342 These are (z must be zero, a & t may be anything):
343 0000z
344 0001z
345 001at
346 0100z
347 0101z
348 011at
349 1a00t
350 1a01t
351 1z1zz
352 */
353 if ((value & 0x14) == 0)
354 /* BO: 0000z, 0001z, 0100z, 0101z. */
355 return (value & 0x1) == 0;
356 else if ((value & 0x14) == 0x14)
357 /* BO: 1z1zz. */
358 return value == 0x14;
359 else if ((value & 0x14) == 0x4)
360 /* BO: 001at, 011at, with "at" == 0b01 being reserved. */
361 return (value & 0x3) != 1;
362 else if ((value & 0x14) == 0x10)
363 /* BO: 1a00t, 1a01t, with "at" == 0b01 being reserved. */
364 return (value & 0x9) != 1;
365 else
366 return 1;
367 }
368
369 /* Check for legal values of a BO field. */
370
371 static int
372 valid_bo (int64_t value, ppc_cpu_t dialect, int extract)
373 {
374 int valid_y = valid_bo_pre_v2 (value);
375 int valid_at = valid_bo_post_v2 (value);
376
377 /* When disassembling with -Many, accept either encoding on the
378 second pass through opcodes. */
379 if (extract && dialect == ~(ppc_cpu_t) PPC_OPCODE_ANY)
380 return valid_y || valid_at;
381 if ((dialect & ISA_V2) == 0)
382 return valid_y;
383 else
384 return valid_at;
385 }
386
387 /* The BO field in a B form instruction. Warn about attempts to set
388 the field to an illegal value. */
389
390 static uint64_t
391 insert_bo (uint64_t insn,
392 int64_t value,
393 ppc_cpu_t dialect,
394 const char **errmsg)
395 {
396 if (!valid_bo (value, dialect, 0))
397 *errmsg = _("invalid conditional option");
398 else if (PPC_OP (insn) == 19
399 && (((insn >> 1) & 0x3ff) == 528) && ! (value & 4))
400 *errmsg = _("invalid counter access");
401 return insn | ((value & 0x1f) << 21);
402 }
403
404 static int64_t
405 extract_bo (uint64_t insn,
406 ppc_cpu_t dialect,
407 int *invalid)
408 {
409 int64_t value = (insn >> 21) & 0x1f;
410 if (!valid_bo (value, dialect, 1))
411 *invalid = 1;
412 return value;
413 }
414
415 /* For the given BO value, return a bit mask detailing which bits
416 define the branch hints. */
417
418 static int64_t
419 get_bo_hint_mask (int64_t bo, ppc_cpu_t dialect)
420 {
421 if ((dialect & ISA_V2) == 0)
422 {
423 if ((bo & 0x14) != 0x14)
424 /* BO: 0000y, 0001y, 001zy, 0100y, 0101y, 011zy, 1z00y, 1z01y . */
425 return 1;
426 else
427 /* BO: 1z1zz. */
428 return 0;
429 }
430 else
431 {
432 if ((bo & 0x14) == 0x4)
433 /* BO: 001at, 011at. */
434 return 0x3;
435 else if ((bo & 0x14) == 0x10)
436 /* BO: 1a00t, 1a01t. */
437 return 0x9;
438 else
439 /* BO: 0000z, 0001z, 0100z, 0101z, 1z1zz. */
440 return 0;
441 }
442 }
443
444 /* The BO field in a B form instruction when the + or - modifier is used. */
445
446 static uint64_t
447 insert_boe (uint64_t insn,
448 int64_t value,
449 ppc_cpu_t dialect,
450 const char **errmsg,
451 int branch_taken)
452 {
453 int64_t implied_hint;
454 int64_t hint_mask = get_bo_hint_mask (value, dialect);
455
456 if (branch_taken)
457 implied_hint = hint_mask;
458 else
459 implied_hint = hint_mask & ~1;
460
461 /* The branch hint bit(s) in the BO field must either be zero or exactly
462 match the branch hint bits implied by the '+' or '-' modifier. */
463 if (implied_hint == 0)
464 *errmsg = _("BO value implies no branch hint, when using + or - modifier");
465 else if ((value & hint_mask) != 0
466 && (value & hint_mask) != implied_hint)
467 {
468 if ((dialect & ISA_V2) == 0)
469 *errmsg = _("attempt to set y bit when using + or - modifier");
470 else
471 *errmsg = _("attempt to set 'at' bits when using + or - modifier");
472 }
473
474 value |= implied_hint;
475
476 return insert_bo (insn, value, dialect, errmsg);
477 }
478
479 static int64_t
480 extract_boe (uint64_t insn,
481 ppc_cpu_t dialect,
482 int *invalid,
483 int branch_taken)
484 {
485 int64_t value = (insn >> 21) & 0x1f;
486 int64_t implied_hint;
487 int64_t hint_mask = get_bo_hint_mask (value, dialect);
488
489 if (branch_taken)
490 implied_hint = hint_mask;
491 else
492 implied_hint = hint_mask & ~1;
493
494 if (!valid_bo (value, dialect, 1)
495 || implied_hint == 0
496 || (value & hint_mask) != implied_hint)
497 *invalid = 1;
498 return value;
499 }
500
501 /* The BO field in a B form instruction when the - modifier is used. */
502
503 static uint64_t
504 insert_bom (uint64_t insn,
505 int64_t value,
506 ppc_cpu_t dialect,
507 const char **errmsg)
508 {
509 return insert_boe (insn, value, dialect, errmsg, 0);
510 }
511
512 static int64_t
513 extract_bom (uint64_t insn,
514 ppc_cpu_t dialect,
515 int *invalid)
516 {
517 return extract_boe (insn, dialect, invalid, 0);
518 }
519
520 /* The BO field in a B form instruction when the + modifier is used. */
521
522 static uint64_t
523 insert_bop (uint64_t insn,
524 int64_t value,
525 ppc_cpu_t dialect,
526 const char **errmsg)
527 {
528 return insert_boe (insn, value, dialect, errmsg, 1);
529 }
530
531 static int64_t
532 extract_bop (uint64_t insn,
533 ppc_cpu_t dialect,
534 int *invalid)
535 {
536 return extract_boe (insn, dialect, invalid, 1);
537 }
538
539 /* The DCMX field in a X form instruction when the field is split
540 into separate DC, DM and DX fields. */
541
542 static uint64_t
543 insert_dcmxs (uint64_t insn,
544 int64_t value,
545 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
546 const char **errmsg ATTRIBUTE_UNUSED)
547 {
548 return (insn
549 | ((value & 0x1f) << 16)
550 | ((value & 0x20) >> 3)
551 | (value & 0x40));
552 }
553
554 static int64_t
555 extract_dcmxs (uint64_t insn,
556 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
557 int *invalid ATTRIBUTE_UNUSED)
558 {
559 return (insn & 0x40) | ((insn << 3) & 0x20) | ((insn >> 16) & 0x1f);
560 }
561
562 /* The DW field in a X form instruction when the field is split
563 into separate D and DX fields. */
564
565 static uint64_t
566 insert_dw (uint64_t insn,
567 int64_t value,
568 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
569 const char **errmsg ATTRIBUTE_UNUSED)
570 {
571 /* DW offsets must be in the range [-512, -8] and be a multiple of 8. */
572 if (value < -512
573 || value > -8
574 || (value & 0x7) != 0)
575 *errmsg = _("invalid offset: must be in the range [-512, -8] "
576 "and be a multiple of 8");
577
578 return insn | ((value & 0xf8) << 18) | ((value >> 8) & 1);
579 }
580
581 static int64_t
582 extract_dw (uint64_t insn,
583 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
584 int *invalid ATTRIBUTE_UNUSED)
585 {
586 int64_t dw = ((insn & 1) << 8) | ((insn >> 18) & 0xf8);
587 return dw - 512;
588 }
589
590 /* The D field in a DX form instruction when the field is split
591 into separate D0, D1 and D2 fields. */
592
593 static uint64_t
594 insert_dxd (uint64_t insn,
595 int64_t value,
596 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
597 const char **errmsg ATTRIBUTE_UNUSED)
598 {
599 return insn | (value & 0xffc1) | ((value & 0x3e) << 15);
600 }
601
602 static int64_t
603 extract_dxd (uint64_t insn,
604 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
605 int *invalid ATTRIBUTE_UNUSED)
606 {
607 uint64_t dxd = (insn & 0xffc1) | ((insn >> 15) & 0x3e);
608 return (dxd ^ 0x8000) - 0x8000;
609 }
610
611 static uint64_t
612 insert_dxdn (uint64_t insn,
613 int64_t value,
614 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
615 const char **errmsg ATTRIBUTE_UNUSED)
616 {
617 return insert_dxd (insn, -value, dialect, errmsg);
618 }
619
620 static int64_t
621 extract_dxdn (uint64_t insn,
622 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
623 int *invalid)
624 {
625 return -extract_dxd (insn, dialect, invalid);
626 }
627
628 /* The D field in a 64-bit D form prefix instruction when the field is split
629 into separate D0 and D1 fields. */
630
631 static uint64_t
632 insert_d34 (uint64_t insn,
633 int64_t value,
634 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
635 const char **errmsg ATTRIBUTE_UNUSED)
636 {
637 return insn | ((value & 0x3ffff0000ULL) << 16) | (value & 0xffff);
638 }
639
640 static int64_t
641 extract_d34 (uint64_t insn,
642 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
643 int *invalid ATTRIBUTE_UNUSED)
644 {
645 int64_t mask = 1ULL << 33;
646 int64_t value = ((insn >> 16) & 0x3ffff0000ULL) | (insn & 0xffff);
647 value = (value ^ mask) - mask;
648 return value;
649 }
650
651 /* The NSI34 field in an 8-byte D form prefix instruction. This is the same
652 as the SI34 field, only negated. The extraction function always marks it
653 as invalid, since we never want to recognize an instruction which uses
654 a field of this type. */
655
656 static uint64_t
657 insert_nsi34 (uint64_t insn,
658 int64_t value,
659 ppc_cpu_t dialect,
660 const char **errmsg)
661 {
662 return insert_d34 (insn, -value, dialect, errmsg);
663 }
664
665 static int64_t
666 extract_nsi34 (uint64_t insn,
667 ppc_cpu_t dialect,
668 int *invalid)
669 {
670 int64_t value = extract_d34 (insn, dialect, invalid);
671 *invalid = 1;
672 return -value;
673 }
674
675 /* The split IMM32 field in a vector splat insn. */
676
677 static uint64_t
678 insert_imm32 (uint64_t insn,
679 int64_t value,
680 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
681 const char **errmsg ATTRIBUTE_UNUSED)
682 {
683 return insn | ((value & 0xffff0000) << 16) | (value & 0xffff);
684 }
685
686 static int64_t
687 extract_imm32 (uint64_t insn,
688 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
689 int *invalid ATTRIBUTE_UNUSED)
690 {
691 return (insn & 0xffff) | ((insn >> 16) & 0xffff0000);
692 }
693
694 /* The R field in an 8-byte prefix instruction when there are restrictions
695 between R's value and the RA value (ie, they cannot both be non zero). */
696
697 static uint64_t
698 insert_pcrel (uint64_t insn,
699 int64_t value,
700 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
701 const char **errmsg)
702 {
703 value &= 0x1;
704 int64_t ra = (insn >> 16) & 0x1f;
705 if (ra != 0 && value != 0)
706 *errmsg = _("invalid R operand");
707
708 return insn | (value << 52);
709 }
710
711 static int64_t
712 extract_pcrel (uint64_t insn,
713 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
714 int *invalid)
715 {
716 /* If called with *invalid < 0 to return the value for missing
717 operands, *invalid will be the negative count of missing operands
718 including this one. Return a default value of 1 if the PRA0/PRAQ
719 operand was also omitted (ie. *invalid is -2). Return a default
720 value of 0 if the PRA0/PRAQ operand was not omitted
721 (ie. *invalid is -1). */
722 if (*invalid < 0)
723 return ~ *invalid & 1;
724
725 int64_t ra = (insn >> 16) & 0x1f;
726 int64_t pcrel = (insn >> 52) & 0x1;
727 if (ra != 0 && pcrel != 0)
728 *invalid = 1;
729
730 return pcrel;
731 }
732
733 /* Variant of extract_pcrel that sets invalid for R bit clear. Used
734 to disassemble "paddi rt,0,offset,1" as "pla rt,offset". */
735
736 static int64_t
737 extract_pcrel1 (uint64_t insn,
738 ppc_cpu_t dialect,
739 int *invalid)
740 {
741 int64_t pcrel = extract_pcrel (insn, dialect, invalid);
742 if (!pcrel)
743 *invalid = 1;
744 return pcrel;
745 }
746
747 /* FXM mask in mfcr and mtcrf instructions. */
748
749 static uint64_t
750 insert_fxm (uint64_t insn,
751 int64_t value,
752 ppc_cpu_t dialect,
753 const char **errmsg)
754 {
755 /* If we're handling the mfocrf and mtocrf insns ensure that exactly
756 one bit of the mask field is set. */
757 if ((insn & (1 << 20)) != 0)
758 {
759 if (value == 0 || (value & -value) != value)
760 {
761 *errmsg = _("invalid mask field");
762 value = 0;
763 }
764 }
765
766 /* If only one bit of the FXM field is set, we can use the new form
767 of the instruction, which is faster. Unlike the Power4 branch hint
768 encoding, this is not backward compatible. Do not generate the
769 new form unless -mpower4 has been given, or -many and the two
770 operand form of mfcr was used. */
771 else if (value > 0
772 && (value & -value) == value
773 && ((dialect & PPC_OPCODE_POWER4) != 0
774 || ((dialect & PPC_OPCODE_ANY) != 0
775 && (insn & (0x3ff << 1)) == 19 << 1)))
776 insn |= 1 << 20;
777
778 /* Any other value on mfcr is an error. */
779 else if ((insn & (0x3ff << 1)) == 19 << 1)
780 {
781 /* A value of -1 means we used the one operand form of
782 mfcr which is valid. */
783 if (value != -1)
784 *errmsg = _("invalid mfcr mask");
785 value = 0;
786 }
787
788 return insn | ((value & 0xff) << 12);
789 }
790
791 static int64_t
792 extract_fxm (uint64_t insn,
793 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
794 int *invalid)
795 {
796 /* Return a value of -1 for a missing optional operand, which is
797 used as a flag by insert_fxm. */
798 if (*invalid < 0)
799 return -1;
800
801 int64_t mask = (insn >> 12) & 0xff;
802 /* Is this a Power4 insn? */
803 if ((insn & (1 << 20)) != 0)
804 {
805 /* Exactly one bit of MASK should be set. */
806 if (mask == 0 || (mask & -mask) != mask)
807 *invalid = 1;
808 }
809
810 /* Check that non-power4 form of mfcr has a zero MASK. */
811 else if ((insn & (0x3ff << 1)) == 19 << 1)
812 {
813 if (mask != 0)
814 *invalid = 1;
815 else
816 mask = -1;
817 }
818
819 return mask;
820 }
821
822 /* L field in the paste. instruction. */
823
824 static uint64_t
825 insert_l1opt (uint64_t insn,
826 int64_t value,
827 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
828 const char **errmsg ATTRIBUTE_UNUSED)
829 {
830 return insn | ((value & 1) << 21);
831 }
832
833 static int64_t
834 extract_l1opt (uint64_t insn,
835 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
836 int *invalid)
837 {
838 /* Return a value of 1 for a missing optional operand. */
839 if (*invalid < 0)
840 return 1;
841
842 return (insn >> 21) & 1;
843 }
844
845 static uint64_t
846 insert_li20 (uint64_t insn,
847 int64_t value,
848 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
849 const char **errmsg ATTRIBUTE_UNUSED)
850 {
851 return (insn
852 | ((value & 0xf0000) >> 5)
853 | ((value & 0x0f800) << 5)
854 | (value & 0x7ff));
855 }
856
857 static int64_t
858 extract_li20 (uint64_t insn,
859 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
860 int *invalid ATTRIBUTE_UNUSED)
861 {
862 return ((((insn << 5) & 0xf0000)
863 | ((insn >> 5) & 0xf800)
864 | (insn & 0x7ff)) ^ 0x80000) - 0x80000;
865 }
866
867 /* The 2-bit/3-bit L or 2-bit WC field in a SYNC, DCBF or WAIT instruction.
868 For SYNC, some L values are reserved:
869 * Values 6 and 7 are reserved on newer server cpus.
870 * Value 3 is reserved on all server cpus.
871 * Value 2 is reserved on all other cpus.
872 For DCBF, some L values are reserved:
873 * Values 2, 5 and 7 are reserved on all cpus.
874 For WAIT, some WC values are reserved:
875 * Value 3 is reserved on all server cpus.
876 * Values 1 and 2 are reserved on older server cpus. */
877
878 static uint64_t
879 insert_ls (uint64_t insn,
880 int64_t value,
881 ppc_cpu_t dialect,
882 const char **errmsg)
883 {
884 int64_t mask;
885
886 if (((insn >> 1) & 0x3ff) == 598)
887 {
888 /* For SYNC, some L values are illegal. */
889 mask = (dialect & PPC_OPCODE_POWER10) ? 0x7 : 0x3;
890
891 /* If the value is within range, check for other illegal values. */
892 if ((value & mask) == value)
893 switch (value)
894 {
895 case 2:
896 if (dialect & PPC_OPCODE_POWER4)
897 break;
898 /* Fall through. */
899 case 3:
900 case 6:
901 case 7:
902 *errmsg = _("illegal L operand value");
903 break;
904 default:
905 break;
906 }
907 }
908 else if (((insn >> 1) & 0x3ff) == 86)
909 {
910 /* For DCBF, some L values are illegal. */
911 mask = (dialect & PPC_OPCODE_POWER10) ? 0x7 : 0x3;
912
913 /* If the value is within range, check for other illegal values. */
914 if ((value & mask) == value)
915 switch (value)
916 {
917 case 2:
918 case 5:
919 case 7:
920 *errmsg = _("illegal L operand value");
921 break;
922 default:
923 break;
924 }
925 }
926 else
927 {
928 /* For WAIT, some WC values are illegal. */
929 mask = 0x3;
930
931 /* If the value is within range, check for other illegal values. */
932 if ((dialect & PPC_OPCODE_A2) == 0
933 && (dialect & PPC_OPCODE_E500MC) == 0
934 && (value & mask) == value)
935 switch (value)
936 {
937 case 1:
938 case 2:
939 if (dialect & PPC_OPCODE_POWER10)
940 break;
941 /* Fall through. */
942 case 3:
943 *errmsg = _("illegal WC operand value");
944 break;
945 default:
946 break;
947 }
948 }
949
950 return insn | ((value & mask) << 21);
951 }
952
953 static int64_t
954 extract_ls (uint64_t insn,
955 ppc_cpu_t dialect,
956 int *invalid)
957 {
958 uint64_t value;
959
960 /* Missing optional operands have a value of zero. */
961 if (*invalid < 0)
962 return 0;
963
964 if (((insn >> 1) & 0x3ff) == 598)
965 {
966 /* For SYNC, some L values are illegal. */
967 int64_t mask = (dialect & PPC_OPCODE_POWER10) ? 0x7 : 0x3;
968
969 value = (insn >> 21) & mask;
970 switch (value)
971 {
972 case 2:
973 if (dialect & PPC_OPCODE_POWER4)
974 break;
975 /* Fall through. */
976 case 3:
977 case 6:
978 case 7:
979 *invalid = 1;
980 break;
981 default:
982 break;
983 }
984 }
985 else if (((insn >> 1) & 0x3ff) == 86)
986 {
987 /* For DCBF, some L values are illegal. */
988 int64_t mask = (dialect & PPC_OPCODE_POWER10) ? 0x7 : 0x3;
989
990 value = (insn >> 21) & mask;
991 switch (value)
992 {
993 case 2:
994 case 5:
995 case 7:
996 *invalid = 1;
997 break;
998 default:
999 break;
1000 }
1001 }
1002 else
1003 {
1004 /* For WAIT, some WC values are illegal. */
1005 value = (insn >> 21) & 0x3;
1006 if ((dialect & PPC_OPCODE_A2) == 0
1007 && (dialect & PPC_OPCODE_E500MC) == 0)
1008 switch (value)
1009 {
1010 case 1:
1011 case 2:
1012 if (dialect & PPC_OPCODE_POWER10)
1013 break;
1014 /* Fall through. */
1015 case 3:
1016 *invalid = 1;
1017 break;
1018 default:
1019 break;
1020 }
1021 }
1022
1023 return value;
1024 }
1025
1026 /* The 4-bit E field in a sync instruction that accepts 2 operands.
1027 If ESYNC is non-zero, then the L field must be either 0 or 1 and
1028 the complement of ESYNC-bit2. */
1029
1030 static uint64_t
1031 insert_esync (uint64_t insn,
1032 int64_t value,
1033 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1034 const char **errmsg)
1035 {
1036 uint64_t ls = (insn >> 21) & 0x03;
1037
1038 if (value != 0
1039 && ((~value >> 1) & 0x1) != ls)
1040 *errmsg = _("incompatible L operand value");
1041
1042 return insn | ((value & 0xf) << 16);
1043 }
1044
1045 static int64_t
1046 extract_esync (uint64_t insn,
1047 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1048 int *invalid)
1049 {
1050 /* Missing optional operands have a value of zero. */
1051 if (*invalid < 0)
1052 return 0;
1053
1054 uint64_t ls = (insn >> 21) & 0x3;
1055 uint64_t value = (insn >> 16) & 0xf;
1056 if (value != 0
1057 && ((~value >> 1) & 0x1) != ls)
1058 *invalid = 1;
1059 return value;
1060 }
1061
1062 /* The n operand of clrrwi, which sets the ME field to 31 - n. */
1063
1064 static uint64_t
1065 insert_crwn (uint64_t insn,
1066 int64_t value,
1067 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1068 const char **errmsg ATTRIBUTE_UNUSED)
1069 {
1070 return insn | ((~value & 0x1f) << 1);
1071 }
1072
1073 static int64_t
1074 extract_crwn (uint64_t insn,
1075 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1076 int *invalid ATTRIBUTE_UNUSED)
1077 {
1078 return ~(insn >> 1) & 0x1f;
1079 }
1080
1081 /* The n operand of extlwi, which sets the ME field to n - 1. */
1082
1083 static uint64_t
1084 insert_elwn (uint64_t insn,
1085 int64_t value,
1086 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1087 const char **errmsg ATTRIBUTE_UNUSED)
1088 {
1089 return insn | (((value - 1) & 0x1f) << 1);
1090 }
1091
1092 static int64_t
1093 extract_elwn (uint64_t insn,
1094 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1095 int *invalid ATTRIBUTE_UNUSED)
1096 {
1097 return ((insn >> 1) & 0x1f) + 1;
1098 }
1099
1100 /* The n operand of extrwi, sets MB = 32 - n. */
1101
1102 static uint64_t
1103 insert_erwn (uint64_t insn,
1104 int64_t value,
1105 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1106 const char **errmsg ATTRIBUTE_UNUSED)
1107 {
1108 return insn | ((-value & 0x1f) << 6);
1109 }
1110
1111 static int64_t
1112 extract_erwn (uint64_t insn,
1113 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1114 int *invalid ATTRIBUTE_UNUSED)
1115 {
1116 return (~(insn >> 6) & 0x1f) + 1;
1117 }
1118
1119 /* The b operand of extrwi, sets SH = b + n. */
1120
1121 static uint64_t
1122 insert_erwb (uint64_t insn,
1123 int64_t value,
1124 ppc_cpu_t dialect,
1125 const char **errmsg ATTRIBUTE_UNUSED)
1126 {
1127 int64_t n = extract_erwn (insn, dialect, NULL);
1128 return insn | (((n + value) & 0x1f) << 11);
1129 }
1130
1131 static int64_t
1132 extract_erwb (uint64_t insn,
1133 ppc_cpu_t dialect,
1134 int *invalid ATTRIBUTE_UNUSED)
1135 {
1136 int64_t n = extract_erwn (insn, dialect, NULL);
1137 return ((insn >> 11) - n) & 0x1f;
1138 }
1139
1140 /* The n and b operands of clrlslwi. */
1141
1142 static uint64_t
1143 insert_cslwn (uint64_t insn,
1144 int64_t value,
1145 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1146 const char **errmsg ATTRIBUTE_UNUSED)
1147 {
1148 uint64_t mb = 0x1f << 6;
1149 int64_t b = (insn >> 6) & 0x1f;
1150 return ((insn & ~mb) | ((value & 0x1f) << 11) | (((b - value) & 0x1f) << 6)
1151 | ((~value & 0x1f) << 1));
1152 }
1153
1154 static int64_t
1155 extract_cslwb (uint64_t insn,
1156 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1157 int *invalid)
1158 {
1159 int64_t sh = (insn >> 11) & 0x1f;
1160 int64_t mb = (insn >> 6) & 0x1f;
1161 int64_t me = (insn >> 1) & 0x1f;
1162 if (sh != 31 - me)
1163 *invalid = 1;
1164 return (mb + sh) & 0x1f;
1165 }
1166
1167 /* The n and b operands of inslwi. */
1168
1169 static uint64_t
1170 insert_ilwb (uint64_t insn,
1171 int64_t value,
1172 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1173 const char **errmsg ATTRIBUTE_UNUSED)
1174 {
1175 uint64_t me = 0x1f << 1;
1176 int64_t n = (insn >> 1) & 0x1f;
1177 return ((insn & ~me) | ((-value & 0x1f) << 11) | ((value & 0x1f) << 6)
1178 | (((value + n - 1) & 0x1f) << 1));
1179 }
1180
1181 static int64_t
1182 extract_ilwn (uint64_t insn,
1183 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1184 int *invalid)
1185 {
1186 int64_t sh = (insn >> 11) & 0x1f;
1187 int64_t mb = (insn >> 6) & 0x1f;
1188 int64_t me = (insn >> 1) & 0x1f;
1189 if (((sh + mb) & 0x1f) != 0)
1190 *invalid = 1;
1191 return ((me - mb) & 0x1f) + 1;
1192 }
1193
1194 /* The n and b operands of insrwi. */
1195
1196 static uint64_t
1197 insert_irwb (uint64_t insn,
1198 int64_t value,
1199 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1200 const char **errmsg ATTRIBUTE_UNUSED)
1201 {
1202 uint64_t me = 0x1f << 1;
1203 int64_t n = (insn >> 1) & 0x1f;
1204 return ((insn & ~me) | ((-(value + n) & 0x1f) << 11) | ((value & 0x1f) << 6)
1205 | (((value + n - 1) & 0x1f) << 1));
1206 }
1207
1208 static int64_t
1209 extract_irwn (uint64_t insn,
1210 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1211 int *invalid)
1212 {
1213 int64_t sh = (insn >> 11) & 0x1f;
1214 int64_t mb = (insn >> 6) & 0x1f;
1215 int64_t me = (insn >> 1) & 0x1f;
1216 if (((sh + me + 1) & 0x1f) != 0)
1217 *invalid = 1;
1218 return ((me - mb) & 0x1f) + 1;
1219 }
1220
1221 /* The MB and ME fields in an M form instruction expressed as a single
1222 operand which is itself a bitmask. The extraction function always
1223 marks it as invalid, since we never want to recognize an
1224 instruction which uses a field of this type. */
1225
1226 static uint64_t
1227 insert_mbe (uint64_t insn,
1228 int64_t value,
1229 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1230 const char **errmsg)
1231 {
1232 uint64_t uval, mask;
1233 long mb, me, mx, count, last;
1234
1235 uval = value;
1236
1237 if (uval == 0)
1238 {
1239 *errmsg = _("illegal bitmask");
1240 return insn;
1241 }
1242
1243 mb = 0;
1244 me = 32;
1245 if ((uval & 1) != 0)
1246 last = 1;
1247 else
1248 last = 0;
1249 count = 0;
1250
1251 /* mb: location of last 0->1 transition */
1252 /* me: location of last 1->0 transition */
1253 /* count: # transitions */
1254
1255 for (mx = 0, mask = (uint64_t) 1 << 31; mx < 32; ++mx, mask >>= 1)
1256 {
1257 if ((uval & mask) && !last)
1258 {
1259 ++count;
1260 mb = mx;
1261 last = 1;
1262 }
1263 else if (!(uval & mask) && last)
1264 {
1265 ++count;
1266 me = mx;
1267 last = 0;
1268 }
1269 }
1270 if (me == 0)
1271 me = 32;
1272
1273 if (count != 2 && (count != 0 || ! last))
1274 *errmsg = _("illegal bitmask");
1275
1276 return insn | (mb << 6) | ((me - 1) << 1);
1277 }
1278
1279 static int64_t
1280 extract_mbe (uint64_t insn,
1281 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1282 int *invalid)
1283 {
1284 int64_t ret;
1285 long mb, me;
1286 long i;
1287
1288 *invalid = 1;
1289
1290 mb = (insn >> 6) & 0x1f;
1291 me = (insn >> 1) & 0x1f;
1292 if (mb < me + 1)
1293 {
1294 ret = 0;
1295 for (i = mb; i <= me; i++)
1296 ret |= (uint64_t) 1 << (31 - i);
1297 }
1298 else if (mb == me + 1)
1299 ret = ~0;
1300 else /* (mb > me + 1) */
1301 {
1302 ret = ~0;
1303 for (i = me + 1; i < mb; i++)
1304 ret &= ~((uint64_t) 1 << (31 - i));
1305 }
1306 return ret;
1307 }
1308
1309 /* The MB or ME field in an MD or MDS form instruction. The high bit
1310 is wrapped to the low end. */
1311
1312 static uint64_t
1313 insert_mb6 (uint64_t insn,
1314 int64_t value,
1315 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1316 const char **errmsg ATTRIBUTE_UNUSED)
1317 {
1318 return insn | ((value & 0x1f) << 6) | (value & 0x20);
1319 }
1320
1321 static int64_t
1322 extract_mb6 (uint64_t insn,
1323 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1324 int *invalid ATTRIBUTE_UNUSED)
1325 {
1326 return ((insn >> 6) & 0x1f) | (insn & 0x20);
1327 }
1328
1329 /* The n operand of extrdi, which sets MB field. */
1330
1331 static uint64_t
1332 insert_erdn (uint64_t insn,
1333 int64_t value,
1334 ppc_cpu_t dialect,
1335 const char **errmsg)
1336 {
1337 return insert_mb6 (insn, -value, dialect, errmsg);
1338 }
1339
1340 static int64_t
1341 extract_erdn (uint64_t insn,
1342 ppc_cpu_t dialect,
1343 int *invalid)
1344 {
1345 return (~extract_mb6 (insn, dialect, invalid) & 63) + 1;
1346 }
1347
1348 /* The n operand of extldi, which sets ME field. */
1349
1350 static uint64_t
1351 insert_eldn (uint64_t insn,
1352 int64_t value,
1353 ppc_cpu_t dialect,
1354 const char **errmsg)
1355 {
1356 return insert_mb6 (insn, value - 1, dialect, errmsg);
1357 }
1358
1359 static int64_t
1360 extract_eldn (uint64_t insn,
1361 ppc_cpu_t dialect,
1362 int *invalid)
1363 {
1364 return extract_mb6 (insn, dialect, invalid) + 1;
1365 }
1366
1367 /* The n operand of clrrdi, which set ME field. */
1368
1369 static uint64_t
1370 insert_crdn (uint64_t insn,
1371 int64_t value,
1372 ppc_cpu_t dialect,
1373 const char **errmsg)
1374 {
1375 return insert_mb6 (insn, 63 - value, dialect, errmsg);
1376 }
1377
1378 static int64_t
1379 extract_crdn (uint64_t insn,
1380 ppc_cpu_t dialect,
1381 int *invalid)
1382 {
1383 return 63 - extract_mb6 (insn, dialect, invalid);
1384 }
1385
1386 /* The NB field in an X form instruction. The value 32 is stored as
1387 0. */
1388
1389 static int64_t
1390 extract_nb (uint64_t insn,
1391 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1392 int *invalid ATTRIBUTE_UNUSED)
1393 {
1394 int64_t ret;
1395
1396 ret = (insn >> 11) & 0x1f;
1397 if (ret == 0)
1398 ret = 32;
1399 return ret;
1400 }
1401
1402 /* The NB field in an lswi instruction, which has special value
1403 restrictions. The value 32 is stored as 0. */
1404
1405 static uint64_t
1406 insert_nbi (uint64_t insn,
1407 int64_t value,
1408 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1409 const char **errmsg ATTRIBUTE_UNUSED)
1410 {
1411 int64_t rtvalue = (insn >> 21) & 0x1f;
1412 int64_t ravalue = (insn >> 16) & 0x1f;
1413
1414 if (value == 0)
1415 value = 32;
1416 if (rtvalue + (value + 3) / 4 > (rtvalue > ravalue ? ravalue + 32
1417 : ravalue))
1418 *errmsg = _("address register in load range");
1419 return insn | ((value & 0x1f) << 11);
1420 }
1421
1422 /* The NSI field in a D form instruction. This is the same as the SI
1423 field, only negated. The extraction function always marks it as
1424 invalid, since we never want to recognize an instruction which uses
1425 a field of this type. */
1426
1427 static uint64_t
1428 insert_nsi (uint64_t insn,
1429 int64_t value,
1430 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1431 const char **errmsg ATTRIBUTE_UNUSED)
1432 {
1433 return insn | (-value & 0xffff);
1434 }
1435
1436 static int64_t
1437 extract_nsi (uint64_t insn,
1438 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1439 int *invalid)
1440 {
1441 *invalid = 1;
1442 return -(((insn & 0xffff) ^ 0x8000) - 0x8000);
1443 }
1444
1445 /* The 2-bit SC field in a SYNC or PL field in a WAIT instruction.
1446 For WAIT, some PL values are reserved:
1447 * Values 1, 2 and 3 are reserved. */
1448
1449 static uint64_t
1450 insert_pl (uint64_t insn,
1451 int64_t value,
1452 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1453 const char **errmsg)
1454 {
1455 /* For WAIT, some PL values are illegal. */
1456 if (((insn >> 1) & 0x3ff) == 30
1457 && value != 0)
1458 *errmsg = _("illegal PL operand value");
1459 return insn | ((value & 0x3) << 16);
1460 }
1461
1462 static int64_t
1463 extract_pl (uint64_t insn,
1464 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1465 int *invalid)
1466 {
1467 /* Missing optional operands have a value of zero. */
1468 if (*invalid < 0)
1469 return 0;
1470
1471 uint64_t value = (insn >> 16) & 0x3;
1472
1473 /* For WAIT, some PL values are illegal. */
1474 if (((insn >> 1) & 0x3ff) == 30
1475 && value != 0)
1476 *invalid = 1;
1477 return value;
1478 }
1479
1480 /* The 2-bit P field in a MMA XX2-form instruction. This is split. */
1481
1482 static uint64_t
1483 insert_p2 (uint64_t insn,
1484 int64_t value,
1485 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1486 const char **errmsg ATTRIBUTE_UNUSED)
1487 {
1488 return insn | ((value & 0x2) << 15) | ((value & 0x1) << 11);
1489 }
1490
1491 static int64_t
1492 extract_p2 (uint64_t insn,
1493 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1494 int *invalid ATTRIBUTE_UNUSED)
1495 {
1496 uint64_t value = ((insn >> 15) & 0x2) | ((insn >> 11) & 0x1);
1497 return value;
1498 }
1499
1500 /* The RA field in a D or X form instruction which is an updating
1501 load, which means that the RA field may not be zero and may not
1502 equal the RT field. */
1503
1504 static uint64_t
1505 insert_ral (uint64_t insn,
1506 int64_t value,
1507 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1508 const char **errmsg)
1509 {
1510 if (value == 0
1511 || (uint64_t) value == ((insn >> 21) & 0x1f))
1512 *errmsg = "invalid register operand when updating";
1513 return insn | ((value & 0x1f) << 16);
1514 }
1515
1516 static int64_t
1517 extract_ral (uint64_t insn,
1518 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1519 int *invalid)
1520 {
1521 int64_t rtvalue = (insn >> 21) & 0x1f;
1522 int64_t ravalue = (insn >> 16) & 0x1f;
1523
1524 if (rtvalue == ravalue || ravalue == 0)
1525 *invalid = 1;
1526 return ravalue;
1527 }
1528
1529 /* The RA field in an lmw instruction, which has special value
1530 restrictions. */
1531
1532 static uint64_t
1533 insert_ram (uint64_t insn,
1534 int64_t value,
1535 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1536 const char **errmsg)
1537 {
1538 if ((uint64_t) value >= ((insn >> 21) & 0x1f))
1539 *errmsg = _("index register in load range");
1540 return insn | ((value & 0x1f) << 16);
1541 }
1542
1543 static int64_t
1544 extract_ram (uint64_t insn,
1545 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1546 int *invalid)
1547 {
1548 uint64_t rtvalue = (insn >> 21) & 0x1f;
1549 uint64_t ravalue = (insn >> 16) & 0x1f;
1550
1551 if (ravalue >= rtvalue)
1552 *invalid = 1;
1553 return ravalue;
1554 }
1555
1556 /* The RA field in the DQ form lq or an lswx instruction, which have special
1557 value restrictions. */
1558
1559 static uint64_t
1560 insert_raq (uint64_t insn,
1561 int64_t value,
1562 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1563 const char **errmsg)
1564 {
1565 int64_t rtvalue = (insn >> 21) & 0x1f;
1566
1567 if (value == rtvalue)
1568 *errmsg = _("source and target register operands must be different");
1569 return insn | ((value & 0x1f) << 16);
1570 }
1571
1572 static int64_t
1573 extract_raq (uint64_t insn,
1574 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1575 int *invalid)
1576 {
1577 /* Missing optional operands have a value of zero. */
1578 if (*invalid < 0)
1579 return 0;
1580
1581 uint64_t rtvalue = (insn >> 21) & 0x1f;
1582 uint64_t ravalue = (insn >> 16) & 0x1f;
1583 if (ravalue == rtvalue)
1584 *invalid = 1;
1585 return ravalue;
1586 }
1587
1588 /* The RA field in a D or X form instruction which is an updating
1589 store or an updating floating point load, which means that the RA
1590 field may not be zero. */
1591
1592 static uint64_t
1593 insert_ras (uint64_t insn,
1594 int64_t value,
1595 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1596 const char **errmsg)
1597 {
1598 if (value == 0)
1599 *errmsg = _("invalid register operand when updating");
1600 return insn | ((value & 0x1f) << 16);
1601 }
1602
1603 static int64_t
1604 extract_ras (uint64_t insn,
1605 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1606 int *invalid)
1607 {
1608 uint64_t ravalue = (insn >> 16) & 0x1f;
1609
1610 if (ravalue == 0)
1611 *invalid = 1;
1612 return ravalue;
1613 }
1614
1615 /* The RS and RB fields in an X form instruction when they must be the same.
1616 This is used for extended mnemonics like mr. The extraction function
1617 enforces that the fields are the same. */
1618
1619 static uint64_t
1620 insert_rsb (uint64_t insn,
1621 int64_t value,
1622 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1623 const char **errmsg ATTRIBUTE_UNUSED)
1624 {
1625 value &= 0x1f;
1626 return insn | (value << 21) | (value << 11);
1627 }
1628
1629 static int64_t
1630 extract_rsb (uint64_t insn,
1631 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1632 int *invalid)
1633 {
1634 int64_t rs = (insn >> 21) & 0x1f;
1635 int64_t rb = (insn >> 11) & 0x1f;
1636
1637 if (rs != rb)
1638 *invalid = 1;
1639 return rs;
1640 }
1641
1642 /* The RB field in an lswx instruction, which has special value
1643 restrictions. */
1644
1645 static uint64_t
1646 insert_rbx (uint64_t insn,
1647 int64_t value,
1648 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1649 const char **errmsg)
1650 {
1651 int64_t rtvalue = (insn >> 21) & 0x1f;
1652
1653 if (value == rtvalue)
1654 *errmsg = _("source and target register operands must be different");
1655 return insn | ((value & 0x1f) << 11);
1656 }
1657
1658 static int64_t
1659 extract_rbx (uint64_t insn,
1660 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1661 int *invalid)
1662 {
1663 uint64_t rtvalue = (insn >> 21) & 0x1f;
1664 uint64_t rbvalue = (insn >> 11) & 0x1f;
1665
1666 if (rbvalue == rtvalue)
1667 *invalid = 1;
1668 return rbvalue;
1669 }
1670
1671 /* The SCI8 field is made up of SCL and {U,N}I8 fields. */
1672 static uint64_t
1673 insert_sci8 (uint64_t insn,
1674 int64_t value,
1675 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1676 const char **errmsg)
1677 {
1678 uint64_t fill_scale = 0;
1679 uint64_t ui8 = value;
1680
1681 if ((ui8 & 0xffffff00) == 0)
1682 ;
1683 else if ((ui8 & 0xffffff00) == 0xffffff00)
1684 fill_scale = 0x400;
1685 else if ((ui8 & 0xffff00ff) == 0)
1686 {
1687 fill_scale = 1 << 8;
1688 ui8 >>= 8;
1689 }
1690 else if ((ui8 & 0xffff00ff) == 0xffff00ff)
1691 {
1692 fill_scale = 0x400 | (1 << 8);
1693 ui8 >>= 8;
1694 }
1695 else if ((ui8 & 0xff00ffff) == 0)
1696 {
1697 fill_scale = 2 << 8;
1698 ui8 >>= 16;
1699 }
1700 else if ((ui8 & 0xff00ffff) == 0xff00ffff)
1701 {
1702 fill_scale = 0x400 | (2 << 8);
1703 ui8 >>= 16;
1704 }
1705 else if ((ui8 & 0x00ffffff) == 0)
1706 {
1707 fill_scale = 3 << 8;
1708 ui8 >>= 24;
1709 }
1710 else if ((ui8 & 0x00ffffff) == 0x00ffffff)
1711 {
1712 fill_scale = 0x400 | (3 << 8);
1713 ui8 >>= 24;
1714 }
1715 else
1716 {
1717 *errmsg = _("illegal immediate value");
1718 ui8 = 0;
1719 }
1720
1721 return insn | fill_scale | (ui8 & 0xff);
1722 }
1723
1724 static int64_t
1725 extract_sci8 (uint64_t insn,
1726 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1727 int *invalid ATTRIBUTE_UNUSED)
1728 {
1729 int64_t fill = insn & 0x400;
1730 int64_t scale_factor = (insn & 0x300) >> 5;
1731 int64_t value = (insn & 0xff) << scale_factor;
1732
1733 if (fill != 0)
1734 value |= ~((int64_t) 0xff << scale_factor);
1735 return value;
1736 }
1737
1738 static uint64_t
1739 insert_sci8n (uint64_t insn,
1740 int64_t value,
1741 ppc_cpu_t dialect,
1742 const char **errmsg)
1743 {
1744 return insert_sci8 (insn, -value, dialect, errmsg);
1745 }
1746
1747 static int64_t
1748 extract_sci8n (uint64_t insn,
1749 ppc_cpu_t dialect,
1750 int *invalid)
1751 {
1752 return -extract_sci8 (insn, dialect, invalid);
1753 }
1754
1755 static uint64_t
1756 insert_oimm (uint64_t insn,
1757 int64_t value,
1758 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1759 const char **errmsg ATTRIBUTE_UNUSED)
1760 {
1761 return insn | (((value - 1) & 0x1f) << 4);
1762 }
1763
1764 static int64_t
1765 extract_oimm (uint64_t insn,
1766 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1767 int *invalid ATTRIBUTE_UNUSED)
1768 {
1769 return ((insn >> 4) & 0x1f) + 1;
1770 }
1771
1772 /* The n operand of rotrwi, sets SH = 32 - n. */
1773
1774 static uint64_t
1775 insert_rrwn (uint64_t insn,
1776 int64_t value,
1777 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1778 const char **errmsg ATTRIBUTE_UNUSED)
1779 {
1780 return insn | ((-value & 0x1f) << 11);
1781 }
1782
1783 static int64_t
1784 extract_rrwn (uint64_t insn,
1785 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1786 int *invalid ATTRIBUTE_UNUSED)
1787 {
1788 return 31 & -(insn >> 11);
1789 }
1790
1791 /* The n operand of slwi, sets SH = n and ME = 31 - n. */
1792
1793 static uint64_t
1794 insert_slwn (uint64_t insn,
1795 int64_t value,
1796 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1797 const char **errmsg ATTRIBUTE_UNUSED)
1798 {
1799 return insn | ((value & 0x1f) << 11) | ((~value & 0x1f) << 1);
1800 }
1801
1802 static int64_t
1803 extract_slwn (uint64_t insn,
1804 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1805 int *invalid)
1806 {
1807 int64_t sh = (insn >> 11) & 0x1f;
1808 int64_t nme = ~(insn >> 1) & 0x1f;
1809 if (sh != nme)
1810 *invalid = 1;
1811 return sh;
1812 }
1813
1814 /* The n operand of srwi, sets SH = 32 - n and MB = n. */
1815
1816 static uint64_t
1817 insert_srwn (uint64_t insn,
1818 int64_t value,
1819 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1820 const char **errmsg ATTRIBUTE_UNUSED)
1821 {
1822 return insn | ((-value & 0x1f) << 11) | ((value & 0x1f) << 6);
1823 }
1824
1825 static int64_t
1826 extract_srwn (uint64_t insn,
1827 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1828 int *invalid)
1829 {
1830 int64_t nsh = -(insn >> 11) & 0x1f;
1831 int64_t mb = (insn >> 6) & 0x1f;
1832 if (nsh != mb)
1833 *invalid = 1;
1834 return nsh;
1835 }
1836
1837 /* The SH field in an MD form instruction. This is split. */
1838
1839 static uint64_t
1840 insert_sh6 (uint64_t insn,
1841 int64_t value,
1842 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1843 const char **errmsg ATTRIBUTE_UNUSED)
1844 {
1845 return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
1846 }
1847
1848 static int64_t
1849 extract_sh6 (uint64_t insn,
1850 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1851 int *invalid ATTRIBUTE_UNUSED)
1852 {
1853 return ((insn >> 11) & 0x1f) | ((insn << 4) & 0x20);
1854 }
1855
1856 /* The n operand of rotrdi, which writes to SH field. */
1857
1858 static uint64_t
1859 insert_rrdn (uint64_t insn,
1860 int64_t value,
1861 ppc_cpu_t dialect,
1862 const char **errmsg)
1863 {
1864 return insert_sh6 (insn, -value, dialect, errmsg);
1865 }
1866
1867 static int64_t
1868 extract_rrdn (uint64_t insn,
1869 ppc_cpu_t dialect,
1870 int *invalid)
1871 {
1872 return -extract_sh6 (insn, dialect, invalid) & 63;
1873 }
1874
1875 /* The n operand of sldi, which writes to SH and ME fields. */
1876
1877 static uint64_t
1878 insert_sldn (uint64_t insn,
1879 int64_t value,
1880 ppc_cpu_t dialect,
1881 const char **errmsg)
1882 {
1883 insn = insert_sh6 (insn, value, dialect, errmsg);
1884 return insert_crdn (insn, value, dialect, errmsg);
1885 }
1886
1887 static int64_t
1888 extract_sldn (uint64_t insn,
1889 ppc_cpu_t dialect,
1890 int *invalid)
1891 {
1892 int64_t sh = extract_sh6 (insn, dialect, invalid);
1893 int64_t me = extract_crdn (insn, dialect, invalid);
1894 if (me != sh)
1895 *invalid = 1;
1896 return sh;
1897 }
1898
1899 /* The n operand of srdi, which writes to SH and MB fields. */
1900
1901 static uint64_t
1902 insert_srdn (uint64_t insn,
1903 int64_t value,
1904 ppc_cpu_t dialect,
1905 const char **errmsg)
1906 {
1907 insn = insert_rrdn (insn, value, dialect, errmsg);
1908 return insert_mb6 (insn, value, dialect, errmsg);
1909 }
1910
1911 static int64_t
1912 extract_srdn (uint64_t insn,
1913 ppc_cpu_t dialect,
1914 int *invalid)
1915 {
1916 int64_t sh = extract_rrdn (insn, dialect, invalid);
1917 int64_t mb = extract_mb6 (insn, dialect, invalid);
1918 if (mb != sh)
1919 *invalid = 1;
1920 return sh;
1921 }
1922
1923 /* The b operand of extrdi, which sets SH field. */
1924
1925 static uint64_t
1926 insert_erdb (uint64_t insn,
1927 int64_t value,
1928 ppc_cpu_t dialect,
1929 const char **errmsg)
1930 {
1931 int64_t n = extract_erdn (insn, dialect, NULL);
1932 return insert_sh6 (insn, value + n, dialect, errmsg);
1933 }
1934
1935 static int64_t
1936 extract_erdb (uint64_t insn,
1937 ppc_cpu_t dialect,
1938 int *invalid)
1939 {
1940 int64_t sh = extract_sh6 (insn, dialect, invalid);
1941 int64_t n = extract_erdn (insn, dialect, invalid);
1942 return (sh - n) & 63;
1943 }
1944
1945 /* The b and n operands of clrlsldi. */
1946
1947 static uint64_t
1948 insert_csldn (uint64_t insn,
1949 int64_t value,
1950 ppc_cpu_t dialect,
1951 const char **errmsg)
1952 {
1953 uint64_t mb6 = 0x3f << 5;
1954 int64_t b = extract_mb6 (insn, dialect, NULL);
1955 insn = insert_mb6 (insn & ~mb6, b - value, dialect, errmsg);
1956 return insert_sh6 (insn, value, dialect, errmsg);
1957 }
1958
1959 static int64_t
1960 extract_csldb (uint64_t insn,
1961 ppc_cpu_t dialect,
1962 int *invalid)
1963 {
1964 int64_t sh = extract_sh6 (insn, dialect, invalid);
1965 int64_t mb = extract_mb6 (insn, dialect, invalid);
1966 return (mb + sh) & 63;
1967 }
1968
1969 /* The b and n operands of insrdi. */
1970
1971 static uint64_t
1972 insert_irdb (uint64_t insn,
1973 int64_t value,
1974 ppc_cpu_t dialect,
1975 const char **errmsg)
1976 {
1977 uint64_t sh6 = (0x1f << 11) | 2;
1978 int64_t n = extract_sh6 (insn, dialect, NULL);
1979 insn = insert_sh6 (insn & ~sh6, -(value + n), dialect, errmsg);
1980 return insert_mb6 (insn, value, dialect, errmsg);
1981 }
1982
1983 static int64_t
1984 extract_irdn (uint64_t insn,
1985 ppc_cpu_t dialect,
1986 int *invalid)
1987 {
1988 int64_t sh = extract_sh6 (insn, dialect, invalid);
1989 int64_t mb = extract_mb6 (insn, dialect, invalid);
1990 return (~(mb + sh) & 63) + 1;
1991 }
1992
1993 /* The SPR field in an XFX form instruction. This is flipped--the
1994 lower 5 bits are stored in the upper 5 and vice- versa. */
1995
1996 static uint64_t
1997 insert_spr (uint64_t insn,
1998 int64_t value,
1999 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2000 const char **errmsg ATTRIBUTE_UNUSED)
2001 {
2002 return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
2003 }
2004
2005 static int64_t
2006 extract_spr (uint64_t insn,
2007 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2008 int *invalid ATTRIBUTE_UNUSED)
2009 {
2010 return ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
2011 }
2012
2013 /* Some dialects have 8 [DI]BAT registers instead of the standard 4. */
2014 #define ALLOW8_BAT (PPC_OPCODE_750)
2015
2016 static uint64_t
2017 insert_sprbat (uint64_t insn,
2018 int64_t value,
2019 ppc_cpu_t dialect,
2020 const char **errmsg)
2021 {
2022 if ((uint64_t) value > 7
2023 || ((uint64_t) value > 3 && (dialect & ALLOW8_BAT) == 0))
2024 *errmsg = _("invalid bat number");
2025
2026 /* If this is [di]bat4..7 then use spr 560..575, otherwise 528..543. */
2027 if ((uint64_t) value > 3)
2028 value = ((value & 3) << 6) | 1;
2029 else
2030 value = value << 6;
2031
2032 return insn | (value << 11);
2033 }
2034
2035 static int64_t
2036 extract_sprbat (uint64_t insn,
2037 ppc_cpu_t dialect,
2038 int *invalid)
2039 {
2040 uint64_t val = (insn >> 17) & 0x3;
2041
2042 val = val + ((insn >> 9) & 0x4);
2043 if (val > 3 && (dialect & ALLOW8_BAT) == 0)
2044 *invalid = 1;
2045 return val;
2046 }
2047
2048 /* Some dialects have 8 SPRG registers instead of the standard 4. */
2049 #define ALLOW8_SPRG (PPC_OPCODE_BOOKE | PPC_OPCODE_405)
2050
2051 static uint64_t
2052 insert_sprg (uint64_t insn,
2053 int64_t value,
2054 ppc_cpu_t dialect,
2055 const char **errmsg)
2056 {
2057 if ((uint64_t) value > 7
2058 || ((uint64_t) value > 3 && (dialect & ALLOW8_SPRG) == 0))
2059 *errmsg = _("invalid sprg number");
2060
2061 /* If this is mfsprg4..7 then use spr 260..263 which can be read in
2062 user mode. Anything else must use spr 272..279. */
2063 if ((uint64_t) value <= 3 || (insn & 0x100) != 0)
2064 value |= 0x10;
2065
2066 return insn | ((value & 0x17) << 16);
2067 }
2068
2069 static int64_t
2070 extract_sprg (uint64_t insn,
2071 ppc_cpu_t dialect,
2072 int *invalid)
2073 {
2074 uint64_t val = (insn >> 16) & 0x1f;
2075
2076 /* mfsprg can use 260..263 and 272..279. mtsprg only uses spr 272..279
2077 If not BOOKE, 405 or VLE, then both use only 272..275. */
2078 if ((val - 0x10 > 3 && (dialect & ALLOW8_SPRG) == 0)
2079 || (val - 0x10 > 7 && (insn & 0x100) != 0)
2080 || val <= 3
2081 || (val & 8) != 0)
2082 *invalid = 1;
2083 return val & 7;
2084 }
2085
2086 /* The TBR field in an XFX instruction. This is just like SPR, but it
2087 is optional. */
2088
2089 static uint64_t
2090 insert_tbr (uint64_t insn,
2091 int64_t value,
2092 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2093 const char **errmsg)
2094 {
2095 if (value != 268 && value != 269)
2096 *errmsg = _("invalid tbr number");
2097 return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
2098 }
2099
2100 static int64_t
2101 extract_tbr (uint64_t insn,
2102 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2103 int *invalid)
2104 {
2105 /* Missing optional operands have a value of 268. */
2106 if (*invalid < 0)
2107 return 268;
2108
2109 int64_t ret = ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
2110 if (ret != 268 && ret != 269)
2111 *invalid = 1;
2112 return ret;
2113 }
2114
2115 /* The XT and XS fields in an XX1 or XX3 form instruction. This is split. */
2116
2117 static uint64_t
2118 insert_xt6 (uint64_t insn,
2119 int64_t value,
2120 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2121 const char **errmsg ATTRIBUTE_UNUSED)
2122 {
2123 return insn | ((value & 0x1f) << 21) | ((value & 0x20) >> 5);
2124 }
2125
2126 static int64_t
2127 extract_xt6 (uint64_t insn,
2128 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2129 int *invalid ATTRIBUTE_UNUSED)
2130 {
2131 return ((insn << 5) & 0x20) | ((insn >> 21) & 0x1f);
2132 }
2133
2134 /* The XT and XS fields in an DQ form VSX instruction. This is split. */
2135 static uint64_t
2136 insert_xtq6 (uint64_t insn,
2137 int64_t value,
2138 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2139 const char **errmsg ATTRIBUTE_UNUSED)
2140 {
2141 return insn | ((value & 0x1f) << 21) | ((value & 0x20) >> 2);
2142 }
2143
2144 static int64_t
2145 extract_xtq6 (uint64_t insn,
2146 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2147 int *invalid ATTRIBUTE_UNUSED)
2148 {
2149 return ((insn << 2) & 0x20) | ((insn >> 21) & 0x1f);
2150 }
2151
2152 /* The 5-bit XAp field in an XX3 form instruction. This is split. */
2153
2154 static uint64_t
2155 insert_xa5 (uint64_t insn,
2156 int64_t value,
2157 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2158 const char **errmsg ATTRIBUTE_UNUSED)
2159 {
2160 return insn | ((value & 0x1e) << 16) | ((value & 0x20) >> 3);
2161 }
2162
2163 static int64_t
2164 extract_xa5 (uint64_t insn,
2165 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2166 int *invalid ATTRIBUTE_UNUSED)
2167 {
2168 return ((insn << 3) & 0x20) | ((insn >> 16) & 0x1e);
2169 }
2170
2171 /* The XA field in an XX3 form instruction. This is split. */
2172
2173 static uint64_t
2174 insert_xa6 (uint64_t insn,
2175 int64_t value,
2176 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2177 const char **errmsg ATTRIBUTE_UNUSED)
2178 {
2179 return insn | ((value & 0x1f) << 16) | ((value & 0x20) >> 3);
2180 }
2181
2182 static int64_t
2183 extract_xa6 (uint64_t insn,
2184 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2185 int *invalid ATTRIBUTE_UNUSED)
2186 {
2187 return ((insn << 3) & 0x20) | ((insn >> 16) & 0x1f);
2188 }
2189
2190 /* The XA field in an MMA XX3 form instruction. This is split
2191 and must not overlap with the ACC operand. */
2192
2193 static uint64_t
2194 insert_xa6a (uint64_t insn,
2195 int64_t value,
2196 ppc_cpu_t dialect,
2197 const char **errmsg)
2198 {
2199 int64_t acc = (insn >> 23) & 0x7;
2200 /* Power10 doesn't allow VSRs to overlap ACCs in MMA instructions. */
2201 if ((dialect & PPC_OPCODE_FUTURE) == 0
2202 && (value >> 2) == acc)
2203 *errmsg = _("VSR overlaps ACC operand");
2204 return insert_xa6 (insn, value, dialect, errmsg);
2205 }
2206
2207 static int64_t
2208 extract_xa6a (uint64_t insn,
2209 ppc_cpu_t dialect,
2210 int *invalid)
2211 {
2212 int64_t acc = (insn >> 23) & 0x7;
2213 int64_t value = extract_xa6 (insn, dialect, invalid);
2214 /* Power10 doesn't allow VSRs to overlap ACCs in MMA instructions. */
2215 if ((dialect & PPC_OPCODE_FUTURE) == 0
2216 && (value >> 2) == acc)
2217 *invalid = 1;
2218 return value;
2219 }
2220
2221 /* The 5-bit XB field in an XX3 form instruction. This is split. */
2222
2223 static uint64_t
2224 insert_xb5 (uint64_t insn,
2225 int64_t value,
2226 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2227 const char **errmsg ATTRIBUTE_UNUSED)
2228 {
2229 return insn | ((value & 0x1e) << 11) | ((value & 0x20) >> 4);
2230 }
2231
2232 static int64_t
2233 extract_xb5 (uint64_t insn,
2234 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2235 int *invalid ATTRIBUTE_UNUSED)
2236 {
2237 return ((insn << 4) & 0x20) | ((insn >> 11) & 0x1e);
2238 }
2239 /* The XB field in an XX3 form instruction. This is split. */
2240
2241 static uint64_t
2242 insert_xb6 (uint64_t insn,
2243 int64_t value,
2244 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2245 const char **errmsg ATTRIBUTE_UNUSED)
2246 {
2247 return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
2248 }
2249
2250 static int64_t
2251 extract_xb6 (uint64_t insn,
2252 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2253 int *invalid ATTRIBUTE_UNUSED)
2254 {
2255 return ((insn << 4) & 0x20) | ((insn >> 11) & 0x1f);
2256 }
2257
2258 /* The XB field in an MMA XX3 form instruction. This is split
2259 and must not overlap with the ACC operand. */
2260
2261 static uint64_t
2262 insert_xb6a (uint64_t insn,
2263 int64_t value,
2264 ppc_cpu_t dialect,
2265 const char **errmsg)
2266 {
2267 int64_t acc = (insn >> 23) & 0x7;
2268 /* Power10 doesn't allow VSRs to overlap ACCs in MMA instructions. */
2269 if ((dialect & PPC_OPCODE_FUTURE) == 0
2270 && (value >> 2) == acc)
2271 *errmsg = _("VSR overlaps ACC operand");
2272 return insert_xb6 (insn, value, dialect, errmsg);
2273 }
2274
2275 static int64_t
2276 extract_xb6a (uint64_t insn,
2277 ppc_cpu_t dialect,
2278 int *invalid)
2279 {
2280 int64_t acc = (insn >> 23) & 0x7;
2281 int64_t value = extract_xb6 (insn, dialect, invalid);
2282 /* Power10 doesn't allow VSRs to overlap ACCs in MMA instructions. */
2283 if ((dialect & PPC_OPCODE_FUTURE) == 0
2284 && (value >> 2) == acc)
2285 *invalid = 1;
2286 return value;
2287 }
2288
2289 /* The XA and XB fields in an XX3 form instruction when they must be the same.
2290 This is used for extended mnemonics like xvmovdp. The extraction function
2291 enforces that the fields are the same. */
2292
2293 static uint64_t
2294 insert_xab6 (uint64_t insn,
2295 int64_t value,
2296 ppc_cpu_t dialect,
2297 const char **errmsg)
2298 {
2299 return insert_xa6 (insn, value, dialect, errmsg)
2300 | insert_xb6 (insn, value, dialect, errmsg);
2301 }
2302
2303 static int64_t
2304 extract_xab6 (uint64_t insn,
2305 ppc_cpu_t dialect,
2306 int *invalid)
2307 {
2308 int64_t xa6 = extract_xa6 (insn, dialect, invalid);
2309 int64_t xb6 = extract_xb6 (insn, dialect, invalid);
2310
2311 if (xa6 != xb6)
2312 *invalid = 1;
2313 return xa6;
2314 }
2315
2316 /* The XC field in an XX4 form instruction. This is split. */
2317
2318 static uint64_t
2319 insert_xc6 (uint64_t insn,
2320 int64_t value,
2321 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2322 const char **errmsg ATTRIBUTE_UNUSED)
2323 {
2324 return insn | ((value & 0x1f) << 6) | ((value & 0x20) >> 2);
2325 }
2326
2327 static int64_t
2328 extract_xc6 (uint64_t insn,
2329 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2330 int *invalid ATTRIBUTE_UNUSED)
2331 {
2332 return ((insn << 2) & 0x20) | ((insn >> 6) & 0x1f);
2333 }
2334
2335 /* The split XTp and XSp field in a vector paired insn. */
2336
2337 static uint64_t
2338 insert_xtp (uint64_t insn,
2339 int64_t value,
2340 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2341 const char **errmsg ATTRIBUTE_UNUSED)
2342 {
2343 return insn | ((value & 0x1e) << 21) | ((value & 0x20) << (21 - 5));
2344 }
2345
2346 static int64_t
2347 extract_xtp (uint64_t insn,
2348 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2349 int *invalid ATTRIBUTE_UNUSED)
2350 {
2351 return ((insn >> (21 - 5)) & 0x20) | ((insn >> 21) & 0x1e);
2352 }
2353
2354 /* The split XT field in a vector splat insn. */
2355
2356 static uint64_t
2357 insert_xts (uint64_t insn,
2358 int64_t value,
2359 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2360 const char **errmsg ATTRIBUTE_UNUSED)
2361 {
2362 return insn | ((value & 0x1f) << 21) | ((value & 0x20) << (16 - 5));
2363 }
2364
2365 static int64_t
2366 extract_xts (uint64_t insn,
2367 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2368 int *invalid ATTRIBUTE_UNUSED)
2369 {
2370 return ((insn >> (16 - 5)) & 0x20) | ((insn >> 21) & 0x1f);
2371 }
2372
2373 static uint64_t
2374 insert_dm (uint64_t insn,
2375 int64_t value,
2376 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2377 const char **errmsg)
2378 {
2379 if (value != 0 && value != 1)
2380 *errmsg = _("invalid constant");
2381 return insn | (((value) ? 3 : 0) << 8);
2382 }
2383
2384 static int64_t
2385 extract_dm (uint64_t insn,
2386 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2387 int *invalid)
2388 {
2389 int64_t value = (insn >> 8) & 3;
2390 if (value != 0 && value != 3)
2391 *invalid = 1;
2392 return (value) ? 1 : 0;
2393 }
2394
2395 /* The VLESIMM field in an I16A form instruction. This is split. */
2396
2397 static uint64_t
2398 insert_vlesi (uint64_t insn,
2399 int64_t value,
2400 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2401 const char **errmsg ATTRIBUTE_UNUSED)
2402 {
2403 return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
2404 }
2405
2406 static int64_t
2407 extract_vlesi (uint64_t insn,
2408 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2409 int *invalid ATTRIBUTE_UNUSED)
2410 {
2411 int64_t value = ((insn >> 10) & 0xf800) | (insn & 0x7ff);
2412 value = (value ^ 0x8000) - 0x8000;
2413 return value;
2414 }
2415
2416 static uint64_t
2417 insert_vlensi (uint64_t insn,
2418 int64_t value,
2419 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2420 const char **errmsg ATTRIBUTE_UNUSED)
2421 {
2422 value = -value;
2423 return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
2424 }
2425 static int64_t
2426 extract_vlensi (uint64_t insn,
2427 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2428 int *invalid)
2429 {
2430 int64_t value = ((insn >> 10) & 0xf800) | (insn & 0x7ff);
2431 value = (value ^ 0x8000) - 0x8000;
2432 /* Don't use for disassembly. */
2433 *invalid = 1;
2434 return -value;
2435 }
2436
2437 /* The VLEUIMM field in an I16A form instruction. This is split. */
2438
2439 static uint64_t
2440 insert_vleui (uint64_t insn,
2441 int64_t value,
2442 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2443 const char **errmsg ATTRIBUTE_UNUSED)
2444 {
2445 return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
2446 }
2447
2448 static int64_t
2449 extract_vleui (uint64_t insn,
2450 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2451 int *invalid ATTRIBUTE_UNUSED)
2452 {
2453 return ((insn >> 10) & 0xf800) | (insn & 0x7ff);
2454 }
2455
2456 /* The VLEUIMML field in an I16L form instruction. This is split. */
2457
2458 static uint64_t
2459 insert_vleil (uint64_t insn,
2460 int64_t value,
2461 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2462 const char **errmsg ATTRIBUTE_UNUSED)
2463 {
2464 return insn | ((value & 0xf800) << 5) | (value & 0x7ff);
2465 }
2466
2467 static int64_t
2468 extract_vleil (uint64_t insn,
2469 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2470 int *invalid ATTRIBUTE_UNUSED)
2471 {
2472 return ((insn >> 5) & 0xf800) | (insn & 0x7ff);
2473 }
2474
2475 static uint64_t
2476 insert_evuimm1_ex0 (uint64_t insn,
2477 int64_t value,
2478 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2479 const char **errmsg)
2480 {
2481 if (value <= 0 || value > 0x1f)
2482 *errmsg = _("UIMM = 00000 is illegal");
2483 return insn | ((value & 0x1f) << 11);
2484 }
2485
2486 static int64_t
2487 extract_evuimm1_ex0 (uint64_t insn,
2488 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2489 int *invalid)
2490 {
2491 int64_t value = ((insn >> 11) & 0x1f);
2492 if (value == 0)
2493 *invalid = 1;
2494
2495 return value;
2496 }
2497
2498 static uint64_t
2499 insert_evuimm2_ex0 (uint64_t insn,
2500 int64_t value,
2501 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2502 const char **errmsg)
2503 {
2504 if (value <= 0 || value > 0x3e)
2505 *errmsg = _("UIMM = 00000 is illegal");
2506 return insn | ((value & 0x3e) << 10);
2507 }
2508
2509 static int64_t
2510 extract_evuimm2_ex0 (uint64_t insn,
2511 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2512 int *invalid)
2513 {
2514 int64_t value = ((insn >> 10) & 0x3e);
2515 if (value == 0)
2516 *invalid = 1;
2517
2518 return value;
2519 }
2520
2521 static uint64_t
2522 insert_evuimm4_ex0 (uint64_t insn,
2523 int64_t value,
2524 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2525 const char **errmsg)
2526 {
2527 if (value <= 0 || value > 0x7c)
2528 *errmsg = _("UIMM = 00000 is illegal");
2529 return insn | ((value & 0x7c) << 9);
2530 }
2531
2532 static int64_t
2533 extract_evuimm4_ex0 (uint64_t insn,
2534 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2535 int *invalid)
2536 {
2537 int64_t value = ((insn >> 9) & 0x7c);
2538 if (value == 0)
2539 *invalid = 1;
2540
2541 return value;
2542 }
2543
2544 static uint64_t
2545 insert_evuimm8_ex0 (uint64_t insn,
2546 int64_t value,
2547 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2548 const char **errmsg)
2549 {
2550 if (value <= 0 || value > 0xf8)
2551 *errmsg = _("UIMM = 00000 is illegal");
2552 return insn | ((value & 0xf8) << 8);
2553 }
2554
2555 static int64_t
2556 extract_evuimm8_ex0 (uint64_t insn,
2557 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2558 int *invalid)
2559 {
2560 int64_t value = ((insn >> 8) & 0xf8);
2561 if (value == 0)
2562 *invalid = 1;
2563
2564 return value;
2565 }
2566
2567 static uint64_t
2568 insert_evuimm_lt8 (uint64_t insn,
2569 int64_t value,
2570 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2571 const char **errmsg)
2572 {
2573 if (value < 0 || value > 7)
2574 *errmsg = _("UIMM values >7 are illegal");
2575 return insn | ((value & 0x7) << 11);
2576 }
2577
2578 static int64_t
2579 extract_evuimm_lt8 (uint64_t insn,
2580 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2581 int *invalid)
2582 {
2583 int64_t value = ((insn >> 11) & 0x1f);
2584 if (value > 7)
2585 *invalid = 1;
2586
2587 return value;
2588 }
2589
2590 static uint64_t
2591 insert_evuimm_lt16 (uint64_t insn,
2592 int64_t value,
2593 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2594 const char **errmsg)
2595 {
2596 if (value < 0 || value > 15)
2597 *errmsg = _("UIMM values >15 are illegal");
2598 return insn | ((value & 0xf) << 11);
2599 }
2600
2601 static int64_t
2602 extract_evuimm_lt16 (uint64_t insn,
2603 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2604 int *invalid)
2605 {
2606 int64_t value = ((insn >> 11) & 0x1f);
2607 if (value > 15)
2608 *invalid = 1;
2609
2610 return value;
2611 }
2612
2613 static uint64_t
2614 insert_rD_rS_even (uint64_t insn,
2615 int64_t value,
2616 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2617 const char **errmsg)
2618 {
2619 if ((value & 0x1) != 0)
2620 *errmsg = _("GPR odd is illegal");
2621 return insn | ((value & 0x1e) << 21);
2622 }
2623
2624 static int64_t
2625 extract_rD_rS_even (uint64_t insn,
2626 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2627 int *invalid)
2628 {
2629 int64_t value = ((insn >> 21) & 0x1f);
2630 if ((value & 0x1) != 0)
2631 *invalid = 1;
2632
2633 return value;
2634 }
2635
2636 static uint64_t
2637 insert_off_lsp (uint64_t insn,
2638 int64_t value,
2639 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2640 const char **errmsg)
2641 {
2642 if (value <= 0 || value > 0x3)
2643 *errmsg = _("invalid offset");
2644 return insn | (value & 0x3);
2645 }
2646
2647 static int64_t
2648 extract_off_lsp (uint64_t insn,
2649 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2650 int *invalid)
2651 {
2652 int64_t value = (insn & 0x3);
2653 if (value == 0)
2654 *invalid = 1;
2655
2656 return value;
2657 }
2658
2659 static uint64_t
2660 insert_off_spe2 (uint64_t insn,
2661 int64_t value,
2662 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2663 const char **errmsg)
2664 {
2665 if (value <= 0 || value > 0x7)
2666 *errmsg = _("invalid offset");
2667 return insn | (value & 0x7);
2668 }
2669
2670 static int64_t
2671 extract_off_spe2 (uint64_t insn,
2672 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2673 int *invalid)
2674 {
2675 int64_t value = (insn & 0x7);
2676 if (value == 0)
2677 *invalid = 1;
2678
2679 return value;
2680 }
2681
2682 static uint64_t
2683 insert_Ddd (uint64_t insn,
2684 int64_t value,
2685 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2686 const char **errmsg)
2687 {
2688 if (value < 0 || value > 0x7)
2689 *errmsg = _("invalid Ddd value");
2690 return insn | ((value & 0x3) << 11) | ((value & 0x4) >> 2);
2691 }
2692
2693 static int64_t
2694 extract_Ddd (uint64_t insn,
2695 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2696 int *invalid ATTRIBUTE_UNUSED)
2697 {
2698 return ((insn >> 11) & 0x3) | ((insn << 2) & 0x4);
2699 }
2700
2701 static uint64_t
2702 insert_sxl (uint64_t insn,
2703 int64_t value,
2704 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2705 const char **errmsg ATTRIBUTE_UNUSED)
2706 {
2707 return insn | ((value & 0x1) << 11);
2708 }
2709
2710 static int64_t
2711 extract_sxl (uint64_t insn,
2712 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2713 int *invalid)
2714 {
2715 /* Missing optional operands have a value of one. */
2716 if (*invalid < 0)
2717 return 1;
2718 return (insn >> 11) & 0x1;
2719 }
2720
2721 /* The list of embedded processors that use the embedded operand ordering
2722 for the 3 operand dcbt and dcbtst instructions. */
2723 #define DCBT_EO (PPC_OPCODE_E500 | PPC_OPCODE_E500MC | PPC_OPCODE_476 \
2724 | PPC_OPCODE_A2)
2725
2726 /* ISA 2.03 and later specify extended mnemonics dcbtct, dcbtds, and
2727 dcbtstct, dcbtstds with a note saying these should be used in new
2728 programs rather than the base mnemonics "so that it can be coded
2729 with TH as the last operand for all categories". For that reason
2730 the extended mnemonics are enabled in the assembler for the
2731 embedded processors, but not for the disassembler so as to display
2732 the embedded dcbt or dcbtst expected form with TH first for
2733 embedded programmers. */
2734
2735 static uint64_t
2736 insert_thct (uint64_t insn,
2737 int64_t value,
2738 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2739 const char **errmsg)
2740 {
2741 if ((uint64_t) value > 7)
2742 *errmsg = _("invalid TH value");
2743 return insn | ((value & 7) << 21);
2744 }
2745
2746 static int64_t
2747 extract_thct (uint64_t insn,
2748 ppc_cpu_t dialect,
2749 int *invalid)
2750 {
2751 /* Missing optional operands have a value of 0. */
2752 if (*invalid < 0)
2753 return 0;
2754
2755 int64_t value = (insn >> 21) & 0x1f;
2756 if (value > 7 || (dialect & DCBT_EO) != 0)
2757 *invalid = 1;
2758
2759 return value;
2760 }
2761
2762 static uint64_t
2763 insert_thds (uint64_t insn,
2764 int64_t value,
2765 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2766 const char **errmsg)
2767 {
2768 if (value < 8 || value > 15)
2769 *errmsg = _("invalid TH value");
2770 return insn | ((value & 0x1f) << 21);
2771 }
2772
2773 static int64_t
2774 extract_thds (uint64_t insn,
2775 ppc_cpu_t dialect,
2776 int *invalid)
2777 {
2778 /* Missing optional operands have a value of 8. */
2779 if (*invalid < 0)
2780 return 8;
2781
2782 int64_t value = (insn >> 21) & 0x1f;
2783 if (value < 8 || value > 15 || (dialect & DCBT_EO) != 0)
2784 *invalid = 1;
2785
2786 return value;
2787 }
2788
2789 static uint64_t
2790 insert_SVrm (uint64_t insn,
2791 int64_t value,
2792 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2793 const char **errmsg)
2794 {
2795 /*
2796 * 0b1000 and 0b1001 values are reserved for svshape2.
2797 * svshape is SVM-form; svshape2 is SVM2-form.
2798 *
2799 * svshape XO:
2800 * 0000-011001
2801 * 0001-011001
2802 * 0010-011001
2803 * 0011-011001
2804 * 0100-011001
2805 * 0101-011001
2806 * 0110-011001
2807 * 0111-011001
2808 * 1010-011001
2809 * 1011-011001
2810 * 1100-011001
2811 * 1101-011001
2812 * 1110-011001
2813 * 1111-011001
2814 *
2815 * svshape2 XO:
2816 * 100--011001
2817 *
2818 * # 1.6.35 SVM-FORM
2819 * |0 |6 |11 |16 |21 |25 |26 |31 |
2820 * | PO | SVxd | SVyd | SVzd | SVrm |vf | XO |
2821 *
2822 * # 1.6.35.1 SVM2-FORM
2823 * |0 |6 |10|11 |16 |21 |24|25 |26 |31 |
2824 * | PO | offs |yx| rmm | SVd |XO |mm|sk | XO |
2825 */
2826 if ((value == 8) || (value == 9))
2827 *errmsg = _("invalid SVrm value");
2828
2829 return insn | ((value & 0xf) << 7);
2830 }
2831
2832 static int64_t
2833 extract_SVrm (uint64_t insn,
2834 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2835 int *invalid)
2836 {
2837 int64_t value = (insn >> 7) & 0xf;
2838
2839 /*
2840 * We should never meet the condition below in practice.
2841 * svshape2 opcode and mask should always be matched first.
2842 */
2843 if ((value == 8) || (value == 9))
2844 *invalid = 1;
2845
2846 return value;
2847 }
2848
2849 \f
2850 /* The operands table.
2851
2852 The fields are bitm, shift, insert, extract, flags.
2853
2854 We used to put parens around the various additions, like the one
2855 for BA just below. However, that caused trouble with feeble
2856 compilers with a limit on depth of a parenthesized expression, like
2857 (reportedly) the compiler in Microsoft Developer Studio 5. So we
2858 omit the parens, since the macros are never used in a context where
2859 the addition will be ambiguous. */
2860
2861 const struct powerpc_operand powerpc_operands[] =
2862 {
2863 /* The zero index is used to indicate the end of the list of
2864 operands. */
2865 #define UNUSED 0
2866 { 0, 0, NULL, NULL, 0 },
2867
2868 /* The BA field in an XL form instruction. */
2869 #define BA UNUSED + 1
2870 /* The BI field in a B form or XL form instruction. */
2871 #define BI BA
2872 #define BI_MASK (0x1f << 16)
2873 { 0x1f, 16, NULL, NULL, PPC_OPERAND_CR_BIT },
2874
2875 /* The BT, BA and BB fields in a XL form instruction when they must all
2876 be the same. */
2877 #define BTAB BA + 1
2878 { 0x1f, 21, insert_btab, extract_btab, PPC_OPERAND_CR_BIT },
2879
2880 /* The BB field in an XL form instruction. */
2881 #define BB BTAB + 1
2882 #define BB_MASK (0x1f << 11)
2883 { 0x1f, 11, NULL, NULL, PPC_OPERAND_CR_BIT },
2884
2885 /* The BA and BB fields in a XL form instruction when they must be
2886 the same. */
2887 #define BAB BB + 1
2888 { 0x1f, 16, insert_bab, extract_bab, PPC_OPERAND_CR_BIT },
2889
2890 /* The VRA and VRB fields in a VX form instruction when they must be the same.
2891 This is used for extended mnemonics like vmr. */
2892 #define VAB BAB + 1
2893 { 0x1f, 16, insert_bab, extract_bab, PPC_OPERAND_VR },
2894
2895 /* The RA and RB fields in a VX form instruction when they must be the same.
2896 This is used for extended mnemonics like evmr. */
2897 #define RAB VAB + 1
2898 { 0x1f, 16, insert_bab, extract_bab, PPC_OPERAND_GPR },
2899
2900 #define BC RAB + 1
2901 { 0x1f, 6, NULL, NULL, PPC_OPERAND_CR_BIT },
2902
2903 /* The BD field in a B form instruction. The lower two bits are
2904 forced to zero. */
2905 #define BD BC + 1
2906 { 0xfffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
2907
2908 /* The BD field in a B form instruction when absolute addressing is
2909 used. */
2910 #define BDA BD + 1
2911 { 0xfffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
2912
2913 /* The BD field in a B form instruction when the - modifier is used.
2914 This sets the y bit of the BO field appropriately. */
2915 #define BDM BDA + 1
2916 { 0xfffc, 0, insert_bdm, extract_bdm,
2917 PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
2918
2919 /* The BD field in a B form instruction when the - modifier is used
2920 and absolute address is used. */
2921 #define BDMA BDM + 1
2922 { 0xfffc, 0, insert_bdm, extract_bdm,
2923 PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
2924
2925 /* The BD field in a B form instruction when the + modifier is used.
2926 This sets the y bit of the BO field appropriately. */
2927 #define BDP BDMA + 1
2928 { 0xfffc, 0, insert_bdp, extract_bdp,
2929 PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
2930
2931 /* The BD field in a B form instruction when the + modifier is used
2932 and absolute addressing is used. */
2933 #define BDPA BDP + 1
2934 { 0xfffc, 0, insert_bdp, extract_bdp,
2935 PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
2936
2937 /* The BF field in an X or XL form instruction. */
2938 #define BF BDPA + 1
2939 /* The CRFD field in an X form instruction. */
2940 #define CRFD BF
2941 /* The CRD field in an XL form instruction. */
2942 #define CRD BF
2943 { 0x7, 23, NULL, NULL, PPC_OPERAND_CR_REG },
2944
2945 /* The BF field in an X or XL form instruction. */
2946 #define BFF BF + 1
2947 { 0x7, 23, NULL, NULL, 0 },
2948
2949 /* The ACC field in a VSX ACC 8LS:D-form instruction. */
2950 #define ACC BFF + 1
2951 { 0x7, 23, NULL, NULL, PPC_OPERAND_ACC },
2952
2953 /* The DMR field in a MMA instruction. */
2954 #define DMR ACC + 1
2955 { 0x7, 23, NULL, NULL, PPC_OPERAND_DMR },
2956
2957 /* The second DMR field in a two DMR operand MMA instruction. */
2958 #define DMRAB DMR + 1
2959 { 0x7, 13, NULL, NULL, PPC_OPERAND_DMR },
2960
2961 /* An optional BF field. This is used for comparison instructions,
2962 in which an omitted BF field is taken as zero. */
2963 #define OBF DMRAB + 1
2964 { 0x7, 23, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
2965
2966 /* The BFA field in an X or XL form instruction. */
2967 #define BFA OBF + 1
2968 { 0x7, 18, NULL, NULL, PPC_OPERAND_CR_REG },
2969
2970 /* The BO field in a B form instruction. Certain values are
2971 illegal. */
2972 #define BO BFA + 1
2973 #define BO_MASK (0x1f << 21)
2974 { 0x1f, 21, insert_bo, extract_bo, 0 },
2975
2976 /* The BO field in a B form instruction when the - modifier is used. */
2977 #define BOM BO + 1
2978 { 0x1f, 21, insert_bom, extract_bom, 0 },
2979
2980 /* The BO field in a B form instruction when the + modifier is used. */
2981 #define BOP BOM + 1
2982 { 0x1f, 21, insert_bop, extract_bop, 0 },
2983
2984 /* The RM field in an X form instruction. */
2985 #define RM BOP + 1
2986 #define DD RM
2987 #define mo1 RM
2988 { 0x3, 11, NULL, NULL, 0 },
2989
2990 #define BH RM + 1
2991 { 0x3, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
2992
2993 /* The BT field in an X or XL form instruction. */
2994 #define BT BH + 1
2995 { 0x1f, 21, NULL, NULL, PPC_OPERAND_CR_BIT },
2996
2997 /* The BT field in a mtfsb0 or mtfsb1 instruction. */
2998 #define BTF BT + 1
2999 { 0x1f, 21, NULL, NULL, PPC_OPERAND_CR_BIT | PPC_OPERAND_CR_REG },
3000
3001 /* The BI16 field in a BD8 form instruction. */
3002 #define BI16 BTF + 1
3003 { 0x3, 8, NULL, NULL, PPC_OPERAND_CR_BIT },
3004
3005 /* The BI32 field in a BD15 form instruction. */
3006 #define BI32 BI16 + 1
3007 { 0xf, 16, NULL, NULL, PPC_OPERAND_CR_BIT },
3008
3009 /* The BO32 field in a BD15 form instruction. */
3010 #define BO32 BI32 + 1
3011 { 0x3, 20, NULL, NULL, 0 },
3012
3013 /* The B8 field in a BD8 form instruction. */
3014 #define B8 BO32 + 1
3015 { 0x1fe, -1, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
3016
3017 /* The B15 field in a BD15 form instruction. The lowest bit is
3018 forced to zero. */
3019 #define B15 B8 + 1
3020 { 0xfffe, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
3021
3022 /* The B24 field in a BD24 form instruction. The lowest bit is
3023 forced to zero. */
3024 #define B24 B15 + 1
3025 { 0x1fffffe, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
3026
3027 /* The condition register number portion of the BI field in a B form
3028 or XL form instruction. This is used for the extended
3029 conditional branch mnemonics, which set the lower two bits of the
3030 BI field. This field is optional. */
3031 #define CR B24 + 1
3032 { 0x7, 18, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
3033
3034 /* The CRB field in an X form instruction. */
3035 #define CRB CR + 1
3036 /* The MB field in an M form instruction. */
3037 #define MB CRB
3038 #define MB_MASK (0x1f << 6)
3039 { 0x1f, 6, NULL, NULL, 0 },
3040 /* The bm field in an BM2 form instruction. */
3041 #define bm CRB
3042
3043 /* The CRD32 field in an XL form instruction. */
3044 #define CRD32 CRB + 1
3045 { 0x3, 21, NULL, NULL, PPC_OPERAND_CR_REG },
3046
3047 /* The CRFS field in an X form instruction. */
3048 #define CRFS CRD32 + 1
3049 { 0x7, 0, NULL, NULL, PPC_OPERAND_CR_REG },
3050
3051 #define CRS CRFS + 1
3052 { 0x3, 18, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
3053
3054 /* The CT field in an X form instruction. */
3055 #define CT CRS + 1
3056 /* The MO field in an mbar instruction. */
3057 #define MO CT
3058 { 0x1f, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
3059
3060 /* The TH field in dcbtct. */
3061 #define THCT CT + 1
3062 { 0x1f, 21, insert_thct, extract_thct, PPC_OPERAND_OPTIONAL },
3063
3064 /* The TH field in dcbtds. */
3065 #define THDS THCT + 1
3066 { 0x1f, 21, insert_thds, extract_thds, PPC_OPERAND_OPTIONAL },
3067
3068 /* The D field in a D form instruction. This is a displacement off
3069 a register, and implies that the next operand is a register in
3070 parentheses. */
3071 #define D THDS + 1
3072 { 0xffff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
3073
3074 /* The D8 field in a D form instruction. This is a displacement off
3075 a register, and implies that the next operand is a register in
3076 parentheses. */
3077 #define D8 D + 1
3078 { 0xff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
3079
3080 /* The DCMX field in an X form instruction. */
3081 #define DCMX D8 + 1
3082 { 0x7f, 16, NULL, NULL, 0 },
3083
3084 /* The split DCMX field in an X form instruction. */
3085 #define DCMXS DCMX + 1
3086 { 0x7f, PPC_OPSHIFT_INV, insert_dcmxs, extract_dcmxs, 0 },
3087
3088 /* The DQ field in a DQ form instruction. This is like D, but the
3089 lower four bits are forced to zero. */
3090 #define DQ DCMXS + 1
3091 { 0xfff0, 0, NULL, NULL,
3092 PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DQ },
3093
3094 /* The DS field in a DS form instruction. This is like D, but the
3095 lower two bits are forced to zero. */
3096 #define DS DQ + 1
3097 { 0xfffc, 0, NULL, NULL,
3098 PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DS },
3099
3100 /* The D field in an 8-byte D form prefix instruction. This is a displacement
3101 off a register, and implies that the next operand is a register in
3102 parentheses. */
3103 #define D34 DS + 1
3104 { UINT64_C(0x3ffffffff), PPC_OPSHIFT_INV, insert_d34, extract_d34,
3105 PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
3106
3107 /* The SI field in an 8-byte D form prefix instruction. */
3108 #define SI34 D34 + 1
3109 { UINT64_C(0x3ffffffff), PPC_OPSHIFT_INV, insert_d34, extract_d34, PPC_OPERAND_SIGNED },
3110
3111 /* The NSI field in an 8-byte D form prefix instruction. This is the
3112 same as the SI34 field, only negated. */
3113 #define NSI34 SI34 + 1
3114 { UINT64_C(0x3ffffffff), PPC_OPSHIFT_INV, insert_nsi34, extract_nsi34,
3115 PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
3116
3117 /* The IMM32 field in a vector splat immediate prefix instruction. */
3118 #define IMM32 NSI34 + 1
3119 { 0xffffffff, PPC_OPSHIFT_INV, insert_imm32, extract_imm32, 0},
3120
3121 /* The UIM field in a vector permute extended prefix instruction. */
3122 #define UIM3 IMM32 + 1
3123 { 0x7, 32, NULL, NULL, 0},
3124
3125 /* The UIM field in a vector eval prefix instruction. */
3126 #define UIM8 UIM3 + 1
3127 { 0xff, 32, NULL, NULL, 0},
3128
3129 /* The IX field in xxsplti32dx. */
3130 #define IX UIM8 + 1
3131 { 0x1, 17, NULL, NULL, 0 },
3132
3133 /* The PMSK field in GER rank 8 prefix instructions. */
3134 #define PMSK8 IX + 1
3135 { 0xff, 40, NULL, NULL, 0 },
3136
3137 /* The PMSK field in GER rank 4 prefix instructions. */
3138 #define PMSK4 PMSK8 + 1
3139 { 0xf, 44, NULL, NULL, 0 },
3140
3141 /* The PMSK field in GER rank 2 prefix instructions. */
3142 #define PMSK2 PMSK4 + 1
3143 { 0x3, 46, NULL, NULL, 0 },
3144
3145 /* The XMSK field in GER prefix instructions. */
3146 #define XMSK PMSK2 + 1
3147 { 0xf, 36, NULL, NULL, 0 },
3148
3149 /* The XMSK field in GERX prefix instructions. */
3150 #define XMSK8 XMSK + 1
3151 { 0xff, 36, NULL, NULL, 0 },
3152
3153 /* The YMSK field in GER prefix instructions. */
3154 #define YMSK XMSK8 + 1
3155 { 0xf, 32, NULL, NULL, 0 },
3156
3157 /* The YMSK field in 64-bit GER prefix instructions. */
3158 #define YMSK2 YMSK + 1
3159 { 0x3, 34, NULL, NULL, 0 },
3160
3161 /* The DUIS or BHRBE fields in a XFX form instruction, 10 bits
3162 unsigned imediate */
3163 #define DUIS YMSK2 + 1
3164 #define BHRBE DUIS
3165 { 0x3ff, 11, NULL, NULL, 0 },
3166
3167 /* The split DW field in a X form instruction. */
3168 #define DW DUIS + 1
3169 { -1, PPC_OPSHIFT_INV, insert_dw, extract_dw,
3170 PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED},
3171
3172 /* The split D field in a DX form instruction. */
3173 #define DXD DW + 1
3174 { 0xffff, PPC_OPSHIFT_INV, insert_dxd, extract_dxd,
3175 PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT},
3176
3177 /* The split ND field in a DX form instruction.
3178 This is the same as the DX field, only negated. */
3179 #define NDXD DXD + 1
3180 { 0xffff, PPC_OPSHIFT_INV, insert_dxdn, extract_dxdn,
3181 PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT},
3182
3183 /* The E field in a wrteei instruction. */
3184 /* And the W bit in the pair singles instructions. */
3185 /* And the ST field in a VX form instruction. */
3186 #define E NDXD + 1
3187 #define PSW E
3188 #define ST E
3189 { 0x1, 15, NULL, NULL, 0 },
3190
3191 /* The FL1 field in a POWER SC form instruction. */
3192 #define FL1 E + 1
3193 /* The U field in an X form instruction. */
3194 #define U FL1
3195 { 0xf, 12, NULL, NULL, 0 },
3196
3197 /* The FL2 field in a POWER SC form instruction. */
3198 #define FL2 FL1 + 1
3199 { 0x7, 2, NULL, NULL, 0 },
3200
3201 /* The FLM field in an XFL form instruction. */
3202 #define FLM FL2 + 1
3203 { 0xff, 17, NULL, NULL, 0 },
3204
3205 /* The FRA field in an X or A form instruction. */
3206 #define FRA FLM + 1
3207 #define FRA_MASK (0x1f << 16)
3208 { 0x1f, 16, NULL, NULL, PPC_OPERAND_FPR },
3209
3210 /* The FRAp field of DFP instructions. */
3211 #define FRAp FRA + 1
3212 { 0x1e, 16, NULL, NULL, PPC_OPERAND_FPR },
3213
3214 /* The FRB field in an X or A form instruction. */
3215 #define FRB FRAp + 1
3216 #define FRB_MASK (0x1f << 11)
3217 { 0x1f, 11, NULL, NULL, PPC_OPERAND_FPR },
3218
3219 /* The FRBp field of DFP instructions. */
3220 #define FRBp FRB + 1
3221 { 0x1e, 11, NULL, NULL, PPC_OPERAND_FPR },
3222
3223 /* The FRC field in an A form instruction. */
3224 #define FRC FRBp + 1
3225 #define FRC_MASK (0x1f << 6)
3226 { 0x1f, 6, NULL, NULL, PPC_OPERAND_FPR },
3227
3228 /* The FRS field in an X form instruction or the FRT field in a D, X
3229 or A form instruction. */
3230 #define FRS FRC + 1
3231 #define FRT FRS
3232 { 0x1f, 21, NULL, NULL, PPC_OPERAND_FPR },
3233
3234 /* The FRSp field of stfdp or the FRTp field of lfdp and DFP
3235 instructions. */
3236 #define FRSp FRS + 1
3237 #define FRTp FRSp
3238 { 0x1e, 21, NULL, NULL, PPC_OPERAND_FPR },
3239
3240 /* The FXM field in an XFX instruction. */
3241 #define FXM FRSp + 1
3242 { 0xff, 12, insert_fxm, extract_fxm, 0 },
3243
3244 /* Power4 version for mfcr. */
3245 #define FXM4 FXM + 1
3246 { 0xff, 12, insert_fxm, extract_fxm, PPC_OPERAND_OPTIONAL },
3247
3248 /* The IMM20 field in an LI instruction. */
3249 #define IMM20 FXM4 + 1
3250 { 0xfffff, PPC_OPSHIFT_INV, insert_li20, extract_li20, PPC_OPERAND_SIGNED},
3251
3252 /* The L field in a D or X form instruction. */
3253 #define L IMM20 + 1
3254 #define yx10 L
3255 { 0x1, 21, NULL, NULL, 0 },
3256
3257 /* The optional L field in tlbie and tlbiel instructions. */
3258 #define LOPT L + 1
3259 /* The R field in a HTM X form instruction. */
3260 #define HTM_R LOPT
3261 { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
3262
3263 /* The optional L field in the paste. instruction. This is similar to LOPT
3264 above, but with a default value of 1. */
3265 #define L1OPT LOPT + 1
3266 { 0x1, 21, insert_l1opt, extract_l1opt, PPC_OPERAND_OPTIONAL },
3267
3268 /* The optional (for 32-bit) L field in cmp[l][i] instructions. */
3269 #define L32OPT L1OPT + 1
3270 { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL32 },
3271
3272 /* The 2-bit L or WC field in an X (sync, dcbf or wait) form instruction. */
3273 #define L2OPT L32OPT + 1
3274 #define LS L2OPT
3275 #define WC L2OPT
3276 { 0x3, 21, insert_ls, extract_ls, PPC_OPERAND_OPTIONAL },
3277
3278 /* The LEV field in a POWER SVC / POWER9 SCV form instruction. */
3279 #define SVC_LEV L2OPT + 1
3280 { 0x7f, 5, NULL, NULL, 0 },
3281
3282 /* The LEV field in an SC form instruction. */
3283 #define LEV SVC_LEV + 1
3284 { 0x7f, 5, NULL, NULL, PPC_OPERAND_OPTIONAL },
3285
3286 /* The LI field in an I form instruction. The lower two bits are
3287 forced to zero. */
3288 #define LI LEV + 1
3289 { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
3290
3291 /* The LI field in an I form instruction when used as an absolute
3292 address. */
3293 #define LIA LI + 1
3294 { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
3295
3296 /* The 3-bit L field in a sync or dcbf instruction. */
3297 #define LS3 LIA + 1
3298 #define L3OPT LS3
3299 { 0x7, 21, insert_ls, extract_ls, PPC_OPERAND_OPTIONAL },
3300
3301 /* The ME field in an M form instruction. */
3302 #define ME LS3 + 1
3303 #define ME_MASK (0x1f << 1)
3304 { 0x1f, 1, NULL, NULL, 0 },
3305
3306 #define CRWn ME + 1
3307 { 0x1f, 1, insert_crwn, extract_crwn, 0 },
3308
3309 #define ELWn CRWn + 1
3310 { 0x1f, 1, insert_elwn, extract_elwn, PPC_OPERAND_PLUS1 },
3311
3312 #define ERWn ELWn + 1
3313 { 0x1f, 6, insert_erwn, extract_erwn, 0 },
3314
3315 #define ERWb ERWn + 1
3316 { 0x1f, 11, insert_erwb, extract_erwb, 0 },
3317
3318 #define CSLWb ERWb + 1
3319 { 0x1f, 6, NULL, extract_cslwb, 0 },
3320
3321 #define CSLWn CSLWb + 1
3322 { 0x1f, 11, insert_cslwn, NULL, 0 },
3323
3324 #define ILWn CSLWn + 1
3325 { 0x1f, 1, NULL, extract_ilwn, PPC_OPERAND_PLUS1 },
3326
3327 #define ILWb ILWn + 1
3328 { 0x1f, 6, insert_ilwb, NULL, 0 },
3329
3330 #define IRWn ILWb + 1
3331 { 0x1f, 1, NULL, extract_irwn, PPC_OPERAND_PLUS1 },
3332
3333 #define IRWb IRWn + 1
3334 { 0x1f, 6, insert_irwb, NULL, 0 },
3335
3336 /* The MB and ME fields in an M form instruction expressed a single
3337 operand which is a bitmask indicating which bits to select. This
3338 is a two operand form using PPC_OPERAND_NEXT. See the
3339 description in opcode/ppc.h for what this means. */
3340 #define MBE IRWb + 1
3341 { 0x1f, 6, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_NEXT },
3342 { -1, 0, insert_mbe, extract_mbe, 0 },
3343
3344 /* The MB or ME field in an MD or MDS form instruction. The high
3345 bit is wrapped to the low end. */
3346 #define MB6 MBE + 2
3347 #define ME6 MB6
3348 #define MB6_MASK (0x3f << 5)
3349 { 0x3f, 5, insert_mb6, extract_mb6, 0 },
3350
3351 #define ELDn MB6 + 1
3352 { 0x3f, 5, insert_eldn, extract_eldn, PPC_OPERAND_PLUS1 },
3353
3354 #define ERDn ELDn + 1
3355 { 0x3f, 5, insert_erdn, extract_erdn, 0 },
3356
3357 #define CRDn ERDn + 1
3358 { 0x3f, 5, insert_crdn, extract_crdn, 0 },
3359
3360 /* The NB field in an X form instruction. The value 32 is stored as
3361 0. */
3362 #define NB CRDn + 1
3363 { 0x1f, 11, NULL, extract_nb, PPC_OPERAND_PLUS1 },
3364
3365 /* The NBI field in an lswi instruction, which has special value
3366 restrictions. The value 32 is stored as 0. */
3367 #define NBI NB + 1
3368 { 0x1f, 11, insert_nbi, extract_nb, PPC_OPERAND_PLUS1 },
3369
3370 /* The NSI field in a D form instruction. This is the same as the
3371 SI field, only negated. */
3372 #define NSI NBI + 1
3373 { 0xffff, 0, insert_nsi, extract_nsi,
3374 PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
3375
3376 /* The NSI field in a D form instruction when we accept a wide range
3377 of positive values. */
3378 #define NSISIGNOPT NSI + 1
3379 { 0xffff, 0, insert_nsi, extract_nsi,
3380 PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
3381
3382 /* The RA field in an D, DS, DQ, X, XO, M, or MDS form instruction. */
3383 #define RA NSISIGNOPT + 1
3384 #define RA_MASK (0x1f << 16)
3385 { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR },
3386
3387 /* As above, but 0 in the RA field means zero, not r0. */
3388 #define RA0 RA + 1
3389 { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR_0 },
3390
3391 /* Similar to above, but optional. */
3392 #define PRA0 RA0 + 1
3393 { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR_0 | PPC_OPERAND_OPTIONAL },
3394
3395 /* The RA field in the DQ form lq or an lswx instruction, which have
3396 special value restrictions. */
3397 #define RAQ PRA0 + 1
3398 #define RAX RAQ
3399 { 0x1f, 16, insert_raq, extract_raq, PPC_OPERAND_GPR_0 },
3400
3401 /* Similar to above, but optional. */
3402 #define PRAQ RAQ + 1
3403 { 0x1f, 16, insert_raq, extract_raq,
3404 PPC_OPERAND_GPR_0 | PPC_OPERAND_OPTIONAL },
3405
3406 /* The R field in an 8-byte D, DS, DQ or X form prefix instruction. */
3407 #define PCREL PRAQ + 1
3408 #define PCREL_MASK (1ULL << 52)
3409 { 0x1, 52, insert_pcrel, extract_pcrel, PPC_OPERAND_OPTIONAL },
3410
3411 #define PCREL1 PCREL + 1
3412 { 0x1, 52, insert_pcrel, extract_pcrel1, PPC_OPERAND_OPTIONAL },
3413
3414 /* The RA field in a D or X form instruction which is an updating
3415 load, which means that the RA field may not be zero and may not
3416 equal the RT field. */
3417 #define RAL PCREL1 + 1
3418 { 0x1f, 16, insert_ral, extract_ral, PPC_OPERAND_GPR_0 },
3419
3420 /* The RA field in an lmw instruction, which has special value
3421 restrictions. */
3422 #define RAM RAL + 1
3423 { 0x1f, 16, insert_ram, extract_ram, PPC_OPERAND_GPR_0 },
3424
3425 /* The RA field in a D or X form instruction which is an updating
3426 store or an updating floating point load, which means that the RA
3427 field may not be zero. */
3428 #define RAS RAM + 1
3429 { 0x1f, 16, insert_ras, extract_ras, PPC_OPERAND_GPR_0 },
3430
3431 /* The RA field of the tlbwe, dccci and iccci instructions,
3432 which are optional. */
3433 #define RAOPT RAS + 1
3434 { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
3435
3436 /* The RB field in an X, XO, M, or MDS form instruction. */
3437 #define RB RAOPT + 1
3438 #define RB_MASK (0x1f << 11)
3439 { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR },
3440
3441 /* The RS and RB fields in an X form instruction when they must be the same.
3442 This is used for extended mnemonics like mr. */
3443 #define RSB RB + 1
3444 { 0x1f, 11, insert_rsb, extract_rsb, PPC_OPERAND_GPR },
3445
3446 /* The RB field in an lswx instruction, which has special value
3447 restrictions. */
3448 #define RBX RSB + 1
3449 { 0x1f, 11, insert_rbx, extract_rbx, PPC_OPERAND_GPR },
3450
3451 /* The RB field of the dccci and iccci instructions, which are optional. */
3452 #define RBOPT RBX + 1
3453 { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
3454
3455 /* The RC register field in an maddld, maddhd or maddhdu instruction. */
3456 #define RC RBOPT + 1
3457 { 0x1f, 6, NULL, NULL, PPC_OPERAND_GPR },
3458
3459 /* The RS field in a D, DS, X, XFX, XS, M, MD or MDS form
3460 instruction or the RT field in a D, DS, X, XFX or XO form
3461 instruction. */
3462 #define RS RC + 1
3463 #define RT RS
3464 #define RT_MASK (0x1f << 21)
3465 #define RD RS
3466 { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR },
3467
3468 /* As above, but 0 in the RT field means zero, not r0. */
3469 #define RT0 RS + 1
3470 { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR_0 },
3471
3472 #define RD_EVEN RT0 + 1
3473 #define RS_EVEN RD_EVEN
3474 { 0x1f, 21, insert_rD_rS_even, extract_rD_rS_even, PPC_OPERAND_GPR },
3475
3476 /* The RS and RT fields of the DS form stq and DQ form lq instructions,
3477 which have special value restrictions. */
3478 #define RSQ RS_EVEN + 1
3479 #define RTQ RSQ
3480 #define Q_MASK (1 << 21)
3481 { 0x1e, 21, NULL, NULL, PPC_OPERAND_GPR },
3482
3483 /* The RS field of the tlbwe instruction, which is optional. */
3484 #define RSO RSQ + 1
3485 #define RTO RSO
3486 { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
3487
3488 /* The RX field of the SE_RR form instruction. */
3489 #define RX RSO + 1
3490 { 0x1f, PPC_OPSHIFT_INV, insert_rx, extract_rx, PPC_OPERAND_GPR },
3491
3492 /* The ARX field of the SE_RR form instruction. */
3493 #define ARX RX + 1
3494 { 0x1f, PPC_OPSHIFT_INV, insert_arx, extract_arx, PPC_OPERAND_GPR },
3495
3496 /* The RY field of the SE_RR form instruction. */
3497 #define RY ARX + 1
3498 #define RZ RY
3499 { 0x1f, PPC_OPSHIFT_INV, insert_ry, extract_ry, PPC_OPERAND_GPR },
3500
3501 /* The ARY field of the SE_RR form instruction. */
3502 #define ARY RY + 1
3503 { 0x1f, PPC_OPSHIFT_INV, insert_ary, extract_ary, PPC_OPERAND_GPR },
3504
3505 /* The SCLSCI8 field in a D form instruction. */
3506 #define SCLSCI8 ARY + 1
3507 { 0xffffffff, PPC_OPSHIFT_INV, insert_sci8, extract_sci8, 0 },
3508
3509 /* The SCLSCI8N field in a D form instruction. This is the same as the
3510 SCLSCI8 field, only negated. */
3511 #define SCLSCI8N SCLSCI8 + 1
3512 { 0xffffffff, PPC_OPSHIFT_INV, insert_sci8n, extract_sci8n,
3513 PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
3514
3515 /* The SD field of the SD4 form instruction. */
3516 #define SE_SD SCLSCI8N + 1
3517 { 0xf, 8, NULL, NULL, PPC_OPERAND_PARENS },
3518
3519 /* The SD field of the SD4 form instruction, for halfword. */
3520 #define SE_SDH SE_SD + 1
3521 { 0x1e, 7, NULL, NULL, PPC_OPERAND_PARENS },
3522
3523 /* The SD field of the SD4 form instruction, for word. */
3524 #define SE_SDW SE_SDH + 1
3525 { 0x3c, 6, NULL, NULL, PPC_OPERAND_PARENS },
3526
3527 /* The SH field in an X or M form instruction. */
3528 #define SH SE_SDW + 1
3529 #define SH_MASK (0x1f << 11)
3530 /* The other UIMM field in a EVX form instruction. */
3531 #define EVUIMM SH
3532 /* The FC field in an atomic X form instruction. */
3533 #define FC SH
3534 #define UIM5 SH
3535 { 0x1f, 11, NULL, NULL, 0 },
3536
3537 #define RRWn SH + 1
3538 { 0x1f, 11, insert_rrwn, extract_rrwn, 0 },
3539
3540 #define SLWn RRWn + 1
3541 { 0x1f, 11, insert_slwn, extract_slwn, 0 },
3542
3543 #define SRWn SLWn + 1
3544 { 0x1f, 11, insert_srwn, extract_srwn, 0 },
3545
3546 #define EVUIMM_LT8 SRWn + 1
3547 { 0x1f, 11, insert_evuimm_lt8, extract_evuimm_lt8, 0 },
3548
3549 #define EVUIMM_LT16 EVUIMM_LT8 + 1
3550 { 0x1f, 11, insert_evuimm_lt16, extract_evuimm_lt16, 0 },
3551
3552 /* The SI field in a HTM X form instruction. */
3553 #define HTM_SI EVUIMM_LT16 + 1
3554 { 0x1f, 11, NULL, NULL, PPC_OPERAND_SIGNED },
3555
3556 /* The SH field in an MD form instruction. This is split. */
3557 #define SH6 HTM_SI + 1
3558 #define SH6_MASK ((0x1f << 11) | (1 << 1))
3559 { 0x3f, PPC_OPSHIFT_INV, insert_sh6, extract_sh6, 0 },
3560
3561 #define RRDn SH6 + 1
3562 { 0x3f, PPC_OPSHIFT_INV, insert_rrdn, extract_rrdn, 0 },
3563
3564 #define SLDn RRDn + 1
3565 { 0x3f, PPC_OPSHIFT_INV, insert_sldn, extract_sldn, 0 },
3566
3567 #define SRDn SLDn + 1
3568 { 0x3f, PPC_OPSHIFT_INV, insert_srdn, extract_srdn, 0 },
3569
3570 #define ERDb SRDn + 1
3571 { 0x3f, PPC_OPSHIFT_INV, insert_erdb, extract_erdb, 0 },
3572
3573 #define CSLDn ERDb + 1
3574 { 0x3f, PPC_OPSHIFT_SH6, insert_csldn, extract_sh6, 0 },
3575
3576 #define CSLDb CSLDn + 1
3577 { 0x3f, 5, insert_mb6, extract_csldb, 0 },
3578
3579 #define IRDn CSLDb + 1
3580 { 0x3f, PPC_OPSHIFT_INV, insert_sh6, extract_irdn, PPC_OPERAND_PLUS1 },
3581
3582 #define IRDb IRDn + 1
3583 { 0x3f, 5, insert_irdb, extract_mb6, 0 },
3584
3585 /* The SH field of some variants of the tlbre and tlbwe
3586 instructions, and the ELEV field of the e_sc instruction. */
3587 #define SHO IRDb + 1
3588 #define ELEV SHO
3589 { 0x1f, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
3590
3591 /* The SI field in a D form instruction. */
3592 #define SI SHO + 1
3593 { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED },
3594
3595 /* The SI field in a D form instruction when we accept a wide range
3596 of positive values. */
3597 #define SISIGNOPT SI + 1
3598 { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
3599
3600 /* The SI8 field in a D form instruction. */
3601 #define SI8 SISIGNOPT + 1
3602 { 0xff, 0, NULL, NULL, PPC_OPERAND_SIGNED },
3603
3604 /* The SPR field in an XFX form instruction. This is flipped--the
3605 lower 5 bits are stored in the upper 5 and vice- versa. */
3606 #define SPR SI8 + 1
3607 #define PMR SPR
3608 #define TMR SPR
3609 #define SPR_MASK (0x3ff << 11)
3610 { 0x3ff, 11, insert_spr, extract_spr, PPC_OPERAND_SPR },
3611
3612 /* The BAT index number in an XFX form m[ft]ibat[lu] instruction. */
3613 #define SPRBAT SPR + 1
3614 #define SPRBAT_MASK (0xc1 << 11)
3615 { 0x7, PPC_OPSHIFT_INV, insert_sprbat, extract_sprbat, PPC_OPERAND_SPR },
3616
3617 /* The GQR index number in an XFX form m[ft]gqr instruction. */
3618 #define SPRGQR SPRBAT + 1
3619 #define SPRGQR_MASK (0x7 << 16)
3620 { 0x7, 16, NULL, NULL, PPC_OPERAND_GQR },
3621
3622 /* The SPRG register number in an XFX form m[ft]sprg instruction. */
3623 #define SPRG SPRGQR + 1
3624 { 0x1f, 16, insert_sprg, extract_sprg, PPC_OPERAND_SPR },
3625
3626 /* The SR field in an X form instruction. */
3627 #define SR SPRG + 1
3628 /* The 4-bit UIMM field in a VX form instruction. */
3629 #define UIMM4 SR
3630 { 0xf, 16, NULL, NULL, 0 },
3631
3632 /* The STRM field in an X AltiVec form instruction. */
3633 #define STRM SR + 1
3634 /* The T field in a tlbilx form instruction. */
3635 #define T STRM
3636 /* The L field in wclr instructions. */
3637 #define L2 STRM
3638 { 0x3, 21, NULL, NULL, 0 },
3639
3640 /* The ESYNC field in an X (sync) form instruction. */
3641 #define ESYNC STRM + 1
3642 { 0xf, 16, insert_esync, extract_esync, PPC_OPERAND_OPTIONAL },
3643
3644 /* The SV field in a POWER SC form instruction. */
3645 #define SV ESYNC + 1
3646 { 0x3fff, 2, NULL, NULL, 0 },
3647
3648 /* The TBR field in an XFX form instruction. This is like the SPR
3649 field, but it is optional. */
3650 #define TBR SV + 1
3651 { 0x3ff, 11, insert_tbr, extract_tbr,
3652 PPC_OPERAND_SPR | PPC_OPERAND_OPTIONAL },
3653
3654 /* The TO field in a D or X form instruction. */
3655 #define TO TBR + 1
3656 #define DUI TO
3657 #define SVme TO
3658 #define SVG TO
3659 #define TO_MASK (0x1f << 21)
3660 { 0x1f, 21, NULL, NULL, 0 },
3661
3662 /* The UI field in a D form instruction. */
3663 #define UI TO + 1
3664 { 0xffff, 0, NULL, NULL, 0 },
3665
3666 #define UISIGNOPT UI + 1
3667 { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNOPT },
3668
3669 /* The IMM field in an SE_IM5 instruction. */
3670 #define UI5 UISIGNOPT + 1
3671 { 0x1f, 4, NULL, NULL, 0 },
3672
3673 /* The OIMM field in an SE_OIM5 instruction. */
3674 #define OIMM5 UI5 + 1
3675 { 0x1f, 4, insert_oimm, extract_oimm, PPC_OPERAND_PLUS1 },
3676
3677 /* The UI7 field in an SE_LI instruction. */
3678 #define UI7 OIMM5 + 1
3679 { 0x7f, 4, NULL, NULL, 0 },
3680
3681 /* The VA field in a VA, VX or VXR form instruction. */
3682 #define VA UI7 + 1
3683 { 0x1f, 16, NULL, NULL, PPC_OPERAND_VR },
3684
3685 /* The VB field in a VA, VX or VXR form instruction. */
3686 #define VB VA + 1
3687 { 0x1f, 11, NULL, NULL, PPC_OPERAND_VR },
3688
3689 /* The VC field in a VA form instruction. */
3690 #define VC VB + 1
3691 { 0x1f, 6, NULL, NULL, PPC_OPERAND_VR },
3692
3693 /* The VD or VS field in a VA, VX, VXR or X form instruction. */
3694 #define VD VC + 1
3695 #define VS VD
3696 { 0x1f, 21, NULL, NULL, PPC_OPERAND_VR },
3697
3698 /* The SIMM field in a VX form instruction, and TE in Z form. */
3699 #define SIMM VD + 1
3700 #define TE SIMM
3701 { 0x1f, 16, NULL, NULL, PPC_OPERAND_SIGNED},
3702
3703 /* The UIMM field in a VX form instruction. */
3704 #define UIMM SIMM + 1
3705 #define DCTL UIMM
3706 #define rmm UIMM
3707 { 0x1f, 16, NULL, NULL, 0 },
3708
3709 /* The 3-bit UIMM field in a VX form instruction. */
3710 #define UIMM3 UIMM + 1
3711 #define CVM UIMM3
3712 { 0x7, 16, NULL, NULL, 0 },
3713
3714 /* The 6-bit UIM field in a X form instruction. */
3715 #define UIM6 UIMM3 + 1
3716 { 0x3f, 16, NULL, NULL, 0 },
3717
3718 /* The SIX field in a VX form instruction. */
3719 #define SIX UIM6 + 1
3720 #define MMMM SIX
3721 { 0xf, 11, NULL, NULL, 0 },
3722
3723 /* The PS field in a VX form instruction. */
3724 #define PS SIX + 1
3725 { 0x1, 9, NULL, NULL, 0 },
3726
3727 /* The SH field in a vector shift double by bit immediate instruction. */
3728 #define SH3 PS + 1
3729 { 0x7, 6, NULL, NULL, 0 },
3730
3731 /* The SHB field in a VA form instruction. */
3732 #define SHB SH3 + 1
3733 { 0xf, 6, NULL, NULL, 0 },
3734
3735 /* The other UIMM field in a half word EVX form instruction. */
3736 #define EVUIMM_1 SHB + 1
3737 { 0x1f, 11, NULL, NULL, PPC_OPERAND_PARENS },
3738
3739 #define EVUIMM_1_EX0 EVUIMM_1 + 1
3740 { 0x1f, 11, insert_evuimm1_ex0, extract_evuimm1_ex0, PPC_OPERAND_PARENS },
3741
3742 #define EVUIMM_2 EVUIMM_1_EX0 + 1
3743 { 0x3e, 10, NULL, NULL, PPC_OPERAND_PARENS },
3744
3745 #define EVUIMM_2_EX0 EVUIMM_2 + 1
3746 { 0x3e, 10, insert_evuimm2_ex0, extract_evuimm2_ex0, PPC_OPERAND_PARENS },
3747
3748 /* The other UIMM field in a word EVX form instruction. */
3749 #define EVUIMM_4 EVUIMM_2_EX0 + 1
3750 { 0x7c, 9, NULL, NULL, PPC_OPERAND_PARENS },
3751
3752 #define EVUIMM_4_EX0 EVUIMM_4 + 1
3753 { 0x7c, 9, insert_evuimm4_ex0, extract_evuimm4_ex0, PPC_OPERAND_PARENS },
3754
3755 /* The other UIMM field in a double EVX form instruction. */
3756 #define EVUIMM_8 EVUIMM_4_EX0 + 1
3757 { 0xf8, 8, NULL, NULL, PPC_OPERAND_PARENS },
3758
3759 #define EVUIMM_8_EX0 EVUIMM_8 + 1
3760 { 0xf8, 8, insert_evuimm8_ex0, extract_evuimm8_ex0, PPC_OPERAND_PARENS },
3761
3762 /* The WS or DRM field in an X form instruction. */
3763 #define WS EVUIMM_8_EX0 + 1
3764 #define DRM WS
3765 /* The NNN field in a VX form instruction for SPE2 */
3766 #define NNN WS
3767 { 0x7, 11, NULL, NULL, 0 },
3768
3769 /* PowerPC paired singles extensions. */
3770 /* W bit in the pair singles instructions for x type instructions. */
3771 #define PSWM WS + 1
3772 /* The BO16 field in a BD8 form instruction. */
3773 #define BO16 PSWM
3774 /* The pst field in a SVRM form instruction. */
3775 #define pst PSWM
3776 /* The L field in a XO form instruction. */
3777 #define XOL PSWM
3778 { 0x1, 10, 0, 0, 0 },
3779
3780 /* IDX bits for quantization in the pair singles instructions. */
3781 #define PSQ PSWM + 1
3782 { 0x7, 12, 0, 0, PPC_OPERAND_GQR },
3783
3784 /* IDX bits for quantization in the pair singles x-type instructions. */
3785 #define PSQM PSQ + 1
3786 { 0x7, 7, 0, 0, PPC_OPERAND_GQR },
3787
3788 /* Smaller D field for quantization in the pair singles instructions. */
3789 #define PSD PSQM + 1
3790 { 0xfff, 0, 0, 0, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
3791
3792 /* The L field in an mtmsrd or A form instruction or R or W in an
3793 X form. */
3794 #define A_L PSD + 1
3795 #define W A_L
3796 #define X_R A_L
3797 { 0x1, 16, NULL, NULL, PPC_OPERAND_OPTIONAL },
3798
3799 /* The RMC or CY field in a Z23 form instruction. */
3800 #define RMC A_L + 1
3801 #define CY RMC
3802 #define ew RMC
3803 #define SHP1 RMC
3804 { 0x3, 9, NULL, NULL, 0 },
3805
3806 #define R RMC + 1
3807 #define MP R
3808 #define P1 R
3809 { 0x1, 16, NULL, NULL, 0 },
3810
3811 #define RIC R + 1
3812 { 0x3, 18, NULL, NULL, PPC_OPERAND_OPTIONAL },
3813
3814 #define PRS RIC + 1
3815 { 0x1, 17, NULL, NULL, PPC_OPERAND_OPTIONAL },
3816
3817 #define SP PRS + 1
3818 #define mi0 SP
3819 #define IT SP
3820 { 0x3, 19, NULL, NULL, 0 },
3821
3822 #define S SP + 1
3823 { 0x1, 20, NULL, NULL, 0 },
3824
3825 /* The S field in a XL form instruction. */
3826 #define SXL S + 1
3827 { 0x1, 11, insert_sxl, extract_sxl, PPC_OPERAND_OPTIONAL },
3828
3829 /* SH field starting at bit position 16. */
3830 #define SH16 SXL + 1
3831 /* The DCM and DGM fields in a Z form instruction. */
3832 #define DCM SH16
3833 #define DGM DCM
3834 { 0x3f, 10, NULL, NULL, 0 },
3835
3836 /* The EH field in larx instruction. */
3837 #define EH SH16 + 1
3838 { 0x1, 0, NULL, NULL, PPC_OPERAND_OPTIONAL },
3839
3840 /* The L field in an mtfsf or XFL form instruction. */
3841 /* The A field in a HTM X form instruction. */
3842 #define XFL_L EH + 1
3843 #define HTM_A XFL_L
3844 { 0x1, 25, NULL, NULL, PPC_OPERAND_OPTIONAL},
3845
3846 /* Xilinx APU related masks and macros */
3847 #define FCRT XFL_L + 1
3848 #define FCRT_MASK (0x1f << 21)
3849 { 0x1f, 21, 0, 0, PPC_OPERAND_FCR },
3850
3851 /* Xilinx FSL related masks and macros */
3852 #define FSL FCRT + 1
3853 #define FSL_MASK (0x1f << 11)
3854 { 0x1f, 11, 0, 0, PPC_OPERAND_FSL },
3855
3856 /* Xilinx UDI related masks and macros */
3857 #define URT FSL + 1
3858 { 0x1f, 21, 0, 0, PPC_OPERAND_UDI },
3859
3860 #define URA URT + 1
3861 { 0x1f, 16, 0, 0, PPC_OPERAND_UDI },
3862
3863 #define URB URA + 1
3864 { 0x1f, 11, 0, 0, PPC_OPERAND_UDI },
3865
3866 #define URC URB + 1
3867 { 0x1f, 6, 0, 0, PPC_OPERAND_UDI },
3868
3869 /* The VLESIMM field in a D form instruction. */
3870 #define VLESIMM URC + 1
3871 { 0xffff, PPC_OPSHIFT_INV, insert_vlesi, extract_vlesi,
3872 PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
3873
3874 /* The VLENSIMM field in a D form instruction. */
3875 #define VLENSIMM VLESIMM + 1
3876 { 0xffff, PPC_OPSHIFT_INV, insert_vlensi, extract_vlensi,
3877 PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
3878
3879 /* The VLEUIMM field in a D form instruction. */
3880 #define VLEUIMM VLENSIMM + 1
3881 { 0xffff, PPC_OPSHIFT_INV, insert_vleui, extract_vleui, 0 },
3882
3883 /* The VLEUIMML field in a D form instruction. */
3884 #define VLEUIMML VLEUIMM + 1
3885 { 0xffff, PPC_OPSHIFT_INV, insert_vleil, extract_vleil, 0 },
3886
3887 /* The XT and XS fields in an XX1 or XX3 form instruction. This is
3888 split. */
3889 #define XS6 VLEUIMML + 1
3890 #define XT6 XS6
3891 { 0x3f, PPC_OPSHIFT_INV, insert_xt6, extract_xt6, PPC_OPERAND_VSR },
3892
3893 /* The XT and XS fields in an DQ form VSX instruction. This is split. */
3894 #define XSQ6 XT6 + 1
3895 #define XTQ6 XSQ6
3896 { 0x3f, PPC_OPSHIFT_INV, insert_xtq6, extract_xtq6, PPC_OPERAND_VSR },
3897
3898 /* The split XTp and XSp field in a vector paired instruction. */
3899 #define XTP XSQ6 + 1
3900 #define XSP XTP
3901 { 0x3e, PPC_OPSHIFT_INV, insert_xtp, extract_xtp, PPC_OPERAND_VSR },
3902
3903 #define XTS XTP + 1
3904 { 0x3f, PPC_OPSHIFT_INV, insert_xts, extract_xts, PPC_OPERAND_VSR },
3905
3906 /* The XT field in a plxv instruction. Runs into the OP field. */
3907 #define XTOP XTS + 1
3908 { 0x3f, 21, NULL, NULL, PPC_OPERAND_VSR },
3909
3910 /* The XA field in an XX3 form instruction. This is split. */
3911 #define XA6 XTOP + 1
3912 { 0x3f, PPC_OPSHIFT_INV, insert_xa6, extract_xa6, PPC_OPERAND_VSR },
3913
3914 /* The XA field in an MMA XX3 form instruction. This is split and
3915 must not overlap with the ACC operand. */
3916 #define XA6a XA6 + 1
3917 { 0x3f, PPC_OPSHIFT_INV, insert_xa6a, extract_xa6a, PPC_OPERAND_VSR },
3918
3919 /* The XAp field in an MMA XX3 form instruction. This is split.
3920 This is like XA6a, but must be even. */
3921 #define XA6ap XA6a + 1
3922 { 0x3e, PPC_OPSHIFT_INV, insert_xa6a, extract_xa6a, PPC_OPERAND_VSR },
3923
3924 /* The 5-bit XAp field in an MMA XX3 form instruction. This is split.
3925 This is like XA6, but must be even. */
3926 #define XA5p XA6ap + 1
3927 { 0x3e, PPC_OPSHIFT_INV, insert_xa5, extract_xa5, PPC_OPERAND_VSR },
3928
3929 /* The XB field in an XX2 or XX3 form instruction. This is split. */
3930 #define XB6 XA5p + 1
3931 { 0x3f, PPC_OPSHIFT_INV, insert_xb6, extract_xb6, PPC_OPERAND_VSR },
3932
3933 /* The XB field in an XX3 form instruction. This is split and
3934 must not overlap with the ACC operand. */
3935 #define XB6a XB6 + 1
3936 { 0x3f, PPC_OPSHIFT_INV, insert_xb6a, extract_xb6a, PPC_OPERAND_VSR },
3937
3938 /* The 5-bit XBp field in an MMA XX3 form instruction. This is split.
3939 This is like XB6, but must be even. */
3940 #define XB5p XB6a + 1
3941 { 0x3e, PPC_OPSHIFT_INV, insert_xb5, extract_xb5, PPC_OPERAND_VSR },
3942
3943 /* The XA and XB fields in an XX3 form instruction when they must be the same.
3944 This is used in extended mnemonics like xvmovdp. This is split. */
3945 #define XAB6 XB5p + 1
3946 { 0x3f, PPC_OPSHIFT_INV, insert_xab6, extract_xab6, PPC_OPERAND_VSR },
3947
3948 /* The XC field in an XX4 form instruction. This is split. */
3949 #define XC6 XAB6 + 1
3950 { 0x3f, PPC_OPSHIFT_INV, insert_xc6, extract_xc6, PPC_OPERAND_VSR },
3951
3952 /* The DM or SHW field in an XX3 form instruction. */
3953 #define DM XC6 + 1
3954 #define SHW DM
3955 { 0x3, 8, NULL, NULL, 0 },
3956
3957 /* The DM field in an extended mnemonic XX3 form instruction. */
3958 #define DMEX DM + 1
3959 { 0x3, 8, insert_dm, extract_dm, 0 },
3960
3961 /* The UIM field in an XX2 form instruction. */
3962 #define UIM DMEX + 1
3963 /* The 2-bit UIMM field in a VX form instruction. */
3964 #define UIMM2 UIM
3965 /* The 2-bit L field in a darn instruction. */
3966 #define LRAND UIM
3967 { 0x3, 16, NULL, NULL, 0 },
3968
3969 #define ERAT_T UIM + 1
3970 { 0x7, 21, NULL, NULL, 0 },
3971
3972 #define IH ERAT_T + 1
3973 { 0x7, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
3974
3975 /* The 2-bit SC or PL field in an X form instruction. */
3976 #define SC2 IH + 1
3977 #define PL SC2
3978 { 0x3, 16, insert_pl, extract_pl, PPC_OPERAND_OPTIONAL },
3979
3980 #define P2 PL + 1
3981 { 0x3, PPC_OPSHIFT_INV, insert_p2, extract_p2, 0 },
3982
3983 /* The 8-bit IMM8 field in a XX1 form instruction. */
3984 #define IMM8 P2 + 1
3985 { 0xff, 11, NULL, NULL, PPC_OPERAND_SIGNOPT },
3986
3987 #define VX_OFF IMM8 + 1
3988 { 0x3, 0, insert_off_lsp, extract_off_lsp, 0 },
3989
3990 #define VX_OFF_SPE2 VX_OFF + 1
3991 { 0x7, 0, insert_off_spe2, extract_off_spe2, 0 },
3992
3993 #define BBB VX_OFF_SPE2 + 1
3994 { 0x7, 13, NULL, NULL, 0 },
3995
3996 #define DDD BBB + 1
3997 #define VX_MASK_DDD (VX_MASK & ~0x1)
3998 { 0x7, PPC_OPSHIFT_INV, insert_Ddd, extract_Ddd, 0 },
3999
4000 #define HH DDD + 1
4001 #define mo0 HH
4002 { 0x3, 13, NULL, NULL, 0 },
4003
4004 #define SVi HH + 1
4005 { 0x3f, 9, NULL, NULL, PPC_OPERAND_NONZERO },
4006
4007 #define vf SVi + 1
4008 #define sk vf
4009 { 0x1, 6, NULL, NULL, 0 },
4010
4011 #define vs vf + 1
4012 #define mm vs
4013 { 0x1, 7, NULL, NULL, 0 },
4014
4015 #define ms vs + 1
4016 #define yx ms
4017 { 0x1, 8, NULL, NULL, 0 },
4018
4019 #define SVxd ms + 1
4020 { 0x1f, 21, NULL, NULL, PPC_OPERAND_NONZERO },
4021
4022 #define SVyd SVxd + 1
4023 { 0x1f, 16, NULL, NULL, PPC_OPERAND_NONZERO },
4024
4025 #define SVzd SVyd + 1
4026 #define SVd SVzd
4027 { 0x1f, 11, NULL, NULL, PPC_OPERAND_NONZERO },
4028
4029 #define SVrm SVzd + 1
4030 { 0xf, 7, insert_SVrm, extract_SVrm, 0 },
4031
4032 #define mi1 SVrm + 1
4033 { 0x3, 17, NULL, NULL, 0 },
4034
4035 #define mi2 mi1 + 1
4036 { 0x3, 15, NULL, NULL, 0 },
4037
4038 #define SVo mi2 + 1
4039 { 0xf, 22, NULL, NULL, 0 },
4040
4041 #define LBM2 SVo + 1
4042 { 0x1, 5, NULL, NULL, 0 },
4043
4044 #define FMM LBM2 + 1
4045 { 0xf, 7, NULL, NULL, 0 },
4046
4047 #define MMM FMM + 1
4048 { 0x7, 8, NULL, NULL, 0 },
4049 };
4050
4051 const unsigned int num_powerpc_operands = ARRAY_SIZE (powerpc_operands);
4052 \f
4053 /* Macros used to form opcodes. */
4054
4055 /* The main opcode. */
4056 #define OP(x) ((((uint64_t)(x)) & 0x3f) << 26)
4057 #define OP_MASK OP (0x3f)
4058
4059 /* The prefix opcode. */
4060 #define PREFIX_OP (1ULL << 58)
4061
4062 /* The 2-bit prefix form. */
4063 #define PREFIX_FORM(x) ((x & 3ULL) << 56)
4064
4065 #define SUFFIX_MASK ((1ULL << 32) - 1)
4066 #define PREFIX_MASK (SUFFIX_MASK << 32)
4067
4068 /* Prefix insn, eight byte load/store form 8LS. */
4069 #define P8LS (PREFIX_OP | PREFIX_FORM (0))
4070
4071 /* Prefix insn, eight byte register to register form 8RR. */
4072 #define P8RR (PREFIX_OP | PREFIX_FORM (1))
4073
4074 /* Prefix insn, modified load/store form MLS. */
4075 #define PMLS (PREFIX_OP | PREFIX_FORM (2))
4076
4077 /* Prefix insn, modified register to register form MRR. */
4078 #define PMRR (PREFIX_OP | PREFIX_FORM (3))
4079
4080 /* Prefix insn, modified masked immediate register to register form MMIRR. */
4081 #define PMMIRR (PREFIX_OP | PREFIX_FORM (3) | (9ULL << 52))
4082
4083 /* An 8-byte D form prefix instruction. */
4084 #define P_D_MASK (((-1ULL << 50) & ~PCREL_MASK) | OP_MASK)
4085
4086 /* The same as P_D_MASK, but with the RA and PCREL fields specified. */
4087 #define P_DRAPCREL_MASK (P_D_MASK | PCREL_MASK | RA_MASK)
4088
4089 /* Mask for prefix X form instructions. */
4090 #define P_X_MASK (PREFIX_MASK | X_MASK)
4091 #define P_XX1_MASK (PREFIX_MASK | XX1_MASK)
4092
4093 /* Mask for prefix vector permute insns. */
4094 #define P_XX4_MASK (PREFIX_MASK | XX4_MASK)
4095 #define P_UXX4_MASK (P_XX4_MASK & ~(7ULL << 32))
4096 #define P_U8XX4_MASK (P_XX4_MASK & ~(0xffULL << 32))
4097
4098 /* MMIRR:XX3-form 8-byte outer product instructions. */
4099 #define P_GER_MASK ((-1ULL << 40) | XX3ACC_MASK)
4100 #define P_GER2_MASK (P_GER_MASK & ~(3ULL << 46))
4101 #define P_GER4_MASK (P_GER_MASK & ~(15ULL << 44))
4102 #define P_GER8_MASK (P_GER_MASK & ~(255ULL << 40))
4103 #define P_GER64_MASK (P_GER_MASK | (3ULL << 32))
4104 #define P_GERX4_MASK ((-1ULL << 48) | XX3GERX_MASK)
4105 #define P_GERX2_MASK (P_GERX4_MASK & ~(3ULL << 46))
4106
4107 /* Vector splat immediate op. */
4108 #define VSOP(op, xop) (OP (op) | (xop << 17))
4109 #define P_VS_MASK ((-1ULL << 48) | VSOP (0x3f, 0xf))
4110 #define P_VSI_MASK ((-1ULL << 48) | VSOP (0x3f, 0xe))
4111
4112 /* The main opcode combined with a trap code in the TO field of a D
4113 form instruction. Used for extended mnemonics for the trap
4114 instructions. */
4115 #define OPTO(x,to) (OP (x) | ((((uint64_t)(to)) & 0x1f) << 21))
4116 #define OPTO_MASK (OP_MASK | TO_MASK)
4117
4118 /* The main opcode combined with a comparison size bit in the L field
4119 of a D form or X form instruction. Used for extended mnemonics for
4120 the comparison instructions. */
4121 #define OPL(x,l) (OP (x) | ((((uint64_t)(l)) & 1) << 21))
4122 #define OPL_MASK OPL (0x3f,1)
4123
4124 /* The main opcode combined with an update code in D form instruction.
4125 Used for extended mnemonics for VLE memory instructions. */
4126 #define OPVUP(x,vup) (OP (x) | ((((uint64_t)(vup)) & 0xff) << 8))
4127 #define OPVUP_MASK OPVUP (0x3f, 0xff)
4128
4129 /* The main opcode combined with an update code and the RT fields
4130 specified in D form instruction. Used for VLE volatile context
4131 save/restore instructions. */
4132 #define OPVUPRT(x,vup,rt) \
4133 (OPVUP (x, vup) \
4134 | ((((uint64_t)(rt)) & 0x1f) << 21))
4135 #define OPVUPRT_MASK OPVUPRT (0x3f, 0xff, 0x1f)
4136
4137 /* An A form instruction. */
4138 #define A(op, xop, rc) \
4139 (OP (op) \
4140 | ((((uint64_t)(xop)) & 0x1f) << 1) \
4141 | (((uint64_t)(rc)) & 1))
4142 #define A_MASK A (0x3f, 0x1f, 1)
4143
4144 /* An A_MASK with the FRB field fixed. */
4145 #define AFRB_MASK (A_MASK | FRB_MASK)
4146
4147 /* An A_MASK with the FRC field fixed. */
4148 #define AFRC_MASK (A_MASK | FRC_MASK)
4149
4150 /* An A_MASK with the FRA and FRC fields fixed. */
4151 #define AFRAFRC_MASK (A_MASK | FRA_MASK | FRC_MASK)
4152
4153 /* An AFRAFRC_MASK, but with L bit clear. */
4154 #define AFRALFRC_MASK (AFRAFRC_MASK & ~((uint64_t) 1 << 16))
4155
4156 /* A B form instruction. */
4157 #define B(op, aa, lk) \
4158 (OP (op) \
4159 | ((((uint64_t)(aa)) & 1) << 1) \
4160 | ((lk) & 1))
4161 #define B_MASK B (0x3f, 1, 1)
4162
4163 /* A BD8 form instruction. This is a 16-bit instruction. */
4164 #define BD8(op, aa, lk) \
4165 (((((uint64_t)(op)) & 0x3f) << 10) \
4166 | (((aa) & 1) << 9) \
4167 | (((lk) & 1) << 8))
4168 #define BD8_MASK BD8 (0x3f, 1, 1)
4169
4170 /* Another BD8 form instruction. This is a 16-bit instruction. */
4171 #define BD8IO(op) ((((uint64_t)(op)) & 0x1f) << 11)
4172 #define BD8IO_MASK BD8IO (0x1f)
4173
4174 /* A BD8 form instruction for simplified mnemonics. */
4175 #define EBD8IO(op, bo, bi) (BD8IO ((op)) | ((bo) << 10) | ((bi) << 8))
4176 /* A mask that excludes BO32 and BI32. */
4177 #define EBD8IO1_MASK 0xf800
4178 /* A mask that includes BO32 and excludes BI32. */
4179 #define EBD8IO2_MASK 0xfc00
4180 /* A mask that include BO32 AND BI32. */
4181 #define EBD8IO3_MASK 0xff00
4182
4183 /* A BD15 form instruction. */
4184 #define BD15(op, aa, lk) \
4185 (OP (op) \
4186 | ((((uint64_t)(aa)) & 0xf) << 22) \
4187 | ((lk) & 1))
4188 #define BD15_MASK BD15 (0x3f, 0xf, 1)
4189
4190 /* A BD15 form instruction for extended conditional branch mnemonics. */
4191 #define EBD15(op, aa, bo, lk) \
4192 (((op) & 0x3fu) << 26) \
4193 | (((aa) & 0xf) << 22) \
4194 | (((bo) & 0x3) << 20) \
4195 | ((lk) & 1)
4196 #define EBD15_MASK 0xfff00001
4197
4198 /* A BD15 form instruction for extended conditional branch mnemonics
4199 with BI. */
4200 #define EBD15BI(op, aa, bo, bi, lk) \
4201 ((((op) & 0x3fu) << 26) \
4202 | (((aa) & 0xf) << 22) \
4203 | (((bo) & 0x3) << 20) \
4204 | (((bi) & 0x3) << 16) \
4205 | ((lk) & 1))
4206
4207 #define EBD15BI_MASK 0xfff30001
4208
4209 /* A BD24 form instruction. */
4210 #define BD24(op, aa, lk) \
4211 (OP (op) \
4212 | ((((uint64_t)(aa)) & 1) << 25) \
4213 | ((lk) & 1))
4214 #define BD24_MASK BD24 (0x3f, 1, 1)
4215
4216 /* A B form instruction setting the BO field. */
4217 #define BBO(op, bo, aa, lk) \
4218 (B ((op), (aa), (lk)) \
4219 | ((((uint64_t)(bo)) & 0x1f) << 21))
4220 #define BBO_MASK BBO (0x3f, 0x1f, 1, 1)
4221
4222 /* A BBO_MASK with the y bit of the BO field removed. This permits
4223 matching a conditional branch regardless of the setting of the y
4224 bit. Similarly for the 'at' bits used for power4 branch hints. */
4225 #define Y_MASK (((uint64_t) 1) << 21)
4226 #define AT1_MASK (((uint64_t) 3) << 21)
4227 #define AT2_MASK (((uint64_t) 9) << 21)
4228 #define BBOY_MASK (BBO_MASK &~ Y_MASK)
4229 #define BBOAT_MASK (BBO_MASK &~ AT1_MASK)
4230
4231 /* A B form instruction setting the BO field and the condition bits of
4232 the BI field. */
4233 #define BBOCB(op, bo, cb, aa, lk) \
4234 (BBO ((op), (bo), (aa), (lk)) | ((((uint64_t)(cb)) & 0x3) << 16))
4235 #define BBOCB_MASK BBOCB (0x3f, 0x1f, 0x3, 1, 1)
4236
4237 /* A BBOCB_MASK with the y bit of the BO field removed. */
4238 #define BBOYCB_MASK (BBOCB_MASK &~ Y_MASK)
4239 #define BBOATCB_MASK (BBOCB_MASK &~ AT1_MASK)
4240 #define BBOAT2CB_MASK (BBOCB_MASK &~ AT2_MASK)
4241
4242 /* A BBOYCB_MASK in which the BI field is fixed. */
4243 #define BBOYBI_MASK (BBOYCB_MASK | BI_MASK)
4244 #define BBOATBI_MASK (BBOAT2CB_MASK | BI_MASK)
4245
4246 /* A VLE C form instruction. */
4247 #define C_LK(x, lk) (((((uint64_t)(x)) & 0x7fff) << 1) | ((lk) & 1))
4248 #define C_LK_MASK C_LK(0x7fff, 1)
4249 #define C(x) ((((uint64_t)(x)) & 0xffff))
4250 #define C_MASK C(0xffff)
4251
4252 /* An Context form instruction. */
4253 #define CTX(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x7))
4254 #define CTX_MASK CTX(0x3f, 0x7)
4255
4256 /* An User Context form instruction. */
4257 #define UCTX(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f))
4258 #define UCTX_MASK UCTX(0x3f, 0x1f)
4259
4260 /* The main opcode mask with the RA field clear. */
4261 #define DRA_MASK (OP_MASK | RA_MASK)
4262
4263 /* A DQ form VSX instruction. */
4264 #define DQX(op, xop) (OP (op) | ((xop) & 0x7))
4265 #define DQX_MASK DQX (0x3f, 7)
4266
4267 /* A DQ form VSX vector paired instruction. */
4268 #define DQXP(op, xop) (OP (op) | ((xop) & 0xf))
4269 #define DQXP_MASK DQXP (0x3f, 0xf)
4270
4271 /* A DS form instruction. */
4272 #define DSO(op, xop) (OP (op) | ((xop) & 0x3))
4273 #define DS_MASK DSO (0x3f, 3)
4274
4275 /* An DX form instruction. */
4276 #define DX(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1f) << 1))
4277 #define DX_MASK DX (0x3f, 0x1f)
4278 /* An DX form instruction with the D bits specified. */
4279 #define NODX_MASK (DX_MASK | 0x1fffc1)
4280
4281 /* An EVSEL form instruction. */
4282 #define EVSEL(op, xop) (OP (op) | (((uint64_t)(xop)) & 0xff) << 3)
4283 #define EVSEL_MASK EVSEL(0x3f, 0xff)
4284
4285 /* An IA16 form instruction. */
4286 #define IA16(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f) << 11)
4287 #define IA16_MASK IA16(0x3f, 0x1f)
4288
4289 /* An I16A form instruction. */
4290 #define I16A(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f) << 11)
4291 #define I16A_MASK I16A(0x3f, 0x1f)
4292
4293 /* An I16L form instruction. */
4294 #define I16L(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f) << 11)
4295 #define I16L_MASK I16L(0x3f, 0x1f)
4296
4297 /* An IM7 form instruction. */
4298 #define IM7(op) ((((uint64_t)(op)) & 0x1f) << 11)
4299 #define IM7_MASK IM7(0x1f)
4300
4301 /* An M form instruction. */
4302 #define M(op, rc) (OP (op) | ((rc) & 1))
4303 #define M_MASK M (0x3f, 1)
4304
4305 /* An LI20 form instruction. */
4306 #define LI20(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1) << 15)
4307 #define LI20_MASK LI20(0x3f, 0x1)
4308
4309 /* An M form instruction with the ME field specified. */
4310 #define MME(op, me, rc) \
4311 (M ((op), (rc)) \
4312 | ((((uint64_t)(me)) & 0x1f) << 1))
4313
4314 /* An M_MASK with the MB field fixed. */
4315 #define MMB_MASK (M_MASK | MB_MASK)
4316
4317 /* An M_MASK with the ME field fixed. */
4318 #define MME_MASK (M_MASK | ME_MASK)
4319
4320 /* An M_MASK with the MB and ME fields fixed. */
4321 #define MMBME_MASK (M_MASK | MB_MASK | ME_MASK)
4322
4323 /* An M_MASK with the SH and ME fields fixed. */
4324 #define MSHME_MASK (M_MASK | SH_MASK | ME_MASK)
4325
4326 /* An M_MASK with the SH and MB fields fixed. */
4327 #define MSHMB_MASK (M_MASK | SH_MASK | MB_MASK)
4328
4329 /* An MD form instruction. */
4330 #define MD(op, xop, rc) \
4331 (OP (op) \
4332 | ((((uint64_t)(xop)) & 0x7) << 2) \
4333 | ((rc) & 1))
4334 #define MD_MASK MD (0x3f, 0x7, 1)
4335
4336 /* An MD_MASK with the MB field fixed. */
4337 #define MDMB_MASK (MD_MASK | MB6_MASK)
4338
4339 /* An MD_MASK with the SH field fixed. */
4340 #define MDSH_MASK (MD_MASK | SH6_MASK)
4341
4342 /* An MDS form instruction. */
4343 #define MDS(op, xop, rc) \
4344 (OP (op) \
4345 | ((((uint64_t)(xop)) & 0xf) << 1) \
4346 | ((rc) & 1))
4347 #define MDS_MASK MDS (0x3f, 0xf, 1)
4348
4349 /* An MDS_MASK with the MB field fixed. */
4350 #define MDSMB_MASK (MDS_MASK | MB6_MASK)
4351
4352 /* An SC form instruction. */
4353 #define SC(op, sa, lk) \
4354 (OP (op) \
4355 | ((((uint64_t)(sa)) & 1) << 1) \
4356 | ((lk) & 1))
4357 #define SC_MASK \
4358 (OP_MASK \
4359 | (((uint64_t) 0x3ff) << 16) \
4360 | (((uint64_t) 1) << 1) \
4361 | 1)
4362
4363 /* An SCI8 form instruction. */
4364 #define SCI8(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1f) << 11))
4365 #define SCI8_MASK SCI8(0x3f, 0x1f)
4366
4367 /* An SCI8 form instruction. */
4368 #define SCI8BF(op, fop, xop) \
4369 (OP (op) \
4370 | ((((uint64_t)(xop)) & 0x1f) << 11) \
4371 | (((fop) & 7) << 23))
4372 #define SCI8BF_MASK SCI8BF(0x3f, 7, 0x1f)
4373
4374 /* An SD4 form instruction. This is a 16-bit instruction. */
4375 #define SD4(op) ((((uint64_t)(op)) & 0xf) << 12)
4376 #define SD4_MASK SD4(0xf)
4377
4378 /* An SE_IM5 form instruction. This is a 16-bit instruction. */
4379 #define SE_IM5(op, xop) \
4380 (((((uint64_t)(op)) & 0x3f) << 10) \
4381 | (((xop) & 0x1) << 9))
4382 #define SE_IM5_MASK SE_IM5(0x3f, 1)
4383
4384 /* An SE_R form instruction. This is a 16-bit instruction. */
4385 #define SE_R(op, xop) \
4386 (((((uint64_t)(op)) & 0x3f) << 10) \
4387 | (((xop) & 0x3f) << 4))
4388 #define SE_R_MASK SE_R(0x3f, 0x3f)
4389
4390 /* An SE_RR form instruction. This is a 16-bit instruction. */
4391 #define SE_RR(op, xop) \
4392 (((((uint64_t)(op)) & 0x3f) << 10) \
4393 | (((xop) & 0x3) << 8))
4394 #define SE_RR_MASK SE_RR(0x3f, 3)
4395
4396 /* A VX form instruction. */
4397 #define VX(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x7ff))
4398
4399 /* The mask for an VX form instruction. */
4400 #define VX_MASK VX(0x3f, 0x7ff)
4401
4402 /* A VX LSP form instruction. */
4403 #define VX_LSP(op, xop) (OP (op) | (((uint64_t)(xop)) & 0xffff))
4404
4405 /* The mask for an VX LSP form instruction. */
4406 #define VX_LSP_MASK VX_LSP(0x3f, 0xffff)
4407 #define VX_LSP_OFF_MASK VX_LSP(0x3f, 0x7fc)
4408
4409 /* Additional format of VX SPE2 form instruction. */
4410 #define VX_RA_CONST(op, xop, bits11_15) \
4411 (OP (op) \
4412 | (((uint64_t)(bits11_15) & 0x1f) << 16) \
4413 | (((uint64_t)(xop)) & 0x7ff))
4414 #define VX_RA_CONST_MASK VX_RA_CONST(0x3f, 0x7ff, 0x1f)
4415
4416 #define VX_RB_CONST(op, xop, bits16_20) \
4417 (OP (op) \
4418 | (((uint64_t)(bits16_20) & 0x1f) << 11) \
4419 | (((uint64_t)(xop)) & 0x7ff))
4420 #define VX_RB_CONST_MASK VX_RB_CONST(0x3f, 0x7ff, 0x1f)
4421
4422 #define VX_OFF_SPE2_MASK VX(0x3f, 0x7f8)
4423
4424 #define VX_SPE_CRFD(op, xop, bits9_10) \
4425 (OP (op) \
4426 | (((uint64_t)(bits9_10) & 0x3) << 21) \
4427 | (((uint64_t)(xop)) & 0x7ff))
4428 #define VX_SPE_CRFD_MASK VX_SPE_CRFD(0x3f, 0x7ff, 0x3)
4429
4430 #define VX_SPE2_CLR(op, xop, bit16) \
4431 (OP (op) \
4432 | (((uint64_t)(bit16) & 0x1) << 15) \
4433 | (((uint64_t)(xop)) & 0x7ff))
4434 #define VX_SPE2_CLR_MASK VX_SPE2_CLR(0x3f, 0x7ff, 0x1)
4435
4436 #define VX_SPE2_SPLATB(op, xop, bits19_20) \
4437 (OP (op) \
4438 | (((uint64_t)(bits19_20) & 0x3) << 11) \
4439 | (((uint64_t)(xop)) & 0x7ff))
4440 #define VX_SPE2_SPLATB_MASK VX_SPE2_SPLATB(0x3f, 0x7ff, 0x3)
4441
4442 #define VX_SPE2_OCTET(op, xop, bits16_17) \
4443 (OP (op) \
4444 | (((uint64_t)(bits16_17) & 0x3) << 14) \
4445 | (((uint64_t)(xop)) & 0x7ff))
4446 #define VX_SPE2_OCTET_MASK VX_SPE2_OCTET(0x3f, 0x7ff, 0x7)
4447
4448 #define VX_SPE2_DDHH(op, xop, bit16) \
4449 (OP (op) \
4450 | (((uint64_t)(bit16) & 0x1) << 15) \
4451 | (((uint64_t)(xop)) & 0x7ff))
4452 #define VX_SPE2_DDHH_MASK VX_SPE2_DDHH(0x3f, 0x7ff, 0x1)
4453
4454 #define VX_SPE2_HH(op, xop, bit16, bits19_20) \
4455 (OP (op) \
4456 | (((uint64_t)(bit16) & 0x1) << 15) \
4457 | (((uint64_t)(bits19_20) & 0x3) << 11) \
4458 | (((uint64_t)(xop)) & 0x7ff))
4459 #define VX_SPE2_HH_MASK VX_SPE2_HH(0x3f, 0x7ff, 0x1, 0x3)
4460
4461 #define VX_SPE2_EVMAR(op, xop) \
4462 (OP (op) \
4463 | ((uint64_t)(0x1) << 11) \
4464 | (((uint64_t)(xop)) & 0x7ff))
4465 #define VX_SPE2_EVMAR_MASK \
4466 (VX_SPE2_EVMAR(0x3f, 0x7ff) \
4467 | ((uint64_t)(0x1) << 11))
4468
4469 /* A VX_MASK with the VA field fixed. */
4470 #define VXVA_MASK (VX_MASK | (0x1f << 16))
4471
4472 /* A VX_MASK with the VB field fixed. */
4473 #define VXVB_MASK (VX_MASK | (0x1f << 11))
4474
4475 /* A VX_MASK with the VA and VB fields fixed. */
4476 #define VXVAVB_MASK (VX_MASK | (0x1f << 16) | (0x1f << 11))
4477
4478 /* A VX_MASK with the VD and VA fields fixed. */
4479 #define VXVDVA_MASK (VX_MASK | (0x1f << 21) | (0x1f << 16))
4480
4481 /* A VX_MASK with a UIMM4 field. */
4482 #define VXUIMM4_MASK (VX_MASK | (0x1 << 20))
4483
4484 /* A VX_MASK with a UIMM3 field. */
4485 #define VXUIMM3_MASK (VX_MASK | (0x3 << 19))
4486
4487 /* A VX_MASK with a UIMM2 field. */
4488 #define VXUIMM2_MASK (VX_MASK | (0x7 << 18))
4489
4490 /* A VX_MASK with a PS field. */
4491 #define VXPS_MASK (VX_MASK & ~(0x1 << 9))
4492
4493 /* A VX_MASK with the VA field fixed with a PS field. */
4494 #define VXVAPS_MASK (VXVA_MASK & ~(0x1 << 9))
4495
4496 /* A VX_MASK with the VA field fixed with a MP field. */
4497 #define VXVAM_MASK (VXVA_MASK & ~(0x1 << 16))
4498
4499 /* A VX_MASK for instructions using a BF field. */
4500 #define VXBF_MASK (VX_MASK | (3 << 21))
4501
4502 /* A VX_MASK for instructions with an RC field. */
4503 #define VXRC_MASK (VX_MASK & ~(0x1f << 6))
4504
4505 /* A VX_MASK for instructions with a SH field. */
4506 #define VXSH_MASK (VX_MASK & ~(0x7 << 6))
4507
4508 /* A VA form instruction. */
4509 #define VXA(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x03f))
4510
4511 /* The mask for an VA form instruction. */
4512 #define VXA_MASK VXA(0x3f, 0x3f)
4513
4514 /* A VXA_MASK with a SHB field. */
4515 #define VXASHB_MASK (VXA_MASK | (1 << 10))
4516
4517 /* A VXR form instruction. */
4518 #define VXR(op, xop, rc) \
4519 (OP (op) \
4520 | (((uint64_t)(rc) & 1) << 10) \
4521 | (((uint64_t)(xop)) & 0x3ff))
4522
4523 /* The mask for a VXR form instruction. */
4524 #define VXR_MASK VXR(0x3f, 0x3ff, 1)
4525
4526 /* A VX form instruction with a VA tertiary opcode. */
4527 #define VXVA(op, xop, vaop) (VX(op,xop) | (((vaop) & 0x1f) << 16))
4528
4529 #define VXASH(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1f) << 1))
4530 #define VXASH_MASK VXASH (0x3f, 0x1f)
4531
4532 /* An X form instruction. */
4533 #define X(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x3ff) << 1))
4534
4535 /* A X form instruction for Quad-Precision FP Instructions. */
4536 #define XVA(op, xop, vaop) (X(op,xop) | (((vaop) & 0x1f) << 16))
4537
4538 /* An EX form instruction. */
4539 #define EX(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x7ff))
4540
4541 /* The mask for an EX form instruction. */
4542 #define EX_MASK EX (0x3f, 0x7ff)
4543
4544 /* An XX2 form instruction. */
4545 #define XX2(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1ff) << 2))
4546
4547 /* A XX2 form instruction with the VA bits specified. */
4548 #define XX2VA(op, xop, vaop) (XX2(op,xop) | (((vaop) & 0x1f) << 16))
4549
4550 /* An XX3 form instruction. */
4551 #define XX3(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0xff) << 3))
4552
4553 /* An XX3 form instruction with the RC bit specified. */
4554 #define XX3RC(op, xop, rc) \
4555 (OP (op) \
4556 | (((uint64_t)(rc) & 1) << 10) \
4557 | ((((uint64_t)(xop)) & 0x7f) << 3))
4558
4559 /* An XX4 form instruction. */
4560 #define XX4(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x3) << 4))
4561
4562 /* A Z form instruction. */
4563 #define Z(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1ff) << 1))
4564
4565 /* An X form instruction with the RC bit specified. */
4566 #define XRC(op, xop, rc) (X ((op), (xop)) | ((rc) & 1))
4567
4568 /* A X form instruction for Quad-Precision FP Instructions with RC bit. */
4569 #define XVARC(op, xop, vaop, rc) (XVA ((op), (xop), (vaop)) | ((rc) & 1))
4570
4571 /* An X form instruction with the RA bits specified as two ops. */
4572 #define XMMF(op, xop, mop0, mop1) \
4573 (X ((op), (xop)) \
4574 | ((mop0) & 3) << 19 \
4575 | ((mop1) & 7) << 16)
4576
4577 /* A Z form instruction with the RC bit specified. */
4578 #define ZRC(op, xop, rc) (Z ((op), (xop)) | ((rc) & 1))
4579
4580 /* The mask for an X form instruction. */
4581 #define X_MASK XRC (0x3f, 0x3ff, 1)
4582
4583 /* The mask for an X form instruction with the BF bits specified. */
4584 #define XBF_MASK (X_MASK | (3 << 21))
4585
4586 /* An X form instruction without the RC field specified. */
4587 #define XRC_MASK XRC (0x3f, 0x3ff, 0)
4588
4589 /* An X form wait instruction with everything filled in except the WC
4590 field. */
4591 #define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK)
4592
4593 /* An X form wait instruction with everything filled in except the WC
4594 and PL fields. */
4595 #define XWCPL_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | (3 << 18) | RB_MASK)
4596
4597 /* The mask for an XX1 form instruction. */
4598 #define XX1_MASK X (0x3f, 0x3ff)
4599
4600 /* An XX1_MASK with the RB field fixed. */
4601 #define XX1RB_MASK (XX1_MASK | RB_MASK)
4602
4603 /* The mask for an XX2 form instruction. */
4604 #define XX2_MASK (XX2 (0x3f, 0x1ff) | (0x1f << 16))
4605
4606 /* The mask for an XX2 form instruction with the UIM bits specified. */
4607 #define XX2UIM_MASK (XX2 (0x3f, 0x1ff) | (7 << 18))
4608
4609 /* The mask for an XX2 form instruction with the 4 UIM bits specified. */
4610 #define XX2UIM4_MASK (XX2 (0x3f, 0x1ff) | (1 << 20))
4611
4612 /* The mask for an XX2 form instruction with the BF bits specified. */
4613 #define XX2BF_MASK (XX2_MASK | (3 << 21) | (1))
4614
4615 /* The mask for an XX2 form instruction with the BF and DCMX bits
4616 specified. */
4617 #define XX2BFD_MASK (XX2 (0x3f, 0x1ff) | 1)
4618
4619 /* The mask for an XX2 form instruction with a split DCMX bits
4620 specified. */
4621 #define XX2DCMXS_MASK XX2 (0x3f, 0x1ee)
4622
4623 /* The mask for an XX3 form instruction. */
4624 #define XX3_MASK XX3 (0x3f, 0xff)
4625
4626 /* The mask for an XX3 form instruction with the BF bits specified. */
4627 #define XX3BF_MASK (XX3 (0x3f, 0xff) | (3 << 21) | (1))
4628
4629 /* An X_MASK with an accumulator register and the RA and RB fields fixed. */
4630 #define XACC_MASK (X_MASK | RA_MASK | RB_MASK | (3 << 21))
4631 #define XDMR_MASK XACC_MASK
4632
4633 /* An X_MASK with two dense math register. */
4634 #define XDMRDMR_MASK (X_MASK | RA_MASK | (3 << 21) | (3 << 11))
4635
4636 /* The mask for an XX3 form instruction with the DM or SHW bits
4637 specified. */
4638 #define XX3DM_MASK (XX3 (0x3f, 0x1f) | (1 << 10))
4639 #define XX3SHW_MASK XX3DM_MASK
4640
4641 /* The masks for X* form instructions with an ACC/DMR register. */
4642 #define XX2ACC_MASK (XX2 (0x3f, 0x1ff) | (3 << 21) | 1)
4643 #define XX3ACC_MASK (XX3_MASK | (3 << 21) | 1)
4644 #define XX3DMR_MASK (XX3ACC_MASK | (1 << 11))
4645 #define XX2DMR_MASK (XX2ACC_MASK | (0xf << 17))
4646 #define XX3GERX_MASK (XX3ACC_MASK | (1 << 16))
4647
4648 /* The mask for an XX4 form instruction. */
4649 #define XX4_MASK XX4 (0x3f, 0x3)
4650
4651 /* An X form wait instruction with everything filled in except the WC
4652 field. */
4653 #define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK)
4654
4655 /* The mask for an XMMF form instruction. */
4656 #define XMMF_MASK (XMMF (0x3f, 0x3ff, 3, 7) | (1))
4657
4658 /* The mask for a Z form instruction. */
4659 #define Z_MASK ZRC (0x3f, 0x1ff, 1)
4660 #define Z2_MASK ZRC (0x3f, 0xff, 1)
4661
4662 /* An X_MASK with the RA/VA field fixed. */
4663 #define XRA_MASK (X_MASK | RA_MASK)
4664 #define XVA_MASK XRA_MASK
4665
4666 /* An XRA_MASK with the A_L/W field clear. */
4667 #define XWRA_MASK (XRA_MASK & ~((uint64_t) 1 << 16))
4668 #define XRLA_MASK XWRA_MASK
4669
4670 /* An X_MASK with the RB field fixed. */
4671 #define XRB_MASK (X_MASK | RB_MASK)
4672
4673 /* An X_MASK with the RT field fixed. */
4674 #define XRT_MASK (X_MASK | RT_MASK)
4675
4676 /* An XRT_MASK mask with the 2 L bits clear. */
4677 #define XLRT_MASK (XRT_MASK & ~((uint64_t) 0x3 << 21))
4678
4679 /* An XRT_MASK mask with the 3 L bits clear. */
4680 #define XL3RT_MASK (XRT_MASK & ~((uint64_t) 0x7 << 21))
4681
4682 /* An X_MASK with the RA and RB fields fixed. */
4683 #define XRARB_MASK (X_MASK | RA_MASK | RB_MASK)
4684
4685 /* An XBF_MASK with the RA and RB fields fixed. */
4686 #define XBFRARB_MASK (XBF_MASK | RA_MASK | RB_MASK)
4687
4688 /* An XRARB_MASK, but with the L bit clear. */
4689 #define XRLARB_MASK (XRARB_MASK & ~((uint64_t) 1 << 16))
4690
4691 /* An XRARB_MASK, but with the L bits in a darn instruction clear. */
4692 #define XLRAND_MASK (XRARB_MASK & ~((uint64_t) 3 << 16))
4693
4694 /* An X_MASK with the RT and RA fields fixed. */
4695 #define XRTRA_MASK (X_MASK | RT_MASK | RA_MASK)
4696
4697 /* An X_MASK with the RT and RB fields fixed. */
4698 #define XRTRB_MASK (X_MASK | RT_MASK | RB_MASK)
4699
4700 /* An XRTRA_MASK, but with L bit clear. */
4701 #define XRTLRA_MASK (XRTRA_MASK & ~((uint64_t) 1 << 21))
4702
4703 /* An X_MASK with the RT, RA and RB fields fixed. */
4704 #define XRTRARB_MASK (X_MASK | RT_MASK | RA_MASK | RB_MASK)
4705
4706 /* An XRTRARB_MASK, but with L bit clear. */
4707 #define XRTLRARB_MASK (XRTRARB_MASK & ~((uint64_t) 1 << 21))
4708
4709 /* An XRTRARB_MASK, but with A bit clear. */
4710 #define XRTARARB_MASK (XRTRARB_MASK & ~((uint64_t) 1 << 25))
4711
4712 /* An XRTRARB_MASK, but with BF bits clear. */
4713 #define XRTBFRARB_MASK (XRTRARB_MASK & ~((uint64_t) 7 << 23))
4714
4715 /* An X form instruction with the L bit specified. */
4716 #define XOPL(op, xop, l) \
4717 (X ((op), (xop)) \
4718 | ((((uint64_t)(l)) & 1) << 21))
4719
4720 /* An X form instruction with the 2 L bits specified. */
4721 #define XOPL2(op, xop, l) \
4722 (X ((op), (xop)) \
4723 | ((((uint64_t)(l)) & 3) << 21))
4724
4725 /* An X form instruction with the 3 L bits specified. */
4726 #define XOPL3(op, xop, l) \
4727 (X ((op), (xop)) \
4728 | ((((uint64_t)(l)) & 7) << 21))
4729
4730 /* An X form instruction with the WC and PL bits specified. */
4731 #define XWCPL(op, xop, wc, pl) \
4732 (XOPL3 ((op), (xop), (wc)) \
4733 | ((((uint64_t)(pl)) & 3) << 16))
4734
4735 /* An X form instruction with the L bit and RC bit specified. */
4736 #define XRCL(op, xop, l, rc) \
4737 (XRC ((op), (xop), (rc)) \
4738 | ((((uint64_t)(l)) & 1) << 21))
4739
4740 /* An X form instruction with RT fields specified */
4741 #define XRT(op, xop, rt) \
4742 (X ((op), (xop)) \
4743 | ((((uint64_t)(rt)) & 0x1f) << 21))
4744
4745 /* An X form instruction with RT and RA fields specified */
4746 #define XRTRA(op, xop, rt, ra) \
4747 (X ((op), (xop)) \
4748 | ((((uint64_t)(rt)) & 0x1f) << 21) \
4749 | ((((uint64_t)(ra)) & 0x1f) << 16))
4750
4751 /* The mask for an X form comparison instruction. */
4752 #define XCMP_MASK (X_MASK | (((uint64_t)1) << 22))
4753
4754 /* The mask for an X form comparison instruction with the L field
4755 fixed. */
4756 #define XCMPL_MASK (XCMP_MASK | (((uint64_t)1) << 21))
4757
4758 /* An X form trap instruction with the TO field specified. */
4759 #define XTO(op, xop, to) \
4760 (X ((op), (xop)) \
4761 | ((((uint64_t)(to)) & 0x1f) << 21))
4762 #define XTO_MASK (X_MASK | TO_MASK)
4763
4764 /* An X form tlb instruction with the SH field specified. */
4765 #define XTLB(op, xop, sh) \
4766 (X ((op), (xop)) \
4767 | ((((uint64_t)(sh)) & 0x1f) << 11))
4768 #define XTLB_MASK (X_MASK | SH_MASK)
4769
4770 /* An X form sync instruction. */
4771 #define XSYNC(op, xop, l) \
4772 (X ((op), (xop)) \
4773 | ((((uint64_t)(l)) & 3) << 21))
4774
4775 /* An X form sync instruction with everything filled in except the LS
4776 field. */
4777 #define XSYNC_MASK (0xff9fffff)
4778
4779 /* An X form sync instruction with everything filled in except the L
4780 and E fields. */
4781 #define XSYNCLE_MASK (0xff90ffff)
4782
4783 /* An X form sync instruction. */
4784 #define XSYNCLS(op, xop, l, s) \
4785 (X ((op), (xop)) \
4786 | ((((uint64_t)(l)) & 7) << 21) \
4787 | ((((uint64_t)(s)) & 3) << 16))
4788
4789 /* An X form sync instruction with everything filled in except the
4790 L and SC fields. */
4791 #define XSYNCLS_MASK (0xff1cffff)
4792
4793 /* An X_MASK, but with the EH bit clear. */
4794 #define XEH_MASK (X_MASK & ~((uint64_t )1))
4795
4796 /* An X form AltiVec dss instruction. */
4797 #define XDSS(op, xop, a) (X ((op), (xop)) | ((((uint64_t)(a)) & 1) << 25))
4798 #define XDSS_MASK XDSS(0x3f, 0x3ff, 1)
4799
4800 /* An XFL form instruction. */
4801 #define XFL(op, xop, rc) \
4802 (OP (op) \
4803 | ((((uint64_t)(xop)) & 0x3ff) << 1) \
4804 | (((uint64_t)(rc)) & 1))
4805 #define XFL_MASK XFL (0x3f, 0x3ff, 1)
4806
4807 /* An X form isel instruction. */
4808 #define XISEL(op, xop, cr) (OP (op) | ((xop) << 1) | ((cr) << 6))
4809 #define XISEL_MASK XISEL(0x3f, 0x1f, 0)
4810
4811 /* An XL form instruction with the LK field set to 0. */
4812 #define XL(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x3ff) << 1))
4813
4814 /* An XL form instruction which uses the LK field. */
4815 #define XLLK(op, xop, lk) (XL ((op), (xop)) | ((lk) & 1))
4816
4817 /* The mask for an XL form instruction. */
4818 #define XL_MASK XLLK (0x3f, 0x3ff, 1)
4819
4820 /* An XL_MASK with the RT, RA and RB fields fixed, but S bit clear. */
4821 #define XLS_MASK ((XL_MASK | RT_MASK | RA_MASK | RB_MASK) & ~(1 << 11))
4822
4823 /* An XL form instruction which explicitly sets the BO field. */
4824 #define XLO(op, bo, xop, lk) \
4825 (XLLK ((op), (xop), (lk)) | ((((uint64_t)(bo)) & 0x1f) << 21))
4826 #define XLO_MASK (XL_MASK | BO_MASK)
4827
4828 /* An XL form instruction which sets the BO field and the condition
4829 bits of the BI field. */
4830 #define XLOCB(op, bo, cb, xop, lk) \
4831 (XLO ((op), (bo), (xop), (lk)) | ((((uint64_t)(cb)) & 3) << 16))
4832
4833 /* An XL_MASK with the BB field fixed. */
4834 #define XLBB_MASK (XL_MASK | BB_MASK)
4835
4836 /* A mask for branch instructions using the BH field. */
4837 #define XLBH_MASK (XL_MASK | (BB_MASK & ~(3 << 11)))
4838
4839 /* An XLBH_MASK with the BO field fixed. */
4840 #define XLBOBB_MASK (XLBH_MASK | BO_MASK)
4841
4842 /* An XLBH_MASK with the BO and BI fields fixed. */
4843 #define XLBOBIBB_MASK (XLBOBB_MASK | BI_MASK)
4844
4845 /* An XLBH_MASK with the BO and condition bits of the BI fields fixed. */
4846 #define XLBOCBBB_MASK (XLBOBB_MASK | (3 << 16))
4847
4848 /* An X form mbar instruction with MO field. */
4849 #define XMBAR(op, xop, mo) \
4850 (X ((op), (xop)) \
4851 | ((((uint64_t)(mo)) & 1) << 21))
4852
4853 /* An XO form instruction. */
4854 #define XO(op, xop, oe, rc) \
4855 (OP (op) \
4856 | ((((uint64_t)(xop)) & 0x1ff) << 1) \
4857 | ((((uint64_t)(oe)) & 1) << 10) \
4858 | (((unsigned long)(rc)) & 1))
4859 #define XO_MASK XO (0x3f, 0x1ff, 1, 1)
4860 #define XOL_MASK XO (0x3f, 0x1ff, 0, 1)
4861
4862 /* An XO_MASK with the RB field fixed. */
4863 #define XORB_MASK (XO_MASK | RB_MASK)
4864
4865 /* An XOPS form instruction for paired singles. */
4866 #define XOPS(op, xop, rc) \
4867 (OP (op) \
4868 | ((((uint64_t)(xop)) & 0x3ff) << 1) \
4869 | (((uint64_t)(rc)) & 1))
4870 #define XOPS_MASK XOPS (0x3f, 0x3ff, 1)
4871
4872
4873 /* An XS form instruction. */
4874 #define XS(op, xop, rc) \
4875 (OP (op) \
4876 | ((((uint64_t)(xop)) & 0x1ff) << 2) \
4877 | (((uint64_t)(rc)) & 1))
4878 #define XS_MASK XS (0x3f, 0x1ff, 1)
4879
4880 /* A mask for the FXM version of an XFX form instruction. */
4881 #define XFXFXM_MASK (X_MASK | (1 << 11) | (1 << 20))
4882
4883 /* An XFX form instruction with the FXM field filled in. */
4884 #define XFXM(op, xop, fxm, p4) \
4885 (X ((op), (xop)) \
4886 | ((((uint64_t)(fxm)) & 0xff) << 12) \
4887 | ((uint64_t)(p4) << 20))
4888
4889 /* An XFX form instruction with the SPR field filled in. */
4890 #define XSPR(op, xop, spr) \
4891 (X ((op), (xop)) \
4892 | ((((uint64_t)(spr)) & 0x1f) << 16) \
4893 | ((((uint64_t)(spr)) & 0x3e0) << 6))
4894 #define XSPR_MASK (X_MASK | SPR_MASK)
4895
4896 /* An XFX form instruction with the SPR field filled in except for the
4897 SPRBAT field. */
4898 #define XSPRBAT_MASK (XSPR_MASK &~ SPRBAT_MASK)
4899
4900 /* An XFX form instruction with the SPR field filled in except for the
4901 SPRGQR field. */
4902 #define XSPRGQR_MASK (XSPR_MASK &~ SPRGQR_MASK)
4903
4904 /* An XFX form instruction with the SPR field filled in except for the
4905 SPRG field. */
4906 #define XSPRG_MASK (XSPR_MASK & ~(0x1f << 16))
4907
4908 /* An X form instruction with everything filled in except the E field. */
4909 #define XE_MASK (0xffff7fff)
4910
4911 /* An X form user context instruction. */
4912 #define XUC(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f))
4913 #define XUC_MASK XUC(0x3f, 0x1f)
4914
4915 /* An XW form instruction. */
4916 #define XW(op, xop, rc) \
4917 (OP (op) \
4918 | ((((uint64_t)(xop)) & 0x3f) << 1) \
4919 | ((rc) & 1))
4920 /* The mask for a G form instruction. rc not supported at present. */
4921 #define XW_MASK XW (0x3f, 0x3f, 0)
4922
4923 /* An APU form instruction. */
4924 #define APU(op, xop, rc) \
4925 (OP (op) \
4926 | (((uint64_t)(xop)) & 0x3ff) << 1 \
4927 | ((rc) & 1))
4928
4929 /* The mask for an APU form instruction. */
4930 #define APU_MASK APU (0x3f, 0x3ff, 1)
4931 #define APU_RT_MASK (APU_MASK | RT_MASK)
4932 #define APU_RA_MASK (APU_MASK | RA_MASK)
4933
4934 /* An SVL form instruction. */
4935 #define SVL(op, xop, rc) \
4936 (OP (op) \
4937 | ((((uint64_t)(xop)) & 0x1f) << 1) \
4938 | (((uint64_t)(rc)) & 1))
4939 #define SVL_MASK SVL (0x3f, 0x1f, 1)
4940
4941 /* An SVM form instruction. */
4942 #define SVM(op, xop) \
4943 (OP (op) \
4944 | (((uint64_t)(xop)) & 0x3f))
4945 #define SVM_MASK SVM (0x3f, 0x3f)
4946
4947 /* An SVM2 form instruction. */
4948 #define SVM2(op, xop) \
4949 (OP (op) \
4950 | (((((uint64_t)(xop)) >> 6) & 0x7) << 8) \
4951 | (((uint64_t)(xop)) & 0x3f))
4952 #define SVM2_MASK SVM2 (0x3f, 0x1ff)
4953
4954 /* An SVRM form instruction. */
4955 #define SVRM(op, xop) \
4956 (OP (op) \
4957 | (((uint64_t)(xop)) & 0x3f))
4958 #define SVRM_MASK SVRM (0x3f, 0x3f)
4959
4960 /* An SVI form instruction. */
4961 #define SVI(op, xop) \
4962 (OP (op) \
4963 | (((uint64_t)(xop)) & 0x3f))
4964 #define SVI_MASK SVI (0x3f, 0x3f)
4965
4966 /* An BM2 form instruction. */
4967 #define BM2(op, xop) \
4968 (OP (op) \
4969 | (((uint64_t)(xop)) & 0x1f))
4970 #define BM2_MASK BM2 (0x3f, 0x1f)
4971
4972 /* An VA2 form instruction. */
4973 #define VA2(op, xop, rc) \
4974 (OP (op) \
4975 | ((((uint64_t)(xop)) & 0x1f) << 1) \
4976 | (((uint64_t)(rc)) & 1))
4977 #define VA2_MASK VA2 (0x3f, 0x1f, 0x1)
4978
4979 /* An MM form instruction. */
4980 #define MM(op, xop, rc) \
4981 (OP (op) \
4982 | ((((uint64_t)(xop)) & 0x3f) << 1) \
4983 | (((uint64_t)(rc)) & 1))
4984 #define MM_MASK MM (0x3f, 0x3f, 0x1)
4985
4986 /* An MM form instruction with explicit MMM. */
4987 #define MMXMMM(op, xop, mmm, rc) \
4988 (OP (op) \
4989 | ((((uint64_t)(mmm)) & 0x7) << 8) \
4990 | ((((uint64_t)(xop)) & 0x3f) << 1) \
4991 | (((uint64_t)(rc)) & 1))
4992 #define MMXMMM_MASK MMXMMM (0x3f, 0x3f, 0x7, 0x1)
4993
4994 /* An MM form instruction with explicit FMM. */
4995 #define MMXFMM(op, xop, fmm, rc) \
4996 (OP (op) \
4997 | ((((uint64_t)(fmm)) & 0xf) << 7) \
4998 | ((((uint64_t)(xop)) & 0x3f) << 1) \
4999 | (((uint64_t)(rc)) & 1))
5000 #define MMXFMM_MASK MMXFMM (0x3f, 0x3f, 0xf, 0x1)
5001
5002 /* The BO encodings used in extended conditional branch mnemonics. */
5003 #define BODNZF (0x0)
5004 #define BODNZFP (0x1)
5005 #define BODZF (0x2)
5006 #define BODZFP (0x3)
5007 #define BODNZT (0x8)
5008 #define BODNZTP (0x9)
5009 #define BODZT (0xa)
5010 #define BODZTP (0xb)
5011
5012 #define BOF (0x4)
5013 #define BOFP (0x5)
5014 #define BOFM4 (0x6)
5015 #define BOFP4 (0x7)
5016 #define BOT (0xc)
5017 #define BOTP (0xd)
5018 #define BOTM4 (0xe)
5019 #define BOTP4 (0xf)
5020
5021 #define BODNZ (0x10)
5022 #define BODNZP (0x11)
5023 #define BODZ (0x12)
5024 #define BODZP (0x13)
5025 #define BODNZM4 (0x18)
5026 #define BODNZP4 (0x19)
5027 #define BODZM4 (0x1a)
5028 #define BODZP4 (0x1b)
5029
5030 #define BOU (0x14)
5031
5032 /* The BO16 encodings used in extended VLE conditional branch mnemonics. */
5033 #define BO16F (0x0)
5034 #define BO16T (0x1)
5035
5036 /* The BO32 encodings used in extended VLE conditional branch mnemonics. */
5037 #define BO32F (0x0)
5038 #define BO32T (0x1)
5039 #define BO32DNZ (0x2)
5040 #define BO32DZ (0x3)
5041
5042 /* The BI condition bit encodings used in extended conditional branch
5043 mnemonics. */
5044 #define CBLT (0)
5045 #define CBGT (1)
5046 #define CBEQ (2)
5047 #define CBSO (3)
5048
5049 /* The TO encodings used in extended trap mnemonics. */
5050 #define TOLGT (0x1)
5051 #define TOLLT (0x2)
5052 #define TOEQ (0x4)
5053 #define TOLGE (0x5)
5054 #define TOLNL (0x5)
5055 #define TOLLE (0x6)
5056 #define TOLNG (0x6)
5057 #define TOGT (0x8)
5058 #define TOGE (0xc)
5059 #define TONL (0xc)
5060 #define TOLT (0x10)
5061 #define TOLE (0x14)
5062 #define TONG (0x14)
5063 #define TONE (0x18)
5064 #define TOU (0x1f)
5065 \f
5066 /* Smaller names for the flags so each entry in the opcodes table will
5067 fit on a single line. */
5068 #undef PPC
5069 #define PPC PPC_OPCODE_PPC
5070 #define PPCCOM PPC_OPCODE_PPC | PPC_OPCODE_COMMON
5071 #define POWER4 PPC_OPCODE_POWER4
5072 #define POWER5 PPC_OPCODE_POWER5
5073 #define POWER6 PPC_OPCODE_POWER6
5074 #define POWER7 PPC_OPCODE_POWER7
5075 #define POWER8 PPC_OPCODE_POWER8
5076 #define POWER9 PPC_OPCODE_POWER9
5077 #define POWER10 PPC_OPCODE_POWER10
5078 #define FUTURE PPC_OPCODE_FUTURE
5079 #define CELL PPC_OPCODE_CELL
5080 #define PPC64 PPC_OPCODE_64 | PPC_OPCODE_64_BRIDGE
5081 #define NON32 (PPC_OPCODE_64 | PPC_OPCODE_POWER4 \
5082 | PPC_OPCODE_EFS | PPC_OPCODE_E500MC | PPC_OPCODE_TITAN)
5083 #define PPC403 PPC_OPCODE_403
5084 #define PPC405 PPC_OPCODE_405
5085 #define PPC440 PPC_OPCODE_440
5086 #define PPC464 PPC440
5087 #define PPC476 PPC_OPCODE_476
5088 #define PPC750 PPC_OPCODE_750
5089 #define GEKKO PPC_OPCODE_750
5090 #define BROADWAY PPC_OPCODE_750
5091 #define PPC7450 PPC_OPCODE_7450
5092 #define PPC860 PPC_OPCODE_860
5093 #define PPCPS PPC_OPCODE_PPCPS
5094 #define PPCVEC PPC_OPCODE_ALTIVEC
5095 #define PPCVEC2 (PPC_OPCODE_POWER8 | PPC_OPCODE_E6500)
5096 #define PPCVEC3 PPC_OPCODE_POWER9
5097 #define PPCVSX PPC_OPCODE_VSX
5098 #define PPCVSX2 PPC_OPCODE_POWER8
5099 #define PPCVSX3 PPC_OPCODE_POWER9
5100 #define PPCVSX4 PPC_OPCODE_POWER10
5101 #define PPCVSXF PPC_OPCODE_FUTURE
5102 #define POWER PPC_OPCODE_POWER
5103 #define POWER2 PPC_OPCODE_POWER | PPC_OPCODE_POWER2
5104 #define PWR2COM PPC_OPCODE_POWER | PPC_OPCODE_POWER2 | PPC_OPCODE_COMMON
5105 #define PPCPWR2 (PPC_OPCODE_PPC | PPC_OPCODE_POWER | PPC_OPCODE_POWER2 \
5106 | PPC_OPCODE_COMMON)
5107 #define COM PPC_OPCODE_POWER | PPC_OPCODE_PPC | PPC_OPCODE_COMMON
5108 #define M601 PPC_OPCODE_POWER | PPC_OPCODE_601
5109 #define PWRCOM PPC_OPCODE_POWER | PPC_OPCODE_601 | PPC_OPCODE_COMMON
5110 #define MFDEC1 PPC_OPCODE_POWER
5111 #define MFDEC2 (PPC_OPCODE_PPC | PPC_OPCODE_601 | PPC_OPCODE_BOOKE \
5112 | PPC_OPCODE_TITAN)
5113 #define BOOKE PPC_OPCODE_BOOKE
5114 #define NO371 PPC_OPCODE_BOOKE | PPC_OPCODE_PPCPS | PPC_OPCODE_EFS
5115 #define PPCE300 PPC_OPCODE_E300
5116 #define PPCSPE PPC_OPCODE_SPE
5117 #define PPCSPE2 PPC_OPCODE_SPE2
5118 #define PPCISEL PPC_OPCODE_ISEL
5119 #define PPCEFS PPC_OPCODE_EFS
5120 #define PPCEFS2 PPC_OPCODE_EFS2
5121 #define PPCBRLK PPC_OPCODE_BRLOCK
5122 #define PPCPMR PPC_OPCODE_PMR
5123 #define PPCTMR PPC_OPCODE_TMR
5124 #define PPCCHLK PPC_OPCODE_CACHELCK
5125 #define PPCRFMCI PPC_OPCODE_RFMCI
5126 #define E500MC PPC_OPCODE_E500MC
5127 #define PPCA2 PPC_OPCODE_A2
5128 #define TITAN PPC_OPCODE_TITAN
5129 #define MULHW PPC_OPCODE_405 | PPC_OPCODE_440 | PPC_OPCODE_476 | TITAN
5130 #define E500 PPC_OPCODE_E500
5131 #define E6500 PPC_OPCODE_E6500
5132 #define PPCVLE PPC_OPCODE_VLE
5133 #define PPCHTM PPC_OPCODE_POWER8
5134 #define E200Z4 PPC_OPCODE_E200Z4
5135 #define PPCLSP PPC_OPCODE_LSP
5136 #define SFFS PPC_OPCODE_SFFS
5137 #define SFFS PPC_OPCODE_SFFS
5138 /* Used to mark extended mnemonic in deprecated field so that -Mraw
5139 won't use this variant in disassembly. */
5140 #define EXT PPC_OPCODE_RAW
5141 \f
5142 /* The opcode table.
5143
5144 The format of the opcode table is:
5145
5146 NAME OPCODE MASK FLAGS ANTI {OPERANDS}
5147
5148 NAME is the name of the instruction.
5149 OPCODE is the instruction opcode.
5150 MASK is the opcode mask; this is used to tell the disassembler
5151 which bits in the actual opcode must match OPCODE.
5152 FLAGS are flags indicating which processors support the instruction.
5153 ANTI indicates which processors don't support the instruction.
5154 OPERANDS is the list of operands.
5155
5156 The disassembler reads the table in order and prints the first
5157 instruction which matches, so this table is sorted to put more
5158 specific instructions before more general instructions.
5159
5160 This table must be sorted by major opcode. Please try to keep it
5161 vaguely sorted within major opcode too, except of course where
5162 constrained otherwise by disassembler operation. */
5163
5164 const struct powerpc_opcode powerpc_opcodes[] = {
5165 {"attn", X(0,256), X_MASK, POWER4|PPCA2, PPC476|PPCVLE, {0}},
5166 {"tdlgti", OPTO(2,TOLGT), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
5167 {"tdllti", OPTO(2,TOLLT), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
5168 {"tdeqi", OPTO(2,TOEQ), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
5169 {"tdlgei", OPTO(2,TOLGE), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
5170 {"tdlnli", OPTO(2,TOLNL), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
5171 {"tdllei", OPTO(2,TOLLE), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
5172 {"tdlngi", OPTO(2,TOLNG), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
5173 {"tdgti", OPTO(2,TOGT), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
5174 {"tdgei", OPTO(2,TOGE), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
5175 {"tdnli", OPTO(2,TONL), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
5176 {"tdlti", OPTO(2,TOLT), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
5177 {"tdlei", OPTO(2,TOLE), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
5178 {"tdngi", OPTO(2,TONG), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
5179 {"tdnei", OPTO(2,TONE), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
5180 {"tdui", OPTO(2,TOU), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
5181 {"tdi", OP(2), OP_MASK, PPC64, PPCVLE, {TO, RA, SI}},
5182
5183 {"twlgti", OPTO(3,TOLGT), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
5184 {"tlgti", OPTO(3,TOLGT), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
5185 {"twllti", OPTO(3,TOLLT), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
5186 {"tllti", OPTO(3,TOLLT), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
5187 {"tweqi", OPTO(3,TOEQ), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
5188 {"teqi", OPTO(3,TOEQ), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
5189 {"twlgei", OPTO(3,TOLGE), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
5190 {"tlgei", OPTO(3,TOLGE), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
5191 {"twlnli", OPTO(3,TOLNL), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
5192 {"tlnli", OPTO(3,TOLNL), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
5193 {"twllei", OPTO(3,TOLLE), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
5194 {"tllei", OPTO(3,TOLLE), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
5195 {"twlngi", OPTO(3,TOLNG), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
5196 {"tlngi", OPTO(3,TOLNG), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
5197 {"twgti", OPTO(3,TOGT), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
5198 {"tgti", OPTO(3,TOGT), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
5199 {"twgei", OPTO(3,TOGE), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
5200 {"tgei", OPTO(3,TOGE), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
5201 {"twnli", OPTO(3,TONL), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
5202 {"tnli", OPTO(3,TONL), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
5203 {"twlti", OPTO(3,TOLT), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
5204 {"tlti", OPTO(3,TOLT), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
5205 {"twlei", OPTO(3,TOLE), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
5206 {"tlei", OPTO(3,TOLE), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
5207 {"twngi", OPTO(3,TONG), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
5208 {"tngi", OPTO(3,TONG), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
5209 {"twnei", OPTO(3,TONE), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
5210 {"tnei", OPTO(3,TONE), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
5211 {"twui", OPTO(3,TOU), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
5212 {"tui", OPTO(3,TOU), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
5213 {"twi", OP(3), OP_MASK, PPCCOM, PPCVLE, {TO, RA, SI}},
5214 {"ti", OP(3), OP_MASK, PWRCOM, PPCVLE, {TO, RA, SI}},
5215
5216 {"ps_cmpu0", X (4, 0), XBF_MASK, PPCPS, 0, {BF, FRA, FRB}},
5217 {"vaddubm", VX (4, 0), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5218 {"vmul10cuq", VX (4, 1), VXVB_MASK, PPCVEC3, 0, {VD, VA}},
5219 {"vmaxub", VX (4, 2), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5220 {"vrlb", VX (4, 4), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5221 {"vrlq", VX (4, 5), VX_MASK, POWER10, 0, {VD, VA, VB}},
5222 {"vcmpequb", VXR(4, 6,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
5223 {"vcmpneb", VXR(4, 7,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
5224 {"vmuloub", VX (4, 8), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5225 {"vaddfp", VX (4, 10), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5226 {"vdivuq", VX (4, 11), VX_MASK, POWER10, 0, {VD, VA, VB}},
5227 {"psq_lx", XW (4, 6,0), XW_MASK, PPCPS, 0, {FRT,RA,RB,PSWM,PSQM}},
5228 {"vmrghb", VX (4, 12), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5229 {"vstribl", VXVA(4,13,0), VXVA_MASK, POWER10, 0, {VD, VB}},
5230 {"vstribr", VXVA(4,13,1), VXVA_MASK, POWER10, 0, {VD, VB}},
5231 {"vstrihl", VXVA(4,13,2), VXVA_MASK, POWER10, 0, {VD, VB}},
5232 {"vstrihr", VXVA(4,13,3), VXVA_MASK, POWER10, 0, {VD, VB}},
5233 {"psq_stx", XW (4, 7,0), XW_MASK, PPCPS, 0, {FRS,RA,RB,PSWM,PSQM}},
5234 {"vpkuhum", VX (4, 14), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5235 {"vinsbvlx", VX (4, 15), VX_MASK, POWER10, 0, {VD, RA, VB}},
5236 {"mulhhwu", XRC(4, 8,0), X_MASK, MULHW, 0, {RT, RA, RB}},
5237 {"mulhhwu.", XRC(4, 8,1), X_MASK, MULHW, 0, {RT, RA, RB}},
5238 {"mtvsrbmi", DX (4,10), DX_MASK, POWER10, 0, {VD, DXD}},
5239 {"ps_sum0", A (4, 10,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
5240 {"ps_sum0.", A (4, 10,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
5241 {"vsldbi", VX (4, 22), VXSH_MASK, POWER10, 0, {VD, VA, VB, SH3}},
5242 {"ps_sum1", A (4, 11,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
5243 {"ps_sum1.", A (4, 11,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
5244 {"vextdubvlx", VX (4, 24), VXRC_MASK, POWER10, 0, {VD, VA, VB, RC}},
5245 {"ps_muls0", A (4, 12,0), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
5246 {"machhwu", XO (4, 12,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5247 {"vextdubvrx", VX (4, 25), VXRC_MASK, POWER10, 0, {VD, VA, VB, RC}},
5248 {"ps_muls0.", A (4, 12,1), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
5249 {"machhwu.", XO (4, 12,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5250 {"vextduhvlx", VX (4, 26), VXRC_MASK, POWER10, 0, {VD, VA, VB, RC}},
5251 {"ps_muls1", A (4, 13,0), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
5252 {"dsld", VA2(4,26,0), VA2_MASK, SFFS, PPCVLE, {RT, RA, RB, RC}},
5253 {"dsld.", VA2(4,26,1), VA2_MASK, SFFS, PPCVLE, {RT, RA, RB, RC}},
5254 {"dsrd", VA2(4,27,0), VA2_MASK, SFFS, PPCVLE, {RT, RA, RB, RC}},
5255 {"dsrd.", VA2(4,27,1), VA2_MASK, SFFS, PPCVLE, {RT, RA, RB, RC}},
5256 {"vextduhvrx", VX (4, 27), VXRC_MASK, POWER10, 0, {VD, VA, VB, RC}},
5257 {"ps_muls1.", A (4, 13,1), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
5258 {"vextduwvlx", VX (4, 28), VXRC_MASK, POWER10, 0, {VD, VA, VB, RC}},
5259 {"ps_madds0", A (4, 14,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
5260 {"vextduwvrx", VX (4, 29), VXRC_MASK, POWER10, 0, {VD, VA, VB, RC}},
5261 {"ps_madds0.", A (4, 14,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
5262 {"vextddvlx", VX (4, 30), VXRC_MASK, POWER10, 0, {VD, VA, VB, RC}},
5263 {"ps_madds1", A (4, 15,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
5264 {"vextddvrx", VX (4, 31), VXRC_MASK, POWER10, 0, {VD, VA, VB, RC}},
5265 {"ps_madds1.", A (4, 15,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
5266 {"vmhaddshs", VXA(4, 32), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
5267 {"vmhraddshs", VXA(4, 33), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
5268 {"vmladduhm", VXA(4, 34), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
5269 {"vmsumudm", VXA(4, 35), VXA_MASK, PPCVEC3, 0, {VD, VA, VB, VC}},
5270 {"ps_div", A (4, 18,0), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
5271 {"vmsumcud", VXA(4, 23), VXA_MASK, POWER10, 0, {VD, VA, VB, VC}},
5272 {"vmsumubm", VXA(4, 36), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
5273 {"ps_div.", A (4, 18,1), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
5274 {"vmsummbm", VXA(4, 37), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
5275 {"vmsumuhm", VXA(4, 38), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
5276 {"vmsumuhs", VXA(4, 39), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
5277 {"ps_sub", A (4, 20,0), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
5278 {"vmsumshm", VXA(4, 40), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
5279 {"ps_sub.", A (4, 20,1), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
5280 {"vmsumshs", VXA(4, 41), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
5281 {"ps_add", A (4, 21,0), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
5282 {"vsel", VXA(4, 42), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
5283 {"ps_add.", A (4, 21,1), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
5284 {"vperm", VXA(4, 43), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
5285 {"vsldoi", VXA(4, 44), VXASHB_MASK, PPCVEC, 0, {VD, VA, VB, SHB}},
5286 {"vpermxor", VXA(4, 45), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}},
5287 {"ps_sel", A (4, 23,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
5288 {"vmaddfp", VXA(4, 46), VXA_MASK, PPCVEC, 0, {VD, VA, VC, VB}},
5289 {"ps_sel.", A (4, 23,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
5290 {"vnmsubfp", VXA(4, 47), VXA_MASK, PPCVEC, 0, {VD, VA, VC, VB}},
5291 {"ps_res", A (4, 24,0), AFRAFRC_MASK, PPCPS, 0, {FRT, FRB}},
5292 {"maddhd", VXA(4, 48), VXA_MASK, POWER9, 0, {RT, RA, RB, RC}},
5293 {"ps_res.", A (4, 24,1), AFRAFRC_MASK, PPCPS, 0, {FRT, FRB}},
5294 {"maddhdu", VXA(4, 49), VXA_MASK, POWER9, 0, {RT, RA, RB, RC}},
5295 {"ps_mul", A (4, 25,0), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
5296 {"ps_mul.", A (4, 25,1), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
5297 {"maddedu", VXA(4, 50), VXA_MASK, SFFS, PPCVLE, {RT, RA, RB, RC}},
5298 {"maddld", VXA(4, 51), VXA_MASK, POWER9, 0, {RT, RA, RB, RC}},
5299 {"maddedus", VXA(4, 57), VXA_MASK, SFFS, PPCVLE, {RT, RA, RB, RC}},
5300 {"divmod2du", VXA(4, 58), VXA_MASK, SFFS, 0, {RT, RA, RB, RC}},
5301 {"ps_rsqrte", A (4, 26,0), AFRAFRC_MASK, PPCPS, 0, {FRT, FRB}},
5302 {"ps_rsqrte.", A (4, 26,1), AFRAFRC_MASK, PPCPS, 0, {FRT, FRB}},
5303 {"ps_msub", A (4, 28,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
5304 {"ps_msub.", A (4, 28,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
5305 {"ps_madd", A (4, 29,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
5306 {"ps_madd.", A (4, 29,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
5307 {"vpermr", VXA(4, 59), VXA_MASK, PPCVEC3, 0, {VD, VA, VB, VC}},
5308 {"ps_nmsub", A (4, 30,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
5309 {"vaddeuqm", VXA(4, 60), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}},
5310 {"ps_nmsub.", A (4, 30,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
5311 {"vaddecuq", VXA(4, 61), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}},
5312 {"ps_nmadd", A (4, 31,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
5313 {"vsubeuqm", VXA(4, 62), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}},
5314 {"ps_nmadd.", A (4, 31,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
5315 {"vsubecuq", VXA(4, 63), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}},
5316 {"ps_cmpo0", X (4, 32), XBF_MASK, PPCPS, 0, {BF, FRA, FRB}},
5317 {"vadduhm", VX (4, 64), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5318 {"vmul10ecuq", VX (4, 65), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
5319 {"vmaxuh", VX (4, 66), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5320 {"vrlh", VX (4, 68), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5321 {"vrlqmi", VX (4, 69), VX_MASK, POWER10, 0, {VD, VA, VB}},
5322 {"vcmpequh", VXR(4, 70,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
5323 {"vcmpneh", VXR(4, 71,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
5324 {"vmulouh", VX (4, 72), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5325 {"vsubfp", VX (4, 74), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5326 {"psq_lux", XW (4, 38,0), XW_MASK, PPCPS, 0, {FRT,RA,RB,PSWM,PSQM}},
5327 {"vmrghh", VX (4, 76), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5328 {"psq_stux", XW (4, 39,0), XW_MASK, PPCPS, 0, {FRS,RA,RB,PSWM,PSQM}},
5329 {"vpkuwum", VX (4, 78), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5330 {"vinshvlx", VX (4, 79), VX_MASK, POWER10, 0, {VD, RA, VB}},
5331 {"ps_neg", XRC(4, 40,0), XRA_MASK, PPCPS, 0, {FRT, FRB}},
5332 {"mulhhw", XRC(4, 40,0), X_MASK, MULHW, 0, {RT, RA, RB}},
5333 {"ps_neg.", XRC(4, 40,1), XRA_MASK, PPCPS, 0, {FRT, FRB}},
5334 {"mulhhw.", XRC(4, 40,1), X_MASK, MULHW, 0, {RT, RA, RB}},
5335 {"machhw", XO (4, 44,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5336 {"machhw.", XO (4, 44,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5337 {"nmachhw", XO (4, 46,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5338 {"nmachhw.", XO (4, 46,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5339 {"ps_cmpu1", X (4, 64), XBF_MASK, PPCPS, 0, {BF, FRA, FRB}},
5340 {"vadduwm", VX (4, 128), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5341 {"vmaxuw", VX (4, 130), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5342 {"vrlw", VX (4, 132), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5343 {"vrlwmi", VX (4, 133), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
5344 {"vcmpequw", VXR(4, 134,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
5345 {"vcmpnew", VXR(4, 135,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
5346 {"vmulouw", VX (4, 136), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5347 {"vmuluwm", VX (4, 137), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5348 {"vdivuw", VX (4, 139), VX_MASK, POWER10, 0, {VD, VA, VB}},
5349 {"vmrghw", VX (4, 140), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5350 {"vpkuhus", VX (4, 142), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5351 {"vinswvlx", VX (4, 143), VX_MASK, POWER10, 0, {VD, RA, VB}},
5352 {"ps_mr", XRC(4, 72,0), XRA_MASK, PPCPS, 0, {FRT, FRB}},
5353 {"ps_mr.", XRC(4, 72,1), XRA_MASK, PPCPS, 0, {FRT, FRB}},
5354 {"machhwsu", XO (4, 76,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5355 {"machhwsu.", XO (4, 76,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5356 {"ps_cmpo1", X (4, 96), XBF_MASK, PPCPS, 0, {BF, FRA, FRB}},
5357 {"vaddudm", VX (4, 192), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5358 {"vmaxud", VX (4, 194), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5359 {"vrld", VX (4, 196), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5360 {"vrldmi", VX (4, 197), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
5361 {"vcmpeqfp", VXR(4, 198,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
5362 {"vcmpequd", VXR(4, 199,0), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
5363 {"vmuloud", VX (4, 200), VX_MASK, POWER10, 0, {VD, VA, VB}},
5364 {"vdivud", VX (4, 203), VX_MASK, POWER10, 0, {VD, VA, VB}},
5365 {"vpkuwus", VX (4, 206), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5366 {"vinsw", VX (4, 207), VXUIMM4_MASK, POWER10, 0, {VD, RB, UIMM4}},
5367 {"machhws", XO (4, 108,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5368 {"machhws.", XO (4, 108,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5369 {"nmachhws", XO (4, 110,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5370 {"nmachhws.", XO (4, 110,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5371 {"vadduqm", VX (4, 256), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5372 {"vcmpuq", VX (4, 257), VXBF_MASK, POWER10, 0, {BF, VA, VB}},
5373 {"vmaxsb", VX (4, 258), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5374 {"vslb", VX (4, 260), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5375 {"vslq", VX (4, 261), VX_MASK, POWER10, 0, {VD, VA, VB}},
5376 {"vcmpnezb", VXR(4, 263,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
5377 {"vmulosb", VX (4, 264), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5378 {"vrefp", VX (4, 266), VXVA_MASK, PPCVEC, 0, {VD, VB}},
5379 {"vdivsq", VX (4, 267), VX_MASK, POWER10, 0, {VD, VA, VB}},
5380 {"vmrglb", VX (4, 268), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5381 {"vpkshus", VX (4, 270), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5382 {"vinsbvrx", VX (4, 271), VX_MASK, POWER10, 0, {VD, RA, VB}},
5383 {"ps_nabs", XRC(4, 136,0), XRA_MASK, PPCPS, 0, {FRT, FRB}},
5384 {"mulchwu", XRC(4, 136,0), X_MASK, MULHW, 0, {RT, RA, RB}},
5385 {"ps_nabs.", XRC(4, 136,1), XRA_MASK, PPCPS, 0, {FRT, FRB}},
5386 {"mulchwu.", XRC(4, 136,1), X_MASK, MULHW, 0, {RT, RA, RB}},
5387 {"macchwu", XO (4, 140,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5388 {"macchwu.", XO (4, 140,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5389 {"vaddcuq", VX (4, 320), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5390 {"vcmpsq", VX (4, 321), VXBF_MASK, POWER10, 0, {BF, VA, VB}},
5391 {"vmaxsh", VX (4, 322), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5392 {"vslh", VX (4, 324), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5393 {"vrlqnm", VX (4, 325), VX_MASK, POWER10, 0, {VD, VA, VB}},
5394 {"vcmpnezh", VXR(4, 327,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
5395 {"vmulosh", VX (4, 328), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5396 {"vrsqrtefp", VX (4, 330), VXVA_MASK, PPCVEC, 0, {VD, VB}},
5397 {"vmrglh", VX (4, 332), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5398 {"vpkswus", VX (4, 334), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5399 {"vinshvrx", VX (4, 335), VX_MASK, POWER10, 0, {VD, RA, VB}},
5400 {"mulchw", XRC(4, 168,0), X_MASK, MULHW, 0, {RT, RA, RB}},
5401 {"mulchw.", XRC(4, 168,1), X_MASK, MULHW, 0, {RT, RA, RB}},
5402 {"macchw", XO (4, 172,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5403 {"macchw.", XO (4, 172,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5404 {"nmacchw", XO (4, 174,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5405 {"nmacchw.", XO (4, 174,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5406 {"vaddcuw", VX (4, 384), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5407 {"vmaxsw", VX (4, 386), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5408 {"vslw", VX (4, 388), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5409 {"vrlwnm", VX (4, 389), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
5410 {"vcmpnezw", VXR(4, 391,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
5411 {"vmulosw", VX (4, 392), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5412 {"vexptefp", VX (4, 394), VXVA_MASK, PPCVEC, 0, {VD, VB}},
5413 {"vdivsw", VX (4, 395), VX_MASK, POWER10, 0, {VD, VA, VB}},
5414 {"vmrglw", VX (4, 396), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5415 {"vclrlb", VX (4, 397), VX_MASK, POWER10, 0, {VD, VA, RB}},
5416 {"vpkshss", VX (4, 398), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5417 {"vinswvrx", VX (4, 399), VX_MASK, POWER10, 0, {VD, RA, VB}},
5418 {"macchwsu", XO (4, 204,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5419 {"macchwsu.", XO (4, 204,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5420 {"vmaxsd", VX (4, 450), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5421 {"vsl", VX (4, 452), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5422 {"vrldnm", VX (4, 453), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
5423 {"vcmpgefp", VXR(4, 454,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
5424 {"vcmpequq", VXR(4, 455,0), VXR_MASK, POWER10, 0, {VD, VA, VB}},
5425 {"vmulosd", VX (4, 456), VX_MASK, POWER10, 0, {VD, VA, VB}},
5426 {"vmulld", VX (4, 457), VX_MASK, POWER10, 0, {VD, VA, VB}},
5427 {"vlogefp", VX (4, 458), VXVA_MASK, PPCVEC, 0, {VD, VB}},
5428 {"vdivsd", VX (4, 459), VX_MASK, POWER10, 0, {VD, VA, VB}},
5429 {"vclrrb", VX (4, 461), VX_MASK, POWER10, 0, {VD, VA, RB}},
5430 {"vpkswss", VX (4, 462), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5431 {"vinsd", VX (4, 463), VXUIMM4_MASK, POWER10, 0, {VD, RB, UIMM4}},
5432 {"macchws", XO (4, 236,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5433 {"macchws.", XO (4, 236,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5434 {"nmacchws", XO (4, 238,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5435 {"nmacchws.", XO (4, 238,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5436 {"evaddw", VX (4, 512), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5437 {"vaddubs", VX (4, 512), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5438 {"vmul10uq", VX (4, 513), VXVB_MASK, PPCVEC3, 0, {VD, VA}},
5439 {"evaddiw", VX (4, 514), VX_MASK, PPCSPE, 0, {RS, RB, UIMM}},
5440 {"vminub", VX (4, 514), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5441 {"evsubw", VX (4, 516), VX_MASK, PPCSPE, EXT, {RS, RB, RA}},
5442 {"evsubfw", VX (4, 516), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5443 {"vsrb", VX (4, 516), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5444 {"vsrq", VX (4, 517), VX_MASK, POWER10, 0, {VD, VA, VB}},
5445 {"evsubiw", VX (4, 518), VX_MASK, PPCSPE, EXT, {RS, RB, UIMM}},
5446 {"evsubifw", VX (4, 518), VX_MASK, PPCSPE, 0, {RS, UIMM, RB}},
5447 {"vcmpgtub", VXR(4, 518,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
5448 {"evabs", VX (4, 520), VX_MASK, PPCSPE, 0, {RS, RA}},
5449 {"vmuleub", VX (4, 520), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5450 {"evneg", VX (4, 521), VX_MASK, PPCSPE, 0, {RS, RA}},
5451 {"evextsb", VX (4, 522), VX_MASK, PPCSPE, 0, {RS, RA}},
5452 {"vrfin", VX (4, 522), VXVA_MASK, PPCVEC, 0, {VD, VB}},
5453 {"vdiveuq", VX (4, 523), VX_MASK, POWER10, 0, {VD, VA, VB}},
5454 {"evextsh", VX (4, 523), VX_MASK, PPCSPE, 0, {RS, RA}},
5455 {"evrndw", VX (4, 524), VX_MASK, PPCSPE, 0, {RS, RA}},
5456 {"vspltb", VX (4, 524), VXUIMM4_MASK, PPCVEC, 0, {VD, VB, UIMM4}},
5457 {"vextractub", VX (4, 525), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
5458 {"evcntlzw", VX (4, 525), VX_MASK, PPCSPE, 0, {RS, RA}},
5459 {"evcntlsw", VX (4, 526), VX_MASK, PPCSPE, 0, {RS, RA}},
5460 {"vupkhsb", VX (4, 526), VXVA_MASK, PPCVEC, 0, {VD, VB}},
5461 {"vinsblx", VX (4, 527), VX_MASK, POWER10, 0, {VD, RA, RB}},
5462 {"brinc", VX (4, 527), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5463 {"ps_abs", XRC(4, 264,0), XRA_MASK, PPCPS, 0, {FRT, FRB}},
5464 {"ps_abs.", XRC(4, 264,1), XRA_MASK, PPCPS, 0, {FRT, FRB}},
5465 {"evand", VX (4, 529), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5466 {"evandc", VX (4, 530), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5467 {"vsrdbi", VX (4, 534), VXSH_MASK, POWER10, 0, {VD, VA, VB, SH3}},
5468 {"evxor", VX (4, 534), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5469 {"evmr", VX (4, 535), VX_MASK, PPCSPE, EXT, {RS, RAB}},
5470 {"evor", VX (4, 535), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5471 {"evnot", VX (4, 536), VX_MASK, PPCSPE, EXT, {RS, RAB}},
5472 {"evnor", VX (4, 536), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5473 {"get", APU(4, 268,0), APU_RA_MASK, PPC405, 0, {RT, FSL}},
5474 {"eveqv", VX (4, 537), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5475 {"evorc", VX (4, 539), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5476 {"evnand", VX (4, 542), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5477 {"evsrwu", VX (4, 544), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5478 {"evsrws", VX (4, 545), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5479 {"evsrwiu", VX (4, 546), VX_MASK, PPCSPE, 0, {RS, RA, EVUIMM}},
5480 {"evsrwis", VX (4, 547), VX_MASK, PPCSPE, 0, {RS, RA, EVUIMM}},
5481 {"evslw", VX (4, 548), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5482 {"evslwi", VX (4, 550), VX_MASK, PPCSPE, 0, {RS, RA, EVUIMM}},
5483 {"evrlw", VX (4, 552), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5484 {"evsplati", VX (4, 553), VX_MASK, PPCSPE, 0, {RS, SIMM}},
5485 {"evrlwi", VX (4, 554), VX_MASK, PPCSPE, 0, {RS, RA, EVUIMM}},
5486 {"evsplatfi", VX (4, 555), VX_MASK, PPCSPE, 0, {RS, SIMM}},
5487 {"evmergehi", VX (4, 556), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5488 {"evmergelo", VX (4, 557), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5489 {"evmergehilo", VX (4, 558), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5490 {"evmergelohi", VX (4, 559), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5491 {"evcmpgtu", VX (4, 560), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
5492 {"evcmpgts", VX (4, 561), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
5493 {"evcmpltu", VX (4, 562), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
5494 {"evcmplts", VX (4, 563), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
5495 {"evcmpeq", VX (4, 564), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
5496 {"cget", APU(4, 284,0), APU_RA_MASK, PPC405, 0, {RT, FSL}},
5497 {"vadduhs", VX (4, 576), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5498 {"vmul10euq", VX (4, 577), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
5499 {"vminuh", VX (4, 578), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5500 {"vsrh", VX (4, 580), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5501 {"vcmpgtuh", VXR(4, 582,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
5502 {"vmuleuh", VX (4, 584), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5503 {"vrfiz", VX (4, 586), VXVA_MASK, PPCVEC, 0, {VD, VB}},
5504 {"vsplth", VX (4, 588), VXUIMM3_MASK, PPCVEC, 0, {VD, VB, UIMM3}},
5505 {"vextractuh", VX (4, 589), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
5506 {"vupkhsh", VX (4, 590), VXVA_MASK, PPCVEC, 0, {VD, VB}},
5507 {"vinshlx", VX (4, 591), VX_MASK, POWER10, 0, {VD, RA, RB}},
5508 {"nget", APU(4, 300,0), APU_RA_MASK, PPC405, 0, {RT, FSL}},
5509 {"evsel", EVSEL(4,79), EVSEL_MASK, PPCSPE, 0, {RS, RA, RB, CRFS}},
5510 {"ncget", APU(4, 316,0), APU_RA_MASK, PPC405, 0, {RT, FSL}},
5511 {"evfsadd", VX (4, 640), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5512 {"vadduws", VX (4, 640), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5513 {"evfssub", VX (4, 641), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5514 {"evfsmadd", VX (4, 642), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5515 {"vminuw", VX (4, 642), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5516 {"evfsmsub", VX (4, 643), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5517 {"evfsabs", VX (4, 644), VX_MASK, PPCSPE, 0, {RS, RA}},
5518 {"vsrw", VX (4, 644), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5519 {"evfsnabs", VX (4, 645), VX_MASK, PPCSPE, 0, {RS, RA}},
5520 {"evfsneg", VX (4, 646), VX_MASK, PPCSPE, 0, {RS, RA}},
5521 {"vcmpgtuw", VXR(4, 646,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
5522 {"vcmpgtuq", VXR(4, 647,0), VXR_MASK, POWER10, 0, {VD, VA, VB}},
5523 {"evfssqrt", VX_RB_CONST(4, 647, 0), VX_RB_CONST_MASK, PPCEFS2, 0, {RD, RA}},
5524 {"vmuleuw", VX (4, 648), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5525 {"evfsmul", VX (4, 648), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5526 {"vmulhuw", VX (4, 649), VX_MASK, POWER10, 0, {VD, VA, VB}},
5527 {"evfsdiv", VX (4, 649), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5528 {"evfsnmadd", VX (4, 650), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5529 {"vrfip", VX (4, 650), VXVA_MASK, PPCVEC, 0, {VD, VB}},
5530 {"vdiveuw", VX (4, 651), VX_MASK, POWER10, 0, {VD, VA, VB}},
5531 {"evfsnmsub", VX (4, 651), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5532 {"evfscmpgt", VX (4, 652), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
5533 {"vspltw", VX (4, 652), VXUIMM2_MASK, PPCVEC, 0, {VD, VB, UIMM2}},
5534 {"vextractuw", VX (4, 653), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
5535 {"evfscmplt", VX (4, 653), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
5536 {"evfscmpeq", VX (4, 654), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
5537 {"vupklsb", VX (4, 654), VXVA_MASK, PPCVEC, 0, {VD, VB}},
5538 {"vinswlx", VX (4, 655), VX_MASK, POWER10, 0, {VD, RA, RB}},
5539 {"evfscfui", VX (4, 656), VX_MASK, PPCSPE, 0, {RS, RB}},
5540 {"evfscfh", VX_RA_CONST(4, 657, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
5541 {"evfscfsi", VX (4, 657), VX_MASK, PPCSPE, 0, {RS, RB}},
5542 {"evfscfuf", VX (4, 658), VX_MASK, PPCSPE, 0, {RS, RB}},
5543 {"evfscfsf", VX (4, 659), VX_MASK, PPCSPE, 0, {RS, RB}},
5544 {"evfsctui", VX (4, 660), VX_MASK, PPCSPE, 0, {RS, RB}},
5545 {"evfscth", VX_RA_CONST(4, 661, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
5546 {"evfsctsi", VX (4, 661), VX_MASK, PPCSPE, 0, {RS, RB}},
5547 {"evfsctuf", VX (4, 662), VX_MASK, PPCSPE, 0, {RS, RB}},
5548 {"evfsctsf", VX (4, 663), VX_MASK, PPCSPE, 0, {RS, RB}},
5549 {"evfsctuiz", VX (4, 664), VX_MASK, PPCSPE, 0, {RS, RB}},
5550 {"put", APU(4, 332,0), APU_RT_MASK, PPC405, 0, {RA, FSL}},
5551 {"evfsctsiz", VX (4, 666), VX_MASK, PPCSPE, 0, {RS, RB}},
5552 {"evfststgt", VX (4, 668), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
5553 {"evfststlt", VX (4, 669), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
5554 {"evfststeq", VX (4, 670), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
5555 {"evfsmax", VX (4, 672), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
5556 {"evfsmin", VX (4, 673), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
5557 {"evfsaddsub", VX (4, 674), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
5558 {"evfssubadd", VX (4, 675), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
5559 {"evfssum", VX (4, 676), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
5560 {"evfsdiff", VX (4, 677), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
5561 {"evfssumdiff", VX (4, 678), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
5562 {"evfsdiffsum", VX (4, 679), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
5563 {"evfsaddx", VX (4, 680), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
5564 {"evfssubx", VX (4, 681), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
5565 {"evfsaddsubx", VX (4, 682), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
5566 {"evfssubaddx", VX (4, 683), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
5567 {"evfsmulx", VX (4, 684), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
5568 {"evfsmule", VX (4, 686), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
5569 {"evfsmulo", VX (4, 687), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
5570 {"efsmax", VX (4, 688), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
5571 {"efsmin", VX (4, 689), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
5572 {"efdmax", VX (4, 696), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
5573 {"cput", APU(4, 348,0), APU_RT_MASK, PPC405, 0, {RA, FSL}},
5574 {"efdmin", VX (4, 697), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
5575 {"efsadd", VX (4, 704), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
5576 {"evsadd", VX (4, 704), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
5577 {"efssub", VX (4, 705), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
5578 {"evssub", VX (4, 705), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
5579 {"efsmadd", VX (4, 706), VX_MASK, PPCEFS2, 0, {RS, RA, RB}},
5580 {"vminud", VX (4, 706), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5581 {"efsmsub", VX (4, 707), VX_MASK, PPCEFS2, 0, {RS, RA, RB}},
5582 {"efsabs", VX (4, 708), VX_MASK, PPCEFS, 0, {RS, RA}},
5583 {"evsabs", VX (4, 708), VX_MASK, PPCEFS, 0, {RS, RA}},
5584 {"vsr", VX (4, 708), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5585 {"efsnabs", VX (4, 709), VX_MASK, PPCEFS, 0, {RS, RA}},
5586 {"evsnabs", VX (4, 709), VX_MASK, PPCEFS, 0, {RS, RA}},
5587 {"efsneg", VX (4, 710), VX_MASK, PPCEFS, 0, {RS, RA}},
5588 {"evsneg", VX (4, 710), VX_MASK, PPCEFS, 0, {RS, RA}},
5589 {"vcmpgtfp", VXR(4, 710,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
5590 {"efssqrt", VX_RB_CONST(4, 711, 0), VX_RB_CONST_MASK,PPCEFS2, 0, {RD, RA}},
5591 {"vcmpgtud", VXR(4, 711,0), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
5592 {"vmuleud", VX (4, 712), VX_MASK, POWER10, 0, {VD, VA, VB}},
5593 {"efsmul", VX (4, 712), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
5594 {"evsmul", VX (4, 712), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
5595 {"vmulhud", VX (4, 713), VX_MASK, POWER10, 0, {VD, VA, VB}},
5596 {"efsdiv", VX (4, 713), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
5597 {"evsdiv", VX (4, 713), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
5598 {"efsnmadd", VX (4, 714), VX_MASK, PPCEFS2, 0, {RS, RA, RB}},
5599 {"vrfim", VX (4, 714), VXVA_MASK, PPCVEC, 0, {VD, VB}},
5600 {"vdiveud", VX (4, 715), VX_MASK, POWER10, 0, {VD, VA, VB}},
5601 {"efsnmsub", VX (4, 715), VX_MASK, PPCEFS2, 0, {RS, RA, RB}},
5602 {"efscmpgt", VX (4, 716), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
5603 {"evscmpgt", VX (4, 716), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
5604 {"vextractd", VX (4, 717), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
5605 {"efscmplt", VX (4, 717), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
5606 {"evsgmplt", VX (4, 717), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
5607 {"efscmpeq", VX (4, 718), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
5608 {"evsgmpeq", VX (4, 718), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
5609 {"vupklsh", VX (4, 718), VXVA_MASK, PPCVEC, 0, {VD, VB}},
5610 {"vinsdlx", VX (4, 719), VX_MASK, POWER10, 0, {VD, RA, RB}},
5611 {"efscfd", VX (4, 719), VX_MASK, PPCEFS, 0, {RS, RB}},
5612 {"efscfui", VX (4, 720), VX_MASK, PPCEFS, 0, {RS, RB}},
5613 {"evscfui", VX (4, 720), VX_MASK, PPCEFS, 0, {RS, RB}},
5614 {"efscfh", VX_RA_CONST(4, 721, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
5615 {"efscfsi", VX (4, 721), VX_MASK, PPCEFS, 0, {RS, RB}},
5616 {"evscfsi", VX (4, 721), VX_MASK, PPCEFS, 0, {RS, RB}},
5617 {"efscfuf", VX (4, 722), VX_MASK, PPCEFS, 0, {RS, RB}},
5618 {"evscfuf", VX (4, 722), VX_MASK, PPCEFS, 0, {RS, RB}},
5619 {"efscfsf", VX (4, 723), VX_MASK, PPCEFS, 0, {RS, RB}},
5620 {"evscfsf", VX (4, 723), VX_MASK, PPCEFS, 0, {RS, RB}},
5621 {"efsctui", VX (4, 724), VX_MASK, PPCEFS, 0, {RS, RB}},
5622 {"evsctui", VX (4, 724), VX_MASK, PPCEFS, 0, {RS, RB}},
5623 {"efscth", VX_RA_CONST(4, 725, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
5624 {"efsctsi", VX (4, 725), VX_MASK, PPCEFS, 0, {RS, RB}},
5625 {"evsctsi", VX (4, 725), VX_MASK, PPCEFS, 0, {RS, RB}},
5626 {"efsctuf", VX (4, 726), VX_MASK, PPCEFS, 0, {RS, RB}},
5627 {"evsctuf", VX (4, 726), VX_MASK, PPCEFS, 0, {RS, RB}},
5628 {"efsctsf", VX (4, 727), VX_MASK, PPCEFS, 0, {RS, RB}},
5629 {"evsctsf", VX (4, 727), VX_MASK, PPCEFS, 0, {RS, RB}},
5630 {"efsctuiz", VX (4, 728), VX_MASK, PPCEFS, 0, {RS, RB}},
5631 {"evsctuiz", VX (4, 728), VX_MASK, PPCEFS, 0, {RS, RB}},
5632 {"nput", APU(4, 364,0), APU_RT_MASK, PPC405, 0, {RA, FSL}},
5633 {"efsctsiz", VX (4, 730), VX_MASK, PPCEFS, 0, {RS, RB}},
5634 {"evsctsiz", VX (4, 730), VX_MASK, PPCEFS, 0, {RS, RB}},
5635 {"efststgt", VX (4, 732), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
5636 {"evststgt", VX (4, 732), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
5637 {"efststlt", VX (4, 733), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
5638 {"evststlt", VX (4, 733), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
5639 {"efststeq", VX (4, 734), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
5640 {"evststeq", VX (4, 734), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
5641 {"efdadd", VX (4, 736), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
5642 {"efdsub", VX (4, 737), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
5643 {"efdmadd", VX (4, 738), VX_MASK, PPCEFS2, E500|E500MC, {RD, RA, RB}},
5644 {"efdcfuid", VX (4, 738), VX_MASK, E500|E500MC,0, {RS, RB}},
5645 {"efdmsub", VX (4, 739), VX_MASK, PPCEFS2, E500|E500MC, {RD, RA, RB}},
5646 {"efdcfsid", VX (4, 739), VX_MASK, E500|E500MC,0, {RS, RB}},
5647 {"efdabs", VX (4, 740), VX_MASK, PPCEFS, 0, {RS, RA}},
5648 {"efdnabs", VX (4, 741), VX_MASK, PPCEFS, 0, {RS, RA}},
5649 {"efdneg", VX (4, 742), VX_MASK, PPCEFS, 0, {RS, RA}},
5650 {"efdsqrt", VX_RB_CONST(4, 743, 0), VX_RB_CONST_MASK, PPCEFS2, 0, {RD, RA}},
5651 {"efdmul", VX (4, 744), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
5652 {"efddiv", VX (4, 745), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
5653 {"efdnmadd", VX (4, 746), VX_MASK, PPCEFS2, E500|E500MC, {RD, RA, RB}},
5654 {"efdctuidz", VX (4, 746), VX_MASK, E500|E500MC,0, {RS, RB}},
5655 {"efdnmsub", VX (4, 747), VX_MASK, PPCEFS2, E500|E500MC, {RD, RA, RB}},
5656 {"efdctsidz", VX (4, 747), VX_MASK, E500|E500MC,0, {RS, RB}},
5657 {"efdcmpgt", VX (4, 748), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
5658 {"efdcmplt", VX (4, 749), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
5659 {"efdcmpeq", VX (4, 750), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
5660 {"efdcfs", VX (4, 751), VX_MASK, PPCEFS, 0, {RS, RB}},
5661 {"efdcfui", VX_RA_CONST(4, 752, 0), VX_RA_CONST_MASK, PPCEFS, 0, {RS, RB}},
5662 {"efdcfuid", VX_RA_CONST(4, 752, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC, {RS, RB}},
5663 {"efdcfsi", VX_RA_CONST(4, 753, 0), VX_RA_CONST_MASK, PPCEFS, 0, {RS, RB}},
5664 {"efdcfsid", VX_RA_CONST(4, 753, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC, {RS, RB}},
5665 {"efdcfh", VX_RA_CONST(4, 753, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
5666 {"efdcfuf", VX (4, 754), VX_MASK, PPCEFS, 0, {RS, RB}},
5667 {"efdcfsf", VX (4, 755), VX_MASK, PPCEFS, 0, {RS, RB}},
5668 {"efdctui", VX (4, 756), VX_MASK, PPCEFS, 0, {RS, RB}},
5669 {"efdcth", VX_RA_CONST(4, 757, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
5670 {"efdctsi", VX (4, 757), VX_MASK, PPCEFS, 0, {RS, RB}},
5671 {"efdctuf", VX (4, 758), VX_MASK, PPCEFS, 0, {RS, RB}},
5672 {"efdctsf", VX (4, 759), VX_MASK, PPCEFS, 0, {RS, RB}},
5673 {"efdctuiz", VX_RA_CONST(4, 760, 0), VX_RA_CONST_MASK, PPCEFS, 0, {RS, RB}},
5674 {"efdctuidz", VX_RA_CONST(4, 760, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC, {RS, RB}},
5675 {"ncput", APU(4, 380,0), APU_RT_MASK, PPC405, 0, {RA, FSL}},
5676 {"efdctsiz", VX_RA_CONST(4, 762, 0), VX_RA_CONST_MASK, PPCEFS, 0, {RS, RB}},
5677 {"efdctsidz", VX_RA_CONST(4, 762, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC, {RS, RB}},
5678 {"efdtstgt", VX (4, 764), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
5679 {"efdtstlt", VX (4, 765), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
5680 {"efdtsteq", VX (4, 766), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
5681 {"evlddx", VX (4, 768), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5682 {"vaddsbs", VX (4, 768), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5683 {"evldd", VX (4, 769), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
5684 {"evldwx", VX (4, 770), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5685 {"vminsb", VX (4, 770), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5686 {"evldw", VX (4, 771), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
5687 {"evldhx", VX (4, 772), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5688 {"vsrab", VX (4, 772), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5689 {"vsraq", VX (4, 773), VX_MASK, POWER10, 0, {VD, VA, VB}},
5690 {"evldh", VX (4, 773), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
5691 {"vcmpgtsb", VXR(4, 774,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
5692 {"evlhhesplatx",VX (4, 776), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5693 {"vmulesb", VX (4, 776), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5694 {"evlhhesplat", VX (4, 777), VX_MASK, PPCSPE, 0, {RS, EVUIMM_2, RA}},
5695 {"vcfux", VX (4, 778), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
5696 {"vcuxwfp", VX (4, 778), VX_MASK, PPCVEC, EXT, {VD, VB, UIMM}},
5697 {"vdivesq", VX (4, 779), VX_MASK, POWER10, 0, {VD, VA, VB}},
5698 {"evlhhousplatx",VX(4, 780), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5699 {"vspltisb", VX (4, 780), VXVB_MASK, PPCVEC, 0, {VD, SIMM}},
5700 {"vinsertb", VX (4, 781), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
5701 {"evlhhousplat",VX (4, 781), VX_MASK, PPCSPE, 0, {RS, EVUIMM_2, RA}},
5702 {"evlhhossplatx",VX(4, 782), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5703 {"vpkpx", VX (4, 782), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5704 {"vinsbrx", VX (4, 783), VX_MASK, POWER10, 0, {VD, RA, RB}},
5705 {"evlhhossplat",VX (4, 783), VX_MASK, PPCSPE, 0, {RS, EVUIMM_2, RA}},
5706 {"mullhwu", XRC(4, 392,0), X_MASK, MULHW, 0, {RT, RA, RB}},
5707 {"evlwhex", VX (4, 784), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5708 {"mullhwu.", XRC(4, 392,1), X_MASK, MULHW, 0, {RT, RA, RB}},
5709 {"evlwhe", VX (4, 785), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
5710 {"evlwhoux", VX (4, 788), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5711 {"evlwhou", VX (4, 789), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
5712 {"evlwhosx", VX (4, 790), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5713 {"evlwhos", VX (4, 791), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
5714 {"maclhwu", XO (4, 396,0,0),XO_MASK, MULHW, 0, {RT, RA, RB}},
5715 {"evlwwsplatx", VX (4, 792), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5716 {"maclhwu.", XO (4, 396,0,1),XO_MASK, MULHW, 0, {RT, RA, RB}},
5717 {"evlwwsplat", VX (4, 793), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
5718 {"evlwhsplatx", VX (4, 796), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5719 {"evlwhsplat", VX (4, 797), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
5720 {"evstddx", VX (4, 800), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5721 {"evstdd", VX (4, 801), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
5722 {"evstdwx", VX (4, 802), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5723 {"evstdw", VX (4, 803), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
5724 {"evstdhx", VX (4, 804), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5725 {"evstdh", VX (4, 805), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
5726 {"evstwhex", VX (4, 816), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5727 {"evstwhe", VX (4, 817), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
5728 {"evstwhox", VX (4, 820), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5729 {"evstwho", VX (4, 821), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
5730 {"evstwwex", VX (4, 824), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5731 {"evstwwe", VX (4, 825), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
5732 {"evstwwox", VX (4, 828), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5733 {"evstwwo", VX (4, 829), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
5734 {"vaddshs", VX (4, 832), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5735 {"bcdcpsgn.", VX (4, 833), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
5736 {"vminsh", VX (4, 834), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5737 {"vsrah", VX (4, 836), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5738 {"vcmpgtsh", VXR(4, 838,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
5739 {"vmulesh", VX (4, 840), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5740 {"vcfsx", VX (4, 842), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
5741 {"vcsxwfp", VX (4, 842), VX_MASK, PPCVEC, EXT, {VD, VB, UIMM}},
5742 {"vspltish", VX (4, 844), VXVB_MASK, PPCVEC, 0, {VD, SIMM}},
5743 {"vinserth", VX (4, 845), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
5744 {"vupkhpx", VX (4, 846), VXVA_MASK, PPCVEC, 0, {VD, VB}},
5745 {"vinshrx", VX (4, 847), VX_MASK, POWER10, 0, {VD, RA, RB}},
5746 {"mullhw", XRC(4, 424,0), X_MASK, MULHW, 0, {RT, RA, RB}},
5747 {"mullhw.", XRC(4, 424,1), X_MASK, MULHW, 0, {RT, RA, RB}},
5748 {"maclhw", XO (4, 428,0,0),XO_MASK, MULHW, 0, {RT, RA, RB}},
5749 {"maclhw.", XO (4, 428,0,1),XO_MASK, MULHW, 0, {RT, RA, RB}},
5750 {"nmaclhw", XO (4, 430,0,0),XO_MASK, MULHW, 0, {RT, RA, RB}},
5751 {"nmaclhw.", XO (4, 430,0,1),XO_MASK, MULHW, 0, {RT, RA, RB}},
5752 {"vaddsws", VX (4, 896), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5753 {"vminsw", VX (4, 898), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5754 {"vsraw", VX (4, 900), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5755 {"vcmpgtsw", VXR(4, 902,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
5756 {"vcmpgtsq", VXR(4, 903,0), VXR_MASK, POWER10, 0, {VD, VA, VB}},
5757 {"vmulesw", VX (4, 904), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5758 {"vmulhsw", VX (4, 905), VX_MASK, POWER10, 0, {VD, VA, VB}},
5759 {"vctuxs", VX (4, 906), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
5760 {"vcfpuxws", VX (4, 906), VX_MASK, PPCVEC, EXT, {VD, VB, UIMM}},
5761 {"vdivesw", VX (4, 907), VX_MASK, POWER10, 0, {VD, VA, VB}},
5762 {"vspltisw", VX (4, 908), VXVB_MASK, PPCVEC, 0, {VD, SIMM}},
5763 {"vinsertw", VX (4, 909), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
5764 {"vinswrx", VX (4, 911), VX_MASK, POWER10, 0, {VD, RA, RB}},
5765 {"maclhwsu", XO (4, 460,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5766 {"maclhwsu.", XO (4, 460,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5767 {"vminsd", VX (4, 962), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5768 {"vsrad", VX (4, 964), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5769 {"vcmpbfp", VXR(4, 966,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
5770 {"vcmpgtsd", VXR(4, 967,0), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
5771 {"vmulesd", VX (4, 968), VX_MASK, POWER10, 0, {VD, VA, VB}},
5772 {"vmulhsd", VX (4, 969), VX_MASK, POWER10, 0, {VD, VA, VB}},
5773 {"vctsxs", VX (4, 970), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
5774 {"vcfpsxws", VX (4, 970), VX_MASK, PPCVEC, EXT, {VD, VB, UIMM}},
5775 {"vdivesd", VX (4, 971), VX_MASK, POWER10, 0, {VD, VA, VB}},
5776 {"vinsertd", VX (4, 973), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
5777 {"vupklpx", VX (4, 974), VXVA_MASK, PPCVEC, 0, {VD, VB}},
5778 {"vinsdrx", VX (4, 975), VX_MASK, POWER10, 0, {VD, RA, RB}},
5779 {"maclhws", XO (4, 492,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5780 {"maclhws.", XO (4, 492,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5781 {"nmaclhws", XO (4, 494,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5782 {"nmaclhws.", XO (4, 494,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5783 {"vsububm", VX (4,1024), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5784 {"bcdadd.", VX (4,1025), VXPS_MASK, PPCVEC2, 0, {VD, VA, VB, PS}},
5785 {"vavgub", VX (4,1026), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5786 {"vabsdub", VX (4,1027), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5787 {"evmhessf", VX (4,1027), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5788 {"vand", VX (4,1028), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5789 {"vcmpequb.", VXR(4, 6,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
5790 {"vcmpneb.", VXR(4, 7,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
5791 {"udi0fcm.", APU(4, 515,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
5792 {"udi0fcm", APU(4, 515,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
5793 {"evmhossf", VX (4,1031), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5794 {"vpmsumb", VX (4,1032), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5795 {"evmheumi", VX (4,1032), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5796 {"evmhesmi", VX (4,1033), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5797 {"vmaxfp", VX (4,1034), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5798 {"evmhesmf", VX (4,1035), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5799 {"evmhoumi", VX (4,1036), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5800 {"vslo", VX (4,1036), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5801 {"vstribl.", VXVA(4,1037,0), VXVA_MASK, POWER10, 0, {VD, VB}},
5802 {"vstribr.", VXVA(4,1037,1), VXVA_MASK, POWER10, 0, {VD, VB}},
5803 {"vstrihl.", VXVA(4,1037,2), VXVA_MASK, POWER10, 0, {VD, VB}},
5804 {"vstrihr.", VXVA(4,1037,3), VXVA_MASK, POWER10, 0, {VD, VB}},
5805 {"evmhosmi", VX (4,1037), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5806 {"evmhosmf", VX (4,1039), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5807 {"machhwuo", XO (4, 12,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5808 {"machhwuo.", XO (4, 12,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5809 {"ps_merge00", XOPS(4,528,0), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
5810 {"ps_merge00.", XOPS(4,528,1), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
5811 {"evmhessfa", VX (4,1059), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5812 {"evmhossfa", VX (4,1063), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5813 {"evmheumia", VX (4,1064), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5814 {"evmhesmia", VX (4,1065), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5815 {"evmhesmfa", VX (4,1067), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5816 {"evmhoumia", VX (4,1068), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5817 {"evmhosmia", VX (4,1069), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5818 {"evmhosmfa", VX (4,1071), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5819 {"vsubuhm", VX (4,1088), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5820 {"bcdsub.", VX (4,1089), VXPS_MASK, PPCVEC2, 0, {VD, VA, VB, PS}},
5821 {"vavguh", VX (4,1090), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5822 {"evmwlssf", VX (4,1091), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
5823 {"vabsduh", VX (4,1091), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5824 {"vandc", VX (4,1092), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5825 {"vcmpequh.", VXR(4, 70,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
5826 {"udi1fcm.", APU(4, 547,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
5827 {"udi1fcm", APU(4, 547,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
5828 {"vcmpneh.", VXR(4, 71,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
5829 {"evmwhssf", VX (4,1095), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5830 {"vpmsumh", VX (4,1096), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5831 {"evmwlumi", VX (4,1096), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5832 {"vminfp", VX (4,1098), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5833 {"evmwlsmf", VX (4,1099), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
5834 {"evmwhumi", VX (4,1100), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5835 {"vsro", VX (4,1100), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5836 {"evmwhsmi", VX (4,1101), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5837 {"vpkudum", VX (4,1102), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5838 {"evmwhsmf", VX (4,1103), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5839 {"evmwssf", VX (4,1107), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5840 {"machhwo", XO (4, 44,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5841 {"evmwumi", VX (4,1112), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5842 {"machhwo.", XO (4, 44,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5843 {"evmwsmi", VX (4,1113), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5844 {"evmwsmf", VX (4,1115), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5845 {"nmachhwo", XO (4, 46,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5846 {"nmachhwo.", XO (4, 46,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5847 {"ps_merge01", XOPS(4,560,0), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
5848 {"ps_merge01.", XOPS(4,560,1), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
5849 {"evmwlssfa", VX (4,1123), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
5850 {"evmwhssfa", VX (4,1127), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5851 {"evmwlumia", VX (4,1128), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5852 {"evmwlsmfa", VX (4,1131), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
5853 {"evmwhumia", VX (4,1132), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5854 {"evmwhsmia", VX (4,1133), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5855 {"evmwhsmfa", VX (4,1135), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5856 {"evmwssfa", VX (4,1139), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5857 {"evmwumia", VX (4,1144), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5858 {"evmwsmia", VX (4,1145), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5859 {"evmwsmfa", VX (4,1147), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5860 {"vsubuwm", VX (4,1152), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5861 {"bcdus.", VX (4,1153), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
5862 {"vavguw", VX (4,1154), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5863 {"vabsduw", VX (4,1155), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5864 {"vmr", VX (4,1156), VX_MASK, PPCVEC, EXT, {VD, VAB}},
5865 {"vor", VX (4,1156), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5866 {"vcmpnew.", VXR(4, 135,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
5867 {"vpmsumw", VX (4,1160), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5868 {"vcmpequw.", VXR(4, 134,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
5869 {"udi2fcm.", APU(4, 579,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
5870 {"udi2fcm", APU(4, 579,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
5871 {"machhwsuo", XO (4, 76,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5872 {"machhwsuo.", XO (4, 76,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5873 {"ps_merge10", XOPS(4,592,0), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
5874 {"ps_merge10.", XOPS(4,592,1), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
5875 {"vsubudm", VX (4,1216), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5876 {"evaddusiaaw", VX (4,1216), VX_MASK, PPCSPE, 0, {RS, RA}},
5877 {"bcds.", VX (4,1217), VXPS_MASK, PPCVEC3, 0, {VD, VA, VB, PS}},
5878 {"evaddssiaaw", VX (4,1217), VX_MASK, PPCSPE, 0, {RS, RA}},
5879 {"evsubfusiaaw",VX (4,1218), VX_MASK, PPCSPE, 0, {RS, RA}},
5880 {"evsubfssiaaw",VX (4,1219), VX_MASK, PPCSPE, 0, {RS, RA}},
5881 {"evmra", VX (4,1220), VX_MASK, PPCSPE, 0, {RS, RA}},
5882 {"vxor", VX (4,1220), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5883 {"evdivws", VX (4,1222), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5884 {"vcmpeqfp.", VXR(4, 198,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
5885 {"udi3fcm.", APU(4, 611,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
5886 {"vcmpequd.", VXR(4, 199,1), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
5887 {"udi3fcm", APU(4, 611,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
5888 {"evdivwu", VX (4,1223), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5889 {"vpmsumd", VX (4,1224), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5890 {"evaddumiaaw", VX (4,1224), VX_MASK, PPCSPE, 0, {RS, RA}},
5891 {"evaddsmiaaw", VX (4,1225), VX_MASK, PPCSPE, 0, {RS, RA}},
5892 {"evsubfumiaaw",VX (4,1226), VX_MASK, PPCSPE, 0, {RS, RA}},
5893 {"evsubfsmiaaw",VX (4,1227), VX_MASK, PPCSPE, 0, {RS, RA}},
5894 {"vgnb", VX (4,1228), VX_MASK, POWER10, 0, {RT, VB, UIMM3}},
5895 {"vpkudus", VX (4,1230), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5896 {"machhwso", XO (4, 108,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5897 {"machhwso.", XO (4, 108,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5898 {"nmachhwso", XO (4, 110,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5899 {"nmachhwso.", XO (4, 110,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5900 {"ps_merge11", XOPS(4,624,0), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
5901 {"ps_merge11.", XOPS(4,624,1), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
5902 {"vsubuqm", VX (4,1280), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5903 {"evmheusiaaw", VX (4,1280), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5904 {"bcdtrunc.", VX (4,1281), VXPS_MASK, PPCVEC3, 0, {VD, VA, VB, PS}},
5905 {"evmhessiaaw", VX (4,1281), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5906 {"vavgsb", VX (4,1282), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5907 {"evmhessfaaw", VX (4,1283), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5908 {"evmhousiaaw", VX (4,1284), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5909 {"vnot", VX (4,1284), VX_MASK, PPCVEC, EXT, {VD, VAB}},
5910 {"vnor", VX (4,1284), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5911 {"evmhossiaaw", VX (4,1285), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5912 {"udi4fcm.", APU(4, 643,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
5913 {"udi4fcm", APU(4, 643,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
5914 {"vcmpnezb.", VXR(4, 263,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
5915 {"evmhossfaaw", VX (4,1287), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5916 {"evmheumiaaw", VX (4,1288), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5917 {"vcipher", VX (4,1288), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5918 {"vcipherlast", VX (4,1289), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5919 {"evmhesmiaaw", VX (4,1289), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5920 {"evmhesmfaaw", VX (4,1291), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5921 {"vgbbd", VX (4,1292), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
5922 {"evmhoumiaaw", VX (4,1292), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5923 {"evmhosmiaaw", VX (4,1293), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5924 {"evmhosmfaaw", VX (4,1295), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5925 {"macchwuo", XO (4, 140,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5926 {"macchwuo.", XO (4, 140,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5927 {"evmhegumiaa", VX (4,1320), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5928 {"evmhegsmiaa", VX (4,1321), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5929 {"evmhegsmfaa", VX (4,1323), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5930 {"evmhogumiaa", VX (4,1324), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5931 {"evmhogsmiaa", VX (4,1325), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5932 {"evmhogsmfaa", VX (4,1327), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5933 {"vsubcuq", VX (4,1344), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5934 {"evmwlusiaaw", VX (4,1344), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5935 {"bcdutrunc.", VX (4,1345), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
5936 {"evmwlssiaaw", VX (4,1345), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5937 {"vavgsh", VX (4,1346), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5938 {"evmwlssfaaw", VX (4,1347), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
5939 {"evmwhusiaa", VX (4,1348), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
5940 {"vorc", VX (4,1348), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5941 {"evmwhssmaa", VX (4,1349), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
5942 {"udi5fcm.", APU(4, 675,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
5943 {"udi5fcm", APU(4, 675,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
5944 {"vcmpnezh.", VXR(4, 327,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
5945 {"evmwhssfaa", VX (4,1351), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
5946 {"vncipher", VX (4,1352), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5947 {"evmwlumiaaw", VX (4,1352), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5948 {"vncipherlast",VX (4,1353), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5949 {"evmwlsmiaaw", VX (4,1353), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5950 {"evmwlsmfaaw", VX (4,1355), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
5951 {"evmwhumiaa", VX (4,1356), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
5952 {"vbpermq", VX (4,1356), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5953 {"vcfuged", VX (4,1357), VX_MASK, POWER10, 0, {VD, VA, VB}},
5954 {"evmwhsmiaa", VX (4,1357), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
5955 {"vpksdus", VX (4,1358), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5956 {"evmwhsmfaa", VX (4,1359), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
5957 {"evmwssfaa", VX (4,1363), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5958 {"macchwo", XO (4, 172,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5959 {"evmwumiaa", VX (4,1368), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5960 {"macchwo.", XO (4, 172,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5961 {"evmwsmiaa", VX (4,1369), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5962 {"evmwsmfaa", VX (4,1371), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5963 {"nmacchwo", XO (4, 174,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5964 {"nmacchwo.", XO (4, 174,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5965 {"evmwhgumiaa", VX (4,1380), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
5966 {"evmwhgsmiaa", VX (4,1381), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
5967 {"evmwhgssfaa", VX (4,1383), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
5968 {"evmwhgsmfaa", VX (4,1391), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
5969 {"evmheusianw", VX (4,1408), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5970 {"vsubcuw", VX (4,1408), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5971 {"evmhessianw", VX (4,1409), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5972 {"bcdctsq.", VXVA(4,1409,0), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
5973 {"bcdcfsq.", VXVA(4,1409,2), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}},
5974 {"bcdctz.", VXVA(4,1409,4), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}},
5975 {"bcdctn.", VXVA(4,1409,5), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
5976 {"bcdcfz.", VXVA(4,1409,6), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}},
5977 {"bcdcfn.", VXVA(4,1409,7), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}},
5978 {"bcdsetsgn.", VXVA(4,1409,31), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}},
5979 {"vavgsw", VX (4,1410), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5980 {"evmhessfanw", VX (4,1411), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5981 {"vnand", VX (4,1412), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5982 {"evmhousianw", VX (4,1412), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5983 {"evmhossianw", VX (4,1413), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5984 {"udi6fcm.", APU(4, 707,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
5985 {"udi6fcm", APU(4, 707,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
5986 {"vcmpnezw.", VXR(4, 391,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
5987 {"evmhossfanw", VX (4,1415), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5988 {"evmheumianw", VX (4,1416), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5989 {"evmhesmianw", VX (4,1417), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5990 {"evmhesmfanw", VX (4,1419), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5991 {"evmhoumianw", VX (4,1420), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5992 {"vpextd", VX (4,1421), VX_MASK, POWER10, 0, {VD, VA, VB}},
5993 {"evmhosmianw", VX (4,1421), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5994 {"evmhosmfanw", VX (4,1423), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5995 {"macchwsuo", XO (4, 204,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5996 {"macchwsuo.", XO (4, 204,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5997 {"evmhegumian", VX (4,1448), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5998 {"evmhegsmian", VX (4,1449), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5999 {"evmhegsmfan", VX (4,1451), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
6000 {"evmhogumian", VX (4,1452), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
6001 {"evmhogsmian", VX (4,1453), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
6002 {"evmhogsmfan", VX (4,1455), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
6003 {"evmwlusianw", VX (4,1472), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
6004 {"bcdsr.", VX (4,1473), VXPS_MASK, PPCVEC3, 0, {VD, VA, VB, PS}},
6005 {"evmwlssianw", VX (4,1473), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
6006 {"evmwlssfanw", VX (4,1475), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
6007 {"evmwhusian", VX (4,1476), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
6008 {"vsld", VX (4,1476), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
6009 {"evmwhssian", VX (4,1477), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
6010 {"vcmpgefp.", VXR(4, 454,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
6011 {"udi7fcm.", APU(4, 739,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
6012 {"udi7fcm", APU(4, 739,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
6013 {"vcmpequq.", VXR(4, 455,1), VXR_MASK, POWER10, 0, {VD, VA, VB}},
6014 {"evmwhssfan", VX (4,1479), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
6015 {"vsbox", VX (4,1480), VXVB_MASK, PPCVEC2, 0, {VD, VA}},
6016 {"evmwlumianw", VX (4,1480), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
6017 {"evmwlsmianw", VX (4,1481), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
6018 {"evmwlsmfanw", VX (4,1483), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
6019 {"evmwhumian", VX (4,1484), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
6020 {"vbpermd", VX (4,1484), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
6021 {"vpdepd", VX (4,1485), VX_MASK, POWER10, 0, {VD, VA, VB}},
6022 {"evmwhsmian", VX (4,1485), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
6023 {"vpksdss", VX (4,1486), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
6024 {"evmwhsmfan", VX (4,1487), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
6025 {"evmwssfan", VX (4,1491), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
6026 {"macchwso", XO (4, 236,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
6027 {"evmwumian", VX (4,1496), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
6028 {"macchwso.", XO (4, 236,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
6029 {"evmwsmian", VX (4,1497), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
6030 {"evmwsmfan", VX (4,1499), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
6031 {"evmwhgumian", VX (4,1508), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
6032 {"evmwhgsmian", VX (4,1509), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
6033 {"evmwhgssfan", VX (4,1511), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
6034 {"evmwhgsmfan", VX (4,1519), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
6035 {"nmacchwso", XO (4, 238,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
6036 {"nmacchwso.", XO (4, 238,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
6037 {"vsububs", VX (4,1536), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
6038 {"vclzlsbb", VXVA(4,1538,0), VXVA_MASK, PPCVEC3, 0, {RT, VB}},
6039 {"vctzlsbb", VXVA(4,1538,1), VXVA_MASK, PPCVEC3, 0, {RT, VB}},
6040 {"vnegw", VXVA(4,1538,6), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
6041 {"vnegd", VXVA(4,1538,7), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
6042 {"vprtybw", VXVA(4,1538,8), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
6043 {"vprtybd", VXVA(4,1538,9), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
6044 {"vprtybq", VXVA(4,1538,10), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
6045 {"vextsb2w", VXVA(4,1538,16), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
6046 {"vextsh2w", VXVA(4,1538,17), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
6047 {"vextsb2d", VXVA(4,1538,24), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
6048 {"vextsh2d", VXVA(4,1538,25), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
6049 {"vextsw2d", VXVA(4,1538,26), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
6050 {"vextsd2q", VXVA(4,1538,27), VXVA_MASK, POWER10, 0, {VD, VB}},
6051 {"vctzb", VXVA(4,1538,28), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
6052 {"vctzh", VXVA(4,1538,29), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
6053 {"vctzw", VXVA(4,1538,30), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
6054 {"vctzd", VXVA(4,1538,31), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
6055 {"mfvscr", VX (4,1540), VXVAVB_MASK, PPCVEC, 0, {VD}},
6056 {"vcmpgtub.", VXR(4, 518,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
6057 {"udi8fcm.", APU(4, 771,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
6058 {"udi8fcm", APU(4, 771,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
6059 {"vsum4ubs", VX (4,1544), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
6060 {"vmoduq", VX (4,1547), VX_MASK, POWER10, 0, {VD, VA, VB}},
6061 {"vextublx", VX (4,1549), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
6062 {"vsubuhs", VX (4,1600), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
6063
6064 {"vexpandbm", VXVA(4,1602,0), VXVA_MASK, POWER10, 0, {VD, VB}},
6065 {"vexpandhm", VXVA(4,1602,1), VXVA_MASK, POWER10, 0, {VD, VB}},
6066 {"vexpandwm", VXVA(4,1602,2), VXVA_MASK, POWER10, 0, {VD, VB}},
6067 {"vexpanddm", VXVA(4,1602,3), VXVA_MASK, POWER10, 0, {VD, VB}},
6068 {"vexpandqm", VXVA(4,1602,4), VXVA_MASK, POWER10, 0, {VD, VB}},
6069 {"vextractbm", VXVA(4,1602,8), VXVA_MASK, POWER10, 0, {RT, VB}},
6070 {"vextracthm", VXVA(4,1602,9), VXVA_MASK, POWER10, 0, {RT, VB}},
6071 {"vextractwm", VXVA(4,1602,10), VXVA_MASK, POWER10, 0, {RT, VB}},
6072 {"vextractdm", VXVA(4,1602,11), VXVA_MASK, POWER10, 0, {RT, VB}},
6073 {"vextractqm", VXVA(4,1602,12), VXVA_MASK, POWER10, 0, {RT, VB}},
6074 {"mtvsrbm", VXVA(4,1602,16), VXVA_MASK, POWER10, 0, {VD, RB}},
6075 {"mtvsrhm", VXVA(4,1602,17), VXVA_MASK, POWER10, 0, {VD, RB}},
6076 {"mtvsrwm", VXVA(4,1602,18), VXVA_MASK, POWER10, 0, {VD, RB}},
6077 {"mtvsrdm", VXVA(4,1602,19), VXVA_MASK, POWER10, 0, {VD, RB}},
6078 {"mtvsrqm", VXVA(4,1602,20), VXVA_MASK, POWER10, 0, {VD, RB}},
6079 {"vcntmbb", VXVA(4,1602,24), VXVAM_MASK, POWER10, 0, {RT, VB, MP}},
6080 {"vcntmbh", VXVA(4,1602,26), VXVAM_MASK, POWER10, 0, {RT, VB, MP}},
6081 {"vcntmbw", VXVA(4,1602,28), VXVAM_MASK, POWER10, 0, {RT, VB, MP}},
6082 {"vcntmbd", VXVA(4,1602,30), VXVAM_MASK, POWER10, 0, {RT, VB, MP}},
6083
6084 {"mtvscr", VX (4,1604), VXVDVA_MASK, PPCVEC, 0, {VB}},
6085 {"vcmpgtuh.", VXR(4, 582,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
6086 {"vsum4shs", VX (4,1608), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
6087 {"udi9fcm.", APU(4, 804,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
6088 {"udi9fcm", APU(4, 804,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
6089 {"vextuhlx", VX (4,1613), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
6090 {"vupkhsw", VX (4,1614), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
6091 {"vsubuws", VX (4,1664), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
6092 {"vshasigmaw", VX (4,1666), VX_MASK, PPCVEC2, 0, {VD, VA, ST, SIX}},
6093 {"veqv", VX (4,1668), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
6094 {"vcmpgtuw.", VXR(4, 646,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
6095 {"udi10fcm.", APU(4, 835,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
6096 {"vcmpgtuq.", VXR(4, 647,1), VXR_MASK, POWER10, 0, {VD, VA, VB}},
6097 {"udi10fcm", APU(4, 835,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
6098 {"vsum2sws", VX (4,1672), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
6099 {"vmoduw", VX (4,1675), VX_MASK, POWER10, 0, {VD, VA, VB}},
6100 {"vmrgow", VX (4,1676), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
6101 {"vextuwlx", VX (4,1677), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
6102 {"vshasigmad", VX (4,1730), VX_MASK, PPCVEC2, 0, {VD, VA, ST, SIX}},
6103 {"vsrd", VX (4,1732), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
6104 {"vcmpgtfp.", VXR(4, 710,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
6105 {"udi11fcm.", APU(4, 867,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
6106 {"vcmpgtud.", VXR(4, 711,1), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
6107 {"udi11fcm", APU(4, 867,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
6108 {"vmodud", VX (4,1739), VX_MASK, POWER10, 0, {VD, VA, VB}},
6109 {"vupklsw", VX (4,1742), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
6110 {"vsubsbs", VX (4,1792), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
6111 {"vclzb", VX (4,1794), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
6112 {"vpopcntb", VX (4,1795), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
6113 {"vsrv", VX (4,1796), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
6114 {"vcmpgtsb.", VXR(4, 774,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
6115 {"udi12fcm.", APU(4, 899,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
6116 {"udi12fcm", APU(4, 899,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
6117 {"vsum4sbs", VX (4,1800), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
6118 {"vmodsq", VX (4,1803), VX_MASK, POWER10, 0, {VD, VA, VB}},
6119 {"vextubrx", VX (4,1805), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
6120 {"maclhwuo", XO (4, 396,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
6121 {"maclhwuo.", XO (4, 396,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
6122 {"vsubshs", VX (4,1856), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
6123 {"vclzh", VX (4,1858), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
6124 {"vpopcnth", VX (4,1859), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
6125 {"vslv", VX (4,1860), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
6126 {"vcmpgtsh.", VXR(4, 838,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
6127 {"vextuhrx", VX (4,1869), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
6128 {"udi13fcm.", APU(4, 931,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
6129 {"udi13fcm", APU(4, 931,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
6130 {"maclhwo", XO (4, 428,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
6131 {"maclhwo.", XO (4, 428,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
6132 {"nmaclhwo", XO (4, 430,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
6133 {"nmaclhwo.", XO (4, 430,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
6134 {"vsubsws", VX (4,1920), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
6135 {"vclzw", VX (4,1922), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
6136 {"vpopcntw", VX (4,1923), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
6137 {"vclzdm", VX (4,1924), VX_MASK, POWER10, 0, {VD, VA, VB}},
6138 {"vcmpgtsw.", VXR(4, 902,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
6139 {"udi14fcm.", APU(4, 963,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
6140 {"vcmpgtsq.", VXR(4, 903,1), VXR_MASK, POWER10, 0, {VD, VA, VB}},
6141 {"udi14fcm", APU(4, 963,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
6142 {"vsumsws", VX (4,1928), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
6143 {"vmodsw", VX (4,1931), VX_MASK, POWER10, 0, {VD, VA, VB}},
6144 {"vmrgew", VX (4,1932), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
6145 {"vextuwrx", VX (4,1933), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
6146 {"maclhwsuo", XO (4, 460,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
6147 {"maclhwsuo.", XO (4, 460,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
6148 {"vclzd", VX (4,1986), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
6149 {"vpopcntd", VX (4,1987), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
6150 {"vctzdm", VX (4,1988), VX_MASK, POWER10, 0, {VD, VA, VB}},
6151 {"vcmpbfp.", VXR(4, 966,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
6152 {"udi15fcm.", APU(4, 995,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
6153 {"vcmpgtsd.", VXR(4, 967,1), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
6154 {"udi15fcm", APU(4, 995,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
6155 {"vmodsd", VX (4,1995), VX_MASK, POWER10, 0, {VD, VA, VB}},
6156 {"maclhwso", XO (4, 492,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
6157 {"maclhwso.", XO (4, 492,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
6158 {"nmaclhwso", XO (4, 494,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
6159 {"nmaclhwso.", XO (4, 494,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
6160 {"dcbz_l", X (4,1014), XRT_MASK, PPCPS, 0, {RA, RB}},
6161
6162 {"lxvp", DQXP(6,0), DQXP_MASK, POWER10, PPCVLE, {XTP, DQ, RA0}},
6163 {"stxvp", DQXP(6,1), DQXP_MASK, POWER10, PPCVLE, {XSP, DQ, RA0}},
6164
6165 {"mulli", OP(7), OP_MASK, PPCCOM, PPCVLE, {RT, RA, SI}},
6166 {"muli", OP(7), OP_MASK, PWRCOM, PPCVLE, {RT, RA, SI}},
6167
6168 {"subfic", OP(8), OP_MASK, PPCCOM, PPCVLE, {RT, RA, SI}},
6169 {"sfi", OP(8), OP_MASK, PWRCOM, PPCVLE, {RT, RA, SI}},
6170
6171 {"dozi", OP(9), OP_MASK, M601, PPCVLE, {RT, RA, SI}},
6172
6173 {"cmplwi", OPL(10,0), OPL_MASK, PPCCOM, PPCVLE|EXT, {OBF, RA, UISIGNOPT}},
6174 {"cmpldi", OPL(10,1), OPL_MASK, PPC64, PPCVLE|EXT, {OBF, RA, UISIGNOPT}},
6175 {"cmpli", OP(10), OP_MASK, PPC, PPCVLE, {BF, L32OPT, RA, UISIGNOPT}},
6176 {"cmpli", OP(10), OP_MASK, PWRCOM, PPC|PPCVLE, {BF, RA, UISIGNOPT}},
6177
6178 {"cmpwi", OPL(11,0), OPL_MASK, PPCCOM, PPCVLE|EXT, {OBF, RA, SI}},
6179 {"cmpdi", OPL(11,1), OPL_MASK, PPC64, PPCVLE|EXT, {OBF, RA, SI}},
6180 {"cmpi", OP(11), OP_MASK, PPC, PPCVLE, {BF, L32OPT, RA, SI}},
6181 {"cmpi", OP(11), OP_MASK, PWRCOM, PPC|PPCVLE, {BF, RA, SI}},
6182
6183 {"addic", OP(12), OP_MASK, PPCCOM, PPCVLE, {RT, RA, SI}},
6184 {"ai", OP(12), OP_MASK, PWRCOM, PPCVLE, {RT, RA, SI}},
6185 {"subic", OP(12), OP_MASK, PPCCOM, PPCVLE|EXT, {RT, RA, NSI}},
6186
6187 {"addic.", OP(13), OP_MASK, PPCCOM, PPCVLE, {RT, RA, SI}},
6188 {"ai.", OP(13), OP_MASK, PWRCOM, PPCVLE, {RT, RA, SI}},
6189 {"subic.", OP(13), OP_MASK, PPCCOM, PPCVLE|EXT, {RT, RA, NSI}},
6190
6191 {"li", OP(14), DRA_MASK, PPCCOM, PPCVLE|EXT, {RT, SI}},
6192 {"lil", OP(14), DRA_MASK, PWRCOM, PPCVLE|EXT, {RT, SI}},
6193 {"addi", OP(14), OP_MASK, PPCCOM, PPCVLE, {RT, RA0, SI}},
6194 {"cal", OP(14), OP_MASK, PWRCOM, PPCVLE, {RT, D, RA0}},
6195 {"subi", OP(14), OP_MASK, PPCCOM, PPCVLE|EXT, {RT, RA0, NSI}},
6196 {"la", OP(14), OP_MASK, PPCCOM, PPCVLE|EXT, {RT, D, RA0}},
6197
6198 {"lis", OP(15), DRA_MASK, PPCCOM, PPCVLE|EXT, {RT, SISIGNOPT}},
6199 {"liu", OP(15), DRA_MASK, PWRCOM, PPCVLE|EXT, {RT, SISIGNOPT}},
6200 {"addis", OP(15), OP_MASK, PPCCOM, PPCVLE, {RT, RA0, SISIGNOPT}},
6201 {"cau", OP(15), OP_MASK, PWRCOM, PPCVLE, {RT, RA0, SISIGNOPT}},
6202 {"subis", OP(15), OP_MASK, PPCCOM, PPCVLE|EXT, {RT, RA0, NSISIGNOPT}},
6203
6204 {"bdnz-", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDM}},
6205 {"bdnz+", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDP}},
6206 {"bdnz", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BD}},
6207 {"bdn", BBO(16,BODNZ,0,0), BBOATBI_MASK, PWRCOM, PPCVLE|EXT, {BD}},
6208 {"bdnzl-", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDM}},
6209 {"bdnzl+", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDP}},
6210 {"bdnzl", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BD}},
6211 {"bdnl", BBO(16,BODNZ,0,1), BBOATBI_MASK, PWRCOM, PPCVLE|EXT, {BD}},
6212 {"bdnza-", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDMA}},
6213 {"bdnza+", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDPA}},
6214 {"bdnza", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDA}},
6215 {"bdna", BBO(16,BODNZ,1,0), BBOATBI_MASK, PWRCOM, PPCVLE|EXT, {BDA}},
6216 {"bdnzla-", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDMA}},
6217 {"bdnzla+", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDPA}},
6218 {"bdnzla", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDA}},
6219 {"bdnla", BBO(16,BODNZ,1,1), BBOATBI_MASK, PWRCOM, PPCVLE|EXT, {BDA}},
6220 {"bdz-", BBO(16,BODZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDM}},
6221 {"bdz+", BBO(16,BODZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDP}},
6222 {"bdz", BBO(16,BODZ,0,0), BBOATBI_MASK, COM, PPCVLE|EXT, {BD}},
6223 {"bdzl-", BBO(16,BODZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDM}},
6224 {"bdzl+", BBO(16,BODZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDP}},
6225 {"bdzl", BBO(16,BODZ,0,1), BBOATBI_MASK, COM, PPCVLE|EXT, {BD}},
6226 {"bdza-", BBO(16,BODZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDMA}},
6227 {"bdza+", BBO(16,BODZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDPA}},
6228 {"bdza", BBO(16,BODZ,1,0), BBOATBI_MASK, COM, PPCVLE|EXT, {BDA}},
6229 {"bdzla-", BBO(16,BODZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDMA}},
6230 {"bdzla+", BBO(16,BODZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDPA}},
6231 {"bdzla", BBO(16,BODZ,1,1), BBOATBI_MASK, COM, PPCVLE|EXT, {BDA}},
6232
6233 {"bge-", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
6234 {"bge+", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
6235 {"bge", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
6236 {"bnl-", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
6237 {"bnl+", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
6238 {"bnl", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
6239 {"bgel-", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
6240 {"bgel+", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
6241 {"bgel", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
6242 {"bnll-", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
6243 {"bnll+", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
6244 {"bnll", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
6245 {"bgea-", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
6246 {"bgea+", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
6247 {"bgea", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
6248 {"bnla-", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
6249 {"bnla+", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
6250 {"bnla", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
6251 {"bgela-", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
6252 {"bgela+", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
6253 {"bgela", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
6254 {"bnlla-", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
6255 {"bnlla+", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
6256 {"bnlla", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
6257 {"ble-", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
6258 {"ble+", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
6259 {"ble", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
6260 {"bng-", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
6261 {"bng+", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
6262 {"bng", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
6263 {"blel-", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
6264 {"blel+", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
6265 {"blel", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
6266 {"bngl-", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
6267 {"bngl+", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
6268 {"bngl", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
6269 {"blea-", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
6270 {"blea+", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
6271 {"blea", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
6272 {"bnga-", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
6273 {"bnga+", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
6274 {"bnga", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
6275 {"blela-", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
6276 {"blela+", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
6277 {"blela", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
6278 {"bngla-", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
6279 {"bngla+", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
6280 {"bngla", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
6281 {"bne-", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
6282 {"bne+", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
6283 {"bne", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
6284 {"bnel-", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
6285 {"bnel+", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
6286 {"bnel", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
6287 {"bnea-", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
6288 {"bnea+", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
6289 {"bnea", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
6290 {"bnela-", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
6291 {"bnela+", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
6292 {"bnela", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
6293 {"bns-", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
6294 {"bns+", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
6295 {"bns", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
6296 {"bnu-", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
6297 {"bnu+", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
6298 {"bnu", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BD}},
6299 {"bnsl-", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
6300 {"bnsl+", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
6301 {"bnsl", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
6302 {"bnul-", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
6303 {"bnul+", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
6304 {"bnul", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BD}},
6305 {"bnsa-", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
6306 {"bnsa+", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
6307 {"bnsa", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
6308 {"bnua-", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
6309 {"bnua+", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
6310 {"bnua", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDA}},
6311 {"bnsla-", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
6312 {"bnsla+", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
6313 {"bnsla", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
6314 {"bnula-", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
6315 {"bnula+", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
6316 {"bnula", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDA}},
6317
6318 {"blt-", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
6319 {"blt+", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
6320 {"blt", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
6321 {"bltl-", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
6322 {"bltl+", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
6323 {"bltl", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
6324 {"blta-", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
6325 {"blta+", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
6326 {"blta", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
6327 {"bltla-", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
6328 {"bltla+", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
6329 {"bltla", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
6330 {"bgt-", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
6331 {"bgt+", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
6332 {"bgt", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
6333 {"bgtl-", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
6334 {"bgtl+", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
6335 {"bgtl", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
6336 {"bgta-", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
6337 {"bgta+", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
6338 {"bgta", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
6339 {"bgtla-", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
6340 {"bgtla+", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
6341 {"bgtla", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
6342 {"beq-", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
6343 {"beq+", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
6344 {"beq", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
6345 {"beql-", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
6346 {"beql+", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
6347 {"beql", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
6348 {"beqa-", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
6349 {"beqa+", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
6350 {"beqa", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
6351 {"beqla-", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
6352 {"beqla+", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
6353 {"beqla", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
6354 {"bso-", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
6355 {"bso+", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
6356 {"bso", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
6357 {"bun-", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
6358 {"bun+", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
6359 {"bun", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BD}},
6360 {"bsol-", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
6361 {"bsol+", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
6362 {"bsol", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
6363 {"bunl-", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
6364 {"bunl+", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
6365 {"bunl", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BD}},
6366 {"bsoa-", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
6367 {"bsoa+", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
6368 {"bsoa", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
6369 {"buna-", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
6370 {"buna+", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
6371 {"buna", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDA}},
6372 {"bsola-", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
6373 {"bsola+", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
6374 {"bsola", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
6375 {"bunla-", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
6376 {"bunla+", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
6377 {"bunla", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDA}},
6378
6379 {"bdnzf-", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDM}},
6380 {"bdnzf+", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDP}},
6381 {"bdnzf", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BD}},
6382 {"bdnzfl-", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDM}},
6383 {"bdnzfl+", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDP}},
6384 {"bdnzfl", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BD}},
6385 {"bdnzfa-", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6386 {"bdnzfa+", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6387 {"bdnzfa", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BDA}},
6388 {"bdnzfla-", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6389 {"bdnzfla+", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6390 {"bdnzfla", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BDA}},
6391 {"bdzf-", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDM}},
6392 {"bdzf+", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDP}},
6393 {"bdzf", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BD}},
6394 {"bdzfl-", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDM}},
6395 {"bdzfl+", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDP}},
6396 {"bdzfl", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BD}},
6397 {"bdzfa-", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6398 {"bdzfa+", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6399 {"bdzfa", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BDA}},
6400 {"bdzfla-", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6401 {"bdzfla+", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6402 {"bdzfla", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BDA}},
6403
6404 {"bf-", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDM}},
6405 {"bf+", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDP}},
6406 {"bf", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BD}},
6407 {"bbf", BBO(16,BOF,0,0), BBOAT_MASK, PWRCOM, PPCVLE|EXT, {BI, BD}},
6408 {"bfl-", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDM}},
6409 {"bfl+", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDP}},
6410 {"bfl", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BD}},
6411 {"bbfl", BBO(16,BOF,0,1), BBOAT_MASK, PWRCOM, PPCVLE|EXT, {BI, BD}},
6412 {"bfa-", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDMA}},
6413 {"bfa+", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDPA}},
6414 {"bfa", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDA}},
6415 {"bbfa", BBO(16,BOF,1,0), BBOAT_MASK, PWRCOM, PPCVLE|EXT, {BI, BDA}},
6416 {"bfla-", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDMA}},
6417 {"bfla+", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDPA}},
6418 {"bfla", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDA}},
6419 {"bbfla", BBO(16,BOF,1,1), BBOAT_MASK, PWRCOM, PPCVLE|EXT, {BI, BDA}},
6420
6421 {"bdnzt-", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDM}},
6422 {"bdnzt+", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDP}},
6423 {"bdnzt", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BD}},
6424 {"bdnztl-", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDM}},
6425 {"bdnztl+", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDP}},
6426 {"bdnztl", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BD}},
6427 {"bdnzta-", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6428 {"bdnzta+", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6429 {"bdnzta", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BDA}},
6430 {"bdnztla-", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6431 {"bdnztla+", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6432 {"bdnztla", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BDA}},
6433 {"bdzt-", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDM}},
6434 {"bdzt+", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDP}},
6435 {"bdzt", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BD}},
6436 {"bdztl-", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDM}},
6437 {"bdztl+", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDP}},
6438 {"bdztl", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BD}},
6439 {"bdzta-", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6440 {"bdzta+", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6441 {"bdzta", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BDA}},
6442 {"bdztla-", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6443 {"bdztla+", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6444 {"bdztla", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BDA}},
6445
6446 {"bt-", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDM}},
6447 {"bt+", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDP}},
6448 {"bt", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BD}},
6449 {"bbt", BBO(16,BOT,0,0), BBOAT_MASK, PWRCOM, PPCVLE|EXT, {BI, BD}},
6450 {"btl-", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDM}},
6451 {"btl+", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDP}},
6452 {"btl", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BD}},
6453 {"bbtl", BBO(16,BOT,0,1), BBOAT_MASK, PWRCOM, PPCVLE|EXT, {BI, BD}},
6454 {"bta-", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDMA}},
6455 {"bta+", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDPA}},
6456 {"bta", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDA}},
6457 {"bbta", BBO(16,BOT,1,0), BBOAT_MASK, PWRCOM, PPCVLE|EXT, {BI, BDA}},
6458 {"btla-", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDMA}},
6459 {"btla+", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDPA}},
6460 {"btla", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDA}},
6461 {"bbtla", BBO(16,BOT,1,1), BBOAT_MASK, PWRCOM, PPCVLE|EXT, {BI, BDA}},
6462
6463 {"bc-", B(16,0,0), B_MASK, PPCCOM, PPCVLE|EXT, {BOM, BI, BDM}},
6464 {"bc+", B(16,0,0), B_MASK, PPCCOM, PPCVLE|EXT, {BOP, BI, BDP}},
6465 {"bc", B(16,0,0), B_MASK, COM, PPCVLE, {BO, BI, BD}},
6466 {"bcl-", B(16,0,1), B_MASK, PPCCOM, PPCVLE|EXT, {BOM, BI, BDM}},
6467 {"bcl+", B(16,0,1), B_MASK, PPCCOM, PPCVLE|EXT, {BOP, BI, BDP}},
6468 {"bcl", B(16,0,1), B_MASK, COM, PPCVLE, {BO, BI, BD}},
6469 {"bca-", B(16,1,0), B_MASK, PPCCOM, PPCVLE|EXT, {BOM, BI, BDMA}},
6470 {"bca+", B(16,1,0), B_MASK, PPCCOM, PPCVLE|EXT, {BOP, BI, BDPA}},
6471 {"bca", B(16,1,0), B_MASK, COM, PPCVLE, {BO, BI, BDA}},
6472 {"bcla-", B(16,1,1), B_MASK, PPCCOM, PPCVLE|EXT, {BOM, BI, BDMA}},
6473 {"bcla+", B(16,1,1), B_MASK, PPCCOM, PPCVLE|EXT, {BOP, BI, BDPA}},
6474 {"bcla", B(16,1,1), B_MASK, COM, PPCVLE, {BO, BI, BDA}},
6475
6476 {"svc", SC(17,0,0), SC_MASK, POWER, PPCVLE, {SVC_LEV, FL1, FL2}},
6477 {"scv", SC(17,0,1), SC_MASK, POWER9, PPCVLE, {SVC_LEV}},
6478 {"svcl", SC(17,0,1), SC_MASK, POWER, PPCVLE, {SVC_LEV, FL1, FL2}},
6479 {"sc", SC(17,1,0), SC_MASK, PPC, PPCVLE, {LEV}},
6480 {"svca", SC(17,1,0), SC_MASK, PWRCOM, PPCVLE, {SV}},
6481 {"svcla", SC(17,1,1), SC_MASK, POWER, PPCVLE, {SV}},
6482
6483 {"b", B(18,0,0), B_MASK, COM, PPCVLE, {LI}},
6484 {"bl", B(18,0,1), B_MASK, COM, PPCVLE, {LI}},
6485 {"ba", B(18,1,0), B_MASK, COM, PPCVLE, {LIA}},
6486 {"bla", B(18,1,1), B_MASK, COM, PPCVLE, {LIA}},
6487
6488 {"mcrf", XL(19,0), XLBB_MASK|(3<<21)|(3<<16), COM, PPCVLE, {BF, BFA}},
6489
6490 {"lnia", DX(19,2), NODX_MASK, POWER9, PPCVLE|EXT, {RT}},
6491 {"addpcis", DX(19,2), DX_MASK, POWER9, PPCVLE, {RT, DXD}},
6492 {"subpcis", DX(19,2), DX_MASK, POWER9, PPCVLE|EXT, {RT, NDXD}},
6493
6494 {"minu", MMXMMM(19,3,0,0), MMXMMM_MASK, SFFS, PPCVLE, {RT, RA0, RB}},
6495 {"minu.", MMXMMM(19,3,0,1), MMXMMM_MASK, SFFS, PPCVLE, {RT, RA0, RB}},
6496 {"maxu", MMXMMM(19,3,1,0), MMXMMM_MASK, SFFS, PPCVLE, {RT, RA0, RB}},
6497 {"maxu.", MMXMMM(19,3,1,1), MMXMMM_MASK, SFFS, PPCVLE, {RT, RA0, RB}},
6498 {"mins", MMXMMM(19,3,2,0), MMXMMM_MASK, SFFS, PPCVLE, {RT, RA0, RB}},
6499 {"mins.", MMXMMM(19,3,2,1), MMXMMM_MASK, SFFS, PPCVLE, {RT, RA0, RB}},
6500 {"maxs", MMXMMM(19,3,3,0), MMXMMM_MASK, SFFS, PPCVLE, {RT, RA0, RB}},
6501 {"maxs.", MMXMMM(19,3,3,1), MMXMMM_MASK, SFFS, PPCVLE, {RT, RA0, RB}},
6502 {"minuw", MMXMMM(19,3,4,0), MMXMMM_MASK, SFFS, PPCVLE, {RT, RA0, RB}},
6503 {"minuw.", MMXMMM(19,3,4,1), MMXMMM_MASK, SFFS, PPCVLE, {RT, RA0, RB}},
6504 {"maxuw", MMXMMM(19,3,5,0), MMXMMM_MASK, SFFS, PPCVLE, {RT, RA0, RB}},
6505 {"maxuw.", MMXMMM(19,3,5,1), MMXMMM_MASK, SFFS, PPCVLE, {RT, RA0, RB}},
6506 {"minsw", MMXMMM(19,3,6,0), MMXMMM_MASK, SFFS, PPCVLE, {RT, RA0, RB}},
6507 {"minsw.", MMXMMM(19,3,6,1), MMXMMM_MASK, SFFS, PPCVLE, {RT, RA0, RB}},
6508 {"maxsw", MMXMMM(19,3,7,0), MMXMMM_MASK, SFFS, PPCVLE, {RT, RA0, RB}},
6509 {"maxsw.", MMXMMM(19,3,7,1), MMXMMM_MASK, SFFS, PPCVLE, {RT, RA0, RB}},
6510 {"minmax", MM(19,3,0), MM_MASK, SFFS, PPCVLE, {RT, RA0, RB, MMM}},
6511 {"minmax.", MM(19,3,1), MM_MASK, SFFS, PPCVLE, {RT, RA0, RB, MMM}},
6512
6513 {"bdnzlr-", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BH}},
6514 {"bdnzlr+", XLO(19,BODNZP,16,0), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BH}},
6515 {"bdnzlr", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPCCOM, PPCVLE|EXT, {BH}},
6516 {"bdnzlrl-", XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BH}},
6517 {"bdnzlrl+", XLO(19,BODNZP,16,1), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BH}},
6518 {"bdnzlrl", XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPCCOM, PPCVLE|EXT, {BH}},
6519 {"bdzlr-", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BH}},
6520 {"bdzlr+", XLO(19,BODZP,16,0), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BH}},
6521 {"bdzlr", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPCCOM, PPCVLE|EXT, {BH}},
6522 {"bdzlrl-", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BH}},
6523 {"bdzlrl+", XLO(19,BODZP,16,1), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BH}},
6524 {"bdzlrl", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPCCOM, PPCVLE|EXT, {BH}},
6525 {"blr", XLO(19,BOU,16,0), XLBOBIBB_MASK, PPCCOM, PPCVLE|EXT, {BH}},
6526 {"br", XLO(19,BOU,16,0), XLBOBIBB_MASK, PWRCOM, PPCVLE|EXT, {BH}},
6527 {"blrl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PPCCOM, PPCVLE|EXT, {BH}},
6528 {"brl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PWRCOM, PPCVLE|EXT, {BH}},
6529 {"bdnzlr-", XLO(19,BODNZM4,16,0), XLBOBIBB_MASK, ISA_V2, PPCVLE|EXT, {BH}},
6530 {"bdnzlrl-", XLO(19,BODNZM4,16,1), XLBOBIBB_MASK, ISA_V2, PPCVLE|EXT, {BH}},
6531 {"bdnzlr+", XLO(19,BODNZP4,16,0), XLBOBIBB_MASK, ISA_V2, PPCVLE|EXT, {BH}},
6532 {"bdnzlrl+", XLO(19,BODNZP4,16,1), XLBOBIBB_MASK, ISA_V2, PPCVLE|EXT, {BH}},
6533 {"bdzlr-", XLO(19,BODZM4,16,0), XLBOBIBB_MASK, ISA_V2, PPCVLE|EXT, {BH}},
6534 {"bdzlrl-", XLO(19,BODZM4,16,1), XLBOBIBB_MASK, ISA_V2, PPCVLE|EXT, {BH}},
6535 {"bdzlr+", XLO(19,BODZP4,16,0), XLBOBIBB_MASK, ISA_V2, PPCVLE|EXT, {BH}},
6536 {"bdzlrl+", XLO(19,BODZP4,16,1), XLBOBIBB_MASK, ISA_V2, PPCVLE|EXT, {BH}},
6537
6538 {"bgelr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6539 {"bgelr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6540 {"bgelr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6541 {"bger", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
6542 {"bnllr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6543 {"bnllr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6544 {"bnllr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6545 {"bnlr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
6546 {"bgelrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6547 {"bgelrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6548 {"bgelrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6549 {"bgerl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
6550 {"bnllrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6551 {"bnllrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6552 {"bnllrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6553 {"bnlrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
6554 {"blelr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6555 {"blelr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6556 {"blelr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6557 {"bler", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
6558 {"bnglr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6559 {"bnglr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6560 {"bnglr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6561 {"bngr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
6562 {"blelrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6563 {"blelrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6564 {"blelrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6565 {"blerl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
6566 {"bnglrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6567 {"bnglrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6568 {"bnglrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6569 {"bngrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
6570 {"bnelr-", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6571 {"bnelr+", XLOCB(19,BOFP,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6572 {"bnelr", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6573 {"bner", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
6574 {"bnelrl-", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6575 {"bnelrl+", XLOCB(19,BOFP,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6576 {"bnelrl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6577 {"bnerl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
6578 {"bnslr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6579 {"bnslr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6580 {"bnslr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6581 {"bnsr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
6582 {"bnulr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6583 {"bnulr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6584 {"bnulr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6585 {"bnslrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6586 {"bnslrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6587 {"bnslrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6588 {"bnsrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
6589 {"bnulrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6590 {"bnulrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6591 {"bnulrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6592 {"bgelr-", XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6593 {"bnllr-", XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6594 {"bgelrl-", XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6595 {"bnllrl-", XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6596 {"blelr-", XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6597 {"bnglr-", XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6598 {"blelrl-", XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6599 {"bnglrl-", XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6600 {"bnelr-", XLOCB(19,BOFM4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6601 {"bnelrl-", XLOCB(19,BOFM4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6602 {"bnslr-", XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6603 {"bnulr-", XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6604 {"bnslrl-", XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6605 {"bnulrl-", XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6606 {"bgelr+", XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6607 {"bnllr+", XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6608 {"bgelrl+", XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6609 {"bnllrl+", XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6610 {"blelr+", XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6611 {"bnglr+", XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6612 {"blelrl+", XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6613 {"bnglrl+", XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6614 {"bnelr+", XLOCB(19,BOFP4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6615 {"bnelrl+", XLOCB(19,BOFP4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6616 {"bnslr+", XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6617 {"bnulr+", XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6618 {"bnslrl+", XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6619 {"bnulrl+", XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6620 {"bltlr-", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6621 {"bltlr+", XLOCB(19,BOTP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6622 {"bltlr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6623 {"bltr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
6624 {"bltlrl-", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6625 {"bltlrl+", XLOCB(19,BOTP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6626 {"bltlrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6627 {"bltrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
6628 {"bgtlr-", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6629 {"bgtlr+", XLOCB(19,BOTP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6630 {"bgtlr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6631 {"bgtr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
6632 {"bgtlrl-", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6633 {"bgtlrl+", XLOCB(19,BOTP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6634 {"bgtlrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6635 {"bgtrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
6636 {"beqlr-", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6637 {"beqlr+", XLOCB(19,BOTP,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6638 {"beqlr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6639 {"beqr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
6640 {"beqlrl-", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6641 {"beqlrl+", XLOCB(19,BOTP,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6642 {"beqlrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6643 {"beqrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
6644 {"bsolr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6645 {"bsolr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6646 {"bsolr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6647 {"bsor", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
6648 {"bunlr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6649 {"bunlr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6650 {"bunlr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6651 {"bsolrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6652 {"bsolrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6653 {"bsolrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6654 {"bsorl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
6655 {"bunlrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6656 {"bunlrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6657 {"bunlrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6658 {"bltlr-", XLOCB(19,BOTM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6659 {"bltlrl-", XLOCB(19,BOTM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6660 {"bgtlr-", XLOCB(19,BOTM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6661 {"bgtlrl-", XLOCB(19,BOTM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6662 {"beqlr-", XLOCB(19,BOTM4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6663 {"beqlrl-", XLOCB(19,BOTM4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6664 {"bsolr-", XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6665 {"bunlr-", XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6666 {"bsolrl-", XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6667 {"bunlrl-", XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6668 {"bltlr+", XLOCB(19,BOTP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6669 {"bltlrl+", XLOCB(19,BOTP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6670 {"bgtlr+", XLOCB(19,BOTP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6671 {"bgtlrl+", XLOCB(19,BOTP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6672 {"beqlr+", XLOCB(19,BOTP4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6673 {"beqlrl+", XLOCB(19,BOTP4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6674 {"bsolr+", XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6675 {"bunlr+", XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6676 {"bsolrl+", XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6677 {"bunlrl+", XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6678
6679 {"bdnzflr-", XLO(19,BODNZF,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6680 {"bdnzflr+", XLO(19,BODNZFP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6681 {"bdnzflr", XLO(19,BODNZF,16,0), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
6682 {"bdnzflrl-",XLO(19,BODNZF,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6683 {"bdnzflrl+",XLO(19,BODNZFP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6684 {"bdnzflrl", XLO(19,BODNZF,16,1), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
6685 {"bdzflr-", XLO(19,BODZF,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6686 {"bdzflr+", XLO(19,BODZFP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6687 {"bdzflr", XLO(19,BODZF,16,0), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
6688 {"bdzflrl-", XLO(19,BODZF,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6689 {"bdzflrl+", XLO(19,BODZFP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6690 {"bdzflrl", XLO(19,BODZF,16,1), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
6691 {"bflr-", XLO(19,BOF,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6692 {"bflr+", XLO(19,BOFP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6693 {"bflr", XLO(19,BOF,16,0), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
6694 {"bbfr", XLO(19,BOF,16,0), XLBOBB_MASK, PWRCOM, PPCVLE|EXT, {BI, BH}},
6695 {"bflrl-", XLO(19,BOF,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6696 {"bflrl+", XLO(19,BOFP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6697 {"bflrl", XLO(19,BOF,16,1), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
6698 {"bbfrl", XLO(19,BOF,16,1), XLBOBB_MASK, PWRCOM, PPCVLE|EXT, {BI, BH}},
6699 {"bflr-", XLO(19,BOFM4,16,0), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
6700 {"bflrl-", XLO(19,BOFM4,16,1), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
6701 {"bflr+", XLO(19,BOFP4,16,0), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
6702 {"bflrl+", XLO(19,BOFP4,16,1), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
6703 {"bdnztlr-", XLO(19,BODNZT,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6704 {"bdnztlr+", XLO(19,BODNZTP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6705 {"bdnztlr", XLO(19,BODNZT,16,0), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
6706 {"bdnztlrl-", XLO(19,BODNZT,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6707 {"bdnztlrl+", XLO(19,BODNZTP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6708 {"bdnztlrl", XLO(19,BODNZT,16,1), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
6709 {"bdztlr-", XLO(19,BODZT,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6710 {"bdztlr+", XLO(19,BODZTP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6711 {"bdztlr", XLO(19,BODZT,16,0), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
6712 {"bdztlrl-", XLO(19,BODZT,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6713 {"bdztlrl+", XLO(19,BODZTP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6714 {"bdztlrl", XLO(19,BODZT,16,1), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
6715 {"btlr-", XLO(19,BOT,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6716 {"btlr+", XLO(19,BOTP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6717 {"btlr", XLO(19,BOT,16,0), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
6718 {"bbtr", XLO(19,BOT,16,0), XLBOBB_MASK, PWRCOM, PPCVLE|EXT, {BI, BH}},
6719 {"btlrl-", XLO(19,BOT,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6720 {"btlrl+", XLO(19,BOTP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6721 {"btlrl", XLO(19,BOT,16,1), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
6722 {"bbtrl", XLO(19,BOT,16,1), XLBOBB_MASK, PWRCOM, PPCVLE|EXT, {BI, BH}},
6723 {"btlr-", XLO(19,BOTM4,16,0), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
6724 {"btlrl-", XLO(19,BOTM4,16,1), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
6725 {"btlr+", XLO(19,BOTP4,16,0), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
6726 {"btlrl+", XLO(19,BOTP4,16,1), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
6727
6728 {"bclr-", XLLK(19,16,0), XLBH_MASK, PPCCOM, PPCVLE|EXT, {BOM, BI, BH}},
6729 {"bclr+", XLLK(19,16,0), XLBH_MASK, PPCCOM, PPCVLE|EXT, {BOP, BI, BH}},
6730 {"bclr", XLLK(19,16,0), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}},
6731 {"bcr", XLLK(19,16,0), XLBH_MASK, PWRCOM, PPCVLE, {BO, BI, BH}},
6732 {"bclrl-", XLLK(19,16,1), XLBH_MASK, PPCCOM, PPCVLE|EXT, {BOM, BI, BH}},
6733 {"bclrl+", XLLK(19,16,1), XLBH_MASK, PPCCOM, PPCVLE|EXT, {BOP, BI, BH}},
6734 {"bclrl", XLLK(19,16,1), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}},
6735 {"bcrl", XLLK(19,16,1), XLBH_MASK, PWRCOM, PPCVLE, {BO, BI, BH}},
6736
6737 {"rfid", XL(19,18), 0xffffffff, PPC64, PPCVLE, {0}},
6738
6739 {"crnot", XL(19,33), XL_MASK, PPCCOM, PPCVLE|EXT, {BT, BAB}},
6740 {"crnor", XL(19,33), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
6741
6742 {"rfmci", X(19,38), 0xffffffff, PPCRFMCI|PPCA2|PPC476, PPCVLE, {0}},
6743 {"rfdi", XL(19,39), 0xffffffff, E500MC, PPCVLE, {0}},
6744 {"rfi", XL(19,50), 0xffffffff, COM, PPCVLE, {0}},
6745 {"rfci", XL(19,51), 0xffffffff, PPC403|BOOKE|PPCE300|PPCA2|PPC476, PPCVLE, {0}},
6746
6747 {"rfscv", XL(19,82), 0xffffffff, POWER9, PPCVLE, {0}},
6748 {"rfsvc", XL(19,82), 0xffffffff, POWER, PPCVLE, {0}},
6749
6750 {"rfgi", XL(19,102), 0xffffffff, E500MC|PPCA2, PPCVLE, {0}},
6751
6752 {"crandc", XL(19,129), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
6753
6754 {"rfebb", XL(19,146), XLS_MASK, POWER8, PPCVLE, {SXL}},
6755
6756 {"isync", XL(19,150), 0xffffffff, PPCCOM, PPCVLE, {0}},
6757 {"ics", XL(19,150), 0xffffffff, PWRCOM, PPCVLE, {0}},
6758
6759 {"crclr", XL(19,193), XL_MASK, PPCCOM, PPCVLE|EXT, {BTAB}},
6760 {"crxor", XL(19,193), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
6761
6762 {"dnh", X(19,198), X_MASK, E500MC, PPCVLE, {DUI, DUIS}},
6763
6764 {"crnand", XL(19,225), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
6765
6766 {"crand", XL(19,257), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
6767
6768 {"hrfid", XL(19,274), 0xffffffff, POWER5|CELL, PPC476|PPCVLE, {0}},
6769
6770 {"crset", XL(19,289), XL_MASK, PPCCOM, PPCVLE|EXT, {BTAB}},
6771 {"creqv", XL(19,289), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
6772
6773 {"urfid", XL(19,306), 0xffffffff, POWER9, PPCVLE, {0}},
6774 {"stop", XL(19,370), 0xffffffff, POWER9, PPCVLE, {0}},
6775
6776 {"doze", XL(19,402), 0xffffffff, POWER6, POWER9|PPCVLE, {0}},
6777
6778 {"crorc", XL(19,417), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
6779
6780 {"nap", XL(19,434), 0xffffffff, POWER6, POWER9|PPCVLE, {0}},
6781
6782 {"crmove", XL(19,449), XL_MASK, PPCCOM, PPCVLE|EXT, {BT, BAB}},
6783 {"cror", XL(19,449), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
6784
6785 {"sleep", XL(19,466), 0xffffffff, POWER6, POWER9|PPCVLE, {0}},
6786 {"rvwinkle", XL(19,498), 0xffffffff, POWER6, POWER9|PPCVLE, {0}},
6787
6788 {"bctr", XLO(19,BOU,528,0), XLBOBIBB_MASK, COM, PPCVLE|EXT, {BH}},
6789 {"bctrl", XLO(19,BOU,528,1), XLBOBIBB_MASK, COM, PPCVLE|EXT, {BH}},
6790 {"bgectr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6791 {"bgectr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6792 {"bgectr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6793 {"bnlctr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6794 {"bnlctr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6795 {"bnlctr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6796 {"bgectrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6797 {"bgectrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6798 {"bgectrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6799 {"bnlctrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6800 {"bnlctrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6801 {"bnlctrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6802 {"blectr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6803 {"blectr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6804 {"blectr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6805 {"bngctr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6806 {"bngctr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6807 {"bngctr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6808 {"blectrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6809 {"blectrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6810 {"blectrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6811 {"bngctrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6812 {"bngctrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6813 {"bngctrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6814 {"bnectr-", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6815 {"bnectr+", XLOCB(19,BOFP,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6816 {"bnectr", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6817 {"bnectrl-",XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6818 {"bnectrl+",XLOCB(19,BOFP,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6819 {"bnectrl", XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6820 {"bnsctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6821 {"bnsctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6822 {"bnsctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6823 {"bnuctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6824 {"bnuctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6825 {"bnuctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6826 {"bnsctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6827 {"bnsctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6828 {"bnsctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6829 {"bnuctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6830 {"bnuctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6831 {"bnuctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6832 {"bgectr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6833 {"bnlctr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6834 {"bgectrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6835 {"bnlctrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6836 {"blectr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6837 {"bngctr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6838 {"blectrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6839 {"bngctrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6840 {"bnectr-", XLOCB(19,BOFM4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6841 {"bnectrl-",XLOCB(19,BOFM4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6842 {"bnsctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6843 {"bnuctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6844 {"bnsctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6845 {"bnuctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6846 {"bgectr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6847 {"bnlctr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6848 {"bgectrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6849 {"bnlctrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6850 {"blectr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6851 {"bngctr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6852 {"blectrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6853 {"bngctrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6854 {"bnectr+", XLOCB(19,BOFP4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6855 {"bnectrl+",XLOCB(19,BOFP4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6856 {"bnsctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6857 {"bnuctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6858 {"bnsctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6859 {"bnuctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6860 {"bltctr-", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6861 {"bltctr+", XLOCB(19,BOTP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6862 {"bltctr", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6863 {"bltctrl-",XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6864 {"bltctrl+",XLOCB(19,BOTP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6865 {"bltctrl", XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6866 {"bgtctr-", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6867 {"bgtctr+", XLOCB(19,BOTP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6868 {"bgtctr", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6869 {"bgtctrl-",XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6870 {"bgtctrl+",XLOCB(19,BOTP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6871 {"bgtctrl", XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6872 {"beqctr-", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6873 {"beqctr+", XLOCB(19,BOTP,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6874 {"beqctr", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6875 {"beqctrl-",XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6876 {"beqctrl+",XLOCB(19,BOTP,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6877 {"beqctrl", XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6878 {"bsoctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6879 {"bsoctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6880 {"bsoctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6881 {"bunctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6882 {"bunctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6883 {"bunctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6884 {"bsoctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6885 {"bsoctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6886 {"bsoctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6887 {"bunctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6888 {"bunctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6889 {"bunctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6890 {"bltctr-", XLOCB(19,BOTM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6891 {"bltctrl-",XLOCB(19,BOTM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6892 {"bgtctr-", XLOCB(19,BOTM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6893 {"bgtctrl-",XLOCB(19,BOTM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6894 {"beqctr-", XLOCB(19,BOTM4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6895 {"beqctrl-",XLOCB(19,BOTM4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6896 {"bsoctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6897 {"bunctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6898 {"bsoctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6899 {"bunctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6900 {"bltctr+", XLOCB(19,BOTP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6901 {"bltctrl+",XLOCB(19,BOTP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6902 {"bgtctr+", XLOCB(19,BOTP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6903 {"bgtctrl+",XLOCB(19,BOTP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6904 {"beqctr+", XLOCB(19,BOTP4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6905 {"beqctrl+",XLOCB(19,BOTP4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6906 {"bsoctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6907 {"bunctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6908 {"bsoctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6909 {"bunctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6910
6911 {"bfctr-", XLO(19,BOF,528,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6912 {"bfctr+", XLO(19,BOFP,528,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6913 {"bfctr", XLO(19,BOF,528,0), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
6914 {"bfctrl-", XLO(19,BOF,528,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6915 {"bfctrl+", XLO(19,BOFP,528,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6916 {"bfctrl", XLO(19,BOF,528,1), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
6917 {"bfctr-", XLO(19,BOFM4,528,0), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
6918 {"bfctrl-", XLO(19,BOFM4,528,1), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
6919 {"bfctr+", XLO(19,BOFP4,528,0), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
6920 {"bfctrl+", XLO(19,BOFP4,528,1), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
6921 {"btctr-", XLO(19,BOT,528,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6922 {"btctr+", XLO(19,BOTP,528,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6923 {"btctr", XLO(19,BOT,528,0), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
6924 {"btctrl-", XLO(19,BOT,528,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6925 {"btctrl+", XLO(19,BOTP,528,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6926 {"btctrl", XLO(19,BOT,528,1), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
6927 {"btctr-", XLO(19,BOTM4,528,0), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
6928 {"btctrl-", XLO(19,BOTM4,528,1), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
6929 {"btctr+", XLO(19,BOTP4,528,0), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
6930 {"btctrl+", XLO(19,BOTP4,528,1), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
6931
6932 {"bcctr-", XLLK(19,528,0), XLBH_MASK, PPCCOM, PPCVLE|EXT, {BOM, BI, BH}},
6933 {"bcctr+", XLLK(19,528,0), XLBH_MASK, PPCCOM, PPCVLE|EXT, {BOP, BI, BH}},
6934 {"bcctr", XLLK(19,528,0), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}},
6935 {"bcc", XLLK(19,528,0), XLBH_MASK, PWRCOM, PPCVLE, {BO, BI, BH}},
6936 {"bcctrl-", XLLK(19,528,1), XLBH_MASK, PPCCOM, PPCVLE|EXT, {BOM, BI, BH}},
6937 {"bcctrl+", XLLK(19,528,1), XLBH_MASK, PPCCOM, PPCVLE|EXT, {BOP, BI, BH}},
6938 {"bcctrl", XLLK(19,528,1), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}},
6939 {"bccl", XLLK(19,528,1), XLBH_MASK, PWRCOM, PPCVLE, {BO, BI, BH}},
6940
6941 {"bdnztar", XLO(19,BODNZ,560,0), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6942 {"bdnztarl", XLO(19,BODNZ,560,1), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6943 {"bdztar", XLO(19,BODZ,560,0), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6944 {"bdztarl", XLO(19,BODZ,560,1), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6945 {"btar", XLO(19,BOU,560,0), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6946 {"btarl", XLO(19,BOU,560,1), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6947 {"bdnztar-", XLO(19,BODNZM4,560,0), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6948 {"bdnztarl-", XLO(19,BODNZM4,560,1), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6949 {"bdnztar+", XLO(19,BODNZP4,560,0), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6950 {"bdnztarl+", XLO(19,BODNZP4,560,1), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6951 {"bdztar-", XLO(19,BODZM4,560,0), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6952 {"bdztarl-", XLO(19,BODZM4,560,1), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6953 {"bdztar+", XLO(19,BODZP4,560,0), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6954 {"bdztarl+", XLO(19,BODZP4,560,1), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6955
6956 {"bgetar", XLOCB(19,BOF,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6957 {"bnltar", XLOCB(19,BOF,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6958 {"bgetarl", XLOCB(19,BOF,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6959 {"bnltarl", XLOCB(19,BOF,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6960 {"bletar", XLOCB(19,BOF,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6961 {"bngtar", XLOCB(19,BOF,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6962 {"bletarl", XLOCB(19,BOF,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6963 {"bngtarl", XLOCB(19,BOF,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6964 {"bnetar", XLOCB(19,BOF,CBEQ,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6965 {"bnetarl", XLOCB(19,BOF,CBEQ,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6966 {"bnstar", XLOCB(19,BOF,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6967 {"bnutar", XLOCB(19,BOF,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6968 {"bnstarl", XLOCB(19,BOF,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6969 {"bnutarl", XLOCB(19,BOF,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6970 {"bgetar-", XLOCB(19,BOFM4,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6971 {"bnltar-", XLOCB(19,BOFM4,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6972 {"bgetarl-",XLOCB(19,BOFM4,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6973 {"bnltarl-",XLOCB(19,BOFM4,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6974 {"bletar-", XLOCB(19,BOFM4,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6975 {"bngtar-", XLOCB(19,BOFM4,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6976 {"bletarl-",XLOCB(19,BOFM4,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6977 {"bngtarl-",XLOCB(19,BOFM4,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6978 {"bnetar-", XLOCB(19,BOFM4,CBEQ,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6979 {"bnetarl-",XLOCB(19,BOFM4,CBEQ,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6980 {"bnstar-", XLOCB(19,BOFM4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6981 {"bnutar-", XLOCB(19,BOFM4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6982 {"bnstarl-",XLOCB(19,BOFM4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6983 {"bnutarl-",XLOCB(19,BOFM4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6984 {"bgetar+", XLOCB(19,BOFP4,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6985 {"bnltar+", XLOCB(19,BOFP4,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6986 {"bgetarl+",XLOCB(19,BOFP4,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6987 {"bnltarl+",XLOCB(19,BOFP4,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6988 {"bletar+", XLOCB(19,BOFP4,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6989 {"bngtar+", XLOCB(19,BOFP4,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6990 {"bletarl+",XLOCB(19,BOFP4,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6991 {"bngtarl+",XLOCB(19,BOFP4,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6992 {"bnetar+", XLOCB(19,BOFP4,CBEQ,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6993 {"bnetarl+",XLOCB(19,BOFP4,CBEQ,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6994 {"bnstar+", XLOCB(19,BOFP4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6995 {"bnutar+", XLOCB(19,BOFP4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6996 {"bnstarl+",XLOCB(19,BOFP4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6997 {"bnutarl+",XLOCB(19,BOFP4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6998 {"blttar", XLOCB(19,BOT,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6999 {"blttarl", XLOCB(19,BOT,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7000 {"bgttar", XLOCB(19,BOT,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7001 {"bgttarl", XLOCB(19,BOT,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7002 {"beqtar", XLOCB(19,BOT,CBEQ,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7003 {"beqtarl", XLOCB(19,BOT,CBEQ,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7004 {"bsotar", XLOCB(19,BOT,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7005 {"buntar", XLOCB(19,BOT,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7006 {"bsotarl", XLOCB(19,BOT,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7007 {"buntarl", XLOCB(19,BOT,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7008 {"blttar-", XLOCB(19,BOTM4,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7009 {"blttarl-",XLOCB(19,BOTM4,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7010 {"bgttar-", XLOCB(19,BOTM4,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7011 {"bgttarl-",XLOCB(19,BOTM4,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7012 {"beqtar-", XLOCB(19,BOTM4,CBEQ,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7013 {"beqtarl-",XLOCB(19,BOTM4,CBEQ,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7014 {"bsotar-", XLOCB(19,BOTM4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7015 {"buntar-", XLOCB(19,BOTM4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7016 {"bsotarl-",XLOCB(19,BOTM4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7017 {"buntarl-",XLOCB(19,BOTM4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7018 {"blttar+", XLOCB(19,BOTP4,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7019 {"blttarl+",XLOCB(19,BOTP4,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7020 {"bgttar+", XLOCB(19,BOTP4,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7021 {"bgttarl+",XLOCB(19,BOTP4,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7022 {"beqtar+", XLOCB(19,BOTP4,CBEQ,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7023 {"beqtarl+",XLOCB(19,BOTP4,CBEQ,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7024 {"bsotar+", XLOCB(19,BOTP4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7025 {"buntar+", XLOCB(19,BOTP4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7026 {"bsotarl+",XLOCB(19,BOTP4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7027 {"buntarl+",XLOCB(19,BOTP4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
7028
7029 {"bdnzftar", XLO(19,BODNZF,560,0), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
7030 {"bdnzftarl", XLO(19,BODNZF,560,1), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
7031 {"bdzftar", XLO(19,BODZF,560,0), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
7032 {"bdzftarl", XLO(19,BODZF,560,1), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
7033
7034 {"bftar", XLO(19,BOF,560,0), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
7035 {"bftarl", XLO(19,BOF,560,1), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
7036 {"bftar-", XLO(19,BOFM4,560,0), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
7037 {"bftarl-", XLO(19,BOFM4,560,1), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
7038 {"bftar+", XLO(19,BOFP4,560,0), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
7039 {"bftarl+", XLO(19,BOFP4,560,1), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
7040
7041 {"bdnzttar", XLO(19,BODNZT,560,0), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
7042 {"bdnzttarl", XLO(19,BODNZT,560,1), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
7043 {"bdzttar", XLO(19,BODZT,560,0), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
7044 {"bdzttarl", XLO(19,BODZT,560,1), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
7045
7046 {"bttar", XLO(19,BOT,560,0), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
7047 {"bttarl", XLO(19,BOT,560,1), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
7048 {"bttar-", XLO(19,BOTM4,560,0), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
7049 {"bttarl-", XLO(19,BOTM4,560,1), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
7050 {"bttar+", XLO(19,BOTP4,560,0), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
7051 {"bttarl+", XLO(19,BOTP4,560,1), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
7052
7053 {"bctar-", XLLK(19,560,0), XLBH_MASK, POWER8, PPCVLE|EXT, {BOM, BI, BH}},
7054 {"bctar+", XLLK(19,560,0), XLBH_MASK, POWER8, PPCVLE|EXT, {BOP, BI, BH}},
7055 {"bctar", XLLK(19,560,0), XLBH_MASK, POWER8, PPCVLE, {BO, BI, BH}},
7056 {"bctarl-", XLLK(19,560,1), XLBH_MASK, POWER8, PPCVLE|EXT, {BOM, BI, BH}},
7057 {"bctarl+", XLLK(19,560,1), XLBH_MASK, POWER8, PPCVLE|EXT, {BOP, BI, BH}},
7058 {"bctarl", XLLK(19,560,1), XLBH_MASK, POWER8, PPCVLE, {BO, BI, BH}},
7059
7060 {"rlwimi", M(20,0), M_MASK, PPCCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
7061 {"inslwi", M(20,0), M_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, ILWn, ILWb}},
7062 {"insrwi", M(20,0), M_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, IRWn, IRWb}},
7063 {"rlimi", M(20,0), M_MASK, PWRCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
7064
7065 {"rlwimi.", M(20,1), M_MASK, PPCCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
7066 {"inslwi.", M(20,1), M_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, ILWn, ILWb}},
7067 {"insrwi.", M(20,1), M_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, IRWn, IRWb}},
7068 {"rlimi.", M(20,1), M_MASK, PWRCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
7069
7070 {"rotlwi", MME(21,31,0), MMBME_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, SH}},
7071 {"rotrwi", MME(21,31,0), MMBME_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, RRWn}},
7072 {"clrlwi", MME(21,31,0), MSHME_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, MB}},
7073 {"clrrwi", M(21,0), MSHMB_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, CRWn}},
7074 {"slwi", M(21,0), MMB_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, SLWn}},
7075 {"srwi", MME(21,31,0), MME_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, SRWn}},
7076 {"rlwinm", M(21,0), M_MASK, PPCCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
7077 {"extlwi", M(21,0), MMB_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, ELWn, SH}},
7078 {"extrwi", MME(21,31,0), MME_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, ERWn, ERWb}},
7079 {"clrlslwi", M(21,0), M_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, CSLWb, CSLWn}},
7080 {"sli", M(21,0), MMB_MASK, PWRCOM, PPCVLE|EXT, {RA, RS, SLWn}},
7081 {"sri", MME(21,31,0), MME_MASK, PWRCOM, PPCVLE|EXT, {RA, RS, SRWn}},
7082 {"rlinm", M(21,0), M_MASK, PWRCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
7083 {"rotlwi.", MME(21,31,1), MMBME_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, SH}},
7084 {"rotrwi.", MME(21,31,1), MMBME_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, RRWn}},
7085 {"clrlwi.", MME(21,31,1), MSHME_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, MB}},
7086 {"clrrwi.", M(21,1), MSHMB_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, CRWn}},
7087 {"slwi.", M(21,1), MMB_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, SLWn}},
7088 {"srwi.", MME(21,31,1), MME_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, SRWn}},
7089 {"rlwinm.", M(21,1), M_MASK, PPCCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
7090 {"extlwi.", M(21,1), MMB_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, ELWn, SH}},
7091 {"extrwi.", MME(21,31,1), MME_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, ERWn, ERWb}},
7092 {"clrlslwi.", M(21,1), M_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, CSLWb, CSLWn}},
7093 {"sli.", M(21,1), MMB_MASK, PWRCOM, PPCVLE|EXT, {RA, RS, SLWn}},
7094 {"sri.", MME(21,31,1), MME_MASK, PWRCOM, PPCVLE|EXT, {RA, RS, SRWn}},
7095 {"rlinm.", M(21,1), M_MASK, PWRCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
7096
7097 {"rlmi", M(22,0), M_MASK, M601, PPCVLE, {RA, RS, RB, MBE, ME}},
7098 {"rlmi.", M(22,1), M_MASK, M601, PPCVLE, {RA, RS, RB, MBE, ME}},
7099
7100 {"fmvis", DX(22,3), DX_MASK, SFFS, PPCVLE, {FRS, DXD}},
7101 {"fishmv", DX(22,11), DX_MASK, SFFS, PPCVLE, {FRS, DXD}},
7102
7103 {"bmask", BM2(22,17), BM2_MASK, SFFS, PPCVLE, {RT, RA, RB, bm, LBM2}},
7104
7105 {"svstep", SVL(22,19,0), SVL_MASK, SFFS, PPCVLE, {RT, SVi, vf}},
7106 {"svstep.", SVL(22,19,1), SVL_MASK, SFFS, PPCVLE, {RT, SVi, vf}},
7107
7108 {"svshape2", SVM2(22,281), SVM2_MASK, SFFS, PPCVLE, {SVo, yx10, rmm, SVd, sk, mm}},
7109 {"svshape", SVM(22,25), SVM_MASK, SFFS, PPCVLE, {SVxd, SVyd, SVzd, SVrm, vf}},
7110
7111 {"setvl", SVL(22,27,0), SVL_MASK, SFFS, PPCVLE, {RT0, RA0, SVi, vf, vs, ms}},
7112 {"setvl.", SVL(22,27,1), SVL_MASK, SFFS, PPCVLE, {RT0, RA0, SVi, vf, vs, ms}},
7113
7114 {"svindex", SVI(22,41), SVI_MASK, SFFS, PPCVLE, {SVG, rmm, SVd, ew, yx, mm, sk}},
7115
7116 {"svremap", SVRM(22,57), SVRM_MASK, SFFS, PPCVLE, {SVme, mi0, mi1, mi2, mo0, mo1, pst}},
7117
7118 {"sadd", ZRC(22,110,0), Z2_MASK, SFFS, PPCVLE, {RT, RA, RB, SHP1}},
7119 {"sadd.", ZRC(22,110,1), Z2_MASK, SFFS, PPCVLE, {RT, RA, RB, SHP1}},
7120 {"sadduw", ZRC(22,238,0), Z2_MASK, SFFS, PPCVLE, {RT, RA, RB, SHP1}},
7121 {"sadduw.", ZRC(22,238,1), Z2_MASK, SFFS, PPCVLE, {RT, RA, RB, SHP1}},
7122
7123 {"cprop", XRC(22,398,0), X_MASK, SFFS, PPCVLE, {RT, RA, RB}},
7124 {"cprop.", XRC(22,398,1), X_MASK, SFFS, PPCVLE, {RT, RA, RB}},
7125
7126 {"absdacs", XRC(22,502,0), X_MASK, SFFS, PPCVLE, {RT, RA, RB}},
7127 {"absdacs.", XRC(22,502,1), X_MASK, SFFS, PPCVLE, {RT, RA, RB}},
7128 {"absds", XRC(22,630,0), X_MASK, SFFS, PPCVLE, {RT, RA, RB}},
7129 {"absds.", XRC(22,630,1), X_MASK, SFFS, PPCVLE, {RT, RA, RB}},
7130 {"absdu", XRC(22,758,0), X_MASK, SFFS, PPCVLE, {RT, RA, RB}},
7131 {"absdu.", XRC(22,758,1), X_MASK, SFFS, PPCVLE, {RT, RA, RB}},
7132 {"absdacu", XRC(22,1014,0), X_MASK, SFFS, PPCVLE, {RT, RA, RB}},
7133 {"absdacu.", XRC(22,1014,1), X_MASK, SFFS, PPCVLE, {RT, RA, RB}},
7134
7135 {"avgadd", XRC(22,846,0), X_MASK, SFFS, PPCVLE, {RT, RA, RB}},
7136 {"avgadd.", XRC(22,846,1), X_MASK, SFFS, PPCVLE, {RT, RA, RB}},
7137
7138 {"rotlw", MME(23,31,0), MMBME_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, RB}},
7139 {"rlwnm", M(23,0), M_MASK, PPCCOM, PPCVLE, {RA, RS, RB, MBE, ME}},
7140 {"rlnm", M(23,0), M_MASK, PWRCOM, PPCVLE, {RA, RS, RB, MBE, ME}},
7141 {"rotlw.", MME(23,31,1), MMBME_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, RB}},
7142 {"rlwnm.", M(23,1), M_MASK, PPCCOM, PPCVLE, {RA, RS, RB, MBE, ME}},
7143 {"rlnm.", M(23,1), M_MASK, PWRCOM, PPCVLE, {RA, RS, RB, MBE, ME}},
7144
7145 {"nop", OP(24), 0xffffffff, PPCCOM, PPCVLE|EXT, {0}},
7146 {"exser", 0x63ff0000, 0xffffffff, POWER9, PPCVLE|EXT, {0}},
7147 {"ori", OP(24), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
7148 {"oril", OP(24), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
7149
7150 {"oris", OP(25), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
7151 {"oriu", OP(25), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
7152
7153 {"xnop", OP(26), 0xffffffff, PPCCOM, PPCVLE|EXT, {0}},
7154 {"xori", OP(26), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
7155 {"xoril", OP(26), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
7156
7157 {"xoris", OP(27), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
7158 {"xoriu", OP(27), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
7159
7160 {"andi.", OP(28), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
7161 {"andil.", OP(28), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
7162
7163 {"andis.", OP(29), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
7164 {"andiu.", OP(29), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
7165
7166 {"rotldi", MD(30,0,0), MDMB_MASK, PPC64, PPCVLE|EXT, {RA, RS, SH6}},
7167 {"rotrdi", MD(30,0,0), MDMB_MASK, PPC64, PPCVLE|EXT, {RA, RS, RRDn}},
7168 {"clrldi", MD(30,0,0), MDSH_MASK, PPC64, PPCVLE|EXT, {RA, RS, MB6}},
7169 {"srdi", MD(30,0,0), MD_MASK, PPC64, PPCVLE|EXT, {RA, RS, SRDn}},
7170 {"rldicl", MD(30,0,0), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
7171 {"extrdi", MD(30,0,0), MD_MASK, PPC64, PPCVLE|EXT, {RA, RS, ERDn, ERDb}},
7172 {"rotldi.", MD(30,0,1), MDMB_MASK, PPC64, PPCVLE|EXT, {RA, RS, SH6}},
7173 {"rotrdi.", MD(30,0,1), MDMB_MASK, PPC64, PPCVLE|EXT, {RA, RS, RRDn}},
7174 {"clrldi.", MD(30,0,1), MDSH_MASK, PPC64, PPCVLE|EXT, {RA, RS, MB6}},
7175 {"srdi.", MD(30,0,1), MD_MASK, PPC64, PPCVLE|EXT, {RA, RS, SRDn}},
7176 {"rldicl.", MD(30,0,1), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
7177 {"extrdi.", MD(30,0,1), MD_MASK, PPC64, PPCVLE|EXT, {RA, RS, ERDn, ERDb}},
7178
7179 {"clrrdi", MD(30,1,0), MDSH_MASK, PPC64, PPCVLE|EXT, {RA, RS, CRDn}},
7180 {"sldi", MD(30,1,0), MD_MASK, PPC64, PPCVLE|EXT, {RA, RS, SLDn}},
7181 {"rldicr", MD(30,1,0), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, ME6}},
7182 {"extldi", MD(30,1,0), MD_MASK, PPC64, PPCVLE, {RA, RS, ELDn, SH6}},
7183 {"clrrdi.", MD(30,1,1), MDSH_MASK, PPC64, PPCVLE|EXT, {RA, RS, CRDn}},
7184 {"sldi.", MD(30,1,1), MD_MASK, PPC64, PPCVLE|EXT, {RA, RS, SLDn}},
7185 {"rldicr.", MD(30,1,1), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, ME6}},
7186 {"extldi.", MD(30,1,1), MD_MASK, PPC64, PPCVLE, {RA, RS, ELDn, SH6}},
7187
7188 {"rldic", MD(30,2,0), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
7189 {"clrlsldi", MD(30,2,0), MD_MASK, PPC64, PPCVLE|EXT, {RA, RS, CSLDb, CSLDn}},
7190 {"rldic.", MD(30,2,1), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
7191 {"clrlsldi.", MD(30,2,1), MD_MASK, PPC64, PPCVLE|EXT, {RA, RS, CSLDb, CSLDn}},
7192
7193 {"rldimi", MD(30,3,0), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
7194 {"insrdi", MD(30,3,0), MD_MASK, PPC64, PPCVLE|EXT, {RA, RS, IRDn, IRDb}},
7195 {"rldimi.", MD(30,3,1), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
7196 {"insrdi.", MD(30,3,1), MD_MASK, PPC64, PPCVLE|EXT, {RA, RS, IRDn, IRDb}},
7197
7198 {"rotld", MDS(30,8,0), MDSMB_MASK, PPC64, PPCVLE|EXT, {RA, RS, RB}},
7199 {"rldcl", MDS(30,8,0), MDS_MASK, PPC64, PPCVLE, {RA, RS, RB, MB6}},
7200 {"rotld.", MDS(30,8,1), MDSMB_MASK, PPC64, PPCVLE|EXT, {RA, RS, RB}},
7201 {"rldcl.", MDS(30,8,1), MDS_MASK, PPC64, PPCVLE, {RA, RS, RB, MB6}},
7202
7203 {"rldcr", MDS(30,9,0), MDS_MASK, PPC64, PPCVLE, {RA, RS, RB, ME6}},
7204 {"rldcr.", MDS(30,9,1), MDS_MASK, PPC64, PPCVLE, {RA, RS, RB, ME6}},
7205
7206 {"cmpw", XOPL(31,0,0), XCMPL_MASK, PPCCOM, EXT, {OBF, RA, RB}},
7207 {"cmpd", XOPL(31,0,1), XCMPL_MASK, PPC64, EXT, {OBF, RA, RB}},
7208 {"cmp", X(31,0), XCMP_MASK, PPC, 0, {BF, L32OPT, RA, RB}},
7209 {"cmp", X(31,0), XCMPL_MASK, PWRCOM, PPC, {BF, RA, RB}},
7210
7211 {"twlgt", XTO(31,4,TOLGT), XTO_MASK, PPCCOM, EXT, {RA, RB}},
7212 {"tlgt", XTO(31,4,TOLGT), XTO_MASK, PWRCOM, EXT, {RA, RB}},
7213 {"twllt", XTO(31,4,TOLLT), XTO_MASK, PPCCOM, EXT, {RA, RB}},
7214 {"tllt", XTO(31,4,TOLLT), XTO_MASK, PWRCOM, EXT, {RA, RB}},
7215 {"tweq", XTO(31,4,TOEQ), XTO_MASK, PPCCOM, EXT, {RA, RB}},
7216 {"teq", XTO(31,4,TOEQ), XTO_MASK, PWRCOM, EXT, {RA, RB}},
7217 {"twlge", XTO(31,4,TOLGE), XTO_MASK, PPCCOM, EXT, {RA, RB}},
7218 {"tlge", XTO(31,4,TOLGE), XTO_MASK, PWRCOM, EXT, {RA, RB}},
7219 {"twlnl", XTO(31,4,TOLNL), XTO_MASK, PPCCOM, EXT, {RA, RB}},
7220 {"tlnl", XTO(31,4,TOLNL), XTO_MASK, PWRCOM, EXT, {RA, RB}},
7221 {"twlle", XTO(31,4,TOLLE), XTO_MASK, PPCCOM, EXT, {RA, RB}},
7222 {"tlle", XTO(31,4,TOLLE), XTO_MASK, PWRCOM, EXT, {RA, RB}},
7223 {"twlng", XTO(31,4,TOLNG), XTO_MASK, PPCCOM, EXT, {RA, RB}},
7224 {"tlng", XTO(31,4,TOLNG), XTO_MASK, PWRCOM, EXT, {RA, RB}},
7225 {"twgt", XTO(31,4,TOGT), XTO_MASK, PPCCOM, EXT, {RA, RB}},
7226 {"tgt", XTO(31,4,TOGT), XTO_MASK, PWRCOM, EXT, {RA, RB}},
7227 {"twge", XTO(31,4,TOGE), XTO_MASK, PPCCOM, EXT, {RA, RB}},
7228 {"tge", XTO(31,4,TOGE), XTO_MASK, PWRCOM, EXT, {RA, RB}},
7229 {"twnl", XTO(31,4,TONL), XTO_MASK, PPCCOM, EXT, {RA, RB}},
7230 {"tnl", XTO(31,4,TONL), XTO_MASK, PWRCOM, EXT, {RA, RB}},
7231 {"twlt", XTO(31,4,TOLT), XTO_MASK, PPCCOM, EXT, {RA, RB}},
7232 {"tlt", XTO(31,4,TOLT), XTO_MASK, PWRCOM, EXT, {RA, RB}},
7233 {"twle", XTO(31,4,TOLE), XTO_MASK, PPCCOM, EXT, {RA, RB}},
7234 {"tle", XTO(31,4,TOLE), XTO_MASK, PWRCOM, EXT, {RA, RB}},
7235 {"twng", XTO(31,4,TONG), XTO_MASK, PPCCOM, EXT, {RA, RB}},
7236 {"tng", XTO(31,4,TONG), XTO_MASK, PWRCOM, EXT, {RA, RB}},
7237 {"twne", XTO(31,4,TONE), XTO_MASK, PPCCOM, EXT, {RA, RB}},
7238 {"tne", XTO(31,4,TONE), XTO_MASK, PWRCOM, EXT, {RA, RB}},
7239 {"trap", XTO(31,4,TOU), 0xffffffff, PPCCOM, EXT, {0}},
7240 {"twu", XTO(31,4,TOU), XTO_MASK, PPCCOM, EXT, {RA, RB}},
7241 {"tu", XTO(31,4,TOU), XTO_MASK, PWRCOM, EXT, {RA, RB}},
7242 {"tw", X(31,4), X_MASK, PPCCOM, 0, {TO, RA, RB}},
7243 {"t", X(31,4), X_MASK, PWRCOM, 0, {TO, RA, RB}},
7244
7245 {"lvsl", X(31,6), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
7246 {"lvebx", X(31,7), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
7247 {"lbfcmx", APU(31,7,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
7248
7249 {"subfc", XO(31,8,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7250 {"sf", XO(31,8,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
7251 {"subc", XO(31,8,0,0), XO_MASK, PPCCOM, EXT, {RT, RB, RA}},
7252 {"subfc.", XO(31,8,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7253 {"sf.", XO(31,8,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
7254 {"subc.", XO(31,8,0,1), XO_MASK, PPCCOM, EXT, {RT, RB, RA}},
7255
7256 {"mulhdu", XO(31,9,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
7257 {"mulhdu.", XO(31,9,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
7258
7259 {"addc", XO(31,10,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7260 {"a", XO(31,10,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
7261 {"addc.", XO(31,10,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7262 {"a.", XO(31,10,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
7263
7264 {"mulhwu", XO(31,11,0,0), XO_MASK, PPC, 0, {RT, RA, RB}},
7265 {"mulhwu.", XO(31,11,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
7266
7267 {"lxsiwzx", X(31,12), XX1_MASK, PPCVSX2, 0, {XT6, RA0, RB}},
7268
7269 {"lxvrbx", X(31,13), XX1_MASK, POWER10, 0, {XT6, RA0, RB}},
7270
7271 {"isellt", XISEL(31,15,0), X_MASK, PPCISEL, EXT, {RT, RA0, RB}},
7272 {"iselgt", XISEL(31,15,1), X_MASK, PPCISEL, EXT, {RT, RA0, RB}},
7273 {"iseleq", XISEL(31,15,2), X_MASK, PPCISEL, EXT, {RT, RA0, RB}},
7274 {"isel", XISEL(31,15,0), XISEL_MASK, PPCISEL|TITAN, 0, {RT, RA0, RB, BC}},
7275
7276 {"tlbilxlpid", XTO(31,18,0), XTO_MASK, E500MC|PPCA2, 0, {0}},
7277 {"tlbilxpid", XTO(31,18,1), XTO_MASK, E500MC|PPCA2, 0, {0}},
7278 {"tlbilxva", XTO(31,18,3), XTO_MASK, E500MC|PPCA2, 0, {RA0, RB}},
7279 {"tlbilx", X(31,18), X_MASK, E500MC|PPCA2, 0, {T, RA0, RB}},
7280
7281 {"mfcr", XFXM(31,19,0,0), XFXFXM_MASK, COM, 0, {RT, FXM4}},
7282 {"mfocrf", XFXM(31,19,0,1), XFXFXM_MASK, COM, 0, {RT, FXM}},
7283
7284 {"lwarx", X(31,20), XEH_MASK, PPC, 0, {RT, RA0, RB, EH}},
7285
7286 {"ldx", X(31,21), X_MASK, PPC64, 0, {RT, RA0, RB}},
7287
7288 {"icbt", X(31,22), X_MASK, POWER5|BOOKE|PPCE300, 0, {CT, RA0, RB}},
7289
7290 {"lwzx", X(31,23), X_MASK, PPCCOM, 0, {RT, RA0, RB}},
7291 {"lx", X(31,23), X_MASK, PWRCOM, 0, {RT, RA, RB}},
7292
7293 {"slw", XRC(31,24,0), X_MASK, PPCCOM, 0, {RA, RS, RB}},
7294 {"sl", XRC(31,24,0), X_MASK, PWRCOM, 0, {RA, RS, RB}},
7295 {"slw.", XRC(31,24,1), X_MASK, PPCCOM, 0, {RA, RS, RB}},
7296 {"sl.", XRC(31,24,1), X_MASK, PWRCOM, 0, {RA, RS, RB}},
7297
7298 {"cntlzw", XRC(31,26,0), XRB_MASK, PPCCOM, 0, {RA, RS}},
7299 {"cntlz", XRC(31,26,0), XRB_MASK, PWRCOM, 0, {RA, RS}},
7300 {"cntlzw.", XRC(31,26,1), XRB_MASK, PPCCOM, 0, {RA, RS}},
7301 {"cntlz.", XRC(31,26,1), XRB_MASK, PWRCOM, 0, {RA, RS}},
7302
7303 {"sld", XRC(31,27,0), X_MASK, PPC64, 0, {RA, RS, RB}},
7304 {"sld.", XRC(31,27,1), X_MASK, PPC64, 0, {RA, RS, RB}},
7305
7306 {"and", XRC(31,28,0), X_MASK, COM, 0, {RA, RS, RB}},
7307 {"and.", XRC(31,28,1), X_MASK, COM, 0, {RA, RS, RB}},
7308
7309 {"maskg", XRC(31,29,0), X_MASK, M601, PPCA2, {RA, RS, RB}},
7310 {"maskg.", XRC(31,29,1), X_MASK, M601, PPCA2, {RA, RS, RB}},
7311
7312 {"ldepx", X(31,29), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
7313
7314 {"waitasec", X(31,30), XRTRARB_MASK, POWER8, POWER9, {0}},
7315 {"waitrsv", XWCPL(31,30,1,0),0xffffffff, POWER10, EXT, {0}},
7316 {"pause_short", XWCPL(31,30,2,0),0xffffffff, POWER10, EXT, {0}},
7317 {"wait", X(31,30), XWCPL_MASK, POWER10, 0, {WC, PL}},
7318 {"wait", X(31,30), XWC_MASK, POWER9, POWER10, {WC}},
7319
7320 {"lwepx", X(31,31), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
7321
7322 {"cmplw", XOPL(31,32,0), XCMPL_MASK, PPCCOM, EXT, {OBF, RA, RB}},
7323 {"cmpld", XOPL(31,32,1), XCMPL_MASK, PPC64, EXT, {OBF, RA, RB}},
7324 {"cmpl", X(31,32), XCMP_MASK, PPC, 0, {BF, L32OPT, RA, RB}},
7325 {"cmpl", X(31,32), XCMPL_MASK, PWRCOM, PPC, {BF, RA, RB}},
7326
7327 {"lvsr", X(31,38), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
7328 {"lvehx", X(31,39), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
7329 {"lhfcmx", APU(31,39,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
7330
7331 {"lxvrhx", X(31,45), XX1_MASK, POWER10, 0, {XT6, RA0, RB}},
7332
7333 {"mviwsplt", X(31,46), X_MASK, E6500, 0, {VD, RA, RB}},
7334
7335 {"lvewx", X(31,71), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
7336
7337 {"addg6s", XO(31,74,0,0), XO_MASK, POWER6, 0, {RT, RA, RB}},
7338
7339 {"lxsiwax", X(31,76), XX1_MASK, PPCVSX2, 0, {XT6, RA0, RB}},
7340
7341 {"lxvrwx", X(31,77), XX1_MASK, POWER10, 0, {XT6, RA0, RB}},
7342
7343 {"subf", XO(31,40,0,0), XO_MASK, PPC, 0, {RT, RA, RB}},
7344 {"sub", XO(31,40,0,0), XO_MASK, PPC, EXT, {RT, RB, RA}},
7345 {"subf.", XO(31,40,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
7346 {"sub.", XO(31,40,0,1), XO_MASK, PPC, EXT, {RT, RB, RA}},
7347
7348 {"mffprd", X(31,51), XX1RB_MASK|1, PPCVSX2, EXT, {RA, FRS}},
7349 {"mfvrd", X(31,51)|1, XX1RB_MASK|1, PPCVSX2, EXT, {RA, VS}},
7350 {"mfvsrd", X(31,51), XX1RB_MASK, PPCVSX2, 0, {RA, XS6}},
7351 {"eratilx", X(31,51), X_MASK, PPCA2, 0, {ERAT_T, RA, RB}},
7352
7353 {"lbarx", X(31,52), XEH_MASK, POWER8|E6500, 0, {RT, RA0, RB, EH}},
7354
7355 {"ldux", X(31,53), X_MASK, PPC64, 0, {RT, RAL, RB}},
7356
7357 {"dcbst", X(31,54), XRT_MASK, PPC, 0, {RA0, RB}},
7358
7359 {"lwzux", X(31,55), X_MASK, PPCCOM, 0, {RT, RAL, RB}},
7360 {"lux", X(31,55), X_MASK, PWRCOM, 0, {RT, RA, RB}},
7361
7362 {"cntlzd", XRC(31,58,0), XRB_MASK, PPC64, 0, {RA, RS}},
7363 {"cntlzd.", XRC(31,58,1), XRB_MASK, PPC64, 0, {RA, RS}},
7364
7365 {"cntlzdm", X(31,59), X_MASK, POWER10, 0, {RA, RS, RB}},
7366
7367 {"andc", XRC(31,60,0), X_MASK, COM, 0, {RA, RS, RB}},
7368 {"andc.", XRC(31,60,1), X_MASK, COM, 0, {RA, RS, RB}},
7369
7370 {"waitrsv", X(31,62)|(1<<21), 0xffffffff, E500MC|PPCA2, EXT, {0}},
7371 {"waitimpl", X(31,62)|(2<<21), 0xffffffff, E500MC|PPCA2, EXT, {0}},
7372 {"wait", X(31,62), XWC_MASK, E500MC|PPCA2, 0, {WC}},
7373
7374 {"dcbstep", XRT(31,63,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}},
7375
7376 {"tdlgt", XTO(31,68,TOLGT), XTO_MASK, PPC64, EXT, {RA, RB}},
7377 {"tdllt", XTO(31,68,TOLLT), XTO_MASK, PPC64, EXT, {RA, RB}},
7378 {"tdeq", XTO(31,68,TOEQ), XTO_MASK, PPC64, EXT, {RA, RB}},
7379 {"tdlge", XTO(31,68,TOLGE), XTO_MASK, PPC64, EXT, {RA, RB}},
7380 {"tdlnl", XTO(31,68,TOLNL), XTO_MASK, PPC64, EXT, {RA, RB}},
7381 {"tdlle", XTO(31,68,TOLLE), XTO_MASK, PPC64, EXT, {RA, RB}},
7382 {"tdlng", XTO(31,68,TOLNG), XTO_MASK, PPC64, EXT, {RA, RB}},
7383 {"tdgt", XTO(31,68,TOGT), XTO_MASK, PPC64, EXT, {RA, RB}},
7384 {"tdge", XTO(31,68,TOGE), XTO_MASK, PPC64, EXT, {RA, RB}},
7385 {"tdnl", XTO(31,68,TONL), XTO_MASK, PPC64, EXT, {RA, RB}},
7386 {"tdlt", XTO(31,68,TOLT), XTO_MASK, PPC64, EXT, {RA, RB}},
7387 {"tdle", XTO(31,68,TOLE), XTO_MASK, PPC64, EXT, {RA, RB}},
7388 {"tdng", XTO(31,68,TONG), XTO_MASK, PPC64, EXT, {RA, RB}},
7389 {"tdne", XTO(31,68,TONE), XTO_MASK, PPC64, EXT, {RA, RB}},
7390 {"tdu", XTO(31,68,TOU), XTO_MASK, PPC64, EXT, {RA, RB}},
7391 {"td", X(31,68), X_MASK, PPC64, 0, {TO, RA, RB}},
7392
7393 {"lwfcmx", APU(31,71,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
7394 {"subwus", XO(31,72,0,0), XO_MASK, FUTURE, EXT, {RT, RB, RA}},
7395 {"subwus.", XO(31,72,0,1), XO_MASK, FUTURE, EXT, {RT, RB, RA}},
7396 {"subdus", XO(31,72,1,0), XO_MASK, FUTURE, EXT, {RT, RB, RA}},
7397 {"subdus.", XO(31,72,1,1), XO_MASK, FUTURE, EXT, {RT, RB, RA}},
7398 {"subfus", XO(31,72,0,0), XOL_MASK, FUTURE, 0, {RT, XOL, RA, RB}},
7399 {"subfus.", XO(31,72,0,1), XOL_MASK, FUTURE, 0, {RT, XOL, RA, RB}},
7400 {"mulhd", XO(31,73,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
7401 {"mulhd.", XO(31,73,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
7402
7403 {"mulhw", XO(31,75,0,0), XO_MASK, PPC, 0, {RT, RA, RB}},
7404 {"mulhw.", XO(31,75,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
7405
7406 {"msgsndu", XRTRA(31,78,0,0), XRTRA_MASK, POWER9, 0, {RB}},
7407 {"dlmzb", XRC(31,78,0), X_MASK, PPC403|PPC440|PPC476|TITAN, 0, {RA, RS, RB}},
7408 {"dlmzb.", XRC(31,78,1), X_MASK, PPC403|PPC440|PPC476|TITAN, 0, {RA, RS, RB}},
7409
7410 {"mtsrd", X(31,82), XRB_MASK|(1<<20), PPC64, 0, {SR, RS}},
7411
7412 {"mfmsr", X(31,83), XRARB_MASK, COM, 0, {RT}},
7413
7414 {"ldarx", X(31,84), XEH_MASK, PPC64, 0, {RT, RA0, RB, EH}},
7415
7416 {"dcbfl", XOPL(31,86,1), XRT_MASK, POWER5, PPC476|EXT, {RA0, RB}},
7417 {"dcbflp", XOPL2(31,86,3), XRT_MASK, POWER9, PPC476|EXT, {RA0, RB}},
7418 {"dcbfps", XOPL3(31,86,4), XRT_MASK, POWER10, PPC476|EXT, {RA0, RB}},
7419 {"dcbstps", XOPL3(31,86,6), XRT_MASK, POWER10, PPC476|EXT, {RA0, RB}},
7420 {"dcbf", X(31,86), XL3RT_MASK, POWER10, PPC476, {RA0, RB, L3OPT}},
7421 {"dcbf", X(31,86), XLRT_MASK, PPC, POWER10, {RA0, RB, L2OPT}},
7422
7423 {"lbzx", X(31,87), X_MASK, COM, 0, {RT, RA0, RB}},
7424
7425 {"lbepx", X(31,95), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
7426
7427 {"dni", XRC(31,97,1), XRB_MASK, E6500, 0, {DUI, DCTL}},
7428
7429 {"lvx", X(31,103), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
7430 {"lqfcmx", APU(31,103,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
7431
7432 {"neg", XO(31,104,0,0), XORB_MASK, COM, 0, {RT, RA}},
7433 {"neg.", XO(31,104,0,1), XORB_MASK, COM, 0, {RT, RA}},
7434
7435 {"mul", XO(31,107,0,0), XO_MASK, M601, 0, {RT, RA, RB}},
7436 {"mul.", XO(31,107,0,1), XO_MASK, M601, 0, {RT, RA, RB}},
7437
7438 {"lxvrdx", X(31,109), XX1_MASK, POWER10, 0, {XT6, RA0, RB}},
7439
7440 {"msgclru", XRTRA(31,110,0,0), XRTRA_MASK, POWER9, 0, {RB}},
7441 {"mvidsplt", X(31,110), X_MASK, E6500, 0, {VD, RA, RB}},
7442
7443 {"mtsrdin", X(31,114), XRA_MASK, PPC64, 0, {RS, RB}},
7444
7445 {"mffprwz", X(31,115), XX1RB_MASK|1, PPCVSX2, EXT, {RA, FRS}},
7446 {"mfvrwz", X(31,115)|1, XX1RB_MASK|1, PPCVSX2, EXT, {RA, VS}},
7447 {"mfvsrwz", X(31,115), XX1RB_MASK, PPCVSX2, 0, {RA, XS6}},
7448
7449 {"lharx", X(31,116), XEH_MASK, POWER8|E6500, 0, {RT, RA0, RB, EH}},
7450
7451 {"clf", X(31,118), XTO_MASK, POWER, 0, {RA, RB}},
7452
7453 {"lbzux", X(31,119), X_MASK, COM, 0, {RT, RAL, RB}},
7454
7455 {"popcntb", X(31,122), XRB_MASK, POWER5, 0, {RA, RS}},
7456
7457 {"not", XRC(31,124,0), X_MASK, COM, EXT, {RA, RSB}},
7458 {"nor", XRC(31,124,0), X_MASK, COM, 0, {RA, RS, RB}},
7459 {"not.", XRC(31,124,1), X_MASK, COM, EXT, {RA, RSB}},
7460 {"nor.", XRC(31,124,1), X_MASK, COM, 0, {RA, RS, RB}},
7461
7462 {"dcbfep", XRT(31,127,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}},
7463
7464 {"setb", X(31,128), XRB_MASK|(3<<16), POWER9, 0, {RT, BFA}},
7465
7466 {"wrtee", X(31,131), XRARB_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RS}},
7467
7468 {"dcbtstls", X(31,134), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
7469
7470 {"stvebx", X(31,135), X_MASK, PPCVEC, 0, {VS, RA0, RB}},
7471 {"stbfcmx", APU(31,135,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
7472
7473 {"subfe", XO(31,136,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7474 {"sfe", XO(31,136,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
7475 {"subfe.", XO(31,136,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7476 {"sfe.", XO(31,136,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
7477
7478 {"adde", XO(31,138,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7479 {"ae", XO(31,138,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
7480 {"adde.", XO(31,138,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7481 {"ae.", XO(31,138,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
7482
7483 {"stxsiwx", X(31,140), XX1_MASK, PPCVSX2, 0, {XS6, RA0, RB}},
7484
7485 {"stxvrbx", X(31,141), XX1_MASK, POWER10, 0, {XT6, RA0, RB}},
7486
7487 {"msgsndp", XRTRA(31,142,0,0), XRTRA_MASK, POWER8, 0, {RB}},
7488 {"dcbtstlse", X(31,142), X_MASK, PPCCHLK, E500MC, {CT, RA0, RB}},
7489
7490 {"mtcr", XFXM(31,144,0xff,0), XRARB_MASK, COM, EXT, {RS}},
7491 {"mtcrf", XFXM(31,144,0,0), XFXFXM_MASK, COM, 0, {FXM, RS}},
7492 {"mtocrf", XFXM(31,144,0,1), XFXFXM_MASK, COM, 0, {FXM, RS}},
7493
7494 {"mtmsr", X(31,146), XRLARB_MASK, COM, 0, {RS, A_L}},
7495
7496 {"mtsle", X(31,147), XRTLRARB_MASK, POWER8, 0, {L}},
7497 {"eratsx", XRC(31,147,0), X_MASK, PPCA2, 0, {RT, RA0, RB}},
7498 {"eratsx.", XRC(31,147,1), X_MASK, PPCA2, 0, {RT, RA0, RB}},
7499
7500 {"stdx", X(31,149), X_MASK, PPC64, 0, {RS, RA0, RB}},
7501
7502 {"stwcx.", XRC(31,150,1), X_MASK, PPC, 0, {RS, RA0, RB}},
7503
7504 {"stwx", X(31,151), X_MASK, PPCCOM, 0, {RS, RA0, RB}},
7505 {"stx", X(31,151), X_MASK, PWRCOM, 0, {RS, RA, RB}},
7506
7507 {"slq", XRC(31,152,0), X_MASK, M601, 0, {RA, RS, RB}},
7508 {"slq.", XRC(31,152,1), X_MASK, M601, 0, {RA, RS, RB}},
7509
7510 {"sle", XRC(31,153,0), X_MASK, M601, 0, {RA, RS, RB}},
7511 {"sle.", XRC(31,153,1), X_MASK, M601, 0, {RA, RS, RB}},
7512
7513 {"prtyw", X(31,154), XRB_MASK, POWER6|PPCA2|PPC476, 0, {RA, RS}},
7514
7515 {"brw", X(31,155), XRB_MASK, POWER10, 0, {RA, RS}},
7516 {"pdepd", X(31,156), X_MASK, POWER10, 0, {RA, RS, RB}},
7517
7518 {"stdepx", X(31,157), X_MASK, E500MC|PPCA2, 0, {RS, RA0, RB}},
7519
7520 {"stwepx", X(31,159), X_MASK, E500MC|PPCA2, 0, {RS, RA0, RB}},
7521
7522 {"wrteei", X(31,163), XE_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {E}},
7523
7524 {"dcbtls", X(31,166), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
7525
7526 {"stvehx", X(31,167), X_MASK, PPCVEC, 0, {VS, RA0, RB}},
7527 {"sthfcmx", APU(31,167,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
7528
7529 {"addex", ZRC(31,170,0), Z2_MASK, POWER9, 0, {RT, RA, RB, CY}},
7530
7531 {"stxvrhx", X(31,173), XX1_MASK, POWER10, 0, {XT6, RA0, RB}},
7532
7533 {"msgclrp", XRTRA(31,174,0,0), XRTRA_MASK, POWER8, 0, {RB}},
7534 {"dcbtlse", X(31,174), X_MASK, PPCCHLK, E500MC, {CT, RA0, RB}},
7535
7536 {"dmxxmfacc", XVA(31,177,0), XACC_MASK, POWER10, 0, {ACC}},
7537 {"xxmfacc", XVA(31,177,0), XACC_MASK, POWER10, 0, {ACC}},
7538 {"dmxxmtacc", XVA(31,177,1), XACC_MASK, POWER10, 0, {ACC}},
7539 {"xxmtacc", XVA(31,177,1), XACC_MASK, POWER10, 0, {ACC}},
7540 {"dmsetdmrz", XVA(31,177,2), XDMR_MASK, FUTURE, 0, {DMR}},
7541 {"dmsetaccz", XVA(31,177,3), XACC_MASK, POWER10, 0, {ACC}},
7542 {"xxsetaccz", XVA(31,177,3), XACC_MASK, POWER10, 0, {ACC}},
7543 {"dmmr", XVA(31,177,6), XDMRDMR_MASK,FUTURE, 0, {DMR, DMRAB}},
7544 {"dmxor", XVA(31,177,7), XDMRDMR_MASK,FUTURE, 0, {DMR, DMRAB}},
7545
7546 {"mtmsrd", X(31,178), XRLARB_MASK, PPC64, 0, {RS, A_L}},
7547
7548 {"mtfprd", X(31,179), XX1RB_MASK|1, PPCVSX2, EXT, {FRT, RA}},
7549 {"mtvrd", X(31,179)|1, XX1RB_MASK|1, PPCVSX2, EXT, {VD, RA}},
7550 {"mtvsrd", X(31,179), XX1RB_MASK, PPCVSX2, 0, {XT6, RA}},
7551 {"eratre", X(31,179), X_MASK, PPCA2, 0, {RT, RA, WS}},
7552
7553 {"stdux", X(31,181), X_MASK, PPC64, 0, {RS, RAS, RB}},
7554
7555 {"stqcx.", XRC(31,182,1), X_MASK|Q_MASK, POWER8, 0, {RSQ, RA0, RB}},
7556 {"wchkall", X(31,182), X_MASK, PPCA2, 0, {OBF}},
7557
7558 {"stwux", X(31,183), X_MASK, PPCCOM, 0, {RS, RAS, RB}},
7559 {"stux", X(31,183), X_MASK, PWRCOM, 0, {RS, RA0, RB}},
7560
7561 {"sliq", XRC(31,184,0), X_MASK, M601, 0, {RA, RS, SH}},
7562 {"sliq.", XRC(31,184,1), X_MASK, M601, 0, {RA, RS, SH}},
7563
7564 {"prtyd", X(31,186), XRB_MASK, POWER6|PPCA2, 0, {RA, RS}},
7565
7566 {"brd", X(31,187), XRB_MASK, POWER10, 0, {RA, RS}},
7567 {"pextd", X(31,188), X_MASK, POWER10, 0, {RA, RS, RB}},
7568
7569 {"cmprb", X(31,192), XCMP_MASK, POWER9, 0, {BF, L, RA, RB}},
7570
7571 {"icblq.", XRC(31,198,1), X_MASK, E6500, 0, {CT, RA0, RB}},
7572
7573 {"stvewx", X(31,199), X_MASK, PPCVEC, 0, {VS, RA0, RB}},
7574 {"stwfcmx", APU(31,199,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
7575
7576 {"subfze", XO(31,200,0,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
7577 {"sfze", XO(31,200,0,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
7578 {"subfze.", XO(31,200,0,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
7579 {"sfze.", XO(31,200,0,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
7580
7581 {"addze", XO(31,202,0,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
7582 {"aze", XO(31,202,0,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
7583 {"addze.", XO(31,202,0,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
7584 {"aze.", XO(31,202,0,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
7585
7586 {"stxvrwx", X(31,205), XX1_MASK, POWER10, 0, {XT6, RA0, RB}},
7587
7588 {"msgsnd", XRTRA(31,206,0,0), XRTRA_MASK, E500MC|PPCA2|POWER8, 0, {RB}},
7589
7590 {"mtsr", X(31,210), XRB_MASK|(1<<20), COM, NON32, {SR, RS}},
7591
7592 {"mtfprwa", X(31,211), XX1RB_MASK|1, PPCVSX2, EXT, {FRT, RA}},
7593 {"mtvrwa", X(31,211)|1, XX1RB_MASK|1, PPCVSX2, EXT, {VD, RA}},
7594 {"mtvsrwa", X(31,211), XX1RB_MASK, PPCVSX2, 0, {XT6, RA}},
7595 {"eratwe", X(31,211), X_MASK, PPCA2, 0, {RS, RA, WS}},
7596
7597 {"ldawx.", XRC(31,212,1), X_MASK, PPCA2, 0, {RT, RA0, RB}},
7598
7599 {"stdcx.", XRC(31,214,1), X_MASK, PPC64, 0, {RS, RA0, RB}},
7600
7601 {"stbx", X(31,215), X_MASK, COM, 0, {RS, RA0, RB}},
7602
7603 {"sllq", XRC(31,216,0), X_MASK, M601, 0, {RA, RS, RB}},
7604 {"sllq.", XRC(31,216,1), X_MASK, M601, 0, {RA, RS, RB}},
7605
7606 {"sleq", XRC(31,217,0), X_MASK, M601, 0, {RA, RS, RB}},
7607 {"sleq.", XRC(31,217,1), X_MASK, M601, 0, {RA, RS, RB}},
7608
7609 {"brh", X(31,219), XRB_MASK, POWER10, 0, {RA, RS}},
7610 {"cfuged", X(31,220), X_MASK, POWER10, 0, {RA, RS, RB}},
7611
7612 {"stbepx", X(31,223), X_MASK, E500MC|PPCA2, 0, {RS, RA0, RB}},
7613
7614 {"cmpeqb", X(31,224), XCMPL_MASK, POWER9, 0, {BF, RA, RB}},
7615
7616 {"icblc", X(31,230), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
7617
7618 {"stvx", X(31,231), X_MASK, PPCVEC, 0, {VS, RA0, RB}},
7619 {"stqfcmx", APU(31,231,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
7620
7621 {"subfme", XO(31,232,0,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
7622 {"sfme", XO(31,232,0,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
7623 {"subfme.", XO(31,232,0,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
7624 {"sfme.", XO(31,232,0,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
7625
7626 {"mulld", XO(31,233,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
7627 {"mulld.", XO(31,233,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
7628
7629 {"addme", XO(31,234,0,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
7630 {"ame", XO(31,234,0,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
7631 {"addme.", XO(31,234,0,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
7632 {"ame.", XO(31,234,0,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
7633
7634 {"mullw", XO(31,235,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7635 {"muls", XO(31,235,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
7636 {"mullw.", XO(31,235,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7637 {"muls.", XO(31,235,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
7638
7639 {"stxvrdx", X(31,237), XX1_MASK, POWER10, 0, {XT6, RA0, RB}},
7640
7641 {"icblce", X(31,238), X_MASK, PPCCHLK, E500MC|PPCA2, {CT, RA, RB}},
7642 {"msgclr", XRTRA(31,238,0,0), XRTRA_MASK, E500MC|PPCA2|POWER8, 0, {RB}},
7643 {"mtsrin", X(31,242), XRA_MASK, PPC, NON32, {RS, RB}},
7644 {"mtsri", X(31,242), XRA_MASK, POWER, NON32, {RS, RB}},
7645
7646 {"mtfprwz", X(31,243), XX1RB_MASK|1, PPCVSX2, EXT, {FRT, RA}},
7647 {"mtvrwz", X(31,243)|1, XX1RB_MASK|1, PPCVSX2, EXT, {VD, RA}},
7648 {"mtvsrwz", X(31,243), XX1RB_MASK, PPCVSX2, 0, {XT6, RA}},
7649
7650 {"dcbtstt", XRT(31,246,0x10), XRT_MASK, POWER7, EXT, {RA0, RB}},
7651 {"dcbtstct", X(31,246), X_MASK, POWER4, EXT, {RA0, RB, THCT}},
7652 {"dcbtstds", X(31,246), X_MASK, POWER4, EXT, {RA0, RB, THDS}},
7653 {"dcbtst", X(31,246), X_MASK, POWER4, DCBT_EO, {RA0, RB, CT}},
7654 {"dcbtst", X(31,246), X_MASK, DCBT_EO, 0, {CT, RA0, RB}},
7655 {"dcbtst", X(31,246), X_MASK, PPC, POWER4|DCBT_EO, {RA0, RB}},
7656
7657 {"stbux", X(31,247), X_MASK, COM, 0, {RS, RAS, RB}},
7658
7659 {"slliq", XRC(31,248,0), X_MASK, M601, 0, {RA, RS, SH}},
7660 {"slliq.", XRC(31,248,1), X_MASK, M601, 0, {RA, RS, SH}},
7661
7662 {"bpermd", X(31,252), X_MASK, POWER7|PPCA2, 0, {RA, RS, RB}},
7663
7664 {"dcbtstep", XRT(31,255,0), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
7665
7666 {"mfdcrx", X(31,259), X_MASK, BOOKE|PPCA2|PPC476, TITAN, {RS, RA}},
7667 {"mfdcrx.", XRC(31,259,1), X_MASK, PPCA2, 0, {RS, RA}},
7668
7669 {"lvexbx", X(31,261), X_MASK, E6500, 0, {VD, RA0, RB}},
7670
7671 {"icbt", X(31,262), XRT_MASK, PPC403, 0, {RA, RB}},
7672
7673 {"lvepxl", X(31,263), X_MASK, E6500, 0, {VD, RA0, RB}},
7674 {"ldfcmx", APU(31,263,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
7675
7676 {"doz", XO(31,264,0,0), XO_MASK, M601, 0, {RT, RA, RB}},
7677 {"doz.", XO(31,264,0,1), XO_MASK, M601, 0, {RT, RA, RB}},
7678
7679 {"modud", X(31,265), X_MASK, POWER9, 0, {RT, RA, RB}},
7680
7681 {"add", XO(31,266,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7682 {"cax", XO(31,266,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
7683 {"add.", XO(31,266,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7684 {"cax.", XO(31,266,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
7685
7686 {"moduw", X(31,267), X_MASK, POWER9, 0, {RT, RA, RB}},
7687
7688 {"lxvx", X(31,268), XX1_MASK|1<<6, PPCVSX3, 0, {XT6, RA0, RB}},
7689 {"lxvl", X(31,269), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
7690
7691 {"ehpriv", X(31,270), 0xffffffff, E500MC|PPCA2, 0, {0}},
7692
7693 {"tlbiel", X(31,274), X_MASK|1<<20,POWER9, 0, {RB, RSO, RIC, PRS, X_R}},
7694 {"tlbiel", X(31,274), XRTLRA_MASK, POWER4, POWER9|PPC476, {RB, LOPT}},
7695
7696 {"mfapidi", X(31,275), X_MASK, BOOKE, E500|TITAN, {RT, RA}},
7697
7698 {"lqarx", X(31,276), XEH_MASK|Q_MASK, POWER8, 0, {RTQ, RAX, RBX, EH}},
7699
7700 {"lscbx", XRC(31,277,0), X_MASK, M601, 0, {RT, RA, RB}},
7701 {"lscbx.", XRC(31,277,1), X_MASK, M601, 0, {RT, RA, RB}},
7702
7703 {"dcbtt", XRT(31,278,0x10), XRT_MASK, POWER7, EXT, {RA0, RB}},
7704 {"dcbna", XRT(31,278,0x11), XRT_MASK, POWER10, EXT, {RA0, RB}},
7705 {"dcbtct", X(31,278), X_MASK, POWER4, EXT, {RA0, RB, THCT}},
7706 {"dcbtds", X(31,278), X_MASK, POWER4, EXT, {RA0, RB, THDS}},
7707 {"dcbt", X(31,278), X_MASK, POWER4, DCBT_EO, {RA0, RB, CT}},
7708 {"dcbt", X(31,278), X_MASK, DCBT_EO, 0, {CT, RA0, RB}},
7709 {"dcbt", X(31,278), X_MASK, PPC, POWER4|DCBT_EO, {RA0, RB}},
7710
7711 {"lhzx", X(31,279), X_MASK, COM, 0, {RT, RA0, RB}},
7712
7713 {"cdtbcd", X(31,282), XRB_MASK, POWER6, 0, {RA, RS}},
7714
7715 {"eqv", XRC(31,284,0), X_MASK, COM, 0, {RA, RS, RB}},
7716 {"eqv.", XRC(31,284,1), X_MASK, COM, 0, {RA, RS, RB}},
7717
7718 {"lhepx", X(31,287), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
7719
7720 {"mfdcrux", X(31,291), X_MASK, PPC464|PPC476, 0, {RS, RA}},
7721
7722 {"lvexhx", X(31,293), X_MASK, E6500, 0, {VD, RA0, RB}},
7723 {"lvepx", X(31,295), X_MASK, E6500, 0, {VD, RA0, RB}},
7724
7725 {"lxvll", X(31,301), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
7726
7727 {"mfbhrbe", X(31,302), X_MASK, POWER8, 0, {RT, BHRBE}},
7728
7729 {"tlbie", X(31,306), X_MASK|1<<20,POWER9, TITAN, {RB, RS, RIC, PRS, X_R}},
7730 {"tlbie", X(31,306), XRA_MASK, POWER7, POWER9|TITAN, {RB, RS}},
7731 {"tlbie", X(31,306), XRTLRA_MASK, PPC, E500|POWER7|TITAN, {RB, LOPT}},
7732 {"tlbi", X(31,306), XRT_MASK, POWER, 0, {RA0, RB}},
7733
7734 {"mfvsrld", X(31,307), XX1RB_MASK, PPCVSX3, 0, {RA, XS6}},
7735
7736 {"eciwx", X(31,310), X_MASK, PPC, E500|TITAN, {RT, RA0, RB}},
7737
7738 {"lhzux", X(31,311), X_MASK, COM, 0, {RT, RAL, RB}},
7739
7740 {"cbcdtd", X(31,314), XRB_MASK, POWER6, 0, {RA, RS}},
7741
7742 {"xor", XRC(31,316,0), X_MASK, COM, 0, {RA, RS, RB}},
7743 {"xor.", XRC(31,316,1), X_MASK, COM, 0, {RA, RS, RB}},
7744
7745 {"dcbtep", XRT(31,319,0), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
7746
7747 {"mfexisr", XSPR(31,323, 64), XSPR_MASK, PPC403, 0, {RT}},
7748 {"mfexier", XSPR(31,323, 66), XSPR_MASK, PPC403, 0, {RT}},
7749 {"mfbr0", XSPR(31,323,128), XSPR_MASK, PPC403, 0, {RT}},
7750 {"mfbr1", XSPR(31,323,129), XSPR_MASK, PPC403, 0, {RT}},
7751 {"mfbr2", XSPR(31,323,130), XSPR_MASK, PPC403, 0, {RT}},
7752 {"mfbr3", XSPR(31,323,131), XSPR_MASK, PPC403, 0, {RT}},
7753 {"mfbr4", XSPR(31,323,132), XSPR_MASK, PPC403, 0, {RT}},
7754 {"mfbr5", XSPR(31,323,133), XSPR_MASK, PPC403, 0, {RT}},
7755 {"mfbr6", XSPR(31,323,134), XSPR_MASK, PPC403, 0, {RT}},
7756 {"mfbr7", XSPR(31,323,135), XSPR_MASK, PPC403, 0, {RT}},
7757 {"mfbear", XSPR(31,323,144), XSPR_MASK, PPC403, 0, {RT}},
7758 {"mfbesr", XSPR(31,323,145), XSPR_MASK, PPC403, 0, {RT}},
7759 {"mfiocr", XSPR(31,323,160), XSPR_MASK, PPC403, 0, {RT}},
7760 {"mfdmacr0", XSPR(31,323,192), XSPR_MASK, PPC403, 0, {RT}},
7761 {"mfdmact0", XSPR(31,323,193), XSPR_MASK, PPC403, 0, {RT}},
7762 {"mfdmada0", XSPR(31,323,194), XSPR_MASK, PPC403, 0, {RT}},
7763 {"mfdmasa0", XSPR(31,323,195), XSPR_MASK, PPC403, 0, {RT}},
7764 {"mfdmacc0", XSPR(31,323,196), XSPR_MASK, PPC403, 0, {RT}},
7765 {"mfdmacr1", XSPR(31,323,200), XSPR_MASK, PPC403, 0, {RT}},
7766 {"mfdmact1", XSPR(31,323,201), XSPR_MASK, PPC403, 0, {RT}},
7767 {"mfdmada1", XSPR(31,323,202), XSPR_MASK, PPC403, 0, {RT}},
7768 {"mfdmasa1", XSPR(31,323,203), XSPR_MASK, PPC403, 0, {RT}},
7769 {"mfdmacc1", XSPR(31,323,204), XSPR_MASK, PPC403, 0, {RT}},
7770 {"mfdmacr2", XSPR(31,323,208), XSPR_MASK, PPC403, 0, {RT}},
7771 {"mfdmact2", XSPR(31,323,209), XSPR_MASK, PPC403, 0, {RT}},
7772 {"mfdmada2", XSPR(31,323,210), XSPR_MASK, PPC403, 0, {RT}},
7773 {"mfdmasa2", XSPR(31,323,211), XSPR_MASK, PPC403, 0, {RT}},
7774 {"mfdmacc2", XSPR(31,323,212), XSPR_MASK, PPC403, 0, {RT}},
7775 {"mfdmacr3", XSPR(31,323,216), XSPR_MASK, PPC403, 0, {RT}},
7776 {"mfdmact3", XSPR(31,323,217), XSPR_MASK, PPC403, 0, {RT}},
7777 {"mfdmada3", XSPR(31,323,218), XSPR_MASK, PPC403, 0, {RT}},
7778 {"mfdmasa3", XSPR(31,323,219), XSPR_MASK, PPC403, 0, {RT}},
7779 {"mfdmacc3", XSPR(31,323,220), XSPR_MASK, PPC403, 0, {RT}},
7780 {"mfdmasr", XSPR(31,323,224), XSPR_MASK, PPC403, 0, {RT}},
7781 {"mfdcr", X(31,323), X_MASK, PPC403|BOOKE|PPCA2|PPC476, E500|TITAN, {RT, SPR}},
7782 {"mfdcr.", XRC(31,323,1), X_MASK, PPCA2, 0, {RT, SPR}},
7783
7784 {"lvexwx", X(31,325), X_MASK, E6500, 0, {VD, RA0, RB}},
7785
7786 {"dcread", X(31,326), X_MASK, PPC476|TITAN, 0, {RT, RA0, RB}},
7787
7788 {"div", XO(31,331,0,0), XO_MASK, M601, 0, {RT, RA, RB}},
7789 {"div.", XO(31,331,0,1), XO_MASK, M601, 0, {RT, RA, RB}},
7790
7791 {"lxvdsx", X(31,332), XX1_MASK, PPCVSX, 0, {XT6, RA0, RB}},
7792
7793 {"lxvpx", X(31,333), XX1_MASK, POWER10, 0, {XTP, RA0, RB}},
7794
7795 {"mfpmr", X(31,334), X_MASK, PPCPMR|PPCE300, 0, {RT, PMR}},
7796 {"mftmr", X(31,366), X_MASK, PPCTMR, 0, {RT, TMR}},
7797
7798 {"slbsync", X(31,338), 0xffffffff, POWER9, 0, {0}},
7799
7800 {"mfmq", XSPR(31,339, 0), XSPR_MASK, M601, EXT, {RT}},
7801 {"mfxer", XSPR(31,339, 1), XSPR_MASK, COM, EXT, {RT}},
7802 {"mfudscr", XSPR(31,339, 3), XSPR_MASK, POWER9, EXT, {RS}},
7803 {"mfrtcu", XSPR(31,339, 4), XSPR_MASK, COM, TITAN|EXT, {RT}},
7804 {"mfrtcl", XSPR(31,339, 5), XSPR_MASK, COM, TITAN|EXT, {RT}},
7805 {"mfdec", XSPR(31,339, 6), XSPR_MASK, MFDEC1, EXT, {RT}},
7806 {"mflr", XSPR(31,339, 8), XSPR_MASK, COM, EXT, {RT}},
7807 {"mfctr", XSPR(31,339, 9), XSPR_MASK, COM, EXT, {RT}},
7808 {"mfuamr", XSPR(31,339, 13), XSPR_MASK, POWER9, EXT, {RS}},
7809 {"mfdscr", XSPR(31,339, 17), XSPR_MASK, POWER6, EXT, {RT}},
7810 {"mftid", XSPR(31,339, 17), XSPR_MASK, POWER, EXT, {RT}},
7811 {"mfdsisr", XSPR(31,339, 18), XSPR_MASK, COM, TITAN|EXT, {RT}},
7812 {"mfdar", XSPR(31,339, 19), XSPR_MASK, COM, TITAN|EXT, {RT}},
7813 {"mfdec", XSPR(31,339, 22), XSPR_MASK, MFDEC2, MFDEC1|EXT, {RT}},
7814 {"mfsdr0", XSPR(31,339, 24), XSPR_MASK, POWER, EXT, {RT}},
7815 {"mfsdr1", XSPR(31,339, 25), XSPR_MASK, COM, TITAN|EXT, {RT}},
7816 {"mfsrr0", XSPR(31,339, 26), XSPR_MASK, COM, EXT, {RT}},
7817 {"mfsrr1", XSPR(31,339, 27), XSPR_MASK, COM, EXT, {RT}},
7818 {"mfcfar", XSPR(31,339, 28), XSPR_MASK, POWER6, EXT, {RT}},
7819 {"mfamr", XSPR(31,339, 29), XSPR_MASK, POWER7, EXT, {RS}},
7820 {"mfpidr", XSPR(31,339, 48), XSPR_MASK, POWER10, EXT, {RS}},
7821 {"mfpid", XSPR(31,339, 48), XSPR_MASK, BOOKE, EXT, {RT}},
7822 {"mfcsrr0", XSPR(31,339, 58), XSPR_MASK, BOOKE, EXT, {RT}},
7823 {"mfcsrr1", XSPR(31,339, 59), XSPR_MASK, BOOKE, EXT, {RT}},
7824 {"mfiamr", XSPR(31,339, 61), XSPR_MASK, POWER10, EXT, {RS}},
7825 {"mfdear", XSPR(31,339, 61), XSPR_MASK, BOOKE, EXT, {RT}},
7826 {"mfesr", XSPR(31,339, 62), XSPR_MASK, BOOKE, EXT, {RT}},
7827 {"mfivpr", XSPR(31,339, 63), XSPR_MASK, BOOKE, EXT, {RT}},
7828 {"mfctrl", XSPR(31,339,136), XSPR_MASK, POWER4, EXT, {RT}},
7829 {"mfcmpa", XSPR(31,339,144), XSPR_MASK, PPC860, EXT, {RT}},
7830 {"mfcmpb", XSPR(31,339,145), XSPR_MASK, PPC860, EXT, {RT}},
7831 {"mfcmpc", XSPR(31,339,146), XSPR_MASK, PPC860, EXT, {RT}},
7832 {"mfcmpd", XSPR(31,339,147), XSPR_MASK, PPC860, EXT, {RT}},
7833 {"mficr", XSPR(31,339,148), XSPR_MASK, PPC860, EXT, {RT}},
7834 {"mfder", XSPR(31,339,149), XSPR_MASK, PPC860, EXT, {RT}},
7835 {"mfcounta", XSPR(31,339,150), XSPR_MASK, PPC860, EXT, {RT}},
7836 {"mfcountb", XSPR(31,339,151), XSPR_MASK, PPC860, EXT, {RT}},
7837 {"mfcmpe", XSPR(31,339,152), XSPR_MASK, PPC860, EXT, {RT}},
7838 {"mffscr", XSPR(31,339,153), XSPR_MASK, POWER10, EXT, {RS}},
7839 {"mfcmpf", XSPR(31,339,153), XSPR_MASK, PPC860, EXT, {RT}},
7840 {"mfcmpg", XSPR(31,339,154), XSPR_MASK, PPC860, EXT, {RT}},
7841 {"mfcmph", XSPR(31,339,155), XSPR_MASK, PPC860, EXT, {RT}},
7842 {"mflctrl1", XSPR(31,339,156), XSPR_MASK, PPC860, EXT, {RT}},
7843 {"mfuamor", XSPR(31,339,157), XSPR_MASK, POWER7, EXT, {RS}},
7844 {"mflctrl2", XSPR(31,339,157), XSPR_MASK, PPC860, EXT, {RT}},
7845 {"mfictrl", XSPR(31,339,158), XSPR_MASK, PPC860, EXT, {RT}},
7846 {"mfpspb", XSPR(31,339,159), XSPR_MASK, POWER10, EXT, {RS}},
7847 {"mfbar", XSPR(31,339,159), XSPR_MASK, PPC860, EXT, {RT}},
7848 {"mfdpdes", XSPR(31,339,176), XSPR_MASK, POWER10, EXT, {RS}},
7849 {"mfdawr0", XSPR(31,339,180), XSPR_MASK, POWER10, EXT, {RS}},
7850 {"mfdawr1", XSPR(31,339,181), XSPR_MASK, POWER10, EXT, {RS}},
7851 {"mfrpr", XSPR(31,339,186), XSPR_MASK, POWER10, EXT, {RS}},
7852 {"mfciabr", XSPR(31,339,187), XSPR_MASK, POWER10, EXT, {RS}},
7853 {"mfdawrx0", XSPR(31,339,188), XSPR_MASK, POWER10, EXT, {RS}},
7854 {"mfdawrx1", XSPR(31,339,189), XSPR_MASK, POWER10, EXT, {RS}},
7855 {"mfhfscr", XSPR(31,339,190), XSPR_MASK, POWER10, EXT, {RS}},
7856 {"mfvrsave", XSPR(31,339,256), XSPR_MASK, PPCVEC, EXT, {RT}},
7857 {"mfusprg0", XSPR(31,339,256), XSPR_MASK, BOOKE, EXT, {RT}},
7858 {"mfsprg", XSPR(31,339,256), XSPRG_MASK, PPC, EXT, {RT, SPRG}},
7859 {"mfusprg3", XSPR(31,339,259), XSPR_MASK, POWER10, EXT, {RT}},
7860 {"mfsprg4", XSPR(31,339,260), XSPR_MASK, PPC405|BOOKE, EXT, {RT}},
7861 {"mfsprg5", XSPR(31,339,261), XSPR_MASK, PPC405|BOOKE, EXT, {RT}},
7862 {"mfsprg6", XSPR(31,339,262), XSPR_MASK, PPC405|BOOKE, EXT, {RT}},
7863 {"mfsprg7", XSPR(31,339,263), XSPR_MASK, PPC405|BOOKE, EXT, {RT}},
7864 {"mftbu", XSPR(31,339,269), XSPR_MASK, POWER4|BOOKE, EXT, {RT}},
7865 {"mftb", X(31,339), X_MASK, POWER4|BOOKE, EXT, {RT, TBR}},
7866 {"mftbl", XSPR(31,339,268), XSPR_MASK, POWER4|BOOKE, EXT, {RT}},
7867 {"mfsprg0", XSPR(31,339,272), XSPR_MASK, PPC, EXT, {RT}},
7868 {"mfsprg1", XSPR(31,339,273), XSPR_MASK, PPC, EXT, {RT}},
7869 {"mfsprg2", XSPR(31,339,274), XSPR_MASK, PPC, EXT, {RT}},
7870 {"mfsprg3", XSPR(31,339,275), XSPR_MASK, PPC, EXT, {RT}},
7871 {"mfasr", XSPR(31,339,280), XSPR_MASK, PPC64, EXT, {RT}},
7872 {"mfear", XSPR(31,339,282), XSPR_MASK, PPC, TITAN|EXT, {RT}},
7873 {"mfpir", XSPR(31,339,286), XSPR_MASK, BOOKE, EXT, {RT}},
7874 {"mfpvr", XSPR(31,339,287), XSPR_MASK, PPC, EXT, {RT}},
7875 {"mfhsprg0", XSPR(31,339,304), XSPR_MASK, POWER10, EXT, {RS}},
7876 {"mfdbsr", XSPR(31,339,304), XSPR_MASK, BOOKE, EXT, {RT}},
7877 {"mfhsprg1", XSPR(31,339,305), XSPR_MASK, POWER10, EXT, {RS}},
7878 {"mfhdisr", XSPR(31,339,306), XSPR_MASK, POWER10, EXT, {RS}},
7879 {"mfhdar", XSPR(31,339,307), XSPR_MASK, POWER10, EXT, {RS}},
7880 {"mfspurr", XSPR(31,339,308), XSPR_MASK, POWER10, EXT, {RS}},
7881 {"mfdbcr0", XSPR(31,339,308), XSPR_MASK, BOOKE, EXT, {RT}},
7882 {"mfpurr", XSPR(31,339,309), XSPR_MASK, POWER10, EXT, {RS}},
7883 {"mfdbcr1", XSPR(31,339,309), XSPR_MASK, BOOKE, EXT, {RT}},
7884 {"mfhdec", XSPR(31,339,310), XSPR_MASK, POWER10, EXT, {RS}},
7885 {"mfdbcr2", XSPR(31,339,310), XSPR_MASK, BOOKE, EXT, {RT}},
7886 {"mfiac1", XSPR(31,339,312), XSPR_MASK, BOOKE, EXT, {RT}},
7887 {"mfhrmor", XSPR(31,339,313), XSPR_MASK, POWER10, EXT, {RS}},
7888 {"mfiac2", XSPR(31,339,313), XSPR_MASK, BOOKE, EXT, {RT}},
7889 {"mfhsrr0", XSPR(31,339,314), XSPR_MASK, POWER10, EXT, {RS}},
7890 {"mfiac3", XSPR(31,339,314), XSPR_MASK, BOOKE, EXT, {RT}},
7891 {"mfhsrr1", XSPR(31,339,315), XSPR_MASK, POWER10, EXT, {RS}},
7892 {"mfiac4", XSPR(31,339,315), XSPR_MASK, BOOKE, EXT, {RT}},
7893 {"mfdac1", XSPR(31,339,316), XSPR_MASK, BOOKE, EXT, {RT}},
7894 {"mfdac2", XSPR(31,339,317), XSPR_MASK, BOOKE, EXT, {RT}},
7895 {"mflpcr", XSPR(31,339,318), XSPR_MASK, POWER10, EXT, {RS}},
7896 {"mfdvc1", XSPR(31,339,318), XSPR_MASK, BOOKE, EXT, {RT}},
7897 {"mflpidr", XSPR(31,339,319), XSPR_MASK, POWER10, EXT, {RS}},
7898 {"mfdvc2", XSPR(31,339,319), XSPR_MASK, BOOKE, EXT, {RT}},
7899 {"mfhmer", XSPR(31,339,336), XSPR_MASK, POWER7, EXT, {RS}},
7900 {"mftsr", XSPR(31,339,336), XSPR_MASK, BOOKE, EXT, {RT}},
7901 {"mfhmeer", XSPR(31,339,337), XSPR_MASK, POWER7, EXT, {RS}},
7902 {"mfpcr", XSPR(31,339,338), XSPR_MASK, POWER10, EXT, {RS}},
7903 {"mfheir", XSPR(31,339,339), XSPR_MASK, POWER10, EXT, {RS}},
7904 {"mftcr", XSPR(31,339,340), XSPR_MASK, BOOKE, EXT, {RT}},
7905 {"mfamor", XSPR(31,339,349), XSPR_MASK, POWER7, EXT, {RS}},
7906 {"mfivor0", XSPR(31,339,400), XSPR_MASK, BOOKE, EXT, {RT}},
7907 {"mfivor1", XSPR(31,339,401), XSPR_MASK, BOOKE, EXT, {RT}},
7908 {"mfivor2", XSPR(31,339,402), XSPR_MASK, BOOKE, EXT, {RT}},
7909 {"mfivor3", XSPR(31,339,403), XSPR_MASK, BOOKE, EXT, {RT}},
7910 {"mfivor4", XSPR(31,339,404), XSPR_MASK, BOOKE, EXT, {RT}},
7911 {"mfivor5", XSPR(31,339,405), XSPR_MASK, BOOKE, EXT, {RT}},
7912 {"mfivor6", XSPR(31,339,406), XSPR_MASK, BOOKE, EXT, {RT}},
7913 {"mfivor7", XSPR(31,339,407), XSPR_MASK, BOOKE, EXT, {RT}},
7914 {"mfivor8", XSPR(31,339,408), XSPR_MASK, BOOKE, EXT, {RT}},
7915 {"mfivor9", XSPR(31,339,409), XSPR_MASK, BOOKE, EXT, {RT}},
7916 {"mfivor10", XSPR(31,339,410), XSPR_MASK, BOOKE, EXT, {RT}},
7917 {"mfivor11", XSPR(31,339,411), XSPR_MASK, BOOKE, EXT, {RT}},
7918 {"mfivor12", XSPR(31,339,412), XSPR_MASK, BOOKE, EXT, {RT}},
7919 {"mfivor13", XSPR(31,339,413), XSPR_MASK, BOOKE, EXT, {RT}},
7920 {"mfivor14", XSPR(31,339,414), XSPR_MASK, BOOKE, EXT, {RT}},
7921 {"mfivor15", XSPR(31,339,415), XSPR_MASK, BOOKE, EXT, {RT}},
7922 {"mftir", XSPR(31,339,446), XSPR_MASK, POWER10, EXT, {RS}},
7923 {"mfptcr", XSPR(31,339,464), XSPR_MASK, POWER10, EXT, {RS}},
7924 {"mfusprg0", XSPR(31,339,496), XSPR_MASK, POWER10, EXT, {RS}},
7925 {"mfusprg1", XSPR(31,339,497), XSPR_MASK, POWER10, EXT, {RS}},
7926 {"mfurmor", XSPR(31,339,505), XSPR_MASK, POWER10, EXT, {RS}},
7927 {"mfusrr0", XSPR(31,339,506), XSPR_MASK, POWER10, EXT, {RS}},
7928 {"mfusrr1", XSPR(31,339,507), XSPR_MASK, POWER10, EXT, {RS}},
7929 {"mfsmfctrl", XSPR(31,339,511), XSPR_MASK, POWER10, EXT, {RS}},
7930 {"mfspefscr", XSPR(31,339,512), XSPR_MASK, PPCSPE, EXT, {RT}},
7931 {"mfbbear", XSPR(31,339,513), XSPR_MASK, PPCBRLK, EXT, {RT}},
7932 {"mfbbtar", XSPR(31,339,514), XSPR_MASK, PPCBRLK, EXT, {RT}},
7933 {"mfivor32", XSPR(31,339,528), XSPR_MASK, PPCSPE|E6500, EXT, {RT}},
7934 {"mfivor33", XSPR(31,339,529), XSPR_MASK, PPCSPE|E6500, EXT, {RT}},
7935 {"mfivor34", XSPR(31,339,530), XSPR_MASK, PPCSPE, EXT, {RT}},
7936 {"mfivor35", XSPR(31,339,531), XSPR_MASK, PPCPMR, EXT, {RT}},
7937 {"mfibatu", XSPR(31,339,528), XSPRBAT_MASK, PPC, TITAN|EXT, {RT, SPRBAT}},
7938 {"mfibatl", XSPR(31,339,529), XSPRBAT_MASK, PPC, TITAN|EXT, {RT, SPRBAT}},
7939 {"mfdbatu", XSPR(31,339,536), XSPRBAT_MASK, PPC, TITAN|EXT, {RT, SPRBAT}},
7940 {"mfdbatl", XSPR(31,339,537), XSPRBAT_MASK, PPC, TITAN|EXT, {RT, SPRBAT}},
7941 {"mfic_cst", XSPR(31,339,560), XSPR_MASK, PPC860, EXT, {RT}},
7942 {"mfic_adr", XSPR(31,339,561), XSPR_MASK, PPC860, EXT, {RT}},
7943 {"mfic_dat", XSPR(31,339,562), XSPR_MASK, PPC860, EXT, {RT}},
7944 {"mfdc_cst", XSPR(31,339,568), XSPR_MASK, PPC860, EXT, {RT}},
7945 {"mfdc_adr", XSPR(31,339,569), XSPR_MASK, PPC860, EXT, {RT}},
7946 {"mfdc_dat", XSPR(31,339,570), XSPR_MASK, PPC860, EXT, {RT}},
7947 {"mfmcsrr0", XSPR(31,339,570), XSPR_MASK, PPCRFMCI, EXT, {RT}},
7948 {"mfmcsrr1", XSPR(31,339,571), XSPR_MASK, PPCRFMCI, EXT, {RT}},
7949 {"mfmcsr", XSPR(31,339,572), XSPR_MASK, PPCRFMCI, EXT, {RT}},
7950 {"mfmcar", XSPR(31,339,573), XSPR_MASK, PPCRFMCI, TITAN|EXT, {RT}},
7951 {"mfdpdr", XSPR(31,339,630), XSPR_MASK, PPC860, EXT, {RT}},
7952 {"mfdpir", XSPR(31,339,631), XSPR_MASK, PPC860, EXT, {RT}},
7953 {"mfimmr", XSPR(31,339,638), XSPR_MASK, PPC860, EXT, {RT}},
7954 {"mfusier2", XSPR(31,339,736), XSPR_MASK, POWER10, EXT, {RT}},
7955 {"mfsier2", XSPR(31,339,736), XSPR_MASK, POWER10, EXT, {RT}},
7956 {"mfusier3", XSPR(31,339,737), XSPR_MASK, POWER10, EXT, {RT}},
7957 {"mfsier3", XSPR(31,339,737), XSPR_MASK, POWER10, EXT, {RT}},
7958 {"mfummcr3", XSPR(31,339,738), XSPR_MASK, POWER10, EXT, {RT}},
7959 {"mfmmcr3", XSPR(31,339,738), XSPR_MASK, POWER10, EXT, {RT}},
7960 {"mfusier", XSPR(31,339,768), XSPR_MASK, POWER10, EXT, {RT}},
7961 {"mfsier", XSPR(31,339,768), XSPR_MASK, POWER10, EXT, {RT}},
7962 {"mfummcr2", XSPR(31,339,769), XSPR_MASK, POWER9, EXT, {RT}},
7963 {"mfmmcr2", XSPR(31,339,769), XSPR_MASK, POWER9, EXT, {RT}},
7964 {"mfummcra", XSPR(31,339,770), XSPR_MASK, POWER9, EXT, {RS}},
7965 {"mfmmcra", XSPR(31,339,770), XSPR_MASK, POWER7, EXT, {RS}},
7966 {"mfupmc1", XSPR(31,339,771), XSPR_MASK, POWER9, EXT, {RT}},
7967 {"mfpmc1", XSPR(31,339,771), XSPR_MASK, POWER7, EXT, {RT}},
7968 {"mfupmc2", XSPR(31,339,772), XSPR_MASK, POWER9, EXT, {RT}},
7969 {"mfpmc2", XSPR(31,339,772), XSPR_MASK, POWER7, EXT, {RT}},
7970 {"mfupmc3", XSPR(31,339,773), XSPR_MASK, POWER9, EXT, {RT}},
7971 {"mfpmc3", XSPR(31,339,773), XSPR_MASK, POWER7, EXT, {RT}},
7972 {"mfupmc4", XSPR(31,339,774), XSPR_MASK, POWER9, EXT, {RT}},
7973 {"mfpmc4", XSPR(31,339,774), XSPR_MASK, POWER7, EXT, {RT}},
7974 {"mfupmc5", XSPR(31,339,775), XSPR_MASK, POWER9, EXT, {RT}},
7975 {"mfpmc5", XSPR(31,339,775), XSPR_MASK, POWER7, EXT, {RT}},
7976 {"mfupmc6", XSPR(31,339,776), XSPR_MASK, POWER9, EXT, {RT}},
7977 {"mfpmc6", XSPR(31,339,776), XSPR_MASK, POWER7, EXT, {RT}},
7978 {"mfummcr0", XSPR(31,339,779), XSPR_MASK, POWER9, EXT, {RS}},
7979 {"mfmmcr0", XSPR(31,339,779), XSPR_MASK, POWER7, EXT, {RS}},
7980 {"mfusiar", XSPR(31,339,780), XSPR_MASK, POWER9, EXT, {RS}},
7981 {"mfsiar", XSPR(31,339,780), XSPR_MASK, POWER9, EXT, {RS}},
7982 {"mfusdar", XSPR(31,339,781), XSPR_MASK, POWER9, EXT, {RS}},
7983 {"mfsdar", XSPR(31,339,781), XSPR_MASK, POWER9, EXT, {RS}},
7984 {"mfummcr1", XSPR(31,339,782), XSPR_MASK, POWER9, EXT, {RS}},
7985 {"mfmmcr1", XSPR(31,339,782), XSPR_MASK, POWER7, EXT, {RS}},
7986 {"mfmi_ctr", XSPR(31,339,784), XSPR_MASK, PPC860, EXT, {RT}},
7987 {"mfmi_ap", XSPR(31,339,786), XSPR_MASK, PPC860, EXT, {RT}},
7988 {"mfmi_epn", XSPR(31,339,787), XSPR_MASK, PPC860, EXT, {RT}},
7989 {"mfmi_twc", XSPR(31,339,789), XSPR_MASK, PPC860, EXT, {RT}},
7990 {"mfmi_rpn", XSPR(31,339,790), XSPR_MASK, PPC860, EXT, {RT}},
7991 {"mfmd_ctr", XSPR(31,339,792), XSPR_MASK, PPC860, EXT, {RT}},
7992 {"mfm_casid", XSPR(31,339,793), XSPR_MASK, PPC860, EXT, {RT}},
7993 {"mfmd_ap", XSPR(31,339,794), XSPR_MASK, PPC860, EXT, {RT}},
7994 {"mfmd_epn", XSPR(31,339,795), XSPR_MASK, PPC860, EXT, {RT}},
7995 {"mfmd_twb", XSPR(31,339,796), XSPR_MASK, PPC860, EXT, {RT}},
7996 {"mfmd_twc", XSPR(31,339,797), XSPR_MASK, PPC860, EXT, {RT}},
7997 {"mfmd_rpn", XSPR(31,339,798), XSPR_MASK, PPC860, EXT, {RT}},
7998 {"mfm_tw", XSPR(31,339,799), XSPR_MASK, PPC860, EXT, {RT}},
7999 {"mfbescrs", XSPR(31,339,800), XSPR_MASK, POWER9, EXT, {RS}},
8000 {"mfbescrsu", XSPR(31,339,801), XSPR_MASK, POWER9, EXT, {RS}},
8001 {"mfbescrr", XSPR(31,339,802), XSPR_MASK, POWER9, EXT, {RS}},
8002 {"mfbescrru", XSPR(31,339,803), XSPR_MASK, POWER9, EXT, {RS}},
8003 {"mfebbhr", XSPR(31,339,804), XSPR_MASK, POWER9, EXT, {RS}},
8004 {"mfebbrr", XSPR(31,339,805), XSPR_MASK, POWER9, EXT, {RS}},
8005 {"mfbescr", XSPR(31,339,806), XSPR_MASK, POWER9, EXT, {RS}},
8006 {"mftar", XSPR(31,339,815), XSPR_MASK, POWER9, EXT, {RS}},
8007 {"mfasdr", XSPR(31,339,816), XSPR_MASK, POWER10, EXT, {RS}},
8008 {"mfmi_dbcam", XSPR(31,339,816), XSPR_MASK, PPC860, EXT, {RT}},
8009 {"mfmi_dbram0", XSPR(31,339,817), XSPR_MASK, PPC860, EXT, {RT}},
8010 {"mfmi_dbram1", XSPR(31,339,818), XSPR_MASK, PPC860, EXT, {RT}},
8011 {"mfpsscr", XSPR(31,339,823), XSPR_MASK, POWER10, EXT, {RS}},
8012 {"mfmd_dbcam", XSPR(31,339,824), XSPR_MASK, PPC860, EXT, {RT}},
8013 {"mfmd_dbram0", XSPR(31,339,825), XSPR_MASK, PPC860, EXT, {RT}},
8014 {"mfmd_dbram1", XSPR(31,339,826), XSPR_MASK, PPC860, EXT, {RT}},
8015 {"mfic", XSPR(31,339,848), XSPR_MASK, POWER8, EXT, {RS}},
8016 {"mfvtb", XSPR(31,339,849), XSPR_MASK, POWER8, EXT, {RS}},
8017 {"mfhpsscr", XSPR(31,339,855), XSPR_MASK, POWER10, EXT, {RS}},
8018 {"mfivndx", XSPR(31,339,880), XSPR_MASK, TITAN, EXT, {RT}},
8019 {"mfdvndx", XSPR(31,339,881), XSPR_MASK, TITAN, EXT, {RT}},
8020 {"mfivlim", XSPR(31,339,882), XSPR_MASK, TITAN, EXT, {RT}},
8021 {"mfdvlim", XSPR(31,339,883), XSPR_MASK, TITAN, EXT, {RT}},
8022 {"mfclcsr", XSPR(31,339,884), XSPR_MASK, TITAN, EXT, {RT}},
8023 {"mfccr1", XSPR(31,339,888), XSPR_MASK, TITAN, EXT, {RT}},
8024 {"mfppr", XSPR(31,339,896), XSPR_MASK, POWER5, EXT, {RT}},
8025 {"mfppr32", XSPR(31,339,898), XSPR_MASK, POWER5, EXT, {RT}},
8026 {"mfgqr", XSPR(31,339,912), XSPRGQR_MASK, PPCPS, EXT, {RT, SPRGQR}},
8027 {"mfhid2", XSPR(31,339,920), XSPR_MASK, GEKKO, EXT, {RT}},
8028 {"mfwpar", XSPR(31,339,921), XSPR_MASK, GEKKO, EXT, {RT}},
8029 {"mfdmau", XSPR(31,339,922), XSPR_MASK, GEKKO, EXT, {RT}},
8030 {"mfdmal", XSPR(31,339,923), XSPR_MASK, GEKKO, EXT, {RT}},
8031 {"mfrstcfg", XSPR(31,339,923), XSPR_MASK, TITAN, EXT, {RT}},
8032 {"mfdcdbtrl", XSPR(31,339,924), XSPR_MASK, TITAN, EXT, {RT}},
8033 {"mfdcdbtrh", XSPR(31,339,925), XSPR_MASK, TITAN, EXT, {RT}},
8034 {"mficdbtr", XSPR(31,339,927), XSPR_MASK, TITAN, EXT, {RT}},
8035 {"mfummcr0", XSPR(31,339,936), XSPR_MASK, PPC750, EXT, {RT}},
8036 {"mfupmc1", XSPR(31,339,937), XSPR_MASK, PPC750, EXT, {RT}},
8037 {"mfupmc2", XSPR(31,339,938), XSPR_MASK, PPC750, EXT, {RT}},
8038 {"mfusia", XSPR(31,339,939), XSPR_MASK, PPC750, EXT, {RT}},
8039 {"mfummcr1", XSPR(31,339,940), XSPR_MASK, PPC750, EXT, {RT}},
8040 {"mfupmc3", XSPR(31,339,941), XSPR_MASK, PPC750, EXT, {RT}},
8041 {"mfupmc4", XSPR(31,339,942), XSPR_MASK, PPC750, EXT, {RT}},
8042 {"mfzpr", XSPR(31,339,944), XSPR_MASK, PPC403, EXT, {RT}},
8043 {"mfpid", XSPR(31,339,945), XSPR_MASK, PPC403, EXT, {RT}},
8044 {"mfmmucr", XSPR(31,339,946), XSPR_MASK, TITAN, EXT, {RT}},
8045 {"mfccr0", XSPR(31,339,947), XSPR_MASK, PPC405|TITAN, EXT, {RT}},
8046 {"mfiac3", XSPR(31,339,948), XSPR_MASK, PPC405, EXT, {RT}},
8047 {"mfiac4", XSPR(31,339,949), XSPR_MASK, PPC405, EXT, {RT}},
8048 {"mfdvc1", XSPR(31,339,950), XSPR_MASK, PPC405, EXT, {RT}},
8049 {"mfdvc2", XSPR(31,339,951), XSPR_MASK, PPC405, EXT, {RT}},
8050 {"mfmmcr0", XSPR(31,339,952), XSPR_MASK, PPC750, EXT, {RT}},
8051 {"mfpmc1", XSPR(31,339,953), XSPR_MASK, PPC750, EXT, {RT}},
8052 {"mfsgr", XSPR(31,339,953), XSPR_MASK, PPC403, EXT, {RT}},
8053 {"mfdcwr", XSPR(31,339,954), XSPR_MASK, PPC403, EXT, {RT}},
8054 {"mfpmc2", XSPR(31,339,954), XSPR_MASK, PPC750, EXT, {RT}},
8055 {"mfsia", XSPR(31,339,955), XSPR_MASK, PPC750, EXT, {RT}},
8056 {"mfsler", XSPR(31,339,955), XSPR_MASK, PPC405, EXT, {RT}},
8057 {"mfmmcr1", XSPR(31,339,956), XSPR_MASK, PPC750, EXT, {RT}},
8058 {"mfsu0r", XSPR(31,339,956), XSPR_MASK, PPC405, EXT, {RT}},
8059 {"mfdbcr1", XSPR(31,339,957), XSPR_MASK, PPC405, EXT, {RT}},
8060 {"mfpmc3", XSPR(31,339,957), XSPR_MASK, PPC750, EXT, {RT}},
8061 {"mfpmc4", XSPR(31,339,958), XSPR_MASK, PPC750, EXT, {RT}},
8062 {"mficdbdr", XSPR(31,339,979), XSPR_MASK, PPC403|TITAN, EXT, {RT}},
8063 {"mfesr", XSPR(31,339,980), XSPR_MASK, PPC403, EXT, {RT}},
8064 {"mfdear", XSPR(31,339,981), XSPR_MASK, PPC403, EXT, {RT}},
8065 {"mfevpr", XSPR(31,339,982), XSPR_MASK, PPC403, EXT, {RT}},
8066 {"mfcdbcr", XSPR(31,339,983), XSPR_MASK, PPC403, EXT, {RT}},
8067 {"mftsr", XSPR(31,339,984), XSPR_MASK, PPC403, EXT, {RT}},
8068 {"mftcr", XSPR(31,339,986), XSPR_MASK, PPC403, EXT, {RT}},
8069 {"mfpit", XSPR(31,339,987), XSPR_MASK, PPC403, EXT, {RT}},
8070 {"mftbhi", XSPR(31,339,988), XSPR_MASK, PPC403, EXT, {RT}},
8071 {"mftblo", XSPR(31,339,989), XSPR_MASK, PPC403, EXT, {RT}},
8072 {"mfsrr2", XSPR(31,339,990), XSPR_MASK, PPC403, EXT, {RT}},
8073 {"mfsrr3", XSPR(31,339,991), XSPR_MASK, PPC403, EXT, {RT}},
8074 {"mfdbsr", XSPR(31,339,1008), XSPR_MASK, PPC403, EXT, {RT}},
8075 {"mfhid0", XSPR(31,339,1008), XSPR_MASK, GEKKO, EXT, {RT}},
8076 {"mfhid1", XSPR(31,339,1009), XSPR_MASK, GEKKO, EXT, {RT}},
8077 {"mfdbcr0", XSPR(31,339,1010), XSPR_MASK, PPC405, EXT, {RT}},
8078 {"mfiabr", XSPR(31,339,1010), XSPR_MASK, GEKKO, EXT, {RT}},
8079 {"mfhid4", XSPR(31,339,1011), XSPR_MASK, BROADWAY, EXT, {RT}},
8080 {"mfdbdr", XSPR(31,339,1011), XSPR_MASK, TITAN, EXT, {RS}},
8081 {"mfiac1", XSPR(31,339,1012), XSPR_MASK, PPC403, EXT, {RT}},
8082 {"mfiac2", XSPR(31,339,1013), XSPR_MASK, PPC403, EXT, {RT}},
8083 {"mfdabr", XSPR(31,339,1013), XSPR_MASK, PPC750, EXT, {RT}},
8084 {"mfdac1", XSPR(31,339,1014), XSPR_MASK, PPC403, EXT, {RT}},
8085 {"mfdac2", XSPR(31,339,1015), XSPR_MASK, PPC403, EXT, {RT}},
8086 {"mfl2cr", XSPR(31,339,1017), XSPR_MASK, PPC750, EXT, {RT}},
8087 {"mfdccr", XSPR(31,339,1018), XSPR_MASK, PPC403, EXT, {RT}},
8088 {"mficcr", XSPR(31,339,1019), XSPR_MASK, PPC403, EXT, {RT}},
8089 {"mfictc", XSPR(31,339,1019), XSPR_MASK, PPC750, EXT, {RT}},
8090 {"mfpbl1", XSPR(31,339,1020), XSPR_MASK, PPC403, EXT, {RT}},
8091 {"mfthrm1", XSPR(31,339,1020), XSPR_MASK, PPC750, EXT, {RT}},
8092 {"mfpbu1", XSPR(31,339,1021), XSPR_MASK, PPC403, EXT, {RT}},
8093 {"mfthrm2", XSPR(31,339,1021), XSPR_MASK, PPC750, EXT, {RT}},
8094 {"mfpbl2", XSPR(31,339,1022), XSPR_MASK, PPC403, EXT, {RT}},
8095 {"mfthrm3", XSPR(31,339,1022), XSPR_MASK, PPC750, EXT, {RT}},
8096 {"mfpir", XSPR(31,339,1023), XSPR_MASK, POWER10, EXT, {RT}},
8097 {"mfpbu2", XSPR(31,339,1023), XSPR_MASK, PPC403, EXT, {RT}},
8098 {"mfspr", X(31,339), X_MASK, COM, 0, {RT, SPR}},
8099
8100 {"lwax", X(31,341), X_MASK, PPC64, 0, {RT, RA0, RB}},
8101
8102 {"dst", XDSS(31,342,0), XDSS_MASK, PPCVEC, 0, {RA, RB, STRM}},
8103 {"dstt", XDSS(31,342,1), XDSS_MASK, PPCVEC, 0, {RA, RB, STRM}},
8104
8105 {"lhax", X(31,343), X_MASK, COM, 0, {RT, RA0, RB}},
8106
8107 {"lvxl", X(31,359), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
8108
8109 {"abs", XO(31,360,0,0), XORB_MASK, M601, 0, {RT, RA}},
8110 {"abs.", XO(31,360,0,1), XORB_MASK, M601, 0, {RT, RA}},
8111
8112 {"divs", XO(31,363,0,0), XO_MASK, M601, 0, {RT, RA, RB}},
8113 {"divs.", XO(31,363,0,1), XO_MASK, M601, 0, {RT, RA, RB}},
8114
8115 {"lxvwsx", X(31,364), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
8116
8117 {"tlbia", X(31,370), 0xffffffff, PPC, E500|TITAN, {0}},
8118
8119 {"mftbu", XSPR(31,371,269), XSPR_MASK, PPC, NO371|POWER4|EXT, {RT}},
8120 {"mftb", X(31,371), X_MASK, PPC, NO371|POWER4, {RT, TBR}},
8121 {"mftbl", XSPR(31,371,268), XSPR_MASK, PPC, NO371|POWER4|EXT, {RT}},
8122
8123 {"lwaux", X(31,373), X_MASK, PPC64, 0, {RT, RAL, RB}},
8124
8125 {"dstst", XDSS(31,374,0), XDSS_MASK, PPCVEC, 0, {RA, RB, STRM}},
8126 {"dststt", XDSS(31,374,1), XDSS_MASK, PPCVEC, 0, {RA, RB, STRM}},
8127
8128 {"lhaux", X(31,375), X_MASK, COM, 0, {RT, RAL, RB}},
8129
8130 {"popcntw", X(31,378), XRB_MASK, POWER7|PPCA2, 0, {RA, RS}},
8131
8132 {"setbc", X(31,384), XRB_MASK, POWER10, 0, {RT, BI}},
8133
8134 {"mtdcrx", X(31,387), X_MASK, BOOKE|PPCA2|PPC476, TITAN, {RA, RS}},
8135 {"mtdcrx.", XRC(31,387,1), X_MASK, PPCA2, 0, {RA, RS}},
8136
8137 {"stvexbx", X(31,389), X_MASK, E6500, 0, {VS, RA0, RB}},
8138
8139 {"dcblc", X(31,390), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
8140 {"stdfcmx", APU(31,391,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
8141
8142 {"divdeu", XO(31,393,0,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
8143 {"divdeu.", XO(31,393,0,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
8144 {"divweu", XO(31,395,0,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
8145 {"divweu.", XO(31,395,0,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
8146
8147 {"stxvx", X(31,396), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
8148 {"stxvl", X(31,397), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
8149
8150 {"dcblce", X(31,398), X_MASK, PPCCHLK, E500MC, {CT, RA, RB}},
8151
8152 {"slbmte", X(31,402), XRA_MASK, PPC64, 0, {RS, RB}},
8153
8154 {"mtvsrws", X(31,403), XX1RB_MASK, PPCVSX3, 0, {XT6, RA}},
8155
8156 {"pbt.", XRC(31,404,1), X_MASK, POWER8, 0, {RS, RA0, RB}},
8157
8158 {"icswx", XRC(31,406,0), X_MASK, POWER7|PPCA2, 0, {RS, RA, RB}},
8159 {"icswx.", XRC(31,406,1), X_MASK, POWER7|PPCA2, 0, {RS, RA, RB}},
8160
8161 {"sthx", X(31,407), X_MASK, COM, 0, {RS, RA0, RB}},
8162
8163 {"orc", XRC(31,412,0), X_MASK, COM, 0, {RA, RS, RB}},
8164 {"orc.", XRC(31,412,1), X_MASK, COM, 0, {RA, RS, RB}},
8165
8166 {"sthepx", X(31,415), X_MASK, E500MC|PPCA2, 0, {RS, RA0, RB}},
8167
8168 {"setbcr", X(31,416), XRB_MASK, POWER10, 0, {RT, BI}},
8169
8170 {"mtdcrux", X(31,419), X_MASK, PPC464|PPC476, 0, {RA, RS}},
8171
8172 {"stvexhx", X(31,421), X_MASK, E6500, 0, {VS, RA0, RB}},
8173
8174 {"dcblq.", XRC(31,422,1), X_MASK, E6500, 0, {CT, RA0, RB}},
8175
8176 {"divde", XO(31,425,0,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
8177 {"divde.", XO(31,425,0,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
8178 {"divwe", XO(31,427,0,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
8179 {"divwe.", XO(31,427,0,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
8180
8181 {"stxvll", X(31,429), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
8182
8183 {"clrbhrb", X(31,430), 0xffffffff, POWER8, 0, {0}},
8184
8185 {"slbie", X(31,434), XRTRA_MASK, PPC64, 0, {RB}},
8186
8187 {"mtvsrdd", X(31,435), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
8188
8189 {"ecowx", X(31,438), X_MASK, PPC, E500|TITAN, {RT, RA0, RB}},
8190
8191 {"sthux", X(31,439), X_MASK, COM, 0, {RS, RAS, RB}},
8192
8193 /* or 1,1,1 */
8194 {"cctpl", 0x7c210b78, 0xffffffff, CELL, EXT, {0}},
8195 /* or 2,2,2 */
8196 {"cctpm", 0x7c421378, 0xffffffff, CELL, EXT, {0}},
8197 /* or 3,3,3 */
8198 {"cctph", 0x7c631b78, 0xffffffff, CELL, EXT, {0}},
8199 /* or 26,26,26 */
8200 {"miso", 0x7f5ad378, 0xffffffff, POWER8|E6500, EXT, {0}},
8201 /* or 27,27,27 */
8202 {"yield", 0x7f7bdb78, 0xffffffff, POWER7, EXT, {0}},
8203 /* or 28,28,28 */
8204 {"mdors", 0x7f9ce378, 0xffffffff, E500MC, EXT, {0}},
8205 {"db8cyc", 0x7f9ce378, 0xffffffff, CELL, EXT, {0}},
8206 /* or 29,29,29 */
8207 {"mdoio", 0x7fbdeb78, 0xffffffff, POWER7, EXT, {0}},
8208 {"db10cyc", 0x7fbdeb78, 0xffffffff, CELL, EXT, {0}},
8209 /* or 30,30,30 */
8210 {"mdoom", 0x7fdef378, 0xffffffff, POWER7, EXT, {0}},
8211 {"db12cyc", 0x7fdef378, 0xffffffff, CELL, EXT, {0}},
8212 /* or 31,31,31 */
8213 {"db16cyc", 0x7ffffb78, 0xffffffff, CELL, EXT, {0}},
8214
8215 {"mr", XRC(31,444,0), X_MASK, COM, EXT, {RA, RSB}},
8216 {"or", XRC(31,444,0), X_MASK, COM, 0, {RA, RS, RB}},
8217 {"mr.", XRC(31,444,1), X_MASK, COM, EXT, {RA, RSB}},
8218 {"or.", XRC(31,444,1), X_MASK, COM, 0, {RA, RS, RB}},
8219
8220 {"setnbc", X(31,448), XRB_MASK, POWER10, 0, {RT, BI}},
8221
8222 {"mtexisr", XSPR(31,451, 64), XSPR_MASK, PPC403, 0, {RS}},
8223 {"mtexier", XSPR(31,451, 66), XSPR_MASK, PPC403, 0, {RS}},
8224 {"mtbr0", XSPR(31,451,128), XSPR_MASK, PPC403, 0, {RS}},
8225 {"mtbr1", XSPR(31,451,129), XSPR_MASK, PPC403, 0, {RS}},
8226 {"mtbr2", XSPR(31,451,130), XSPR_MASK, PPC403, 0, {RS}},
8227 {"mtbr3", XSPR(31,451,131), XSPR_MASK, PPC403, 0, {RS}},
8228 {"mtbr4", XSPR(31,451,132), XSPR_MASK, PPC403, 0, {RS}},
8229 {"mtbr5", XSPR(31,451,133), XSPR_MASK, PPC403, 0, {RS}},
8230 {"mtbr6", XSPR(31,451,134), XSPR_MASK, PPC403, 0, {RS}},
8231 {"mtbr7", XSPR(31,451,135), XSPR_MASK, PPC403, 0, {RS}},
8232 {"mtbear", XSPR(31,451,144), XSPR_MASK, PPC403, 0, {RS}},
8233 {"mtbesr", XSPR(31,451,145), XSPR_MASK, PPC403, 0, {RS}},
8234 {"mtiocr", XSPR(31,451,160), XSPR_MASK, PPC403, 0, {RS}},
8235 {"mtdmacr0", XSPR(31,451,192), XSPR_MASK, PPC403, 0, {RS}},
8236 {"mtdmact0", XSPR(31,451,193), XSPR_MASK, PPC403, 0, {RS}},
8237 {"mtdmada0", XSPR(31,451,194), XSPR_MASK, PPC403, 0, {RS}},
8238 {"mtdmasa0", XSPR(31,451,195), XSPR_MASK, PPC403, 0, {RS}},
8239 {"mtdmacc0", XSPR(31,451,196), XSPR_MASK, PPC403, 0, {RS}},
8240 {"mtdmacr1", XSPR(31,451,200), XSPR_MASK, PPC403, 0, {RS}},
8241 {"mtdmact1", XSPR(31,451,201), XSPR_MASK, PPC403, 0, {RS}},
8242 {"mtdmada1", XSPR(31,451,202), XSPR_MASK, PPC403, 0, {RS}},
8243 {"mtdmasa1", XSPR(31,451,203), XSPR_MASK, PPC403, 0, {RS}},
8244 {"mtdmacc1", XSPR(31,451,204), XSPR_MASK, PPC403, 0, {RS}},
8245 {"mtdmacr2", XSPR(31,451,208), XSPR_MASK, PPC403, 0, {RS}},
8246 {"mtdmact2", XSPR(31,451,209), XSPR_MASK, PPC403, 0, {RS}},
8247 {"mtdmada2", XSPR(31,451,210), XSPR_MASK, PPC403, 0, {RS}},
8248 {"mtdmasa2", XSPR(31,451,211), XSPR_MASK, PPC403, 0, {RS}},
8249 {"mtdmacc2", XSPR(31,451,212), XSPR_MASK, PPC403, 0, {RS}},
8250 {"mtdmacr3", XSPR(31,451,216), XSPR_MASK, PPC403, 0, {RS}},
8251 {"mtdmact3", XSPR(31,451,217), XSPR_MASK, PPC403, 0, {RS}},
8252 {"mtdmada3", XSPR(31,451,218), XSPR_MASK, PPC403, 0, {RS}},
8253 {"mtdmasa3", XSPR(31,451,219), XSPR_MASK, PPC403, 0, {RS}},
8254 {"mtdmacc3", XSPR(31,451,220), XSPR_MASK, PPC403, 0, {RS}},
8255 {"mtdmasr", XSPR(31,451,224), XSPR_MASK, PPC403, 0, {RS}},
8256 {"mtdcr", X(31,451), X_MASK, PPC403|BOOKE|PPCA2|PPC476, E500|TITAN, {SPR, RS}},
8257 {"mtdcr.", XRC(31,451,1), X_MASK, PPCA2, 0, {SPR, RS}},
8258
8259 {"stvexwx", X(31,453), X_MASK, E6500, 0, {VS, RA0, RB}},
8260
8261 {"dccci", X(31,454), XRT_MASK, PPC403|PPC440|PPC476|TITAN|PPCA2, 0, {RAOPT, RBOPT}},
8262 {"dci", X(31,454), XRARB_MASK, PPCA2|PPC476, 0, {CT}},
8263
8264 {"divdu", XO(31,457,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
8265 {"divdu.", XO(31,457,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
8266
8267 {"divwu", XO(31,459,0,0), XO_MASK, PPC, 0, {RT, RA, RB}},
8268 {"divwu.", XO(31,459,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
8269
8270 {"stxvpx", X(31,461), XX1_MASK, POWER10, 0, {XSP, RA0, RB}},
8271
8272 {"mtpmr", X(31,462), X_MASK, PPCPMR|PPCE300, 0, {PMR, RS}},
8273 {"mttmr", X(31,494), X_MASK, PPCTMR, 0, {TMR, RS}},
8274
8275 {"slbieg", X(31,466), XRA_MASK, POWER9, 0, {RS, RB}},
8276
8277 {"mtmq", XSPR(31,467, 0), XSPR_MASK, M601, EXT, {RS}},
8278 {"mtxer", XSPR(31,467, 1), XSPR_MASK, COM, EXT, {RS}},
8279 {"mtudscr", XSPR(31,467, 3), XSPR_MASK, POWER9, EXT, {RS}},
8280 {"mtlr", XSPR(31,467, 8), XSPR_MASK, COM, EXT, {RS}},
8281 {"mtctr", XSPR(31,467, 9), XSPR_MASK, COM, EXT, {RS}},
8282 {"mtuamr", XSPR(31,467, 13), XSPR_MASK, POWER9, EXT, {RS}},
8283 {"mtdscr", XSPR(31,467, 17), XSPR_MASK, POWER6, EXT, {RS}},
8284 {"mttid", XSPR(31,467, 17), XSPR_MASK, POWER, EXT, {RS}},
8285 {"mtdsisr", XSPR(31,467, 18), XSPR_MASK, COM, TITAN|EXT, {RS}},
8286 {"mtdar", XSPR(31,467, 19), XSPR_MASK, COM, TITAN|EXT, {RS}},
8287 {"mtrtcu", XSPR(31,467, 20), XSPR_MASK, COM, TITAN|EXT, {RS}},
8288 {"mtrtcl", XSPR(31,467, 21), XSPR_MASK, COM, TITAN|EXT, {RS}},
8289 {"mtdec", XSPR(31,467, 22), XSPR_MASK, COM, EXT, {RS}},
8290 {"mtsdr0", XSPR(31,467, 24), XSPR_MASK, POWER, EXT, {RS}},
8291 {"mtsdr1", XSPR(31,467, 25), XSPR_MASK, COM, TITAN|EXT, {RS}},
8292 {"mtsrr0", XSPR(31,467, 26), XSPR_MASK, COM, EXT, {RS}},
8293 {"mtsrr1", XSPR(31,467, 27), XSPR_MASK, COM, EXT, {RS}},
8294 {"mtcfar", XSPR(31,467, 28), XSPR_MASK, POWER6, EXT, {RS}},
8295 {"mtamr", XSPR(31,467, 29), XSPR_MASK, POWER7, EXT, {RS}},
8296 {"mtpidr", XSPR(31,467, 48), XSPR_MASK, POWER10, EXT, {RS}},
8297 {"mtpid", XSPR(31,467, 48), XSPR_MASK, BOOKE, EXT, {RS}},
8298 {"mtdecar", XSPR(31,467, 54), XSPR_MASK, BOOKE, EXT, {RS}},
8299 {"mtcsrr0", XSPR(31,467, 58), XSPR_MASK, BOOKE, EXT, {RS}},
8300 {"mtcsrr1", XSPR(31,467, 59), XSPR_MASK, BOOKE, EXT, {RS}},
8301 {"mtiamr", XSPR(31,467, 61), XSPR_MASK, POWER10, EXT, {RS}},
8302 {"mtdear", XSPR(31,467, 61), XSPR_MASK, BOOKE, EXT, {RS}},
8303 {"mtesr", XSPR(31,467, 62), XSPR_MASK, BOOKE, EXT, {RS}},
8304 {"mtivpr", XSPR(31,467, 63), XSPR_MASK, BOOKE, EXT, {RS}},
8305 {"mttfhar", XSPR(31,467,128), XSPR_MASK, POWER9, EXT, {RS}},
8306 {"mttfiar", XSPR(31,467,129), XSPR_MASK, POWER9, EXT, {RS}},
8307 {"mttexasr", XSPR(31,467,130), XSPR_MASK, POWER9, EXT, {RS}},
8308 {"mttexasru", XSPR(31,467,131), XSPR_MASK, POWER9, EXT, {RS}},
8309 {"mtcmpa", XSPR(31,467,144), XSPR_MASK, PPC860, EXT, {RS}},
8310 {"mtcmpb", XSPR(31,467,145), XSPR_MASK, PPC860, EXT, {RS}},
8311 {"mtcmpc", XSPR(31,467,146), XSPR_MASK, PPC860, EXT, {RS}},
8312 {"mtcmpd", XSPR(31,467,147), XSPR_MASK, PPC860, EXT, {RS}},
8313 {"mticr", XSPR(31,467,148), XSPR_MASK, PPC860, EXT, {RS}},
8314 {"mtder", XSPR(31,467,149), XSPR_MASK, PPC860, EXT, {RS}},
8315 {"mtcounta", XSPR(31,467,150), XSPR_MASK, PPC860, EXT, {RS}},
8316 {"mtcountb", XSPR(31,467,151), XSPR_MASK, PPC860, EXT, {RS}},
8317 {"mtctrl", XSPR(31,467,152), XSPR_MASK, POWER4, EXT, {RS}},
8318 {"mtcmpe", XSPR(31,467,152), XSPR_MASK, PPC860, EXT, {RS}},
8319 {"mtfscr", XSPR(31,467,153), XSPR_MASK, POWER10, EXT, {RS}},
8320 {"mtcmpf", XSPR(31,467,153), XSPR_MASK, PPC860, EXT, {RS}},
8321 {"mtcmpg", XSPR(31,467,154), XSPR_MASK, PPC860, EXT, {RS}},
8322 {"mtcmph", XSPR(31,467,155), XSPR_MASK, PPC860, EXT, {RS}},
8323 {"mtlctrl1", XSPR(31,467,156), XSPR_MASK, PPC860, EXT, {RS}},
8324 {"mtuamor", XSPR(31,467,157), XSPR_MASK, POWER7, EXT, {RS}},
8325 {"mtlctrl2", XSPR(31,467,157), XSPR_MASK, PPC860, EXT, {RS}},
8326 {"mtictrl", XSPR(31,467,158), XSPR_MASK, PPC860, EXT, {RS}},
8327 {"mtpspb", XSPR(31,467,159), XSPR_MASK, POWER10, EXT, {RS}},
8328 {"mtbar", XSPR(31,467,159), XSPR_MASK, PPC860, EXT, {RS}},
8329 {"mtdpdes", XSPR(31,467,176), XSPR_MASK, POWER10, EXT, {RS}},
8330 {"mtdawr0", XSPR(31,467,180), XSPR_MASK, POWER10, EXT, {RS}},
8331 {"mtdawr1", XSPR(31,467,181), XSPR_MASK, POWER10, EXT, {RS}},
8332 {"mtrpr", XSPR(31,467,186), XSPR_MASK, POWER10, EXT, {RS}},
8333 {"mtciabr", XSPR(31,467,187), XSPR_MASK, POWER10, EXT, {RS}},
8334 {"mtdawrx0", XSPR(31,467,188), XSPR_MASK, POWER10, EXT, {RS}},
8335 {"mtdawrx1", XSPR(31,467,189), XSPR_MASK, POWER10, EXT, {RS}},
8336 {"mthfscr", XSPR(31,467,190), XSPR_MASK, POWER10, EXT, {RS}},
8337 {"mtvrsave", XSPR(31,467,256), XSPR_MASK, PPCVEC, EXT, {RS}},
8338 {"mtusprg0", XSPR(31,467,256), XSPR_MASK, BOOKE, EXT, {RS}},
8339 {"mtsprg", XSPR(31,467,256), XSPRG_MASK, PPC, EXT, {SPRG, RS}},
8340 {"mtsprg0", XSPR(31,467,272), XSPR_MASK, PPC, EXT, {RS}},
8341 {"mtsprg1", XSPR(31,467,273), XSPR_MASK, PPC, EXT, {RS}},
8342 {"mtsprg2", XSPR(31,467,274), XSPR_MASK, PPC, EXT, {RS}},
8343 {"mtsprg3", XSPR(31,467,275), XSPR_MASK, PPC, EXT, {RS}},
8344 {"mtsprg4", XSPR(31,467,276), XSPR_MASK, PPC405|BOOKE, EXT, {RS}},
8345 {"mtsprg5", XSPR(31,467,277), XSPR_MASK, PPC405|BOOKE, EXT, {RS}},
8346 {"mtsprg6", XSPR(31,467,278), XSPR_MASK, PPC405|BOOKE, EXT, {RS}},
8347 {"mtsprg7", XSPR(31,467,279), XSPR_MASK, PPC405|BOOKE, EXT, {RS}},
8348 {"mtasr", XSPR(31,467,280), XSPR_MASK, PPC64, EXT, {RS}},
8349 {"mtear", XSPR(31,467,282), XSPR_MASK, PPC, TITAN|EXT, {RS}},
8350 {"mttbl", XSPR(31,467,284), XSPR_MASK, PPC, EXT, {RS}},
8351 {"mttbu", XSPR(31,467,285), XSPR_MASK, PPC, EXT, {RS}},
8352 {"mttbu40", XSPR(31,467,286), XSPR_MASK, POWER10, EXT, {RS}},
8353 {"mthsprg0", XSPR(31,467,304), XSPR_MASK, POWER10, EXT, {RS}},
8354 {"mtdbsr", XSPR(31,467,304), XSPR_MASK, BOOKE, EXT, {RS}},
8355 {"mthsprg1", XSPR(31,467,305), XSPR_MASK, POWER10, EXT, {RS}},
8356 {"mthdisr", XSPR(31,467,306), XSPR_MASK, POWER10, EXT, {RS}},
8357 {"mthdar", XSPR(31,467,307), XSPR_MASK, POWER10, EXT, {RS}},
8358 {"mtspurr", XSPR(31,467,308), XSPR_MASK, POWER10, EXT, {RS}},
8359 {"mtdbcr0", XSPR(31,467,308), XSPR_MASK, BOOKE, EXT, {RS}},
8360 {"mtpurr", XSPR(31,467,309), XSPR_MASK, POWER10, EXT, {RS}},
8361 {"mtdbcr1", XSPR(31,467,309), XSPR_MASK, BOOKE, EXT, {RS}},
8362 {"mthdec", XSPR(31,467,310), XSPR_MASK, POWER10, EXT, {RS}},
8363 {"mtdbcr2", XSPR(31,467,310), XSPR_MASK, BOOKE, EXT, {RS}},
8364 {"mtiac1", XSPR(31,467,312), XSPR_MASK, BOOKE, EXT, {RS}},
8365 {"mthrmor", XSPR(31,467,313), XSPR_MASK, POWER10, EXT, {RS}},
8366 {"mtiac2", XSPR(31,467,313), XSPR_MASK, BOOKE, EXT, {RS}},
8367 {"mthsrr0", XSPR(31,467,314), XSPR_MASK, POWER10, EXT, {RS}},
8368 {"mtiac3", XSPR(31,467,314), XSPR_MASK, BOOKE, EXT, {RS}},
8369 {"mthsrr1", XSPR(31,467,315), XSPR_MASK, POWER10, EXT, {RS}},
8370 {"mtiac4", XSPR(31,467,315), XSPR_MASK, BOOKE, EXT, {RS}},
8371 {"mtdac1", XSPR(31,467,316), XSPR_MASK, BOOKE, EXT, {RS}},
8372 {"mtdac2", XSPR(31,467,317), XSPR_MASK, BOOKE, EXT, {RS}},
8373 {"mtlpcr", XSPR(31,467,318), XSPR_MASK, POWER10, EXT, {RS}},
8374 {"mtdvc1", XSPR(31,467,318), XSPR_MASK, BOOKE, EXT, {RS}},
8375 {"mtlpidr", XSPR(31,467,319), XSPR_MASK, POWER10, EXT, {RS}},
8376 {"mtdvc2", XSPR(31,467,319), XSPR_MASK, BOOKE, EXT, {RS}},
8377 {"mthmer", XSPR(31,467,336), XSPR_MASK, POWER7, EXT, {RS}},
8378 {"mttsr", XSPR(31,467,336), XSPR_MASK, BOOKE, EXT, {RS}},
8379 {"mthmeer", XSPR(31,467,337), XSPR_MASK, POWER7, EXT, {RS}},
8380 {"mtpcr", XSPR(31,467,338), XSPR_MASK, POWER10, EXT, {RS}},
8381 {"mtheir", XSPR(31,467,339), XSPR_MASK, POWER10, EXT, {RS}},
8382 {"mttcr", XSPR(31,467,340), XSPR_MASK, BOOKE, EXT, {RS}},
8383 {"mtamor", XSPR(31,467,349), XSPR_MASK, POWER7, EXT, {RS}},
8384 {"mtivor0", XSPR(31,467,400), XSPR_MASK, BOOKE, EXT, {RS}},
8385 {"mtivor1", XSPR(31,467,401), XSPR_MASK, BOOKE, EXT, {RS}},
8386 {"mtivor2", XSPR(31,467,402), XSPR_MASK, BOOKE, EXT, {RS}},
8387 {"mtivor3", XSPR(31,467,403), XSPR_MASK, BOOKE, EXT, {RS}},
8388 {"mtivor4", XSPR(31,467,404), XSPR_MASK, BOOKE, EXT, {RS}},
8389 {"mtivor5", XSPR(31,467,405), XSPR_MASK, BOOKE, EXT, {RS}},
8390 {"mtivor6", XSPR(31,467,406), XSPR_MASK, BOOKE, EXT, {RS}},
8391 {"mtivor7", XSPR(31,467,407), XSPR_MASK, BOOKE, EXT, {RS}},
8392 {"mtivor8", XSPR(31,467,408), XSPR_MASK, BOOKE, EXT, {RS}},
8393 {"mtivor9", XSPR(31,467,409), XSPR_MASK, BOOKE, EXT, {RS}},
8394 {"mtivor10", XSPR(31,467,410), XSPR_MASK, BOOKE, EXT, {RS}},
8395 {"mtivor11", XSPR(31,467,411), XSPR_MASK, BOOKE, EXT, {RS}},
8396 {"mtivor12", XSPR(31,467,412), XSPR_MASK, BOOKE, EXT, {RS}},
8397 {"mtivor13", XSPR(31,467,413), XSPR_MASK, BOOKE, EXT, {RS}},
8398 {"mtivor14", XSPR(31,467,414), XSPR_MASK, BOOKE, EXT, {RS}},
8399 {"mtivor15", XSPR(31,467,415), XSPR_MASK, BOOKE, EXT, {RS}},
8400 {"mtptcr", XSPR(31,467,464), XSPR_MASK, POWER10, EXT, {RS}},
8401 {"mtusprg0", XSPR(31,467,496), XSPR_MASK, POWER10, EXT, {RS}},
8402 {"mtusprg1", XSPR(31,467,497), XSPR_MASK, POWER10, EXT, {RS}},
8403 {"mturmor", XSPR(31,467,505), XSPR_MASK, POWER10, EXT, {RS}},
8404 {"mtusrr0", XSPR(31,467,506), XSPR_MASK, POWER10, EXT, {RS}},
8405 {"mtusrr1", XSPR(31,467,507), XSPR_MASK, POWER10, EXT, {RS}},
8406 {"mtsmfctrl", XSPR(31,467,511), XSPR_MASK, POWER10, EXT, {RS}},
8407 {"mtspefscr", XSPR(31,467,512), XSPR_MASK, PPCSPE, EXT, {RS}},
8408 {"mtbbear", XSPR(31,467,513), XSPR_MASK, PPCBRLK, EXT, {RS}},
8409 {"mtbbtar", XSPR(31,467,514), XSPR_MASK, PPCBRLK, EXT, {RS}},
8410 {"mtivor32", XSPR(31,467,528), XSPR_MASK, PPCSPE|E6500, EXT, {RS}},
8411 {"mtivor33", XSPR(31,467,529), XSPR_MASK, PPCSPE|E6500, EXT, {RS}},
8412 {"mtivor34", XSPR(31,467,530), XSPR_MASK, PPCSPE, EXT, {RS}},
8413 {"mtivor35", XSPR(31,467,531), XSPR_MASK, PPCPMR, EXT, {RS}},
8414 {"mtibatu", XSPR(31,467,528), XSPRBAT_MASK, PPC, TITAN|EXT, {SPRBAT, RS}},
8415 {"mtibatl", XSPR(31,467,529), XSPRBAT_MASK, PPC, TITAN|EXT, {SPRBAT, RS}},
8416 {"mtdbatu", XSPR(31,467,536), XSPRBAT_MASK, PPC, TITAN|EXT, {SPRBAT, RS}},
8417 {"mtdbatl", XSPR(31,467,537), XSPRBAT_MASK, PPC, TITAN|EXT, {SPRBAT, RS}},
8418 {"mtmcsrr0", XSPR(31,467,570), XSPR_MASK, PPCRFMCI, EXT, {RS}},
8419 {"mtmcsrr1", XSPR(31,467,571), XSPR_MASK, PPCRFMCI, EXT, {RS}},
8420 {"mtmcsr", XSPR(31,467,572), XSPR_MASK, PPCRFMCI, EXT, {RS}},
8421 {"mtsier2", XSPR(31,467,752), XSPR_MASK, POWER10, EXT, {RS}},
8422 {"mtsier3", XSPR(31,467,753), XSPR_MASK, POWER10, EXT, {RS}},
8423 {"mtmmcr3", XSPR(31,467,754), XSPR_MASK, POWER10, EXT, {RS}},
8424 {"mtummcr2", XSPR(31,467,769), XSPR_MASK, POWER9, EXT, {RS}},
8425 {"mtmmcr2", XSPR(31,467,769), XSPR_MASK, POWER9, EXT, {RS}},
8426 {"mtummcra", XSPR(31,467,770), XSPR_MASK, POWER9, EXT, {RS}},
8427 {"mtupmc1", XSPR(31,467,771), XSPR_MASK, POWER9, EXT, {RS}},
8428 {"mtupmc2", XSPR(31,467,772), XSPR_MASK, POWER9, EXT, {RS}},
8429 {"mtupmc3", XSPR(31,467,773), XSPR_MASK, POWER9, EXT, {RS}},
8430 {"mtupmc4", XSPR(31,467,774), XSPR_MASK, POWER9, EXT, {RS}},
8431 {"mtupmc5", XSPR(31,467,775), XSPR_MASK, POWER9, EXT, {RS}},
8432 {"mtupmc6", XSPR(31,467,776), XSPR_MASK, POWER9, EXT, {RS}},
8433 {"mtummcr0", XSPR(31,467,779), XSPR_MASK, POWER9, EXT, {RS}},
8434 {"mtsier", XSPR(31,467,784), XSPR_MASK, POWER10, EXT, {RS}},
8435 {"mtmmcra", XSPR(31,467,786), XSPR_MASK, POWER7, EXT, {RS}},
8436 {"mtpmc1", XSPR(31,467,787), XSPR_MASK, POWER7, EXT, {RS}},
8437 {"mtpmc2", XSPR(31,467,788), XSPR_MASK, POWER7, EXT, {RS}},
8438 {"mtpmc3", XSPR(31,467,789), XSPR_MASK, POWER7, EXT, {RS}},
8439 {"mtpmc4", XSPR(31,467,790), XSPR_MASK, POWER7, EXT, {RS}},
8440 {"mtpmc5", XSPR(31,467,791), XSPR_MASK, POWER7, EXT, {RS}},
8441 {"mtpmc6", XSPR(31,467,792), XSPR_MASK, POWER7, EXT, {RS}},
8442 {"mtmmcr0", XSPR(31,467,795), XSPR_MASK, POWER7, EXT, {RS}},
8443 {"mtsiar", XSPR(31,467,796), XSPR_MASK, POWER10, EXT, {RS}},
8444 {"mtsdar", XSPR(31,467,797), XSPR_MASK, POWER10, EXT, {RS}},
8445 {"mtmmcr1", XSPR(31,467,798), XSPR_MASK, POWER7, EXT, {RS}},
8446 {"mtbescrs", XSPR(31,467,800), XSPR_MASK, POWER9, EXT, {RS}},
8447 {"mtbescrsu", XSPR(31,467,801), XSPR_MASK, POWER9, EXT, {RS}},
8448 {"mtbescrr", XSPR(31,467,802), XSPR_MASK, POWER9, EXT, {RS}},
8449 {"mtbescrru", XSPR(31,467,803), XSPR_MASK, POWER9, EXT, {RS}},
8450 {"mtebbhr", XSPR(31,467,804), XSPR_MASK, POWER9, EXT, {RS}},
8451 {"mtebbrr", XSPR(31,467,805), XSPR_MASK, POWER9, EXT, {RS}},
8452 {"mtbescr", XSPR(31,467,806), XSPR_MASK, POWER9, EXT, {RS}},
8453 {"mttar", XSPR(31,467,815), XSPR_MASK, POWER9, EXT, {RS}},
8454 {"mtasdr", XSPR(31,467,816), XSPR_MASK, POWER10, EXT, {RS}},
8455 {"mtpsscr", XSPR(31,467,823), XSPR_MASK, POWER10, EXT, {RS}},
8456 {"mtic", XSPR(31,467,848), XSPR_MASK, POWER8, EXT, {RS}},
8457 {"mtvtb", XSPR(31,467,849), XSPR_MASK, POWER8, EXT, {RS}},
8458 {"mthpsscr", XSPR(31,467,855), XSPR_MASK, POWER10, EXT, {RS}},
8459 {"mtivndx", XSPR(31,467,880), XSPR_MASK, TITAN, EXT, {RS}},
8460 {"mtdvndx", XSPR(31,467,881), XSPR_MASK, TITAN, EXT, {RS}},
8461 {"mtivlim", XSPR(31,467,882), XSPR_MASK, TITAN, EXT, {RS}},
8462 {"mtdvlim", XSPR(31,467,883), XSPR_MASK, TITAN, EXT, {RS}},
8463 {"mtclcsr", XSPR(31,467,884), XSPR_MASK, TITAN, EXT, {RS}},
8464 {"mtccr1", XSPR(31,467,888), XSPR_MASK, TITAN, EXT, {RS}},
8465 {"mtppr", XSPR(31,467,896), XSPR_MASK, POWER5, EXT, {RS}},
8466 {"mtppr32", XSPR(31,467,898), XSPR_MASK, POWER5, EXT, {RS}},
8467 {"mtgqr", XSPR(31,467,912), XSPRGQR_MASK, PPCPS, EXT, {SPRGQR, RS}},
8468 {"mthid2", XSPR(31,467,920), XSPR_MASK, GEKKO, EXT, {RS}},
8469 {"mtwpar", XSPR(31,467,921), XSPR_MASK, GEKKO, EXT, {RS}},
8470 {"mtdmau", XSPR(31,467,922), XSPR_MASK, GEKKO, EXT, {RS}},
8471 {"mtdmal", XSPR(31,467,923), XSPR_MASK, GEKKO, EXT, {RS}},
8472 {"mtummcr0", XSPR(31,467,936), XSPR_MASK, PPC750, EXT, {RS}},
8473 {"mtupmc1", XSPR(31,467,937), XSPR_MASK, PPC750, EXT, {RS}},
8474 {"mtupmc2", XSPR(31,467,938), XSPR_MASK, PPC750, EXT, {RS}},
8475 {"mtusia", XSPR(31,467,939), XSPR_MASK, PPC750, EXT, {RS}},
8476 {"mtummcr1", XSPR(31,467,940), XSPR_MASK, PPC750, EXT, {RS}},
8477 {"mtupmc3", XSPR(31,467,941), XSPR_MASK, PPC750, EXT, {RS}},
8478 {"mtupmc4", XSPR(31,467,942), XSPR_MASK, PPC750, EXT, {RS}},
8479 {"mtzpr", XSPR(31,467,944), XSPR_MASK, PPC403, EXT, {RS}},
8480 {"mtpid", XSPR(31,467,945), XSPR_MASK, PPC403, EXT, {RS}},
8481 {"mtrmmucr", XSPR(31,467,946), XSPR_MASK, TITAN, EXT, {RS}},
8482 {"mtccr0", XSPR(31,467,947), XSPR_MASK, PPC405|TITAN, EXT, {RS}},
8483 {"mtiac3", XSPR(31,467,948), XSPR_MASK, PPC405, EXT, {RS}},
8484 {"mtiac4", XSPR(31,467,949), XSPR_MASK, PPC405, EXT, {RS}},
8485 {"mtdvc1", XSPR(31,467,950), XSPR_MASK, PPC405, EXT, {RS}},
8486 {"mtdvc2", XSPR(31,467,951), XSPR_MASK, PPC405, EXT, {RS}},
8487 {"mtmmcr0", XSPR(31,467,952), XSPR_MASK, PPC750, EXT, {RS}},
8488 {"mtpmc1", XSPR(31,467,953), XSPR_MASK, PPC750, EXT, {RS}},
8489 {"mtsgr", XSPR(31,467,953), XSPR_MASK, PPC403, EXT, {RS}},
8490 {"mtdcwr", XSPR(31,467,954), XSPR_MASK, PPC403, EXT, {RS}},
8491 {"mtpmc2", XSPR(31,467,954), XSPR_MASK, PPC750, EXT, {RS}},
8492 {"mtsia", XSPR(31,467,955), XSPR_MASK, PPC750, EXT, {RS}},
8493 {"mtsler", XSPR(31,467,955), XSPR_MASK, PPC405, EXT, {RS}},
8494 {"mtmmcr1", XSPR(31,467,956), XSPR_MASK, PPC750, EXT, {RS}},
8495 {"mtsu0r", XSPR(31,467,956), XSPR_MASK, PPC405, EXT, {RS}},
8496 {"mtdbcr1", XSPR(31,467,957), XSPR_MASK, PPC405, EXT, {RS}},
8497 {"mtpmc3", XSPR(31,467,957), XSPR_MASK, PPC750, EXT, {RS}},
8498 {"mtpmc4", XSPR(31,467,958), XSPR_MASK, PPC750, EXT, {RS}},
8499 {"mticdbdr", XSPR(31,467,979), XSPR_MASK, PPC403, EXT, {RS}},
8500 {"mtesr", XSPR(31,467,980), XSPR_MASK, PPC403, EXT, {RS}},
8501 {"mtdear", XSPR(31,467,981), XSPR_MASK, PPC403, EXT, {RS}},
8502 {"mtevpr", XSPR(31,467,982), XSPR_MASK, PPC403, EXT, {RS}},
8503 {"mtcdbcr", XSPR(31,467,983), XSPR_MASK, PPC403, EXT, {RS}},
8504 {"mttsr", XSPR(31,467,984), XSPR_MASK, PPC403, EXT, {RS}},
8505 {"mttcr", XSPR(31,467,986), XSPR_MASK, PPC403, EXT, {RS}},
8506 {"mtpit", XSPR(31,467,987), XSPR_MASK, PPC403, EXT, {RS}},
8507 {"mttbhi", XSPR(31,467,988), XSPR_MASK, PPC403, EXT, {RS}},
8508 {"mttblo", XSPR(31,467,989), XSPR_MASK, PPC403, EXT, {RS}},
8509 {"mtsrr2", XSPR(31,467,990), XSPR_MASK, PPC403, EXT, {RS}},
8510 {"mtsrr3", XSPR(31,467,991), XSPR_MASK, PPC403, EXT, {RS}},
8511 {"mtdbsr", XSPR(31,467,1008), XSPR_MASK, PPC403, EXT, {RS}},
8512 {"mthid0", XSPR(31,467,1008), XSPR_MASK, GEKKO, EXT, {RS}},
8513 {"mthid1", XSPR(31,467,1009), XSPR_MASK, GEKKO, EXT, {RS}},
8514 {"mtdbcr0", XSPR(31,467,1010), XSPR_MASK, PPC405, EXT, {RS}},
8515 {"mtiabr", XSPR(31,467,1010), XSPR_MASK, GEKKO, EXT, {RS}},
8516 {"mthid4", XSPR(31,467,1011), XSPR_MASK, BROADWAY, EXT, {RS}},
8517 {"mtdbdr", XSPR(31,467,1011), XSPR_MASK, TITAN, EXT, {RS}},
8518 {"mtiac1", XSPR(31,467,1012), XSPR_MASK, PPC403, EXT, {RS}},
8519 {"mtiac2", XSPR(31,467,1013), XSPR_MASK, PPC403, EXT, {RS}},
8520 {"mtdabr", XSPR(31,467,1013), XSPR_MASK, PPC750, EXT, {RS}},
8521 {"mtdac1", XSPR(31,467,1014), XSPR_MASK, PPC403, EXT, {RS}},
8522 {"mtdac2", XSPR(31,467,1015), XSPR_MASK, PPC403, EXT, {RS}},
8523 {"mtl2cr", XSPR(31,467,1017), XSPR_MASK, PPC750, EXT, {RS}},
8524 {"mtdccr", XSPR(31,467,1018), XSPR_MASK, PPC403, EXT, {RS}},
8525 {"mticcr", XSPR(31,467,1019), XSPR_MASK, PPC403, EXT, {RS}},
8526 {"mtictc", XSPR(31,467,1019), XSPR_MASK, PPC750, EXT, {RS}},
8527 {"mtpbl1", XSPR(31,467,1020), XSPR_MASK, PPC403, EXT, {RS}},
8528 {"mtthrm1", XSPR(31,467,1020), XSPR_MASK, PPC750, EXT, {RS}},
8529 {"mtpbu1", XSPR(31,467,1021), XSPR_MASK, PPC403, EXT, {RS}},
8530 {"mtthrm2", XSPR(31,467,1021), XSPR_MASK, PPC750, EXT, {RS}},
8531 {"mtpbl2", XSPR(31,467,1022), XSPR_MASK, PPC403, EXT, {RS}},
8532 {"mtthrm3", XSPR(31,467,1022), XSPR_MASK, PPC750, EXT, {RS}},
8533 {"mtpbu2", XSPR(31,467,1023), XSPR_MASK, PPC403, EXT, {RS}},
8534 {"mtspr", X(31,467), X_MASK, COM, 0, {SPR, RS}},
8535
8536 {"dcbi", X(31,470), XRT_MASK, PPC, 0, {RA0, RB}},
8537
8538 {"nand", XRC(31,476,0), X_MASK, COM, 0, {RA, RS, RB}},
8539 {"nand.", XRC(31,476,1), X_MASK, COM, 0, {RA, RS, RB}},
8540
8541 {"setnbcr", X(31,480), XRB_MASK, POWER10, 0, {RT, BI}},
8542
8543 {"dsn", X(31,483), XRT_MASK, E500MC, 0, {RA, RB}},
8544
8545 {"dcread", X(31,486), X_MASK, PPC403|PPC440, PPCA2, {RT, RA0, RB}},
8546
8547 {"icbtls", X(31,486), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
8548
8549 {"stvxl", X(31,487), X_MASK, PPCVEC, 0, {VS, RA0, RB}},
8550
8551 {"nabs", XO(31,488,0,0), XORB_MASK, M601, 0, {RT, RA}},
8552 {"nabs.", XO(31,488,0,1), XORB_MASK, M601, 0, {RT, RA}},
8553
8554 {"divd", XO(31,489,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
8555 {"divd.", XO(31,489,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
8556
8557 {"divw", XO(31,491,0,0), XO_MASK, PPC, 0, {RT, RA, RB}},
8558 {"divw.", XO(31,491,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
8559
8560 {"icbtlse", X(31,494), X_MASK, PPCCHLK, E500MC, {CT, RA, RB}},
8561
8562 {"slbia", X(31,498), 0xff1fffff, POWER6, 0, {IH}},
8563 {"slbia", X(31,498), 0xffffffff, PPC64, POWER6, {0}},
8564
8565 {"cli", X(31,502), XRB_MASK, POWER, 0, {RT, RA}},
8566
8567 {"popcntd", X(31,506), XRB_MASK, POWER7|PPCA2, 0, {RA, RS}},
8568
8569 {"cmpb", X(31,508), X_MASK, POWER6|PPCA2|PPC476, 0, {RA, RS, RB}},
8570
8571 {"mcrxr", X(31,512), XBFRARB_MASK, COM, POWER7, {BF}},
8572
8573 {"lbdcbx", X(31,514), X_MASK, E200Z4, 0, {RT, RA, RB}},
8574 {"lbdx", X(31,515), X_MASK, E500MC|E200Z4, 0, {RT, RA, RB}},
8575
8576 {"bblels", X(31,518), X_MASK, PPCBRLK, 0, {0}},
8577
8578 {"lvlx", X(31,519), X_MASK, CELL, 0, {VD, RA0, RB}},
8579 {"lbfcmux", APU(31,519,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
8580
8581 {"subfco", XO(31,8,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
8582 {"sfo", XO(31,8,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
8583 {"subco", XO(31,8,1,0), XO_MASK, PPCCOM, EXT, {RT, RB, RA}},
8584 {"subfco.", XO(31,8,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
8585 {"sfo.", XO(31,8,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
8586 {"subco.", XO(31,8,1,1), XO_MASK, PPCCOM, EXT, {RT, RB, RA}},
8587
8588 {"addco", XO(31,10,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
8589 {"ao", XO(31,10,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
8590 {"addco.", XO(31,10,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
8591 {"ao.", XO(31,10,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
8592
8593 {"lxsspx", X(31,524), XX1_MASK, PPCVSX2, 0, {XT6, RA0, RB}},
8594 {"lxvrl", X(31,525), XX1_MASK, PPCVSXF, 0, {XT6, RA0, RB}},
8595
8596 {"clcs", X(31,531), XRB_MASK, M601, 0, {RT, RA}},
8597
8598 {"ldbrx", X(31,532), X_MASK, CELL|POWER7|PPCA2, 0, {RT, RA0, RB}},
8599
8600 {"lswx", X(31,533), X_MASK, PPCCOM, E500|E500MC, {RT, RAX, RBX}},
8601 {"lsx", X(31,533), X_MASK, PWRCOM, 0, {RT, RA, RB}},
8602
8603 {"lwbrx", X(31,534), X_MASK, PPCCOM, 0, {RT, RA0, RB}},
8604 {"lbrx", X(31,534), X_MASK, PWRCOM, 0, {RT, RA, RB}},
8605
8606 {"lfsx", X(31,535), X_MASK, COM, PPCEFS, {FRT, RA0, RB}},
8607
8608 {"srw", XRC(31,536,0), X_MASK, PPCCOM, 0, {RA, RS, RB}},
8609 {"sr", XRC(31,536,0), X_MASK, PWRCOM, 0, {RA, RS, RB}},
8610 {"srw.", XRC(31,536,1), X_MASK, PPCCOM, 0, {RA, RS, RB}},
8611 {"sr.", XRC(31,536,1), X_MASK, PWRCOM, 0, {RA, RS, RB}},
8612
8613 {"rrib", XRC(31,537,0), X_MASK, M601, 0, {RA, RS, RB}},
8614 {"rrib.", XRC(31,537,1), X_MASK, M601, 0, {RA, RS, RB}},
8615
8616 {"cnttzw", XRC(31,538,0), XRB_MASK, POWER9, 0, {RA, RS}},
8617 {"cnttzw.", XRC(31,538,1), XRB_MASK, POWER9, 0, {RA, RS}},
8618
8619 {"srd", XRC(31,539,0), X_MASK, PPC64, 0, {RA, RS, RB}},
8620 {"srd.", XRC(31,539,1), X_MASK, PPC64, 0, {RA, RS, RB}},
8621
8622 {"maskir", XRC(31,541,0), X_MASK, M601, 0, {RA, RS, RB}},
8623 {"maskir.", XRC(31,541,1), X_MASK, M601, 0, {RA, RS, RB}},
8624
8625 {"lhdcbx", X(31,546), X_MASK, E200Z4, 0, {RT, RA, RB}},
8626 {"lhdx", X(31,547), X_MASK, E500MC|E200Z4, 0, {RT, RA, RB}},
8627
8628 {"lvtrx", X(31,549), X_MASK, E6500, 0, {VD, RA0, RB}},
8629
8630 {"bbelr", X(31,550), X_MASK, PPCBRLK, 0, {0}},
8631
8632 {"lvrx", X(31,551), X_MASK, CELL, 0, {VD, RA0, RB}},
8633 {"lhfcmux", APU(31,551,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
8634
8635 {"subfo", XO(31,40,1,0), XO_MASK, PPC, 0, {RT, RA, RB}},
8636 {"subo", XO(31,40,1,0), XO_MASK, PPC, EXT, {RT, RB, RA}},
8637 {"subfo.", XO(31,40,1,1), XO_MASK, PPC, 0, {RT, RA, RB}},
8638 {"subo.", XO(31,40,1,1), XO_MASK, PPC, EXT, {RT, RB, RA}},
8639
8640 {"lxvrll", X(31,557), XX1_MASK, PPCVSXF, 0, {XT6, RA0, RB}},
8641
8642 {"tlbsync", X(31,566), 0xffffffff, PPC, 0, {0}},
8643
8644 {"lfsux", X(31,567), X_MASK, COM, PPCEFS, {FRT, RAS, RB}},
8645
8646 {"cnttzd", XRC(31,570,0), XRB_MASK, POWER9, 0, {RA, RS}},
8647 {"cnttzd.", XRC(31,570,1), XRB_MASK, POWER9, 0, {RA, RS}},
8648
8649 {"cnttzdm", X(31,571), X_MASK, POWER10, 0, {RA, RS, RB}},
8650
8651 {"mcrxrx", X(31,576), XBFRARB_MASK, POWER9, 0, {BF}},
8652
8653 {"lwdcbx", X(31,578), X_MASK, E200Z4, 0, {RT, RA, RB}},
8654 {"lwdx", X(31,579), X_MASK, E500MC|E200Z4, 0, {RT, RA, RB}},
8655
8656 {"lvtlx", X(31,581), X_MASK, E6500, 0, {VD, RA0, RB}},
8657
8658 {"lwat", X(31,582), X_MASK, POWER9, 0, {RT, RA0, FC}},
8659
8660 {"lwfcmux", APU(31,583,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
8661
8662 {"lxsdx", X(31,588), XX1_MASK, PPCVSX, 0, {XT6, RA0, RB}},
8663 {"lxvprl", X(31,589), XX1_MASK, PPCVSXF, 0, {XTP, RA0, RB}},
8664
8665 {"mfsr", X(31,595), XRB_MASK|(1<<20), COM, NON32, {RT, SR}},
8666
8667 {"lswi", X(31,597), X_MASK, PPCCOM, E500|E500MC, {RT, RAX, NBI}},
8668 {"lsi", X(31,597), X_MASK, PWRCOM, 0, {RT, RA0, NB}},
8669
8670 {"hwsync", XSYNC(31,598,0), 0xffffffff, POWER4, BOOKE|PPC476|EXT, {0}},
8671 {"lwsync", XSYNC(31,598,1), 0xffffffff, PPC, E500|EXT, {0}},
8672 {"ptesync", XSYNC(31,598,2), 0xffffffff, PPC64, EXT, {0}},
8673 {"phwsync", XSYNCLS(31,598,4,0), 0xffffffff, POWER10, EXT, {0}},
8674 {"plwsync", XSYNCLS(31,598,5,0), 0xffffffff, POWER10, EXT, {0}},
8675 {"stncisync", XSYNCLS(31,598,1,1), 0xffffffff, POWER10, EXT, {0}},
8676 {"stcisync", XSYNCLS(31,598,0,2), 0xffffffff, POWER10, EXT, {0}},
8677 {"stsync", XSYNCLS(31,598,0,3), 0xffffffff, POWER10, EXT, {0}},
8678 {"sync", X(31,598), XSYNCLS_MASK, POWER10, BOOKE|PPC476, {LS3, SC2}},
8679 {"sync", X(31,598), XSYNCLE_MASK, E6500, 0, {LS, ESYNC}},
8680 {"sync", X(31,598), XSYNC_MASK, PPCCOM, POWER10|BOOKE|PPC476, {LS}},
8681 {"msync", X(31,598), 0xffffffff, BOOKE|PPCA2|PPC476, 0, {0}},
8682 {"sync", X(31,598), 0xffffffff, BOOKE|PPC476, E6500, {0}},
8683 {"lwsync", X(31,598), 0xffffffff, E500, 0, {0}},
8684 {"dcs", X(31,598), 0xffffffff, PWRCOM, 0, {0}},
8685
8686 {"lfdx", X(31,599), X_MASK, COM, PPCEFS, {FRT, RA0, RB}},
8687
8688 {"mffgpr", XRC(31,607,0), XRA_MASK, POWER6, POWER7, {FRT, RB}},
8689 {"lfdepx", X(31,607), X_MASK, E500MC|PPCA2, 0, {FRT, RA0, RB}},
8690
8691 {"lddx", X(31,611), X_MASK, E500MC, 0, {RT, RA, RB}},
8692
8693 {"lvswx", X(31,613), X_MASK, E6500, 0, {VD, RA0, RB}},
8694
8695 {"ldat", X(31,614), X_MASK, POWER9, 0, {RT, RA0, FC}},
8696
8697 {"lqfcmux", APU(31,615,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
8698
8699 {"nego", XO(31,104,1,0), XORB_MASK, COM, 0, {RT, RA}},
8700 {"nego.", XO(31,104,1,1), XORB_MASK, COM, 0, {RT, RA}},
8701
8702 {"mulo", XO(31,107,1,0), XO_MASK, M601, 0, {RT, RA, RB}},
8703 {"mulo.", XO(31,107,1,1), XO_MASK, M601, 0, {RT, RA, RB}},
8704
8705 {"lxvprll", X(31,621), XX1_MASK, PPCVSXF, 0, {XTP, RA0, RB}},
8706
8707 {"mfsri", X(31,627), X_MASK, M601, 0, {RT, RA, RB}},
8708
8709 {"dclst", X(31,630), XRB_MASK, M601, 0, {RS, RA}},
8710
8711 {"lfdux", X(31,631), X_MASK, COM, PPCEFS, {FRT, RAS, RB}},
8712
8713 {"stbdcbx", X(31,642), X_MASK, E200Z4, 0, {RS, RA, RB}},
8714 {"stbdx", X(31,643), X_MASK, E500MC|E200Z4, 0, {RS, RA, RB}},
8715
8716 {"stvlx", X(31,647), X_MASK, CELL, 0, {VS, RA0, RB}},
8717 {"stbfcmux", APU(31,647,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
8718
8719 {"stxsspx", X(31,652), XX1_MASK, PPCVSX2, 0, {XS6, RA0, RB}},
8720 {"stxvrl", X(31,653), XX1_MASK, PPCVSXF, 0, {XS6, RA0, RB}},
8721
8722 {"tbegin.", XRC(31,654,1), XRTLRARB_MASK, PPCHTM, 0, {HTM_R}},
8723
8724 {"subfeo", XO(31,136,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
8725 {"sfeo", XO(31,136,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
8726 {"subfeo.", XO(31,136,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
8727 {"sfeo.", XO(31,136,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
8728
8729 {"addeo", XO(31,138,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
8730 {"aeo", XO(31,138,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
8731 {"addeo.", XO(31,138,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
8732 {"aeo.", XO(31,138,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
8733
8734 {"hashstp", X(31,658), XRC_MASK, POWER8, 0, {RB, DW, RA0}},
8735
8736 {"mfsrin", X(31,659), XRA_MASK, PPC, NON32, {RT, RB}},
8737
8738 {"stdbrx", X(31,660), X_MASK, CELL|POWER7|PPCA2, 0, {RS, RA0, RB}},
8739
8740 {"stswx", X(31,661), X_MASK, PPCCOM, E500|E500MC, {RS, RA0, RB}},
8741 {"stsx", X(31,661), X_MASK, PWRCOM, 0, {RS, RA0, RB}},
8742
8743 {"stwbrx", X(31,662), X_MASK, PPCCOM, 0, {RS, RA0, RB}},
8744 {"stbrx", X(31,662), X_MASK, PWRCOM, 0, {RS, RA0, RB}},
8745
8746 {"stfsx", X(31,663), X_MASK, COM, PPCEFS, {FRS, RA0, RB}},
8747
8748 {"srq", XRC(31,664,0), X_MASK, M601, 0, {RA, RS, RB}},
8749 {"srq.", XRC(31,664,1), X_MASK, M601, 0, {RA, RS, RB}},
8750
8751 {"sre", XRC(31,665,0), X_MASK, M601, 0, {RA, RS, RB}},
8752 {"sre.", XRC(31,665,1), X_MASK, M601, 0, {RA, RS, RB}},
8753
8754 {"sthdcbx", X(31,674), X_MASK, E200Z4, 0, {RS, RA, RB}},
8755 {"sthdx", X(31,675), X_MASK, E500MC|E200Z4, 0, {RS, RA, RB}},
8756
8757 {"stvfrx", X(31,677), X_MASK, E6500, 0, {VS, RA0, RB}},
8758
8759 {"stvrx", X(31,679), X_MASK, CELL, 0, {VS, RA0, RB}},
8760 {"sthfcmux", APU(31,679,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
8761
8762 {"stxvrll", X(31,685), XX1_MASK, PPCVSXF, 0, {XS6, RA0, RB}},
8763
8764 {"tendall.", XRC(31,686,1)|(1<<25), XRTRARB_MASK, PPCHTM, 0, {0}},
8765 {"tend.", XRC(31,686,1), XRTARARB_MASK, PPCHTM, 0, {HTM_A}},
8766
8767 {"hashchkp", X(31,690), XRC_MASK, POWER8, 0, {RB, DW, RA0}},
8768
8769 {"stbcx.", XRC(31,694,1), X_MASK, POWER8|E6500, 0, {RS, RA0, RB}},
8770
8771 {"stfsux", X(31,695), X_MASK, COM, PPCEFS, {FRS, RAS, RB}},
8772
8773 {"sriq", XRC(31,696,0), X_MASK, M601, 0, {RA, RS, SH}},
8774 {"sriq.", XRC(31,696,1), X_MASK, M601, 0, {RA, RS, SH}},
8775
8776 {"stwdcbx", X(31,706), X_MASK, E200Z4, 0, {RS, RA, RB}},
8777 {"stwdx", X(31,707), X_MASK, E500MC|E200Z4, 0, {RS, RA, RB}},
8778
8779 {"stvflx", X(31,709), X_MASK, E6500, 0, {VS, RA0, RB}},
8780
8781 {"stwat", X(31,710), X_MASK, POWER9, 0, {RS, RA0, FC}},
8782
8783 {"stwfcmux", APU(31,711,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
8784
8785 {"stxsdx", X(31,716), XX1_MASK, PPCVSX, 0, {XS6, RA0, RB}},
8786 {"stxvprl", X(31,717), XX1_MASK, PPCVSXF, 0, {XSP, RA0, RB}},
8787
8788 {"tcheck", X(31,718), XRTBFRARB_MASK, PPCHTM, 0, {BF}},
8789
8790 {"subfzeo", XO(31,200,1,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
8791 {"sfzeo", XO(31,200,1,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
8792 {"subfzeo.", XO(31,200,1,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
8793 {"sfzeo.", XO(31,200,1,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
8794
8795 {"addzeo", XO(31,202,1,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
8796 {"azeo", XO(31,202,1,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
8797 {"addzeo.", XO(31,202,1,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
8798 {"azeo.", XO(31,202,1,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
8799
8800 {"hashst", X(31,722), XRC_MASK, POWER8, 0, {RB, DW, RA0}},
8801
8802 {"stswi", X(31,725), X_MASK, PPCCOM, E500|E500MC, {RS, RA0, NB}},
8803 {"stsi", X(31,725), X_MASK, PWRCOM, 0, {RS, RA0, NB}},
8804
8805 {"sthcx.", XRC(31,726,1), X_MASK, POWER8|E6500, 0, {RS, RA0, RB}},
8806
8807 {"stfdx", X(31,727), X_MASK, COM, PPCEFS, {FRS, RA0, RB}},
8808
8809 {"srlq", XRC(31,728,0), X_MASK, M601, 0, {RA, RS, RB}},
8810 {"srlq.", XRC(31,728,1), X_MASK, M601, 0, {RA, RS, RB}},
8811
8812 {"sreq", XRC(31,729,0), X_MASK, M601, 0, {RA, RS, RB}},
8813 {"sreq.", XRC(31,729,1), X_MASK, M601, 0, {RA, RS, RB}},
8814
8815 {"mftgpr", XRC(31,735,0), XRA_MASK, POWER6, POWER7, {RT, FRB}},
8816 {"stfdepx", X(31,735), X_MASK, E500MC|PPCA2, 0, {FRS, RA0, RB}},
8817
8818 {"stddx", X(31,739), X_MASK, E500MC, 0, {RS, RA, RB}},
8819
8820 {"stvswx", X(31,741), X_MASK, E6500, 0, {VS, RA0, RB}},
8821
8822 {"stdat", X(31,742), X_MASK, POWER9, 0, {RS, RA0, FC}},
8823
8824 {"stqfcmux", APU(31,743,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
8825
8826 {"subfmeo", XO(31,232,1,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
8827 {"sfmeo", XO(31,232,1,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
8828 {"subfmeo.", XO(31,232,1,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
8829 {"sfmeo.", XO(31,232,1,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
8830
8831 {"mulldo", XO(31,233,1,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
8832 {"mulldo.", XO(31,233,1,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
8833
8834 {"addmeo", XO(31,234,1,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
8835 {"ameo", XO(31,234,1,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
8836 {"addmeo.", XO(31,234,1,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
8837 {"ameo.", XO(31,234,1,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
8838
8839 {"mullwo", XO(31,235,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
8840 {"mulso", XO(31,235,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
8841 {"mullwo.", XO(31,235,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
8842 {"mulso.", XO(31,235,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
8843
8844 {"stxvprll", X(31,749), XX1_MASK, PPCVSXF, 0, {XSP, RA0, RB}},
8845
8846 {"tsuspend.", XRCL(31,750,0,1), XRTRARB_MASK,PPCHTM, EXT, {0}},
8847 {"tresume.", XRCL(31,750,1,1), XRTRARB_MASK,PPCHTM, EXT, {0}},
8848 {"tsr.", XRC(31,750,1), XRTLRARB_MASK,PPCHTM, 0, {L}},
8849
8850 {"hashchk", X(31,754), XRC_MASK, POWER8, 0, {RB, DW, RA0}},
8851
8852 {"darn", X(31,755), XLRAND_MASK, POWER9, 0, {RT, LRAND}},
8853
8854 {"dcba", X(31,758), XRT_MASK, PPC405|PPC7450|BOOKE|PPCA2|PPC476, 0, {RA0, RB}},
8855 {"dcbal", XOPL(31,758,1), XRT_MASK, E500MC, 0, {RA0, RB}},
8856
8857 {"stfdux", X(31,759), X_MASK, COM, PPCEFS, {FRS, RAS, RB}},
8858
8859 {"srliq", XRC(31,760,0), X_MASK, M601, 0, {RA, RS, SH}},
8860 {"srliq.", XRC(31,760,1), X_MASK, M601, 0, {RA, RS, SH}},
8861
8862 {"lvsm", X(31,773), X_MASK, E6500, 0, {VD, RA0, RB}},
8863
8864 {"copy", XOPL(31,774,1), XRT_MASK, POWER9, 0, {RA0, RB}},
8865
8866 {"stvepxl", X(31,775), X_MASK, E6500, 0, {VS, RA0, RB}},
8867 {"lvlxl", X(31,775), X_MASK, CELL, 0, {VD, RA0, RB}},
8868 {"ldfcmux", APU(31,775,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
8869
8870 {"dozo", XO(31,264,1,0), XO_MASK, M601, 0, {RT, RA, RB}},
8871 {"dozo.", XO(31,264,1,1), XO_MASK, M601, 0, {RT, RA, RB}},
8872
8873 {"addo", XO(31,266,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
8874 {"caxo", XO(31,266,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
8875 {"addo.", XO(31,266,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
8876 {"caxo.", XO(31,266,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
8877
8878 {"modsd", X(31,777), X_MASK, POWER9, 0, {RT, RA, RB}},
8879 {"modsw", X(31,779), X_MASK, POWER9, 0, {RT, RA, RB}},
8880
8881 {"lxvw4x", X(31,780), XX1_MASK, PPCVSX, 0, {XT6, RA0, RB}},
8882 {"lxsibzx", X(31,781), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
8883
8884 {"tabortwc.", XRC(31,782,1), X_MASK, PPCHTM, 0, {TO, RA, RB}},
8885
8886 {"tlbivax", X(31,786), XRT_MASK, BOOKE|PPCA2|PPC476, 0, {RA0, RB}},
8887
8888 {"lwzcix", X(31,789), X_MASK, POWER6, 0, {RT, RA0, RB}},
8889
8890 {"lhbrx", X(31,790), X_MASK, COM, 0, {RT, RA0, RB}},
8891
8892 {"lfdpx", X(31,791), X_MASK|Q_MASK, POWER6, POWER7, {FRTp, RA0, RB}},
8893 {"lfqx", X(31,791), X_MASK, POWER2, 0, {FRT, RA, RB}},
8894
8895 {"sraw", XRC(31,792,0), X_MASK, PPCCOM, 0, {RA, RS, RB}},
8896 {"sra", XRC(31,792,0), X_MASK, PWRCOM, 0, {RA, RS, RB}},
8897 {"sraw.", XRC(31,792,1), X_MASK, PPCCOM, 0, {RA, RS, RB}},
8898 {"sra.", XRC(31,792,1), X_MASK, PWRCOM, 0, {RA, RS, RB}},
8899
8900 {"srad", XRC(31,794,0), X_MASK, PPC64, 0, {RA, RS, RB}},
8901 {"srad.", XRC(31,794,1), X_MASK, PPC64, 0, {RA, RS, RB}},
8902
8903 {"evlddepx", VX (31, 1598), VX_MASK, PPCSPE, 0, {RT, RA, RB}},
8904 {"lfddx", X(31,803), X_MASK, E500MC, 0, {FRT, RA, RB}},
8905
8906 {"lvtrxl", X(31,805), X_MASK, E6500, 0, {VD, RA0, RB}},
8907 {"stvepx", X(31,807), X_MASK, E6500, 0, {VS, RA0, RB}},
8908 {"lvrxl", X(31,807), X_MASK, CELL, 0, {VD, RA0, RB}},
8909
8910 {"lxvh8x", X(31,812), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
8911 {"lxsihzx", X(31,813), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
8912
8913 {"tabortdc.", XRC(31,814,1), X_MASK, PPCHTM, 0, {TO, RA, RB}},
8914
8915 {"rac", X(31,818), X_MASK, M601, 0, {RT, RA, RB}},
8916
8917 {"erativax", X(31,819), X_MASK, PPCA2, 0, {RS, RA0, RB}},
8918
8919 {"lhzcix", X(31,821), X_MASK, POWER6, 0, {RT, RA0, RB}},
8920
8921 {"dss", XDSS(31,822,0), XDSS_MASK, PPCVEC, 0, {STRM}},
8922 {"dssall", XDSS(31,822,1), XDSS_MASK, PPCVEC, 0, {0}},
8923
8924 {"lfqux", X(31,823), X_MASK, POWER2, 0, {FRT, RA, RB}},
8925
8926 {"srawi", XRC(31,824,0), X_MASK, PPCCOM, 0, {RA, RS, SH}},
8927 {"srai", XRC(31,824,0), X_MASK, PWRCOM, 0, {RA, RS, SH}},
8928 {"srawi.", XRC(31,824,1), X_MASK, PPCCOM, 0, {RA, RS, SH}},
8929 {"srai.", XRC(31,824,1), X_MASK, PWRCOM, 0, {RA, RS, SH}},
8930
8931 {"sradi", XS(31,413,0), XS_MASK, PPC64, 0, {RA, RS, SH6}},
8932 {"sradi.", XS(31,413,1), XS_MASK, PPC64, 0, {RA, RS, SH6}},
8933
8934 {"lvtlxl", X(31,837), X_MASK, E6500, 0, {VD, RA0, RB}},
8935
8936 {"cpabort", X(31,838), XRTRARB_MASK,POWER9, 0, {0}},
8937
8938 {"divo", XO(31,331,1,0), XO_MASK, M601, 0, {RT, RA, RB}},
8939 {"divo.", XO(31,331,1,1), XO_MASK, M601, 0, {RT, RA, RB}},
8940
8941 {"lxvd2x", X(31,844), XX1_MASK, PPCVSX, 0, {XT6, RA0, RB}},
8942 {"lxvx", X(31,844), XX1_MASK, POWER8, POWER9|PPCVSX3, {XT6, RA0, RB}},
8943
8944 {"tabortwci.", XRC(31,846,1), X_MASK, PPCHTM, 0, {TO, RA, HTM_SI}},
8945
8946 {"tlbsrx.", XRC(31,850,1), XRT_MASK, PPCA2, 0, {RA0, RB}},
8947
8948 {"slbiag", X(31,850), XRLARB_MASK, POWER10, 0, {RS, A_L}},
8949 {"slbiag", X(31,850), XRARB_MASK, POWER9, POWER10, {RS}},
8950
8951 {"slbmfev", X(31,851), XRLA_MASK, POWER9, 0, {RT, RB, A_L}},
8952 {"slbmfev", X(31,851), XRA_MASK, PPC64, POWER9, {RT, RB}},
8953
8954 {"lbzcix", X(31,853), X_MASK, POWER6, 0, {RT, RA0, RB}},
8955
8956 {"eieio", X(31,854), 0xffffffff, PPC, BOOKE|PPCA2|PPC476, {0}},
8957 {"mbar", X(31,854), X_MASK, BOOKE|PPCA2|PPC476, 0, {MO}},
8958 {"eieio", XMBAR(31,854,1),0xffffffff, E500, 0, {0}},
8959 {"eieio", X(31,854), 0xffffffff, PPCA2|PPC476, 0, {0}},
8960
8961 {"lfiwax", X(31,855), X_MASK, POWER6|PPCA2|PPC476, 0, {FRT, RA0, RB}},
8962
8963 {"lvswxl", X(31,869), X_MASK, E6500, 0, {VD, RA0, RB}},
8964
8965 {"abso", XO(31,360,1,0), XORB_MASK, M601, 0, {RT, RA}},
8966 {"abso.", XO(31,360,1,1), XORB_MASK, M601, 0, {RT, RA}},
8967
8968 {"divso", XO(31,363,1,0), XO_MASK, M601, 0, {RT, RA, RB}},
8969 {"divso.", XO(31,363,1,1), XO_MASK, M601, 0, {RT, RA, RB}},
8970
8971 {"lxvb16x", X(31,876), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
8972
8973 {"tabortdci.", XRC(31,878,1), X_MASK, PPCHTM, 0, {TO, RA, HTM_SI}},
8974
8975 {"rmieg", X(31,882), XRTRA_MASK, POWER9, 0, {RB}},
8976
8977 {"ldcix", X(31,885), X_MASK, POWER6, 0, {RT, RA0, RB}},
8978
8979 {"msgsync", X(31,886), 0xffffffff, POWER9, 0, {0}},
8980
8981 {"lfiwzx", X(31,887), X_MASK, POWER7|PPCA2, 0, {FRT, RA0, RB}},
8982
8983 {"extswsli", XS(31,445,0), XS_MASK, POWER9, 0, {RA, RS, SH6}},
8984 {"extswsli.", XS(31,445,1), XS_MASK, POWER9, 0, {RA, RS, SH6}},
8985
8986 {"paste.", XRC(31,902,1), XLRT_MASK, POWER10, 0, {RA0, RB, L1OPT}},
8987 {"paste.", XRCL(31,902,1,1),XRT_MASK, POWER9, POWER10, {RA0, RB}},
8988
8989 {"stvlxl", X(31,903), X_MASK, CELL, 0, {VS, RA0, RB}},
8990 {"stdfcmux", APU(31,903,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
8991
8992 {"divdeuo", XO(31,393,1,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
8993 {"divdeuo.", XO(31,393,1,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
8994 {"divweuo", XO(31,395,1,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
8995 {"divweuo.", XO(31,395,1,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
8996
8997 {"stxvw4x", X(31,908), XX1_MASK, PPCVSX, 0, {XS6, RA0, RB}},
8998 {"stxsibx", X(31,909), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
8999
9000 {"tabort.", XRC(31,910,1), XRTRB_MASK, PPCHTM, 0, {RA}},
9001
9002 {"tlbsx", XRC(31,914,0), X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RTO, RA0, RB}},
9003 {"tlbsx.", XRC(31,914,1), X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RTO, RA0, RB}},
9004
9005 {"slbmfee", X(31,915), XRLA_MASK, POWER9, 0, {RT, RB, A_L}},
9006 {"slbmfee", X(31,915), XRA_MASK, PPC64, POWER9, {RT, RB}},
9007
9008 {"stwcix", X(31,917), X_MASK, POWER6, 0, {RS, RA0, RB}},
9009
9010 {"sthbrx", X(31,918), X_MASK, COM, 0, {RS, RA0, RB}},
9011
9012 {"stfdpx", X(31,919), X_MASK|Q_MASK, POWER6, POWER7, {FRSp, RA0, RB}},
9013 {"stfqx", X(31,919), X_MASK, POWER2, 0, {FRS, RA0, RB}},
9014
9015 {"sraq", XRC(31,920,0), X_MASK, M601, 0, {RA, RS, RB}},
9016 {"sraq.", XRC(31,920,1), X_MASK, M601, 0, {RA, RS, RB}},
9017
9018 {"srea", XRC(31,921,0), X_MASK, M601, 0, {RA, RS, RB}},
9019 {"srea.", XRC(31,921,1), X_MASK, M601, 0, {RA, RS, RB}},
9020
9021 {"extsh", XRC(31,922,0), XRB_MASK, PPCCOM, 0, {RA, RS}},
9022 {"exts", XRC(31,922,0), XRB_MASK, PWRCOM, 0, {RA, RS}},
9023 {"extsh.", XRC(31,922,1), XRB_MASK, PPCCOM, 0, {RA, RS}},
9024 {"exts.", XRC(31,922,1), XRB_MASK, PWRCOM, 0, {RA, RS}},
9025
9026 {"evstddepx", VX (31, 1854), VX_MASK, PPCSPE, 0, {RT, RA, RB}},
9027 {"stfddx", X(31,931), X_MASK, E500MC, 0, {FRS, RA, RB}},
9028
9029 {"stvfrxl", X(31,933), X_MASK, E6500, 0, {VS, RA0, RB}},
9030
9031 {"wclrone", XOPL2(31,934,2),XRT_MASK, PPCA2, EXT, {RA0, RB}},
9032 {"wclrall", X(31,934), XRARB_MASK, PPCA2, EXT, {L2}},
9033 {"wclr", X(31,934), X_MASK, PPCA2, 0, {L2, RA0, RB}},
9034
9035 {"stvrxl", X(31,935), X_MASK, CELL, 0, {VS, RA0, RB}},
9036
9037 {"divdeo", XO(31,425,1,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
9038 {"divdeo.", XO(31,425,1,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
9039 {"divweo", XO(31,427,1,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
9040 {"divweo.", XO(31,427,1,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
9041
9042 {"stxvh8x", X(31,940), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
9043 {"stxsihx", X(31,941), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
9044
9045 {"treclaim.", XRC(31,942,1), XRTRB_MASK, PPCHTM, 0, {RA}},
9046
9047 {"tlbrehi", XTLB(31,946,0), XTLB_MASK, PPC403, PPCA2|EXT, {RT, RA}},
9048 {"tlbrelo", XTLB(31,946,1), XTLB_MASK, PPC403, PPCA2|EXT, {RT, RA}},
9049 {"tlbre", X(31,946), X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RSO, RAOPT, SHO}},
9050
9051 {"sthcix", X(31,949), X_MASK, POWER6, 0, {RS, RA0, RB}},
9052
9053 {"icswepx", XRC(31,950,0), X_MASK, PPCA2, 0, {RS, RA, RB}},
9054 {"icswepx.", XRC(31,950,1), X_MASK, PPCA2, 0, {RS, RA, RB}},
9055
9056 {"stfqux", X(31,951), X_MASK, POWER2, 0, {FRS, RA, RB}},
9057
9058 {"sraiq", XRC(31,952,0), X_MASK, M601, 0, {RA, RS, SH}},
9059 {"sraiq.", XRC(31,952,1), X_MASK, M601, 0, {RA, RS, SH}},
9060
9061 {"extsb", XRC(31,954,0), XRB_MASK, PPC, 0, {RA, RS}},
9062 {"extsb.", XRC(31,954,1), XRB_MASK, PPC, 0, {RA, RS}},
9063
9064 {"stvflxl", X(31,965), X_MASK, E6500, 0, {VS, RA0, RB}},
9065
9066 {"iccci", X(31,966), XRT_MASK, PPC403|PPC440|PPC476|TITAN|PPCA2, 0, {RAOPT, RBOPT}},
9067 {"ici", X(31,966), XRARB_MASK, PPCA2|PPC476, 0, {CT}},
9068
9069 {"divduo", XO(31,457,1,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
9070 {"divduo.", XO(31,457,1,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
9071
9072 {"divwuo", XO(31,459,1,0), XO_MASK, PPC, 0, {RT, RA, RB}},
9073 {"divwuo.", XO(31,459,1,1), XO_MASK, PPC, 0, {RT, RA, RB}},
9074
9075 {"stxvd2x", X(31,972), XX1_MASK, PPCVSX, 0, {XS6, RA0, RB}},
9076 {"stxvx", X(31,972), XX1_MASK, POWER8, POWER9|PPCVSX3, {XS6, RA0, RB}},
9077
9078 {"tlbld", X(31,978), XRTRA_MASK, PPC, PPC403|BOOKE|PPCA2|PPC476, {RB}},
9079 {"tlbwehi", XTLB(31,978,0), XTLB_MASK, PPC403, EXT, {RT, RA}},
9080 {"tlbwelo", XTLB(31,978,1), XTLB_MASK, PPC403, EXT, {RT, RA}},
9081 {"tlbwe", X(31,978), X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RSO, RAOPT, SHO}},
9082
9083 {"slbfee.", XRC(31,979,1), XRA_MASK, POWER6, 0, {RT, RB}},
9084
9085 {"stbcix", X(31,981), X_MASK, POWER6, 0, {RS, RA0, RB}},
9086
9087 {"icbi", X(31,982), XRT_MASK, PPC, 0, {RA0, RB}},
9088
9089 {"stfiwx", X(31,983), X_MASK, PPC, PPCEFS, {FRS, RA0, RB}},
9090
9091 {"extsw", XRC(31,986,0), XRB_MASK, PPC64, 0, {RA, RS}},
9092 {"extsw.", XRC(31,986,1), XRB_MASK, PPC64, 0, {RA, RS}},
9093
9094 {"icbiep", XRT(31,991,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}},
9095
9096 {"stvswxl", X(31,997), X_MASK, E6500, 0, {VS, RA0, RB}},
9097
9098 {"icread", X(31,998), XRT_MASK, PPC403|PPC440|PPC476|TITAN, 0, {RA0, RB}},
9099
9100 {"nabso", XO(31,488,1,0), XORB_MASK, M601, 0, {RT, RA}},
9101 {"nabso.", XO(31,488,1,1), XORB_MASK, M601, 0, {RT, RA}},
9102
9103 {"divdo", XO(31,489,1,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
9104 {"divdo.", XO(31,489,1,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
9105
9106 {"divwo", XO(31,491,1,0), XO_MASK, PPC, 0, {RT, RA, RB}},
9107 {"divwo.", XO(31,491,1,1), XO_MASK, PPC, 0, {RT, RA, RB}},
9108
9109 {"stxvb16x", X(31,1004), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
9110
9111 {"trechkpt.", XRC(31,1006,1), XRTRARB_MASK,PPCHTM, 0, {0}},
9112
9113 {"tlbli", X(31,1010), XRTRA_MASK, PPC, TITAN, {RB}},
9114
9115 {"stdcix", X(31,1013), X_MASK, POWER6, 0, {RS, RA0, RB}},
9116
9117 {"dcbz", X(31,1014), XRT_MASK, PPC, 0, {RA0, RB}},
9118 {"dclz", X(31,1014), XRT_MASK, PPC, 0, {RA0, RB}},
9119 {"dcbzl", XOPL(31,1014,1), XRT_MASK, POWER4|E500MC, PPC476, {RA0, RB}},
9120
9121 {"dcbzep", XRT(31,1023,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}},
9122
9123 {"lwz", OP(32), OP_MASK, PPCCOM, PPCVLE, {RT, D, RA0}},
9124 {"l", OP(32), OP_MASK, PWRCOM, PPCVLE, {RT, D, RA0}},
9125
9126 {"lwzu", OP(33), OP_MASK, PPCCOM, PPCVLE, {RT, D, RAL}},
9127 {"lu", OP(33), OP_MASK, PWRCOM, PPCVLE, {RT, D, RA0}},
9128
9129 {"lbz", OP(34), OP_MASK, COM, PPCVLE, {RT, D, RA0}},
9130
9131 {"lbzu", OP(35), OP_MASK, COM, PPCVLE, {RT, D, RAL}},
9132
9133 {"stw", OP(36), OP_MASK, PPCCOM, PPCVLE, {RS, D, RA0}},
9134 {"st", OP(36), OP_MASK, PWRCOM, PPCVLE, {RS, D, RA0}},
9135
9136 {"stwu", OP(37), OP_MASK, PPCCOM, PPCVLE, {RS, D, RAS}},
9137 {"stu", OP(37), OP_MASK, PWRCOM, PPCVLE, {RS, D, RA0}},
9138
9139 {"stb", OP(38), OP_MASK, COM, PPCVLE, {RS, D, RA0}},
9140
9141 {"stbu", OP(39), OP_MASK, COM, PPCVLE, {RS, D, RAS}},
9142
9143 {"lhz", OP(40), OP_MASK, COM, PPCVLE, {RT, D, RA0}},
9144
9145 {"lhzu", OP(41), OP_MASK, COM, PPCVLE, {RT, D, RAL}},
9146
9147 {"lha", OP(42), OP_MASK, COM, PPCVLE, {RT, D, RA0}},
9148
9149 {"lhau", OP(43), OP_MASK, COM, PPCVLE, {RT, D, RAL}},
9150
9151 {"sth", OP(44), OP_MASK, COM, PPCVLE, {RS, D, RA0}},
9152
9153 {"sthu", OP(45), OP_MASK, COM, PPCVLE, {RS, D, RAS}},
9154
9155 {"lmw", OP(46), OP_MASK, PPCCOM, PPCVLE, {RT, D, RAM}},
9156 {"lm", OP(46), OP_MASK, PWRCOM, PPCVLE, {RT, D, RA0}},
9157
9158 {"stmw", OP(47), OP_MASK, PPCCOM, PPCVLE, {RS, D, RA0}},
9159 {"stm", OP(47), OP_MASK, PWRCOM, PPCVLE, {RS, D, RA0}},
9160
9161 {"lfs", OP(48), OP_MASK, COM, PPCEFS|PPCVLE, {FRT, D, RA0}},
9162
9163 {"lfsu", OP(49), OP_MASK, COM, PPCEFS|PPCVLE, {FRT, D, RAS}},
9164
9165 {"lfd", OP(50), OP_MASK, COM, PPCEFS|PPCVLE, {FRT, D, RA0}},
9166
9167 {"lfdu", OP(51), OP_MASK, COM, PPCEFS|PPCVLE, {FRT, D, RAS}},
9168
9169 {"stfs", OP(52), OP_MASK, COM, PPCEFS|PPCVLE, {FRS, D, RA0}},
9170
9171 {"stfsu", OP(53), OP_MASK, COM, PPCEFS|PPCVLE, {FRS, D, RAS}},
9172
9173 {"stfd", OP(54), OP_MASK, COM, PPCEFS|PPCVLE, {FRS, D, RA0}},
9174
9175 {"stfdu", OP(55), OP_MASK, COM, PPCEFS|PPCVLE, {FRS, D, RAS}},
9176
9177 {"lq", OP(56), OP_MASK|Q_MASK, POWER4, PPC476|PPCVLE, {RTQ, DQ, RAQ}},
9178 {"psq_l", OP(56), OP_MASK, PPCPS, PPCVLE, {FRT,PSD,RA,PSW,PSQ}},
9179 {"lfq", OP(56), OP_MASK, POWER2, PPCVLE, {FRT, D, RA0}},
9180
9181 {"lxsd", DSO(57,2), DS_MASK, PPCVSX3, PPCVLE, {VD, DS, RA0}},
9182 {"lxssp", DSO(57,3), DS_MASK, PPCVSX3, PPCVLE, {VD, DS, RA0}},
9183 {"lfdp", OP(57), OP_MASK|Q_MASK, POWER6, POWER7|PPCVLE, {FRTp, DS, RA0}},
9184 {"psq_lu", OP(57), OP_MASK, PPCPS, PPCVLE, {FRT,PSD,RA,PSW,PSQ}},
9185 {"lfqu", OP(57), OP_MASK, POWER2, PPCVLE, {FRT, D, RA0}},
9186
9187 {"ld", DSO(58,0), DS_MASK, PPC64, PPCVLE, {RT, DS, RA0}},
9188 {"ldu", DSO(58,1), DS_MASK, PPC64, PPCVLE, {RT, DS, RAL}},
9189 {"lwa", DSO(58,2), DS_MASK, PPC64, PPCVLE, {RT, DS, RA0}},
9190
9191 {"dadd", XRC(59,2,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
9192 {"dadd.", XRC(59,2,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
9193
9194 {"dqua", ZRC(59,3,0), Z2_MASK, POWER6, PPCVLE, {FRT,FRA,FRB,RMC}},
9195 {"dqua.", ZRC(59,3,1), Z2_MASK, POWER6, PPCVLE, {FRT,FRA,FRB,RMC}},
9196
9197 {"dmxvi8ger4pp",XX3(59,2), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9198 {"xvi8ger4pp", XX3(59,2), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9199 {"dmxvi8ger4", XX3(59,3), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9200 {"xvi8ger4", XX3(59,3), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9201
9202 {"ffmsubs", A(59,4,0), AFRC_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
9203 {"ffmsubs.", A(59,4,1), AFRC_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
9204
9205 {"ffmadds", A(59,5,0), AFRC_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
9206 {"ffmadds.", A(59,5,1), AFRC_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
9207
9208 {"ffnmsubs", A(59,6,0), AFRC_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
9209 {"ffnmsubs.", A(59,6,1), AFRC_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
9210
9211 {"ffnmadds", A(59,7,0), AFRC_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
9212 {"ffnmadds.", A(59,7,1), AFRC_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
9213
9214 {"fdivs", A(59,18,0), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
9215 {"fdivs.", A(59,18,1), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
9216
9217 {"fsubs", A(59,20,0), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
9218 {"fsubs.", A(59,20,1), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
9219
9220 {"fadds", A(59,21,0), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
9221 {"fadds.", A(59,21,1), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
9222
9223 {"fsqrts", A(59,22,0), AFRAFRC_MASK, PPC, TITAN|PPCVLE, {FRT, FRB}},
9224 {"fsqrts.", A(59,22,1), AFRAFRC_MASK, PPC, TITAN|PPCVLE, {FRT, FRB}},
9225
9226 {"fres", A(59,24,0), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
9227 {"fres", A(59,24,0), AFRALFRC_MASK, PPC, POWER7|PPCVLE, {FRT, FRB, A_L}},
9228 {"fres.", A(59,24,1), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
9229 {"fres.", A(59,24,1), AFRALFRC_MASK, PPC, POWER7|PPCVLE, {FRT, FRB, A_L}},
9230
9231 {"fmuls", A(59,25,0), AFRB_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC}},
9232 {"fmuls.", A(59,25,1), AFRB_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC}},
9233
9234 {"frsqrtes", A(59,26,0), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
9235 {"frsqrtes", A(59,26,0), AFRALFRC_MASK, POWER5, POWER7|PPCVLE, {FRT, FRB, A_L}},
9236 {"frsqrtes.", A(59,26,1), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
9237 {"frsqrtes.", A(59,26,1), AFRALFRC_MASK, POWER5, POWER7|PPCVLE, {FRT, FRB, A_L}},
9238
9239 {"fdmadds", A(59,27,0), AFRC_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
9240 {"fdmadds.", A(59,27,1), AFRC_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
9241
9242 {"fmsubs", A(59,28,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
9243 {"fmsubs.", A(59,28,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
9244
9245 {"fmadds", A(59,29,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
9246 {"fmadds.", A(59,29,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
9247
9248 {"fnmsubs", A(59,30,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
9249 {"fnmsubs.", A(59,30,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
9250
9251 {"fnmadds", A(59,31,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
9252 {"fnmadds.", A(59,31,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
9253
9254 {"dmul", XRC(59,34,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
9255 {"dmul.", XRC(59,34,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
9256
9257 {"drrnd", ZRC(59,35,0), Z2_MASK, POWER6, PPCVLE, {FRT, FRA, FRB, RMC}},
9258 {"drrnd.", ZRC(59,35,1), Z2_MASK, POWER6, PPCVLE, {FRT, FRA, FRB, RMC}},
9259
9260 {"dmxvi8gerx4pp", XX3(59,10), XX3GERX_MASK, FUTURE, PPCVLE, {DMR, XA5p, XB6}},
9261 {"dmxvi8gerx4", XX3(59,11), XX3GERX_MASK, FUTURE, PPCVLE, {DMR, XA5p, XB6}},
9262
9263 {"dscli", ZRC(59,66,0), Z_MASK, POWER6, PPCVLE, {FRT, FRA, SH16}},
9264 {"dscli.", ZRC(59,66,1), Z_MASK, POWER6, PPCVLE, {FRT, FRA, SH16}},
9265
9266 {"dquai", ZRC(59,67,0), Z2_MASK, POWER6, PPCVLE, {TE, FRT,FRB,RMC}},
9267 {"dquai.", ZRC(59,67,1), Z2_MASK, POWER6, PPCVLE, {TE, FRT,FRB,RMC}},
9268
9269 {"dmxvf16ger2pp",XX3(59,18), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9270 {"xvf16ger2pp", XX3(59,18), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9271 {"dmxvf16ger2", XX3(59,19), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9272 {"xvf16ger2", XX3(59,19), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9273
9274 {"dscri", ZRC(59,98,0), Z_MASK, POWER6, PPCVLE, {FRT, FRA, SH16}},
9275 {"dscri.", ZRC(59,98,1), Z_MASK, POWER6, PPCVLE, {FRT, FRA, SH16}},
9276
9277 {"drintx", ZRC(59,99,0), Z2_MASK, POWER6, PPCVLE, {R, FRT, FRB, RMC}},
9278 {"drintx.", ZRC(59,99,1), Z2_MASK, POWER6, PPCVLE, {R, FRT, FRB, RMC}},
9279
9280 {"dmxvf32gerpp",XX3(59,26), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9281 {"xvf32gerpp", XX3(59,26), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9282 {"dmxvf32ger", XX3(59,27), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9283 {"xvf32ger", XX3(59,27), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9284
9285 {"dcmpo", X(59,130), X_MASK, POWER6, PPCVLE, {BF, FRA, FRB}},
9286
9287 {"dmxvi4ger8pp",XX3(59,34), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9288 {"xvi4ger8pp", XX3(59,34), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9289 {"dmxvi4ger8", XX3(59,35), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9290 {"xvi4ger8", XX3(59,35), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9291
9292 {"dtstex", X(59,162), X_MASK, POWER6, PPCVLE, {BF, FRA, FRB}},
9293
9294 {"dmxvi16ger2spp",XX3(59,42), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9295 {"xvi16ger2spp", XX3(59,42), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9296 {"dmxvi16ger2s", XX3(59,43), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9297 {"xvi16ger2s", XX3(59,43), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9298
9299 {"dtstdc", Z(59,194), Z_MASK, POWER6, PPCVLE, {BF, FRA, DCM}},
9300
9301 {"dmxvbf16ger2pp",XX3(59,50), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9302 {"xvbf16ger2pp", XX3(59,50), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9303 {"dmxvbf16ger2", XX3(59,51), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9304 {"xvbf16ger2", XX3(59,51), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9305
9306 {"dtstdg", Z(59,226), Z_MASK, POWER6, PPCVLE, {BF, FRA, DGM}},
9307
9308 {"drintn", ZRC(59,227,0), Z2_MASK, POWER6, PPCVLE, {R, FRT, FRB, RMC}},
9309 {"drintn.", ZRC(59,227,1), Z2_MASK, POWER6, PPCVLE, {R, FRT, FRB, RMC}},
9310
9311 {"dmxvf64gerpp",XX3(59,58), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6ap, XB6a}},
9312 {"xvf64gerpp", XX3(59,58), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6ap, XB6a}},
9313 {"dmxvf64ger", XX3(59,59), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6ap, XB6a}},
9314 {"xvf64ger", XX3(59,59), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6ap, XB6a}},
9315
9316 {"dctdp", XRC(59,258,0), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
9317 {"dctdp.", XRC(59,258,1), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
9318
9319 {"dmxvf16gerx2pp", XX3(59,66), XX3GERX_MASK, FUTURE, PPCVLE, {DMR, XA5p, XB6}},
9320 {"dmxvf16gerx2", XX3(59,67), XX3GERX_MASK, FUTURE, PPCVLE, {DMR, XA5p, XB6}},
9321
9322 {"dctfix", XRC(59,290,0), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
9323 {"dctfix.", XRC(59,290,1), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
9324
9325 {"ddedpd", XRC(59,322,0), X_MASK, POWER6, PPCVLE, {SP, FRT, FRB}},
9326 {"ddedpd.", XRC(59,322,1), X_MASK, POWER6, PPCVLE, {SP, FRT, FRB}},
9327
9328 {"dmxvbf16gerx2pp", XX3(59,74), XX3GERX_MASK, FUTURE, PPCVLE, {DMR, XA5p, XB6}},
9329 {"dmxvi16ger2", XX3(59,75), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9330 {"xvi16ger2", XX3(59,75), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9331
9332 {"dmxvf16ger2np", XX3(59,82), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9333 {"xvf16ger2np", XX3(59,82), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9334 {"dmxvf16gerx2np",XX3(59,83), XX3GERX_MASK, FUTURE, PPCVLE, {DMR, XA5p, XB6}},
9335
9336 {"dxex", XRC(59,354,0), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
9337 {"dxex.", XRC(59,354,1), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
9338
9339 {"dmxvf32gernp", XX3(59,90), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9340 {"xvf32gernp", XX3(59,90), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9341 {"dmxvbf16gerx2", XX3(59,91), XX3GERX_MASK, FUTURE, PPCVLE, {DMR, XA5p, XB6}},
9342
9343 {"dmxvi8gerx4spp",XX3(59,98), XX3GERX_MASK, FUTURE, PPCVLE, {DMR, XA5p, XB6}},
9344 {"dmxvi8ger4spp", XX3(59,99), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9345 {"xvi8ger4spp", XX3(59,99), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9346
9347 {"dmxvi16ger2pp", XX3(59,107), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9348 {"xvi16ger2pp", XX3(59,107), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9349
9350 {"dmxvbf16ger2np",XX3(59,114), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9351 {"xvbf16ger2np", XX3(59,114), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9352 {"dmxvbf16gerx2np",XX3(59,115), XX3GERX_MASK, FUTURE, PPCVLE, {DMR, XA5p, XB6}},
9353
9354 {"dmxvf64gernp", XX3(59,122), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6ap, XB6a}},
9355 {"xvf64gernp", XX3(59,122), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6ap, XB6a}},
9356
9357 {"dsub", XRC(59,514,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
9358 {"dsub.", XRC(59,514,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
9359
9360 {"ddiv", XRC(59,546,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
9361 {"ddiv.", XRC(59,546,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
9362
9363 {"dmxvf16ger2pn", XX3(59,146), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9364 {"xvf16ger2pn", XX3(59,146), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9365 {"dmxvf16gerx2pn",XX3(59,147), XX3GERX_MASK, FUTURE, PPCVLE, {DMR, XA5p, XB6}},
9366
9367 {"dmxvf32gerpn",XX3(59,154), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9368 {"xvf32gerpn", XX3(59,154), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9369
9370 {"dcmpu", X(59,642), X_MASK, POWER6, PPCVLE, {BF, FRA, FRB}},
9371
9372 {"dtstsf", X(59,674), X_MASK, POWER6, PPCVLE, {BF, FRA, FRB}},
9373 {"dtstsfi", X(59,675), X_MASK|1<<22,POWER9, PPCVLE, {BF, UIM6, FRB}},
9374
9375 {"dmxvbf16ger2pn",XX3(59,178), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9376 {"xvbf16ger2pn", XX3(59,178), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9377 {"dmxvbf16gerx2pn", XX3(59,179),XX3GERX_MASK, FUTURE, PPCVLE, {DMR, XA5p, XB6}},
9378
9379 {"dmxvf64gerpn",XX3(59,186), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6ap, XB6a}},
9380 {"xvf64gerpn", XX3(59,186), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6ap, XB6a}},
9381
9382 {"drsp", XRC(59,770,0), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
9383 {"drsp.", XRC(59,770,1), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
9384
9385 {"dcffix", XRC(59,802,0), X_MASK|FRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
9386 {"dcffix.", XRC(59,802,1), X_MASK|FRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
9387
9388 {"dmxvf16gerx2nn", XX3(59,202), XX3GERX_MASK, FUTURE, PPCVLE, {DMR, XA5p, XB6}},
9389
9390 {"denbcd", XRC(59,834,0), X_MASK, POWER6, PPCVLE, {S, FRT, FRB}},
9391 {"denbcd.", XRC(59,834,1), X_MASK, POWER6, PPCVLE, {S, FRT, FRB}},
9392
9393 {"dmxvf16ger2nn", XX3(59,210), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9394 {"xvf16ger2nn", XX3(59,210), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9395
9396 {"fcfids", XRC(59,846,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
9397 {"fcfids.", XRC(59,846,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
9398
9399 {"diex", XRC(59,866,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
9400 {"diex.", XRC(59,866,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
9401
9402 {"dmxvf32gernn",XX3(59,218), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9403 {"xvf32gernn", XX3(59,218), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9404
9405 {"dmxvbf16gerx2nn", XX3(59,234),XX3GERX_MASK, FUTURE, PPCVLE, {DMR, XA5p, XB6}},
9406
9407 {"dmxvbf16ger2nn",XX3(59,242), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9408 {"xvbf16ger2nn", XX3(59,242), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
9409
9410 {"fcfidus", XRC(59,974,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
9411 {"fcfidus.", XRC(59,974,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
9412
9413 {"dmxvf64gernn",XX3(59,250), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6ap, XB6a}},
9414 {"xvf64gernn", XX3(59,250), XX3ACC_MASK, POWER10, PPCVLE, {ACC, XA6ap, XB6a}},
9415
9416 {"fcbrts", XRC(59,524,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9417 {"fcbrts.", XRC(59,524,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9418 {"fsinpis", XRC(59,525,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9419 {"fsinpis.", XRC(59,525,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9420 {"fatan2pis", XRC(59,526,0), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
9421 {"fatan2pis.", XRC(59,526,1), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
9422 {"fasinpis", XRC(59,527,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9423 {"fasinpis.", XRC(59,527,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9424 {"fcospis", XRC(59,556,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9425 {"fcospis.", XRC(59,556,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9426 {"ftanpis", XRC(59,557,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9427 {"ftanpis.", XRC(59,557,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9428 {"facospis", XRC(59,558,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9429 {"facospis.", XRC(59,558,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9430 {"fatanpis", XRC(59,559,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9431 {"fatanpis.", XRC(59,559,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9432 {"frsqrts", XRC(59,588,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9433 {"frsqrts.", XRC(59,588,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9434 {"fsins", XRC(59,589,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9435 {"fsins.", XRC(59,589,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9436 {"fatan2s", XRC(59,590,0), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
9437 {"fatan2s.", XRC(59,590,1), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
9438 {"fasins", XRC(59,591,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9439 {"fasins.", XRC(59,591,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9440 {"fcoss", XRC(59,620,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9441 {"fcoss.", XRC(59,620,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9442 {"ftans", XRC(59,621,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9443 {"ftans.", XRC(59,621,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9444 {"facoss", XRC(59,622,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9445 {"facoss.", XRC(59,622,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9446 {"fatans", XRC(59,623,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9447 {"fatans.", XRC(59,623,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9448 {"frecips", XRC(59,652,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9449 {"frecips.", XRC(59,652,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9450 {"fsinhs", XRC(59,653,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9451 {"fsinhs.", XRC(59,653,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9452 {"fhypots", XRC(59,654,0), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
9453 {"fhypots.", XRC(59,654,1), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
9454 {"fasinhs", XRC(59,655,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9455 {"fasinhs.", XRC(59,655,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9456 {"fcoshs", XRC(59,684,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9457 {"fcoshs.", XRC(59,684,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9458 {"ftanhs", XRC(59,685,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9459 {"ftanhs.", XRC(59,685,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9460 {"facoshs", XRC(59,686,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9461 {"facoshs.", XRC(59,686,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9462 {"fatanhs", XRC(59,687,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9463 {"fatanhs.", XRC(59,687,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9464 {"fexp2m1s", XRC(59,780,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9465 {"fexp2m1s.", XRC(59,780,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9466 {"flog2p1s", XRC(59,781,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9467 {"flog2p1s.", XRC(59,781,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9468 {"ctfprs", XRC(59,783,0), X_MASK, SFFS, PPCVLE, {FRT,RB,IT}},
9469 {"ctfprs.", XRC(59,783,1), X_MASK, SFFS, PPCVLE, {FRT,RB,IT}},
9470 {"fexpm1s", XRC(59,812,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9471 {"fexpm1s.", XRC(59,812,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9472 {"flogp1s", XRC(59,813,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9473 {"flogp1s.", XRC(59,813,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9474 {"fexp10m1s", XRC(59,844,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9475 {"fexp10m1s.", XRC(59,844,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9476 {"flog10p1s", XRC(59,845,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9477 {"flog10p1s.", XRC(59,845,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9478 {"fmods", XRC(59,847,0), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
9479 {"fmods.", XRC(59,847,1), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
9480 {"fpowns", XRC(59,876,0), X_MASK, SFFS, PPCVLE, {FRT, FRA, RB}},
9481 {"fpowns.", XRC(59,876,1), X_MASK, SFFS, PPCVLE, {FRT, FRA, RB}},
9482 {"frootns", XRC(59,877,0), X_MASK, SFFS, PPCVLE, {FRT, FRA, RB}},
9483 {"frootns.", XRC(59,877,1), X_MASK, SFFS, PPCVLE, {FRT, FRA, RB}},
9484 {"fexp2s", XRC(59,908,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9485 {"fexp2s.", XRC(59,908,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9486 {"flog2s", XRC(59,909,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9487 {"flog2s.", XRC(59,909,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9488 {"mffprs", XRC(59,910,0), X_MASK, SFFS, PPCVLE, {RT,FRB}},
9489 {"mffprs.", XRC(59,910,1), X_MASK, SFFS, PPCVLE, {RT,FRB}},
9490 {"mtfprs", X(59,911), X_MASK, SFFS, PPCVLE, {FRT,RB}},
9491 {"fexps", XRC(59,940,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9492 {"fexps.", XRC(59,940,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9493 {"flogs", XRC(59,941,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9494 {"flogs.", XRC(59,941,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9495 {"fexp10s", XRC(59,972,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9496 {"fexp10s.", XRC(59,972,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9497 {"flog10s", XRC(59,973,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9498 {"flog10s.", XRC(59,973,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
9499 {"fremainders", XRC(59,975,0), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
9500 {"fremainders.", XRC(59,975,1), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
9501 {"ffadds", A(59,992,0), AFRC_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
9502 {"ffadds.", A(59,992,1), AFRC_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
9503 {"fpowrs", XRC(59,1004,0), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
9504 {"fpowrs.", XRC(59,1004,1), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
9505 {"fpows", XRC(59,1005,0), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
9506 {"fpows.", XRC(59,1005,1), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
9507
9508 {"xsaddsp", XX3(60,0), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
9509 {"xsmaddasp", XX3(60,1), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
9510 {"xxsldwi", XX3(60,2), XX3SHW_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6, SHW}},
9511 {"xscmpeqdp", XX3(60,3), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
9512 {"xsrsqrtesp", XX2(60,10), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
9513 {"xssqrtsp", XX2(60,11), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
9514 {"xxsel", XX4(60,3), XX4_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6, XC6}},
9515 {"xssubsp", XX3(60,8), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
9516 {"xsmaddmsp", XX3(60,9), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
9517 {"xxspltd", XX3(60,10), XX3DM_MASK, PPCVSX, PPCVLE|EXT, {XT6, XAB6, DMEX}},
9518 {"xxmrghd", XX3(60,10), XX3_MASK, PPCVSX, PPCVLE|EXT, {XT6, XA6, XB6}},
9519 {"xxswapd", XX3(60,10)|(2<<8), XX3_MASK, PPCVSX, PPCVLE|EXT, {XT6, XAB6}},
9520 {"xxmrgld", XX3(60,10)|(3<<8), XX3_MASK, PPCVSX, PPCVLE|EXT, {XT6, XA6, XB6}},
9521 {"xxpermdi", XX3(60,10), XX3DM_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6, DM}},
9522 {"xscmpgtdp", XX3(60,11), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
9523 {"xsresp", XX2(60,26), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
9524 {"xsmulsp", XX3(60,16), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
9525 {"xsmsubasp", XX3(60,17), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
9526 {"xxmrghw", XX3(60,18), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9527 {"xscmpgedp", XX3(60,19), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
9528 {"xsdivsp", XX3(60,24), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
9529 {"xsmsubmsp", XX3(60,25), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
9530 {"xxperm", XX3(60,26), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
9531 {"xsadddp", XX3(60,32), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9532 {"xsmaddadp", XX3(60,33), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9533 {"xscmpudp", XX3(60,35), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}},
9534 {"xscvdpuxws", XX2(60,72), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9535 {"xsrdpi", XX2(60,73), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9536 {"xsrsqrtedp", XX2(60,74), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9537 {"xssqrtdp", XX2(60,75), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9538 {"xssubdp", XX3(60,40), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9539 {"xsmaddmdp", XX3(60,41), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9540 {"xscmpodp", XX3(60,43), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}},
9541 {"xscvdpsxws", XX2(60,88), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9542 {"xsrdpiz", XX2(60,89), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9543 {"xsredp", XX2(60,90), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9544 {"xsmuldp", XX3(60,48), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9545 {"xsmsubadp", XX3(60,49), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9546 {"xxmrglw", XX3(60,50), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9547 {"xsrdpip", XX2(60,105), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9548 {"xstsqrtdp", XX2(60,106), XX2BF_MASK, PPCVSX, PPCVLE, {BF, XB6}},
9549 {"xsrdpic", XX2(60,107), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9550 {"xsdivdp", XX3(60,56), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9551 {"xsmsubmdp", XX3(60,57), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9552 {"xxpermr", XX3(60,58), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
9553 {"xscmpexpdp", XX3(60,59), XX3BF_MASK, PPCVSX3, PPCVLE, {BF, XA6, XB6}},
9554 {"xsrdpim", XX2(60,121), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9555 {"xstdivdp", XX3(60,61), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}},
9556 {"xvaddsp", XX3(60,64), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9557 {"xvmaddasp", XX3(60,65), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9558 {"xvcmpeqsp", XX3RC(60,67,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9559 {"xvcmpeqsp.", XX3RC(60,67,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9560 {"xvcvspuxws", XX2(60,136), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9561 {"xvrspi", XX2(60,137), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9562 {"xvrsqrtesp", XX2(60,138), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9563 {"xvsqrtsp", XX2(60,139), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9564 {"xvsubsp", XX3(60,72), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9565 {"xvmaddmsp", XX3(60,73), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9566 {"xvcmpgtsp", XX3RC(60,75,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9567 {"xvcmpgtsp.", XX3RC(60,75,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9568 {"xvcvspsxws", XX2(60,152), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9569 {"xvrspiz", XX2(60,153), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9570 {"xvresp", XX2(60,154), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9571 {"xvmulsp", XX3(60,80), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9572 {"xvmsubasp", XX3(60,81), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9573 {"xxspltw", XX2(60,164), XX2UIM_MASK, PPCVSX, PPCVLE, {XT6, XB6, UIM}},
9574 {"xxextractuw", XX2(60,165), XX2UIM4_MASK, PPCVSX3, PPCVLE, {XT6, XB6, UIMM4}},
9575 {"xvcmpgesp", XX3RC(60,83,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9576 {"xvcmpgesp.", XX3RC(60,83,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9577 {"xvcvuxwsp", XX2(60,168), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9578 {"xvrspip", XX2(60,169), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9579 {"xvtsqrtsp", XX2(60,170), XX2BF_MASK, PPCVSX, PPCVLE, {BF, XB6}},
9580 {"xvrspic", XX2(60,171), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9581 {"xvdivsp", XX3(60,88), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9582 {"xvmsubmsp", XX3(60,89), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9583 {"xxspltib", X(60,360), XX1_MASK|3<<19, PPCVSX3, PPCVLE, {XT6, IMM8}},
9584 {"lxvkq", XVA(60,360,31), XVA_MASK&~1, POWER10, PPCVLE, {XT6, UIM5}},
9585 {"xxinsertw", XX2(60,181), XX2UIM4_MASK, PPCVSX3, PPCVLE, {XT6, XB6, UIMM4}},
9586 {"xvcvsxwsp", XX2(60,184), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9587 {"xvrspim", XX2(60,185), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9588 {"xvtdivsp", XX3(60,93), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}},
9589 {"xvadddp", XX3(60,96), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9590 {"xvmaddadp", XX3(60,97), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9591 {"xvcmpeqdp", XX3RC(60,99,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9592 {"xvcmpeqdp.", XX3RC(60,99,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9593 {"xvcvdpuxws", XX2(60,200), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9594 {"xvrdpi", XX2(60,201), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9595 {"xvrsqrtedp", XX2(60,202), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9596 {"xvsqrtdp", XX2(60,203), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9597 {"xvsubdp", XX3(60,104), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9598 {"xvmaddmdp", XX3(60,105), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9599 {"xvcmpgtdp", XX3RC(60,107,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9600 {"xvcmpgtdp.", XX3RC(60,107,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9601 {"xvcvdpsxws", XX2(60,216), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9602 {"xvrdpiz", XX2(60,217), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9603 {"xvredp", XX2(60,218), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9604 {"xvmuldp", XX3(60,112), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9605 {"xvmsubadp", XX3(60,113), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9606 {"xvcmpgedp", XX3RC(60,115,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9607 {"xvcmpgedp.", XX3RC(60,115,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9608 {"xvcvuxwdp", XX2(60,232), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9609 {"xvrdpip", XX2(60,233), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9610 {"xvtsqrtdp", XX2(60,234), XX2BF_MASK, PPCVSX, PPCVLE, {BF, XB6}},
9611 {"xvrdpic", XX2(60,235), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9612 {"xvdivdp", XX3(60,120), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9613 {"xvmsubmdp", XX3(60,121), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9614 {"xvcvsxwdp", XX2(60,248), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9615 {"xvrdpim", XX2(60,249), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9616 {"xvtdivdp", XX3(60,125), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}},
9617 {"xsmaxcdp", XX3(60,128), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
9618 {"xsnmaddasp", XX3(60,129), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
9619 {"xxland", XX3(60,130), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9620 {"xscvdpsp", XX2(60,265), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9621 {"xscvdpspn", XX2(60,267), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
9622 {"xsmincdp", XX3(60,136), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
9623 {"xsnmaddmsp", XX3(60,137), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
9624 {"xxlandc", XX3(60,138), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9625 {"xsrsp", XX2(60,281), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
9626 {"xsmaxjdp", XX3(60,144), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
9627 {"xsnmsubasp", XX3(60,145), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
9628 {"xxmr", XX3(60,146), XX3_MASK, PPCVSX, PPCVLE|EXT, {XT6, XAB6}},
9629 {"xxlor", XX3(60,146), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9630 {"xscvuxdsp", XX2(60,296), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
9631 {"xststdcsp", XX2(60,298), XX2BFD_MASK, PPCVSX3, PPCVLE, {BF, XB6, DCMX}},
9632 {"xsminjdp", XX3(60,152), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
9633 {"xsnmsubmsp", XX3(60,153), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
9634 {"xxlxor", XX3(60,154), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9635 {"xscvsxdsp", XX2(60,312), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
9636 {"xsmaxdp", XX3(60,160), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9637 {"xsnmaddadp", XX3(60,161), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9638 {"xxlnot", XX3(60,162), XX3_MASK, PPCVSX, PPCVLE|EXT, {XT6, XAB6}},
9639 {"xxlnor", XX3(60,162), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9640 {"xscvdpuxds", XX2(60,328), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9641 {"xscvspdp", XX2(60,329), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9642 {"xscvspdpn", XX2(60,331), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
9643 {"xsmindp", XX3(60,168), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9644 {"xsnmaddmdp", XX3(60,169), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9645 {"xxlorc", XX3(60,170), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
9646 {"xscvdpsxds", XX2(60,344), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9647 {"xsabsdp", XX2(60,345), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9648 {"xsxexpdp", XX2VA(60,347,0),XX2_MASK|1, PPCVSX3, PPCVLE, {RT, XB6}},
9649 {"xsxsigdp", XX2VA(60,347,1),XX2_MASK|1, PPCVSX3, PPCVLE, {RT, XB6}},
9650 {"xscvhpdp", XX2VA(60,347,16),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
9651 {"xscvdphp", XX2VA(60,347,17),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
9652 {"xscpsgndp", XX3(60,176), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9653 {"xsnmsubadp", XX3(60,177), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9654 {"xxlnand", XX3(60,178), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
9655 {"xscvuxddp", XX2(60,360), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9656 {"xsnabsdp", XX2(60,361), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9657 {"xststdcdp", XX2(60,362), XX2BFD_MASK, PPCVSX3, PPCVLE, {BF, XB6, DCMX}},
9658 {"xsnmsubmdp", XX3(60,185), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9659 {"xxleqv", XX3(60,186), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
9660 {"xscvsxddp", XX2(60,376), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9661 {"xsnegdp", XX2(60,377), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9662 {"xvmaxsp", XX3(60,192), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9663 {"xvnmaddasp", XX3(60,193), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9664 {"xvcvspuxds", XX2(60,392), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9665 {"xvcvdpsp", XX2(60,393), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9666 {"xvminsp", XX3(60,200), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9667 {"xvnmaddmsp", XX3(60,201), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9668 {"xvcvspsxds", XX2(60,408), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9669 {"xvabssp", XX2(60,409), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9670 {"xvmovsp", XX3(60,208), XX3_MASK, PPCVSX, PPCVLE|EXT, {XT6, XAB6}},
9671 {"xvcpsgnsp", XX3(60,208), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9672 {"xvnmsubasp", XX3(60,209), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9673 {"xvcvuxdsp", XX2(60,424), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9674 {"xvnabssp", XX2(60,425), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9675 {"xvtstdcsp", XX2(60,426), XX2DCMXS_MASK, PPCVSX3, PPCVLE, {XT6, XB6, DCMXS}},
9676 {"xviexpsp", XX3(60,216), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
9677 {"xvnmsubmsp", XX3(60,217), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9678 {"xvcvsxdsp", XX2(60,440), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9679 {"xvnegsp", XX2(60,441), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9680 {"xvmaxdp", XX3(60,224), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9681 {"xvnmaddadp", XX3(60,225), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9682 {"dmxxextfdmr512",XX3(60,226), XX3DMR_MASK, FUTURE, PPCVLE, {XA5p, XB5p, DMR, P1}},
9683 {"xvcvdpuxds", XX2(60,456), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9684 {"xvcvspdp", XX2(60,457), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9685 {"xxgenpcvbm", X(60,916), XX1_MASK, POWER10, PPCVLE, {XT6, VB, UIMM}},
9686 {"xxgenpcvhm", X(60,917), XX1_MASK, POWER10, PPCVLE, {XT6, VB, UIMM}},
9687 {"xsiexpdp", X(60,918), XX1_MASK, PPCVSX3, PPCVLE, {XT6, RA, RB}},
9688 {"xvmindp", XX3(60,232), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9689 {"xvnmaddmdp", XX3(60,233), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9690 {"dmxxinstdmr512",XX3(60,234), XX3DMR_MASK, FUTURE, PPCVLE, {DMR, XA5p, XB5p,P1}},
9691 {"xvcvdpsxds", XX2(60,472), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9692 {"xvabsdp", XX2(60,473), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9693 {"xxgenpcvwm", X(60,948), XX1_MASK, POWER10, PPCVLE, {XT6, VB, UIMM}},
9694 {"xxgenpcvdm", X(60,949), XX1_MASK, POWER10, PPCVLE, {XT6, VB, UIMM}},
9695 {"xvxexpdp", XX2VA(60,475,0),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
9696 {"xvxsigdp", XX2VA(60,475,1),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
9697 {"xvtlsbb", XX2VA(60,475,2),XX2BF_MASK, POWER10, PPCVLE, {BF, XB6}},
9698 {"xxbrh", XX2VA(60,475,7),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
9699 {"xvxexpsp", XX2VA(60,475,8),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
9700 {"xvxsigsp", XX2VA(60,475,9),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
9701 {"xxbrw", XX2VA(60,475,15),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
9702 {"xvcvbf16spn", XX2VA(60,475,16),XX2_MASK, PPCVSX4, PPCVLE, {XT6, XB6}},
9703 {"xvcvspbf16", XX2VA(60,475,17),XX2_MASK, PPCVSX4, PPCVLE, {XT6, XB6}},
9704 {"xxbrd", XX2VA(60,475,23),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
9705 {"xvcvhpsp", XX2VA(60,475,24),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
9706 {"xvcvsphp", XX2VA(60,475,25),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
9707 {"xxbrq", XX2VA(60,475,31),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
9708 {"xvmovdp", XX3(60,240), XX3_MASK, PPCVSX, PPCVLE|EXT, {XT6, XAB6}},
9709 {"xvcpsgndp", XX3(60,240), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9710 {"xvnmsubadp", XX3(60,241), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9711 {"dmxxextfdmr256",XX2(60,484), XX2DMR_MASK, FUTURE, PPCVLE, {XB5p, DMR, P2}},
9712 {"dmxxinstdmr256",XX2(60,485), XX2DMR_MASK, FUTURE, PPCVLE, {DMR, XB5p, P2}},
9713 {"xvcvuxddp", XX2(60,488), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9714 {"xvnabsdp", XX2(60,489), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9715 {"xvtstdcdp", XX2(60,490), XX2DCMXS_MASK, PPCVSX3, PPCVLE, {XT6, XB6, DCMXS}},
9716 {"xviexpdp", XX3(60,248), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
9717 {"xvnmsubmdp", XX3(60,249), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
9718 {"xvcvsxddp", XX2(60,504), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9719 {"xvnegdp", XX2(60,505), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
9720
9721 {"psq_st", OP(60), OP_MASK, PPCPS, PPCVLE, {FRS,PSD,RA,PSW,PSQ}},
9722 {"stfq", OP(60), OP_MASK, POWER2, PPCVLE, {FRS, D, RA}},
9723
9724 {"lxv", DQX(61,1), DQX_MASK, PPCVSX3, PPCVLE, {XTQ6, DQ, RA0}},
9725 {"stxv", DQX(61,5), DQX_MASK, PPCVSX3, PPCVLE, {XSQ6, DQ, RA0}},
9726 {"stxsd", DSO(61,2), DS_MASK, PPCVSX3, PPCVLE, {VS, DS, RA0}},
9727 {"stxssp", DSO(61,3), DS_MASK, PPCVSX3, PPCVLE, {VS, DS, RA0}},
9728 {"stfdp", OP(61), OP_MASK|Q_MASK, POWER6, POWER7|PPCVLE, {FRSp, DS, RA0}},
9729 {"psq_stu", OP(61), OP_MASK, PPCPS, PPCVLE, {FRS,PSD,RA,PSW,PSQ}},
9730 {"stfqu", OP(61), OP_MASK, POWER2, PPCVLE, {FRS, D, RA}},
9731
9732 {"std", DSO(62,0), DS_MASK, PPC64, PPCVLE, {RS, DS, RA0}},
9733 {"stdu", DSO(62,1), DS_MASK, PPC64, PPCVLE, {RS, DS, RAS}},
9734 {"stq", DSO(62,2), DS_MASK|Q_MASK, POWER4, PPC476|PPCVLE, {RSQ, DS, RA0}},
9735
9736 {"fcmpu", X(63,0), XBF_MASK, COM, PPCEFS|PPCVLE, {BF, FRA, FRB}},
9737
9738 {"daddq", XRC(63,2,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
9739 {"daddq.", XRC(63,2,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
9740
9741 {"dquaq", ZRC(63,3,0), Z2_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp, RMC}},
9742 {"dquaq.", ZRC(63,3,1), Z2_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp, RMC}},
9743
9744 {"xsaddqp", XRC(63,4,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
9745 {"xsaddqpo", XRC(63,4,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
9746
9747 {"xsrqpi", ZRC(63,5,0), Z2_MASK, PPCVSX3, PPCVLE, {R, VD, VB, RMC}},
9748 {"xsrqpix", ZRC(63,5,1), Z2_MASK, PPCVSX3, PPCVLE, {R, VD, VB, RMC}},
9749
9750 {"fcpsgn", XRC(63,8,0), X_MASK, POWER6|PPCA2|PPC476, PPCVLE, {FRT, FRA, FRB}},
9751 {"fcpsgn.", XRC(63,8,1), X_MASK, POWER6|PPCA2|PPC476, PPCVLE, {FRT, FRA, FRB}},
9752
9753 {"frsp", XRC(63,12,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
9754 {"frsp.", XRC(63,12,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
9755
9756 {"fctiw", XRC(63,14,0), XRA_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRB}},
9757 {"fcir", XRC(63,14,0), XRA_MASK, PWR2COM, PPCVLE, {FRT, FRB}},
9758 {"fctiw.", XRC(63,14,1), XRA_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRB}},
9759 {"fcir.", XRC(63,14,1), XRA_MASK, PWR2COM, PPCVLE, {FRT, FRB}},
9760
9761 {"fctiwz", XRC(63,15,0), XRA_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRB}},
9762 {"fcirz", XRC(63,15,0), XRA_MASK, PWR2COM, PPCVLE, {FRT, FRB}},
9763 {"fctiwz.", XRC(63,15,1), XRA_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRB}},
9764 {"fcirz.", XRC(63,15,1), XRA_MASK, PWR2COM, PPCVLE, {FRT, FRB}},
9765
9766 {"fminnum08", MMXFMM(63,16,0,0), MMXFMM_MASK, SFFS, PPCVLE, {FRT,FRA,FRB}},
9767 {"fmin19", MMXFMM(63,16,1,0), MMXFMM_MASK, SFFS, PPCVLE, {FRT,FRA,FRB}},
9768 {"fminnum19", MMXFMM(63,16,2,0), MMXFMM_MASK, SFFS, PPCVLE, {FRT,FRA,FRB}},
9769 {"fminc", MMXFMM(63,16,3,0), MMXFMM_MASK, SFFS, PPCVLE, {FRT,FRA,FRB}},
9770 {"fminmagnum08", MMXFMM(63,16,4,0), MMXFMM_MASK, SFFS, PPCVLE, {FRT,FRA,FRB}},
9771 {"fminmag19", MMXFMM(63,16,5,0), MMXFMM_MASK, SFFS, PPCVLE, {FRT,FRA,FRB}},
9772 {"fminmagnum19", MMXFMM(63,16,6,0), MMXFMM_MASK, SFFS, PPCVLE, {FRT,FRA,FRB}},
9773 {"fminmagc", MMXFMM(63,16,7,0), MMXFMM_MASK, SFFS, PPCVLE, {FRT,FRA,FRB}},
9774 {"fmaxnum08", MMXFMM(63,16,8,0), MMXFMM_MASK, SFFS, PPCVLE, {FRT,FRA,FRB}},
9775 {"fmax19", MMXFMM(63,16,9,0), MMXFMM_MASK, SFFS, PPCVLE, {FRT,FRA,FRB}},
9776 {"fmaxnum19", MMXFMM(63,16,10,0), MMXFMM_MASK, SFFS, PPCVLE, {FRT,FRA,FRB}},
9777 {"fmaxc", MMXFMM(63,16,11,0), MMXFMM_MASK, SFFS, PPCVLE, {FRT,FRA,FRB}},
9778 {"fmaxmagnum08", MMXFMM(63,16,12,0), MMXFMM_MASK, SFFS, PPCVLE, {FRT,FRA,FRB}},
9779 {"fmaxmag19", MMXFMM(63,16,13,0), MMXFMM_MASK, SFFS, PPCVLE, {FRT,FRA,FRB}},
9780 {"fmaxmagnum19", MMXFMM(63,16,14,0), MMXFMM_MASK, SFFS, PPCVLE, {FRT,FRA,FRB}},
9781 {"fmaxmagc", MMXFMM(63,16,15,0), MMXFMM_MASK, SFFS, PPCVLE, {FRT,FRA,FRB}},
9782 {"fminmax", MM(63,16,0), MM_MASK, SFFS, PPCVLE, {FRT,FRA,FRB,FMM}},
9783 {"fminmax.", MM(63,16,1), MM_MASK, SFFS, PPCVLE, {FRT,FRA,FRB,FMM}},
9784
9785 {"fdiv", A(63,18,0), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
9786 {"fd", A(63,18,0), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
9787 {"fdiv.", A(63,18,1), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
9788 {"fd.", A(63,18,1), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
9789
9790 {"fsub", A(63,20,0), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
9791 {"fs", A(63,20,0), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
9792 {"fsub.", A(63,20,1), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
9793 {"fs.", A(63,20,1), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
9794
9795 {"fadd", A(63,21,0), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
9796 {"fa", A(63,21,0), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
9797 {"fadd.", A(63,21,1), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
9798 {"fa.", A(63,21,1), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
9799
9800 {"fsqrt", A(63,22,0), AFRAFRC_MASK, PPCPWR2, TITAN|PPCVLE, {FRT, FRB}},
9801 {"fsqrt.", A(63,22,1), AFRAFRC_MASK, PPCPWR2, TITAN|PPCVLE, {FRT, FRB}},
9802
9803 {"fsel", A(63,23,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
9804 {"fsel.", A(63,23,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
9805
9806 {"fre", A(63,24,0), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
9807 {"fre", A(63,24,0), AFRALFRC_MASK, POWER5, POWER7|PPCVLE, {FRT, FRB, A_L}},
9808 {"fre.", A(63,24,1), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
9809 {"fre.", A(63,24,1), AFRALFRC_MASK, POWER5, POWER7|PPCVLE, {FRT, FRB, A_L}},
9810
9811 {"fmul", A(63,25,0), AFRB_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC}},
9812 {"fm", A(63,25,0), AFRB_MASK, PWRCOM, PPCVLE|PPCVLE, {FRT, FRA, FRC}},
9813 {"fmul.", A(63,25,1), AFRB_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC}},
9814 {"fm.", A(63,25,1), AFRB_MASK, PWRCOM, PPCVLE|PPCVLE, {FRT, FRA, FRC}},
9815
9816 {"frsqrte", A(63,26,0), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
9817 {"frsqrte", A(63,26,0), AFRALFRC_MASK, PPC, POWER7|PPCVLE, {FRT, FRB, A_L}},
9818 {"frsqrte.", A(63,26,1), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
9819 {"frsqrte.", A(63,26,1), AFRALFRC_MASK, PPC, POWER7|PPCVLE, {FRT, FRB, A_L}},
9820
9821 {"fmsub", A(63,28,0), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
9822 {"fms", A(63,28,0), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
9823 {"fmsub.", A(63,28,1), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
9824 {"fms.", A(63,28,1), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
9825
9826 {"fmadd", A(63,29,0), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
9827 {"fma", A(63,29,0), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
9828 {"fmadd.", A(63,29,1), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
9829 {"fma.", A(63,29,1), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
9830
9831 {"fnmsub", A(63,30,0), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
9832 {"fnms", A(63,30,0), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
9833 {"fnmsub.", A(63,30,1), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
9834 {"fnms.", A(63,30,1), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
9835
9836 {"fnmadd", A(63,31,0), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
9837 {"fnma", A(63,31,0), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
9838 {"fnmadd.", A(63,31,1), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
9839 {"fnma.", A(63,31,1), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
9840
9841 {"fcmpo", X(63,32), XBF_MASK, COM, PPCEFS|PPCVLE, {BF, FRA, FRB}},
9842
9843 {"dmulq", XRC(63,34,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
9844 {"dmulq.", XRC(63,34,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
9845
9846 {"drrndq", ZRC(63,35,0), Z2_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRA, FRBp, RMC}},
9847 {"drrndq.", ZRC(63,35,1), Z2_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRA, FRBp, RMC}},
9848
9849 {"xsmulqp", XRC(63,36,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
9850 {"xsmulqpo", XRC(63,36,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
9851
9852 {"xsrqpxp", Z(63,37), Z2_MASK, PPCVSX3, PPCVLE, {R, VD, VB, RMC}},
9853
9854 {"mtfsb1", XRC(63,38,0), XRARB_MASK, COM, PPCVLE, {BTF}},
9855 {"mtfsb1.", XRC(63,38,1), XRARB_MASK, COM, PPCVLE, {BTF}},
9856
9857 {"fneg", XRC(63,40,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
9858 {"fneg.", XRC(63,40,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
9859
9860 {"mcrfs", X(63,64), XRB_MASK|(3<<21)|(3<<16), COM, PPCVLE, {BF, BFA}},
9861
9862 {"dscliq", ZRC(63,66,0), Z_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, SH16}},
9863 {"dscliq.", ZRC(63,66,1), Z_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, SH16}},
9864
9865 {"dquaiq", ZRC(63,67,0), Z2_MASK|Q_MASK, POWER6, PPCVLE, {TE, FRTp, FRBp, RMC}},
9866 {"dquaiq.", ZRC(63,67,1), Z2_MASK|Q_MASK, POWER6, PPCVLE, {TE, FRTp, FRBp, RMC}},
9867
9868 {"xscmpeqqp", X(63,68), X_MASK, POWER10, PPCVLE, {VD, VA, VB}},
9869
9870 {"mtfsb0", XRC(63,70,0), XRARB_MASK, COM, PPCVLE, {BTF}},
9871 {"mtfsb0.", XRC(63,70,1), XRARB_MASK, COM, PPCVLE, {BTF}},
9872
9873 {"fmr", XRC(63,72,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
9874 {"fmr.", XRC(63,72,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
9875
9876 {"dscriq", ZRC(63,98,0), Z_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, SH16}},
9877 {"dscriq.", ZRC(63,98,1), Z_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, SH16}},
9878
9879 {"drintxq", ZRC(63,99,0), Z2_MASK|Q_MASK, POWER6, PPCVLE, {R, FRTp, FRBp, RMC}},
9880 {"drintxq.", ZRC(63,99,1), Z2_MASK|Q_MASK, POWER6, PPCVLE, {R, FRTp, FRBp, RMC}},
9881
9882 {"xscpsgnqp", X(63,100), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
9883
9884 {"ftdiv", X(63,128), XBF_MASK, POWER7, PPCVLE, {BF, FRA, FRB}},
9885
9886 {"dcmpoq", X(63,130), X_MASK, POWER6, PPCVLE, {BF, FRAp, FRBp}},
9887
9888 {"xscmpoqp", X(63,132), XBF_MASK, PPCVSX3, PPCVLE, {BF, VA, VB}},
9889
9890 {"mtfsfi", XRC(63,134,0), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCVLE, {BFF, U, W}},
9891 {"mtfsfi", XRC(63,134,0), XRA_MASK|(3<<21)|(1<<11), COM, POWER6|PPCA2|PPC476|PPCVLE, {BFF, U}},
9892 {"mtfsfi.", XRC(63,134,1), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCVLE, {BFF, U, W}},
9893 {"mtfsfi.", XRC(63,134,1), XRA_MASK|(3<<21)|(1<<11), COM, POWER6|PPCA2|PPC476|PPCVLE, {BFF, U}},
9894
9895 {"fnabs", XRC(63,136,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
9896 {"fnabs.", XRC(63,136,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
9897
9898 {"fctiwu", XRC(63,142,0), XRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
9899 {"fctiwu.", XRC(63,142,1), XRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
9900 {"fctiwuz", XRC(63,143,0), XRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
9901 {"fctiwuz.", XRC(63,143,1), XRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
9902
9903 {"ftsqrt", X(63,160), XBF_MASK|FRA_MASK, POWER7, PPCVLE, {BF, FRB}},
9904
9905 {"dtstexq", X(63,162), X_MASK, POWER6, PPCVLE, {BF, FRAp, FRBp}},
9906
9907 {"xscmpexpqp", X(63,164), XBF_MASK, PPCVSX3, PPCVLE, {BF, VA, VB}},
9908
9909 {"dtstdcq", Z(63,194), Z_MASK, POWER6, PPCVLE, {BF, FRAp, DCM}},
9910
9911 {"xscmpgeqp", X(63,196), X_MASK, POWER10, PPCVLE, {VD, VA, VB}},
9912
9913 {"dtstdgq", Z(63,226), Z_MASK, POWER6, PPCVLE, {BF, FRAp, DGM}},
9914
9915 {"drintnq", ZRC(63,227,0), Z2_MASK|Q_MASK, POWER6, PPCVLE, {R, FRTp, FRBp, RMC}},
9916 {"drintnq.", ZRC(63,227,1), Z2_MASK|Q_MASK, POWER6, PPCVLE, {R, FRTp, FRBp, RMC}},
9917
9918 {"xscmpgtqp", X(63,228), X_MASK, POWER10, PPCVLE, {VD, VA, VB}},
9919
9920 {"dctqpq", XRC(63,258,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRB}},
9921 {"dctqpq.", XRC(63,258,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRB}},
9922
9923 {"fabs", XRC(63,264,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
9924 {"fabs.", XRC(63,264,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
9925
9926 {"cffpr", XO(63,270,0,0), XO_MASK, SFFS, PPCVLE, {RT,FRB,CVM,IT}},
9927 {"cffpr.", XO(63,270,0,1), XO_MASK, SFFS, PPCVLE, {RT,FRB,CVM,IT}},
9928
9929 {"dctfixq", XRC(63,290,0), X_MASK, POWER6, PPCVLE, {FRT, FRBp}},
9930 {"dctfixq.", XRC(63,290,1), X_MASK, POWER6, PPCVLE, {FRT, FRBp}},
9931
9932 {"ddedpdq", XRC(63,322,0), X_MASK|Q_MASK, POWER6, PPCVLE, {SP, FRTp, FRBp}},
9933 {"ddedpdq.", XRC(63,322,1), X_MASK|Q_MASK, POWER6, PPCVLE, {SP, FRTp, FRBp}},
9934
9935 {"dxexq", XRC(63,354,0), X_MASK, POWER6, PPCVLE, {FRT, FRBp}},
9936 {"dxexq.", XRC(63,354,1), X_MASK, POWER6, PPCVLE, {FRT, FRBp}},
9937
9938 {"xsmaddqp", XRC(63,388,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
9939 {"xsmaddqpo", XRC(63,388,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
9940
9941 {"frin", XRC(63,392,0), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
9942 {"frin.", XRC(63,392,1), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
9943
9944 {"xsmsubqp", XRC(63,420,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
9945 {"xsmsubqpo", XRC(63,420,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
9946
9947 {"friz", XRC(63,424,0), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
9948 {"friz.", XRC(63,424,1), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
9949
9950 {"xsnmaddqp", XRC(63,452,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
9951 {"xsnmaddqpo", XRC(63,452,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
9952
9953 {"frip", XRC(63,456,0), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
9954 {"frip.", XRC(63,456,1), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
9955
9956 {"xsnmsubqp", XRC(63,484,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
9957 {"xsnmsubqpo", XRC(63,484,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
9958
9959 {"frim", XRC(63,488,0), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
9960 {"frim.", XRC(63,488,1), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
9961
9962 {"dsubq", XRC(63,514,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
9963 {"dsubq.", XRC(63,514,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
9964
9965 {"xssubqp", XRC(63,516,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
9966 {"xssubqpo", XRC(63,516,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
9967
9968 {"ddivq", XRC(63,546,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
9969 {"ddivq.", XRC(63,546,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
9970
9971 {"xsdivqp", XRC(63,548,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
9972 {"xsdivqpo", XRC(63,548,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
9973
9974 {"mffs", XRC(63,583,0), XRARB_MASK, COM, PPCEFS|PPCVLE, {FRT}},
9975 {"mffs.", XRC(63,583,1), XRARB_MASK, COM, PPCEFS|PPCVLE, {FRT}},
9976
9977 {"mffsce", XMMF(63,583,0,1), XMMF_MASK|RB_MASK, POWER9, PPCVLE, {FRT}},
9978 {"mffscdrn", XMMF(63,583,2,4), XMMF_MASK, POWER9, PPCVLE, {FRT, FRB}},
9979 {"mffscdrni", XMMF(63,583,2,5), XMMF_MASK|(3<<14), POWER9, PPCVLE, {FRT, DRM}},
9980 {"mffscrn", XMMF(63,583,2,6), XMMF_MASK, POWER9, PPCVLE, {FRT, FRB}},
9981 {"mffscrni", XMMF(63,583,2,7), XMMF_MASK|(7<<13), POWER9, PPCVLE, {FRT, RM}},
9982 {"mffsl", XMMF(63,583,3,0), XMMF_MASK|RB_MASK, POWER9, PPCVLE, {FRT}},
9983
9984 {"dcmpuq", X(63,642), X_MASK, POWER6, PPCVLE, {BF, FRAp, FRBp}},
9985
9986 {"xscmpuqp", X(63,644), XBF_MASK, PPCVSX3, PPCVLE, {BF, VA, VB}},
9987
9988 {"dtstsfq", X(63,674), X_MASK, POWER6, PPCVLE, {BF, FRA, FRBp}},
9989 {"dtstsfiq", X(63,675), X_MASK|1<<22,POWER9, PPCVLE, {BF, UIM6, FRBp}},
9990
9991 {"xsmaxcqp", X(63,676), X_MASK, POWER10, PPCVLE, {VD, VA, VB}},
9992
9993 {"xststdcqp", X(63,708), X_MASK, PPCVSX3, PPCVLE, {BF, VB, DCMX}},
9994
9995 {"mtfsf", XFL(63,711,0), XFL_MASK, POWER6|PPCA2|PPC476, PPCVLE, {FLM, FRB, XFL_L, W}},
9996 {"mtfsf", XFL(63,711,0), XFL_MASK, COM, POWER6|PPCA2|PPC476|PPCEFS|PPCVLE, {FLM, FRB}},
9997 {"mtfsf.", XFL(63,711,1), XFL_MASK, POWER6|PPCA2|PPC476, PPCVLE, {FLM, FRB, XFL_L, W}},
9998 {"mtfsf.", XFL(63,711,1), XFL_MASK, COM, POWER6|PPCA2|PPC476|PPCEFS|PPCVLE, {FLM, FRB}},
9999
10000 {"xsmincqp", X(63,740), X_MASK, POWER10, PPCVLE, {VD, VA, VB}},
10001
10002 {"drdpq", XRC(63,770,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRBp}},
10003 {"drdpq.", XRC(63,770,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRBp}},
10004
10005 {"dcffixq", XRC(63,802,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRB}},
10006 {"dcffixq.", XRC(63,802,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRB}},
10007
10008 {"xsabsqp", XVA(63,804,0), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
10009 {"xsxexpqp", XVA(63,804,2), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
10010 {"xsnabsqp", XVA(63,804,8), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
10011 {"xsnegqp", XVA(63,804,16), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
10012 {"xsxsigqp", XVA(63,804,18), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
10013 {"xssqrtqp", XVARC(63,804,27,0), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
10014 {"xssqrtqpo", XVARC(63,804,27,1), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
10015
10016 {"fctid", XRC(63,814,0), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
10017 {"fctid", XRC(63,814,0), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
10018 {"fctid.", XRC(63,814,1), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
10019 {"fctid.", XRC(63,814,1), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
10020
10021 {"fctidz", XRC(63,815,0), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
10022 {"fctidz", XRC(63,815,0), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
10023 {"fctidz.", XRC(63,815,1), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
10024 {"fctidz.", XRC(63,815,1), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
10025
10026 {"denbcdq", XRC(63,834,0), X_MASK|Q_MASK, POWER6, PPCVLE, {S, FRTp, FRBp}},
10027 {"denbcdq.", XRC(63,834,1), X_MASK|Q_MASK, POWER6, PPCVLE, {S, FRTp, FRBp}},
10028
10029 {"xscvqpuqz", XVA(63,836,0), XVA_MASK, POWER10, PPCVLE, {VD, VB}},
10030 {"xscvqpuwz", XVA(63,836,1), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
10031 {"xscvudqp", XVA(63,836,2), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
10032 {"xscvuqqp", XVA(63,836,3), XVA_MASK, POWER10, PPCVLE, {VD, VB}},
10033 {"xscvqpsqz", XVA(63,836,8), XVA_MASK, POWER10, PPCVLE, {VD, VB}},
10034 {"xscvqpswz", XVA(63,836,9), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
10035 {"xscvsdqp", XVA(63,836,10), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
10036 {"xscvsqqp", XVA(63,836,11), XVA_MASK, POWER10, PPCVLE, {VD, VB}},
10037 {"xscvqpudz", XVA(63,836,17), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
10038 {"xscvqpdp", XVARC(63,836,20,0), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
10039 {"xscvqpdpo", XVARC(63,836,20,1), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
10040 {"xscvdpqp", XVA(63,836,22), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
10041 {"xscvqpsdz", XVA(63,836,25), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
10042
10043 {"fmrgow", X(63,838), X_MASK, PPCVSX2, PPCVLE, {FRT, FRA, FRB}},
10044
10045 {"fcfid", XRC(63,846,0), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
10046 {"fcfid", XRC(63,846,0), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
10047 {"fcfid.", XRC(63,846,1), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
10048 {"fcfid.", XRC(63,846,1), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
10049
10050 {"diexq", XRC(63,866,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRA, FRBp}},
10051 {"diexq.", XRC(63,866,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRA, FRBp}},
10052
10053 {"xsiexpqp", X(63,868), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
10054
10055 {"mffpr", XRC(63,910,0), X_MASK, SFFS, PPCVLE, {RT,FRB}},
10056 {"mffpr.", XRC(63,910,1), X_MASK, SFFS, PPCVLE, {RT,FRB}},
10057 {"mtfpr", X(63,911), X_MASK, SFFS, PPCVLE, {FRT,RB}},
10058
10059 {"fctidu", XRC(63,942,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
10060 {"fctidu.", XRC(63,942,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
10061
10062 {"fctiduz", XRC(63,943,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
10063 {"fctiduz.", XRC(63,943,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
10064
10065 {"fmrgew", X(63,966), X_MASK, PPCVSX2, PPCVLE, {FRT, FRA, FRB}},
10066
10067 {"fcfidu", XRC(63,974,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
10068 {"fcfidu.", XRC(63,974,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
10069
10070 {"dcffixqq", XVA(63,994,0), XVA_MASK, POWER10, PPCVLE, {FRTp, VB}},
10071 {"dctfixqq", XVA(63,994,1), XVA_MASK, POWER10, PPCVLE, {VD, FRBp}},
10072
10073 {"fcbrt", XRC(63,524,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10074 {"fcbrt.", XRC(63,524,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10075 {"fsinpi", XRC(63,525,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10076 {"fsinpi.", XRC(63,525,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10077 {"fatan2pi", XRC(63,526,0), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
10078 {"fatan2pi.", XRC(63,526,1), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
10079 {"fasinpi", XRC(63,527,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10080 {"fasinpi.", XRC(63,527,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10081 {"fcospi", XRC(63,556,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10082 {"fcospi.", XRC(63,556,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10083 {"ftanpi", XRC(63,557,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10084 {"ftanpi.", XRC(63,557,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10085 {"facospi", XRC(63,558,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10086 {"facospi.", XRC(63,558,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10087 {"fatanpi", XRC(63,559,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10088 {"fatanpi.", XRC(63,559,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10089 {"frsqrt", XRC(63,588,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10090 {"frsqrt.", XRC(63,588,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10091 {"fsin", XRC(63,589,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10092 {"fsin.", XRC(63,589,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10093 {"fatan2", XRC(63,590,0), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
10094 {"fatan2.", XRC(63,590,1), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
10095 {"fasin", XRC(63,591,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10096 {"fasin.", XRC(63,591,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10097 {"fcos", XRC(63,620,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10098 {"fcos.", XRC(63,620,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10099 {"ftan", XRC(63,621,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10100 {"ftan.", XRC(63,621,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10101 {"facos", XRC(63,622,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10102 {"facos.", XRC(63,622,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10103 {"fatan", XRC(63,623,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10104 {"fatan.", XRC(63,623,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10105 {"frecip", XRC(63,652,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10106 {"frecip.", XRC(63,652,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10107 {"fsinh", XRC(63,653,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10108 {"fsinh.", XRC(63,653,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10109 {"fhypot", XRC(63,654,0), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
10110 {"fhypot.", XRC(63,654,1), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
10111 {"fasinh", XRC(63,655,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10112 {"fasinh.", XRC(63,655,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10113 {"fcosh", XRC(63,684,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10114 {"fcosh.", XRC(63,684,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10115 {"ftanh", XRC(63,685,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10116 {"ftanh.", XRC(63,685,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10117 {"facosh", XRC(63,686,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10118 {"facosh.", XRC(63,686,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10119 {"fatanh", XRC(63,687,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10120 {"fatanh.", XRC(63,687,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10121 {"fexp2m1", XRC(63,780,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10122 {"fexp2m1.", XRC(63,780,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10123 {"flog2p1", XRC(63,781,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10124 {"flog2p1.", XRC(63,781,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10125 {"cffpro", XO(63,782,1,0), XO_MASK, SFFS, PPCVLE, {RT,FRB,CVM,IT}},
10126 {"cffpro.", XO(63,782,1,1), XO_MASK, SFFS, PPCVLE, {RT,FRB,CVM,IT}},
10127 {"ctfpr", XRC(63,783,0), X_MASK, SFFS, PPCVLE, {FRT,RB,IT}},
10128 {"ctfpr.", XRC(63,783,1), X_MASK, SFFS, PPCVLE, {FRT,RB,IT}},
10129 {"fexpm1", XRC(63,812,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10130 {"fexpm1.", XRC(63,812,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10131 {"flogp1", XRC(63,813,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10132 {"flogp1.", XRC(63,813,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10133 {"fexp10m1", XRC(63,844,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10134 {"fexp10m1.", XRC(63,844,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10135 {"flog10p1", XRC(63,845,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10136 {"flog10p1.", XRC(63,845,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10137 {"fmod", XRC(63,847,0), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
10138 {"fmod.", XRC(63,847,1), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
10139 {"fpown", XRC(63,876,0), X_MASK, SFFS, PPCVLE, {FRT, FRA, RB}},
10140 {"fpown.", XRC(63,876,1), X_MASK, SFFS, PPCVLE, {FRT, FRA, RB}},
10141 {"frootn", XRC(63,877,0), X_MASK, SFFS, PPCVLE, {FRT, FRA, RB}},
10142 {"frootn.", XRC(63,877,1), X_MASK, SFFS, PPCVLE, {FRT, FRA, RB}},
10143 {"fexp2", XRC(63,908,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10144 {"fexp2.", XRC(63,908,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10145 {"flog2", XRC(63,909,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10146 {"flog2.", XRC(63,909,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10147 {"fexp", XRC(63,940,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10148 {"fexp.", XRC(63,940,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10149 {"flog", XRC(63,941,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10150 {"flog.", XRC(63,941,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10151 {"fexp10", XRC(63,972,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10152 {"fexp10.", XRC(63,972,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10153 {"flog10", XRC(63,973,0), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10154 {"flog10.", XRC(63,973,1), X_MASK, SFFS, PPCVLE, {FRT, FRB}},
10155 {"fremainder", XRC(63,975,0), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
10156 {"fremainder.", XRC(63,975,1), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
10157 {"fpowr", XRC(63,1004,0), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
10158 {"fpowr.", XRC(63,1004,1), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
10159 {"fpow", XRC(63,1005,0), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
10160 {"fpow.", XRC(63,1005,1), X_MASK, SFFS, PPCVLE, {FRT, FRA, FRB}},
10161 };
10162
10163 const unsigned int powerpc_num_opcodes = ARRAY_SIZE (powerpc_opcodes);
10164 \f
10165 /* The opcode table for 8-byte prefix instructions.
10166
10167 The format of this opcode table is the same as the main opcode table. */
10168
10169 const struct powerpc_opcode prefix_opcodes[] = {
10170 {"pnop", PMRR, PREFIX_MASK, POWER10, 0, {0}},
10171 {"pli", PMLS|OP(14), P_DRAPCREL_MASK, POWER10, EXT, {RT, SI34}},
10172 {"pla", PMLS|OP(14), P_D_MASK, POWER10, EXT, {RT, D34, PRA0, PCREL1}},
10173 {"paddi", PMLS|OP(14), P_D_MASK, POWER10, 0, {RT, RA0, SI34, PCREL}},
10174 {"psubi", PMLS|OP(14), P_D_MASK, POWER10, EXT, {RT, RA0, NSI34, PCREL}},
10175 {"xxsplti32dx", P8RR|VSOP(32,0), P_VSI_MASK, POWER10, 0, {XTS, IX, IMM32}},
10176 {"xxspltidp", P8RR|VSOP(32,2), P_VS_MASK, POWER10, 0, {XTS, IMM32}},
10177 {"xxspltiw", P8RR|VSOP(32,3), P_VS_MASK, POWER10, 0, {XTS, IMM32}},
10178 {"plwz", PMLS|OP(32), P_D_MASK, POWER10, 0, {RT, D34, PRA0, PCREL}},
10179 {"xxblendvb", P8RR|XX4(33,0), P_XX4_MASK, POWER10, 0, {XT6, XA6, XB6, XC6}},
10180 {"xxblendvh", P8RR|XX4(33,1), P_XX4_MASK, POWER10, 0, {XT6, XA6, XB6, XC6}},
10181 {"xxblendvw", P8RR|XX4(33,2), P_XX4_MASK, POWER10, 0, {XT6, XA6, XB6, XC6}},
10182 {"xxblendvd", P8RR|XX4(33,3), P_XX4_MASK, POWER10, 0, {XT6, XA6, XB6, XC6}},
10183 {"xxpermx", P8RR|XX4(34,0), P_UXX4_MASK, POWER10, 0, {XT6, XA6, XB6, XC6, UIM3}},
10184 {"xxeval", P8RR|XX4(34,1), P_U8XX4_MASK, POWER10, 0, {XT6, XA6, XB6, XC6, UIM8}},
10185 {"plbz", PMLS|OP(34), P_D_MASK, POWER10, 0, {RT, D34, PRA0, PCREL}},
10186 {"pstw", PMLS|OP(36), P_D_MASK, POWER10, 0, {RS, D34, PRA0, PCREL}},
10187 {"pstb", PMLS|OP(38), P_D_MASK, POWER10, 0, {RS, D34, PRA0, PCREL}},
10188 {"plhz", PMLS|OP(40), P_D_MASK, POWER10, 0, {RT, D34, PRA0, PCREL}},
10189 {"plwa", P8LS|OP(41), P_D_MASK, POWER10, 0, {RT, D34, PRA0, PCREL}},
10190 {"plxsd", P8LS|OP(42), P_D_MASK, POWER10, 0, {VD, D34, PRA0, PCREL}},
10191 {"plha", PMLS|OP(42), P_D_MASK, POWER10, 0, {RT, D34, PRA0, PCREL}},
10192 {"plxssp", P8LS|OP(43), P_D_MASK, POWER10, 0, {VD, D34, PRA0, PCREL}},
10193 {"psth", PMLS|OP(44), P_D_MASK, POWER10, 0, {RS, D34, PRA0, PCREL}},
10194 {"pstxsd", P8LS|OP(46), P_D_MASK, POWER10, 0, {VS, D34, PRA0, PCREL}},
10195 {"pstxssp", P8LS|OP(47), P_D_MASK, POWER10, 0, {VS, D34, PRA0, PCREL}},
10196 {"plfs", PMLS|OP(48), P_D_MASK, POWER10, 0, {FRT, D34, PRA0, PCREL}},
10197 {"plxv", P8LS|OP(50), P_D_MASK&~OP(1), POWER10, 0, {XTOP, D34, PRA0, PCREL}},
10198 {"plfd", PMLS|OP(50), P_D_MASK, POWER10, 0, {FRT, D34, PRA0, PCREL}},
10199 {"pstfs", PMLS|OP(52), P_D_MASK, POWER10, 0, {FRS, D34, PRA0, PCREL}},
10200 {"pstxv", P8LS|OP(54), P_D_MASK&~OP(1), POWER10, 0, {XTOP, D34, PRA0, PCREL}},
10201 {"pstfd", PMLS|OP(54), P_D_MASK, POWER10, 0, {FRS, D34, PRA0, PCREL}},
10202 {"plq", P8LS|OP(56), P_D_MASK, POWER10, 0, {RTQ, D34, PRAQ, PCREL}},
10203 {"pld", P8LS|OP(57), P_D_MASK, POWER10, 0, {RT, D34, PRA0, PCREL}},
10204 {"plxvp", P8LS|OP(58), P_D_MASK, POWER10, 0, {XTP, D34, PRA0, PCREL}},
10205 {"pmdmxvi8ger4pp",PMMIRR|XX3(59,2), P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
10206 {"pmxvi8ger4pp", PMMIRR|XX3(59,2), P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
10207 {"pmdmxvi8ger4", PMMIRR|XX3(59,3), P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
10208 {"pmxvi8ger4", PMMIRR|XX3(59,3), P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
10209 {"pmdmxvi8gerx4pp",PMMIRR|XX3(59,10), P_GERX4_MASK, FUTURE, 0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK4}},
10210 {"pmdmxvi8gerx4", PMMIRR|XX3(59,11), P_GERX4_MASK, FUTURE, 0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK4}},
10211 {"pmdmxvf16ger2pp",PMMIRR|XX3(59,18), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10212 {"pmxvf16ger2pp", PMMIRR|XX3(59,18), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10213 {"pmdmxvf16ger2", PMMIRR|XX3(59,19), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10214 {"pmxvf16ger2", PMMIRR|XX3(59,19), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10215 {"pmdmxvf32gerpp",PMMIRR|XX3(59,26), P_GER_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
10216 {"pmxvf32gerpp", PMMIRR|XX3(59,26), P_GER_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
10217 {"pmdmxvf32ger", PMMIRR|XX3(59,27), P_GER_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
10218 {"pmxvf32ger", PMMIRR|XX3(59,27), P_GER_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
10219 {"pmdmxvi4ger8pp",PMMIRR|XX3(59,34), P_GER8_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK8}},
10220 {"pmxvi4ger8pp", PMMIRR|XX3(59,34), P_GER8_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK8}},
10221 {"pmdmxvi4ger8", PMMIRR|XX3(59,35), P_GER8_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK8}},
10222 {"pmxvi4ger8", PMMIRR|XX3(59,35), P_GER8_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK8}},
10223 {"pmdmxvi16ger2spp",PMMIRR|XX3(59,42), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10224 {"pmxvi16ger2spp",PMMIRR|XX3(59,42), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10225 {"pmdmxvi16ger2s",PMMIRR|XX3(59,43), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10226 {"pmxvi16ger2s", PMMIRR|XX3(59,43), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10227 {"pmdmxvbf16ger2pp",PMMIRR|XX3(59,50), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10228 {"pmxvbf16ger2pp",PMMIRR|XX3(59,50), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10229 {"pmdmxvbf16ger2",PMMIRR|XX3(59,51), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10230 {"pmxvbf16ger2", PMMIRR|XX3(59,51), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10231 {"pmdmxvf64gerpp",PMMIRR|XX3(59,58), P_GER64_MASK, POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
10232 {"pmxvf64gerpp", PMMIRR|XX3(59,58), P_GER64_MASK, POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
10233 {"pmdmxvf64ger", PMMIRR|XX3(59,59), P_GER64_MASK, POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
10234 {"pmxvf64ger", PMMIRR|XX3(59,59), P_GER64_MASK, POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
10235 {"pmdmxvf16gerx2pp",PMMIRR|XX3(59,66), P_GERX2_MASK, FUTURE, 0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
10236 {"pmdmxvf16gerx2",PMMIRR|XX3(59,67), P_GERX2_MASK, FUTURE, 0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
10237 {"pmdmxvbf16gerx2pp",PMMIRR|XX3(59,74),P_GERX2_MASK, FUTURE, 0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
10238 {"pmdmxvi16ger2", PMMIRR|XX3(59,75), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10239 {"pmxvi16ger2", PMMIRR|XX3(59,75), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10240 {"pmdmxvf16ger2np",PMMIRR|XX3(59,82), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10241 {"pmxvf16ger2np", PMMIRR|XX3(59,82), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10242 {"pmdmxvf16gerx2np",PMMIRR|XX3(59,83), P_GERX2_MASK, FUTURE, 0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
10243 {"pmdmxvf32gernp",PMMIRR|XX3(59,90), P_GER_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
10244 {"pmxvf32gernp", PMMIRR|XX3(59,90), P_GER_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
10245 {"pmdmxvbf16gerx2",PMMIRR|XX3(59,91), P_GERX2_MASK, FUTURE, 0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
10246 {"pmdmxvi8gerx4spp",PMMIRR|XX3(59,98), P_GERX4_MASK, FUTURE, 0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK4}},
10247 {"pmdmxvi8ger4spp",PMMIRR|XX3(59,99), P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
10248 {"pmxvi8ger4spp", PMMIRR|XX3(59,99), P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
10249 {"pmdmxvi16ger2pp",PMMIRR|XX3(59,107), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10250 {"pmxvi16ger2pp", PMMIRR|XX3(59,107), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10251 {"pmdmxvbf16ger2np",PMMIRR|XX3(59,114),P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10252 {"pmxvbf16ger2np",PMMIRR|XX3(59,114), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10253 {"pmdmxvbf16gerx2np",PMMIRR|XX3(59,115),P_GERX2_MASK, FUTURE, 0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
10254 {"pmdmxvf64gernp",PMMIRR|XX3(59,122), P_GER64_MASK, POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
10255 {"pmxvf64gernp", PMMIRR|XX3(59,122), P_GER64_MASK, POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
10256 {"pmdmxvf16ger2pn",PMMIRR|XX3(59,146), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10257 {"pmxvf16ger2pn", PMMIRR|XX3(59,146), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10258 {"pmdmxvf16gerx2pn",PMMIRR|XX3(59,147),P_GERX2_MASK, FUTURE, 0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
10259 {"pmdmxvf32gerpn",PMMIRR|XX3(59,154), P_GER_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
10260 {"pmxvf32gerpn", PMMIRR|XX3(59,154), P_GER_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
10261 {"pmdmxvbf16ger2pn",PMMIRR|XX3(59,178),P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10262 {"pmxvbf16ger2pn",PMMIRR|XX3(59,178), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10263 {"pmdmxvbf16gerx2pn",PMMIRR|XX3(59,179),P_GERX2_MASK, FUTURE, 0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
10264 {"pmdmxvf64gerpn",PMMIRR|XX3(59,186), P_GER64_MASK, POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
10265 {"pmxvf64gerpn", PMMIRR|XX3(59,186), P_GER64_MASK, POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
10266 {"pmdmxvf16gerx2nn",PMMIRR|XX3(59,202),P_GERX2_MASK, FUTURE, 0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
10267 {"pmdmxvf16ger2nn",PMMIRR|XX3(59,210), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10268 {"pmxvf16ger2nn", PMMIRR|XX3(59,210), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10269 {"pmdmxvf32gernn",PMMIRR|XX3(59,218), P_GER_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
10270 {"pmxvf32gernn", PMMIRR|XX3(59,218), P_GER_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
10271 {"pmdmxvbf16gerx2nn",PMMIRR|XX3(59,234),P_GERX2_MASK, FUTURE, 0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
10272 {"pmdmxvbf16ger2nn",PMMIRR|XX3(59,242),P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10273 {"pmxvbf16ger2nn",PMMIRR|XX3(59,242), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10274 {"pmdmxvf64gernn",PMMIRR|XX3(59,250), P_GER64_MASK, POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
10275 {"pmxvf64gernn", PMMIRR|XX3(59,250), P_GER64_MASK, POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
10276 {"pstq", P8LS|OP(60), P_D_MASK, POWER10, 0, {RSQ, D34, PRA0, PCREL}},
10277 {"pstd", P8LS|OP(61), P_D_MASK, POWER10, 0, {RS, D34, PRA0, PCREL}},
10278 {"pstxvp", P8LS|OP(62), P_D_MASK, POWER10, 0, {XSP, D34, PRA0, PCREL}},
10279 };
10280
10281 const unsigned int prefix_num_opcodes = ARRAY_SIZE (prefix_opcodes);
10282 \f
10283 /* The VLE opcode table.
10284
10285 The format of this opcode table is the same as the main opcode table. */
10286
10287 const struct powerpc_opcode vle_opcodes[] = {
10288 {"se_illegal", C(0), C_MASK, PPCVLE, 0, {}},
10289 {"se_isync", C(1), C_MASK, PPCVLE, 0, {}},
10290 {"se_sc", C(2), C_MASK, PPCVLE, 0, {}},
10291 {"se_blr", C_LK(2,0), C_LK_MASK, PPCVLE, 0, {}},
10292 {"se_blrl", C_LK(2,1), C_LK_MASK, PPCVLE, 0, {}},
10293 {"se_bctr", C_LK(3,0), C_LK_MASK, PPCVLE, 0, {}},
10294 {"se_bctrl", C_LK(3,1), C_LK_MASK, PPCVLE, 0, {}},
10295 {"se_rfi", C(8), C_MASK, PPCVLE, 0, {}},
10296 {"se_rfci", C(9), C_MASK, PPCVLE, 0, {}},
10297 {"se_rfdi", C(10), C_MASK, PPCVLE, 0, {}},
10298 /* PPCRFMCI in the following does not enable the instruction for any
10299 PPC_OPCODE_RFMCI supporting cpu as vle_opcodes are all added to the
10300 assembler hash table or searched by the disassembler under control
10301 of PPC_OPCODE_VLE. It's there to set apuinfo. */
10302 {"se_rfmci", C(11), C_MASK, PPCRFMCI|PPCVLE, 0, {}},
10303 {"se_rfgi", C(12), C_MASK, PPCVLE, 0, {}},
10304 {"se_not", SE_R(0,2), SE_R_MASK, PPCVLE, 0, {RX}},
10305 {"se_neg", SE_R(0,3), SE_R_MASK, PPCVLE, 0, {RX}},
10306 {"se_mflr", SE_R(0,8), SE_R_MASK, PPCVLE, 0, {RX}},
10307 {"se_mtlr", SE_R(0,9), SE_R_MASK, PPCVLE, 0, {RX}},
10308 {"se_mfctr", SE_R(0,10), SE_R_MASK, PPCVLE, 0, {RX}},
10309 {"se_mtctr", SE_R(0,11), SE_R_MASK, PPCVLE, 0, {RX}},
10310 {"se_extzb", SE_R(0,12), SE_R_MASK, PPCVLE, 0, {RX}},
10311 {"se_extsb", SE_R(0,13), SE_R_MASK, PPCVLE, 0, {RX}},
10312 {"se_extzh", SE_R(0,14), SE_R_MASK, PPCVLE, 0, {RX}},
10313 {"se_extsh", SE_R(0,15), SE_R_MASK, PPCVLE, 0, {RX}},
10314 {"se_mr", SE_RR(0,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
10315 {"se_mtar", SE_RR(0,2), SE_RR_MASK, PPCVLE, 0, {ARX, RY}},
10316 {"se_mfar", SE_RR(0,3), SE_RR_MASK, PPCVLE, 0, {RX, ARY}},
10317 {"se_add", SE_RR(1,0), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
10318 {"se_mullw", SE_RR(1,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
10319 {"se_sub", SE_RR(1,2), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
10320 {"se_subf", SE_RR(1,3), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
10321 {"se_cmp", SE_RR(3,0), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
10322 {"se_cmpl", SE_RR(3,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
10323 {"se_cmph", SE_RR(3,2), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
10324 {"se_cmphl", SE_RR(3,3), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
10325
10326 /* by major opcode */
10327 {"e_cmpi", SCI8BF(6,0,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
10328 {"e_cmpwi", SCI8BF(6,0,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
10329 {"e_cmpli", SCI8BF(6,1,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
10330 {"e_cmplwi", SCI8BF(6,1,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
10331 {"e_addi", SCI8(6,16), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
10332 {"e_subi", SCI8(6,16), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8N}},
10333 {"e_addi.", SCI8(6,17), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
10334 {"e_addic", SCI8(6,18), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
10335 {"e_subic", SCI8(6,18), SCI8_MASK, PPCVLE, EXT, {RT, RA, SCLSCI8N}},
10336 {"e_addic.", SCI8(6,19), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
10337 {"e_subic.", SCI8(6,19), SCI8_MASK, PPCVLE, EXT, {RT, RA, SCLSCI8N}},
10338 {"e_mulli", SCI8(6,20), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
10339 {"e_subfic", SCI8(6,22), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
10340 {"e_subfic.", SCI8(6,23), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
10341 {"e_andi", SCI8(6,24), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
10342 {"e_andi.", SCI8(6,25), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
10343 {"e_nop", SCI8(6,26), 0xffffffff, PPCVLE, EXT, {0}},
10344 {"e_ori", SCI8(6,26), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
10345 {"e_ori.", SCI8(6,27), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
10346 {"e_xori", SCI8(6,28), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
10347 {"e_xori.", SCI8(6,29), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
10348 {"e_lbzu", OPVUP(6,0), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
10349 {"e_lhau", OPVUP(6,3), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
10350 {"e_lhzu", OPVUP(6,1), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
10351 {"e_lmw", OPVUP(6,8), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
10352 {"e_lwzu", OPVUP(6,2), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
10353 {"e_stbu", OPVUP(6,4), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
10354 {"e_sthu", OPVUP(6,5), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
10355 {"e_stwu", OPVUP(6,6), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
10356 {"e_stmw", OPVUP(6,9), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
10357 {"e_lmvgprw", OPVUPRT(6,16,0),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
10358 {"e_ldmvgprw", OPVUPRT(6,16,0),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
10359 {"e_stmvgprw", OPVUPRT(6,17,0),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
10360 {"e_lmvsprw", OPVUPRT(6,16,1),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
10361 {"e_ldmvsprw", OPVUPRT(6,16,1),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
10362 {"e_stmvsprw", OPVUPRT(6,17,1),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
10363 {"e_lmvsrrw", OPVUPRT(6,16,4),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
10364 {"e_ldmvsrrw", OPVUPRT(6,16,4),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
10365 {"e_stmvsrrw", OPVUPRT(6,17,4),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
10366 {"e_lmvcsrrw", OPVUPRT(6,16,5),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
10367 {"e_ldmvcsrrw", OPVUPRT(6,16,5),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
10368 {"e_stmvcsrrw", OPVUPRT(6,17,5),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
10369 {"e_lmvdsrrw", OPVUPRT(6,16,6),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
10370 {"e_ldmvdsrrw", OPVUPRT(6,16,6),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
10371 {"e_stmvdsrrw", OPVUPRT(6,17,6),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
10372 {"e_lmvmcsrrw", OPVUPRT(6,16,7),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
10373 {"e_stmvmcsrrw",OPVUPRT(6,17,7),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
10374 {"e_add16i", OP(7), OP_MASK, PPCVLE, 0, {RT, RA, SI}},
10375 {"e_la", OP(7), OP_MASK, PPCVLE, EXT, {RT, D, RA0}},
10376 {"e_sub16i", OP(7), OP_MASK, PPCVLE, EXT, {RT, RA, NSI}},
10377
10378 {"se_addi", SE_IM5(8,0), SE_IM5_MASK, PPCVLE, 0, {RX, OIMM5}},
10379 {"se_cmpli", SE_IM5(8,1), SE_IM5_MASK, PPCVLE, 0, {RX, OIMM5}},
10380 {"se_subi", SE_IM5(9,0), SE_IM5_MASK, PPCVLE, 0, {RX, OIMM5}},
10381 {"se_subi.", SE_IM5(9,1), SE_IM5_MASK, PPCVLE, 0, {RX, OIMM5}},
10382 {"se_cmpi", SE_IM5(10,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
10383 {"se_bmaski", SE_IM5(11,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
10384 {"se_andi", SE_IM5(11,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
10385
10386 {"e_lbz", OP(12), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
10387 {"e_stb", OP(13), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
10388 {"e_lha", OP(14), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
10389
10390 {"se_srw", SE_RR(16,0), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
10391 {"se_sraw", SE_RR(16,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
10392 {"se_slw", SE_RR(16,2), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
10393 {"se_nop", SE_RR(17,0), 0xffff, PPCVLE, EXT, {0}},
10394 {"se_or", SE_RR(17,0), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
10395 {"se_andc", SE_RR(17,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
10396 {"se_and", SE_RR(17,2), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
10397 {"se_and.", SE_RR(17,3), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
10398 {"se_li", IM7(9), IM7_MASK, PPCVLE, 0, {RX, UI7}},
10399
10400 {"e_lwz", OP(20), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
10401 {"e_stw", OP(21), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
10402 {"e_lhz", OP(22), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
10403 {"e_sth", OP(23), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
10404
10405 {"se_bclri", SE_IM5(24,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
10406 {"se_bgeni", SE_IM5(24,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
10407 {"se_bseti", SE_IM5(25,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
10408 {"se_btsti", SE_IM5(25,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
10409 {"se_srwi", SE_IM5(26,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
10410 {"se_srawi", SE_IM5(26,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
10411 {"se_slwi", SE_IM5(27,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
10412
10413 {"e_lis", I16L(28,28), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}},
10414 {"e_and2is.", I16L(28,29), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}},
10415 {"e_or2is", I16L(28,26), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}},
10416 {"e_and2i.", I16L(28,25), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}},
10417 {"e_or2i", I16L(28,24), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}},
10418 {"e_cmphl16i", IA16(28,23), IA16_MASK, PPCVLE, 0, {RA, VLEUIMM}},
10419 {"e_cmph16i", IA16(28,22), IA16_MASK, PPCVLE, 0, {RA, VLESIMM}},
10420 {"e_cmpl16i", I16A(28,21), I16A_MASK, PPCVLE, 0, {RA, VLEUIMM}},
10421 {"e_mull2i", I16A(28,20), I16A_MASK, PPCVLE, 0, {RA, VLESIMM}},
10422 {"e_cmp16i", IA16(28,19), IA16_MASK, PPCVLE, 0, {RA, VLESIMM}},
10423 {"e_sub2is", I16A(28,18), I16A_MASK, PPCVLE, EXT, {RA, VLENSIMM}},
10424 {"e_add2is", I16A(28,18), I16A_MASK, PPCVLE, 0, {RA, VLESIMM}},
10425 {"e_sub2i.", I16A(28,17), I16A_MASK, PPCVLE, EXT, {RA, VLENSIMM}},
10426 {"e_add2i.", I16A(28,17), I16A_MASK, PPCVLE, 0, {RA, VLESIMM}},
10427 {"e_li", LI20(28,0), LI20_MASK, PPCVLE, 0, {RT, IMM20}},
10428 {"e_rlwimi", M(29,0), M_MASK, PPCVLE, 0, {RA, RS, SH, MB, ME}},
10429 {"e_inslwi", M(29,0), M_MASK, PPCVLE, EXT, {RA, RS, ILWn, ILWb}},
10430 {"e_insrwi", M(29,0), M_MASK, PPCVLE, EXT, {RA, RS, IRWn, IRWb}},
10431 {"e_rotlwi", MME(29,31,1), MMBME_MASK, PPCVLE, EXT, {RA, RS, SH}},
10432 {"e_rotrwi", MME(29,31,1), MMBME_MASK, PPCVLE, EXT, {RA, RS, RRWn}},
10433 {"e_clrlwi", MME(29,31,1), MSHME_MASK, PPCVLE, EXT, {RA, RS, MB}},
10434 {"e_clrrwi", M(29,1), MSHMB_MASK, PPCVLE, EXT, {RA, RS, CRWn}},
10435 {"e_rlwinm", M(29,1), M_MASK, PPCVLE, 0, {RA, RS, SH, MBE, ME}},
10436 {"e_extlwi", M(29,1), MMB_MASK, PPCVLE, EXT, {RA, RS, ELWn, SH}},
10437 {"e_extrwi", MME(29,31,1), MME_MASK, PPCVLE, EXT, {RA, RS, ERWn, ERWb}},
10438 {"e_clrlslwi", M(29,1), M_MASK, PPCVLE, EXT, {RA, RS, CSLWb, CSLWn}},
10439 {"e_b", BD24(30,0,0), BD24_MASK, PPCVLE, 0, {B24}},
10440 {"e_bl", BD24(30,0,1), BD24_MASK, PPCVLE, 0, {B24}},
10441 {"e_bdnz", EBD15(30,8,BO32DNZ,0), EBD15_MASK, PPCVLE, EXT, {B15}},
10442 {"e_bdnzl", EBD15(30,8,BO32DNZ,1), EBD15_MASK, PPCVLE, EXT, {B15}},
10443 {"e_bdz", EBD15(30,8,BO32DZ,0), EBD15_MASK, PPCVLE, EXT, {B15}},
10444 {"e_bdzl", EBD15(30,8,BO32DZ,1), EBD15_MASK, PPCVLE, EXT, {B15}},
10445 {"e_bge", EBD15BI(30,8,BO32F,CBLT,0), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
10446 {"e_bgel", EBD15BI(30,8,BO32F,CBLT,1), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
10447 {"e_bnl", EBD15BI(30,8,BO32F,CBLT,0), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
10448 {"e_bnll", EBD15BI(30,8,BO32F,CBLT,1), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
10449 {"e_blt", EBD15BI(30,8,BO32T,CBLT,0), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
10450 {"e_bltl", EBD15BI(30,8,BO32T,CBLT,1), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
10451 {"e_bgt", EBD15BI(30,8,BO32T,CBGT,0), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
10452 {"e_bgtl", EBD15BI(30,8,BO32T,CBGT,1), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
10453 {"e_ble", EBD15BI(30,8,BO32F,CBGT,0), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
10454 {"e_blel", EBD15BI(30,8,BO32F,CBGT,1), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
10455 {"e_bng", EBD15BI(30,8,BO32F,CBGT,0), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
10456 {"e_bngl", EBD15BI(30,8,BO32F,CBGT,1), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
10457 {"e_bne", EBD15BI(30,8,BO32F,CBEQ,0), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
10458 {"e_bnel", EBD15BI(30,8,BO32F,CBEQ,1), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
10459 {"e_beq", EBD15BI(30,8,BO32T,CBEQ,0), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
10460 {"e_beql", EBD15BI(30,8,BO32T,CBEQ,1), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
10461 {"e_bso", EBD15BI(30,8,BO32T,CBSO,0), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
10462 {"e_bsol", EBD15BI(30,8,BO32T,CBSO,1), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
10463 {"e_bun", EBD15BI(30,8,BO32T,CBSO,0), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
10464 {"e_bunl", EBD15BI(30,8,BO32T,CBSO,1), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
10465 {"e_bns", EBD15BI(30,8,BO32F,CBSO,0), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
10466 {"e_bnsl", EBD15BI(30,8,BO32F,CBSO,1), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
10467 {"e_bnu", EBD15BI(30,8,BO32F,CBSO,0), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
10468 {"e_bnul", EBD15BI(30,8,BO32F,CBSO,1), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
10469 {"e_bc", BD15(30,8,0), BD15_MASK, PPCVLE, 0, {BO32, BI32, B15}},
10470 {"e_bcl", BD15(30,8,1), BD15_MASK, PPCVLE, 0, {BO32, BI32, B15}},
10471
10472 {"e_bf", EBD15(30,8,BO32F,0), EBD15_MASK, PPCVLE, EXT, {BI32,B15}},
10473 {"e_bfl", EBD15(30,8,BO32F,1), EBD15_MASK, PPCVLE, EXT, {BI32,B15}},
10474 {"e_bt", EBD15(30,8,BO32T,0), EBD15_MASK, PPCVLE, EXT, {BI32,B15}},
10475 {"e_btl", EBD15(30,8,BO32T,1), EBD15_MASK, PPCVLE, EXT, {BI32,B15}},
10476
10477 {"e_cmph", X(31,14), X_MASK, PPCVLE, 0, {CRD, RA, RB}},
10478 {"e_sc", X(31,36), XRTRA_MASK, PPCVLE, 0, {ELEV}},
10479 {"e_cmphl", X(31,46), X_MASK, PPCVLE, 0, {CRD, RA, RB}},
10480 {"e_crandc", XL(31,129), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
10481 {"e_crnand", XL(31,225), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
10482 {"e_crnot", XL(31,33), XL_MASK, PPCVLE, EXT, {BT, BAB}},
10483 {"e_crnor", XL(31,33), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
10484 {"e_crclr", XL(31,193), XL_MASK, PPCVLE, EXT, {BTAB}},
10485 {"e_crxor", XL(31,193), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
10486 {"e_mcrf", XL(31,16), XL_MASK, PPCVLE, 0, {CRD, CR}},
10487 {"e_slwi", EX(31,112), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
10488 {"e_slwi.", EX(31,113), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
10489
10490 {"e_crand", XL(31,257), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
10491
10492 {"e_rlw", EX(31,560), EX_MASK, PPCVLE, 0, {RA, RS, RB}},
10493 {"e_rlw.", EX(31,561), EX_MASK, PPCVLE, 0, {RA, RS, RB}},
10494
10495 {"e_crset", XL(31,289), XL_MASK, PPCVLE, EXT, {BTAB}},
10496 {"e_creqv", XL(31,289), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
10497
10498 {"e_rlwi", EX(31,624), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
10499 {"e_rlwi.", EX(31,625), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
10500
10501 {"e_crorc", XL(31,417), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
10502
10503 {"e_crmove", XL(31,449), XL_MASK, PPCVLE, EXT, {BT, BAB}},
10504 {"e_cror", XL(31,449), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
10505
10506 {"mtmas1", XSPR(31,467,625), XSPR_MASK, PPCVLE, EXT, {RS}},
10507
10508 {"e_srwi", EX(31,1136), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
10509 {"e_srwi.", EX(31,1137), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
10510
10511 {"se_lbz", SD4(8), SD4_MASK, PPCVLE, 0, {RZ, SE_SD, RX}},
10512
10513 {"se_stb", SD4(9), SD4_MASK, PPCVLE, 0, {RZ, SE_SD, RX}},
10514
10515 {"se_lhz", SD4(10), SD4_MASK, PPCVLE, 0, {RZ, SE_SDH, RX}},
10516
10517 {"se_sth", SD4(11), SD4_MASK, PPCVLE, 0, {RZ, SE_SDH, RX}},
10518
10519 {"se_lwz", SD4(12), SD4_MASK, PPCVLE, 0, {RZ, SE_SDW, RX}},
10520
10521 {"se_stw", SD4(13), SD4_MASK, PPCVLE, 0, {RZ, SE_SDW, RX}},
10522
10523 {"se_bge", EBD8IO(28,0,0), EBD8IO3_MASK, PPCVLE, EXT, {B8}},
10524 {"se_bnl", EBD8IO(28,0,0), EBD8IO3_MASK, PPCVLE, EXT, {B8}},
10525 {"se_ble", EBD8IO(28,0,1), EBD8IO3_MASK, PPCVLE, EXT, {B8}},
10526 {"se_bng", EBD8IO(28,0,1), EBD8IO3_MASK, PPCVLE, EXT, {B8}},
10527 {"se_bne", EBD8IO(28,0,2), EBD8IO3_MASK, PPCVLE, EXT, {B8}},
10528 {"se_bns", EBD8IO(28,0,3), EBD8IO3_MASK, PPCVLE, EXT, {B8}},
10529 {"se_bnu", EBD8IO(28,0,3), EBD8IO3_MASK, PPCVLE, EXT, {B8}},
10530 {"se_bf", EBD8IO(28,0,0), EBD8IO2_MASK, PPCVLE, EXT, {BI16, B8}},
10531 {"se_blt", EBD8IO(28,1,0), EBD8IO3_MASK, PPCVLE, EXT, {B8}},
10532 {"se_bgt", EBD8IO(28,1,1), EBD8IO3_MASK, PPCVLE, EXT, {B8}},
10533 {"se_beq", EBD8IO(28,1,2), EBD8IO3_MASK, PPCVLE, EXT, {B8}},
10534 {"se_bso", EBD8IO(28,1,3), EBD8IO3_MASK, PPCVLE, EXT, {B8}},
10535 {"se_bun", EBD8IO(28,1,3), EBD8IO3_MASK, PPCVLE, EXT, {B8}},
10536 {"se_bt", EBD8IO(28,1,0), EBD8IO2_MASK, PPCVLE, EXT, {BI16, B8}},
10537 {"se_bc", BD8IO(28), BD8IO_MASK, PPCVLE, 0, {BO16, BI16, B8}},
10538 {"se_b", BD8(58,0,0), BD8_MASK, PPCVLE, 0, {B8}},
10539 {"se_bl", BD8(58,0,1), BD8_MASK, PPCVLE, 0, {B8}},
10540 };
10541
10542 const unsigned int vle_num_opcodes = ARRAY_SIZE (vle_opcodes);
10543
10544 const struct powerpc_opcode lsp_opcodes[] = {
10545 {"zvaddih", VX(4, 0x200), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM}},
10546 {"zvsubifh", VX(4, 0x201), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM}},
10547 {"zvaddh", VX(4, 0x204), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10548 {"zvsubfh", VX(4, 0x205), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10549 {"zvaddsubfh", VX(4, 0x206), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10550 {"zvsubfaddh", VX(4, 0x207), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10551 {"zvaddhx", VX(4, 0x20C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10552 {"zvsubfhx", VX(4, 0x20D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10553 {"zvaddsubfhx", VX(4, 0x20E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10554 {"zvsubfaddhx", VX(4, 0x20F), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10555 {"zaddwus", VX(4, 0x210), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10556 {"zsubfwus", VX(4, 0x211), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10557 {"zaddwss", VX(4, 0x212), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10558 {"zsubfwss", VX(4, 0x213), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10559 {"zvaddhus", VX(4, 0x214), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10560 {"zvsubfhus", VX(4, 0x215), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10561 {"zvaddhss", VX(4, 0x216), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10562 {"zvsubfhss", VX(4, 0x217), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10563 {"zvaddsubfhss", VX(4, 0x21A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10564 {"zvsubfaddhss", VX(4, 0x21B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10565 {"zvaddhxss", VX(4, 0x21C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10566 {"zvsubfhxss", VX(4, 0x21D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10567 {"zvaddsubfhxss", VX(4, 0x21E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10568 {"zvsubfaddhxss", VX(4, 0x21F), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10569 {"zaddheuw", VX(4, 0x220), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10570 {"zsubfheuw", VX(4, 0x221), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10571 {"zaddhesw", VX(4, 0x222), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10572 {"zsubfhesw", VX(4, 0x223), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10573 {"zaddhouw", VX(4, 0x224), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10574 {"zsubfhouw", VX(4, 0x225), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10575 {"zaddhosw", VX(4, 0x226), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10576 {"zsubfhosw", VX(4, 0x227), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10577 {"zvmergehih", VX(4, 0x22C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10578 {"zvmergeloh", VX(4, 0x22D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10579 {"zvmergehiloh", VX(4, 0x22E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10580 {"zvmergelohih", VX(4, 0x22F), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10581 {"zvcmpgthu", VX(4, 0x230), VX_MASK, PPCLSP, 0, {CRFD, RA, RB}},
10582 {"zvcmpgths", VX(4, 0x230), VX_MASK, PPCLSP, 0, {CRFD, RA, RB}},
10583 {"zvcmplthu", VX(4, 0x231), VX_MASK, PPCLSP, 0, {CRFD, RA, RB}},
10584 {"zvcmplths", VX(4, 0x231), VX_MASK, PPCLSP, 0, {CRFD, RA, RB}},
10585 {"zvcmpeqh", VX(4, 0x232), VX_MASK, PPCLSP, 0, {CRFD, RA, RB}},
10586 {"zpkswgshfrs", VX(4, 0x238), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10587 {"zpkswgswfrs", VX(4, 0x239), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10588 {"zvpkshgwshfrs", VX(4, 0x23A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10589 {"zvpkswshfrs", VX(4, 0x23B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10590 {"zvpkswuhs", VX(4, 0x23C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10591 {"zvpkswshs", VX(4, 0x23D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10592 {"zvpkuwuhs", VX(4, 0x23E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10593 {"zvsplatih", VX_LSP(4, 0x23F), VX_LSP_MASK, PPCLSP, 0, {RD, SIMM}},
10594 {"zvsplatfih", VX_LSP(4, 0xA3F), VX_LSP_MASK, PPCLSP, 0, {RD, SIMM}},
10595 {"zcntlsw", VX_LSP(4, 0x2A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
10596 {"zvcntlzh", VX_LSP(4, 0x323F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
10597 {"zvcntlsh", VX_LSP(4, 0x3A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
10598 {"znegws", VX_LSP(4, 0x4A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
10599 {"zvnegh", VX_LSP(4, 0x523F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
10600 {"zvneghs", VX_LSP(4, 0x5A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
10601 {"zvnegho", VX_LSP(4, 0x623F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
10602 {"zvneghos", VX_LSP(4, 0x6A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
10603 {"zrndwh", VX_LSP(4, 0x823F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
10604 {"zrndwhss", VX_LSP(4, 0x8A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
10605 {"zvabsh", VX_LSP(4, 0xA23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
10606 {"zvabshs", VX_LSP(4, 0xAA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
10607 {"zabsw", VX_LSP(4, 0xB23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
10608 {"zabsws", VX_LSP(4, 0xBA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
10609 {"zsatswuw", VX_LSP(4, 0xC23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
10610 {"zsatuwsw", VX_LSP(4, 0xCA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
10611 {"zsatswuh", VX_LSP(4, 0xD23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
10612 {"zsatswsh", VX_LSP(4, 0xDA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
10613 {"zvsatshuh", VX_LSP(4, 0xE23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
10614 {"zvsatuhsh", VX_LSP(4, 0xEA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
10615 {"zsatuwuh", VX_LSP(4, 0xF23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
10616 {"zsatuwsh", VX_LSP(4, 0xFA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
10617 {"zsatsduw", VX(4, 0x260), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10618 {"zsatsdsw", VX(4, 0x261), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10619 {"zsatuduw", VX(4, 0x262), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10620 {"zvselh", VX(4, 0x264), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10621 {"zxtrw", VX(4, 0x264), VX_LSP_OFF_MASK, PPCLSP, 0, {RD, RA, RB, VX_OFF}},
10622 {"zbrminc", VX(4, 0x268), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10623 {"zcircinc", VX(4, 0x269), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10624 {"zdivwsf", VX(4, 0x26B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10625 {"zvsrhu", VX(4, 0x270), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10626 {"zvsrhs", VX(4, 0x271), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10627 {"zvsrhiu", VX(4, 0x272), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
10628 {"zvsrhis", VX(4, 0x273), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
10629 {"zvslh", VX(4, 0x274), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10630 {"zvrlh", VX(4, 0x275), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10631 {"zvslhi", VX(4, 0x276), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
10632 {"zvrlhi", VX(4, 0x277), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
10633 {"zvslhus", VX(4, 0x278), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10634 {"zvslhss", VX(4, 0x279), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10635 {"zvslhius", VX(4, 0x27A), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
10636 {"zvslhiss", VX(4, 0x27B), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
10637 {"zslwus", VX(4, 0x27C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10638 {"zslwss", VX(4, 0x27D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10639 {"zslwius", VX(4, 0x27E), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM}},
10640 {"zslwiss", VX(4, 0x27F), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM}},
10641 {"zlddx", VX(4, 0x300), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10642 {"zldd", VX(4, 0x301), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8, RA}},
10643 {"zldwx", VX(4, 0x302), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10644 {"zldw", VX(4, 0x303), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8, RA}},
10645 {"zldhx", VX(4, 0x304), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10646 {"zldh", VX(4, 0x305), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8, RA}},
10647 {"zlwgsfdx", VX(4, 0x308), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10648 {"zlwgsfd", VX(4, 0x309), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
10649 {"zlwwosdx", VX(4, 0x30A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10650 {"zlwwosd", VX(4, 0x30B), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
10651 {"zlwhsplatwdx", VX(4, 0x30C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10652 {"zlwhsplatwd", VX(4, 0x30D), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
10653 {"zlwhsplatdx", VX(4, 0x30E), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10654 {"zlwhsplatd", VX(4, 0x30F), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
10655 {"zlwhgwsfdx", VX(4, 0x310), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10656 {"zlwhgwsfd", VX(4, 0x311), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
10657 {"zlwhedx", VX(4, 0x312), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10658 {"zlwhed", VX(4, 0x313), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
10659 {"zlwhosdx", VX(4, 0x314), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10660 {"zlwhosd", VX(4, 0x315), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
10661 {"zlwhoudx", VX(4, 0x316), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10662 {"zlwhoud", VX(4, 0x317), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
10663 {"zlwhx", VX(4, 0x318), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10664 {"zlwh", VX(4, 0x319), VX_MASK, PPCLSP, 0, {RD, EVUIMM_4, RA}},
10665 {"zlwwx", VX(4, 0x31A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10666 {"zlww", VX(4, 0x31B), VX_MASK, PPCLSP, 0, {RD, EVUIMM_4, RA}},
10667 {"zlhgwsfx", VX(4, 0x31C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10668 {"zlhgwsf", VX(4, 0x31D), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2, RA}},
10669 {"zlhhsplatx", VX(4, 0x31E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10670 {"zlhhsplat", VX(4, 0x31F), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2, RA}},
10671 {"zstddx", VX(4, 0x320), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
10672 {"zstdd", VX(4, 0x321), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_8, RA}},
10673 {"zstdwx", VX(4, 0x322), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
10674 {"zstdw", VX(4, 0x323), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_8, RA}},
10675 {"zstdhx", VX(4, 0x324), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
10676 {"zstdh", VX(4, 0x325), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_8, RA}},
10677 {"zstwhedx", VX(4, 0x328), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
10678 {"zstwhed", VX(4, 0x329), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_4, RA}},
10679 {"zstwhodx", VX(4, 0x32A), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
10680 {"zstwhod", VX(4, 0x32B), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_4, RA}},
10681 {"zlhhex", VX(4, 0x330), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10682 {"zlhhe", VX(4, 0x331), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2, RA}},
10683 {"zlhhosx", VX(4, 0x332), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10684 {"zlhhos", VX(4, 0x333), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2, RA}},
10685 {"zlhhoux", VX(4, 0x334), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10686 {"zlhhou", VX(4, 0x335), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2, RA}},
10687 {"zsthex", VX(4, 0x338), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
10688 {"zsthe", VX(4, 0x339), VX_MASK, PPCLSP, 0, {RS, EVUIMM_2, RA}},
10689 {"zsthox", VX(4, 0x33A), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
10690 {"zstho", VX(4, 0x33B), VX_MASK, PPCLSP, 0, {RS, EVUIMM_2, RA}},
10691 {"zstwhx", VX(4, 0x33C), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
10692 {"zstwh", VX(4, 0x33D), VX_MASK, PPCLSP, 0, {RS, EVUIMM_4, RA}},
10693 {"zstwwx", VX(4, 0x33E), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
10694 {"zstww", VX(4, 0x33F), VX_MASK, PPCLSP, 0, {RS, EVUIMM_4, RA}},
10695 {"zlddmx", VX(4, 0x340), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10696 {"zlddu", VX(4, 0x341), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8_EX0, RA}},
10697 {"zldwmx", VX(4, 0x342), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10698 {"zldwu", VX(4, 0x343), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8_EX0, RA}},
10699 {"zldhmx", VX(4, 0x344), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10700 {"zldhu", VX(4, 0x345), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8_EX0, RA}},
10701 {"zlwgsfdmx", VX(4, 0x348), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10702 {"zlwgsfdu", VX(4, 0x349), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
10703 {"zlwwosdmx", VX(4, 0x34A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10704 {"zlwwosdu", VX(4, 0x34B), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
10705 {"zlwhsplatwdmx", VX(4, 0x34C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10706 {"zlwhsplatwdu", VX(4, 0x34D), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
10707 {"zlwhsplatdmx", VX(4, 0x34E), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10708 {"zlwhsplatdu", VX(4, 0x34F), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
10709 {"zlwhgwsfdmx", VX(4, 0x350), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10710 {"zlwhgwsfdu", VX(4, 0x351), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
10711 {"zlwhedmx", VX(4, 0x352), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10712 {"zlwhedu", VX(4, 0x353), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
10713 {"zlwhosdmx", VX(4, 0x354), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10714 {"zlwhosdu", VX(4, 0x355), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
10715 {"zlwhoudmx", VX(4, 0x356), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10716 {"zlwhoudu", VX(4, 0x357), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
10717 {"zlwhmx", VX(4, 0x358), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10718 {"zlwhu", VX(4, 0x359), VX_MASK, PPCLSP, 0, {RD, EVUIMM_4_EX0, RA}},
10719 {"zlwwmx", VX(4, 0x35A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10720 {"zlwwu", VX(4, 0x35B), VX_MASK, PPCLSP, 0, {RD, EVUIMM_4_EX0, RA}},
10721 {"zlhgwsfmx", VX(4, 0x35C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10722 {"zlhgwsfu", VX(4, 0x35D), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2_EX0, RA}},
10723 {"zlhhsplatmx", VX(4, 0x35E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10724 {"zlhhsplatu", VX(4, 0x35F), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2_EX0, RA}},
10725 {"zstddmx", VX(4, 0x360), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
10726 {"zstddu", VX(4, 0x361), VX_MASK, PPCLSP, 0, {RS, EVUIMM_8_EX0, RA}},
10727 {"zstdwmx", VX(4, 0x362), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
10728 {"zstdwu", VX(4, 0x363), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_8_EX0, RA}},
10729 {"zstdhmx", VX(4, 0x364), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
10730 {"zstdhu", VX(4, 0x365), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_8_EX0, RA}},
10731 {"zstwhedmx", VX(4, 0x368), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
10732 {"zstwhedu", VX(4, 0x369), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_4_EX0, RA}},
10733 {"zstwhodmx", VX(4, 0x36A), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
10734 {"zstwhodu", VX(4, 0x36B), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_4_EX0, RA}},
10735 {"zlhhemx", VX(4, 0x370), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10736 {"zlhheu", VX(4, 0x371), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2_EX0, RA}},
10737 {"zlhhosmx", VX(4, 0x372), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10738 {"zlhhosu", VX(4, 0x373), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2_EX0, RA}},
10739 {"zlhhoumx", VX(4, 0x374), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10740 {"zlhhouu", VX(4, 0x375), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2_EX0, RA}},
10741 {"zsthemx", VX(4, 0x378), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
10742 {"zstheu", VX(4, 0x379), VX_MASK, PPCLSP, 0, {RS, EVUIMM_2_EX0, RA}},
10743 {"zsthomx", VX(4, 0x37A), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
10744 {"zsthou", VX(4, 0x37B), VX_MASK, PPCLSP, 0, {RS, EVUIMM_2_EX0, RA}},
10745 {"zstwhmx", VX(4, 0x37C), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
10746 {"zstwhu", VX(4, 0x37D), VX_MASK, PPCLSP, 0, {RS, EVUIMM_4_EX0, RA}},
10747 {"zstwwmx", VX(4, 0x37E), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
10748 {"zstwwu", VX(4, 0x37F), VX_MASK, PPCLSP, 0, {RS, EVUIMM_4_EX0, RA}},
10749 {"zaddwgui", VX(4, 0x460), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10750 {"zsubfwgui", VX(4, 0x461), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10751 {"zaddd", VX(4, 0x462), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10752 {"zsubfd", VX(4, 0x463), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10753 {"zvaddsubfw", VX(4, 0x464), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10754 {"zvsubfaddw", VX(4, 0x465), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10755 {"zvaddw", VX(4, 0x466), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10756 {"zvsubfw", VX(4, 0x467), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10757 {"zaddwgsi", VX(4, 0x468), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10758 {"zsubfwgsi", VX(4, 0x469), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10759 {"zadddss", VX(4, 0x46A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10760 {"zsubfdss", VX(4, 0x46B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10761 {"zvaddsubfwss", VX(4, 0x46C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10762 {"zvsubfaddwss", VX(4, 0x46D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10763 {"zvaddwss", VX(4, 0x46E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10764 {"zvsubfwss", VX(4, 0x46F), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10765 {"zaddwgsf", VX(4, 0x470), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10766 {"zsubfwgsf", VX(4, 0x471), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10767 {"zadddus", VX(4, 0x472), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10768 {"zsubfdus", VX(4, 0x473), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10769 {"zvaddwus", VX(4, 0x476), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10770 {"zvsubfwus", VX(4, 0x477), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10771 {"zvunpkhgwsf", VX_LSP(4, 0x478), VX_LSP_MASK, PPCLSP, 0, {RD_EVEN, RA}},
10772 {"zvunpkhsf", VX_LSP(4, 0xC78), VX_LSP_MASK, PPCLSP, 0, {RD_EVEN, RA}},
10773 {"zvunpkhui", VX_LSP(4, 0x1478), VX_LSP_MASK, PPCLSP, 0, {RD_EVEN, RA}},
10774 {"zvunpkhsi", VX_LSP(4, 0x1C78), VX_LSP_MASK, PPCLSP, 0, {RD_EVEN, RA}},
10775 {"zunpkwgsf", VX_LSP(4, 0x2478), VX_LSP_MASK, PPCLSP, 0, {RD_EVEN, RA}},
10776 {"zvdotphgwasmf", VX(4, 0x488), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10777 {"zvdotphgwasmfr", VX(4, 0x489), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10778 {"zvdotphgwasmfaa", VX(4, 0x48A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10779 {"zvdotphgwasmfraa", VX(4, 0x48B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10780 {"zvdotphgwasmfan", VX(4, 0x48C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10781 {"zvdotphgwasmfran", VX(4, 0x48D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10782 {"zvmhulgwsmf", VX(4, 0x490), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10783 {"zvmhulgwsmfr", VX(4, 0x491), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10784 {"zvmhulgwsmfaa", VX(4, 0x492), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10785 {"zvmhulgwsmfraa", VX(4, 0x493), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10786 {"zvmhulgwsmfan", VX(4, 0x494), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10787 {"zvmhulgwsmfran", VX(4, 0x495), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10788 {"zvmhulgwsmfanp", VX(4, 0x496), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10789 {"zvmhulgwsmfranp", VX(4, 0x497), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10790 {"zmhegwsmf", VX(4, 0x498), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10791 {"zmhegwsmfr", VX(4, 0x499), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10792 {"zmhegwsmfaa", VX(4, 0x49A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10793 {"zmhegwsmfraa", VX(4, 0x49B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10794 {"zmhegwsmfan", VX(4, 0x49C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10795 {"zmhegwsmfran", VX(4, 0x49D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10796 {"zvdotphxgwasmf", VX(4, 0x4A8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10797 {"zvdotphxgwasmfr", VX(4, 0x4A9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10798 {"zvdotphxgwasmfaa", VX(4, 0x4AA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10799 {"zvdotphxgwasmfraa", VX(4, 0x4AB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10800 {"zvdotphxgwasmfan", VX(4, 0x4AC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10801 {"zvdotphxgwasmfran", VX(4, 0x4AD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10802 {"zvmhllgwsmf", VX(4, 0x4B0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10803 {"zvmhllgwsmfr", VX(4, 0x4B1), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10804 {"zvmhllgwsmfaa", VX(4, 0x4B2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10805 {"zvmhllgwsmfraa", VX(4, 0x4B3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10806 {"zvmhllgwsmfan", VX(4, 0x4B4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10807 {"zvmhllgwsmfran", VX(4, 0x4B5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10808 {"zvmhllgwsmfanp", VX(4, 0x4B6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10809 {"zvmhllgwsmfranp", VX(4, 0x4B7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10810 {"zmheogwsmf", VX(4, 0x4B8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10811 {"zmheogwsmfr", VX(4, 0x4B9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10812 {"zmheogwsmfaa", VX(4, 0x4BA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10813 {"zmheogwsmfraa", VX(4, 0x4BB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10814 {"zmheogwsmfan", VX(4, 0x4BC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10815 {"zmheogwsmfran", VX(4, 0x4BD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10816 {"zvdotphgwssmf", VX(4, 0x4C8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10817 {"zvdotphgwssmfr", VX(4, 0x4C9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10818 {"zvdotphgwssmfaa", VX(4, 0x4CA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10819 {"zvdotphgwssmfraa", VX(4, 0x4CB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10820 {"zvdotphgwssmfan", VX(4, 0x4CC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10821 {"zvdotphgwssmfran", VX(4, 0x4CD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10822 {"zvmhuugwsmf", VX(4, 0x4D0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10823 {"zvmhuugwsmfr", VX(4, 0x4D1), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10824 {"zvmhuugwsmfaa", VX(4, 0x4D2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10825 {"zvmhuugwsmfraa", VX(4, 0x4D3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10826 {"zvmhuugwsmfan", VX(4, 0x4D4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10827 {"zvmhuugwsmfran", VX(4, 0x4D5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10828 {"zvmhuugwsmfanp", VX(4, 0x4D6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10829 {"zvmhuugwsmfranp", VX(4, 0x4D7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10830 {"zmhogwsmf", VX(4, 0x4D8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10831 {"zmhogwsmfr", VX(4, 0x4D9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10832 {"zmhogwsmfaa", VX(4, 0x4DA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10833 {"zmhogwsmfraa", VX(4, 0x4DB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10834 {"zmhogwsmfan", VX(4, 0x4DC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10835 {"zmhogwsmfran", VX(4, 0x4DD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
10836 {"zvmhxlgwsmf", VX(4, 0x4F0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10837 {"zvmhxlgwsmfr", VX(4, 0x4F1), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10838 {"zvmhxlgwsmfaa", VX(4, 0x4F2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10839 {"zvmhxlgwsmfraa", VX(4, 0x4F3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10840 {"zvmhxlgwsmfan", VX(4, 0x4F4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10841 {"zvmhxlgwsmfran", VX(4, 0x4F5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10842 {"zvmhxlgwsmfanp", VX(4, 0x4F6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10843 {"zvmhxlgwsmfranp", VX(4, 0x4F7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10844 {"zmhegui", VX(4, 0x500), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10845 {"zvdotphgaui", VX(4, 0x501), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10846 {"zmheguiaa", VX(4, 0x502), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10847 {"zvdotphgauiaa", VX(4, 0x503), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10848 {"zmheguian", VX(4, 0x504), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10849 {"zvdotphgauian", VX(4, 0x505), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10850 {"zmhegsi", VX(4, 0x508), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10851 {"zvdotphgasi", VX(4, 0x509), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10852 {"zmhegsiaa", VX(4, 0x50A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10853 {"zvdotphgasiaa", VX(4, 0x50B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10854 {"zmhegsian", VX(4, 0x50C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10855 {"zvdotphgasian", VX(4, 0x50D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10856 {"zmhegsui", VX(4, 0x510), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10857 {"zvdotphgasui", VX(4, 0x511), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10858 {"zmhegsuiaa", VX(4, 0x512), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10859 {"zvdotphgasuiaa", VX(4, 0x513), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10860 {"zmhegsuian", VX(4, 0x514), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10861 {"zvdotphgasuian", VX(4, 0x515), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10862 {"zmhegsmf", VX(4, 0x518), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10863 {"zvdotphgasmf", VX(4, 0x519), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10864 {"zmhegsmfaa", VX(4, 0x51A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10865 {"zvdotphgasmfaa", VX(4, 0x51B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10866 {"zmhegsmfan", VX(4, 0x51C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10867 {"zvdotphgasmfan", VX(4, 0x51D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10868 {"zmheogui", VX(4, 0x520), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10869 {"zvdotphxgaui", VX(4, 0x521), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10870 {"zmheoguiaa", VX(4, 0x522), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10871 {"zvdotphxgauiaa", VX(4, 0x523), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10872 {"zmheoguian", VX(4, 0x524), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10873 {"zvdotphxgauian", VX(4, 0x525), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10874 {"zmheogsi", VX(4, 0x528), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10875 {"zvdotphxgasi", VX(4, 0x529), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10876 {"zmheogsiaa", VX(4, 0x52A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10877 {"zvdotphxgasiaa", VX(4, 0x52B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10878 {"zmheogsian", VX(4, 0x52C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10879 {"zvdotphxgasian", VX(4, 0x52D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10880 {"zmheogsui", VX(4, 0x530), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10881 {"zvdotphxgasui", VX(4, 0x531), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10882 {"zmheogsuiaa", VX(4, 0x532), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10883 {"zvdotphxgasuiaa", VX(4, 0x533), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10884 {"zmheogsuian", VX(4, 0x534), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10885 {"zvdotphxgasuian", VX(4, 0x535), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10886 {"zmheogsmf", VX(4, 0x538), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10887 {"zvdotphxgasmf", VX(4, 0x539), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10888 {"zmheogsmfaa", VX(4, 0x53A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10889 {"zvdotphxgasmfaa", VX(4, 0x53B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10890 {"zmheogsmfan", VX(4, 0x53C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10891 {"zvdotphxgasmfan", VX(4, 0x53D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10892 {"zmhogui", VX(4, 0x540), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10893 {"zvdotphgsui", VX(4, 0x541), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10894 {"zmhoguiaa", VX(4, 0x542), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10895 {"zvdotphgsuiaa", VX(4, 0x543), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10896 {"zmhoguian", VX(4, 0x544), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10897 {"zvdotphgsuian", VX(4, 0x545), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10898 {"zmhogsi", VX(4, 0x548), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10899 {"zvdotphgssi", VX(4, 0x549), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10900 {"zmhogsiaa", VX(4, 0x54A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10901 {"zvdotphgssiaa", VX(4, 0x54B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10902 {"zmhogsian", VX(4, 0x54C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10903 {"zvdotphgssian", VX(4, 0x54D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10904 {"zmhogsui", VX(4, 0x550), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10905 {"zvdotphgssui", VX(4, 0x551), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10906 {"zmhogsuiaa", VX(4, 0x552), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10907 {"zvdotphgssuiaa", VX(4, 0x553), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10908 {"zmhogsuian", VX(4, 0x554), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10909 {"zvdotphgssuian", VX(4, 0x555), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10910 {"zmhogsmf", VX(4, 0x558), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10911 {"zvdotphgssmf", VX(4, 0x559), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10912 {"zmhogsmfaa", VX(4, 0x55A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10913 {"zvdotphgssmfaa", VX(4, 0x55B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10914 {"zmhogsmfan", VX(4, 0x55C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10915 {"zvdotphgssmfan", VX(4, 0x55D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10916 {"zmwgui", VX(4, 0x560), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10917 {"zmwguiaa", VX(4, 0x562), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10918 {"zmwguiaas", VX(4, 0x563), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10919 {"zmwguian", VX(4, 0x564), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10920 {"zmwguians", VX(4, 0x565), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10921 {"zmwgsi", VX(4, 0x568), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10922 {"zmwgsiaa", VX(4, 0x56A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10923 {"zmwgsiaas", VX(4, 0x56B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10924 {"zmwgsian", VX(4, 0x56C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10925 {"zmwgsians", VX(4, 0x56D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10926 {"zmwgsui", VX(4, 0x570), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10927 {"zmwgsuiaa", VX(4, 0x572), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10928 {"zmwgsuiaas", VX(4, 0x573), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10929 {"zmwgsuian", VX(4, 0x574), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10930 {"zmwgsuians", VX(4, 0x575), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10931 {"zmwgsmf", VX(4, 0x578), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10932 {"zmwgsmfr", VX(4, 0x579), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10933 {"zmwgsmfaa", VX(4, 0x57A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10934 {"zmwgsmfraa", VX(4, 0x57B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10935 {"zmwgsmfan", VX(4, 0x57C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10936 {"zmwgsmfran", VX(4, 0x57D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10937 {"zvmhului", VX(4, 0x580), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10938 {"zvmhuluiaa", VX(4, 0x582), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10939 {"zvmhuluiaas", VX(4, 0x583), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10940 {"zvmhuluian", VX(4, 0x584), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10941 {"zvmhuluians", VX(4, 0x585), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10942 {"zvmhuluianp", VX(4, 0x586), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10943 {"zvmhuluianps", VX(4, 0x587), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10944 {"zvmhulsi", VX(4, 0x588), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10945 {"zvmhulsiaa", VX(4, 0x58A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10946 {"zvmhulsiaas", VX(4, 0x58B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10947 {"zvmhulsian", VX(4, 0x58C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10948 {"zvmhulsians", VX(4, 0x58D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10949 {"zvmhulsianp", VX(4, 0x58E), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10950 {"zvmhulsianps", VX(4, 0x58F), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10951 {"zvmhulsui", VX(4, 0x590), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10952 {"zvmhulsuiaa", VX(4, 0x592), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10953 {"zvmhulsuiaas", VX(4, 0x593), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10954 {"zvmhulsuian", VX(4, 0x594), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10955 {"zvmhulsuians", VX(4, 0x595), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10956 {"zvmhulsuianp", VX(4, 0x596), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10957 {"zvmhulsuianps", VX(4, 0x597), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10958 {"zvmhulsf", VX(4, 0x598), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10959 {"zvmhulsfr", VX(4, 0x599), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10960 {"zvmhulsfaas", VX(4, 0x59A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10961 {"zvmhulsfraas", VX(4, 0x59B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10962 {"zvmhulsfans", VX(4, 0x59C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10963 {"zvmhulsfrans", VX(4, 0x59D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10964 {"zvmhulsfanps", VX(4, 0x59E), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10965 {"zvmhulsfranps", VX(4, 0x59F), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10966 {"zvmhllui", VX(4, 0x5A0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10967 {"zvmhlluiaa", VX(4, 0x5A2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10968 {"zvmhlluiaas", VX(4, 0x5A3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10969 {"zvmhlluian", VX(4, 0x5A4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10970 {"zvmhlluians", VX(4, 0x5A5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10971 {"zvmhlluianp", VX(4, 0x5A6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10972 {"zvmhlluianps", VX(4, 0x5A7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10973 {"zvmhllsi", VX(4, 0x5A8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10974 {"zvmhllsiaa", VX(4, 0x5AA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10975 {"zvmhllsiaas", VX(4, 0x5AB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10976 {"zvmhllsian", VX(4, 0x5AC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10977 {"zvmhllsians", VX(4, 0x5AD), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10978 {"zvmhllsianp", VX(4, 0x5AE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10979 {"zvmhllsianps", VX(4, 0x5AF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10980 {"zvmhllsui", VX(4, 0x5B0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10981 {"zvmhllsuiaa", VX(4, 0x5B2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10982 {"zvmhllsuiaas", VX(4, 0x5B3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10983 {"zvmhllsuian", VX(4, 0x5B4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10984 {"zvmhllsuians", VX(4, 0x5B5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10985 {"zvmhllsuianp", VX(4, 0x5B6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10986 {"zvmhllsuianps", VX(4, 0x5B7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10987 {"zvmhllsf", VX(4, 0x5B8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10988 {"zvmhllsfr", VX(4, 0x5B9), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10989 {"zvmhllsfaas", VX(4, 0x5BA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10990 {"zvmhllsfraas", VX(4, 0x5BB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10991 {"zvmhllsfans", VX(4, 0x5BC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10992 {"zvmhllsfrans", VX(4, 0x5BD), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10993 {"zvmhllsfanps", VX(4, 0x5BE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10994 {"zvmhllsfranps", VX(4, 0x5BF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10995 {"zvmhuuui", VX(4, 0x5C0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10996 {"zvmhuuuiaa", VX(4, 0x5C2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10997 {"zvmhuuuiaas", VX(4, 0x5C3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10998 {"zvmhuuuian", VX(4, 0x5C4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
10999 {"zvmhuuuians", VX(4, 0x5C5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11000 {"zvmhuuuianp", VX(4, 0x5C6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11001 {"zvmhuuuianps", VX(4, 0x5C7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11002 {"zvmhuusi", VX(4, 0x5C8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11003 {"zvmhuusiaa", VX(4, 0x5CA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11004 {"zvmhuusiaas", VX(4, 0x5CB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11005 {"zvmhuusian", VX(4, 0x5CC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11006 {"zvmhuusians", VX(4, 0x5CD), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11007 {"zvmhuusianp", VX(4, 0x5CE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11008 {"zvmhuusianps", VX(4, 0x5CF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11009 {"zvmhuusui", VX(4, 0x5D0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11010 {"zvmhuusuiaa", VX(4, 0x5D2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11011 {"zvmhuusuiaas", VX(4, 0x5D3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11012 {"zvmhuusuian", VX(4, 0x5D4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11013 {"zvmhuusuians", VX(4, 0x5D5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11014 {"zvmhuusuianp", VX(4, 0x5D6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11015 {"zvmhuusuianps", VX(4, 0x5D7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11016 {"zvmhuusf", VX(4, 0x5D8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11017 {"zvmhuusfr", VX(4, 0x5D9), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11018 {"zvmhuusfaas", VX(4, 0x5DA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11019 {"zvmhuusfraas", VX(4, 0x5DB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11020 {"zvmhuusfans", VX(4, 0x5DC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11021 {"zvmhuusfrans", VX(4, 0x5DD), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11022 {"zvmhuusfanps", VX(4, 0x5DE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11023 {"zvmhuusfranps", VX(4, 0x5DF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11024 {"zvmhxlui", VX(4, 0x5E0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11025 {"zvmhxluiaa", VX(4, 0x5E2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11026 {"zvmhxluiaas", VX(4, 0x5E3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11027 {"zvmhxluian", VX(4, 0x5E4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11028 {"zvmhxluians", VX(4, 0x5E5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11029 {"zvmhxluianp", VX(4, 0x5E6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11030 {"zvmhxluianps", VX(4, 0x5E7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11031 {"zvmhxlsi", VX(4, 0x5E8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11032 {"zvmhxlsiaa", VX(4, 0x5EA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11033 {"zvmhxlsiaas", VX(4, 0x5EB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11034 {"zvmhxlsian", VX(4, 0x5EC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11035 {"zvmhxlsians", VX(4, 0x5ED), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11036 {"zvmhxlsianp", VX(4, 0x5EE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11037 {"zvmhxlsianps", VX(4, 0x5EF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11038 {"zvmhxlsui", VX(4, 0x5F0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11039 {"zvmhxlsuiaa", VX(4, 0x5F2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11040 {"zvmhxlsuiaas", VX(4, 0x5F3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11041 {"zvmhxlsuian", VX(4, 0x5F4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11042 {"zvmhxlsuians", VX(4, 0x5F5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11043 {"zvmhxlsuianp", VX(4, 0x5F6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11044 {"zvmhxlsuianps", VX(4, 0x5F7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11045 {"zvmhxlsf", VX(4, 0x5F8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11046 {"zvmhxlsfr", VX(4, 0x5F9), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11047 {"zvmhxlsfaas", VX(4, 0x5FA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11048 {"zvmhxlsfraas", VX(4, 0x5FB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11049 {"zvmhxlsfans", VX(4, 0x5FC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11050 {"zvmhxlsfrans", VX(4, 0x5FD), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11051 {"zvmhxlsfanps", VX(4, 0x5FE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11052 {"zvmhxlsfranps", VX(4, 0x5FF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
11053 {"zmheui", VX(4, 0x600), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11054 {"zmheuiaa", VX(4, 0x602), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11055 {"zmheuiaas", VX(4, 0x603), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11056 {"zmheuian", VX(4, 0x604), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11057 {"zmheuians", VX(4, 0x605), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11058 {"zmhesi", VX(4, 0x608), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11059 {"zmhesiaa", VX(4, 0x60A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11060 {"zmhesiaas", VX(4, 0x60B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11061 {"zmhesian", VX(4, 0x60C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11062 {"zmhesians", VX(4, 0x60D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11063 {"zmhesui", VX(4, 0x610), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11064 {"zmhesuiaa", VX(4, 0x612), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11065 {"zmhesuiaas", VX(4, 0x613), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11066 {"zmhesuian", VX(4, 0x614), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11067 {"zmhesuians", VX(4, 0x615), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11068 {"zmhesf", VX(4, 0x618), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11069 {"zmhesfr", VX(4, 0x619), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11070 {"zmhesfaas", VX(4, 0x61A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11071 {"zmhesfraas", VX(4, 0x61B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11072 {"zmhesfans", VX(4, 0x61C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11073 {"zmhesfrans", VX(4, 0x61D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11074 {"zmheoui", VX(4, 0x620), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11075 {"zmheouiaa", VX(4, 0x622), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11076 {"zmheouiaas", VX(4, 0x623), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11077 {"zmheouian", VX(4, 0x624), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11078 {"zmheouians", VX(4, 0x625), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11079 {"zmheosi", VX(4, 0x628), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11080 {"zmheosiaa", VX(4, 0x62A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11081 {"zmheosiaas", VX(4, 0x62B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11082 {"zmheosian", VX(4, 0x62C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11083 {"zmheosians", VX(4, 0x62D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11084 {"zmheosui", VX(4, 0x630), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11085 {"zmheosuiaa", VX(4, 0x632), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11086 {"zmheosuiaas", VX(4, 0x633), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11087 {"zmheosuian", VX(4, 0x634), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11088 {"zmheosuians", VX(4, 0x635), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11089 {"zmheosf", VX(4, 0x638), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11090 {"zmheosfr", VX(4, 0x639), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11091 {"zmheosfaas", VX(4, 0x63A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11092 {"zmheosfraas", VX(4, 0x63B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11093 {"zmheosfans", VX(4, 0x63C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11094 {"zmheosfrans", VX(4, 0x63D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11095 {"zmhoui", VX(4, 0x640), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11096 {"zmhouiaa", VX(4, 0x642), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11097 {"zmhouiaas", VX(4, 0x643), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11098 {"zmhouian", VX(4, 0x644), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11099 {"zmhouians", VX(4, 0x645), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11100 {"zmhosi", VX(4, 0x648), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11101 {"zmhosiaa", VX(4, 0x64A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11102 {"zmhosiaas", VX(4, 0x64B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11103 {"zmhosian", VX(4, 0x64C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11104 {"zmhosians", VX(4, 0x64D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11105 {"zmhosui", VX(4, 0x650), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11106 {"zmhosuiaa", VX(4, 0x652), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11107 {"zmhosuiaas", VX(4, 0x653), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11108 {"zmhosuian", VX(4, 0x654), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11109 {"zmhosuians", VX(4, 0x655), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11110 {"zmhosf", VX(4, 0x658), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11111 {"zmhosfr", VX(4, 0x659), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11112 {"zmhosfaas", VX(4, 0x65A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11113 {"zmhosfraas", VX(4, 0x65B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11114 {"zmhosfans", VX(4, 0x65C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11115 {"zmhosfrans", VX(4, 0x65D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11116 {"zvmhuih", VX(4, 0x660), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11117 {"zvmhuihs", VX(4, 0x661), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11118 {"zvmhuiaah", VX(4, 0x662), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11119 {"zvmhuiaahs", VX(4, 0x663), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11120 {"zvmhuianh", VX(4, 0x664), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11121 {"zvmhuianhs", VX(4, 0x665), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11122 {"zvmhsihs", VX(4, 0x669), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11123 {"zvmhsiaahs", VX(4, 0x66B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11124 {"zvmhsianhs", VX(4, 0x66D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11125 {"zvmhsuihs", VX(4, 0x671), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11126 {"zvmhsuiaahs", VX(4, 0x673), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11127 {"zvmhsuianhs", VX(4, 0x675), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11128 {"zvmhsfh", VX(4, 0x678), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11129 {"zvmhsfrh", VX(4, 0x679), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11130 {"zvmhsfaahs", VX(4, 0x67A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11131 {"zvmhsfraahs", VX(4, 0x67B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11132 {"zvmhsfanhs", VX(4, 0x67C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11133 {"zvmhsfranhs", VX(4, 0x67D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11134 {"zvdotphaui", VX(4, 0x680), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11135 {"zvdotphauis", VX(4, 0x681), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11136 {"zvdotphauiaa", VX(4, 0x682), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11137 {"zvdotphauiaas", VX(4, 0x683), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11138 {"zvdotphauian", VX(4, 0x684), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11139 {"zvdotphauians", VX(4, 0x685), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11140 {"zvdotphasi", VX(4, 0x688), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11141 {"zvdotphasis", VX(4, 0x689), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11142 {"zvdotphasiaa", VX(4, 0x68A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11143 {"zvdotphasiaas", VX(4, 0x68B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11144 {"zvdotphasian", VX(4, 0x68C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11145 {"zvdotphasians", VX(4, 0x68D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11146 {"zvdotphasui", VX(4, 0x690), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11147 {"zvdotphasuis", VX(4, 0x691), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11148 {"zvdotphasuiaa", VX(4, 0x692), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11149 {"zvdotphasuiaas", VX(4, 0x693), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11150 {"zvdotphasuian", VX(4, 0x694), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11151 {"zvdotphasuians", VX(4, 0x695), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11152 {"zvdotphasfs", VX(4, 0x698), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11153 {"zvdotphasfrs", VX(4, 0x699), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11154 {"zvdotphasfaas", VX(4, 0x69A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11155 {"zvdotphasfraas", VX(4, 0x69B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11156 {"zvdotphasfans", VX(4, 0x69C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11157 {"zvdotphasfrans", VX(4, 0x69D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11158 {"zvdotphxaui", VX(4, 0x6A0), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11159 {"zvdotphxauis", VX(4, 0x6A1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11160 {"zvdotphxauiaa", VX(4, 0x6A2), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11161 {"zvdotphxauiaas", VX(4, 0x6A3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11162 {"zvdotphxauian", VX(4, 0x6A4), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11163 {"zvdotphxauians", VX(4, 0x6A5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11164 {"zvdotphxasi", VX(4, 0x6A8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11165 {"zvdotphxasis", VX(4, 0x6A9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11166 {"zvdotphxasiaa", VX(4, 0x6AA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11167 {"zvdotphxasiaas", VX(4, 0x6AB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11168 {"zvdotphxasian", VX(4, 0x6AC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11169 {"zvdotphxasians", VX(4, 0x6AD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11170 {"zvdotphxasui", VX(4, 0x6B0), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11171 {"zvdotphxasuis", VX(4, 0x6B1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11172 {"zvdotphxasuiaa", VX(4, 0x6B2), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11173 {"zvdotphxasuiaas", VX(4, 0x6B3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11174 {"zvdotphxasuian", VX(4, 0x6B4), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11175 {"zvdotphxasuians", VX(4, 0x6B5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11176 {"zvdotphxasfs", VX(4, 0x6B8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11177 {"zvdotphxasfrs", VX(4, 0x6B9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11178 {"zvdotphxasfaas", VX(4, 0x6BA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11179 {"zvdotphxasfraas", VX(4, 0x6BB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11180 {"zvdotphxasfans", VX(4, 0x6BC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11181 {"zvdotphxasfrans", VX(4, 0x6BD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11182 {"zvdotphsui", VX(4, 0x6C0), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11183 {"zvdotphsuis", VX(4, 0x6C1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11184 {"zvdotphsuiaa", VX(4, 0x6C2), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11185 {"zvdotphsuiaas", VX(4, 0x6C3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11186 {"zvdotphsuian", VX(4, 0x6C4), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11187 {"zvdotphsuians", VX(4, 0x6C5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11188 {"zvdotphssi", VX(4, 0x6C8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11189 {"zvdotphssis", VX(4, 0x6C9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11190 {"zvdotphssiaa", VX(4, 0x6CA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11191 {"zvdotphssiaas", VX(4, 0x6CB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11192 {"zvdotphssian", VX(4, 0x6CC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11193 {"zvdotphssians", VX(4, 0x6CD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11194 {"zvdotphssui", VX(4, 0x6D0), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11195 {"zvdotphssuis", VX(4, 0x6D1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11196 {"zvdotphssuiaa", VX(4, 0x6D2), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11197 {"zvdotphssuiaas", VX(4, 0x6D3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11198 {"zvdotphssuian", VX(4, 0x6D4), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11199 {"zvdotphssuians", VX(4, 0x6D5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11200 {"zvdotphssfs", VX(4, 0x6D8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11201 {"zvdotphssfrs", VX(4, 0x6D9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11202 {"zvdotphssfaas", VX(4, 0x6DA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11203 {"zvdotphssfraas", VX(4, 0x6DB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11204 {"zvdotphssfans", VX(4, 0x6DC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11205 {"zvdotphssfrans", VX(4, 0x6DD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11206 {"zmwluis", VX(4, 0x6E1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11207 {"zmwluiaa", VX(4, 0x6E2), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11208 {"zmwluiaas", VX(4, 0x6E3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11209 {"zmwluian", VX(4, 0x6E4), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11210 {"zmwluians", VX(4, 0x6E5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11211 {"zmwlsis", VX(4, 0x6E9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11212 {"zmwlsiaas", VX(4, 0x6EB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11213 {"zmwlsians", VX(4, 0x6ED), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11214 {"zmwlsuis", VX(4, 0x6F1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11215 {"zmwlsuiaas", VX(4, 0x6F3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11216 {"zmwlsuians", VX(4, 0x6F5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11217 {"zmwsf", VX(4, 0x6F8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11218 {"zmwsfr", VX(4, 0x6F9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11219 {"zmwsfaas", VX(4, 0x6FA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11220 {"zmwsfraas", VX(4, 0x6FB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11221 {"zmwsfans", VX(4, 0x6FC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11222 {"zmwsfrans", VX(4, 0x6FD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
11223 };
11224
11225 const unsigned int lsp_num_opcodes = ARRAY_SIZE (lsp_opcodes);
11226
11227 /* SPE v2 instruction set from SPE2PIM Rev. 2 08/2011 */
11228 const struct powerpc_opcode spe2_opcodes[] = {
11229 {"evdotpwcssi", VX (4, 128), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11230 {"evdotpwcsmi", VX (4, 129), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11231 {"evdotpwcssfr", VX (4, 130), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11232 {"evdotpwcssf", VX (4, 131), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11233 {"evdotpwgasmf", VX (4, 136), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11234 {"evdotpwxgasmf", VX (4, 137), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11235 {"evdotpwgasmfr", VX (4, 138), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11236 {"evdotpwxgasmfr", VX (4, 139), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11237 {"evdotpwgssmf", VX (4, 140), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11238 {"evdotpwxgssmf", VX (4, 141), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11239 {"evdotpwgssmfr", VX (4, 142), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11240 {"evdotpwxgssmfr", VX (4, 143), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11241 {"evdotpwcssiaaw3", VX (4, 144), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11242 {"evdotpwcsmiaaw3", VX (4, 145), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11243 {"evdotpwcssfraaw3", VX (4, 146), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11244 {"evdotpwcssfaaw3", VX (4, 147), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11245 {"evdotpwgasmfaa3", VX (4, 152), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11246 {"evdotpwxgasmfaa3", VX (4, 153), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11247 {"evdotpwgasmfraa3", VX (4, 154), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11248 {"evdotpwxgasmfraa3", VX (4, 155), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11249 {"evdotpwgssmfaa3", VX (4, 156), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11250 {"evdotpwxgssmfaa3", VX (4, 157), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11251 {"evdotpwgssmfraa3", VX (4, 158), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11252 {"evdotpwxgssmfraa3", VX (4, 159), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11253 {"evdotpwcssia", VX (4, 160), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11254 {"evdotpwcsmia", VX (4, 161), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11255 {"evdotpwcssfra", VX (4, 162), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11256 {"evdotpwcssfa", VX (4, 163), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11257 {"evdotpwgasmfa", VX (4, 168), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11258 {"evdotpwxgasmfa", VX (4, 169), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11259 {"evdotpwgasmfra", VX (4, 170), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11260 {"evdotpwxgasmfra", VX (4, 171), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11261 {"evdotpwgssmfa", VX (4, 172), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11262 {"evdotpwxgssmfa", VX (4, 173), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11263 {"evdotpwgssmfra", VX (4, 174), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11264 {"evdotpwxgssmfra", VX (4, 175), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11265 {"evdotpwcssiaaw", VX (4, 176), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11266 {"evdotpwcsmiaaw", VX (4, 177), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11267 {"evdotpwcssfraaw", VX (4, 178), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11268 {"evdotpwcssfaaw", VX (4, 179), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11269 {"evdotpwgasmfaa", VX (4, 184), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11270 {"evdotpwxgasmfaa", VX (4, 185), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11271 {"evdotpwgasmfraa", VX (4, 186), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11272 {"evdotpwxgasmfraa", VX (4, 187), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11273 {"evdotpwgssmfaa", VX (4, 188), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11274 {"evdotpwxgssmfaa", VX (4, 189), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11275 {"evdotpwgssmfraa", VX (4, 190), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11276 {"evdotpwxgssmfraa", VX (4, 191), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11277 {"evdotphihcssi", VX (4, 256), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11278 {"evdotplohcssi", VX (4, 257), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11279 {"evdotphihcssf", VX (4, 258), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11280 {"evdotplohcssf", VX (4, 259), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11281 {"evdotphihcsmi", VX (4, 264), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11282 {"evdotplohcsmi", VX (4, 265), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11283 {"evdotphihcssfr", VX (4, 266), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11284 {"evdotplohcssfr", VX (4, 267), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11285 {"evdotphihcssiaaw3", VX (4, 272), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11286 {"evdotplohcssiaaw3", VX (4, 273), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11287 {"evdotphihcssfaaw3", VX (4, 274), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11288 {"evdotplohcssfaaw3", VX (4, 275), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11289 {"evdotphihcsmiaaw3", VX (4, 280), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11290 {"evdotplohcsmiaaw3", VX (4, 281), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11291 {"evdotphihcssfraaw3", VX (4, 282), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11292 {"evdotplohcssfraaw3", VX (4, 283), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11293 {"evdotphihcssia", VX (4, 288), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11294 {"evdotplohcssia", VX (4, 289), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11295 {"evdotphihcssfa", VX (4, 290), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11296 {"evdotplohcssfa", VX (4, 291), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11297 {"evdotphihcsmia", VX (4, 296), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11298 {"evdotplohcsmia", VX (4, 297), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11299 {"evdotphihcssfra", VX (4, 298), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11300 {"evdotplohcssfra", VX (4, 299), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11301 {"evdotphihcssiaaw", VX (4, 304), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11302 {"evdotplohcssiaaw", VX (4, 305), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11303 {"evdotphihcssfaaw", VX (4, 306), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11304 {"evdotplohcssfaaw", VX (4, 307), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11305 {"evdotphihcsmiaaw", VX (4, 312), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11306 {"evdotplohcsmiaaw", VX (4, 313), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11307 {"evdotphihcssfraaw", VX (4, 314), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11308 {"evdotplohcssfraaw", VX (4, 315), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11309 {"evdotphausi", VX (4, 320), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11310 {"evdotphassi", VX (4, 321), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11311 {"evdotphasusi", VX (4, 322), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11312 {"evdotphassf", VX (4, 323), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11313 {"evdotphsssf", VX (4, 327), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11314 {"evdotphaumi", VX (4, 328), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11315 {"evdotphasmi", VX (4, 329), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11316 {"evdotphasumi", VX (4, 330), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11317 {"evdotphassfr", VX (4, 331), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11318 {"evdotphssmi", VX (4, 333), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11319 {"evdotphsssi", VX (4, 333), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11320 {"evdotphsssfr", VX (4, 335), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11321 {"evdotphausiaaw3", VX (4, 336), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11322 {"evdotphassiaaw3", VX (4, 337), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11323 {"evdotphasusiaaw3", VX (4, 338), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11324 {"evdotphassfaaw3", VX (4, 339), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11325 {"evdotphsssiaaw3", VX (4, 341), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11326 {"evdotphsssfaaw3", VX (4, 343), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11327 {"evdotphaumiaaw3", VX (4, 344), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11328 {"evdotphasmiaaw3", VX (4, 345), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11329 {"evdotphasumiaaw3", VX (4, 346), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11330 {"evdotphassfraaw3", VX (4, 347), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11331 {"evdotphssmiaaw3", VX (4, 349), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11332 {"evdotphsssfraaw3", VX (4, 351), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11333 {"evdotphausia", VX (4, 352), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11334 {"evdotphassia", VX (4, 353), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11335 {"evdotphasusia", VX (4, 354), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11336 {"evdotphassfa", VX (4, 355), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11337 {"evdotphsssfa", VX (4, 359), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11338 {"evdotphaumia", VX (4, 360), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11339 {"evdotphasmia", VX (4, 361), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11340 {"evdotphasumia", VX (4, 362), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11341 {"evdotphassfra", VX (4, 363), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11342 {"evdotphssmia", VX (4, 365), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11343 {"evdotphsssia", VX (4, 365), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11344 {"evdotphsssfra", VX (4, 367), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11345 {"evdotphausiaaw", VX (4, 368), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11346 {"evdotphassiaaw", VX (4, 369), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11347 {"evdotphasusiaaw", VX (4, 370), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11348 {"evdotphassfaaw", VX (4, 371), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11349 {"evdotphsssiaaw", VX (4, 373), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11350 {"evdotphsssfaaw", VX (4, 375), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11351 {"evdotphaumiaaw", VX (4, 376), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11352 {"evdotphasmiaaw", VX (4, 377), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11353 {"evdotphasumiaaw", VX (4, 378), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11354 {"evdotphassfraaw", VX (4, 379), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11355 {"evdotphssmiaaw", VX (4, 381), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11356 {"evdotphsssfraaw", VX (4, 383), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11357 {"evdotp4hgaumi", VX (4, 384), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11358 {"evdotp4hgasmi", VX (4, 385), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11359 {"evdotp4hgasumi", VX (4, 386), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11360 {"evdotp4hgasmf", VX (4, 387), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11361 {"evdotp4hgssmi", VX (4, 388), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11362 {"evdotp4hgssmf", VX (4, 389), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11363 {"evdotp4hxgasmi", VX (4, 390), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11364 {"evdotp4hxgasmf", VX (4, 391), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11365 {"evdotpbaumi", VX (4, 392), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11366 {"evdotpbasmi", VX (4, 393), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11367 {"evdotpbasumi", VX (4, 394), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11368 {"evdotp4hxgssmi", VX (4, 398), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11369 {"evdotp4hxgssmf", VX (4, 399), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11370 {"evdotp4hgaumiaa3", VX (4, 400), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11371 {"evdotp4hgasmiaa3", VX (4, 401), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11372 {"evdotp4hgasumiaa3", VX (4, 402), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11373 {"evdotp4hgasmfaa3", VX (4, 403), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11374 {"evdotp4hgssmiaa3", VX (4, 404), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11375 {"evdotp4hgssmfaa3", VX (4, 405), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11376 {"evdotp4hxgasmiaa3", VX (4, 406), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11377 {"evdotp4hxgasmfaa3", VX (4, 407), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11378 {"evdotpbaumiaaw3", VX (4, 408), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11379 {"evdotpbasmiaaw3", VX (4, 409), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11380 {"evdotpbasumiaaw3", VX (4, 410), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11381 {"evdotp4hxgssmiaa3", VX (4, 414), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11382 {"evdotp4hxgssmfaa3", VX (4, 415), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11383 {"evdotp4hgaumia", VX (4, 416), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11384 {"evdotp4hgasmia", VX (4, 417), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11385 {"evdotp4hgasumia", VX (4, 418), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11386 {"evdotp4hgasmfa", VX (4, 419), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11387 {"evdotp4hgssmia", VX (4, 420), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11388 {"evdotp4hgssmfa", VX (4, 421), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11389 {"evdotp4hxgasmia", VX (4, 422), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11390 {"evdotp4hxgasmfa", VX (4, 423), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11391 {"evdotpbaumia", VX (4, 424), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11392 {"evdotpbasmia", VX (4, 425), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11393 {"evdotpbasumia", VX (4, 426), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11394 {"evdotp4hxgssmia", VX (4, 430), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11395 {"evdotp4hxgssmfa", VX (4, 431), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11396 {"evdotp4hgaumiaa", VX (4, 432), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11397 {"evdotp4hgasmiaa", VX (4, 433), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11398 {"evdotp4hgasumiaa", VX (4, 434), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11399 {"evdotp4hgasmfaa", VX (4, 435), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11400 {"evdotp4hgssmiaa", VX (4, 436), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11401 {"evdotp4hgssmfaa", VX (4, 437), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11402 {"evdotp4hxgasmiaa", VX (4, 438), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11403 {"evdotp4hxgasmfaa", VX (4, 439), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11404 {"evdotpbaumiaaw", VX (4, 440), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11405 {"evdotpbasmiaaw", VX (4, 441), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11406 {"evdotpbasumiaaw", VX (4, 442), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11407 {"evdotp4hxgssmiaa", VX (4, 446), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11408 {"evdotp4hxgssmfaa", VX (4, 447), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11409 {"evdotpwausi", VX (4, 448), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11410 {"evdotpwassi", VX (4, 449), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11411 {"evdotpwasusi", VX (4, 450), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11412 {"evdotpwaumi", VX (4, 456), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11413 {"evdotpwasmi", VX (4, 457), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11414 {"evdotpwasumi", VX (4, 458), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11415 {"evdotpwssmi", VX (4, 461), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11416 {"evdotpwsssi", VX (4, 461), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11417 {"evdotpwausiaa3", VX (4, 464), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11418 {"evdotpwassiaa3", VX (4, 465), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11419 {"evdotpwasusiaa3", VX (4, 466), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11420 {"evdotpwsssiaa3", VX (4, 469), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11421 {"evdotpwaumiaa3", VX (4, 472), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11422 {"evdotpwasmiaa3", VX (4, 473), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11423 {"evdotpwasumiaa3", VX (4, 474), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11424 {"evdotpwssmiaa3", VX (4, 477), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11425 {"evdotpwausia", VX (4, 480), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11426 {"evdotpwassia", VX (4, 481), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11427 {"evdotpwasusia", VX (4, 482), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11428 {"evdotpwaumia", VX (4, 488), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11429 {"evdotpwasmia", VX (4, 489), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11430 {"evdotpwasumia", VX (4, 490), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11431 {"evdotpwssmia", VX (4, 493), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11432 {"evdotpwsssia", VX (4, 493), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11433 {"evdotpwausiaa", VX (4, 496), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11434 {"evdotpwassiaa", VX (4, 497), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11435 {"evdotpwasusiaa", VX (4, 498), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11436 {"evdotpwsssiaa", VX (4, 501), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11437 {"evdotpwaumiaa", VX (4, 504), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11438 {"evdotpwasmiaa", VX (4, 505), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11439 {"evdotpwasumiaa", VX (4, 506), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11440 {"evdotpwssmiaa", VX (4, 509), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11441 {"evaddib", VX (4, 515), VX_MASK, PPCSPE2, 0, {RD, RB, UIMM}},
11442 {"evaddih", VX (4, 513), VX_MASK, PPCSPE2, 0, {RD, RB, UIMM}},
11443 {"evsubifh", VX (4, 517), VX_MASK, PPCSPE2, 0, {RD, UIMM, RB}},
11444 {"evsubifb", VX (4, 519), VX_MASK, PPCSPE2, 0, {RD, UIMM, RB}},
11445 {"evabsb", VX_RB_CONST(4, 520, 2), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11446 {"evabsh", VX_RB_CONST(4, 520, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11447 {"evabsd", VX_RB_CONST(4, 520, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11448 {"evabss", VX_RB_CONST(4, 520, 8), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11449 {"evabsbs", VX_RB_CONST(4, 520, 10), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11450 {"evabshs", VX_RB_CONST(4, 520, 12), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11451 {"evabsds", VX_RB_CONST(4, 520, 14), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11452 {"evnegwo", VX_RB_CONST(4, 521, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11453 {"evnegb", VX_RB_CONST(4, 521, 2), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11454 {"evnegbo", VX_RB_CONST(4, 521, 3), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11455 {"evnegh", VX_RB_CONST(4, 521, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11456 {"evnegho", VX_RB_CONST(4, 521, 5), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11457 {"evnegd", VX_RB_CONST(4, 521, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11458 {"evnegs", VX_RB_CONST(4, 521, 8), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11459 {"evnegwos", VX_RB_CONST(4, 521, 9), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11460 {"evnegbs", VX_RB_CONST(4, 521, 10), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11461 {"evnegbos", VX_RB_CONST(4, 521, 11), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11462 {"evneghs", VX_RB_CONST(4, 521, 12), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11463 {"evneghos", VX_RB_CONST(4, 521, 13), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11464 {"evnegds", VX_RB_CONST(4, 521, 14), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11465 {"evextzb", VX_RB_CONST(4, 522, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11466 {"evextsbh", VX_RB_CONST(4, 522, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11467 {"evextsw", VX_RB_CONST(4, 523, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11468 {"evrndwh", VX_RB_CONST(4, 524, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11469 {"evrndhb", VX_RB_CONST(4, 524, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11470 {"evrnddw", VX_RB_CONST(4, 524, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11471 {"evrndwhus", VX_RB_CONST(4, 524, 8), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11472 {"evrndwhss", VX_RB_CONST(4, 524, 9), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11473 {"evrndhbus", VX_RB_CONST(4, 524, 12), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11474 {"evrndhbss", VX_RB_CONST(4, 524, 13), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11475 {"evrnddwus", VX_RB_CONST(4, 524, 14), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11476 {"evrnddwss", VX_RB_CONST(4, 524, 15), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11477 {"evrndwnh", VX_RB_CONST(4, 524, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11478 {"evrndhnb", VX_RB_CONST(4, 524, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11479 {"evrnddnw", VX_RB_CONST(4, 524, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11480 {"evrndwnhus", VX_RB_CONST(4, 524, 24), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11481 {"evrndwnhss", VX_RB_CONST(4, 524, 25), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11482 {"evrndhnbus", VX_RB_CONST(4, 524, 28), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11483 {"evrndhnbss", VX_RB_CONST(4, 524, 29), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11484 {"evrnddnwus", VX_RB_CONST(4, 524, 30), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11485 {"evrnddnwss", VX_RB_CONST(4, 524, 31), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11486 {"evcntlzh", VX_RB_CONST(4, 525, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11487 {"evcntlsh", VX_RB_CONST(4, 526, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11488 {"evpopcntb", VX_RB_CONST(4, 526, 26), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11489 {"circinc", VX (4, 528), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11490 {"evunpkhibui", VX_RB_CONST(4, 540, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11491 {"evunpkhibsi", VX_RB_CONST(4, 540, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11492 {"evunpkhihui", VX_RB_CONST(4, 540, 2), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11493 {"evunpkhihsi", VX_RB_CONST(4, 540, 3), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11494 {"evunpklobui", VX_RB_CONST(4, 540, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11495 {"evunpklobsi", VX_RB_CONST(4, 540, 5), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11496 {"evunpklohui", VX_RB_CONST(4, 540, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11497 {"evunpklohsi", VX_RB_CONST(4, 540, 7), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11498 {"evunpklohf", VX_RB_CONST(4, 540, 8), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11499 {"evunpkhihf", VX_RB_CONST(4, 540, 9), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11500 {"evunpklowgsf", VX_RB_CONST(4, 540, 12), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11501 {"evunpkhiwgsf", VX_RB_CONST(4, 540, 13), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11502 {"evsatsduw", VX_RB_CONST(4, 540, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11503 {"evsatsdsw", VX_RB_CONST(4, 540, 17), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11504 {"evsatshub", VX_RB_CONST(4, 540, 18), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11505 {"evsatshsb", VX_RB_CONST(4, 540, 19), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11506 {"evsatuwuh", VX_RB_CONST(4, 540, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11507 {"evsatswsh", VX_RB_CONST(4, 540, 21), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11508 {"evsatswuh", VX_RB_CONST(4, 540, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11509 {"evsatuhub", VX_RB_CONST(4, 540, 23), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11510 {"evsatuduw", VX_RB_CONST(4, 540, 24), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11511 {"evsatuwsw", VX_RB_CONST(4, 540, 25), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11512 {"evsatshuh", VX_RB_CONST(4, 540, 26), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11513 {"evsatuhsh", VX_RB_CONST(4, 540, 27), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11514 {"evsatswuw", VX_RB_CONST(4, 540, 28), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11515 {"evsatswgsdf", VX_RB_CONST(4, 540, 29), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11516 {"evsatsbub", VX_RB_CONST(4, 540, 30), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11517 {"evsatubsb", VX_RB_CONST(4, 540, 31), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11518 {"evmaxhpuw", VX_RB_CONST(4, 541, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11519 {"evmaxhpsw", VX_RB_CONST(4, 541, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11520 {"evmaxbpuh", VX_RB_CONST(4, 541, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11521 {"evmaxbpsh", VX_RB_CONST(4, 541, 5), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11522 {"evmaxwpud", VX_RB_CONST(4, 541, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11523 {"evmaxwpsd", VX_RB_CONST(4, 541, 7), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11524 {"evminhpuw", VX_RB_CONST(4, 541, 8), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11525 {"evminhpsw", VX_RB_CONST(4, 541, 9), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11526 {"evminbpuh", VX_RB_CONST(4, 541, 12), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11527 {"evminbpsh", VX_RB_CONST(4, 541, 13), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11528 {"evminwpud", VX_RB_CONST(4, 541, 14), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11529 {"evminwpsd", VX_RB_CONST(4, 541, 15), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11530 {"evmaxmagws", VX (4, 543), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11531 {"evsl", VX (4, 549), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11532 {"evsli", VX (4, 551), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM}},
11533 {"evsplatie", VX_RB_CONST (4, 553, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11534 {"evsplatib", VX_RB_CONST (4, 553, 2), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11535 {"evsplatibe", VX_RB_CONST (4, 553, 3), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11536 {"evsplatih", VX_RB_CONST (4, 553, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11537 {"evsplatihe", VX_RB_CONST (4, 553, 5), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11538 {"evsplatid", VX_RB_CONST (4, 553, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11539 {"evsplatia", VX_RB_CONST (4, 553, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11540 {"evsplatiea", VX_RB_CONST (4, 553, 17), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11541 {"evsplatiba", VX_RB_CONST (4, 553, 18), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11542 {"evsplatibea", VX_RB_CONST (4, 553, 19), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11543 {"evsplatiha", VX_RB_CONST (4, 553, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11544 {"evsplatihea", VX_RB_CONST (4, 553, 21), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11545 {"evsplatida", VX_RB_CONST (4, 553, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11546 {"evsplatfio", VX_RB_CONST (4, 555, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11547 {"evsplatfib", VX_RB_CONST (4, 555, 2), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11548 {"evsplatfibo", VX_RB_CONST (4, 555, 3), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11549 {"evsplatfih", VX_RB_CONST (4, 555, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11550 {"evsplatfiho", VX_RB_CONST (4, 555, 5), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11551 {"evsplatfid", VX_RB_CONST (4, 555, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11552 {"evsplatfia", VX_RB_CONST (4, 555, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11553 {"evsplatfioa", VX_RB_CONST (4, 555, 17), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11554 {"evsplatfiba", VX_RB_CONST (4, 555, 18), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11555 {"evsplatfiboa", VX_RB_CONST (4, 555, 19), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11556 {"evsplatfiha", VX_RB_CONST (4, 555, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11557 {"evsplatfihoa", VX_RB_CONST (4, 555, 21), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11558 {"evsplatfida", VX_RB_CONST (4, 555, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11559 {"evcmpgtdu", VX_SPE_CRFD (4, 560, 1), VX_SPE_CRFD_MASK, PPCSPE2, 0, {CRFD, RA, RB}},
11560 {"evcmpgtds", VX_SPE_CRFD (4, 561, 1), VX_SPE_CRFD_MASK, PPCSPE2, 0, {CRFD, RA, RB}},
11561 {"evcmpltdu", VX_SPE_CRFD (4, 562, 1), VX_SPE_CRFD_MASK, PPCSPE2, 0, {CRFD, RA, RB}},
11562 {"evcmpltds", VX_SPE_CRFD (4, 563, 1), VX_SPE_CRFD_MASK, PPCSPE2, 0, {CRFD, RA, RB}},
11563 {"evcmpeqd", VX_SPE_CRFD (4, 564, 1), VX_SPE_CRFD_MASK, PPCSPE2, 0, {CRFD, RA, RB}},
11564 {"evswapbhilo", VX (4, 568), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11565 {"evswapblohi", VX (4, 569), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11566 {"evswaphhilo", VX (4, 570), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11567 {"evswaphlohi", VX (4, 571), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11568 {"evswaphe", VX (4, 572), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11569 {"evswaphhi", VX (4, 573), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11570 {"evswaphlo", VX (4, 574), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11571 {"evswapho", VX (4, 575), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11572 {"evinsb", VX (4, 584), VX_MASK_DDD, PPCSPE2, 0, {RD, RA, DDD, BBB}},
11573 {"evxtrb", VX (4, 586), VX_MASK_DDD, PPCSPE2, 0, {RD, RA, DDD, BBB}},
11574 {"evsplath", VX_SPE2_HH (4, 588, 0, 0), VX_SPE2_HH_MASK, PPCSPE2, 0, {RD, RA, HH}},
11575 {"evsplatb", VX_SPE2_SPLATB (4, 588, 2), VX_SPE2_SPLATB_MASK, PPCSPE2, 0, {RD, RA, BBB}},
11576 {"evinsh", VX_SPE2_DDHH (4, 589, 0), VX_SPE2_DDHH_MASK, PPCSPE2, 0, {RD, RA, DD, HH}},
11577 {"evclrbe", VX_SPE2_CLR (4, 590, 0), VX_SPE2_CLR_MASK, PPCSPE2, 0, {RD, RA, MMMM}},
11578 {"evclrbo", VX_SPE2_CLR (4, 590, 1), VX_SPE2_CLR_MASK, PPCSPE2, 0, {RD, RA, MMMM}},
11579 {"evclrh", VX_SPE2_CLR (4, 591, 1), VX_SPE2_CLR_MASK, PPCSPE2, 0, {RD, RA, MMMM}},
11580 {"evxtrh", VX_SPE2_DDHH (4, 591, 0), VX_SPE2_DDHH_MASK, PPCSPE2, 0, {RD, RA, DD, HH}},
11581 {"evselbitm0", VX (4, 592), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11582 {"evselbitm1", VX (4, 593), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11583 {"evselbit", VX (4, 594), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11584 {"evperm", VX (4, 596), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11585 {"evperm2", VX (4, 597), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11586 {"evperm3", VX (4, 598), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11587 {"evxtrd", VX (4, 600), VX_OFF_SPE2_MASK, PPCSPE2, 0, {RD, RA, RB, VX_OFF_SPE2}},
11588 {"evsrbu", VX (4, 608), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11589 {"evsrbs", VX (4, 609), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11590 {"evsrbiu", VX (4, 610), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
11591 {"evsrbis", VX (4, 611), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
11592 {"evslb", VX (4, 612), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11593 {"evrlb", VX (4, 613), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11594 {"evslbi", VX (4, 614), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
11595 {"evrlbi", VX (4, 615), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
11596 {"evsrhu", VX (4, 616), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11597 {"evsrhs", VX (4, 617), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11598 {"evsrhiu", VX (4, 618), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
11599 {"evsrhis", VX (4, 619), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
11600 {"evslh", VX (4, 620), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11601 {"evrlh", VX (4, 621), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11602 {"evslhi", VX (4, 622), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
11603 {"evrlhi", VX (4, 623), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
11604 {"evsru", VX (4, 624), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11605 {"evsrs", VX (4, 625), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11606 {"evsriu", VX (4, 626), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM}},
11607 {"evsris", VX (4, 627), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM}},
11608 {"evlvsl", VX (4, 628), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11609 {"evlvsr", VX (4, 629), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11610 {"evsroiu", VX_SPE2_OCTET (4, 631, 0), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
11611 {"evsrois", VX_SPE2_OCTET (4, 631, 1), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
11612 {"evsloi", VX_SPE2_OCTET (4, 631, 2), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
11613 {"evldbx", VX (4, 774), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11614 {"evldb", VX (4, 775), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_8, RA}},
11615 {"evlhhsplathx", VX (4, 778), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11616 {"evlhhsplath", VX (4, 779), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_2, RA}},
11617 {"evlwbsplatwx", VX (4, 786), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11618 {"evlwbsplatw", VX (4, 787), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4, RA}},
11619 {"evlwhsplatwx", VX (4, 794), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11620 {"evlwhsplatw", VX (4, 795), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4, RA}},
11621 {"evlbbsplatbx", VX (4, 798), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11622 {"evlbbsplatb", VX (4, 799), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_1, RA}},
11623 {"evstdbx", VX (4, 806), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
11624 {"evstdb", VX (4, 807), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_8, RA}},
11625 {"evlwbex", VX (4, 810), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11626 {"evlwbe", VX (4, 811), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4, RA}},
11627 {"evlwboux", VX (4, 812), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11628 {"evlwbou", VX (4, 813), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4, RA}},
11629 {"evlwbosx", VX (4, 814), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11630 {"evlwbos", VX (4, 815), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4, RA}},
11631 {"evstwbex", VX (4, 818), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
11632 {"evstwbe", VX (4, 819), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4, RA}},
11633 {"evstwbox", VX (4, 822), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
11634 {"evstwbo", VX (4, 823), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4, RA}},
11635 {"evstwbx", VX (4, 826), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
11636 {"evstwb", VX (4, 827), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4, RA}},
11637 {"evsthbx", VX (4, 830), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
11638 {"evsthb", VX (4, 831), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_2, RA}},
11639 {"evlddmx", VX (4, 832), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11640 {"evlddu", VX (4, 833), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
11641 {"evldwmx", VX (4, 834), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11642 {"evldwu", VX (4, 835), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
11643 {"evldhmx", VX (4, 836), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11644 {"evldhu", VX (4, 837), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
11645 {"evldbmx", VX (4, 838), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11646 {"evldbu", VX (4, 839), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
11647 {"evlhhesplatmx", VX (4, 840), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11648 {"evlhhesplatu", VX (4, 841), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
11649 {"evlhhsplathmx", VX (4, 842), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11650 {"evlhhsplathu", VX (4, 843), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
11651 {"evlhhousplatmx", VX (4, 844), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11652 {"evlhhousplatu", VX (4, 845), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
11653 {"evlhhossplatmx", VX (4, 846), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11654 {"evlhhossplatu", VX (4, 847), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
11655 {"evlwhemx", VX (4, 848), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11656 {"evlwheu", VX (4, 849), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11657 {"evlwbsplatwmx", VX (4, 850), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11658 {"evlwbsplatwu", VX (4, 851), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11659 {"evlwhoumx", VX (4, 852), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11660 {"evlwhouu", VX (4, 853), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11661 {"evlwhosmx", VX (4, 854), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11662 {"evlwhosu", VX (4, 855), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11663 {"evlwwsplatmx", VX (4, 856), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11664 {"evlwwsplatu", VX (4, 857), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11665 {"evlwhsplatwmx", VX (4, 858), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11666 {"evlwhsplatwu", VX (4, 859), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11667 {"evlwhsplatmx", VX (4, 860), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11668 {"evlwhsplatu", VX (4, 861), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11669 {"evlbbsplatbmx", VX (4, 862), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11670 {"evlbbsplatbu", VX (4, 863), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_1_EX0, RA}},
11671 {"evstddmx", VX (4, 864), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
11672 {"evstddu", VX (4, 865), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
11673 {"evstdwmx", VX (4, 866), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
11674 {"evstdwu", VX (4, 867), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
11675 {"evstdhmx", VX (4, 868), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
11676 {"evstdhu", VX (4, 869), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
11677 {"evstdbmx", VX (4, 870), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
11678 {"evstdbu", VX (4, 871), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
11679 {"evlwbemx", VX (4, 874), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11680 {"evlwbeu", VX (4, 875), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11681 {"evlwboumx", VX (4, 876), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11682 {"evlwbouu", VX (4, 877), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11683 {"evlwbosmx", VX (4, 878), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11684 {"evlwbosu", VX (4, 879), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11685 {"evstwhemx", VX (4, 880), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
11686 {"evstwheu", VX (4, 881), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11687 {"evstwbemx", VX (4, 882), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
11688 {"evstwbeu", VX (4, 883), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11689 {"evstwhomx", VX (4, 884), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
11690 {"evstwhou", VX (4, 885), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11691 {"evstwbomx", VX (4, 886), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
11692 {"evstwbou", VX (4, 887), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11693 {"evstwwemx", VX (4, 888), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
11694 {"evstwweu", VX (4, 889), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11695 {"evstwbmx", VX (4, 890), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
11696 {"evstwbu", VX (4, 891), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11697 {"evstwwomx", VX (4, 892), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
11698 {"evstwwou", VX (4, 893), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11699 {"evsthbmx", VX (4, 894), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
11700 {"evsthbu", VX (4, 895), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_2_EX0, RA}},
11701 {"evmhusi", VX (4, 1024), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11702 {"evmhssi", VX (4, 1025), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11703 {"evmhsusi", VX (4, 1026), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11704 {"evmhssf", VX (4, 1028), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11705 {"evmhumi", VX (4, 1029), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11706 {"evmhssfr", VX (4, 1030), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11707 {"evmhesumi", VX (4, 1034), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11708 {"evmhosumi", VX (4, 1038), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11709 {"evmbeumi", VX (4, 1048), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11710 {"evmbesmi", VX (4, 1049), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11711 {"evmbesumi", VX (4, 1050), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11712 {"evmboumi", VX (4, 1052), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11713 {"evmbosmi", VX (4, 1053), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11714 {"evmbosumi", VX (4, 1054), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11715 {"evmhesumia", VX (4, 1066), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11716 {"evmhosumia", VX (4, 1070), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11717 {"evmbeumia", VX (4, 1080), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11718 {"evmbesmia", VX (4, 1081), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11719 {"evmbesumia", VX (4, 1082), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11720 {"evmboumia", VX (4, 1084), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11721 {"evmbosmia", VX (4, 1085), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11722 {"evmbosumia", VX (4, 1086), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11723 {"evmwusiw", VX (4, 1088), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11724 {"evmwssiw", VX (4, 1089), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11725 {"evmwhssfr", VX (4, 1094), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11726 {"evmwehgsmfr", VX (4, 1110), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11727 {"evmwehgsmf", VX (4, 1111), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11728 {"evmwohgsmfr", VX (4, 1118), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11729 {"evmwohgsmf", VX (4, 1119), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11730 {"evmwhssfra", VX (4, 1126), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11731 {"evmwehgsmfra", VX (4, 1142), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11732 {"evmwehgsmfa", VX (4, 1143), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11733 {"evmwohgsmfra", VX (4, 1150), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11734 {"evmwohgsmfa", VX (4, 1151), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11735 {"evaddusiaa", VX_RB_CONST(4, 1152, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11736 {"evaddssiaa", VX_RB_CONST(4, 1153, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11737 {"evsubfusiaa", VX_RB_CONST(4, 1154, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11738 {"evsubfssiaa", VX_RB_CONST(4, 1155, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11739 {"evaddsmiaa", VX_RB_CONST(4, 1156, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11740 {"evsubfsmiaa", VX_RB_CONST(4, 1158, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11741 {"evaddh", VX (4, 1160), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11742 {"evaddhss", VX (4, 1161), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11743 {"evsubfh", VX (4, 1162), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11744 {"evsubfhss", VX (4, 1163), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11745 {"evaddhx", VX (4, 1164), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11746 {"evaddhxss", VX (4, 1165), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11747 {"evsubfhx", VX (4, 1166), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11748 {"evsubfhxss", VX (4, 1167), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11749 {"evaddd", VX (4, 1168), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11750 {"evadddss", VX (4, 1169), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11751 {"evsubfd", VX (4, 1170), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11752 {"evsubfdss", VX (4, 1171), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11753 {"evaddb", VX (4, 1172), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11754 {"evaddbss", VX (4, 1173), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11755 {"evsubfb", VX (4, 1174), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11756 {"evsubfbss", VX (4, 1175), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11757 {"evaddsubfh", VX (4, 1176), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11758 {"evaddsubfhss", VX (4, 1177), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11759 {"evsubfaddh", VX (4, 1178), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11760 {"evsubfaddhss", VX (4, 1179), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11761 {"evaddsubfhx", VX (4, 1180), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11762 {"evaddsubfhxss", VX (4, 1181), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11763 {"evsubfaddhx", VX (4, 1182), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11764 {"evsubfaddhxss", VX (4, 1183), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11765 {"evadddus", VX (4, 1184), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11766 {"evaddbus", VX (4, 1185), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11767 {"evsubfdus", VX (4, 1186), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11768 {"evsubfbus", VX (4, 1187), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11769 {"evaddwus", VX (4, 1188), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11770 {"evaddwxus", VX (4, 1189), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11771 {"evsubfwus", VX (4, 1190), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11772 {"evsubfwxus", VX (4, 1191), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11773 {"evadd2subf2h", VX (4, 1192), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11774 {"evadd2subf2hss", VX (4, 1193), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11775 {"evsubf2add2h", VX (4, 1194), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11776 {"evsubf2add2hss", VX (4, 1195), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11777 {"evaddhus", VX (4, 1196), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11778 {"evaddhxus", VX (4, 1197), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11779 {"evsubfhus", VX (4, 1198), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11780 {"evsubfhxus", VX (4, 1199), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11781 {"evaddwss", VX (4, 1201), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11782 {"evsubfwss", VX (4, 1203), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11783 {"evaddwx", VX (4, 1204), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11784 {"evaddwxss", VX (4, 1205), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11785 {"evsubfwx", VX (4, 1206), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11786 {"evsubfwxss", VX (4, 1207), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11787 {"evaddsubfw", VX (4, 1208), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11788 {"evaddsubfwss", VX (4, 1209), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11789 {"evsubfaddw", VX (4, 1210), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11790 {"evsubfaddwss", VX (4, 1211), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11791 {"evaddsubfwx", VX (4, 1212), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11792 {"evaddsubfwxss", VX (4, 1213), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11793 {"evsubfaddwx", VX (4, 1214), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11794 {"evsubfaddwxss", VX (4, 1215), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11795 {"evmar", VX_SPE2_EVMAR (4, 1220), VX_SPE2_EVMAR_MASK, PPCSPE2, 0, {RD}},
11796 {"evsumwu", VX_RB_CONST(4, 1221, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11797 {"evsumws", VX_RB_CONST(4, 1221, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11798 {"evsum4bu", VX_RB_CONST(4, 1221, 2), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11799 {"evsum4bs", VX_RB_CONST(4, 1221, 3), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11800 {"evsum2hu", VX_RB_CONST(4, 1221, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11801 {"evsum2hs", VX_RB_CONST(4, 1221, 5), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11802 {"evdiff2his", VX_RB_CONST(4, 1221, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11803 {"evsum2his", VX_RB_CONST(4, 1221, 7), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11804 {"evsumwua", VX_RB_CONST(4, 1221, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11805 {"evsumwsa", VX_RB_CONST(4, 1221, 17), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11806 {"evsum4bua", VX_RB_CONST(4, 1221, 18), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11807 {"evsum4bsa", VX_RB_CONST(4, 1221, 19), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11808 {"evsum2hua", VX_RB_CONST(4, 1221, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11809 {"evsum2hsa", VX_RB_CONST(4, 1221, 21), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11810 {"evdiff2hisa", VX_RB_CONST(4, 1221, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11811 {"evsum2hisa", VX_RB_CONST(4, 1221, 23), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11812 {"evsumwuaa", VX_RB_CONST(4, 1221, 24), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11813 {"evsumwsaa", VX_RB_CONST(4, 1221, 25), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11814 {"evsum4buaaw", VX_RB_CONST(4, 1221, 26), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11815 {"evsum4bsaaw", VX_RB_CONST(4, 1221, 27), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11816 {"evsum2huaaw", VX_RB_CONST(4, 1221, 28), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11817 {"evsum2hsaaw", VX_RB_CONST(4, 1221, 29), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11818 {"evdiff2hisaaw", VX_RB_CONST(4, 1221, 30), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11819 {"evsum2hisaaw", VX_RB_CONST(4, 1221, 31), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11820 {"evdivwsf", VX (4, 1228), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11821 {"evdivwuf", VX (4, 1229), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11822 {"evdivs", VX (4, 1230), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11823 {"evdivu", VX (4, 1231), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11824 {"evaddwegsi", VX (4, 1232), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11825 {"evaddwegsf", VX (4, 1233), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11826 {"evsubfwegsi", VX (4, 1234), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11827 {"evsubfwegsf", VX (4, 1235), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11828 {"evaddwogsi", VX (4, 1236), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11829 {"evaddwogsf", VX (4, 1237), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11830 {"evsubfwogsi", VX (4, 1238), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11831 {"evsubfwogsf", VX (4, 1239), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11832 {"evaddhhiuw", VX (4, 1240), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11833 {"evaddhhisw", VX (4, 1241), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11834 {"evsubfhhiuw", VX (4, 1242), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11835 {"evsubfhhisw", VX (4, 1243), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11836 {"evaddhlouw", VX (4, 1244), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11837 {"evaddhlosw", VX (4, 1245), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11838 {"evsubfhlouw", VX (4, 1246), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11839 {"evsubfhlosw", VX (4, 1247), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11840 {"evmhesusiaaw", VX (4, 1282), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11841 {"evmhosusiaaw", VX (4, 1286), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11842 {"evmhesumiaaw", VX (4, 1290), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11843 {"evmhosumiaaw", VX (4, 1294), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11844 {"evmbeusiaah", VX (4, 1296), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11845 {"evmbessiaah", VX (4, 1297), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11846 {"evmbesusiaah", VX (4, 1298), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11847 {"evmbousiaah", VX (4, 1300), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11848 {"evmbossiaah", VX (4, 1301), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11849 {"evmbosusiaah", VX (4, 1302), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11850 {"evmbeumiaah", VX (4, 1304), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11851 {"evmbesmiaah", VX (4, 1305), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11852 {"evmbesumiaah", VX (4, 1306), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11853 {"evmboumiaah", VX (4, 1308), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11854 {"evmbosmiaah", VX (4, 1309), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11855 {"evmbosumiaah", VX (4, 1310), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11856 {"evmwlusiaaw3", VX (4, 1346), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11857 {"evmwlssiaaw3", VX (4, 1347), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11858 {"evmwhssfraaw3", VX (4, 1348), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11859 {"evmwhssfaaw3", VX (4, 1349), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11860 {"evmwhssfraaw", VX (4, 1350), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11861 {"evmwhssfaaw", VX (4, 1351), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11862 {"evmwlumiaaw3", VX (4, 1354), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11863 {"evmwlsmiaaw3", VX (4, 1355), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11864 {"evmwusiaa", VX (4, 1360), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11865 {"evmwssiaa", VX (4, 1361), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11866 {"evmwehgsmfraa", VX (4, 1366), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11867 {"evmwehgsmfaa", VX (4, 1367), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11868 {"evmwohgsmfraa", VX (4, 1374), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11869 {"evmwohgsmfaa", VX (4, 1375), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11870 {"evmhesusianw", VX (4, 1410), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11871 {"evmhosusianw", VX (4, 1414), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11872 {"evmhesumianw", VX (4, 1418), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11873 {"evmhosumianw", VX (4, 1422), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11874 {"evmbeusianh", VX (4, 1424), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11875 {"evmbessianh", VX (4, 1425), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11876 {"evmbesusianh", VX (4, 1426), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11877 {"evmbousianh", VX (4, 1428), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11878 {"evmbossianh", VX (4, 1429), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11879 {"evmbosusianh", VX (4, 1430), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11880 {"evmbeumianh", VX (4, 1432), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11881 {"evmbesmianh", VX (4, 1433), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11882 {"evmbesumianh", VX (4, 1434), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11883 {"evmboumianh", VX (4, 1436), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11884 {"evmbosmianh", VX (4, 1437), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11885 {"evmbosumianh", VX (4, 1438), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11886 {"evmwlusianw3", VX (4, 1474), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11887 {"evmwlssianw3", VX (4, 1475), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11888 {"evmwhssfranw3", VX (4, 1476), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11889 {"evmwhssfanw3", VX (4, 1477), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11890 {"evmwhssfranw", VX (4, 1478), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11891 {"evmwhssfanw", VX (4, 1479), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11892 {"evmwlumianw3", VX (4, 1482), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11893 {"evmwlsmianw3", VX (4, 1483), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11894 {"evmwusian", VX (4, 1488), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11895 {"evmwssian", VX (4, 1489), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11896 {"evmwehgsmfran", VX (4, 1494), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11897 {"evmwehgsmfan", VX (4, 1495), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11898 {"evmwohgsmfran", VX (4, 1502), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11899 {"evmwohgsmfan", VX (4, 1503), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11900 {"evseteqb", VX (4, 1536), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11901 {"evseteqb.", VX (4, 1537), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11902 {"evseteqh", VX (4, 1538), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11903 {"evseteqh.", VX (4, 1539), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11904 {"evseteqw", VX (4, 1540), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11905 {"evseteqw.", VX (4, 1541), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11906 {"evsetgthu", VX (4, 1544), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11907 {"evsetgthu.", VX (4, 1545), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11908 {"evsetgths", VX (4, 1546), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11909 {"evsetgths.", VX (4, 1547), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11910 {"evsetgtwu", VX (4, 1548), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11911 {"evsetgtwu.", VX (4, 1549), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11912 {"evsetgtws", VX (4, 1550), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11913 {"evsetgtws.", VX (4, 1551), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11914 {"evsetgtbu", VX (4, 1552), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11915 {"evsetgtbu.", VX (4, 1553), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11916 {"evsetgtbs", VX (4, 1554), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11917 {"evsetgtbs.", VX (4, 1555), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11918 {"evsetltbu", VX (4, 1556), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11919 {"evsetltbu.", VX (4, 1557), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11920 {"evsetltbs", VX (4, 1558), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11921 {"evsetltbs.", VX (4, 1559), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11922 {"evsetlthu", VX (4, 1560), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11923 {"evsetlthu.", VX (4, 1561), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11924 {"evsetlths", VX (4, 1562), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11925 {"evsetlths.", VX (4, 1563), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11926 {"evsetltwu", VX (4, 1564), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11927 {"evsetltwu.", VX (4, 1565), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11928 {"evsetltws", VX (4, 1566), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11929 {"evsetltws.", VX (4, 1567), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11930 {"evsaduw", VX (4, 1568), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11931 {"evsadsw", VX (4, 1569), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11932 {"evsad4ub", VX (4, 1570), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11933 {"evsad4sb", VX (4, 1571), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11934 {"evsad2uh", VX (4, 1572), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11935 {"evsad2sh", VX (4, 1573), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11936 {"evsaduwa", VX (4, 1576), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11937 {"evsadswa", VX (4, 1577), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11938 {"evsad4uba", VX (4, 1578), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11939 {"evsad4sba", VX (4, 1579), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11940 {"evsad2uha", VX (4, 1580), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11941 {"evsad2sha", VX (4, 1581), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11942 {"evabsdifuw", VX (4, 1584), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11943 {"evabsdifsw", VX (4, 1585), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11944 {"evabsdifub", VX (4, 1586), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11945 {"evabsdifsb", VX (4, 1587), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11946 {"evabsdifuh", VX (4, 1588), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11947 {"evabsdifsh", VX (4, 1589), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11948 {"evsaduwaa", VX (4, 1592), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11949 {"evsadswaa", VX (4, 1593), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11950 {"evsad4ubaaw", VX (4, 1594), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11951 {"evsad4sbaaw", VX (4, 1595), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11952 {"evsad2uhaaw", VX (4, 1596), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11953 {"evsad2shaaw", VX (4, 1597), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11954 {"evpkshubs", VX (4, 1600), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11955 {"evpkshsbs", VX (4, 1601), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11956 {"evpkswuhs", VX (4, 1602), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11957 {"evpkswshs", VX (4, 1603), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11958 {"evpkuhubs", VX (4, 1604), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11959 {"evpkuwuhs", VX (4, 1605), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11960 {"evpkswshilvs", VX (4, 1606), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11961 {"evpkswgshefrs", VX (4, 1607), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11962 {"evpkswshfrs", VX (4, 1608), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11963 {"evpkswshilvfrs", VX (4, 1609), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11964 {"evpksdswfrs", VX (4, 1610), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11965 {"evpksdshefrs", VX (4, 1611), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11966 {"evpkuduws", VX (4, 1612), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11967 {"evpksdsws", VX (4, 1613), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11968 {"evpkswgswfrs", VX (4, 1614), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11969 {"evilveh", VX (4, 1616), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11970 {"evilveoh", VX (4, 1617), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11971 {"evilvhih", VX (4, 1618), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11972 {"evilvhiloh", VX (4, 1619), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11973 {"evilvloh", VX (4, 1620), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11974 {"evilvlohih", VX (4, 1621), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11975 {"evilvoeh", VX (4, 1622), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11976 {"evilvoh", VX (4, 1623), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11977 {"evdlveb", VX (4, 1624), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11978 {"evdlveh", VX (4, 1625), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11979 {"evdlveob", VX (4, 1626), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11980 {"evdlveoh", VX (4, 1627), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11981 {"evdlvob", VX (4, 1628), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11982 {"evdlvoh", VX (4, 1629), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11983 {"evdlvoeb", VX (4, 1630), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11984 {"evdlvoeh", VX (4, 1631), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11985 {"evmaxbu", VX (4, 1632), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11986 {"evmaxbs", VX (4, 1633), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11987 {"evmaxhu", VX (4, 1634), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11988 {"evmaxhs", VX (4, 1635), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11989 {"evmaxwu", VX (4, 1636), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11990 {"evmaxws", VX (4, 1637), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11991 {"evmaxdu", VX (4, 1638), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11992 {"evmaxds", VX (4, 1639), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11993 {"evminbu", VX (4, 1640), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11994 {"evminbs", VX (4, 1641), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11995 {"evminhu", VX (4, 1642), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11996 {"evminhs", VX (4, 1643), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11997 {"evminwu", VX (4, 1644), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11998 {"evminws", VX (4, 1645), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
11999 {"evmindu", VX (4, 1646), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
12000 {"evminds", VX (4, 1647), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
12001 {"evavgwu", VX (4, 1648), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
12002 {"evavgws", VX (4, 1649), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
12003 {"evavgbu", VX (4, 1650), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
12004 {"evavgbs", VX (4, 1651), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
12005 {"evavghu", VX (4, 1652), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
12006 {"evavghs", VX (4, 1653), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
12007 {"evavgdu", VX (4, 1654), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
12008 {"evavgds", VX (4, 1655), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
12009 {"evavgwur", VX (4, 1656), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
12010 {"evavgwsr", VX (4, 1657), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
12011 {"evavgbur", VX (4, 1658), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
12012 {"evavgbsr", VX (4, 1659), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
12013 {"evavghur", VX (4, 1660), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
12014 {"evavghsr", VX (4, 1661), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
12015 {"evavgdur", VX (4, 1662), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
12016 {"evavgdsr", VX (4, 1663), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
12017 };
12018
12019 const unsigned int spe2_num_opcodes = ARRAY_SIZE (spe2_opcodes);
12020
12021 #include "ppc-svp64-opc.c"