]> Git Repo - binutils.git/blob - opcodes/ppc-opc.c
PR27684, PowerPC missing mfsprg0 and others
[binutils.git] / opcodes / ppc-opc.c
1 /* ppc-opc.c -- PowerPC opcode list
2    Copyright (C) 1994-2021 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
27 /* This file holds the PowerPC opcode table.  The opcode table
28    includes almost all of the extended instruction mnemonics.  This
29    permits the disassembler to use them, and simplifies the assembler
30    logic, at the cost of increasing the table size.  The table is
31    strictly constant data, so the compiler should be able to put it in
32    the text segment.
33
34    This file also holds the operand table.  All knowledge about
35    inserting operands into instructions and vice-versa is kept in this
36    file.  */
37
38 /* The functions used to insert and extract complicated operands.  */
39
40 /* The ARX, ARY, RX and RY operands are alternate encodings of GPRs.  */
41
42 static uint64_t
43 insert_arx (uint64_t insn,
44             int64_t value,
45             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
46             const char **errmsg ATTRIBUTE_UNUSED)
47 {
48   value -= 8;
49   if (value < 0 || value >= 16)
50     {
51       *errmsg = _("invalid register");
52       value = 0xf;
53     }
54   return insn | value;
55 }
56
57 static int64_t
58 extract_arx (uint64_t insn,
59              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
60              int *invalid ATTRIBUTE_UNUSED)
61 {
62   return (insn & 0xf) + 8;
63 }
64
65 static uint64_t
66 insert_ary (uint64_t insn,
67             int64_t value,
68             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
69             const char **errmsg ATTRIBUTE_UNUSED)
70 {
71   value -= 8;
72   if (value < 0 || value >= 16)
73     {
74       *errmsg = _("invalid register");
75       value = 0xf;
76     }
77   return insn | (value << 4);
78 }
79
80 static int64_t
81 extract_ary (uint64_t insn,
82              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
83              int *invalid ATTRIBUTE_UNUSED)
84 {
85   return ((insn >> 4) & 0xf) + 8;
86 }
87
88 static uint64_t
89 insert_rx (uint64_t insn,
90            int64_t value,
91            ppc_cpu_t dialect ATTRIBUTE_UNUSED,
92            const char **errmsg)
93 {
94   if (value >= 0 && value < 8)
95     ;
96   else if (value >= 24 && value <= 31)
97     value -= 16;
98   else
99     {
100       *errmsg = _("invalid register");
101       value = 0xf;
102     }
103   return insn | value;
104 }
105
106 static int64_t
107 extract_rx (uint64_t insn,
108             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
109             int *invalid ATTRIBUTE_UNUSED)
110 {
111   int64_t value = insn & 0xf;
112   if (value >= 0 && value < 8)
113     return value;
114   else
115     return value + 16;
116 }
117
118 static uint64_t
119 insert_ry (uint64_t insn,
120            int64_t value,
121            ppc_cpu_t dialect ATTRIBUTE_UNUSED,
122            const char **errmsg)
123 {
124   if (value >= 0 && value < 8)
125     ;
126   else if (value >= 24 && value <= 31)
127     value -= 16;
128   else
129     {
130       *errmsg = _("invalid register");
131       value = 0xf;
132     }
133   return insn | (value << 4);
134 }
135
136 static int64_t
137 extract_ry (uint64_t insn,
138             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
139             int *invalid ATTRIBUTE_UNUSED)
140 {
141   int64_t value = (insn >> 4) & 0xf;
142   if (value >= 0 && value < 8)
143     return value;
144   else
145     return value + 16;
146 }
147
148 /* The BA and BB fields in an XL form instruction or the RA and RB fields or
149    VRA and VRB fields in a VX form instruction when they must be the same.
150    This is used for extended mnemonics like crclr.  The extraction function
151    enforces that the fields are the same.  */
152
153 static uint64_t
154 insert_bab (uint64_t insn,
155             int64_t value,
156             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
157             const char **errmsg ATTRIBUTE_UNUSED)
158 {
159   value &= 0x1f;
160   return insn | (value << 16) | (value << 11);
161 }
162
163 static int64_t
164 extract_bab (uint64_t insn,
165              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
166              int *invalid)
167 {
168   int64_t ba = (insn >> 16) & 0x1f;
169   int64_t bb = (insn >> 11) & 0x1f;
170
171   if (ba != bb)
172     *invalid = 1;
173   return ba;
174 }
175
176 /* The BT, BA and BB fields in an XL form instruction when they must all be
177    the same.  This is used for extended mnemonics like crclr.  The extraction
178    function enforces that the fields are the same.  */
179
180 static uint64_t
181 insert_btab (uint64_t insn,
182              int64_t value,
183              ppc_cpu_t dialect,
184              const char **errmsg)
185 {
186   value &= 0x1f;
187   return (value << 21) | insert_bab (insn, value, dialect, errmsg);
188 }
189
190 static int64_t
191 extract_btab (uint64_t insn,
192              ppc_cpu_t dialect,
193              int *invalid)
194 {
195   int64_t bt = (insn >> 21) & 0x1f;
196   int64_t bab = extract_bab (insn, dialect, invalid);
197
198   if (bt != bab)
199     *invalid = 1;
200   return bt;
201 }
202
203 /* The BD field in a B form instruction when the - modifier is used.
204    This modifier means that the branch is not expected to be taken.
205    For chips built to versions of the architecture prior to version 2
206    (ie. not Power4 compatible), we set the y bit of the BO field to 1
207    if the offset is negative.  When extracting, we require that the y
208    bit be 1 and that the offset be positive, since if the y bit is 0
209    we just want to print the normal form of the instruction.
210    Power4 compatible targets use two bits, "a", and "t", instead of
211    the "y" bit.  "at" == 00 => no hint, "at" == 01 => unpredictable,
212    "at" == 10 => not taken, "at" == 11 => taken.  The "t" bit is 00001
213    in BO field, the "a" bit is 00010 for branch on CR(BI) and 01000
214    for branch on CTR.  We only handle the taken/not-taken hint here.
215    Note that we don't relax the conditions tested here when
216    disassembling with -Many because insns using extract_bdm and
217    extract_bdp always occur in pairs.  One or the other will always
218    be valid.  */
219
220 #define ISA_V2 (PPC_OPCODE_POWER4 | PPC_OPCODE_E500MC | PPC_OPCODE_TITAN)
221
222 static uint64_t
223 insert_bdm (uint64_t insn,
224             int64_t value,
225             ppc_cpu_t dialect,
226             const char **errmsg ATTRIBUTE_UNUSED)
227 {
228   if ((dialect & ISA_V2) == 0)
229     {
230       if ((value & 0x8000) != 0)
231         insn |= 1 << 21;
232     }
233   else
234     {
235       if ((insn & (0x14 << 21)) == (0x04 << 21))
236         insn |= 0x02 << 21;
237       else if ((insn & (0x14 << 21)) == (0x10 << 21))
238         insn |= 0x08 << 21;
239     }
240   return insn | (value & 0xfffc);
241 }
242
243 static int64_t
244 extract_bdm (uint64_t insn,
245              ppc_cpu_t dialect,
246              int *invalid)
247 {
248   if ((dialect & ISA_V2) == 0)
249     {
250       if (((insn & (1 << 21)) == 0) != ((insn & (1 << 15)) == 0))
251         *invalid = 1;
252     }
253   else
254     {
255       if ((insn & (0x17 << 21)) != (0x06 << 21)
256           && (insn & (0x1d << 21)) != (0x18 << 21))
257         *invalid = 1;
258     }
259
260   return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
261 }
262
263 /* The BD field in a B form instruction when the + modifier is used.
264    This is like BDM, above, except that the branch is expected to be
265    taken.  */
266
267 static uint64_t
268 insert_bdp (uint64_t insn,
269             int64_t value,
270             ppc_cpu_t dialect,
271             const char **errmsg ATTRIBUTE_UNUSED)
272 {
273   if ((dialect & ISA_V2) == 0)
274     {
275       if ((value & 0x8000) == 0)
276         insn |= 1 << 21;
277     }
278   else
279     {
280       if ((insn & (0x14 << 21)) == (0x04 << 21))
281         insn |= 0x03 << 21;
282       else if ((insn & (0x14 << 21)) == (0x10 << 21))
283         insn |= 0x09 << 21;
284     }
285   return insn | (value & 0xfffc);
286 }
287
288 static int64_t
289 extract_bdp (uint64_t insn,
290              ppc_cpu_t dialect,
291              int *invalid)
292 {
293   if ((dialect & ISA_V2) == 0)
294     {
295       if (((insn & (1 << 21)) == 0) == ((insn & (1 << 15)) == 0))
296         *invalid = 1;
297     }
298   else
299     {
300       if ((insn & (0x17 << 21)) != (0x07 << 21)
301           && (insn & (0x1d << 21)) != (0x19 << 21))
302         *invalid = 1;
303     }
304
305   return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
306 }
307
308 static inline int
309 valid_bo_pre_v2 (int64_t value)
310 {
311   /* Certain encodings have bits that are required to be zero.
312      These are (z must be zero, y may be anything):
313          0000y
314          0001y
315          001zy
316          0100y
317          0101y
318          011zy
319          1z00y
320          1z01y
321          1z1zz
322   */
323   if ((value & 0x14) == 0)
324     /* BO: 0000y, 0001y, 0100y, 0101y.  */
325     return 1;
326   else if ((value & 0x14) == 0x4)
327     /* BO: 001zy, 011zy.  */
328     return (value & 0x2) == 0;
329   else if ((value & 0x14) == 0x10)
330     /* BO: 1z00y, 1z01y.  */
331     return (value & 0x8) == 0;
332   else
333     /* BO: 1z1zz.  */
334     return value == 0x14;
335 }
336
337 static inline int
338 valid_bo_post_v2 (int64_t value)
339 {
340   /* Certain encodings have bits that are required to be zero.
341      These are (z must be zero, a & t may be anything):
342          0000z
343          0001z
344          001at
345          0100z
346          0101z
347          011at
348          1a00t
349          1a01t
350          1z1zz
351   */
352   if ((value & 0x14) == 0)
353     /* BO: 0000z, 0001z, 0100z, 0101z.  */
354     return (value & 0x1) == 0;
355   else if ((value & 0x14) == 0x14)
356     /* BO: 1z1zz.  */
357     return value == 0x14;
358   else if ((value & 0x14) == 0x4)
359     /* BO: 001at, 011at, with "at" == 0b01 being reserved.  */
360     return (value & 0x3) != 1;
361   else if ((value & 0x14) == 0x10)
362     /* BO: 1a00t, 1a01t, with "at" == 0b01 being reserved.  */
363     return (value & 0x9) != 1;
364   else
365     return 1;
366 }
367
368 /* Check for legal values of a BO field.  */
369
370 static int
371 valid_bo (int64_t value, ppc_cpu_t dialect, int extract)
372 {
373   int valid_y = valid_bo_pre_v2 (value);
374   int valid_at = valid_bo_post_v2 (value);
375
376   /* When disassembling with -Many, accept either encoding on the
377      second pass through opcodes.  */
378   if (extract && dialect == ~(ppc_cpu_t) PPC_OPCODE_ANY)
379     return valid_y || valid_at;
380   if ((dialect & ISA_V2) == 0)
381     return valid_y;
382   else
383     return valid_at;
384 }
385
386 /* The BO field in a B form instruction.  Warn about attempts to set
387    the field to an illegal value.  */
388
389 static uint64_t
390 insert_bo (uint64_t insn,
391            int64_t value,
392            ppc_cpu_t dialect,
393            const char **errmsg)
394 {
395   if (!valid_bo (value, dialect, 0))
396     *errmsg = _("invalid conditional option");
397   else if (PPC_OP (insn) == 19
398            && (((insn >> 1) & 0x3ff) == 528) && ! (value & 4))
399     *errmsg = _("invalid counter access");
400   return insn | ((value & 0x1f) << 21);
401 }
402
403 static int64_t
404 extract_bo (uint64_t insn,
405             ppc_cpu_t dialect,
406             int *invalid)
407 {
408   int64_t value = (insn >> 21) & 0x1f;
409   if (!valid_bo (value, dialect, 1))
410     *invalid = 1;
411   return value;
412 }
413
414 /* For the given BO value, return a bit mask detailing which bits
415    define the branch hints.  */
416
417 static int64_t
418 get_bo_hint_mask (int64_t bo, ppc_cpu_t dialect)
419 {
420   if ((dialect & ISA_V2) == 0)
421     {
422       if ((bo & 0x14) != 0x14)
423         /* BO: 0000y, 0001y, 001zy, 0100y, 0101y, 011zy, 1z00y, 1z01y .  */
424         return 1;
425       else
426         /* BO: 1z1zz.  */
427         return 0;
428     }
429   else
430     {
431       if ((bo & 0x14) == 0x4)
432         /* BO: 001at, 011at.  */
433         return 0x3;
434       else if ((bo & 0x14) == 0x10)
435         /* BO: 1a00t, 1a01t.  */
436         return 0x9;
437       else
438         /* BO: 0000z, 0001z, 0100z, 0101z, 1z1zz.  */
439         return 0;
440     }
441 }
442
443 /* The BO field in a B form instruction when the + or - modifier is used.  */
444
445 static uint64_t
446 insert_boe (uint64_t insn,
447             int64_t value,
448             ppc_cpu_t dialect,
449             const char **errmsg,
450             int branch_taken)
451 {
452   int64_t implied_hint;
453   int64_t hint_mask = get_bo_hint_mask (value, dialect);
454
455   if (branch_taken)
456     implied_hint = hint_mask;
457   else
458     implied_hint = hint_mask & ~1;
459
460   /* The branch hint bit(s) in the BO field must either be zero or exactly
461      match the branch hint bits implied by the '+' or '-' modifier.  */
462   if (implied_hint == 0)
463     *errmsg = _("BO value implies no branch hint, when using + or - modifier");
464   else if ((value & hint_mask) != 0
465            && (value & hint_mask) != implied_hint)
466     {
467       if ((dialect & ISA_V2) == 0)
468         *errmsg = _("attempt to set y bit when using + or - modifier");
469       else
470         *errmsg = _("attempt to set 'at' bits when using + or - modifier");
471     }
472
473   value |= implied_hint;
474
475   return insert_bo (insn, value, dialect, errmsg);
476 }
477
478 static int64_t
479 extract_boe (uint64_t insn,
480              ppc_cpu_t dialect,
481              int *invalid,
482              int branch_taken)
483 {
484   int64_t value = (insn >> 21) & 0x1f;
485   int64_t implied_hint;
486   int64_t hint_mask = get_bo_hint_mask (value, dialect);
487
488   if (branch_taken)
489     implied_hint = hint_mask;
490   else
491     implied_hint = hint_mask & ~1;
492
493   if (!valid_bo (value, dialect, 1)
494       || implied_hint == 0
495       || (value & hint_mask) != implied_hint)
496     *invalid = 1;
497   return value;
498 }
499
500 /* The BO field in a B form instruction when the - modifier is used.  */
501
502 static uint64_t
503 insert_bom (uint64_t insn,
504             int64_t value,
505             ppc_cpu_t dialect,
506             const char **errmsg)
507 {
508   return insert_boe (insn, value, dialect, errmsg, 0);
509 }
510
511 static int64_t
512 extract_bom (uint64_t insn,
513              ppc_cpu_t dialect,
514              int *invalid)
515 {
516   return extract_boe (insn, dialect, invalid, 0);
517 }
518
519 /* The BO field in a B form instruction when the + modifier is used.  */
520
521 static uint64_t
522 insert_bop (uint64_t insn,
523             int64_t value,
524             ppc_cpu_t dialect,
525             const char **errmsg)
526 {
527   return insert_boe (insn, value, dialect, errmsg, 1);
528 }
529
530 static int64_t
531 extract_bop (uint64_t insn,
532              ppc_cpu_t dialect,
533              int *invalid)
534 {
535   return extract_boe (insn, dialect, invalid, 1);
536 }
537
538 /* The DCMX field in a X form instruction when the field is split
539    into separate DC, DM and DX fields.  */
540
541 static uint64_t
542 insert_dcmxs (uint64_t insn,
543               int64_t value,
544               ppc_cpu_t dialect ATTRIBUTE_UNUSED,
545               const char **errmsg ATTRIBUTE_UNUSED)
546 {
547   return (insn
548           | ((value & 0x1f) << 16)
549           | ((value & 0x20) >> 3)
550           | (value & 0x40));
551 }
552
553 static int64_t
554 extract_dcmxs (uint64_t insn,
555                ppc_cpu_t dialect ATTRIBUTE_UNUSED,
556                int *invalid ATTRIBUTE_UNUSED)
557 {
558   return (insn & 0x40) | ((insn << 3) & 0x20) | ((insn >> 16) & 0x1f);
559 }
560
561 /* The DW field in a X form instruction when the field is split
562    into separate D and DX fields.  */
563
564 static uint64_t
565 insert_dw (uint64_t insn,
566            int64_t value,
567            ppc_cpu_t dialect ATTRIBUTE_UNUSED,
568            const char **errmsg ATTRIBUTE_UNUSED)
569 {
570   /* DW offsets must be in the range [-512, -8] and be a multiple of 8.  */
571   if (value < -512
572       || value > -8
573       || (value & 0x7) != 0)
574     *errmsg = _("invalid offset: must be in the range [-512, -8] "
575                 "and be a multiple of 8");
576
577   return insn | ((value & 0xf8) << 18) | ((value >> 8) & 1);
578 }
579
580 static int64_t
581 extract_dw (uint64_t insn,
582              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
583              int *invalid ATTRIBUTE_UNUSED)
584 {
585   int64_t dw = ((insn & 1) << 8) | ((insn >> 18) & 0xf8);
586   return dw - 512;
587 }
588
589 /* The D field in a DX form instruction when the field is split
590    into separate D0, D1 and D2 fields.  */
591
592 static uint64_t
593 insert_dxd (uint64_t insn,
594             int64_t value,
595             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
596             const char **errmsg ATTRIBUTE_UNUSED)
597 {
598   return insn | (value & 0xffc1) | ((value & 0x3e) << 15);
599 }
600
601 static int64_t
602 extract_dxd (uint64_t insn,
603              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
604              int *invalid ATTRIBUTE_UNUSED)
605 {
606   uint64_t dxd = (insn & 0xffc1) | ((insn >> 15) & 0x3e);
607   return (dxd ^ 0x8000) - 0x8000;
608 }
609
610 static uint64_t
611 insert_dxdn (uint64_t insn,
612              int64_t value,
613              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
614              const char **errmsg ATTRIBUTE_UNUSED)
615 {
616   return insert_dxd (insn, -value, dialect, errmsg);
617 }
618
619 static int64_t
620 extract_dxdn (uint64_t insn,
621               ppc_cpu_t dialect ATTRIBUTE_UNUSED,
622               int *invalid)
623 {
624   return -extract_dxd (insn, dialect, invalid);
625 }
626
627 /* The D field in a 64-bit D form prefix instruction when the field is split
628    into separate D0 and D1 fields.  */
629
630 static uint64_t
631 insert_d34 (uint64_t insn,
632             int64_t value,
633             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
634             const char **errmsg ATTRIBUTE_UNUSED)
635 {
636   return insn | ((value & 0x3ffff0000ULL) << 16) | (value & 0xffff);
637 }
638
639 static int64_t
640 extract_d34 (uint64_t insn,
641              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
642              int *invalid ATTRIBUTE_UNUSED)
643 {
644   int64_t mask = 1ULL << 33;
645   int64_t value = ((insn >> 16) & 0x3ffff0000ULL) | (insn & 0xffff);
646   value = (value ^ mask) - mask;
647   return value;
648 }
649
650 /* The NSI34 field in an 8-byte D form prefix instruction.  This is the same
651    as the SI34 field, only negated.  The extraction function always marks it
652    as invalid, since we never want to recognize an instruction which uses
653    a field of this type.  */
654
655 static uint64_t
656 insert_nsi34 (uint64_t insn,
657               int64_t value,
658               ppc_cpu_t dialect,
659               const char **errmsg)
660 {
661   return insert_d34 (insn, -value, dialect, errmsg);
662 }
663
664 static int64_t
665 extract_nsi34 (uint64_t insn,
666                ppc_cpu_t dialect,
667                int *invalid)
668 {
669   int64_t value = extract_d34 (insn, dialect, invalid);
670   *invalid = 1;
671   return -value;
672 }
673
674 /* The split IMM32 field in a vector splat insn.  */
675
676 static uint64_t
677 insert_imm32 (uint64_t insn,
678               int64_t value,
679               ppc_cpu_t dialect ATTRIBUTE_UNUSED,
680               const char **errmsg ATTRIBUTE_UNUSED)
681 {
682   return insn | ((value & 0xffff0000) << 16) | (value & 0xffff);
683 }
684
685 static int64_t
686 extract_imm32 (uint64_t insn,
687                ppc_cpu_t dialect ATTRIBUTE_UNUSED,
688                int *invalid ATTRIBUTE_UNUSED)
689 {
690   return (insn & 0xffff) | ((insn >> 16) & 0xffff0000);
691 }
692
693 /* The R field in an 8-byte prefix instruction when there are restrictions
694    between R's value and the RA value (ie, they cannot both be non zero).  */
695
696 static uint64_t
697 insert_pcrel (uint64_t insn,
698               int64_t value,
699               ppc_cpu_t dialect ATTRIBUTE_UNUSED,
700               const char **errmsg)
701 {
702   value &= 0x1;
703   int64_t ra = (insn >> 16) & 0x1f;
704   if (ra != 0 && value != 0)
705     *errmsg = _("invalid R operand");
706
707   return insn | (value << 52);
708 }
709
710 static int64_t
711 extract_pcrel (uint64_t insn,
712                ppc_cpu_t dialect ATTRIBUTE_UNUSED,
713                int *invalid)
714 {
715   /* If called with *invalid < 0 to return the value for missing
716      operands, *invalid will be the negative count of missing operands
717      including this one.  Return a default value of 1 if the PRA0/PRAQ
718      operand was also omitted (ie. *invalid is -2).  Return a default
719      value of 0 if the PRA0/PRAQ operand was not omitted
720      (ie. *invalid is -1).  */
721   if (*invalid < 0)
722     return ~ *invalid & 1;
723
724   int64_t ra = (insn >> 16) & 0x1f;
725   int64_t pcrel = (insn >> 52) & 0x1;
726   if (ra != 0 && pcrel != 0)
727     *invalid = 1;
728
729   return pcrel;
730 }
731
732 /* Variant of extract_pcrel that sets invalid for R bit set.  The idea
733    is to disassemble "paddi rt,0,offset,1" as "pla rt,offset".  */
734
735 static int64_t
736 extract_pcrel0 (uint64_t insn,
737                 ppc_cpu_t dialect,
738                 int *invalid)
739 {
740   int64_t pcrel = extract_pcrel (insn, dialect, invalid);
741   if (pcrel)
742     *invalid = 1;
743   return pcrel;
744 }
745
746 /* FXM mask in mfcr and mtcrf instructions.  */
747
748 static uint64_t
749 insert_fxm (uint64_t insn,
750             int64_t value,
751             ppc_cpu_t dialect,
752             const char **errmsg)
753 {
754   /* If we're handling the mfocrf and mtocrf insns ensure that exactly
755      one bit of the mask field is set.  */
756   if ((insn & (1 << 20)) != 0)
757     {
758       if (value == 0 || (value & -value) != value)
759         {
760           *errmsg = _("invalid mask field");
761           value = 0;
762         }
763     }
764
765   /* If only one bit of the FXM field is set, we can use the new form
766      of the instruction, which is faster.  Unlike the Power4 branch hint
767      encoding, this is not backward compatible.  Do not generate the
768      new form unless -mpower4 has been given, or -many and the two
769      operand form of mfcr was used.  */
770   else if (value > 0
771            && (value & -value) == value
772            && ((dialect & PPC_OPCODE_POWER4) != 0
773                || ((dialect & PPC_OPCODE_ANY) != 0
774                    && (insn & (0x3ff << 1)) == 19 << 1)))
775     insn |= 1 << 20;
776
777   /* Any other value on mfcr is an error.  */
778   else if ((insn & (0x3ff << 1)) == 19 << 1)
779     {
780       /* A value of -1 means we used the one operand form of
781          mfcr which is valid.  */
782       if (value != -1)
783         *errmsg = _("invalid mfcr mask");
784       value = 0;
785     }
786
787   return insn | ((value & 0xff) << 12);
788 }
789
790 static int64_t
791 extract_fxm (uint64_t insn,
792              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
793              int *invalid)
794 {
795   /* Return a value of -1 for a missing optional operand, which is
796      used as a flag by insert_fxm.  */
797   if (*invalid < 0)
798     return -1;
799
800   int64_t mask = (insn >> 12) & 0xff;
801   /* Is this a Power4 insn?  */
802   if ((insn & (1 << 20)) != 0)
803     {
804       /* Exactly one bit of MASK should be set.  */
805       if (mask == 0 || (mask & -mask) != mask)
806         *invalid = 1;
807     }
808
809   /* Check that non-power4 form of mfcr has a zero MASK.  */
810   else if ((insn & (0x3ff << 1)) == 19 << 1)
811     {
812       if (mask != 0)
813         *invalid = 1;
814       else
815         mask = -1;
816     }
817
818   return mask;
819 }
820
821 /* L field in the paste. instruction.  */
822
823 static uint64_t
824 insert_l1opt (uint64_t insn,
825             int64_t value,
826             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
827             const char **errmsg ATTRIBUTE_UNUSED)
828 {
829   return insn | ((value & 1) << 21);
830 }
831
832 static int64_t
833 extract_l1opt (uint64_t insn,
834              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
835              int *invalid)
836 {
837   /* Return a value of 1 for a missing optional operand.  */
838   if (*invalid < 0)
839     return 1;
840
841   return (insn >> 21) & 1;
842 }
843
844 static uint64_t
845 insert_li20 (uint64_t insn,
846              int64_t value,
847              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
848              const char **errmsg ATTRIBUTE_UNUSED)
849 {
850   return (insn
851           | ((value & 0xf0000) >> 5)
852           | ((value & 0x0f800) << 5)
853           | (value & 0x7ff));
854 }
855
856 static int64_t
857 extract_li20 (uint64_t insn,
858               ppc_cpu_t dialect ATTRIBUTE_UNUSED,
859               int *invalid ATTRIBUTE_UNUSED)
860 {
861   return ((((insn << 5) & 0xf0000)
862            | ((insn >> 5) & 0xf800)
863            | (insn & 0x7ff)) ^ 0x80000) - 0x80000;
864 }
865
866 /* The 2-bit/3-bit L or 2-bit WC field in a SYNC, DCBF or WAIT instruction.
867    For SYNC, some L values are reserved:
868      * Values 6 and 7 are reserved on newer server cpus.
869      * Value 3 is reserved on all server cpus.
870      * Value 2 is reserved on all other cpus.
871    For DCBF, some L values are reserved:
872      * Values 2, 5 and 7 are reserved on all cpus.
873    For WAIT, some WC values are reserved:
874      * Value 3 is reserved on all server cpus.
875      * Values 1 and 2 are reserved on older server cpus.  */
876
877 static uint64_t
878 insert_ls (uint64_t insn,
879            int64_t value,
880            ppc_cpu_t dialect,
881            const char **errmsg)
882 {
883   int64_t mask;
884
885   if (((insn >> 1) & 0x3ff) == 598)
886     {
887       /* For SYNC, some L values are illegal.  */
888       mask = (dialect & PPC_OPCODE_POWER10) ?  0x7 : 0x3;
889
890       /* If the value is within range, check for other illegal values.  */
891       if ((value & mask) == value)
892         switch (value)
893           {
894           case 2:
895             if (dialect & PPC_OPCODE_POWER4)
896               break;
897             /* Fall through.  */
898           case 3:
899           case 6:
900           case 7:
901             *errmsg = _("illegal L operand value");
902             break;
903           default:
904             break;
905           }
906     }
907   else if (((insn >> 1) & 0x3ff) == 86)
908     {
909       /* For DCBF, some L values are illegal.  */
910       mask = (dialect & PPC_OPCODE_POWER10) ?  0x7 : 0x3;
911
912       /* If the value is within range, check for other illegal values.  */
913       if ((value & mask) == value)
914         switch (value)
915           {
916           case 2:
917           case 5:
918           case 7:
919             *errmsg = _("illegal L operand value");
920             break;
921           default:
922             break;
923           }
924     }
925   else
926     {
927       /* For WAIT, some WC values are illegal.  */
928       mask = 0x3;
929
930       /* If the value is within range, check for other illegal values.  */
931       if ((dialect & PPC_OPCODE_A2) == 0
932           && (dialect & PPC_OPCODE_E500MC) == 0
933           && (value & mask) == value)
934         switch (value)
935           {
936           case 1:
937           case 2:
938             if (dialect & PPC_OPCODE_POWER10)
939               break;
940             /* Fall through.  */
941           case 3:
942             *errmsg = _("illegal WC operand value");
943             break;
944           default:
945             break;
946           }
947     }
948
949   return insn | ((value & mask) << 21);
950 }
951
952 static int64_t
953 extract_ls (uint64_t insn,
954             ppc_cpu_t dialect,
955             int *invalid)
956 {
957   uint64_t value;
958
959   /* Missing optional operands have a value of zero.  */
960   if (*invalid < 0)
961     return 0;
962
963   if (((insn >> 1) & 0x3ff) == 598)
964     {
965       /* For SYNC, some L values are illegal.  */
966       int64_t mask = (dialect & PPC_OPCODE_POWER10) ?  0x7 : 0x3;
967
968       value = (insn >> 21) & mask;
969       switch (value)
970         {
971         case 2:
972           if (dialect & PPC_OPCODE_POWER4)
973             break;
974           /* Fall through.  */
975         case 3:
976         case 6:
977         case 7:
978           *invalid = 1;
979           break;
980         default:
981           break;
982         }
983     }
984   else if (((insn >> 1) & 0x3ff) == 86)
985     {
986       /* For DCBF, some L values are illegal.  */
987       int64_t mask = (dialect & PPC_OPCODE_POWER10) ?  0x7 : 0x3;
988
989       value = (insn >> 21) & mask;
990       switch (value)
991         {
992         case 2:
993         case 5:
994         case 7:
995           *invalid = 1;
996           break;
997         default:
998           break;
999         }
1000     }
1001   else
1002     {
1003       /* For WAIT, some WC values are illegal.  */
1004       value = (insn >> 21) & 0x3;
1005       if ((dialect & PPC_OPCODE_A2) == 0
1006           && (dialect & PPC_OPCODE_E500MC) == 0)
1007         switch (value)
1008           {
1009           case 1:
1010           case 2:
1011             if (dialect & PPC_OPCODE_POWER10)
1012               break;
1013             /* Fall through.  */
1014           case 3:
1015             *invalid = 1;
1016             break;
1017           default:
1018             break;
1019           }
1020     }
1021
1022   return value;
1023 }
1024
1025 /* The 4-bit E field in a sync instruction that accepts 2 operands.
1026    If ESYNC is non-zero, then the L field must be either 0 or 1 and
1027    the complement of ESYNC-bit2.  */
1028
1029 static uint64_t
1030 insert_esync (uint64_t insn,
1031               int64_t value,
1032               ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1033               const char **errmsg)
1034 {
1035   uint64_t ls = (insn >> 21) & 0x03;
1036
1037   if (value != 0
1038       && ((~value >> 1) & 0x1) != ls)
1039     *errmsg = _("incompatible L operand value");
1040
1041   return insn | ((value & 0xf) << 16);
1042 }
1043
1044 static int64_t
1045 extract_esync (uint64_t insn,
1046                ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1047                int *invalid)
1048 {
1049   /* Missing optional operands have a value of zero.  */
1050   if (*invalid < 0)
1051     return 0;
1052
1053   uint64_t ls = (insn >> 21) & 0x3;
1054   uint64_t value = (insn >> 16) & 0xf;
1055   if (value != 0
1056       && ((~value >> 1) & 0x1) != ls)
1057     *invalid = 1;
1058   return value;
1059 }
1060
1061 /* The MB and ME fields in an M form instruction expressed as a single
1062    operand which is itself a bitmask.  The extraction function always
1063    marks it as invalid, since we never want to recognize an
1064    instruction which uses a field of this type.  */
1065
1066 static uint64_t
1067 insert_mbe (uint64_t insn,
1068             int64_t value,
1069             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1070             const char **errmsg)
1071 {
1072   uint64_t uval, mask;
1073   long mb, me, mx, count, last;
1074
1075   uval = value;
1076
1077   if (uval == 0)
1078     {
1079       *errmsg = _("illegal bitmask");
1080       return insn;
1081     }
1082
1083   mb = 0;
1084   me = 32;
1085   if ((uval & 1) != 0)
1086     last = 1;
1087   else
1088     last = 0;
1089   count = 0;
1090
1091   /* mb: location of last 0->1 transition */
1092   /* me: location of last 1->0 transition */
1093   /* count: # transitions */
1094
1095   for (mx = 0, mask = (uint64_t) 1 << 31; mx < 32; ++mx, mask >>= 1)
1096     {
1097       if ((uval & mask) && !last)
1098         {
1099           ++count;
1100           mb = mx;
1101           last = 1;
1102         }
1103       else if (!(uval & mask) && last)
1104         {
1105           ++count;
1106           me = mx;
1107           last = 0;
1108         }
1109     }
1110   if (me == 0)
1111     me = 32;
1112
1113   if (count != 2 && (count != 0 || ! last))
1114     *errmsg = _("illegal bitmask");
1115
1116   return insn | (mb << 6) | ((me - 1) << 1);
1117 }
1118
1119 static int64_t
1120 extract_mbe (uint64_t insn,
1121              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1122              int *invalid)
1123 {
1124   int64_t ret;
1125   long mb, me;
1126   long i;
1127
1128   *invalid = 1;
1129
1130   mb = (insn >> 6) & 0x1f;
1131   me = (insn >> 1) & 0x1f;
1132   if (mb < me + 1)
1133     {
1134       ret = 0;
1135       for (i = mb; i <= me; i++)
1136         ret |= (uint64_t) 1 << (31 - i);
1137     }
1138   else if (mb == me + 1)
1139     ret = ~0;
1140   else /* (mb > me + 1) */
1141     {
1142       ret = ~0;
1143       for (i = me + 1; i < mb; i++)
1144         ret &= ~((uint64_t) 1 << (31 - i));
1145     }
1146   return ret;
1147 }
1148
1149 /* The MB or ME field in an MD or MDS form instruction.  The high bit
1150    is wrapped to the low end.  */
1151
1152 static uint64_t
1153 insert_mb6 (uint64_t insn,
1154             int64_t value,
1155             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1156             const char **errmsg ATTRIBUTE_UNUSED)
1157 {
1158   return insn | ((value & 0x1f) << 6) | (value & 0x20);
1159 }
1160
1161 static int64_t
1162 extract_mb6 (uint64_t insn,
1163              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1164              int *invalid ATTRIBUTE_UNUSED)
1165 {
1166   return ((insn >> 6) & 0x1f) | (insn & 0x20);
1167 }
1168
1169 /* The NB field in an X form instruction.  The value 32 is stored as
1170    0.  */
1171
1172 static int64_t
1173 extract_nb (uint64_t insn,
1174             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1175             int *invalid ATTRIBUTE_UNUSED)
1176 {
1177   int64_t ret;
1178
1179   ret = (insn >> 11) & 0x1f;
1180   if (ret == 0)
1181     ret = 32;
1182   return ret;
1183 }
1184
1185 /* The NB field in an lswi instruction, which has special value
1186    restrictions.  The value 32 is stored as 0.  */
1187
1188 static uint64_t
1189 insert_nbi (uint64_t insn,
1190             int64_t value,
1191             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1192             const char **errmsg ATTRIBUTE_UNUSED)
1193 {
1194   int64_t rtvalue = (insn >> 21) & 0x1f;
1195   int64_t ravalue = (insn >> 16) & 0x1f;
1196
1197   if (value == 0)
1198     value = 32;
1199   if (rtvalue + (value + 3) / 4 > (rtvalue > ravalue ? ravalue + 32
1200                                                      : ravalue))
1201     *errmsg = _("address register in load range");
1202   return insn | ((value & 0x1f) << 11);
1203 }
1204
1205 /* The NSI field in a D form instruction.  This is the same as the SI
1206    field, only negated.  The extraction function always marks it as
1207    invalid, since we never want to recognize an instruction which uses
1208    a field of this type.  */
1209
1210 static uint64_t
1211 insert_nsi (uint64_t insn,
1212             int64_t value,
1213             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1214             const char **errmsg ATTRIBUTE_UNUSED)
1215 {
1216   return insn | (-value & 0xffff);
1217 }
1218
1219 static int64_t
1220 extract_nsi (uint64_t insn,
1221              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1222              int *invalid)
1223 {
1224   *invalid = 1;
1225   return -(((insn & 0xffff) ^ 0x8000) - 0x8000);
1226 }
1227
1228 /* The 2-bit SC field in a SYNC or PL field in a WAIT instruction.
1229    For WAIT, some PL values are reserved:
1230      * Values 1, 2 and 3 are reserved.  */
1231
1232 static uint64_t
1233 insert_pl (uint64_t insn,
1234            int64_t value,
1235            ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1236            const char **errmsg)
1237 {
1238   /* For WAIT, some PL values are illegal.  */
1239   if (((insn >> 1) & 0x3ff) == 30
1240       && value != 0)
1241     *errmsg = _("illegal PL operand value");
1242   return insn | ((value & 0x3) << 16);
1243 }
1244
1245 static int64_t
1246 extract_pl (uint64_t insn,
1247             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1248             int *invalid)
1249 {
1250   /* Missing optional operands have a value of zero.  */
1251   if (*invalid < 0)
1252     return 0;
1253
1254   uint64_t value = (insn >> 16) & 0x3;
1255
1256   /* For WAIT, some PL values are illegal.  */
1257   if (((insn >> 1) & 0x3ff) == 30
1258       && value != 0)
1259     *invalid = 1;
1260   return value;
1261 }
1262
1263 /* The RA field in a D or X form instruction which is an updating
1264    load, which means that the RA field may not be zero and may not
1265    equal the RT field.  */
1266
1267 static uint64_t
1268 insert_ral (uint64_t insn,
1269             int64_t value,
1270             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1271             const char **errmsg)
1272 {
1273   if (value == 0
1274       || (uint64_t) value == ((insn >> 21) & 0x1f))
1275     *errmsg = "invalid register operand when updating";
1276   return insn | ((value & 0x1f) << 16);
1277 }
1278
1279 static int64_t
1280 extract_ral (uint64_t insn,
1281              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1282              int *invalid)
1283 {
1284   int64_t rtvalue = (insn >> 21) & 0x1f;
1285   int64_t ravalue = (insn >> 16) & 0x1f;
1286
1287   if (rtvalue == ravalue || ravalue == 0)
1288     *invalid = 1;
1289   return ravalue;
1290 }
1291
1292 /* The RA field in an lmw instruction, which has special value
1293    restrictions.  */
1294
1295 static uint64_t
1296 insert_ram (uint64_t insn,
1297             int64_t value,
1298             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1299             const char **errmsg)
1300 {
1301   if ((uint64_t) value >= ((insn >> 21) & 0x1f))
1302     *errmsg = _("index register in load range");
1303   return insn | ((value & 0x1f) << 16);
1304 }
1305
1306 static int64_t
1307 extract_ram (uint64_t insn,
1308              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1309              int *invalid)
1310 {
1311   uint64_t rtvalue = (insn >> 21) & 0x1f;
1312   uint64_t ravalue = (insn >> 16) & 0x1f;
1313
1314   if (ravalue >= rtvalue)
1315     *invalid = 1;
1316   return ravalue;
1317 }
1318
1319 /* The RA field in the DQ form lq or an lswx instruction, which have special
1320    value restrictions.  */
1321
1322 static uint64_t
1323 insert_raq (uint64_t insn,
1324             int64_t value,
1325             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1326             const char **errmsg)
1327 {
1328   int64_t rtvalue = (insn >> 21) & 0x1f;
1329
1330   if (value == rtvalue)
1331     *errmsg = _("source and target register operands must be different");
1332   return insn | ((value & 0x1f) << 16);
1333 }
1334
1335 static int64_t
1336 extract_raq (uint64_t insn,
1337              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1338              int *invalid)
1339 {
1340   /* Missing optional operands have a value of zero.  */
1341   if (*invalid < 0)
1342     return 0;
1343
1344   uint64_t rtvalue = (insn >> 21) & 0x1f;
1345   uint64_t ravalue = (insn >> 16) & 0x1f;
1346   if (ravalue == rtvalue)
1347     *invalid = 1;
1348   return ravalue;
1349 }
1350
1351 /* The RA field in a D or X form instruction which is an updating
1352    store or an updating floating point load, which means that the RA
1353    field may not be zero.  */
1354
1355 static uint64_t
1356 insert_ras (uint64_t insn,
1357             int64_t value,
1358             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1359             const char **errmsg)
1360 {
1361   if (value == 0)
1362     *errmsg = _("invalid register operand when updating");
1363   return insn | ((value & 0x1f) << 16);
1364 }
1365
1366 static int64_t
1367 extract_ras (uint64_t insn,
1368              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1369              int *invalid)
1370 {
1371   uint64_t ravalue = (insn >> 16) & 0x1f;
1372
1373   if (ravalue == 0)
1374     *invalid = 1;
1375   return ravalue;
1376 }
1377
1378 /* The RS and RB fields in an X form instruction when they must be the same.
1379    This is used for extended mnemonics like mr.  The extraction function
1380    enforces that the fields are the same.  */
1381
1382 static uint64_t
1383 insert_rsb (uint64_t insn,
1384             int64_t value,
1385             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1386             const char **errmsg ATTRIBUTE_UNUSED)
1387 {
1388   value &= 0x1f;
1389   return insn | (value << 21) | (value << 11);
1390 }
1391
1392 static int64_t
1393 extract_rsb (uint64_t insn,
1394              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1395              int *invalid)
1396 {
1397   int64_t rs = (insn >> 21) & 0x1f;
1398   int64_t rb = (insn >> 11) & 0x1f;
1399
1400   if (rs != rb)
1401     *invalid = 1;
1402   return rs;
1403 }
1404
1405 /* The RB field in an lswx instruction, which has special value
1406    restrictions.  */
1407
1408 static uint64_t
1409 insert_rbx (uint64_t insn,
1410             int64_t value,
1411             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1412             const char **errmsg)
1413 {
1414   int64_t rtvalue = (insn >> 21) & 0x1f;
1415
1416   if (value == rtvalue)
1417     *errmsg = _("source and target register operands must be different");
1418   return insn | ((value & 0x1f) << 11);
1419 }
1420
1421 static int64_t
1422 extract_rbx (uint64_t insn,
1423              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1424              int *invalid)
1425 {
1426   uint64_t rtvalue = (insn >> 21) & 0x1f;
1427   uint64_t rbvalue = (insn >> 11) & 0x1f;
1428
1429   if (rbvalue == rtvalue)
1430     *invalid = 1;
1431   return rbvalue;
1432 }
1433
1434 /* The SCI8 field is made up of SCL and {U,N}I8 fields.  */
1435 static uint64_t
1436 insert_sci8 (uint64_t insn,
1437              int64_t value,
1438              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1439              const char **errmsg)
1440 {
1441   uint64_t fill_scale = 0;
1442   uint64_t ui8 = value;
1443
1444   if ((ui8 & 0xffffff00) == 0)
1445     ;
1446   else if ((ui8 & 0xffffff00) == 0xffffff00)
1447     fill_scale = 0x400;
1448   else if ((ui8 & 0xffff00ff) == 0)
1449     {
1450       fill_scale = 1 << 8;
1451       ui8 >>= 8;
1452     }
1453   else if ((ui8 & 0xffff00ff) == 0xffff00ff)
1454     {
1455       fill_scale = 0x400 | (1 << 8);
1456       ui8 >>= 8;
1457     }
1458   else if ((ui8 & 0xff00ffff) == 0)
1459     {
1460       fill_scale = 2 << 8;
1461       ui8 >>= 16;
1462     }
1463   else if ((ui8 & 0xff00ffff) == 0xff00ffff)
1464     {
1465       fill_scale = 0x400 | (2 << 8);
1466       ui8 >>= 16;
1467     }
1468   else if ((ui8 & 0x00ffffff) == 0)
1469     {
1470       fill_scale = 3 << 8;
1471       ui8 >>= 24;
1472     }
1473   else if ((ui8 & 0x00ffffff) == 0x00ffffff)
1474     {
1475       fill_scale = 0x400 | (3 << 8);
1476       ui8 >>= 24;
1477     }
1478   else
1479     {
1480       *errmsg = _("illegal immediate value");
1481       ui8 = 0;
1482     }
1483
1484   return insn | fill_scale | (ui8 & 0xff);
1485 }
1486
1487 static int64_t
1488 extract_sci8 (uint64_t insn,
1489               ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1490               int *invalid ATTRIBUTE_UNUSED)
1491 {
1492   int64_t fill = insn & 0x400;
1493   int64_t scale_factor = (insn & 0x300) >> 5;
1494   int64_t value = (insn & 0xff) << scale_factor;
1495
1496   if (fill != 0)
1497     value |= ~((int64_t) 0xff << scale_factor);
1498   return value;
1499 }
1500
1501 static uint64_t
1502 insert_sci8n (uint64_t insn,
1503               int64_t value,
1504               ppc_cpu_t dialect,
1505               const char **errmsg)
1506 {
1507   return insert_sci8 (insn, -value, dialect, errmsg);
1508 }
1509
1510 static int64_t
1511 extract_sci8n (uint64_t insn,
1512                ppc_cpu_t dialect,
1513                int *invalid)
1514 {
1515   return -extract_sci8 (insn, dialect, invalid);
1516 }
1517
1518 static uint64_t
1519 insert_oimm (uint64_t insn,
1520              int64_t value,
1521              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1522              const char **errmsg ATTRIBUTE_UNUSED)
1523 {
1524   return insn | (((value - 1) & 0x1f) << 4);
1525 }
1526
1527 static int64_t
1528 extract_oimm (uint64_t insn,
1529               ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1530               int *invalid ATTRIBUTE_UNUSED)
1531 {
1532   return ((insn >> 4) & 0x1f) + 1;
1533 }
1534
1535 /* The SH field in an MD form instruction.  This is split.  */
1536
1537 static uint64_t
1538 insert_sh6 (uint64_t insn,
1539             int64_t value,
1540             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1541             const char **errmsg ATTRIBUTE_UNUSED)
1542 {
1543   return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
1544 }
1545
1546 static int64_t
1547 extract_sh6 (uint64_t insn,
1548              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1549              int *invalid ATTRIBUTE_UNUSED)
1550 {
1551   return ((insn >> 11) & 0x1f) | ((insn << 4) & 0x20);
1552 }
1553
1554 /* The SPR field in an XFX form instruction.  This is flipped--the
1555    lower 5 bits are stored in the upper 5 and vice- versa.  */
1556
1557 static uint64_t
1558 insert_spr (uint64_t insn,
1559             int64_t value,
1560             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1561             const char **errmsg ATTRIBUTE_UNUSED)
1562 {
1563   return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
1564 }
1565
1566 static int64_t
1567 extract_spr (uint64_t insn,
1568              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1569              int *invalid ATTRIBUTE_UNUSED)
1570 {
1571   return ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
1572 }
1573
1574 /* Some dialects have 8 [DI]BAT registers instead of the standard 4.  */
1575 #define ALLOW8_BAT (PPC_OPCODE_750)
1576
1577 static uint64_t
1578 insert_sprbat (uint64_t insn,
1579                int64_t value,
1580                ppc_cpu_t dialect,
1581                const char **errmsg)
1582 {
1583   if ((uint64_t) value > 7
1584       || ((uint64_t) value > 3 && (dialect & ALLOW8_BAT) == 0))
1585     *errmsg = _("invalid bat number");
1586
1587   /* If this is [di]bat4..7 then use spr 560..575, otherwise 528..543.  */
1588   if ((uint64_t) value > 3)
1589     value = ((value & 3) << 6) | 1;
1590   else
1591     value = value << 6;
1592
1593   return insn | (value << 11);
1594 }
1595
1596 static int64_t
1597 extract_sprbat (uint64_t insn,
1598                 ppc_cpu_t dialect,
1599                 int *invalid)
1600 {
1601   uint64_t val = (insn >> 17) & 0x3;
1602
1603   val = val + ((insn >> 9) & 0x4);
1604   if (val > 3 && (dialect & ALLOW8_BAT) == 0)
1605     *invalid = 1;
1606   return val;
1607 }
1608
1609 /* Some dialects have 8 SPRG registers instead of the standard 4.  */
1610 #define ALLOW8_SPRG (PPC_OPCODE_BOOKE | PPC_OPCODE_405)
1611
1612 static uint64_t
1613 insert_sprg (uint64_t insn,
1614              int64_t value,
1615              ppc_cpu_t dialect,
1616              const char **errmsg)
1617 {
1618   if ((uint64_t) value > 7
1619       || ((uint64_t) value > 3 && (dialect & ALLOW8_SPRG) == 0))
1620     *errmsg = _("invalid sprg number");
1621
1622   /* If this is mfsprg4..7 then use spr 260..263 which can be read in
1623      user mode.  Anything else must use spr 272..279.  */
1624   if ((uint64_t) value <= 3 || (insn & 0x100) != 0)
1625     value |= 0x10;
1626
1627   return insn | ((value & 0x17) << 16);
1628 }
1629
1630 static int64_t
1631 extract_sprg (uint64_t insn,
1632               ppc_cpu_t dialect,
1633               int *invalid)
1634 {
1635   uint64_t val = (insn >> 16) & 0x1f;
1636
1637   /* mfsprg can use 260..263 and 272..279.  mtsprg only uses spr 272..279
1638      If not BOOKE, 405 or VLE, then both use only 272..275.  */
1639   if ((val - 0x10 > 3 && (dialect & ALLOW8_SPRG) == 0)
1640       || (val - 0x10 > 7 && (insn & 0x100) != 0)
1641       || val <= 3
1642       || (val & 8) != 0)
1643     *invalid = 1;
1644   return val & 7;
1645 }
1646
1647 /* The TBR field in an XFX instruction.  This is just like SPR, but it
1648    is optional.  */
1649
1650 static uint64_t
1651 insert_tbr (uint64_t insn,
1652             int64_t value,
1653             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1654             const char **errmsg)
1655 {
1656   if (value != 268 && value != 269)
1657     *errmsg = _("invalid tbr number");
1658   return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
1659 }
1660
1661 static int64_t
1662 extract_tbr (uint64_t insn,
1663              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1664              int *invalid)
1665 {
1666   /* Missing optional operands have a value of 268.  */
1667   if (*invalid < 0)
1668     return 268;
1669
1670   int64_t ret = ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
1671   if (ret != 268 && ret != 269)
1672     *invalid = 1;
1673   return ret;
1674 }
1675
1676 /* The XT and XS fields in an XX1 or XX3 form instruction.  This is split.  */
1677
1678 static uint64_t
1679 insert_xt6 (uint64_t insn,
1680             int64_t value,
1681             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1682             const char **errmsg ATTRIBUTE_UNUSED)
1683 {
1684   return insn | ((value & 0x1f) << 21) | ((value & 0x20) >> 5);
1685 }
1686
1687 static int64_t
1688 extract_xt6 (uint64_t insn,
1689              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1690              int *invalid ATTRIBUTE_UNUSED)
1691 {
1692   return ((insn << 5) & 0x20) | ((insn >> 21) & 0x1f);
1693 }
1694
1695 /* The XT and XS fields in an DQ form VSX instruction.  This is split.  */
1696 static uint64_t
1697 insert_xtq6 (uint64_t insn,
1698              int64_t value,
1699              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1700              const char **errmsg ATTRIBUTE_UNUSED)
1701 {
1702   return insn | ((value & 0x1f) << 21) | ((value & 0x20) >> 2);
1703 }
1704
1705 static int64_t
1706 extract_xtq6 (uint64_t insn,
1707               ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1708               int *invalid ATTRIBUTE_UNUSED)
1709 {
1710   return ((insn << 2) & 0x20) | ((insn >> 21) & 0x1f);
1711 }
1712
1713 /* The XA field in an XX3 form instruction.  This is split.  */
1714
1715 static uint64_t
1716 insert_xa6 (uint64_t insn,
1717             int64_t value,
1718             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1719             const char **errmsg ATTRIBUTE_UNUSED)
1720 {
1721   return insn | ((value & 0x1f) << 16) | ((value & 0x20) >> 3);
1722 }
1723
1724 static int64_t
1725 extract_xa6 (uint64_t insn,
1726              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1727              int *invalid ATTRIBUTE_UNUSED)
1728 {
1729   return ((insn << 3) & 0x20) | ((insn >> 16) & 0x1f);
1730 }
1731
1732 /* The XA field in an MMA XX3 form instruction.  This is split
1733    and must not overlap with the ACC operand.  */
1734
1735 static uint64_t
1736 insert_xa6a (uint64_t insn,
1737              int64_t value,
1738              ppc_cpu_t dialect,
1739              const char **errmsg)
1740 {
1741   int64_t acc = (insn >> 23) & 0x7;
1742   if ((value >> 2) == acc)
1743     *errmsg = _("VSR overlaps ACC operand");
1744   return insert_xa6 (insn, value, dialect, errmsg);
1745 }
1746
1747 static int64_t
1748 extract_xa6a (uint64_t insn,
1749               ppc_cpu_t dialect,
1750               int *invalid)
1751 {
1752   int64_t acc = (insn >> 23) & 0x7;
1753   int64_t value = extract_xa6 (insn, dialect, invalid);
1754   if ((value >> 2) == acc)
1755     *invalid = 1;
1756   return value;
1757 }
1758
1759 /* The XB field in an XX3 form instruction.  This is split.  */
1760
1761 static uint64_t
1762 insert_xb6 (uint64_t insn,
1763             int64_t value,
1764             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1765             const char **errmsg ATTRIBUTE_UNUSED)
1766 {
1767   return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
1768 }
1769
1770 static int64_t
1771 extract_xb6 (uint64_t insn,
1772              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1773              int *invalid ATTRIBUTE_UNUSED)
1774 {
1775   return ((insn << 4) & 0x20) | ((insn >> 11) & 0x1f);
1776 }
1777
1778 /* The XB field in an MMA XX3 form instruction.  This is split
1779    and must not overlap with the ACC operand.  */
1780
1781 static uint64_t
1782 insert_xb6a (uint64_t insn,
1783              int64_t value,
1784              ppc_cpu_t dialect,
1785              const char **errmsg)
1786 {
1787   int64_t acc = (insn >> 23) & 0x7;
1788   if ((value >> 2) == acc)
1789     *errmsg = _("VSR overlaps ACC operand");
1790   return insert_xb6 (insn, value, dialect, errmsg);
1791 }
1792
1793 static int64_t
1794 extract_xb6a (uint64_t insn,
1795               ppc_cpu_t dialect,
1796               int *invalid)
1797 {
1798   int64_t acc = (insn >> 23) & 0x7;
1799   int64_t value = extract_xb6 (insn, dialect, invalid);
1800   if ((value >> 2) == acc)
1801     *invalid = 1;
1802   return value;
1803 }
1804
1805 /* The XA and XB fields in an XX3 form instruction when they must be the same.
1806    This is used for extended mnemonics like xvmovdp.  The extraction function
1807    enforces that the fields are the same.  */
1808
1809 static uint64_t
1810 insert_xab6 (uint64_t insn,
1811              int64_t value,
1812              ppc_cpu_t dialect,
1813              const char **errmsg)
1814 {
1815   return insert_xa6 (insn, value, dialect, errmsg)
1816          | insert_xb6 (insn, value, dialect, errmsg);
1817 }
1818
1819 static int64_t
1820 extract_xab6 (uint64_t insn,
1821               ppc_cpu_t dialect,
1822               int *invalid)
1823 {
1824   int64_t xa6 = extract_xa6 (insn, dialect, invalid);
1825   int64_t xb6 = extract_xb6 (insn, dialect, invalid);
1826
1827   if (xa6 != xb6)
1828     *invalid = 1;
1829   return xa6;
1830 }
1831
1832 /* The XC field in an XX4 form instruction.  This is split.  */
1833
1834 static uint64_t
1835 insert_xc6 (uint64_t insn,
1836             int64_t value,
1837             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1838             const char **errmsg ATTRIBUTE_UNUSED)
1839 {
1840   return insn | ((value & 0x1f) << 6) | ((value & 0x20) >> 2);
1841 }
1842
1843 static int64_t
1844 extract_xc6 (uint64_t insn,
1845              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1846              int *invalid ATTRIBUTE_UNUSED)
1847 {
1848   return ((insn << 2) & 0x20) | ((insn >> 6) & 0x1f);
1849 }
1850
1851 /* The split XTp field in a vector paired insn.  */
1852
1853 static uint64_t
1854 insert_xtp (uint64_t insn,
1855             int64_t value,
1856             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1857             const char **errmsg ATTRIBUTE_UNUSED)
1858 {
1859   return insn | ((value & 0x1e) << 21) | ((value & 0x20) << (21 - 5));
1860 }
1861
1862 static int64_t
1863 extract_xtp (uint64_t insn,
1864              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1865              int *invalid ATTRIBUTE_UNUSED)
1866 {
1867   return ((insn >> (21 - 5)) & 0x20) | ((insn >> 21) & 0x1e);
1868 }
1869
1870 /* The split XT field in a vector splat insn.  */
1871
1872 static uint64_t
1873 insert_xts (uint64_t insn,
1874             int64_t value,
1875             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1876             const char **errmsg ATTRIBUTE_UNUSED)
1877 {
1878   return insn | ((value & 0x1f) << 21) | ((value & 0x20) << (16 - 5));
1879 }
1880
1881 static int64_t
1882 extract_xts (uint64_t insn,
1883              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1884              int *invalid ATTRIBUTE_UNUSED)
1885 {
1886   return ((insn >> (16 - 5)) & 0x20) | ((insn >> 21) & 0x1f);
1887 }
1888
1889 static uint64_t
1890 insert_dm (uint64_t insn,
1891            int64_t value,
1892            ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1893            const char **errmsg)
1894 {
1895   if (value != 0 && value != 1)
1896     *errmsg = _("invalid constant");
1897   return insn | (((value) ? 3 : 0) << 8);
1898 }
1899
1900 static int64_t
1901 extract_dm (uint64_t insn,
1902             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1903             int *invalid)
1904 {
1905   int64_t value = (insn >> 8) & 3;
1906   if (value != 0 && value != 3)
1907     *invalid = 1;
1908   return (value) ? 1 : 0;
1909 }
1910
1911 /* The VLESIMM field in an I16A form instruction.  This is split.  */
1912
1913 static uint64_t
1914 insert_vlesi (uint64_t insn,
1915               int64_t value,
1916               ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1917               const char **errmsg ATTRIBUTE_UNUSED)
1918 {
1919   return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
1920 }
1921
1922 static int64_t
1923 extract_vlesi (uint64_t insn,
1924                ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1925                int *invalid ATTRIBUTE_UNUSED)
1926 {
1927   int64_t value = ((insn >> 10) & 0xf800) | (insn & 0x7ff);
1928   value = (value ^ 0x8000) - 0x8000;
1929   return value;
1930 }
1931
1932 static uint64_t
1933 insert_vlensi (uint64_t insn,
1934                int64_t value,
1935                ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1936                const char **errmsg ATTRIBUTE_UNUSED)
1937 {
1938   value = -value;
1939   return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
1940 }
1941 static int64_t
1942 extract_vlensi (uint64_t insn,
1943                 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1944                 int *invalid)
1945 {
1946   int64_t value = ((insn >> 10) & 0xf800) | (insn & 0x7ff);
1947   value = (value ^ 0x8000) - 0x8000;
1948   /* Don't use for disassembly.  */
1949   *invalid = 1;
1950   return -value;
1951 }
1952
1953 /* The VLEUIMM field in an I16A form instruction.  This is split.  */
1954
1955 static uint64_t
1956 insert_vleui (uint64_t insn,
1957               int64_t value,
1958               ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1959               const char **errmsg ATTRIBUTE_UNUSED)
1960 {
1961   return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
1962 }
1963
1964 static int64_t
1965 extract_vleui (uint64_t insn,
1966                ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1967                int *invalid ATTRIBUTE_UNUSED)
1968 {
1969   return ((insn >> 10) & 0xf800) | (insn & 0x7ff);
1970 }
1971
1972 /* The VLEUIMML field in an I16L form instruction.  This is split.  */
1973
1974 static uint64_t
1975 insert_vleil (uint64_t insn,
1976               int64_t value,
1977               ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1978               const char **errmsg ATTRIBUTE_UNUSED)
1979 {
1980   return insn | ((value & 0xf800) << 5) | (value & 0x7ff);
1981 }
1982
1983 static int64_t
1984 extract_vleil (uint64_t insn,
1985                ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1986                int *invalid ATTRIBUTE_UNUSED)
1987 {
1988   return ((insn >> 5) & 0xf800) | (insn & 0x7ff);
1989 }
1990
1991 static uint64_t
1992 insert_evuimm1_ex0 (uint64_t insn,
1993                     int64_t value,
1994                     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1995                     const char **errmsg)
1996 {
1997   if (value <= 0 || value > 0x1f)
1998     *errmsg = _("UIMM = 00000 is illegal");
1999   return insn | ((value & 0x1f) << 11);
2000 }
2001
2002 static int64_t
2003 extract_evuimm1_ex0 (uint64_t insn,
2004                      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2005                      int *invalid)
2006 {
2007   int64_t value = ((insn >> 11) & 0x1f);
2008   if (value == 0)
2009     *invalid = 1;
2010
2011   return value;
2012 }
2013
2014 static uint64_t
2015 insert_evuimm2_ex0 (uint64_t insn,
2016                     int64_t value,
2017                     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2018                     const char **errmsg)
2019 {
2020   if (value <= 0 || value > 0x3e)
2021     *errmsg = _("UIMM = 00000 is illegal");
2022   return insn | ((value & 0x3e) << 10);
2023 }
2024
2025 static int64_t
2026 extract_evuimm2_ex0 (uint64_t insn,
2027                      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2028                      int *invalid)
2029 {
2030   int64_t value = ((insn >> 10) & 0x3e);
2031   if (value == 0)
2032     *invalid = 1;
2033
2034   return value;
2035 }
2036
2037 static uint64_t
2038 insert_evuimm4_ex0 (uint64_t insn,
2039                     int64_t value,
2040                     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2041                     const char **errmsg)
2042 {
2043   if (value <= 0 || value > 0x7c)
2044     *errmsg = _("UIMM = 00000 is illegal");
2045   return insn | ((value & 0x7c) << 9);
2046 }
2047
2048 static int64_t
2049 extract_evuimm4_ex0 (uint64_t insn,
2050                      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2051                      int *invalid)
2052 {
2053   int64_t value = ((insn >> 9) & 0x7c);
2054   if (value == 0)
2055     *invalid = 1;
2056
2057   return value;
2058 }
2059
2060 static uint64_t
2061 insert_evuimm8_ex0 (uint64_t insn,
2062                     int64_t value,
2063                     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2064                     const char **errmsg)
2065 {
2066   if (value <= 0 || value > 0xf8)
2067     *errmsg = _("UIMM = 00000 is illegal");
2068   return insn | ((value & 0xf8) << 8);
2069 }
2070
2071 static int64_t
2072 extract_evuimm8_ex0 (uint64_t insn,
2073                      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2074                      int *invalid)
2075 {
2076   int64_t value = ((insn >> 8) & 0xf8);
2077   if (value == 0)
2078     *invalid = 1;
2079
2080   return value;
2081 }
2082
2083 static uint64_t
2084 insert_evuimm_lt8 (uint64_t insn,
2085                    int64_t value,
2086                    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2087                    const char **errmsg)
2088 {
2089   if (value < 0 || value > 7)
2090     *errmsg = _("UIMM values >7 are illegal");
2091   return insn | ((value & 0x7) << 11);
2092 }
2093
2094 static int64_t
2095 extract_evuimm_lt8 (uint64_t insn,
2096                     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2097                     int *invalid)
2098 {
2099   int64_t value = ((insn >> 11) & 0x1f);
2100   if (value > 7)
2101     *invalid = 1;
2102
2103   return value;
2104 }
2105
2106 static uint64_t
2107 insert_evuimm_lt16 (uint64_t insn,
2108                     int64_t value,
2109                     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2110                     const char **errmsg)
2111 {
2112   if (value < 0 || value > 15)
2113     *errmsg = _("UIMM values >15 are illegal");
2114   return insn | ((value & 0xf) << 11);
2115 }
2116
2117 static int64_t
2118 extract_evuimm_lt16 (uint64_t insn,
2119                      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2120                      int *invalid)
2121 {
2122   int64_t value = ((insn >> 11) & 0x1f);
2123   if (value > 15)
2124     *invalid = 1;
2125
2126   return value;
2127 }
2128
2129 static uint64_t
2130 insert_rD_rS_even (uint64_t insn,
2131                    int64_t value,
2132                    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2133                    const char **errmsg)
2134 {
2135   if ((value & 0x1) != 0)
2136     *errmsg = _("GPR odd is illegal");
2137   return insn | ((value & 0x1e) << 21);
2138 }
2139
2140 static int64_t
2141 extract_rD_rS_even (uint64_t insn,
2142                     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2143                     int *invalid)
2144 {
2145   int64_t value = ((insn >> 21) & 0x1f);
2146   if ((value & 0x1) != 0)
2147     *invalid = 1;
2148
2149   return value;
2150 }
2151
2152 static uint64_t
2153 insert_off_lsp (uint64_t insn,
2154                 int64_t value,
2155                 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2156                 const char **errmsg)
2157 {
2158   if (value <= 0 || value > 0x3)
2159     *errmsg = _("invalid offset");
2160   return insn | (value & 0x3);
2161 }
2162
2163 static int64_t
2164 extract_off_lsp (uint64_t insn,
2165                  ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2166                  int *invalid)
2167 {
2168   int64_t value = (insn & 0x3);
2169   if (value == 0)
2170     *invalid = 1;
2171
2172   return value;
2173 }
2174
2175 static uint64_t
2176 insert_off_spe2 (uint64_t insn,
2177                  int64_t value,
2178                  ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2179                  const char **errmsg)
2180 {
2181   if (value <= 0 || value > 0x7)
2182     *errmsg = _("invalid offset");
2183   return insn | (value & 0x7);
2184 }
2185
2186 static int64_t
2187 extract_off_spe2 (uint64_t insn,
2188                   ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2189                   int *invalid)
2190 {
2191   int64_t value = (insn & 0x7);
2192   if (value == 0)
2193     *invalid = 1;
2194
2195   return value;
2196 }
2197
2198 static uint64_t
2199 insert_Ddd (uint64_t insn,
2200             int64_t value,
2201             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2202             const char **errmsg)
2203 {
2204   if (value < 0 || value > 0x7)
2205     *errmsg = _("invalid Ddd value");
2206   return insn | ((value & 0x3) << 11) | ((value & 0x4) >> 2);
2207 }
2208
2209 static int64_t
2210 extract_Ddd (uint64_t insn,
2211              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2212              int *invalid ATTRIBUTE_UNUSED)
2213 {
2214   return ((insn >> 11) & 0x3) | ((insn << 2) & 0x4);
2215 }
2216
2217 static uint64_t
2218 insert_sxl (uint64_t insn,
2219             int64_t value,
2220             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2221             const char **errmsg ATTRIBUTE_UNUSED)
2222 {
2223   return insn | ((value & 0x1) << 11);
2224 }
2225
2226 static int64_t
2227 extract_sxl (uint64_t insn,
2228              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2229              int *invalid)
2230 {
2231   /* Missing optional operands have a value of one.  */
2232   if (*invalid < 0)
2233     return 1;
2234   return (insn >> 11) & 0x1;
2235 }
2236
2237 /* The list of embedded processors that use the embedded operand ordering
2238    for the 3 operand dcbt and dcbtst instructions.  */
2239 #define DCBT_EO (PPC_OPCODE_E500 | PPC_OPCODE_E500MC | PPC_OPCODE_476 \
2240                  | PPC_OPCODE_A2)
2241
2242 /* ISA 2.03 and later specify extended mnemonics dcbtct, dcbtds, and
2243    dcbtstct, dcbtstds with a note saying these should be used in new
2244    programs rather than the base mnemonics "so that it can be coded
2245    with TH as the last operand for all categories".  For that reason
2246    the extended mnemonics are enabled in the assembler for the
2247    embedded processors, but not for the disassembler so as to display
2248    the embedded dcbt or dcbtst expected form with TH first for
2249    embedded programmers.  */
2250
2251 static uint64_t
2252 insert_thct (uint64_t insn,
2253             int64_t value,
2254             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2255             const char **errmsg)
2256 {
2257   if ((uint64_t) value > 7)
2258     *errmsg = _("invalid TH value");
2259   return insn | ((value & 7) << 21);
2260 }
2261
2262 static int64_t
2263 extract_thct (uint64_t insn,
2264               ppc_cpu_t dialect,
2265               int *invalid)
2266 {
2267   /* Missing optional operands have a value of 0.  */
2268   if (*invalid < 0)
2269     return 0;
2270
2271   int64_t value = (insn >> 21) & 0x1f;
2272   if (value > 7 || (dialect & DCBT_EO) != 0)
2273     *invalid = 1;
2274
2275   return value;
2276 }
2277
2278 static uint64_t
2279 insert_thds (uint64_t insn,
2280              int64_t value,
2281              ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2282              const char **errmsg)
2283 {
2284   if (value < 8 || value > 15)
2285     *errmsg = _("invalid TH value");
2286   return insn | ((value & 0x1f) << 21);
2287 }
2288
2289 static int64_t
2290 extract_thds (uint64_t insn,
2291               ppc_cpu_t dialect,
2292               int *invalid)
2293 {
2294   /* Missing optional operands have a value of 8.  */
2295   if (*invalid < 0)
2296     return 8;
2297
2298   int64_t value = (insn >> 21) & 0x1f;
2299   if (value < 8 || value > 15 || (dialect & DCBT_EO) != 0)
2300     *invalid = 1;
2301
2302   return value;
2303 }
2304 \f
2305 /* The operands table.
2306
2307    The fields are bitm, shift, insert, extract, flags.
2308
2309    We used to put parens around the various additions, like the one
2310    for BA just below.  However, that caused trouble with feeble
2311    compilers with a limit on depth of a parenthesized expression, like
2312    (reportedly) the compiler in Microsoft Developer Studio 5.  So we
2313    omit the parens, since the macros are never used in a context where
2314    the addition will be ambiguous.  */
2315
2316 const struct powerpc_operand powerpc_operands[] =
2317 {
2318   /* The zero index is used to indicate the end of the list of
2319      operands.  */
2320 #define UNUSED 0
2321   { 0, 0, NULL, NULL, 0 },
2322
2323   /* The BA field in an XL form instruction.  */
2324 #define BA UNUSED + 1
2325   /* The BI field in a B form or XL form instruction.  */
2326 #define BI BA
2327 #define BI_MASK (0x1f << 16)
2328   { 0x1f, 16, NULL, NULL, PPC_OPERAND_CR_BIT },
2329
2330   /* The BT, BA and BB fields in a XL form instruction when they must all
2331      be the same.  */
2332 #define BTAB BA + 1
2333   { 0x1f, 21, insert_btab, extract_btab, PPC_OPERAND_CR_BIT },
2334
2335   /* The BB field in an XL form instruction.  */
2336 #define BB BTAB + 1
2337 #define BB_MASK (0x1f << 11)
2338   { 0x1f, 11, NULL, NULL, PPC_OPERAND_CR_BIT },
2339
2340   /* The BA and BB fields in a XL form instruction when they must be
2341      the same.  */
2342 #define BAB BB + 1
2343   { 0x1f, 16, insert_bab, extract_bab, PPC_OPERAND_CR_BIT },
2344
2345   /* The VRA and VRB fields in a VX form instruction when they must be the same.
2346      This is used for extended mnemonics like vmr.  */
2347 #define VAB BAB + 1
2348   { 0x1f, 16, insert_bab, extract_bab, PPC_OPERAND_VR },
2349
2350   /* The RA and RB fields in a VX form instruction when they must be the same.
2351      This is used for extended mnemonics like evmr.  */
2352 #define RAB VAB + 1
2353   { 0x1f, 16, insert_bab, extract_bab, PPC_OPERAND_GPR },
2354
2355   /* The BD field in a B form instruction.  The lower two bits are
2356      forced to zero.  */
2357 #define BD RAB + 1
2358   { 0xfffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
2359
2360   /* The BD field in a B form instruction when absolute addressing is
2361      used.  */
2362 #define BDA BD + 1
2363   { 0xfffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
2364
2365   /* The BD field in a B form instruction when the - modifier is used.
2366      This sets the y bit of the BO field appropriately.  */
2367 #define BDM BDA + 1
2368   { 0xfffc, 0, insert_bdm, extract_bdm,
2369     PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
2370
2371   /* The BD field in a B form instruction when the - modifier is used
2372      and absolute address is used.  */
2373 #define BDMA BDM + 1
2374   { 0xfffc, 0, insert_bdm, extract_bdm,
2375     PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
2376
2377   /* The BD field in a B form instruction when the + modifier is used.
2378      This sets the y bit of the BO field appropriately.  */
2379 #define BDP BDMA + 1
2380   { 0xfffc, 0, insert_bdp, extract_bdp,
2381     PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
2382
2383   /* The BD field in a B form instruction when the + modifier is used
2384      and absolute addressing is used.  */
2385 #define BDPA BDP + 1
2386   { 0xfffc, 0, insert_bdp, extract_bdp,
2387     PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
2388
2389   /* The BF field in an X or XL form instruction.  */
2390 #define BF BDPA + 1
2391   /* The CRFD field in an X form instruction.  */
2392 #define CRFD BF
2393   /* The CRD field in an XL form instruction.  */
2394 #define CRD BF
2395   { 0x7, 23, NULL, NULL, PPC_OPERAND_CR_REG },
2396
2397   /* The BF field in an X or XL form instruction.  */
2398 #define BFF BF + 1
2399   { 0x7, 23, NULL, NULL, 0 },
2400
2401   /* The ACC field in a VSX ACC 8LS:D-form instruction.  */
2402 #define ACC BFF + 1
2403   { 0x7, 23, NULL, NULL, PPC_OPERAND_ACC },
2404
2405   /* An optional BF field.  This is used for comparison instructions,
2406      in which an omitted BF field is taken as zero.  */
2407 #define OBF ACC + 1
2408   { 0x7, 23, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
2409
2410   /* The BFA field in an X or XL form instruction.  */
2411 #define BFA OBF + 1
2412   { 0x7, 18, NULL, NULL, PPC_OPERAND_CR_REG },
2413
2414   /* The BO field in a B form instruction.  Certain values are
2415      illegal.  */
2416 #define BO BFA + 1
2417 #define BO_MASK (0x1f << 21)
2418   { 0x1f, 21, insert_bo, extract_bo, 0 },
2419
2420   /* The BO field in a B form instruction when the - modifier is used.  */
2421 #define BOM BO + 1
2422   { 0x1f, 21, insert_bom, extract_bom, 0 },
2423
2424   /* The BO field in a B form instruction when the + modifier is used.  */
2425 #define BOP BOM + 1
2426   { 0x1f, 21, insert_bop, extract_bop, 0 },
2427
2428   /* The RM field in an X form instruction.  */
2429 #define RM BOP + 1
2430 #define DD RM
2431   { 0x3, 11, NULL, NULL, 0 },
2432
2433 #define BH RM + 1
2434   { 0x3, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
2435
2436   /* The BT field in an X or XL form instruction.  */
2437 #define BT BH + 1
2438   { 0x1f, 21, NULL, NULL, PPC_OPERAND_CR_BIT },
2439
2440   /* The BT field in a mtfsb0 or mtfsb1 instruction.  */
2441 #define BTF BT + 1
2442   { 0x1f, 21, NULL, NULL, PPC_OPERAND_CR_BIT | PPC_OPERAND_CR_REG },
2443
2444   /* The BI16 field in a BD8 form instruction.  */
2445 #define BI16 BTF + 1
2446   { 0x3, 8, NULL, NULL, PPC_OPERAND_CR_BIT },
2447
2448   /* The BI32 field in a BD15 form instruction.  */
2449 #define BI32 BI16 + 1
2450   { 0xf, 16, NULL, NULL, PPC_OPERAND_CR_BIT },
2451
2452   /* The BO32 field in a BD15 form instruction.  */
2453 #define BO32 BI32 + 1
2454   { 0x3, 20, NULL, NULL, 0 },
2455
2456   /* The B8 field in a BD8 form instruction.  */
2457 #define B8 BO32 + 1
2458   { 0x1fe, -1, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
2459
2460   /* The B15 field in a BD15 form instruction.  The lowest bit is
2461      forced to zero.  */
2462 #define B15 B8 + 1
2463   { 0xfffe, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
2464
2465   /* The B24 field in a BD24 form instruction.  The lowest bit is
2466      forced to zero.  */
2467 #define B24 B15 + 1
2468   { 0x1fffffe, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
2469
2470   /* The condition register number portion of the BI field in a B form
2471      or XL form instruction.  This is used for the extended
2472      conditional branch mnemonics, which set the lower two bits of the
2473      BI field.  This field is optional.  */
2474 #define CR B24 + 1
2475   { 0x7, 18, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
2476
2477   /* The CRB field in an X form instruction.  */
2478 #define CRB CR + 1
2479   /* The MB field in an M form instruction.  */
2480 #define MB CRB
2481 #define MB_MASK (0x1f << 6)
2482   { 0x1f, 6, NULL, NULL, 0 },
2483
2484   /* The CRD32 field in an XL form instruction.  */
2485 #define CRD32 CRB + 1
2486   { 0x3, 21, NULL, NULL, PPC_OPERAND_CR_REG },
2487
2488   /* The CRFS field in an X form instruction.  */
2489 #define CRFS CRD32 + 1
2490   { 0x7, 0, NULL, NULL, PPC_OPERAND_CR_REG },
2491
2492 #define CRS CRFS + 1
2493   { 0x3, 18, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
2494
2495   /* The CT field in an X form instruction.  */
2496 #define CT CRS + 1
2497   /* The MO field in an mbar instruction.  */
2498 #define MO CT
2499   { 0x1f, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
2500
2501   /* The TH field in dcbtct.  */
2502 #define THCT CT + 1
2503   { 0x1f, 21, insert_thct, extract_thct, PPC_OPERAND_OPTIONAL },
2504
2505   /* The TH field in dcbtds.  */
2506 #define THDS THCT + 1
2507   { 0x1f, 21, insert_thds, extract_thds, PPC_OPERAND_OPTIONAL },
2508
2509   /* The D field in a D form instruction.  This is a displacement off
2510      a register, and implies that the next operand is a register in
2511      parentheses.  */
2512 #define D THDS + 1
2513   { 0xffff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
2514
2515   /* The D8 field in a D form instruction.  This is a displacement off
2516      a register, and implies that the next operand is a register in
2517      parentheses.  */
2518 #define D8 D + 1
2519   { 0xff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
2520
2521   /* The DCMX field in an X form instruction.  */
2522 #define DCMX D8 + 1
2523   { 0x7f, 16, NULL, NULL, 0 },
2524
2525   /* The split DCMX field in an X form instruction.  */
2526 #define DCMXS DCMX + 1
2527   { 0x7f, PPC_OPSHIFT_INV, insert_dcmxs, extract_dcmxs, 0 },
2528
2529   /* The DQ field in a DQ form instruction.  This is like D, but the
2530      lower four bits are forced to zero. */
2531 #define DQ DCMXS + 1
2532   { 0xfff0, 0, NULL, NULL,
2533     PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DQ },
2534
2535   /* The DS field in a DS form instruction.  This is like D, but the
2536      lower two bits are forced to zero.  */
2537 #define DS DQ + 1
2538   { 0xfffc, 0, NULL, NULL,
2539     PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DS },
2540
2541   /* The D field in an 8-byte D form prefix instruction.  This is a displacement
2542      off a register, and implies that the next operand is a register in
2543      parentheses.  */
2544 #define D34 DS + 1
2545   { UINT64_C(0x3ffffffff), PPC_OPSHIFT_INV, insert_d34, extract_d34,
2546     PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
2547
2548   /* The SI field in an 8-byte D form prefix instruction.  */
2549 #define SI34 D34 + 1
2550   { UINT64_C(0x3ffffffff), PPC_OPSHIFT_INV, insert_d34, extract_d34, PPC_OPERAND_SIGNED },
2551
2552   /* The NSI field in an 8-byte D form prefix instruction.  This is the
2553      same as the SI34 field, only negated.  */
2554 #define NSI34 SI34 + 1
2555   { UINT64_C(0x3ffffffff), PPC_OPSHIFT_INV, insert_nsi34, extract_nsi34,
2556     PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
2557
2558   /* The IMM32 field in a vector splat immediate prefix instruction.  */
2559 #define IMM32 NSI34 + 1
2560   { 0xffffffff, PPC_OPSHIFT_INV, insert_imm32, extract_imm32, 0},
2561
2562   /* The UIM field in a vector permute extended prefix instruction.  */
2563 #define UIM3 IMM32 + 1
2564   { 0x7, 32, NULL, NULL, 0},
2565
2566   /* The UIM field in a vector eval prefix instruction.  */
2567 #define UIM8 UIM3 + 1
2568   { 0xff, 32, NULL, NULL, 0},
2569
2570   /* The IX field in xxsplti32dx.  */
2571 #define IX UIM8 + 1
2572   { 0x1, 17, NULL, NULL, 0 },
2573
2574   /* The PMSK field in GER rank 8 prefix instructions.  */
2575 #define PMSK8 IX + 1
2576   { 0xff, 40, NULL, NULL, 0 },
2577
2578   /* The PMSK field in GER rank 4 prefix instructions.  */
2579 #define PMSK4 PMSK8 + 1
2580   { 0xf, 44, NULL, NULL, 0 },
2581
2582   /* The PMSK field in GER rank 2 prefix instructions.  */
2583 #define PMSK2 PMSK4 + 1
2584   { 0x3, 46, NULL, NULL, 0 },
2585
2586   /* The XMSK field in GER prefix instructions.  */
2587 #define XMSK PMSK2 + 1
2588   { 0xf, 36, NULL, NULL, 0 },
2589
2590   /* The YMSK field in GER prefix instructions.  */
2591 #define YMSK XMSK + 1
2592   { 0xf, 32, NULL, NULL, 0 },
2593
2594   /* The YMSK field in 64-bit GER prefix instructions.  */
2595 #define YMSK2 YMSK + 1
2596   { 0x3, 34, NULL, NULL, 0 },
2597
2598   /* The DUIS or BHRBE fields in a XFX form instruction, 10 bits
2599      unsigned imediate */
2600 #define DUIS YMSK2 + 1
2601 #define BHRBE DUIS
2602   { 0x3ff, 11, NULL, NULL, 0 },
2603
2604   /* The split DW field in a X form instruction.  */
2605 #define DW DUIS + 1
2606   { -1, PPC_OPSHIFT_INV, insert_dw, extract_dw,
2607     PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED},
2608
2609   /* The split D field in a DX form instruction.  */
2610 #define DXD DW + 1
2611   { 0xffff, PPC_OPSHIFT_INV, insert_dxd, extract_dxd,
2612     PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT},
2613
2614   /* The split ND field in a DX form instruction.
2615      This is the same as the DX field, only negated.  */
2616 #define NDXD DXD + 1
2617   { 0xffff, PPC_OPSHIFT_INV, insert_dxdn, extract_dxdn,
2618     PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT},
2619
2620   /* The E field in a wrteei instruction.  */
2621   /* And the W bit in the pair singles instructions.  */
2622   /* And the ST field in a VX form instruction.  */
2623 #define E NDXD + 1
2624 #define PSW E
2625 #define ST E
2626   { 0x1, 15, NULL, NULL, 0 },
2627
2628   /* The FL1 field in a POWER SC form instruction.  */
2629 #define FL1 E + 1
2630   /* The U field in an X form instruction.  */
2631 #define U FL1
2632   { 0xf, 12, NULL, NULL, 0 },
2633
2634   /* The FL2 field in a POWER SC form instruction.  */
2635 #define FL2 FL1 + 1
2636   { 0x7, 2, NULL, NULL, 0 },
2637
2638   /* The FLM field in an XFL form instruction.  */
2639 #define FLM FL2 + 1
2640   { 0xff, 17, NULL, NULL, 0 },
2641
2642   /* The FRA field in an X or A form instruction.  */
2643 #define FRA FLM + 1
2644 #define FRA_MASK (0x1f << 16)
2645   { 0x1f, 16, NULL, NULL, PPC_OPERAND_FPR },
2646
2647   /* The FRAp field of DFP instructions.  */
2648 #define FRAp FRA + 1
2649   { 0x1e, 16, NULL, NULL, PPC_OPERAND_FPR },
2650
2651   /* The FRB field in an X or A form instruction.  */
2652 #define FRB FRAp + 1
2653 #define FRB_MASK (0x1f << 11)
2654   { 0x1f, 11, NULL, NULL, PPC_OPERAND_FPR },
2655
2656   /* The FRBp field of DFP instructions.  */
2657 #define FRBp FRB + 1
2658   { 0x1e, 11, NULL, NULL, PPC_OPERAND_FPR },
2659
2660   /* The FRC field in an A form instruction.  */
2661 #define FRC FRBp + 1
2662 #define FRC_MASK (0x1f << 6)
2663   { 0x1f, 6, NULL, NULL, PPC_OPERAND_FPR },
2664
2665   /* The FRS field in an X form instruction or the FRT field in a D, X
2666      or A form instruction.  */
2667 #define FRS FRC + 1
2668 #define FRT FRS
2669   { 0x1f, 21, NULL, NULL, PPC_OPERAND_FPR },
2670
2671   /* The FRSp field of stfdp or the FRTp field of lfdp and DFP
2672      instructions.  */
2673 #define FRSp FRS + 1
2674 #define FRTp FRSp
2675   { 0x1e, 21, NULL, NULL, PPC_OPERAND_FPR },
2676
2677   /* The FXM field in an XFX instruction.  */
2678 #define FXM FRSp + 1
2679   { 0xff, 12, insert_fxm, extract_fxm, 0 },
2680
2681   /* Power4 version for mfcr.  */
2682 #define FXM4 FXM + 1
2683   { 0xff, 12, insert_fxm, extract_fxm, PPC_OPERAND_OPTIONAL },
2684
2685   /* The IMM20 field in an LI instruction.  */
2686 #define IMM20 FXM4 + 1
2687   { 0xfffff, PPC_OPSHIFT_INV, insert_li20, extract_li20, PPC_OPERAND_SIGNED},
2688
2689   /* The L field in a D or X form instruction.  */
2690 #define L IMM20 + 1
2691   { 0x1, 21, NULL, NULL, 0 },
2692
2693   /* The optional L field in tlbie and tlbiel instructions.  */
2694 #define LOPT L + 1
2695   /* The R field in a HTM X form instruction.  */
2696 #define HTM_R LOPT
2697   { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
2698
2699   /* The optional L field in the paste. instruction. This is similar to LOPT
2700      above, but with a default value of 1.  */
2701 #define L1OPT LOPT + 1
2702   { 0x1, 21, insert_l1opt, extract_l1opt, PPC_OPERAND_OPTIONAL },
2703
2704   /* The optional (for 32-bit) L field in cmp[l][i] instructions.  */
2705 #define L32OPT L1OPT + 1
2706   { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL32 },
2707
2708   /* The 2-bit L or WC field in an X (sync, dcbf or wait) form instruction.  */
2709 #define L2OPT L32OPT + 1
2710 #define LS L2OPT
2711 #define WC L2OPT
2712   { 0x3, 21, insert_ls, extract_ls, PPC_OPERAND_OPTIONAL },
2713
2714   /* The LEV field in a POWER SVC / POWER9 SCV form instruction.  */
2715 #define SVC_LEV L2OPT + 1
2716   { 0x7f, 5, NULL, NULL, 0 },
2717
2718   /* The LEV field in an SC form instruction.  */
2719 #define LEV SVC_LEV + 1
2720   { 0x7f, 5, NULL, NULL, PPC_OPERAND_OPTIONAL },
2721
2722   /* The LI field in an I form instruction.  The lower two bits are
2723      forced to zero.  */
2724 #define LI LEV + 1
2725   { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
2726
2727   /* The LI field in an I form instruction when used as an absolute
2728      address.  */
2729 #define LIA LI + 1
2730   { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
2731
2732   /* The 3-bit L field in a sync or dcbf instruction.  */
2733 #define LS3 LIA + 1
2734 #define L3OPT LS3
2735   { 0x7, 21, insert_ls, extract_ls, PPC_OPERAND_OPTIONAL },
2736
2737   /* The ME field in an M form instruction.  */
2738 #define ME LS3 + 1
2739 #define ME_MASK (0x1f << 1)
2740   { 0x1f, 1, NULL, NULL, 0 },
2741
2742   /* The MB and ME fields in an M form instruction expressed a single
2743      operand which is a bitmask indicating which bits to select.  This
2744      is a two operand form using PPC_OPERAND_NEXT.  See the
2745      description in opcode/ppc.h for what this means.  */
2746 #define MBE ME + 1
2747   { 0x1f, 6, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_NEXT },
2748   { -1, 0, insert_mbe, extract_mbe, 0 },
2749
2750   /* The MB or ME field in an MD or MDS form instruction.  The high
2751      bit is wrapped to the low end.  */
2752 #define MB6 MBE + 2
2753 #define ME6 MB6
2754 #define MB6_MASK (0x3f << 5)
2755   { 0x3f, 5, insert_mb6, extract_mb6, 0 },
2756
2757   /* The NB field in an X form instruction.  The value 32 is stored as
2758      0.  */
2759 #define NB MB6 + 1
2760   { 0x1f, 11, NULL, extract_nb, PPC_OPERAND_PLUS1 },
2761
2762   /* The NBI field in an lswi instruction, which has special value
2763      restrictions.  The value 32 is stored as 0.  */
2764 #define NBI NB + 1
2765   { 0x1f, 11, insert_nbi, extract_nb, PPC_OPERAND_PLUS1 },
2766
2767   /* The NSI field in a D form instruction.  This is the same as the
2768      SI field, only negated.  */
2769 #define NSI NBI + 1
2770   { 0xffff, 0, insert_nsi, extract_nsi,
2771     PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
2772
2773   /* The NSI field in a D form instruction when we accept a wide range
2774      of positive values.  */
2775 #define NSISIGNOPT NSI + 1
2776   { 0xffff, 0, insert_nsi, extract_nsi,
2777     PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
2778
2779   /* The RA field in an D, DS, DQ, X, XO, M, or MDS form instruction.  */
2780 #define RA NSISIGNOPT + 1
2781 #define RA_MASK (0x1f << 16)
2782   { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR },
2783
2784   /* As above, but 0 in the RA field means zero, not r0.  */
2785 #define RA0 RA + 1
2786   { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR_0 },
2787
2788   /* Similar to above, but optional.  */
2789 #define PRA0 RA0 + 1
2790   { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR_0 | PPC_OPERAND_OPTIONAL },
2791
2792   /* The RA field in the DQ form lq or an lswx instruction, which have
2793      special value restrictions.  */
2794 #define RAQ PRA0 + 1
2795 #define RAX RAQ
2796   { 0x1f, 16, insert_raq, extract_raq, PPC_OPERAND_GPR_0 },
2797
2798   /* Similar to above, but optional.  */
2799 #define PRAQ RAQ + 1
2800   { 0x1f, 16, insert_raq, extract_raq,
2801     PPC_OPERAND_GPR_0 | PPC_OPERAND_OPTIONAL },
2802
2803   /* The R field in an 8-byte D, DS, DQ or X form prefix instruction.  */
2804 #define PCREL PRAQ + 1
2805 #define PCREL_MASK (1ULL << 52)
2806   { 0x1, 52, insert_pcrel, extract_pcrel, PPC_OPERAND_OPTIONAL },
2807
2808 #define PCREL0 PCREL + 1
2809   { 0x1, 52, insert_pcrel, extract_pcrel0, PPC_OPERAND_OPTIONAL },
2810
2811   /* The RA field in a D or X form instruction which is an updating
2812      load, which means that the RA field may not be zero and may not
2813      equal the RT field.  */
2814 #define RAL PCREL0 + 1
2815   { 0x1f, 16, insert_ral, extract_ral, PPC_OPERAND_GPR_0 },
2816
2817   /* The RA field in an lmw instruction, which has special value
2818      restrictions.  */
2819 #define RAM RAL + 1
2820   { 0x1f, 16, insert_ram, extract_ram, PPC_OPERAND_GPR_0 },
2821
2822   /* The RA field in a D or X form instruction which is an updating
2823      store or an updating floating point load, which means that the RA
2824      field may not be zero.  */
2825 #define RAS RAM + 1
2826   { 0x1f, 16, insert_ras, extract_ras, PPC_OPERAND_GPR_0 },
2827
2828   /* The RA field of the tlbwe, dccci and iccci instructions,
2829      which are optional.  */
2830 #define RAOPT RAS + 1
2831   { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
2832
2833   /* The RB field in an X, XO, M, or MDS form instruction.  */
2834 #define RB RAOPT + 1
2835 #define RB_MASK (0x1f << 11)
2836   { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR },
2837
2838   /* The RS and RB fields in an X form instruction when they must be the same.
2839      This is used for extended mnemonics like mr.  */
2840 #define RSB RB + 1
2841   { 0x1f, 11, insert_rsb, extract_rsb, PPC_OPERAND_GPR },
2842
2843   /* The RB field in an lswx instruction, which has special value
2844      restrictions.  */
2845 #define RBX RSB + 1
2846   { 0x1f, 11, insert_rbx, extract_rbx, PPC_OPERAND_GPR },
2847
2848   /* The RB field of the dccci and iccci instructions, which are optional.  */
2849 #define RBOPT RBX + 1
2850   { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
2851
2852   /* The RC register field in an maddld, maddhd or maddhdu instruction.  */
2853 #define RC RBOPT + 1
2854   { 0x1f, 6, NULL, NULL, PPC_OPERAND_GPR },
2855
2856   /* The RS field in a D, DS, X, XFX, XS, M, MD or MDS form
2857      instruction or the RT field in a D, DS, X, XFX or XO form
2858      instruction.  */
2859 #define RS RC + 1
2860 #define RT RS
2861 #define RT_MASK (0x1f << 21)
2862 #define RD RS
2863   { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR },
2864
2865 #define RD_EVEN RS + 1
2866 #define RS_EVEN RD_EVEN
2867   { 0x1f, 21, insert_rD_rS_even, extract_rD_rS_even, PPC_OPERAND_GPR },
2868
2869   /* The RS and RT fields of the DS form stq and DQ form lq instructions,
2870      which have special value restrictions.  */
2871 #define RSQ RS_EVEN + 1
2872 #define RTQ RSQ
2873 #define Q_MASK (1 << 21)
2874   { 0x1e, 21, NULL, NULL, PPC_OPERAND_GPR },
2875
2876   /* The RS field of the tlbwe instruction, which is optional.  */
2877 #define RSO RSQ + 1
2878 #define RTO RSO
2879   { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
2880
2881   /* The RX field of the SE_RR form instruction.  */
2882 #define RX RSO + 1
2883   { 0x1f, PPC_OPSHIFT_INV, insert_rx, extract_rx, PPC_OPERAND_GPR },
2884
2885   /* The ARX field of the SE_RR form instruction.  */
2886 #define ARX RX + 1
2887   { 0x1f, PPC_OPSHIFT_INV, insert_arx, extract_arx, PPC_OPERAND_GPR },
2888
2889   /* The RY field of the SE_RR form instruction.  */
2890 #define RY ARX + 1
2891 #define RZ RY
2892   { 0x1f, PPC_OPSHIFT_INV, insert_ry, extract_ry, PPC_OPERAND_GPR },
2893
2894   /* The ARY field of the SE_RR form instruction.  */
2895 #define ARY RY + 1
2896   { 0x1f, PPC_OPSHIFT_INV, insert_ary, extract_ary, PPC_OPERAND_GPR },
2897
2898   /* The SCLSCI8 field in a D form instruction.  */
2899 #define SCLSCI8 ARY + 1
2900   { 0xffffffff, PPC_OPSHIFT_INV, insert_sci8, extract_sci8, 0 },
2901
2902   /* The SCLSCI8N field in a D form instruction.  This is the same as the
2903      SCLSCI8 field, only negated.  */
2904 #define SCLSCI8N SCLSCI8 + 1
2905   { 0xffffffff, PPC_OPSHIFT_INV, insert_sci8n, extract_sci8n,
2906     PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
2907
2908   /* The SD field of the SD4 form instruction.  */
2909 #define SE_SD SCLSCI8N + 1
2910   { 0xf, 8, NULL, NULL, PPC_OPERAND_PARENS },
2911
2912   /* The SD field of the SD4 form instruction, for halfword.  */
2913 #define SE_SDH SE_SD + 1
2914   { 0x1e, 7, NULL, NULL, PPC_OPERAND_PARENS },
2915
2916   /* The SD field of the SD4 form instruction, for word.  */
2917 #define SE_SDW SE_SDH + 1
2918   { 0x3c, 6, NULL, NULL, PPC_OPERAND_PARENS },
2919
2920   /* The SH field in an X or M form instruction.  */
2921 #define SH SE_SDW + 1
2922 #define SH_MASK (0x1f << 11)
2923   /* The other UIMM field in a EVX form instruction.  */
2924 #define EVUIMM SH
2925   /* The FC field in an atomic X form instruction.  */
2926 #define FC SH
2927 #define UIM5 SH
2928   { 0x1f, 11, NULL, NULL, 0 },
2929
2930 #define EVUIMM_LT8 SH + 1
2931   { 0x1f, 11, insert_evuimm_lt8, extract_evuimm_lt8, 0 },
2932
2933 #define EVUIMM_LT16 EVUIMM_LT8 + 1
2934   { 0x1f, 11, insert_evuimm_lt16, extract_evuimm_lt16, 0 },
2935
2936   /* The SI field in a HTM X form instruction.  */
2937 #define HTM_SI EVUIMM_LT16 + 1
2938   { 0x1f, 11, NULL, NULL, PPC_OPERAND_SIGNED },
2939
2940   /* The SH field in an MD form instruction.  This is split.  */
2941 #define SH6 HTM_SI + 1
2942 #define SH6_MASK ((0x1f << 11) | (1 << 1))
2943   { 0x3f, PPC_OPSHIFT_INV, insert_sh6, extract_sh6, 0 },
2944
2945   /* The SH field of some variants of the tlbre and tlbwe
2946      instructions, and the ELEV field of the e_sc instruction.  */
2947 #define SHO SH6 + 1
2948 #define ELEV SHO
2949   { 0x1f, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
2950
2951   /* The SI field in a D form instruction.  */
2952 #define SI SHO + 1
2953   { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED },
2954
2955   /* The SI field in a D form instruction when we accept a wide range
2956      of positive values.  */
2957 #define SISIGNOPT SI + 1
2958   { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
2959
2960   /* The SI8 field in a D form instruction.  */
2961 #define SI8 SISIGNOPT + 1
2962   { 0xff, 0, NULL, NULL, PPC_OPERAND_SIGNED },
2963
2964   /* The SPR field in an XFX form instruction.  This is flipped--the
2965      lower 5 bits are stored in the upper 5 and vice- versa.  */
2966 #define SPR SI8 + 1
2967 #define PMR SPR
2968 #define TMR SPR
2969 #define SPR_MASK (0x3ff << 11)
2970   { 0x3ff, 11, insert_spr, extract_spr, PPC_OPERAND_SPR },
2971
2972   /* The BAT index number in an XFX form m[ft]ibat[lu] instruction.  */
2973 #define SPRBAT SPR + 1
2974 #define SPRBAT_MASK (0xc1 << 11)
2975   { 0x7, PPC_OPSHIFT_INV, insert_sprbat, extract_sprbat, PPC_OPERAND_SPR },
2976
2977   /* The GQR index number in an XFX form m[ft]gqr instruction.  */
2978 #define SPRGQR SPRBAT + 1
2979 #define SPRGQR_MASK (0x7 << 16)
2980   { 0x7, 16, NULL, NULL, PPC_OPERAND_GQR },
2981
2982   /* The SPRG register number in an XFX form m[ft]sprg instruction.  */
2983 #define SPRG SPRGQR + 1
2984   { 0x1f, 16, insert_sprg, extract_sprg, PPC_OPERAND_SPR },
2985
2986   /* The SR field in an X form instruction.  */
2987 #define SR SPRG + 1
2988   /* The 4-bit UIMM field in a VX form instruction.  */
2989 #define UIMM4 SR
2990   { 0xf, 16, NULL, NULL, 0 },
2991
2992   /* The STRM field in an X AltiVec form instruction.  */
2993 #define STRM SR + 1
2994   /* The T field in a tlbilx form instruction.  */
2995 #define T STRM
2996   /* The L field in wclr instructions.  */
2997 #define L2 STRM
2998   { 0x3, 21, NULL, NULL, 0 },
2999
3000   /* The ESYNC field in an X (sync) form instruction.  */
3001 #define ESYNC STRM + 1
3002   { 0xf, 16, insert_esync, extract_esync, PPC_OPERAND_OPTIONAL },
3003
3004   /* The SV field in a POWER SC form instruction.  */
3005 #define SV ESYNC + 1
3006   { 0x3fff, 2, NULL, NULL, 0 },
3007
3008   /* The TBR field in an XFX form instruction.  This is like the SPR
3009      field, but it is optional.  */
3010 #define TBR SV + 1
3011   { 0x3ff, 11, insert_tbr, extract_tbr,
3012     PPC_OPERAND_SPR | PPC_OPERAND_OPTIONAL },
3013
3014   /* The TO field in a D or X form instruction.  */
3015 #define TO TBR + 1
3016 #define DUI TO
3017 #define TO_MASK (0x1f << 21)
3018   { 0x1f, 21, NULL, NULL, 0 },
3019
3020   /* The UI field in a D form instruction.  */
3021 #define UI TO + 1
3022   { 0xffff, 0, NULL, NULL, 0 },
3023
3024 #define UISIGNOPT UI + 1
3025   { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNOPT },
3026
3027   /* The IMM field in an SE_IM5 instruction.  */
3028 #define UI5 UISIGNOPT + 1
3029   { 0x1f, 4, NULL, NULL, 0 },
3030
3031   /* The OIMM field in an SE_OIM5 instruction.  */
3032 #define OIMM5 UI5 + 1
3033   { 0x1f, 4, insert_oimm, extract_oimm, PPC_OPERAND_PLUS1 },
3034
3035   /* The UI7 field in an SE_LI instruction.  */
3036 #define UI7 OIMM5 + 1
3037   { 0x7f, 4, NULL, NULL, 0 },
3038
3039   /* The VA field in a VA, VX or VXR form instruction.  */
3040 #define VA UI7 + 1
3041   { 0x1f, 16, NULL, NULL, PPC_OPERAND_VR },
3042
3043   /* The VB field in a VA, VX or VXR form instruction.  */
3044 #define VB VA + 1
3045   { 0x1f, 11, NULL, NULL, PPC_OPERAND_VR },
3046
3047   /* The VC field in a VA form instruction.  */
3048 #define VC VB + 1
3049   { 0x1f, 6, NULL, NULL, PPC_OPERAND_VR },
3050
3051   /* The VD or VS field in a VA, VX, VXR or X form instruction.  */
3052 #define VD VC + 1
3053 #define VS VD
3054   { 0x1f, 21, NULL, NULL, PPC_OPERAND_VR },
3055
3056   /* The SIMM field in a VX form instruction, and TE in Z form.  */
3057 #define SIMM VD + 1
3058 #define TE SIMM
3059   { 0x1f, 16, NULL, NULL, PPC_OPERAND_SIGNED},
3060
3061   /* The UIMM field in a VX form instruction.  */
3062 #define UIMM SIMM + 1
3063 #define DCTL UIMM
3064   { 0x1f, 16, NULL, NULL, 0 },
3065
3066   /* The 3-bit UIMM field in a VX form instruction.  */
3067 #define UIMM3 UIMM + 1
3068   { 0x7, 16, NULL, NULL, 0 },
3069
3070   /* The 6-bit UIM field in a X form instruction.  */
3071 #define UIM6 UIMM3 + 1
3072   { 0x3f, 16, NULL, NULL, 0 },
3073
3074   /* The SIX field in a VX form instruction.  */
3075 #define SIX UIM6 + 1
3076 #define MMMM SIX
3077   { 0xf, 11, NULL, NULL, 0 },
3078
3079   /* The PS field in a VX form instruction.  */
3080 #define PS SIX + 1
3081   { 0x1, 9, NULL, NULL, 0 },
3082
3083   /* The SH field in a vector shift double by bit immediate instruction.  */
3084 #define SH3 PS + 1
3085   { 0x7, 6, NULL, NULL, 0 },
3086
3087   /* The SHB field in a VA form instruction.  */
3088 #define SHB SH3 + 1
3089   { 0xf, 6, NULL, NULL, 0 },
3090
3091   /* The other UIMM field in a half word EVX form instruction.  */
3092 #define EVUIMM_1 SHB + 1
3093   { 0x1f, 11, NULL, NULL, PPC_OPERAND_PARENS },
3094
3095 #define EVUIMM_1_EX0 EVUIMM_1 + 1
3096   { 0x1f, 11, insert_evuimm1_ex0, extract_evuimm1_ex0, PPC_OPERAND_PARENS },
3097
3098 #define EVUIMM_2 EVUIMM_1_EX0 + 1
3099   { 0x3e, 10, NULL, NULL, PPC_OPERAND_PARENS },
3100
3101 #define EVUIMM_2_EX0 EVUIMM_2 + 1
3102   { 0x3e, 10, insert_evuimm2_ex0, extract_evuimm2_ex0, PPC_OPERAND_PARENS },
3103
3104   /* The other UIMM field in a word EVX form instruction.  */
3105 #define EVUIMM_4 EVUIMM_2_EX0 + 1
3106   { 0x7c, 9, NULL, NULL, PPC_OPERAND_PARENS },
3107
3108 #define EVUIMM_4_EX0 EVUIMM_4 + 1
3109   { 0x7c, 9, insert_evuimm4_ex0, extract_evuimm4_ex0, PPC_OPERAND_PARENS },
3110
3111   /* The other UIMM field in a double EVX form instruction.  */
3112 #define EVUIMM_8 EVUIMM_4_EX0 + 1
3113   { 0xf8, 8, NULL, NULL, PPC_OPERAND_PARENS },
3114
3115 #define EVUIMM_8_EX0 EVUIMM_8 + 1
3116   { 0xf8, 8, insert_evuimm8_ex0, extract_evuimm8_ex0, PPC_OPERAND_PARENS },
3117
3118   /* The WS or DRM field in an X form instruction.  */
3119 #define WS EVUIMM_8_EX0 + 1
3120 #define DRM WS
3121   /* The NNN field in a VX form instruction for SPE2  */
3122 #define NNN WS
3123   { 0x7, 11, NULL, NULL, 0 },
3124
3125   /* PowerPC paired singles extensions.  */
3126   /* W bit in the pair singles instructions for x type instructions.  */
3127 #define PSWM WS + 1
3128   /* The BO16 field in a BD8 form instruction.  */
3129 #define BO16 PSWM
3130   {  0x1, 10, 0, 0, 0 },
3131
3132   /* IDX bits for quantization in the pair singles instructions.  */
3133 #define PSQ PSWM + 1
3134   {  0x7, 12, 0, 0, PPC_OPERAND_GQR },
3135
3136   /* IDX bits for quantization in the pair singles x-type instructions.  */
3137 #define PSQM PSQ + 1
3138   {  0x7, 7, 0, 0, PPC_OPERAND_GQR },
3139
3140   /* Smaller D field for quantization in the pair singles instructions.  */
3141 #define PSD PSQM + 1
3142   {  0xfff, 0, 0, 0,  PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
3143
3144   /* The L field in an mtmsrd or A form instruction or R or W in an
3145      X form.  */
3146 #define A_L PSD + 1
3147 #define W A_L
3148 #define X_R A_L
3149   { 0x1, 16, NULL, NULL, PPC_OPERAND_OPTIONAL },
3150
3151   /* The RMC or CY field in a Z23 form instruction.  */
3152 #define RMC A_L + 1
3153 #define CY RMC
3154   { 0x3, 9, NULL, NULL, 0 },
3155
3156 #define R RMC + 1
3157 #define MP R
3158   { 0x1, 16, NULL, NULL, 0 },
3159
3160 #define RIC R + 1
3161   { 0x3, 18, NULL, NULL, PPC_OPERAND_OPTIONAL },
3162
3163 #define PRS RIC + 1
3164   { 0x1, 17, NULL, NULL, PPC_OPERAND_OPTIONAL },
3165
3166 #define SP PRS + 1
3167   { 0x3, 19, NULL, NULL, 0 },
3168
3169 #define S SP + 1
3170   { 0x1, 20, NULL, NULL, 0 },
3171
3172   /* The S field in a XL form instruction.  */
3173 #define SXL S + 1
3174   { 0x1, 11, insert_sxl, extract_sxl, PPC_OPERAND_OPTIONAL },
3175
3176   /* SH field starting at bit position 16.  */
3177 #define SH16 SXL + 1
3178   /* The DCM and DGM fields in a Z form instruction.  */
3179 #define DCM SH16
3180 #define DGM DCM
3181   { 0x3f, 10, NULL, NULL, 0 },
3182
3183   /* The EH field in larx instruction.  */
3184 #define EH SH16 + 1
3185   { 0x1, 0, NULL, NULL, PPC_OPERAND_OPTIONAL },
3186
3187   /* The L field in an mtfsf or XFL form instruction.  */
3188   /* The A field in a HTM X form instruction.  */
3189 #define XFL_L EH + 1
3190 #define HTM_A XFL_L
3191   { 0x1, 25, NULL, NULL, PPC_OPERAND_OPTIONAL},
3192
3193   /* Xilinx APU related masks and macros */
3194 #define FCRT XFL_L + 1
3195 #define FCRT_MASK (0x1f << 21)
3196   { 0x1f, 21, 0, 0, PPC_OPERAND_FCR },
3197
3198   /* Xilinx FSL related masks and macros */
3199 #define FSL FCRT + 1
3200 #define FSL_MASK (0x1f << 11)
3201   { 0x1f, 11, 0, 0, PPC_OPERAND_FSL },
3202
3203   /* Xilinx UDI related masks and macros */
3204 #define URT FSL + 1
3205   { 0x1f, 21, 0, 0, PPC_OPERAND_UDI },
3206
3207 #define URA URT + 1
3208   { 0x1f, 16, 0, 0, PPC_OPERAND_UDI },
3209
3210 #define URB URA + 1
3211   { 0x1f, 11, 0, 0, PPC_OPERAND_UDI },
3212
3213 #define URC URB + 1
3214   { 0x1f, 6, 0, 0, PPC_OPERAND_UDI },
3215
3216   /* The VLESIMM field in a D form instruction.  */
3217 #define VLESIMM URC + 1
3218   { 0xffff, PPC_OPSHIFT_INV, insert_vlesi, extract_vlesi,
3219     PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
3220
3221   /* The VLENSIMM field in a D form instruction.  */
3222 #define VLENSIMM VLESIMM + 1
3223   { 0xffff, PPC_OPSHIFT_INV, insert_vlensi, extract_vlensi,
3224     PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
3225
3226   /* The VLEUIMM field in a D form instruction.  */
3227 #define VLEUIMM VLENSIMM + 1
3228   { 0xffff, PPC_OPSHIFT_INV, insert_vleui, extract_vleui, 0 },
3229
3230   /* The VLEUIMML field in a D form instruction.  */
3231 #define VLEUIMML VLEUIMM + 1
3232   { 0xffff, PPC_OPSHIFT_INV, insert_vleil, extract_vleil, 0 },
3233
3234   /* The XT and XS fields in an XX1 or XX3 form instruction.  This is
3235      split.  */
3236 #define XS6 VLEUIMML + 1
3237 #define XT6 XS6
3238   { 0x3f, PPC_OPSHIFT_INV, insert_xt6, extract_xt6, PPC_OPERAND_VSR },
3239
3240   /* The XT and XS fields in an DQ form VSX instruction.  This is split.  */
3241 #define XSQ6 XT6 + 1
3242 #define XTQ6 XSQ6
3243   { 0x3f, PPC_OPSHIFT_INV, insert_xtq6, extract_xtq6, PPC_OPERAND_VSR },
3244
3245   /* The split XTp field in a vector paired instruction.  */
3246 #define XTP XSQ6 + 1
3247   { 0x3e, PPC_OPSHIFT_INV, insert_xtp, extract_xtp, PPC_OPERAND_VSR },
3248
3249 #define XTS XTP + 1
3250   { 0x3f, PPC_OPSHIFT_INV, insert_xts, extract_xts, PPC_OPERAND_VSR },
3251
3252   /* The XT field in a plxv instruction.  Runs into the OP field.  */
3253 #define XTOP XTS + 1
3254   { 0x3f, 21, NULL, NULL, PPC_OPERAND_VSR },
3255
3256   /* The XA field in an XX3 form instruction.  This is split.  */
3257 #define XA6 XTOP + 1
3258   { 0x3f, PPC_OPSHIFT_INV, insert_xa6, extract_xa6, PPC_OPERAND_VSR },
3259
3260   /* The XA field in an MMA XX3 form instruction.  This is split and
3261      must not overlap with the ACC operand.  */
3262 #define XA6a XA6 + 1
3263   { 0x3f, PPC_OPSHIFT_INV, insert_xa6a, extract_xa6a, PPC_OPERAND_VSR },
3264
3265   /* The XAp field in an MMA XX3 form instruction.  This is split.
3266      This is like XA6a, but must be even.  */
3267 #define XA6ap XA6a + 1
3268   { 0x3e, PPC_OPSHIFT_INV, insert_xa6a, extract_xa6a, PPC_OPERAND_VSR },
3269
3270   /* The XB field in an XX2 or XX3 form instruction.  This is split.  */
3271 #define XB6 XA6ap + 1
3272   { 0x3f, PPC_OPSHIFT_INV, insert_xb6, extract_xb6, PPC_OPERAND_VSR },
3273
3274   /* The XB field in an XX3 form instruction.  This is split and
3275      must not overlap with the ACC operand.  */
3276 #define XB6a XB6 + 1
3277   { 0x3f, PPC_OPSHIFT_INV, insert_xb6a, extract_xb6a, PPC_OPERAND_VSR },
3278
3279   /* The XA and XB fields in an XX3 form instruction when they must be the same.
3280      This is used in extended mnemonics like xvmovdp.  This is split.  */
3281 #define XAB6 XB6a + 1
3282   { 0x3f, PPC_OPSHIFT_INV, insert_xab6, extract_xab6, PPC_OPERAND_VSR },
3283
3284   /* The XC field in an XX4 form instruction.  This is split.  */
3285 #define XC6 XAB6 + 1
3286   { 0x3f, PPC_OPSHIFT_INV, insert_xc6, extract_xc6, PPC_OPERAND_VSR },
3287
3288   /* The DM or SHW field in an XX3 form instruction.  */
3289 #define DM XC6 + 1
3290 #define SHW DM
3291   { 0x3, 8, NULL, NULL, 0 },
3292
3293   /* The DM field in an extended mnemonic XX3 form instruction.  */
3294 #define DMEX DM + 1
3295   { 0x3, 8, insert_dm, extract_dm, 0 },
3296
3297   /* The UIM field in an XX2 form instruction.  */
3298 #define UIM DMEX + 1
3299   /* The 2-bit UIMM field in a VX form instruction.  */
3300 #define UIMM2 UIM
3301   /* The 2-bit L field in a darn instruction.  */
3302 #define LRAND UIM
3303   { 0x3, 16, NULL, NULL, 0 },
3304
3305 #define ERAT_T UIM + 1
3306   { 0x7, 21, NULL, NULL, 0 },
3307
3308 #define IH ERAT_T + 1
3309   { 0x7, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
3310
3311   /* The 2-bit SC or PL field in an X form instruction.  */
3312 #define SC2 IH + 1
3313 #define PL SC2
3314   { 0x3, 16, insert_pl, extract_pl, PPC_OPERAND_OPTIONAL },
3315
3316   /* The 8-bit IMM8 field in a XX1 form instruction.  */
3317 #define IMM8 SC2 + 1
3318   { 0xff, 11, NULL, NULL, PPC_OPERAND_SIGNOPT },
3319
3320 #define VX_OFF IMM8 + 1
3321   { 0x3, 0, insert_off_lsp, extract_off_lsp, 0 },
3322
3323 #define VX_OFF_SPE2 VX_OFF + 1
3324   { 0x7, 0, insert_off_spe2, extract_off_spe2, 0 },
3325
3326 #define BBB VX_OFF_SPE2 + 1
3327   { 0x7, 13, NULL, NULL, 0 },
3328
3329 #define DDD BBB + 1
3330 #define VX_MASK_DDD  (VX_MASK & ~0x1)
3331   { 0x7, PPC_OPSHIFT_INV, insert_Ddd, extract_Ddd, 0 },
3332
3333 #define HH DDD + 1
3334   { 0x3, 13, NULL, NULL, 0 },
3335 };
3336
3337 const unsigned int num_powerpc_operands = (sizeof (powerpc_operands)
3338                                            / sizeof (powerpc_operands[0]));
3339 \f
3340 /* Macros used to form opcodes.  */
3341
3342 /* The main opcode.  */
3343 #define OP(x) ((((uint64_t)(x)) & 0x3f) << 26)
3344 #define OP_MASK OP (0x3f)
3345
3346 /* The prefix opcode.  */
3347 #define PREFIX_OP (1ULL << 58)
3348
3349 /* The 2-bit prefix form.  */
3350 #define PREFIX_FORM(x) ((x & 3ULL) << 56)
3351
3352 #define SUFFIX_MASK ((1ULL << 32) - 1)
3353 #define PREFIX_MASK (SUFFIX_MASK << 32)
3354
3355 /* Prefix insn, eight byte load/store form 8LS.  */
3356 #define P8LS (PREFIX_OP | PREFIX_FORM (0))
3357
3358 /* Prefix insn, eight byte register to register form 8RR.  */
3359 #define P8RR (PREFIX_OP | PREFIX_FORM (1))
3360
3361 /* Prefix insn, modified load/store form MLS.  */
3362 #define PMLS (PREFIX_OP | PREFIX_FORM (2))
3363
3364 /* Prefix insn, modified register to register form MRR.  */
3365 #define PMRR (PREFIX_OP | PREFIX_FORM (3))
3366
3367 /* Prefix insn, modified masked immediate register to register form MMIRR.  */
3368 #define PMMIRR (PREFIX_OP | PREFIX_FORM (3) | (9ULL << 52))
3369
3370 /* An 8-byte D form prefix instruction.  */
3371 #define P_D_MASK (((-1ULL << 50) & ~PCREL_MASK) | OP_MASK)
3372
3373 /* The same as P_D_MASK, but with the RA and PCREL fields specified.  */
3374 #define P_DRAPCREL_MASK (P_D_MASK | PCREL_MASK | RA_MASK)
3375
3376 /* Mask for prefix X form instructions.  */
3377 #define P_X_MASK (PREFIX_MASK | X_MASK)
3378 #define P_XX1_MASK (PREFIX_MASK | XX1_MASK)
3379
3380 /* Mask for prefix vector permute insns.  */
3381 #define P_XX4_MASK (PREFIX_MASK | XX4_MASK)
3382 #define P_UXX4_MASK (P_XX4_MASK & ~(7ULL << 32))
3383 #define P_U8XX4_MASK (P_XX4_MASK & ~(0xffULL << 32))
3384
3385 /* MMIRR:XX3-form 8-byte outer product instructions.  */
3386 #define P_GER_MASK ((-1ULL << 40) | XX3_MASK | (3 << 21) | 1)
3387 #define P_GER2_MASK (P_GER_MASK & ~(3ULL << 46))
3388 #define P_GER4_MASK (P_GER_MASK & ~(15ULL << 44))
3389 #define P_GER8_MASK (P_GER_MASK & ~(255ULL << 40))
3390 #define P_GER64_MASK (P_GER_MASK | (3ULL << 32))
3391
3392 /* Vector splat immediate op.  */
3393 #define VSOP(op, xop) (OP (op) | (xop << 17))
3394 #define P_VS_MASK ((-1ULL << 48) | VSOP (0x3f, 0xf))
3395 #define P_VSI_MASK ((-1ULL << 48) | VSOP (0x3f, 0xe))
3396
3397 /* The main opcode combined with a trap code in the TO field of a D
3398    form instruction.  Used for extended mnemonics for the trap
3399    instructions.  */
3400 #define OPTO(x,to) (OP (x) | ((((uint64_t)(to)) & 0x1f) << 21))
3401 #define OPTO_MASK (OP_MASK | TO_MASK)
3402
3403 /* The main opcode combined with a comparison size bit in the L field
3404    of a D form or X form instruction.  Used for extended mnemonics for
3405    the comparison instructions.  */
3406 #define OPL(x,l) (OP (x) | ((((uint64_t)(l)) & 1) << 21))
3407 #define OPL_MASK OPL (0x3f,1)
3408
3409 /* The main opcode combined with an update code in D form instruction.
3410    Used for extended mnemonics for VLE memory instructions.  */
3411 #define OPVUP(x,vup) (OP (x) | ((((uint64_t)(vup)) & 0xff) << 8))
3412 #define OPVUP_MASK OPVUP (0x3f,  0xff)
3413
3414 /* The main opcode combined with an update code and the RT fields
3415    specified in D form instruction.  Used for VLE volatile context
3416    save/restore instructions.  */
3417 #define OPVUPRT(x,vup,rt)                       \
3418   (OPVUP (x, vup)                               \
3419    | ((((uint64_t)(rt)) & 0x1f) << 21))
3420 #define OPVUPRT_MASK OPVUPRT (0x3f, 0xff, 0x1f)
3421
3422 /* An A form instruction.  */
3423 #define A(op, xop, rc)                          \
3424   (OP (op)                                      \
3425    | ((((uint64_t)(xop)) & 0x1f) << 1)  \
3426    | (((uint64_t)(rc)) & 1))
3427 #define A_MASK A (0x3f, 0x1f, 1)
3428
3429 /* An A_MASK with the FRB field fixed.  */
3430 #define AFRB_MASK (A_MASK | FRB_MASK)
3431
3432 /* An A_MASK with the FRC field fixed.  */
3433 #define AFRC_MASK (A_MASK | FRC_MASK)
3434
3435 /* An A_MASK with the FRA and FRC fields fixed.  */
3436 #define AFRAFRC_MASK (A_MASK | FRA_MASK | FRC_MASK)
3437
3438 /* An AFRAFRC_MASK, but with L bit clear.  */
3439 #define AFRALFRC_MASK (AFRAFRC_MASK & ~((uint64_t) 1 << 16))
3440
3441 /* A B form instruction.  */
3442 #define B(op, aa, lk)                           \
3443   (OP (op)                                      \
3444    | ((((uint64_t)(aa)) & 1) << 1)              \
3445    | ((lk) & 1))
3446 #define B_MASK B (0x3f, 1, 1)
3447
3448 /* A BD8 form instruction.  This is a 16-bit instruction.  */
3449 #define BD8(op, aa, lk)                         \
3450   (((((uint64_t)(op)) & 0x3f) << 10)    \
3451    | (((aa) & 1) << 9)                          \
3452    | (((lk) & 1) << 8))
3453 #define BD8_MASK BD8 (0x3f, 1, 1)
3454
3455 /* Another BD8 form instruction.  This is a 16-bit instruction.  */
3456 #define BD8IO(op) ((((uint64_t)(op)) & 0x1f) << 11)
3457 #define BD8IO_MASK BD8IO (0x1f)
3458
3459 /* A BD8 form instruction for simplified mnemonics.  */
3460 #define EBD8IO(op, bo, bi) (BD8IO ((op)) | ((bo) << 10) | ((bi) << 8))
3461 /* A mask that excludes BO32 and BI32.  */
3462 #define EBD8IO1_MASK 0xf800
3463 /* A mask that includes BO32 and excludes BI32.  */
3464 #define EBD8IO2_MASK 0xfc00
3465 /* A mask that include BO32 AND BI32.  */
3466 #define EBD8IO3_MASK 0xff00
3467
3468 /* A BD15 form instruction.  */
3469 #define BD15(op, aa, lk)                        \
3470   (OP (op)                                      \
3471    | ((((uint64_t)(aa)) & 0xf) << 22)   \
3472    | ((lk) & 1))
3473 #define BD15_MASK BD15 (0x3f, 0xf, 1)
3474
3475 /* A BD15 form instruction for extended conditional branch mnemonics.  */
3476 #define EBD15(op, aa, bo, lk)                   \
3477   (((op) & 0x3fu) << 26)                        \
3478   | (((aa) & 0xf) << 22)                        \
3479   | (((bo) & 0x3) << 20)                        \
3480   | ((lk) & 1)
3481 #define EBD15_MASK 0xfff00001
3482
3483 /* A BD15 form instruction for extended conditional branch mnemonics
3484    with BI.  */
3485 #define EBD15BI(op, aa, bo, bi, lk)             \
3486   ((((op) & 0x3fu) << 26)                       \
3487    | (((aa) & 0xf) << 22)                       \
3488    | (((bo) & 0x3) << 20)                       \
3489    | (((bi) & 0x3) << 16)                       \
3490    | ((lk) & 1))
3491
3492 #define EBD15BI_MASK  0xfff30001
3493
3494 /* A BD24 form instruction.  */
3495 #define BD24(op, aa, lk)                        \
3496   (OP (op)                                      \
3497    | ((((uint64_t)(aa)) & 1) << 25)     \
3498    | ((lk) & 1))
3499 #define BD24_MASK BD24 (0x3f, 1, 1)
3500
3501 /* A B form instruction setting the BO field.  */
3502 #define BBO(op, bo, aa, lk)                     \
3503   (B ((op), (aa), (lk))                         \
3504    | ((((uint64_t)(bo)) & 0x1f) << 21))
3505 #define BBO_MASK BBO (0x3f, 0x1f, 1, 1)
3506
3507 /* A BBO_MASK with the y bit of the BO field removed.  This permits
3508    matching a conditional branch regardless of the setting of the y
3509    bit.  Similarly for the 'at' bits used for power4 branch hints.  */
3510 #define Y_MASK   (((uint64_t) 1) << 21)
3511 #define AT1_MASK (((uint64_t) 3) << 21)
3512 #define AT2_MASK (((uint64_t) 9) << 21)
3513 #define BBOY_MASK  (BBO_MASK &~ Y_MASK)
3514 #define BBOAT_MASK (BBO_MASK &~ AT1_MASK)
3515
3516 /* A B form instruction setting the BO field and the condition bits of
3517    the BI field.  */
3518 #define BBOCB(op, bo, cb, aa, lk) \
3519   (BBO ((op), (bo), (aa), (lk)) | ((((uint64_t)(cb)) & 0x3) << 16))
3520 #define BBOCB_MASK BBOCB (0x3f, 0x1f, 0x3, 1, 1)
3521
3522 /* A BBOCB_MASK with the y bit of the BO field removed.  */
3523 #define BBOYCB_MASK (BBOCB_MASK &~ Y_MASK)
3524 #define BBOATCB_MASK (BBOCB_MASK &~ AT1_MASK)
3525 #define BBOAT2CB_MASK (BBOCB_MASK &~ AT2_MASK)
3526
3527 /* A BBOYCB_MASK in which the BI field is fixed.  */
3528 #define BBOYBI_MASK (BBOYCB_MASK | BI_MASK)
3529 #define BBOATBI_MASK (BBOAT2CB_MASK | BI_MASK)
3530
3531 /* A VLE C form instruction.  */
3532 #define C_LK(x, lk) (((((uint64_t)(x)) & 0x7fff) << 1) | ((lk) & 1))
3533 #define C_LK_MASK C_LK(0x7fff, 1)
3534 #define C(x) ((((uint64_t)(x)) & 0xffff))
3535 #define C_MASK C(0xffff)
3536
3537 /* An Context form instruction.  */
3538 #define CTX(op, xop)   (OP (op) | (((uint64_t)(xop)) & 0x7))
3539 #define CTX_MASK CTX(0x3f, 0x7)
3540
3541 /* An User Context form instruction.  */
3542 #define UCTX(op, xop)  (OP (op) | (((uint64_t)(xop)) & 0x1f))
3543 #define UCTX_MASK UCTX(0x3f, 0x1f)
3544
3545 /* The main opcode mask with the RA field clear.  */
3546 #define DRA_MASK (OP_MASK | RA_MASK)
3547
3548 /* A DQ form VSX instruction.  */
3549 #define DQX(op, xop) (OP (op) | ((xop) & 0x7))
3550 #define DQX_MASK DQX (0x3f, 7)
3551
3552 /* A DQ form VSX vector paired instruction.  */
3553 #define DQXP(op, xop) (OP (op) | ((xop) & 0xf))
3554 #define DQXP_MASK DQXP (0x3f, 0xf)
3555
3556 /* A DS form instruction.  */
3557 #define DSO(op, xop) (OP (op) | ((xop) & 0x3))
3558 #define DS_MASK DSO (0x3f, 3)
3559
3560 /* An DX form instruction.  */
3561 #define DX(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1f) << 1))
3562 #define DX_MASK DX (0x3f, 0x1f)
3563 /* An DX form instruction with the D bits specified.  */
3564 #define NODX_MASK (DX_MASK | 0x1fffc1)
3565
3566 /* An EVSEL form instruction.  */
3567 #define EVSEL(op, xop) (OP (op) | (((uint64_t)(xop)) & 0xff) << 3)
3568 #define EVSEL_MASK EVSEL(0x3f, 0xff)
3569
3570 /* An IA16 form instruction.  */
3571 #define IA16(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f) << 11)
3572 #define IA16_MASK IA16(0x3f, 0x1f)
3573
3574 /* An I16A form instruction.  */
3575 #define I16A(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f) << 11)
3576 #define I16A_MASK I16A(0x3f, 0x1f)
3577
3578 /* An I16L form instruction.  */
3579 #define I16L(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f) << 11)
3580 #define I16L_MASK I16L(0x3f, 0x1f)
3581
3582 /* An IM7 form instruction.  */
3583 #define IM7(op) ((((uint64_t)(op)) & 0x1f) << 11)
3584 #define IM7_MASK IM7(0x1f)
3585
3586 /* An M form instruction.  */
3587 #define M(op, rc) (OP (op) | ((rc) & 1))
3588 #define M_MASK M (0x3f, 1)
3589
3590 /* An LI20 form instruction.  */
3591 #define LI20(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1) << 15)
3592 #define LI20_MASK LI20(0x3f, 0x1)
3593
3594 /* An M form instruction with the ME field specified.  */
3595 #define MME(op, me, rc)                         \
3596   (M ((op), (rc))                               \
3597    | ((((uint64_t)(me)) & 0x1f) << 1))
3598
3599 /* An M_MASK with the MB and ME fields fixed.  */
3600 #define MMBME_MASK (M_MASK | MB_MASK | ME_MASK)
3601
3602 /* An M_MASK with the SH and ME fields fixed.  */
3603 #define MSHME_MASK (M_MASK | SH_MASK | ME_MASK)
3604
3605 /* An MD form instruction.  */
3606 #define MD(op, xop, rc)                         \
3607   (OP (op)                                      \
3608    | ((((uint64_t)(xop)) & 0x7) << 2)   \
3609    | ((rc) & 1))
3610 #define MD_MASK MD (0x3f, 0x7, 1)
3611
3612 /* An MD_MASK with the MB field fixed.  */
3613 #define MDMB_MASK (MD_MASK | MB6_MASK)
3614
3615 /* An MD_MASK with the SH field fixed.  */
3616 #define MDSH_MASK (MD_MASK | SH6_MASK)
3617
3618 /* An MDS form instruction.  */
3619 #define MDS(op, xop, rc)                        \
3620   (OP (op)                                      \
3621    | ((((uint64_t)(xop)) & 0xf) << 1)   \
3622    | ((rc) & 1))
3623 #define MDS_MASK MDS (0x3f, 0xf, 1)
3624
3625 /* An MDS_MASK with the MB field fixed.  */
3626 #define MDSMB_MASK (MDS_MASK | MB6_MASK)
3627
3628 /* An SC form instruction.  */
3629 #define SC(op, sa, lk)                          \
3630   (OP (op)                                      \
3631    | ((((uint64_t)(sa)) & 1) << 1)              \
3632    | ((lk) & 1))
3633 #define SC_MASK                                 \
3634   (OP_MASK                                      \
3635    | (((uint64_t) 0x3ff) << 16)         \
3636    | (((uint64_t) 1) << 1)                      \
3637    | 1)
3638
3639 /* An SCI8 form instruction.  */
3640 #define SCI8(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1f) << 11))
3641 #define SCI8_MASK SCI8(0x3f, 0x1f)
3642
3643 /* An SCI8 form instruction.  */
3644 #define SCI8BF(op, fop, xop)                    \
3645   (OP (op)                                      \
3646    | ((((uint64_t)(xop)) & 0x1f) << 11) \
3647    | (((fop) & 7) << 23))
3648 #define SCI8BF_MASK SCI8BF(0x3f, 7, 0x1f)
3649
3650 /* An SD4 form instruction.  This is a 16-bit instruction.  */
3651 #define SD4(op) ((((uint64_t)(op)) & 0xf) << 12)
3652 #define SD4_MASK SD4(0xf)
3653
3654 /* An SE_IM5 form instruction.  This is a 16-bit instruction.  */
3655 #define SE_IM5(op, xop)                         \
3656   (((((uint64_t)(op)) & 0x3f) << 10)    \
3657    | (((xop) & 0x1) << 9))
3658 #define SE_IM5_MASK SE_IM5(0x3f, 1)
3659
3660 /* An SE_R form instruction.  This is a 16-bit instruction.  */
3661 #define SE_R(op, xop)                           \
3662   (((((uint64_t)(op)) & 0x3f) << 10)    \
3663    | (((xop) & 0x3f) << 4))
3664 #define SE_R_MASK SE_R(0x3f, 0x3f)
3665
3666 /* An SE_RR form instruction.  This is a 16-bit instruction.  */
3667 #define SE_RR(op, xop)                          \
3668   (((((uint64_t)(op)) & 0x3f) << 10)    \
3669    | (((xop) & 0x3) << 8))
3670 #define SE_RR_MASK SE_RR(0x3f, 3)
3671
3672 /* A VX form instruction.  */
3673 #define VX(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x7ff))
3674
3675 /* The mask for an VX form instruction.  */
3676 #define VX_MASK VX(0x3f, 0x7ff)
3677
3678 /* A VX LSP form instruction.  */
3679 #define VX_LSP(op, xop) (OP (op) | (((uint64_t)(xop)) & 0xffff))
3680
3681 /* The mask for an VX LSP form instruction.  */
3682 #define VX_LSP_MASK     VX_LSP(0x3f, 0xffff)
3683 #define VX_LSP_OFF_MASK VX_LSP(0x3f, 0x7fc)
3684
3685 /* Additional format of VX SPE2 form instruction.   */
3686 #define VX_RA_CONST(op, xop, bits11_15)                 \
3687   (OP (op)                                              \
3688    | (((uint64_t)(bits11_15) & 0x1f) << 16)     \
3689    | (((uint64_t)(xop)) & 0x7ff))
3690 #define VX_RA_CONST_MASK VX_RA_CONST(0x3f, 0x7ff, 0x1f)
3691
3692 #define VX_RB_CONST(op, xop, bits16_20)                 \
3693   (OP (op)                                              \
3694    | (((uint64_t)(bits16_20) & 0x1f) << 11)     \
3695    | (((uint64_t)(xop)) & 0x7ff))
3696 #define VX_RB_CONST_MASK VX_RB_CONST(0x3f, 0x7ff, 0x1f)
3697
3698 #define VX_OFF_SPE2_MASK VX(0x3f, 0x7f8)
3699
3700 #define VX_SPE_CRFD(op, xop, bits9_10)                  \
3701   (OP (op)                                              \
3702    | (((uint64_t)(bits9_10) & 0x3) << 21)               \
3703    | (((uint64_t)(xop)) & 0x7ff))
3704 #define VX_SPE_CRFD_MASK VX_SPE_CRFD(0x3f, 0x7ff, 0x3)
3705
3706 #define VX_SPE2_CLR(op, xop, bit16)                     \
3707   (OP (op)                                              \
3708    | (((uint64_t)(bit16) & 0x1) << 15)          \
3709    | (((uint64_t)(xop)) & 0x7ff))
3710 #define VX_SPE2_CLR_MASK VX_SPE2_CLR(0x3f, 0x7ff, 0x1)
3711
3712 #define VX_SPE2_SPLATB(op, xop, bits19_20)              \
3713   (OP (op)                                              \
3714    | (((uint64_t)(bits19_20) & 0x3) << 11)              \
3715    | (((uint64_t)(xop)) & 0x7ff))
3716 #define VX_SPE2_SPLATB_MASK VX_SPE2_SPLATB(0x3f, 0x7ff, 0x3)
3717
3718 #define VX_SPE2_OCTET(op, xop, bits16_17)               \
3719   (OP (op)                                              \
3720    | (((uint64_t)(bits16_17) & 0x3) << 14)              \
3721    | (((uint64_t)(xop)) & 0x7ff))
3722 #define VX_SPE2_OCTET_MASK VX_SPE2_OCTET(0x3f, 0x7ff, 0x7)
3723
3724 #define VX_SPE2_DDHH(op, xop, bit16)                    \
3725   (OP (op)                                              \
3726    | (((uint64_t)(bit16) & 0x1) << 15)          \
3727    | (((uint64_t)(xop)) & 0x7ff))
3728 #define VX_SPE2_DDHH_MASK VX_SPE2_DDHH(0x3f, 0x7ff, 0x1)
3729
3730 #define VX_SPE2_HH(op, xop, bit16, bits19_20)           \
3731   (OP (op)                                              \
3732    | (((uint64_t)(bit16) & 0x1) << 15)          \
3733    | (((uint64_t)(bits19_20) & 0x3) << 11)      \
3734    | (((uint64_t)(xop)) & 0x7ff))
3735 #define VX_SPE2_HH_MASK VX_SPE2_HH(0x3f, 0x7ff, 0x1, 0x3)
3736
3737 #define VX_SPE2_EVMAR(op, xop)                          \
3738   (OP (op)                                              \
3739    | ((uint64_t)(0x1) << 11)                    \
3740    | (((uint64_t)(xop)) & 0x7ff))
3741 #define VX_SPE2_EVMAR_MASK                              \
3742   (VX_SPE2_EVMAR(0x3f, 0x7ff)                           \
3743    | ((uint64_t)(0x1) << 11))
3744
3745 /* A VX_MASK with the VA field fixed.  */
3746 #define VXVA_MASK (VX_MASK | (0x1f << 16))
3747
3748 /* A VX_MASK with the VB field fixed.  */
3749 #define VXVB_MASK (VX_MASK | (0x1f << 11))
3750
3751 /* A VX_MASK with the VA and VB fields fixed.  */
3752 #define VXVAVB_MASK (VX_MASK | (0x1f << 16) | (0x1f << 11))
3753
3754 /* A VX_MASK with the VD and VA fields fixed.  */
3755 #define VXVDVA_MASK (VX_MASK | (0x1f << 21) | (0x1f << 16))
3756
3757 /* A VX_MASK with a UIMM4 field.  */
3758 #define VXUIMM4_MASK (VX_MASK | (0x1 << 20))
3759
3760 /* A VX_MASK with a UIMM3 field.  */
3761 #define VXUIMM3_MASK (VX_MASK | (0x3 << 19))
3762
3763 /* A VX_MASK with a UIMM2 field.  */
3764 #define VXUIMM2_MASK (VX_MASK | (0x7 << 18))
3765
3766 /* A VX_MASK with a PS field.  */
3767 #define VXPS_MASK (VX_MASK & ~(0x1 << 9))
3768
3769 /* A VX_MASK with the VA field fixed with a PS field.  */
3770 #define VXVAPS_MASK (VXVA_MASK & ~(0x1 << 9))
3771
3772 /* A VX_MASK with the VA field fixed with a MP field.  */
3773 #define VXVAM_MASK (VXVA_MASK & ~(0x1 << 16))
3774
3775 /* A VX_MASK for instructions using a BF field.  */
3776 #define VXBF_MASK (VX_MASK | (3 << 21))
3777
3778 /* A VX_MASK for instructions with an RC field.  */
3779 #define VXRC_MASK (VX_MASK & ~(0x1f << 6))
3780
3781 /* A VX_MASK for instructions with a SH field.  */
3782 #define VXSH_MASK (VX_MASK & ~(0x7 << 6))
3783
3784 /* A VA form instruction.  */
3785 #define VXA(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x03f))
3786
3787 /* The mask for an VA form instruction.  */
3788 #define VXA_MASK VXA(0x3f, 0x3f)
3789
3790 /* A VXA_MASK with a SHB field.  */
3791 #define VXASHB_MASK (VXA_MASK | (1 << 10))
3792
3793 /* A VXR form instruction.  */
3794 #define VXR(op, xop, rc)                        \
3795   (OP (op)                                      \
3796    | (((uint64_t)(rc) & 1) << 10)               \
3797    | (((uint64_t)(xop)) & 0x3ff))
3798
3799 /* The mask for a VXR form instruction.  */
3800 #define VXR_MASK VXR(0x3f, 0x3ff, 1)
3801
3802 /* A VX form instruction with a VA tertiary opcode.  */
3803 #define VXVA(op, xop, vaop) (VX(op,xop) | (((vaop) & 0x1f) << 16))
3804
3805 #define VXASH(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1f) << 1))
3806 #define VXASH_MASK VXASH (0x3f, 0x1f)
3807
3808 /* An X form instruction.  */
3809 #define X(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x3ff) << 1))
3810
3811 /* A X form instruction for Quad-Precision FP Instructions.  */
3812 #define XVA(op, xop, vaop) (X(op,xop) | (((vaop) & 0x1f) << 16))
3813
3814 /* An EX form instruction.  */
3815 #define EX(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x7ff))
3816
3817 /* The mask for an EX form instruction.  */
3818 #define EX_MASK EX (0x3f, 0x7ff)
3819
3820 /* An XX2 form instruction.  */
3821 #define XX2(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1ff) << 2))
3822
3823 /* A XX2 form instruction with the VA bits specified.  */
3824 #define XX2VA(op, xop, vaop) (XX2(op,xop) | (((vaop) & 0x1f) << 16))
3825
3826 /* An XX3 form instruction.  */
3827 #define XX3(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0xff) << 3))
3828
3829 /* An XX3 form instruction with the RC bit specified.  */
3830 #define XX3RC(op, xop, rc)                      \
3831   (OP (op)                                      \
3832    | (((uint64_t)(rc) & 1) << 10)               \
3833    | ((((uint64_t)(xop)) & 0x7f) << 3))
3834
3835 /* An XX4 form instruction.  */
3836 #define XX4(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x3) << 4))
3837
3838 /* A Z form instruction.  */
3839 #define Z(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1ff) << 1))
3840
3841 /* An X form instruction with the RC bit specified.  */
3842 #define XRC(op, xop, rc) (X ((op), (xop)) | ((rc) & 1))
3843
3844 /* A X form instruction for Quad-Precision FP Instructions with RC bit.  */
3845 #define XVARC(op, xop, vaop, rc) (XVA ((op), (xop), (vaop)) | ((rc) & 1))
3846
3847 /* An X form instruction with the RA bits specified as two ops.  */
3848 #define XMMF(op, xop, mop0, mop1)               \
3849   (X ((op), (xop))                              \
3850    | ((mop0) & 3) << 19                         \
3851    | ((mop1) & 7) << 16)
3852
3853 /* A Z form instruction with the RC bit specified.  */
3854 #define ZRC(op, xop, rc) (Z ((op), (xop)) | ((rc) & 1))
3855
3856 /* The mask for an X form instruction.  */
3857 #define X_MASK XRC (0x3f, 0x3ff, 1)
3858
3859 /* The mask for an X form instruction with the BF bits specified.  */
3860 #define XBF_MASK (X_MASK | (3 << 21))
3861
3862 /* An X form instruction without the RC field specified.  */
3863 #define XRC_MASK XRC (0x3f, 0x3ff, 0)
3864
3865 /* An X form wait instruction with everything filled in except the WC
3866    field.  */
3867 #define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK)
3868
3869 /* An X form wait instruction with everything filled in except the WC
3870    and PL fields.  */
3871 #define XWCPL_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | (3 << 18) | RB_MASK)
3872
3873 /* The mask for an XX1 form instruction.  */
3874 #define XX1_MASK X (0x3f, 0x3ff)
3875
3876 /* An XX1_MASK with the RB field fixed.  */
3877 #define XX1RB_MASK (XX1_MASK | RB_MASK)
3878
3879 /* The mask for an XX2 form instruction.  */
3880 #define XX2_MASK (XX2 (0x3f, 0x1ff) | (0x1f << 16))
3881
3882 /* The mask for an XX2 form instruction with the UIM bits specified.  */
3883 #define XX2UIM_MASK (XX2 (0x3f, 0x1ff) | (7 << 18))
3884
3885 /* The mask for an XX2 form instruction with the 4 UIM bits specified.  */
3886 #define XX2UIM4_MASK (XX2 (0x3f, 0x1ff) | (1 << 20))
3887
3888 /* The mask for an XX2 form instruction with the BF bits specified.  */
3889 #define XX2BF_MASK (XX2_MASK | (3 << 21) | (1))
3890
3891 /* The mask for an XX2 form instruction with the BF and DCMX bits
3892    specified.  */
3893 #define XX2BFD_MASK (XX2 (0x3f, 0x1ff) | 1)
3894
3895 /* The mask for an XX2 form instruction with a split DCMX bits
3896    specified.  */
3897 #define XX2DCMXS_MASK XX2 (0x3f, 0x1ee)
3898
3899 /* The mask for an XX3 form instruction.  */
3900 #define XX3_MASK XX3 (0x3f, 0xff)
3901
3902 /* The mask for an XX3 form instruction with the BF bits specified.  */
3903 #define XX3BF_MASK (XX3 (0x3f, 0xff) | (3 << 21) | (1))
3904
3905 /* The mask for an XX3 form instruction with the DM or SHW bits
3906    specified.  */
3907 #define XX3DM_MASK (XX3 (0x3f, 0x1f) | (1 << 10))
3908 #define XX3SHW_MASK XX3DM_MASK
3909
3910 /* The mask for an XX4 form instruction.  */
3911 #define XX4_MASK XX4 (0x3f, 0x3)
3912
3913 /* An X form wait instruction with everything filled in except the WC
3914    field.  */
3915 #define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK)
3916
3917 /* The mask for an XMMF form instruction.  */
3918 #define XMMF_MASK (XMMF (0x3f, 0x3ff, 3, 7) | (1))
3919
3920 /* The mask for a Z form instruction.  */
3921 #define Z_MASK ZRC (0x3f, 0x1ff, 1)
3922 #define Z2_MASK ZRC (0x3f, 0xff, 1)
3923
3924 /* An X_MASK with the RA/VA field fixed.  */
3925 #define XRA_MASK (X_MASK | RA_MASK)
3926 #define XVA_MASK XRA_MASK
3927
3928 /* An XRA_MASK with the A_L/W field clear.  */
3929 #define XWRA_MASK (XRA_MASK & ~((uint64_t) 1 << 16))
3930 #define XRLA_MASK XWRA_MASK
3931
3932 /* An X_MASK with the RB field fixed.  */
3933 #define XRB_MASK (X_MASK | RB_MASK)
3934
3935 /* An X_MASK with the RT field fixed.  */
3936 #define XRT_MASK (X_MASK | RT_MASK)
3937
3938 /* An XRT_MASK mask with the 2 L bits clear.  */
3939 #define XLRT_MASK (XRT_MASK & ~((uint64_t) 0x3 << 21))
3940
3941 /* An XRT_MASK mask with the 3 L bits clear.  */
3942 #define XL3RT_MASK (XRT_MASK & ~((uint64_t) 0x7 << 21))
3943
3944 /* An X_MASK with the RA and RB fields fixed.  */
3945 #define XRARB_MASK (X_MASK | RA_MASK | RB_MASK)
3946
3947 /* An XBF_MASK with the RA and RB fields fixed.  */
3948 #define XBFRARB_MASK (XBF_MASK | RA_MASK | RB_MASK)
3949
3950 /* An XRARB_MASK, but with the L bit clear.  */
3951 #define XRLARB_MASK (XRARB_MASK & ~((uint64_t) 1 << 16))
3952
3953 /* An XRARB_MASK, but with the L bits in a darn instruction clear.  */
3954 #define XLRAND_MASK (XRARB_MASK & ~((uint64_t) 3 << 16))
3955
3956 /* An X_MASK with the RT and RA fields fixed.  */
3957 #define XRTRA_MASK (X_MASK | RT_MASK | RA_MASK)
3958
3959 /* An X_MASK with the RT and RB fields fixed.  */
3960 #define XRTRB_MASK (X_MASK | RT_MASK | RB_MASK)
3961
3962 /* An XRTRA_MASK, but with L bit clear.  */
3963 #define XRTLRA_MASK (XRTRA_MASK & ~((uint64_t) 1 << 21))
3964
3965 /* An X_MASK with the RT, RA and RB fields fixed.  */
3966 #define XRTRARB_MASK (X_MASK | RT_MASK | RA_MASK | RB_MASK)
3967
3968 /* An XRTRARB_MASK, but with L bit clear.  */
3969 #define XRTLRARB_MASK (XRTRARB_MASK & ~((uint64_t) 1 << 21))
3970
3971 /* An XRTRARB_MASK, but with A bit clear.  */
3972 #define XRTARARB_MASK (XRTRARB_MASK & ~((uint64_t) 1 << 25))
3973
3974 /* An XRTRARB_MASK, but with BF bits clear.  */
3975 #define XRTBFRARB_MASK (XRTRARB_MASK & ~((uint64_t) 7 << 23))
3976
3977 /* An X form instruction with the L bit specified.  */
3978 #define XOPL(op, xop, l)                        \
3979   (X ((op), (xop))                              \
3980    | ((((uint64_t)(l)) & 1) << 21))
3981
3982 /* An X form instruction with the 2 L bits specified.  */
3983 #define XOPL2(op, xop, l)                       \
3984   (X ((op), (xop))                              \
3985    | ((((uint64_t)(l)) & 3) << 21))
3986
3987 /* An X form instruction with the 3 L bits specified.  */
3988 #define XOPL3(op, xop, l)                       \
3989   (X ((op), (xop))                              \
3990    | ((((uint64_t)(l)) & 7) << 21))
3991
3992 /* An X form instruction with the WC and PL bits specified.  */
3993 #define XWCPL(op, xop, wc, pl)                  \
3994   (XOPL3 ((op), (xop), (wc))                    \
3995    | ((((uint64_t)(pl)) & 3) << 16))
3996
3997 /* An X form instruction with the L bit and RC bit specified.  */
3998 #define XRCL(op, xop, l, rc)                    \
3999   (XRC ((op), (xop), (rc))                      \
4000    | ((((uint64_t)(l)) & 1) << 21))
4001
4002 /* An X form instruction with RT fields specified */
4003 #define XRT(op, xop, rt)                        \
4004   (X ((op), (xop))                              \
4005    | ((((uint64_t)(rt)) & 0x1f) << 21))
4006
4007 /* An X form instruction with RT and RA fields specified */
4008 #define XRTRA(op, xop, rt, ra)                  \
4009   (X ((op), (xop))                              \
4010    | ((((uint64_t)(rt)) & 0x1f) << 21)  \
4011    | ((((uint64_t)(ra)) & 0x1f) << 16))
4012
4013 /* The mask for an X form comparison instruction.  */
4014 #define XCMP_MASK (X_MASK | (((uint64_t)1) << 22))
4015
4016 /* The mask for an X form comparison instruction with the L field
4017    fixed.  */
4018 #define XCMPL_MASK (XCMP_MASK | (((uint64_t)1) << 21))
4019
4020 /* An X form trap instruction with the TO field specified.  */
4021 #define XTO(op, xop, to)                        \
4022   (X ((op), (xop))                              \
4023    | ((((uint64_t)(to)) & 0x1f) << 21))
4024 #define XTO_MASK (X_MASK | TO_MASK)
4025
4026 /* An X form tlb instruction with the SH field specified.  */
4027 #define XTLB(op, xop, sh)                       \
4028   (X ((op), (xop))                              \
4029    | ((((uint64_t)(sh)) & 0x1f) << 11))
4030 #define XTLB_MASK (X_MASK | SH_MASK)
4031
4032 /* An X form sync instruction.  */
4033 #define XSYNC(op, xop, l)                       \
4034   (X ((op), (xop))                              \
4035    | ((((uint64_t)(l)) & 3) << 21))
4036
4037 /* An X form sync instruction with everything filled in except the LS
4038    field.  */
4039 #define XSYNC_MASK (0xff9fffff)
4040
4041 /* An X form sync instruction with everything filled in except the L
4042    and E fields.  */
4043 #define XSYNCLE_MASK (0xff90ffff)
4044
4045 /* An X form sync instruction.  */
4046 #define XSYNCLS(op, xop, l, s)                  \
4047   (X ((op), (xop))                              \
4048    | ((((uint64_t)(l)) & 7) << 21)              \
4049    | ((((uint64_t)(s)) & 3) << 16))
4050
4051 /* An X form sync instruction with everything filled in except the
4052    L and SC fields.  */
4053 #define XSYNCLS_MASK (0xff1cffff)
4054
4055 /* An X_MASK, but with the EH bit clear.  */
4056 #define XEH_MASK (X_MASK & ~((uint64_t )1))
4057
4058 /* An X form AltiVec dss instruction.  */
4059 #define XDSS(op, xop, a) (X ((op), (xop)) | ((((uint64_t)(a)) & 1) << 25))
4060 #define XDSS_MASK XDSS(0x3f, 0x3ff, 1)
4061
4062 /* An XFL form instruction.  */
4063 #define XFL(op, xop, rc)                        \
4064   (OP (op)                                      \
4065    | ((((uint64_t)(xop)) & 0x3ff) << 1) \
4066    | (((uint64_t)(rc)) & 1))
4067 #define XFL_MASK XFL (0x3f, 0x3ff, 1)
4068
4069 /* An X form isel instruction.  */
4070 #define XISEL(op, xop)  (OP (op) | ((((uint64_t)(xop)) & 0x1f) << 1))
4071 #define XISEL_MASK      XISEL(0x3f, 0x1f)
4072
4073 /* An XL form instruction with the LK field set to 0.  */
4074 #define XL(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x3ff) << 1))
4075
4076 /* An XL form instruction which uses the LK field.  */
4077 #define XLLK(op, xop, lk) (XL ((op), (xop)) | ((lk) & 1))
4078
4079 /* The mask for an XL form instruction.  */
4080 #define XL_MASK XLLK (0x3f, 0x3ff, 1)
4081
4082 /* An XL_MASK with the RT, RA and RB fields fixed, but S bit clear.  */
4083 #define XLS_MASK ((XL_MASK | RT_MASK | RA_MASK | RB_MASK) & ~(1 << 11))
4084
4085 /* An XL form instruction which explicitly sets the BO field.  */
4086 #define XLO(op, bo, xop, lk) \
4087   (XLLK ((op), (xop), (lk)) | ((((uint64_t)(bo)) & 0x1f) << 21))
4088 #define XLO_MASK (XL_MASK | BO_MASK)
4089
4090 /* An XL form instruction which sets the BO field and the condition
4091    bits of the BI field.  */
4092 #define XLOCB(op, bo, cb, xop, lk) \
4093   (XLO ((op), (bo), (xop), (lk)) | ((((uint64_t)(cb)) & 3) << 16))
4094
4095 /* An XL_MASK with the BB field fixed.  */
4096 #define XLBB_MASK (XL_MASK | BB_MASK)
4097
4098 /* A mask for branch instructions using the BH field.  */
4099 #define XLBH_MASK (XL_MASK | (BB_MASK & ~(3 << 11)))
4100
4101 /* An XLBH_MASK with the BO field fixed.  */
4102 #define XLBOBB_MASK (XLBH_MASK | BO_MASK)
4103
4104 /* An XLBH_MASK with the BO and BI fields fixed.  */
4105 #define XLBOBIBB_MASK (XLBOBB_MASK | BI_MASK)
4106
4107 /* An XLBH_MASK with the BO and condition bits of the BI fields fixed.  */
4108 #define XLBOCBBB_MASK (XLBOBB_MASK | (3 << 16))
4109
4110 /* An X form mbar instruction with MO field.  */
4111 #define XMBAR(op, xop, mo)                      \
4112   (X ((op), (xop))                              \
4113    | ((((uint64_t)(mo)) & 1) << 21))
4114
4115 /* An XO form instruction.  */
4116 #define XO(op, xop, oe, rc)                     \
4117   (OP (op)                                      \
4118    | ((((uint64_t)(xop)) & 0x1ff) << 1) \
4119    | ((((uint64_t)(oe)) & 1) << 10)     \
4120    | (((unsigned long)(rc)) & 1))
4121 #define XO_MASK XO (0x3f, 0x1ff, 1, 1)
4122
4123 /* An XO_MASK with the RB field fixed.  */
4124 #define XORB_MASK (XO_MASK | RB_MASK)
4125
4126 /* An XOPS form instruction for paired singles.  */
4127 #define XOPS(op, xop, rc)                       \
4128   (OP (op)                                      \
4129    | ((((uint64_t)(xop)) & 0x3ff) << 1) \
4130    | (((uint64_t)(rc)) & 1))
4131 #define XOPS_MASK XOPS (0x3f, 0x3ff, 1)
4132
4133
4134 /* An XS form instruction.  */
4135 #define XS(op, xop, rc)                         \
4136   (OP (op)                                      \
4137    | ((((uint64_t)(xop)) & 0x1ff) << 2) \
4138    | (((uint64_t)(rc)) & 1))
4139 #define XS_MASK XS (0x3f, 0x1ff, 1)
4140
4141 /* A mask for the FXM version of an XFX form instruction.  */
4142 #define XFXFXM_MASK (X_MASK | (1 << 11) | (1 << 20))
4143
4144 /* An XFX form instruction with the FXM field filled in.  */
4145 #define XFXM(op, xop, fxm, p4)                  \
4146   (X ((op), (xop))                              \
4147    | ((((uint64_t)(fxm)) & 0xff) << 12) \
4148    | ((uint64_t)(p4) << 20))
4149
4150 /* An XFX form instruction with the SPR field filled in.  */
4151 #define XSPR(op, xop, spr)                      \
4152   (X ((op), (xop))                              \
4153    | ((((uint64_t)(spr)) & 0x1f) << 16) \
4154    | ((((uint64_t)(spr)) & 0x3e0) << 6))
4155 #define XSPR_MASK (X_MASK | SPR_MASK)
4156
4157 /* An XFX form instruction with the SPR field filled in except for the
4158    SPRBAT field.  */
4159 #define XSPRBAT_MASK (XSPR_MASK &~ SPRBAT_MASK)
4160
4161 /* An XFX form instruction with the SPR field filled in except for the
4162    SPRGQR field.  */
4163 #define XSPRGQR_MASK (XSPR_MASK &~ SPRGQR_MASK)
4164
4165 /* An XFX form instruction with the SPR field filled in except for the
4166    SPRG field.  */
4167 #define XSPRG_MASK (XSPR_MASK & ~(0x1f << 16))
4168
4169 /* An X form instruction with everything filled in except the E field.  */
4170 #define XE_MASK (0xffff7fff)
4171
4172 /* An X form user context instruction.  */
4173 #define XUC(op, xop)  (OP (op) | (((uint64_t)(xop)) & 0x1f))
4174 #define XUC_MASK      XUC(0x3f, 0x1f)
4175
4176 /* An XW form instruction.  */
4177 #define XW(op, xop, rc)                         \
4178   (OP (op)                                      \
4179    | ((((uint64_t)(xop)) & 0x3f) << 1)  \
4180    | ((rc) & 1))
4181 /* The mask for a G form instruction. rc not supported at present.  */
4182 #define XW_MASK XW (0x3f, 0x3f, 0)
4183
4184 /* An APU form instruction.  */
4185 #define APU(op, xop, rc)                        \
4186   (OP (op)                                      \
4187    | (((uint64_t)(xop)) & 0x3ff) << 1   \
4188    | ((rc) & 1))
4189
4190 /* The mask for an APU form instruction.  */
4191 #define APU_MASK APU (0x3f, 0x3ff, 1)
4192 #define APU_RT_MASK (APU_MASK | RT_MASK)
4193 #define APU_RA_MASK (APU_MASK | RA_MASK)
4194
4195 /* The BO encodings used in extended conditional branch mnemonics.  */
4196 #define BODNZF  (0x0)
4197 #define BODNZFP (0x1)
4198 #define BODZF   (0x2)
4199 #define BODZFP  (0x3)
4200 #define BODNZT  (0x8)
4201 #define BODNZTP (0x9)
4202 #define BODZT   (0xa)
4203 #define BODZTP  (0xb)
4204
4205 #define BOF     (0x4)
4206 #define BOFP    (0x5)
4207 #define BOFM4   (0x6)
4208 #define BOFP4   (0x7)
4209 #define BOT     (0xc)
4210 #define BOTP    (0xd)
4211 #define BOTM4   (0xe)
4212 #define BOTP4   (0xf)
4213
4214 #define BODNZ   (0x10)
4215 #define BODNZP  (0x11)
4216 #define BODZ    (0x12)
4217 #define BODZP   (0x13)
4218 #define BODNZM4 (0x18)
4219 #define BODNZP4 (0x19)
4220 #define BODZM4  (0x1a)
4221 #define BODZP4  (0x1b)
4222
4223 #define BOU     (0x14)
4224
4225 /* The BO16 encodings used in extended VLE conditional branch mnemonics.  */
4226 #define BO16F   (0x0)
4227 #define BO16T   (0x1)
4228
4229 /* The BO32 encodings used in extended VLE conditional branch mnemonics.  */
4230 #define BO32F   (0x0)
4231 #define BO32T   (0x1)
4232 #define BO32DNZ (0x2)
4233 #define BO32DZ  (0x3)
4234
4235 /* The BI condition bit encodings used in extended conditional branch
4236    mnemonics.  */
4237 #define CBLT    (0)
4238 #define CBGT    (1)
4239 #define CBEQ    (2)
4240 #define CBSO    (3)
4241
4242 /* The TO encodings used in extended trap mnemonics.  */
4243 #define TOLGT   (0x1)
4244 #define TOLLT   (0x2)
4245 #define TOEQ    (0x4)
4246 #define TOLGE   (0x5)
4247 #define TOLNL   (0x5)
4248 #define TOLLE   (0x6)
4249 #define TOLNG   (0x6)
4250 #define TOGT    (0x8)
4251 #define TOGE    (0xc)
4252 #define TONL    (0xc)
4253 #define TOLT    (0x10)
4254 #define TOLE    (0x14)
4255 #define TONG    (0x14)
4256 #define TONE    (0x18)
4257 #define TOU     (0x1f)
4258 \f
4259 /* Smaller names for the flags so each entry in the opcodes table will
4260    fit on a single line.  */
4261 #undef  PPC
4262 #define PPC     PPC_OPCODE_PPC
4263 #define PPCCOM  PPC_OPCODE_PPC | PPC_OPCODE_COMMON
4264 #define POWER4  PPC_OPCODE_POWER4
4265 #define POWER5  PPC_OPCODE_POWER5
4266 #define POWER6  PPC_OPCODE_POWER6
4267 #define POWER7  PPC_OPCODE_POWER7
4268 #define POWER8  PPC_OPCODE_POWER8
4269 #define POWER9  PPC_OPCODE_POWER9
4270 #define POWER10 PPC_OPCODE_POWER10
4271 #define CELL    PPC_OPCODE_CELL
4272 #define PPC64   PPC_OPCODE_64 | PPC_OPCODE_64_BRIDGE
4273 #define NON32   (PPC_OPCODE_64 | PPC_OPCODE_POWER4      \
4274                  | PPC_OPCODE_EFS | PPC_OPCODE_E500MC | PPC_OPCODE_TITAN)
4275 #define PPC403  PPC_OPCODE_403
4276 #define PPC405  PPC_OPCODE_405
4277 #define PPC440  PPC_OPCODE_440
4278 #define PPC464  PPC440
4279 #define PPC476  PPC_OPCODE_476
4280 #define PPC750  PPC_OPCODE_750
4281 #define GEKKO   PPC_OPCODE_750
4282 #define BROADWAY PPC_OPCODE_750
4283 #define PPC7450 PPC_OPCODE_7450
4284 #define PPC860  PPC_OPCODE_860
4285 #define PPCPS   PPC_OPCODE_PPCPS
4286 #define PPCVEC  PPC_OPCODE_ALTIVEC
4287 #define PPCVEC2 (PPC_OPCODE_POWER8 | PPC_OPCODE_E6500)
4288 #define PPCVEC3 PPC_OPCODE_POWER9
4289 #define PPCVSX  PPC_OPCODE_VSX
4290 #define PPCVSX2 PPC_OPCODE_POWER8
4291 #define PPCVSX3 PPC_OPCODE_POWER9
4292 #define PPCVSX4 PPC_OPCODE_POWER10
4293 #define POWER   PPC_OPCODE_POWER
4294 #define POWER2  PPC_OPCODE_POWER | PPC_OPCODE_POWER2
4295 #define PWR2COM PPC_OPCODE_POWER | PPC_OPCODE_POWER2 | PPC_OPCODE_COMMON
4296 #define PPCPWR2 (PPC_OPCODE_PPC | PPC_OPCODE_POWER | PPC_OPCODE_POWER2 \
4297                  | PPC_OPCODE_COMMON)
4298 #define COM     PPC_OPCODE_POWER | PPC_OPCODE_PPC | PPC_OPCODE_COMMON
4299 #define M601    PPC_OPCODE_POWER | PPC_OPCODE_601
4300 #define PWRCOM  PPC_OPCODE_POWER | PPC_OPCODE_601 | PPC_OPCODE_COMMON
4301 #define MFDEC1  PPC_OPCODE_POWER
4302 #define MFDEC2  (PPC_OPCODE_PPC | PPC_OPCODE_601 | PPC_OPCODE_BOOKE \
4303                  | PPC_OPCODE_TITAN)
4304 #define BOOKE   PPC_OPCODE_BOOKE
4305 #define NO371   PPC_OPCODE_BOOKE | PPC_OPCODE_PPCPS | PPC_OPCODE_EFS
4306 #define PPCE300 PPC_OPCODE_E300
4307 #define PPCSPE  PPC_OPCODE_SPE
4308 #define PPCSPE2 PPC_OPCODE_SPE2
4309 #define PPCISEL PPC_OPCODE_ISEL
4310 #define PPCEFS  PPC_OPCODE_EFS
4311 #define PPCEFS2 PPC_OPCODE_EFS2
4312 #define PPCBRLK PPC_OPCODE_BRLOCK
4313 #define PPCPMR  PPC_OPCODE_PMR
4314 #define PPCTMR  PPC_OPCODE_TMR
4315 #define PPCCHLK PPC_OPCODE_CACHELCK
4316 #define PPCRFMCI PPC_OPCODE_RFMCI
4317 #define E500MC  PPC_OPCODE_E500MC
4318 #define PPCA2   PPC_OPCODE_A2
4319 #define TITAN   PPC_OPCODE_TITAN
4320 #define MULHW   PPC_OPCODE_405 | PPC_OPCODE_440 | PPC_OPCODE_476 | TITAN
4321 #define E500    PPC_OPCODE_E500
4322 #define E6500   PPC_OPCODE_E6500
4323 #define PPCVLE  PPC_OPCODE_VLE
4324 #define PPCHTM  PPC_OPCODE_POWER8
4325 #define E200Z4  PPC_OPCODE_E200Z4
4326 #define PPCLSP  PPC_OPCODE_LSP
4327 \f
4328 /* The opcode table.
4329
4330    The format of the opcode table is:
4331
4332    NAME         OPCODE          MASK         FLAGS      ANTI            {OPERANDS}
4333
4334    NAME is the name of the instruction.
4335    OPCODE is the instruction opcode.
4336    MASK is the opcode mask; this is used to tell the disassembler
4337      which bits in the actual opcode must match OPCODE.
4338    FLAGS are flags indicating which processors support the instruction.
4339    ANTI indicates which processors don't support the instruction.
4340    OPERANDS is the list of operands.
4341
4342    The disassembler reads the table in order and prints the first
4343    instruction which matches, so this table is sorted to put more
4344    specific instructions before more general instructions.
4345
4346    This table must be sorted by major opcode.  Please try to keep it
4347    vaguely sorted within major opcode too, except of course where
4348    constrained otherwise by disassembler operation.  */
4349
4350 const struct powerpc_opcode powerpc_opcodes[] = {
4351 {"attn",        X(0,256),       X_MASK,   POWER4|PPCA2, PPC476|PPCVLE,  {0}},
4352 {"tdlgti",      OPTO(2,TOLGT),  OPTO_MASK,   PPC64,     PPCVLE,         {RA, SI}},
4353 {"tdllti",      OPTO(2,TOLLT),  OPTO_MASK,   PPC64,     PPCVLE,         {RA, SI}},
4354 {"tdeqi",       OPTO(2,TOEQ),   OPTO_MASK,   PPC64,     PPCVLE,         {RA, SI}},
4355 {"tdlgei",      OPTO(2,TOLGE),  OPTO_MASK,   PPC64,     PPCVLE,         {RA, SI}},
4356 {"tdlnli",      OPTO(2,TOLNL),  OPTO_MASK,   PPC64,     PPCVLE,         {RA, SI}},
4357 {"tdllei",      OPTO(2,TOLLE),  OPTO_MASK,   PPC64,     PPCVLE,         {RA, SI}},
4358 {"tdlngi",      OPTO(2,TOLNG),  OPTO_MASK,   PPC64,     PPCVLE,         {RA, SI}},
4359 {"tdgti",       OPTO(2,TOGT),   OPTO_MASK,   PPC64,     PPCVLE,         {RA, SI}},
4360 {"tdgei",       OPTO(2,TOGE),   OPTO_MASK,   PPC64,     PPCVLE,         {RA, SI}},
4361 {"tdnli",       OPTO(2,TONL),   OPTO_MASK,   PPC64,     PPCVLE,         {RA, SI}},
4362 {"tdlti",       OPTO(2,TOLT),   OPTO_MASK,   PPC64,     PPCVLE,         {RA, SI}},
4363 {"tdlei",       OPTO(2,TOLE),   OPTO_MASK,   PPC64,     PPCVLE,         {RA, SI}},
4364 {"tdngi",       OPTO(2,TONG),   OPTO_MASK,   PPC64,     PPCVLE,         {RA, SI}},
4365 {"tdnei",       OPTO(2,TONE),   OPTO_MASK,   PPC64,     PPCVLE,         {RA, SI}},
4366 {"tdui",        OPTO(2,TOU),    OPTO_MASK,   PPC64,     PPCVLE,         {RA, SI}},
4367 {"tdi",         OP(2),          OP_MASK,     PPC64,     PPCVLE,         {TO, RA, SI}},
4368
4369 {"twlgti",      OPTO(3,TOLGT),  OPTO_MASK,   PPCCOM,    PPCVLE,         {RA, SI}},
4370 {"tlgti",       OPTO(3,TOLGT),  OPTO_MASK,   PWRCOM,    PPCVLE,         {RA, SI}},
4371 {"twllti",      OPTO(3,TOLLT),  OPTO_MASK,   PPCCOM,    PPCVLE,         {RA, SI}},
4372 {"tllti",       OPTO(3,TOLLT),  OPTO_MASK,   PWRCOM,    PPCVLE,         {RA, SI}},
4373 {"tweqi",       OPTO(3,TOEQ),   OPTO_MASK,   PPCCOM,    PPCVLE,         {RA, SI}},
4374 {"teqi",        OPTO(3,TOEQ),   OPTO_MASK,   PWRCOM,    PPCVLE,         {RA, SI}},
4375 {"twlgei",      OPTO(3,TOLGE),  OPTO_MASK,   PPCCOM,    PPCVLE,         {RA, SI}},
4376 {"tlgei",       OPTO(3,TOLGE),  OPTO_MASK,   PWRCOM,    PPCVLE,         {RA, SI}},
4377 {"twlnli",      OPTO(3,TOLNL),  OPTO_MASK,   PPCCOM,    PPCVLE,         {RA, SI}},
4378 {"tlnli",       OPTO(3,TOLNL),  OPTO_MASK,   PWRCOM,    PPCVLE,         {RA, SI}},
4379 {"twllei",      OPTO(3,TOLLE),  OPTO_MASK,   PPCCOM,    PPCVLE,         {RA, SI}},
4380 {"tllei",       OPTO(3,TOLLE),  OPTO_MASK,   PWRCOM,    PPCVLE,         {RA, SI}},
4381 {"twlngi",      OPTO(3,TOLNG),  OPTO_MASK,   PPCCOM,    PPCVLE,         {RA, SI}},
4382 {"tlngi",       OPTO(3,TOLNG),  OPTO_MASK,   PWRCOM,    PPCVLE,         {RA, SI}},
4383 {"twgti",       OPTO(3,TOGT),   OPTO_MASK,   PPCCOM,    PPCVLE,         {RA, SI}},
4384 {"tgti",        OPTO(3,TOGT),   OPTO_MASK,   PWRCOM,    PPCVLE,         {RA, SI}},
4385 {"twgei",       OPTO(3,TOGE),   OPTO_MASK,   PPCCOM,    PPCVLE,         {RA, SI}},
4386 {"tgei",        OPTO(3,TOGE),   OPTO_MASK,   PWRCOM,    PPCVLE,         {RA, SI}},
4387 {"twnli",       OPTO(3,TONL),   OPTO_MASK,   PPCCOM,    PPCVLE,         {RA, SI}},
4388 {"tnli",        OPTO(3,TONL),   OPTO_MASK,   PWRCOM,    PPCVLE,         {RA, SI}},
4389 {"twlti",       OPTO(3,TOLT),   OPTO_MASK,   PPCCOM,    PPCVLE,         {RA, SI}},
4390 {"tlti",        OPTO(3,TOLT),   OPTO_MASK,   PWRCOM,    PPCVLE,         {RA, SI}},
4391 {"twlei",       OPTO(3,TOLE),   OPTO_MASK,   PPCCOM,    PPCVLE,         {RA, SI}},
4392 {"tlei",        OPTO(3,TOLE),   OPTO_MASK,   PWRCOM,    PPCVLE,         {RA, SI}},
4393 {"twngi",       OPTO(3,TONG),   OPTO_MASK,   PPCCOM,    PPCVLE,         {RA, SI}},
4394 {"tngi",        OPTO(3,TONG),   OPTO_MASK,   PWRCOM,    PPCVLE,         {RA, SI}},
4395 {"twnei",       OPTO(3,TONE),   OPTO_MASK,   PPCCOM,    PPCVLE,         {RA, SI}},
4396 {"tnei",        OPTO(3,TONE),   OPTO_MASK,   PWRCOM,    PPCVLE,         {RA, SI}},
4397 {"twui",        OPTO(3,TOU),    OPTO_MASK,   PPCCOM,    PPCVLE,         {RA, SI}},
4398 {"tui",         OPTO(3,TOU),    OPTO_MASK,   PWRCOM,    PPCVLE,         {RA, SI}},
4399 {"twi",         OP(3),          OP_MASK,     PPCCOM,    PPCVLE,         {TO, RA, SI}},
4400 {"ti",          OP(3),          OP_MASK,     PWRCOM,    PPCVLE,         {TO, RA, SI}},
4401
4402 {"ps_cmpu0",    X  (4,   0),    XBF_MASK,    PPCPS,     0,              {BF, FRA, FRB}},
4403 {"vaddubm",     VX (4,   0),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4404 {"vmul10cuq",   VX (4,   1),    VXVB_MASK,   PPCVEC3,   0,              {VD, VA}},
4405 {"vmaxub",      VX (4,   2),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4406 {"vrlb",        VX (4,   4),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4407 {"vrlq",        VX (4,   5),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4408 {"vcmpequb",    VXR(4,   6,0),  VXR_MASK,    PPCVEC,    0,              {VD, VA, VB}},
4409 {"vcmpneb",     VXR(4,   7,0),  VXR_MASK,    PPCVEC3,   0,              {VD, VA, VB}},
4410 {"vmuloub",     VX (4,   8),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4411 {"vaddfp",      VX (4,  10),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4412 {"vdivuq",      VX (4,  11),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4413 {"psq_lx",      XW (4,   6,0),  XW_MASK,     PPCPS,     0,              {FRT,RA,RB,PSWM,PSQM}},
4414 {"vmrghb",      VX (4,  12),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4415 {"vstribl",     VXVA(4,13,0),   VXVA_MASK,   POWER10,   0,              {VD, VB}},
4416 {"vstribr",     VXVA(4,13,1),   VXVA_MASK,   POWER10,   0,              {VD, VB}},
4417 {"vstrihl",     VXVA(4,13,2),   VXVA_MASK,   POWER10,   0,              {VD, VB}},
4418 {"vstrihr",     VXVA(4,13,3),   VXVA_MASK,   POWER10,   0,              {VD, VB}},
4419 {"psq_stx",     XW (4,   7,0),  XW_MASK,     PPCPS,     0,              {FRS,RA,RB,PSWM,PSQM}},
4420 {"vpkuhum",     VX (4,  14),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4421 {"vinsbvlx",    VX (4,  15),    VX_MASK,     POWER10,   0,              {VD, RA, VB}},
4422 {"mulhhwu",     XRC(4,   8,0),  X_MASK,      MULHW,     0,              {RT, RA, RB}},
4423 {"mulhhwu.",    XRC(4,   8,1),  X_MASK,      MULHW,     0,              {RT, RA, RB}},
4424 {"mtvsrbmi",    DX (4,10),      DX_MASK,     POWER10,   0,              {VD, DXD}},
4425 {"ps_sum0",     A  (4,  10,0),  A_MASK,      PPCPS,     0,              {FRT, FRA, FRC, FRB}},
4426 {"ps_sum0.",    A  (4,  10,1),  A_MASK,      PPCPS,     0,              {FRT, FRA, FRC, FRB}},
4427 {"vsldbi",      VX (4,  22),    VXSH_MASK,   POWER10,   0,              {VD, VA, VB, SH3}},
4428 {"ps_sum1",     A  (4,  11,0),  A_MASK,      PPCPS,     0,              {FRT, FRA, FRC, FRB}},
4429 {"ps_sum1.",    A  (4,  11,1),  A_MASK,      PPCPS,     0,              {FRT, FRA, FRC, FRB}},
4430 {"vextdubvlx",  VX (4,  24),    VXRC_MASK,   POWER10,   0,              {VD, VA, VB, RC}},
4431 {"ps_muls0",    A  (4,  12,0),  AFRB_MASK,   PPCPS,     0,              {FRT, FRA, FRC}},
4432 {"machhwu",     XO (4,  12,0,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4433 {"vextdubvrx",  VX (4,  25),    VXRC_MASK,   POWER10,   0,              {VD, VA, VB, RC}},
4434 {"ps_muls0.",   A  (4,  12,1),  AFRB_MASK,   PPCPS,     0,              {FRT, FRA, FRC}},
4435 {"machhwu.",    XO (4,  12,0,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4436 {"vextduhvlx",  VX (4,  26),    VXRC_MASK,   POWER10,   0,              {VD, VA, VB, RC}},
4437 {"ps_muls1",    A  (4,  13,0),  AFRB_MASK,   PPCPS,     0,              {FRT, FRA, FRC}},
4438 {"vextduhvrx",  VX (4,  27),    VXRC_MASK,   POWER10,   0,              {VD, VA, VB, RC}},
4439 {"ps_muls1.",   A  (4,  13,1),  AFRB_MASK,   PPCPS,     0,              {FRT, FRA, FRC}},
4440 {"vextduwvlx",  VX (4,  28),    VXRC_MASK,   POWER10,   0,              {VD, VA, VB, RC}},
4441 {"ps_madds0",   A  (4,  14,0),  A_MASK,      PPCPS,     0,              {FRT, FRA, FRC, FRB}},
4442 {"vextduwvrx",  VX (4,  29),    VXRC_MASK,   POWER10,   0,              {VD, VA, VB, RC}},
4443 {"ps_madds0.",  A  (4,  14,1),  A_MASK,      PPCPS,     0,              {FRT, FRA, FRC, FRB}},
4444 {"vextddvlx",   VX (4,  30),    VXRC_MASK,   POWER10,   0,              {VD, VA, VB, RC}},
4445 {"ps_madds1",   A  (4,  15,0),  A_MASK,      PPCPS,     0,              {FRT, FRA, FRC, FRB}},
4446 {"vextddvrx",   VX (4,  31),    VXRC_MASK,   POWER10,   0,              {VD, VA, VB, RC}},
4447 {"ps_madds1.",  A  (4,  15,1),  A_MASK,      PPCPS,     0,              {FRT, FRA, FRC, FRB}},
4448 {"vmhaddshs",   VXA(4,  32),    VXA_MASK,    PPCVEC,    0,              {VD, VA, VB, VC}},
4449 {"vmhraddshs",  VXA(4,  33),    VXA_MASK,    PPCVEC,    0,              {VD, VA, VB, VC}},
4450 {"vmladduhm",   VXA(4,  34),    VXA_MASK,    PPCVEC,    0,              {VD, VA, VB, VC}},
4451 {"vmsumudm",    VXA(4,  35),    VXA_MASK,    PPCVEC3,   0,              {VD, VA, VB, VC}},
4452 {"ps_div",      A  (4,  18,0),  AFRC_MASK,   PPCPS,     0,              {FRT, FRA, FRB}},
4453 {"vmsumcud",    VXA(4,  23),    VXA_MASK,    POWER10,   0,              {VD, VA, VB, VC}},
4454 {"vmsumubm",    VXA(4,  36),    VXA_MASK,    PPCVEC,    0,              {VD, VA, VB, VC}},
4455 {"ps_div.",     A  (4,  18,1),  AFRC_MASK,   PPCPS,     0,              {FRT, FRA, FRB}},
4456 {"vmsummbm",    VXA(4,  37),    VXA_MASK,    PPCVEC,    0,              {VD, VA, VB, VC}},
4457 {"vmsumuhm",    VXA(4,  38),    VXA_MASK,    PPCVEC,    0,              {VD, VA, VB, VC}},
4458 {"vmsumuhs",    VXA(4,  39),    VXA_MASK,    PPCVEC,    0,              {VD, VA, VB, VC}},
4459 {"ps_sub",      A  (4,  20,0),  AFRC_MASK,   PPCPS,     0,              {FRT, FRA, FRB}},
4460 {"vmsumshm",    VXA(4,  40),    VXA_MASK,    PPCVEC,    0,              {VD, VA, VB, VC}},
4461 {"ps_sub.",     A  (4,  20,1),  AFRC_MASK,   PPCPS,     0,              {FRT, FRA, FRB}},
4462 {"vmsumshs",    VXA(4,  41),    VXA_MASK,    PPCVEC,    0,              {VD, VA, VB, VC}},
4463 {"ps_add",      A  (4,  21,0),  AFRC_MASK,   PPCPS,     0,              {FRT, FRA, FRB}},
4464 {"vsel",        VXA(4,  42),    VXA_MASK,    PPCVEC,    0,              {VD, VA, VB, VC}},
4465 {"ps_add.",     A  (4,  21,1),  AFRC_MASK,   PPCPS,     0,              {FRT, FRA, FRB}},
4466 {"vperm",       VXA(4,  43),    VXA_MASK,    PPCVEC,    0,              {VD, VA, VB, VC}},
4467 {"vsldoi",      VXA(4,  44),    VXASHB_MASK, PPCVEC,    0,              {VD, VA, VB, SHB}},
4468 {"vpermxor",    VXA(4,  45),    VXA_MASK,    PPCVEC2,   0,              {VD, VA, VB, VC}},
4469 {"ps_sel",      A  (4,  23,0),  A_MASK,      PPCPS,     0,              {FRT, FRA, FRC, FRB}},
4470 {"vmaddfp",     VXA(4,  46),    VXA_MASK,    PPCVEC,    0,              {VD, VA, VC, VB}},
4471 {"ps_sel.",     A  (4,  23,1),  A_MASK,      PPCPS,     0,              {FRT, FRA, FRC, FRB}},
4472 {"vnmsubfp",    VXA(4,  47),    VXA_MASK,    PPCVEC,    0,              {VD, VA, VC, VB}},
4473 {"ps_res",      A  (4,  24,0), AFRAFRC_MASK, PPCPS,     0,              {FRT, FRB}},
4474 {"maddhd",      VXA(4,  48),    VXA_MASK,    POWER9,    0,              {RT, RA, RB, RC}},
4475 {"ps_res.",     A  (4,  24,1), AFRAFRC_MASK, PPCPS,     0,              {FRT, FRB}},
4476 {"maddhdu",     VXA(4,  49),    VXA_MASK,    POWER9,    0,              {RT, RA, RB, RC}},
4477 {"ps_mul",      A  (4,  25,0),  AFRB_MASK,   PPCPS,     0,              {FRT, FRA, FRC}},
4478 {"ps_mul.",     A  (4,  25,1),  AFRB_MASK,   PPCPS,     0,              {FRT, FRA, FRC}},
4479 {"maddld",      VXA(4,  51),    VXA_MASK,    POWER9,    0,              {RT, RA, RB, RC}},
4480 {"ps_rsqrte",   A  (4,  26,0), AFRAFRC_MASK, PPCPS,     0,              {FRT, FRB}},
4481 {"ps_rsqrte.",  A  (4,  26,1), AFRAFRC_MASK, PPCPS,     0,              {FRT, FRB}},
4482 {"ps_msub",     A  (4,  28,0),  A_MASK,      PPCPS,     0,              {FRT, FRA, FRC, FRB}},
4483 {"ps_msub.",    A  (4,  28,1),  A_MASK,      PPCPS,     0,              {FRT, FRA, FRC, FRB}},
4484 {"ps_madd",     A  (4,  29,0),  A_MASK,      PPCPS,     0,              {FRT, FRA, FRC, FRB}},
4485 {"ps_madd.",    A  (4,  29,1),  A_MASK,      PPCPS,     0,              {FRT, FRA, FRC, FRB}},
4486 {"vpermr",      VXA(4,  59),    VXA_MASK,    PPCVEC3,   0,              {VD, VA, VB, VC}},
4487 {"ps_nmsub",    A  (4,  30,0),  A_MASK,      PPCPS,     0,              {FRT, FRA, FRC, FRB}},
4488 {"vaddeuqm",    VXA(4,  60),    VXA_MASK,    PPCVEC2,   0,              {VD, VA, VB, VC}},
4489 {"ps_nmsub.",   A  (4,  30,1),  A_MASK,      PPCPS,     0,              {FRT, FRA, FRC, FRB}},
4490 {"vaddecuq",    VXA(4,  61),    VXA_MASK,    PPCVEC2,   0,              {VD, VA, VB, VC}},
4491 {"ps_nmadd",    A  (4,  31,0),  A_MASK,      PPCPS,     0,              {FRT, FRA, FRC, FRB}},
4492 {"vsubeuqm",    VXA(4,  62),    VXA_MASK,    PPCVEC2,   0,              {VD, VA, VB, VC}},
4493 {"ps_nmadd.",   A  (4,  31,1),  A_MASK,      PPCPS,     0,              {FRT, FRA, FRC, FRB}},
4494 {"vsubecuq",    VXA(4,  63),    VXA_MASK,    PPCVEC2,   0,              {VD, VA, VB, VC}},
4495 {"ps_cmpo0",    X  (4,  32),    XBF_MASK,    PPCPS,     0,              {BF, FRA, FRB}},
4496 {"vadduhm",     VX (4,  64),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4497 {"vmul10ecuq",  VX (4,  65),    VX_MASK,     PPCVEC3,   0,              {VD, VA, VB}},
4498 {"vmaxuh",      VX (4,  66),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4499 {"vrlh",        VX (4,  68),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4500 {"vrlqmi",      VX (4,  69),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4501 {"vcmpequh",    VXR(4,  70,0),  VXR_MASK,    PPCVEC,    0,              {VD, VA, VB}},
4502 {"vcmpneh",     VXR(4,  71,0),  VXR_MASK,    PPCVEC3,   0,              {VD, VA, VB}},
4503 {"vmulouh",     VX (4,  72),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4504 {"vsubfp",      VX (4,  74),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4505 {"psq_lux",     XW (4,  38,0),  XW_MASK,     PPCPS,     0,              {FRT,RA,RB,PSWM,PSQM}},
4506 {"vmrghh",      VX (4,  76),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4507 {"psq_stux",    XW (4,  39,0),  XW_MASK,     PPCPS,     0,              {FRS,RA,RB,PSWM,PSQM}},
4508 {"vpkuwum",     VX (4,  78),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4509 {"vinshvlx",    VX (4,  79),    VX_MASK,     POWER10,   0,              {VD, RA, VB}},
4510 {"ps_neg",      XRC(4,  40,0),  XRA_MASK,    PPCPS,     0,              {FRT, FRB}},
4511 {"mulhhw",      XRC(4,  40,0),  X_MASK,      MULHW,     0,              {RT, RA, RB}},
4512 {"ps_neg.",     XRC(4,  40,1),  XRA_MASK,    PPCPS,     0,              {FRT, FRB}},
4513 {"mulhhw.",     XRC(4,  40,1),  X_MASK,      MULHW,     0,              {RT, RA, RB}},
4514 {"machhw",      XO (4,  44,0,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4515 {"machhw.",     XO (4,  44,0,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4516 {"nmachhw",     XO (4,  46,0,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4517 {"nmachhw.",    XO (4,  46,0,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4518 {"ps_cmpu1",    X  (4,  64),    XBF_MASK,    PPCPS,     0,              {BF, FRA, FRB}},
4519 {"vadduwm",     VX (4,  128),   VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4520 {"vmaxuw",      VX (4,  130),   VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4521 {"vrlw",        VX (4,  132),   VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4522 {"vrlwmi",      VX (4,  133),   VX_MASK,     PPCVEC3,   0,              {VD, VA, VB}},
4523 {"vcmpequw",    VXR(4,  134,0), VXR_MASK,    PPCVEC,    0,              {VD, VA, VB}},
4524 {"vcmpnew",     VXR(4,  135,0), VXR_MASK,    PPCVEC3,   0,              {VD, VA, VB}},
4525 {"vmulouw",     VX (4,  136),   VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
4526 {"vmuluwm",     VX (4,  137),   VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
4527 {"vdivuw",      VX (4,  139),   VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4528 {"vmrghw",      VX (4,  140),   VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4529 {"vpkuhus",     VX (4,  142),   VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4530 {"vinswvlx",    VX (4,  143),   VX_MASK,     POWER10,   0,              {VD, RA, VB}},
4531 {"ps_mr",       XRC(4,  72,0),  XRA_MASK,    PPCPS,     0,              {FRT, FRB}},
4532 {"ps_mr.",      XRC(4,  72,1),  XRA_MASK,    PPCPS,     0,              {FRT, FRB}},
4533 {"machhwsu",    XO (4,  76,0,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4534 {"machhwsu.",   XO (4,  76,0,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4535 {"ps_cmpo1",    X  (4,  96),    XBF_MASK,    PPCPS,     0,              {BF, FRA, FRB}},
4536 {"vaddudm",     VX (4, 192),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
4537 {"vmaxud",      VX (4, 194),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
4538 {"vrld",        VX (4, 196),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
4539 {"vrldmi",      VX (4, 197),    VX_MASK,     PPCVEC3,   0,              {VD, VA, VB}},
4540 {"vcmpeqfp",    VXR(4, 198,0),  VXR_MASK,    PPCVEC,    0,              {VD, VA, VB}},
4541 {"vcmpequd",    VXR(4, 199,0),  VXR_MASK,    PPCVEC2,   0,              {VD, VA, VB}},
4542 {"vmuloud",     VX (4, 200),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4543 {"vdivud",      VX (4, 203),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4544 {"vpkuwus",     VX (4, 206),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4545 {"vinsw",       VX (4, 207),   VXUIMM4_MASK, POWER10,   0,              {VD, RB, UIMM4}},
4546 {"machhws",     XO (4, 108,0,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4547 {"machhws.",    XO (4, 108,0,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4548 {"nmachhws",    XO (4, 110,0,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4549 {"nmachhws.",   XO (4, 110,0,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4550 {"vadduqm",     VX (4, 256),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
4551 {"vcmpuq",      VX (4, 257),    VXBF_MASK,   POWER10,   0,              {BF, VA, VB}},
4552 {"vmaxsb",      VX (4, 258),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4553 {"vslb",        VX (4, 260),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4554 {"vslq",        VX (4, 261),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4555 {"vcmpnezb",    VXR(4, 263,0),  VXR_MASK,    PPCVEC3,   0,              {VD, VA, VB}},
4556 {"vmulosb",     VX (4, 264),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4557 {"vrefp",       VX (4, 266),    VXVA_MASK,   PPCVEC,    0,              {VD, VB}},
4558 {"vdivsq",      VX (4, 267),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4559 {"vmrglb",      VX (4, 268),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4560 {"vpkshus",     VX (4, 270),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4561 {"vinsbvrx",    VX (4, 271),    VX_MASK,     POWER10,   0,              {VD, RA, VB}},
4562 {"ps_nabs",     XRC(4, 136,0),  XRA_MASK,    PPCPS,     0,              {FRT, FRB}},
4563 {"mulchwu",     XRC(4, 136,0),  X_MASK,      MULHW,     0,              {RT, RA, RB}},
4564 {"ps_nabs.",    XRC(4, 136,1),  XRA_MASK,    PPCPS,     0,              {FRT, FRB}},
4565 {"mulchwu.",    XRC(4, 136,1),  X_MASK,      MULHW,     0,              {RT, RA, RB}},
4566 {"macchwu",     XO (4, 140,0,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4567 {"macchwu.",    XO (4, 140,0,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4568 {"vaddcuq",     VX (4, 320),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
4569 {"vcmpsq",      VX (4, 321),    VXBF_MASK,   POWER10,   0,              {BF, VA, VB}},
4570 {"vmaxsh",      VX (4, 322),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4571 {"vslh",        VX (4, 324),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4572 {"vrlqnm",      VX (4, 325),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4573 {"vcmpnezh",    VXR(4, 327,0),  VXR_MASK,    PPCVEC3,   0,              {VD, VA, VB}},
4574 {"vmulosh",     VX (4, 328),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4575 {"vrsqrtefp",   VX (4, 330),    VXVA_MASK,   PPCVEC,    0,              {VD, VB}},
4576 {"vmrglh",      VX (4, 332),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4577 {"vpkswus",     VX (4, 334),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4578 {"vinshvrx",    VX (4, 335),    VX_MASK,     POWER10,   0,              {VD, RA, VB}},
4579 {"mulchw",      XRC(4, 168,0),  X_MASK,      MULHW,     0,              {RT, RA, RB}},
4580 {"mulchw.",     XRC(4, 168,1),  X_MASK,      MULHW,     0,              {RT, RA, RB}},
4581 {"macchw",      XO (4, 172,0,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4582 {"macchw.",     XO (4, 172,0,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4583 {"nmacchw",     XO (4, 174,0,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4584 {"nmacchw.",    XO (4, 174,0,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4585 {"vaddcuw",     VX (4, 384),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4586 {"vmaxsw",      VX (4, 386),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4587 {"vslw",        VX (4, 388),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4588 {"vrlwnm",      VX (4, 389),    VX_MASK,     PPCVEC3,   0,              {VD, VA, VB}},
4589 {"vcmpnezw",    VXR(4, 391,0),  VXR_MASK,    PPCVEC3,   0,              {VD, VA, VB}},
4590 {"vmulosw",     VX (4, 392),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
4591 {"vexptefp",    VX (4, 394),    VXVA_MASK,   PPCVEC,    0,              {VD, VB}},
4592 {"vdivsw",      VX (4, 395),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4593 {"vmrglw",      VX (4, 396),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4594 {"vclrlb",      VX (4, 397),    VX_MASK,     POWER10,   0,              {VD, VA, RB}},
4595 {"vpkshss",     VX (4, 398),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4596 {"vinswvrx",    VX (4, 399),    VX_MASK,     POWER10,   0,              {VD, RA, VB}},
4597 {"macchwsu",    XO (4, 204,0,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4598 {"macchwsu.",   XO (4, 204,0,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4599 {"vmaxsd",      VX (4, 450),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
4600 {"vsl",         VX (4, 452),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4601 {"vrldnm",      VX (4, 453),    VX_MASK,     PPCVEC3,   0,              {VD, VA, VB}},
4602 {"vcmpgefp",    VXR(4, 454,0),  VXR_MASK,    PPCVEC,    0,              {VD, VA, VB}},
4603 {"vcmpequq",    VXR(4, 455,0),  VXR_MASK,    POWER10,   0,              {VD, VA, VB}},
4604 {"vmulosd",     VX (4, 456),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4605 {"vmulld",      VX (4, 457),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4606 {"vlogefp",     VX (4, 458),    VXVA_MASK,   PPCVEC,    0,              {VD, VB}},
4607 {"vdivsd",      VX (4, 459),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4608 {"vclrrb",      VX (4, 461),    VX_MASK,     POWER10,   0,              {VD, VA, RB}},
4609 {"vpkswss",     VX (4, 462),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4610 {"vinsd",       VX (4, 463),   VXUIMM4_MASK, POWER10,   0,              {VD, RB, UIMM4}},
4611 {"macchws",     XO (4, 236,0,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4612 {"macchws.",    XO (4, 236,0,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4613 {"nmacchws",    XO (4, 238,0,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4614 {"nmacchws.",   XO (4, 238,0,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4615 {"evaddw",      VX (4, 512),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4616 {"vaddubs",     VX (4, 512),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4617 {"vmul10uq",    VX (4, 513),    VXVB_MASK,   PPCVEC3,   0,              {VD, VA}},
4618 {"evaddiw",     VX (4, 514),    VX_MASK,     PPCSPE,    0,              {RS, RB, UIMM}},
4619 {"vminub",      VX (4, 514),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4620 {"evsubfw",     VX (4, 516),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4621 {"evsubw",      VX (4, 516),    VX_MASK,     PPCSPE,    0,              {RS, RB, RA}},
4622 {"vsrb",        VX (4, 516),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4623 {"vsrq",        VX (4, 517),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4624 {"evsubifw",    VX (4, 518),    VX_MASK,     PPCSPE,    0,              {RS, UIMM, RB}},
4625 {"evsubiw",     VX (4, 518),    VX_MASK,     PPCSPE,    0,              {RS, RB, UIMM}},
4626 {"vcmpgtub",    VXR(4, 518,0),  VXR_MASK,    PPCVEC,    0,              {VD, VA, VB}},
4627 {"evabs",       VX (4, 520),    VX_MASK,     PPCSPE,    0,              {RS, RA}},
4628 {"vmuleub",     VX (4, 520),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4629 {"evneg",       VX (4, 521),    VX_MASK,     PPCSPE,    0,              {RS, RA}},
4630 {"evextsb",     VX (4, 522),    VX_MASK,     PPCSPE,    0,              {RS, RA}},
4631 {"vrfin",       VX (4, 522),    VXVA_MASK,   PPCVEC,    0,              {VD, VB}},
4632 {"vdiveuq",     VX (4, 523),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4633 {"evextsh",     VX (4, 523),    VX_MASK,     PPCSPE,    0,              {RS, RA}},
4634 {"evrndw",      VX (4, 524),    VX_MASK,     PPCSPE,    0,              {RS, RA}},
4635 {"vspltb",      VX (4, 524),   VXUIMM4_MASK, PPCVEC,    0,              {VD, VB, UIMM4}},
4636 {"vextractub",  VX (4, 525),   VXUIMM4_MASK, PPCVEC3,   0,              {VD, VB, UIMM4}},
4637 {"evcntlzw",    VX (4, 525),    VX_MASK,     PPCSPE,    0,              {RS, RA}},
4638 {"evcntlsw",    VX (4, 526),    VX_MASK,     PPCSPE,    0,              {RS, RA}},
4639 {"vupkhsb",     VX (4, 526),    VXVA_MASK,   PPCVEC,    0,              {VD, VB}},
4640 {"vinsblx",     VX (4, 527),    VX_MASK,     POWER10,   0,              {VD, RA, RB}},
4641 {"brinc",       VX (4, 527),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4642 {"ps_abs",      XRC(4, 264,0),  XRA_MASK,    PPCPS,     0,              {FRT, FRB}},
4643 {"ps_abs.",     XRC(4, 264,1),  XRA_MASK,    PPCPS,     0,              {FRT, FRB}},
4644 {"evand",       VX (4, 529),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4645 {"evandc",      VX (4, 530),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4646 {"vsrdbi",      VX (4, 534),    VXSH_MASK,   POWER10,   0,              {VD, VA, VB, SH3}},
4647 {"evxor",       VX (4, 534),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4648 {"evmr",        VX (4, 535),    VX_MASK,     PPCSPE,    0,              {RS, RAB}},
4649 {"evor",        VX (4, 535),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4650 {"evnot",       VX (4, 536),    VX_MASK,     PPCSPE,    0,              {RS, RAB}},
4651 {"evnor",       VX (4, 536),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4652 {"get",         APU(4, 268,0),  APU_RA_MASK, PPC405,    0,              {RT, FSL}},
4653 {"eveqv",       VX (4, 537),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4654 {"evorc",       VX (4, 539),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4655 {"evnand",      VX (4, 542),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4656 {"evsrwu",      VX (4, 544),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4657 {"evsrws",      VX (4, 545),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4658 {"evsrwiu",     VX (4, 546),    VX_MASK,     PPCSPE,    0,              {RS, RA, EVUIMM}},
4659 {"evsrwis",     VX (4, 547),    VX_MASK,     PPCSPE,    0,              {RS, RA, EVUIMM}},
4660 {"evslw",       VX (4, 548),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4661 {"evslwi",      VX (4, 550),    VX_MASK,     PPCSPE,    0,              {RS, RA, EVUIMM}},
4662 {"evrlw",       VX (4, 552),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4663 {"evsplati",    VX (4, 553),    VX_MASK,     PPCSPE,    0,              {RS, SIMM}},
4664 {"evrlwi",      VX (4, 554),    VX_MASK,     PPCSPE,    0,              {RS, RA, EVUIMM}},
4665 {"evsplatfi",   VX (4, 555),    VX_MASK,     PPCSPE,    0,              {RS, SIMM}},
4666 {"evmergehi",   VX (4, 556),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4667 {"evmergelo",   VX (4, 557),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4668 {"evmergehilo", VX (4, 558),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4669 {"evmergelohi", VX (4, 559),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4670 {"evcmpgtu",    VX (4, 560),    VX_MASK,     PPCSPE,    0,              {CRFD, RA, RB}},
4671 {"evcmpgts",    VX (4, 561),    VX_MASK,     PPCSPE,    0,              {CRFD, RA, RB}},
4672 {"evcmpltu",    VX (4, 562),    VX_MASK,     PPCSPE,    0,              {CRFD, RA, RB}},
4673 {"evcmplts",    VX (4, 563),    VX_MASK,     PPCSPE,    0,              {CRFD, RA, RB}},
4674 {"evcmpeq",     VX (4, 564),    VX_MASK,     PPCSPE,    0,              {CRFD, RA, RB}},
4675 {"cget",        APU(4, 284,0),  APU_RA_MASK, PPC405,    0,              {RT, FSL}},
4676 {"vadduhs",     VX (4, 576),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4677 {"vmul10euq",   VX (4, 577),    VX_MASK,     PPCVEC3,   0,              {VD, VA, VB}},
4678 {"vminuh",      VX (4, 578),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4679 {"vsrh",        VX (4, 580),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4680 {"vcmpgtuh",    VXR(4, 582,0),  VXR_MASK,    PPCVEC,    0,              {VD, VA, VB}},
4681 {"vmuleuh",     VX (4, 584),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4682 {"vrfiz",       VX (4, 586),    VXVA_MASK,   PPCVEC,    0,              {VD, VB}},
4683 {"vsplth",      VX (4, 588),   VXUIMM3_MASK, PPCVEC,    0,              {VD, VB, UIMM3}},
4684 {"vextractuh",  VX (4, 589),   VXUIMM4_MASK, PPCVEC3,   0,              {VD, VB, UIMM4}},
4685 {"vupkhsh",     VX (4, 590),    VXVA_MASK,   PPCVEC,    0,              {VD, VB}},
4686 {"vinshlx",     VX (4, 591),    VX_MASK,     POWER10,   0,              {VD, RA, RB}},
4687 {"nget",        APU(4, 300,0),  APU_RA_MASK, PPC405,    0,              {RT, FSL}},
4688 {"evsel",       EVSEL(4,79),    EVSEL_MASK,  PPCSPE,    0,              {RS, RA, RB, CRFS}},
4689 {"ncget",       APU(4, 316,0),  APU_RA_MASK, PPC405,    0,              {RT, FSL}},
4690 {"evfsadd",     VX (4, 640),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4691 {"vadduws",     VX (4, 640),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4692 {"evfssub",     VX (4, 641),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4693 {"evfsmadd",    VX (4, 642),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4694 {"vminuw",      VX (4, 642),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4695 {"evfsmsub",    VX (4, 643),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4696 {"evfsabs",     VX (4, 644),    VX_MASK,     PPCSPE,    0,              {RS, RA}},
4697 {"vsrw",        VX (4, 644),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4698 {"evfsnabs",    VX (4, 645),    VX_MASK,     PPCSPE,    0,              {RS, RA}},
4699 {"evfsneg",     VX (4, 646),    VX_MASK,     PPCSPE,    0,              {RS, RA}},
4700 {"vcmpgtuw",    VXR(4, 646,0),  VXR_MASK,    PPCVEC,    0,              {VD, VA, VB}},
4701 {"vcmpgtuq",    VXR(4, 647,0),  VXR_MASK,    POWER10,   0,              {VD, VA, VB}},
4702 {"evfssqrt",    VX_RB_CONST(4, 647, 0),  VX_RB_CONST_MASK,      PPCEFS2,        0,              {RD, RA}},
4703 {"vmuleuw",     VX (4, 648),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
4704 {"evfsmul",     VX (4, 648),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4705 {"vmulhuw",     VX (4, 649),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4706 {"evfsdiv",     VX (4, 649),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4707 {"evfsnmadd",   VX (4, 650),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4708 {"vrfip",       VX (4, 650),    VXVA_MASK,   PPCVEC,    0,              {VD, VB}},
4709 {"vdiveuw",     VX (4, 651),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4710 {"evfsnmsub",   VX (4, 651),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4711 {"evfscmpgt",   VX (4, 652),    VX_MASK,     PPCSPE,    0,              {CRFD, RA, RB}},
4712 {"vspltw",      VX (4, 652),   VXUIMM2_MASK, PPCVEC,    0,              {VD, VB, UIMM2}},
4713 {"vextractuw",  VX (4, 653),   VXUIMM4_MASK, PPCVEC3,   0,              {VD, VB, UIMM4}},
4714 {"evfscmplt",   VX (4, 653),    VX_MASK,     PPCSPE,    0,              {CRFD, RA, RB}},
4715 {"evfscmpeq",   VX (4, 654),    VX_MASK,     PPCSPE,    0,              {CRFD, RA, RB}},
4716 {"vupklsb",     VX (4, 654),    VXVA_MASK,   PPCVEC,    0,              {VD, VB}},
4717 {"vinswlx",     VX (4, 655),    VX_MASK,     POWER10,   0,              {VD, RA, RB}},
4718 {"evfscfui",    VX (4, 656),    VX_MASK,     PPCSPE,    0,              {RS, RB}},
4719 {"evfscfh",     VX_RA_CONST(4, 657, 4),  VX_RA_CONST_MASK,      PPCEFS2,        0,              {RD, RB}},
4720 {"evfscfsi",    VX (4, 657),    VX_MASK,     PPCSPE,    0,              {RS, RB}},
4721 {"evfscfuf",    VX (4, 658),    VX_MASK,     PPCSPE,    0,              {RS, RB}},
4722 {"evfscfsf",    VX (4, 659),    VX_MASK,     PPCSPE,    0,              {RS, RB}},
4723 {"evfsctui",    VX (4, 660),    VX_MASK,     PPCSPE,    0,              {RS, RB}},
4724 {"evfscth",     VX_RA_CONST(4, 661, 4),  VX_RA_CONST_MASK,      PPCEFS2,        0,              {RD, RB}},
4725 {"evfsctsi",    VX (4, 661),    VX_MASK,     PPCSPE,    0,              {RS, RB}},
4726 {"evfsctuf",    VX (4, 662),    VX_MASK,     PPCSPE,    0,              {RS, RB}},
4727 {"evfsctsf",    VX (4, 663),    VX_MASK,     PPCSPE,    0,              {RS, RB}},
4728 {"evfsctuiz",   VX (4, 664),    VX_MASK,     PPCSPE,    0,              {RS, RB}},
4729 {"put",         APU(4, 332,0),  APU_RT_MASK, PPC405,    0,              {RA, FSL}},
4730 {"evfsctsiz",   VX (4, 666),    VX_MASK,     PPCSPE,    0,              {RS, RB}},
4731 {"evfststgt",   VX (4, 668),    VX_MASK,     PPCSPE,    0,              {CRFD, RA, RB}},
4732 {"evfststlt",   VX (4, 669),    VX_MASK,     PPCSPE,    0,              {CRFD, RA, RB}},
4733 {"evfststeq",   VX (4, 670),    VX_MASK,     PPCSPE,    0,              {CRFD, RA, RB}},
4734 {"evfsmax",     VX (4, 672),    VX_MASK,     PPCEFS2,   0,              {RD, RA, RB}},
4735 {"evfsmin",     VX (4, 673),    VX_MASK,     PPCEFS2,   0,              {RD, RA, RB}},
4736 {"evfsaddsub",  VX (4, 674),    VX_MASK,     PPCEFS2,   0,              {RD, RA, RB}},
4737 {"evfssubadd",  VX (4, 675),    VX_MASK,     PPCEFS2,   0,              {RD, RA, RB}},
4738 {"evfssum",     VX (4, 676),    VX_MASK,     PPCEFS2,   0,              {RD, RA, RB}},
4739 {"evfsdiff",    VX (4, 677),    VX_MASK,     PPCEFS2,   0,              {RD, RA, RB}},
4740 {"evfssumdiff", VX (4, 678),    VX_MASK,     PPCEFS2,   0,              {RD, RA, RB}},
4741 {"evfsdiffsum", VX (4, 679),    VX_MASK,     PPCEFS2,   0,              {RD, RA, RB}},
4742 {"evfsaddx",    VX (4, 680),    VX_MASK,     PPCEFS2,   0,              {RD, RA, RB}},
4743 {"evfssubx",    VX (4, 681),    VX_MASK,     PPCEFS2,   0,              {RD, RA, RB}},
4744 {"evfsaddsubx", VX (4, 682),    VX_MASK,     PPCEFS2,   0,              {RD, RA, RB}},
4745 {"evfssubaddx", VX (4, 683),    VX_MASK,     PPCEFS2,   0,              {RD, RA, RB}},
4746 {"evfsmulx",    VX (4, 684),    VX_MASK,     PPCEFS2,   0,              {RD, RA, RB}},
4747 {"evfsmule",    VX (4, 686),    VX_MASK,     PPCEFS2,   0,              {RD, RA, RB}},
4748 {"evfsmulo",    VX (4, 687),    VX_MASK,     PPCEFS2,   0,              {RD, RA, RB}},
4749 {"efsmax",      VX (4, 688),    VX_MASK,     PPCEFS2,   0,              {RD, RA, RB}},
4750 {"efsmin",      VX (4, 689),    VX_MASK,     PPCEFS2,   0,              {RD, RA, RB}},
4751 {"efdmax",      VX (4, 696),    VX_MASK,     PPCEFS2,   0,              {RD, RA, RB}},
4752 {"cput",        APU(4, 348,0),  APU_RT_MASK, PPC405,    0,              {RA, FSL}},
4753 {"efdmin",      VX (4, 697),    VX_MASK,     PPCEFS2,   0,              {RD, RA, RB}},
4754 {"efsadd",      VX (4, 704),    VX_MASK,     PPCEFS,    0,              {RS, RA, RB}},
4755 {"efssub",      VX (4, 705),    VX_MASK,     PPCEFS,    0,              {RS, RA, RB}},
4756 {"efsmadd",     VX (4, 706),    VX_MASK,     PPCEFS2,   0,              {RS, RA, RB}},
4757 {"vminud",      VX (4, 706),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
4758 {"efsmsub",     VX (4, 707),    VX_MASK,     PPCEFS2,   0,              {RS, RA, RB}},
4759 {"efsabs",      VX (4, 708),    VX_MASK,     PPCEFS,    0,              {RS, RA}},
4760 {"vsr",         VX (4, 708),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4761 {"efsnabs",     VX (4, 709),    VX_MASK,     PPCEFS,    0,              {RS, RA}},
4762 {"efsneg",      VX (4, 710),    VX_MASK,     PPCEFS,    0,              {RS, RA}},
4763 {"vcmpgtfp",    VXR(4, 710,0),  VXR_MASK,    PPCVEC,    0,              {VD, VA, VB}},
4764 {"efssqrt",     VX_RB_CONST(4, 711, 0), VX_RB_CONST_MASK,PPCEFS2, 0,    {RD, RA}},
4765 {"vcmpgtud",    VXR(4, 711,0),  VXR_MASK,    PPCVEC2,   0,              {VD, VA, VB}},
4766 {"vmuleud",     VX (4, 712),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4767 {"efsmul",      VX (4, 712),    VX_MASK,     PPCEFS,    0,              {RS, RA, RB}},
4768 {"vmulhud",     VX (4, 713),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4769 {"efsdiv",      VX (4, 713),    VX_MASK,     PPCEFS,    0,              {RS, RA, RB}},
4770 {"efsnmadd",    VX (4, 714),    VX_MASK,     PPCEFS2,   0,              {RS, RA, RB}},
4771 {"vrfim",       VX (4, 714),    VXVA_MASK,   PPCVEC,    0,              {VD, VB}},
4772 {"vdiveud",     VX (4, 715),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4773 {"efsnmsub",    VX (4, 715),    VX_MASK,     PPCEFS2,   0,              {RS, RA, RB}},
4774 {"efscmpgt",    VX (4, 716),    VX_MASK,     PPCEFS,    0,              {CRFD, RA, RB}},
4775 {"vextractd",   VX (4, 717),   VXUIMM4_MASK, PPCVEC3,   0,              {VD, VB, UIMM4}},
4776 {"efscmplt",    VX (4, 717),    VX_MASK,     PPCEFS,    0,              {CRFD, RA, RB}},
4777 {"efscmpeq",    VX (4, 718),    VX_MASK,     PPCEFS,    0,              {CRFD, RA, RB}},
4778 {"vupklsh",     VX (4, 718),    VXVA_MASK,   PPCVEC,    0,              {VD, VB}},
4779 {"vinsdlx",     VX (4, 719),    VX_MASK,     POWER10,   0,              {VD, RA, RB}},
4780 {"efscfd",      VX (4, 719),    VX_MASK,     PPCEFS,    0,              {RS, RB}},
4781 {"efscfui",     VX (4, 720),    VX_MASK,     PPCEFS,    0,              {RS, RB}},
4782 {"efscfh",      VX_RA_CONST(4, 721, 4), VX_RA_CONST_MASK, PPCEFS2, 0,   {RD, RB}},
4783 {"efscfsi",     VX (4, 721),    VX_MASK,     PPCEFS,    0,              {RS, RB}},
4784 {"efscfuf",     VX (4, 722),    VX_MASK,     PPCEFS,    0,              {RS, RB}},
4785 {"efscfsf",     VX (4, 723),    VX_MASK,     PPCEFS,    0,              {RS, RB}},
4786 {"efsctui",     VX (4, 724),    VX_MASK,     PPCEFS,    0,              {RS, RB}},
4787 {"efscth",      VX_RA_CONST(4, 725, 4), VX_RA_CONST_MASK, PPCEFS2, 0,   {RD, RB}},
4788 {"efsctsi",     VX (4, 725),    VX_MASK,     PPCEFS,    0,              {RS, RB}},
4789 {"efsctuf",     VX (4, 726),    VX_MASK,     PPCEFS,    0,              {RS, RB}},
4790 {"efsctsf",     VX (4, 727),    VX_MASK,     PPCEFS,    0,              {RS, RB}},
4791 {"efsctuiz",    VX (4, 728),    VX_MASK,     PPCEFS,    0,              {RS, RB}},
4792 {"nput",        APU(4, 364,0),  APU_RT_MASK, PPC405,    0,              {RA, FSL}},
4793 {"efsctsiz",    VX (4, 730),    VX_MASK,     PPCEFS,    0,              {RS, RB}},
4794 {"efststgt",    VX (4, 732),    VX_MASK,     PPCEFS,    0,              {CRFD, RA, RB}},
4795 {"efststlt",    VX (4, 733),    VX_MASK,     PPCEFS,    0,              {CRFD, RA, RB}},
4796 {"efststeq",    VX (4, 734),    VX_MASK,     PPCEFS,    0,              {CRFD, RA, RB}},
4797 {"efdadd",      VX (4, 736),    VX_MASK,     PPCEFS,    0,              {RS, RA, RB}},
4798 {"efdsub",      VX (4, 737),    VX_MASK,     PPCEFS,    0,              {RS, RA, RB}},
4799 {"efdmadd",     VX (4, 738),    VX_MASK,     PPCEFS2,   E500|E500MC,    {RD, RA, RB}},
4800 {"efdcfuid",    VX (4, 738),    VX_MASK,     E500|E500MC,0,             {RS, RB}},
4801 {"efdmsub",     VX (4, 739),    VX_MASK,     PPCEFS2,   E500|E500MC,    {RD, RA, RB}},
4802 {"efdcfsid",    VX (4, 739),    VX_MASK,     E500|E500MC,0,             {RS, RB}},
4803 {"efdabs",      VX (4, 740),    VX_MASK,     PPCEFS,    0,              {RS, RA}},
4804 {"efdnabs",     VX (4, 741),    VX_MASK,     PPCEFS,    0,              {RS, RA}},
4805 {"efdneg",      VX (4, 742),    VX_MASK,     PPCEFS,    0,              {RS, RA}},
4806 {"efdsqrt",     VX_RB_CONST(4, 743, 0), VX_RB_CONST_MASK, PPCEFS2, 0,   {RD, RA}},
4807 {"efdmul",      VX (4, 744),    VX_MASK,     PPCEFS,    0,              {RS, RA, RB}},
4808 {"efddiv",      VX (4, 745),    VX_MASK,     PPCEFS,    0,              {RS, RA, RB}},
4809 {"efdnmadd",    VX (4, 746),    VX_MASK,     PPCEFS2,   E500|E500MC,    {RD, RA, RB}},
4810 {"efdctuidz",   VX (4, 746),    VX_MASK,     E500|E500MC,0,             {RS, RB}},
4811 {"efdnmsub",    VX (4, 747),    VX_MASK,     PPCEFS2,   E500|E500MC,    {RD, RA, RB}},
4812 {"efdctsidz",   VX (4, 747),    VX_MASK,     E500|E500MC,0,             {RS, RB}},
4813 {"efdcmpgt",    VX (4, 748),    VX_MASK,     PPCEFS,    0,              {CRFD, RA, RB}},
4814 {"efdcmplt",    VX (4, 749),    VX_MASK,     PPCEFS,    0,              {CRFD, RA, RB}},
4815 {"efdcmpeq",    VX (4, 750),    VX_MASK,     PPCEFS,    0,              {CRFD, RA, RB}},
4816 {"efdcfs",      VX (4, 751),    VX_MASK,     PPCEFS,    0,              {RS, RB}},
4817 {"efdcfui",     VX_RA_CONST(4, 752, 0), VX_RA_CONST_MASK, PPCEFS, 0,    {RS, RB}},
4818 {"efdcfuid",    VX_RA_CONST(4, 752, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC,  {RS, RB}},
4819 {"efdcfsi",     VX_RA_CONST(4, 753, 0), VX_RA_CONST_MASK, PPCEFS, 0,    {RS, RB}},
4820 {"efdcfsid",    VX_RA_CONST(4, 753, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC,  {RS, RB}},
4821 {"efdcfh",      VX_RA_CONST(4, 753, 4), VX_RA_CONST_MASK, PPCEFS2, 0,   {RD, RB}},
4822 {"efdcfuf",     VX (4, 754),    VX_MASK,     PPCEFS,    0,              {RS, RB}},
4823 {"efdcfsf",     VX (4, 755),    VX_MASK,     PPCEFS,    0,              {RS, RB}},
4824 {"efdctui",     VX (4, 756),    VX_MASK,     PPCEFS,    0,              {RS, RB}},
4825 {"efdcth",      VX_RA_CONST(4, 757, 4), VX_RA_CONST_MASK, PPCEFS2, 0,   {RD, RB}},
4826 {"efdctsi",     VX (4, 757),    VX_MASK,     PPCEFS,    0,              {RS, RB}},
4827 {"efdctuf",     VX (4, 758),    VX_MASK,     PPCEFS,    0,              {RS, RB}},
4828 {"efdctsf",     VX (4, 759),    VX_MASK,     PPCEFS,    0,              {RS, RB}},
4829 {"efdctuiz",    VX_RA_CONST(4, 760, 0), VX_RA_CONST_MASK, PPCEFS, 0,    {RS, RB}},
4830 {"efdctuidz",   VX_RA_CONST(4, 760, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC,  {RS, RB}},
4831 {"ncput",       APU(4, 380,0),  APU_RT_MASK, PPC405,    0,              {RA, FSL}},
4832 {"efdctsiz",    VX_RA_CONST(4, 762, 0), VX_RA_CONST_MASK, PPCEFS, 0,    {RS, RB}},
4833 {"efdctsidz",   VX_RA_CONST(4, 762, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC,  {RS, RB}},
4834 {"efdtstgt",    VX (4, 764),    VX_MASK,     PPCEFS,    0,              {CRFD, RA, RB}},
4835 {"efdtstlt",    VX (4, 765),    VX_MASK,     PPCEFS,    0,              {CRFD, RA, RB}},
4836 {"efdtsteq",    VX (4, 766),    VX_MASK,     PPCEFS,    0,              {CRFD, RA, RB}},
4837 {"evlddx",      VX (4, 768),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4838 {"vaddsbs",     VX (4, 768),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4839 {"evldd",       VX (4, 769),    VX_MASK,     PPCSPE,    0,              {RS, EVUIMM_8, RA}},
4840 {"evldwx",      VX (4, 770),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4841 {"vminsb",      VX (4, 770),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4842 {"evldw",       VX (4, 771),    VX_MASK,     PPCSPE,    0,              {RS, EVUIMM_8, RA}},
4843 {"evldhx",      VX (4, 772),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4844 {"vsrab",       VX (4, 772),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4845 {"vsraq",       VX (4, 773),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4846 {"evldh",       VX (4, 773),    VX_MASK,     PPCSPE,    0,              {RS, EVUIMM_8, RA}},
4847 {"vcmpgtsb",    VXR(4, 774,0),  VXR_MASK,    PPCVEC,    0,              {VD, VA, VB}},
4848 {"evlhhesplatx",VX (4, 776),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4849 {"vmulesb",     VX (4, 776),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4850 {"evlhhesplat", VX (4, 777),    VX_MASK,     PPCSPE,    0,              {RS, EVUIMM_2, RA}},
4851 {"vcfux",       VX (4, 778),    VX_MASK,     PPCVEC,    0,              {VD, VB, UIMM}},
4852 {"vcuxwfp",     VX (4, 778),    VX_MASK,     PPCVEC,    0,              {VD, VB, UIMM}},
4853 {"vdivesq",     VX (4, 779),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4854 {"evlhhousplatx",VX(4, 780),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4855 {"vspltisb",    VX (4, 780),    VXVB_MASK,   PPCVEC,    0,              {VD, SIMM}},
4856 {"vinsertb",    VX (4, 781),   VXUIMM4_MASK, PPCVEC3,   0,              {VD, VB, UIMM4}},
4857 {"evlhhousplat",VX (4, 781),    VX_MASK,     PPCSPE,    0,              {RS, EVUIMM_2, RA}},
4858 {"evlhhossplatx",VX(4, 782),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4859 {"vpkpx",       VX (4, 782),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4860 {"vinsbrx",     VX (4, 783),    VX_MASK,     POWER10,   0,              {VD, RA, RB}},
4861 {"evlhhossplat",VX (4, 783),    VX_MASK,     PPCSPE,    0,              {RS, EVUIMM_2, RA}},
4862 {"mullhwu",     XRC(4, 392,0),  X_MASK,      MULHW,     0,              {RT, RA, RB}},
4863 {"evlwhex",     VX (4, 784),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4864 {"mullhwu.",    XRC(4, 392,1),  X_MASK,      MULHW,     0,              {RT, RA, RB}},
4865 {"evlwhe",      VX (4, 785),    VX_MASK,     PPCSPE,    0,              {RS, EVUIMM_4, RA}},
4866 {"evlwhoux",    VX (4, 788),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4867 {"evlwhou",     VX (4, 789),    VX_MASK,     PPCSPE,    0,              {RS, EVUIMM_4, RA}},
4868 {"evlwhosx",    VX (4, 790),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4869 {"evlwhos",     VX (4, 791),    VX_MASK,     PPCSPE,    0,              {RS, EVUIMM_4, RA}},
4870 {"maclhwu",     XO (4, 396,0,0),XO_MASK,     MULHW,     0,              {RT, RA, RB}},
4871 {"evlwwsplatx", VX (4, 792),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4872 {"maclhwu.",    XO (4, 396,0,1),XO_MASK,     MULHW,     0,              {RT, RA, RB}},
4873 {"evlwwsplat",  VX (4, 793),    VX_MASK,     PPCSPE,    0,              {RS, EVUIMM_4, RA}},
4874 {"evlwhsplatx", VX (4, 796),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4875 {"evlwhsplat",  VX (4, 797),    VX_MASK,     PPCSPE,    0,              {RS, EVUIMM_4, RA}},
4876 {"evstddx",     VX (4, 800),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4877 {"evstdd",      VX (4, 801),    VX_MASK,     PPCSPE,    0,              {RS, EVUIMM_8, RA}},
4878 {"evstdwx",     VX (4, 802),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4879 {"evstdw",      VX (4, 803),    VX_MASK,     PPCSPE,    0,              {RS, EVUIMM_8, RA}},
4880 {"evstdhx",     VX (4, 804),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4881 {"evstdh",      VX (4, 805),    VX_MASK,     PPCSPE,    0,              {RS, EVUIMM_8, RA}},
4882 {"evstwhex",    VX (4, 816),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4883 {"evstwhe",     VX (4, 817),    VX_MASK,     PPCSPE,    0,              {RS, EVUIMM_4, RA}},
4884 {"evstwhox",    VX (4, 820),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4885 {"evstwho",     VX (4, 821),    VX_MASK,     PPCSPE,    0,              {RS, EVUIMM_4, RA}},
4886 {"evstwwex",    VX (4, 824),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4887 {"evstwwe",     VX (4, 825),    VX_MASK,     PPCSPE,    0,              {RS, EVUIMM_4, RA}},
4888 {"evstwwox",    VX (4, 828),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4889 {"evstwwo",     VX (4, 829),    VX_MASK,     PPCSPE,    0,              {RS, EVUIMM_4, RA}},
4890 {"vaddshs",     VX (4, 832),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4891 {"bcdcpsgn.",   VX (4, 833),    VX_MASK,     PPCVEC3,   0,              {VD, VA, VB}},
4892 {"vminsh",      VX (4, 834),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4893 {"vsrah",       VX (4, 836),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4894 {"vcmpgtsh",    VXR(4, 838,0),  VXR_MASK,    PPCVEC,    0,              {VD, VA, VB}},
4895 {"vmulesh",     VX (4, 840),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4896 {"vcfsx",       VX (4, 842),    VX_MASK,     PPCVEC,    0,              {VD, VB, UIMM}},
4897 {"vcsxwfp",     VX (4, 842),    VX_MASK,     PPCVEC,    0,              {VD, VB, UIMM}},
4898 {"vspltish",    VX (4, 844),    VXVB_MASK,   PPCVEC,    0,              {VD, SIMM}},
4899 {"vinserth",    VX (4, 845),   VXUIMM4_MASK, PPCVEC3,   0,              {VD, VB, UIMM4}},
4900 {"vupkhpx",     VX (4, 846),    VXVA_MASK,   PPCVEC,    0,              {VD, VB}},
4901 {"vinshrx",     VX (4, 847),    VX_MASK,     POWER10,   0,              {VD, RA, RB}},
4902 {"mullhw",      XRC(4, 424,0),  X_MASK,      MULHW,     0,              {RT, RA, RB}},
4903 {"mullhw.",     XRC(4, 424,1),  X_MASK,      MULHW,     0,              {RT, RA, RB}},
4904 {"maclhw",      XO (4, 428,0,0),XO_MASK,     MULHW,     0,              {RT, RA, RB}},
4905 {"maclhw.",     XO (4, 428,0,1),XO_MASK,     MULHW,     0,              {RT, RA, RB}},
4906 {"nmaclhw",     XO (4, 430,0,0),XO_MASK,     MULHW,     0,              {RT, RA, RB}},
4907 {"nmaclhw.",    XO (4, 430,0,1),XO_MASK,     MULHW,     0,              {RT, RA, RB}},
4908 {"vaddsws",     VX (4, 896),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4909 {"vminsw",      VX (4, 898),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4910 {"vsraw",       VX (4, 900),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4911 {"vcmpgtsw",    VXR(4, 902,0),  VXR_MASK,    PPCVEC,    0,              {VD, VA, VB}},
4912 {"vcmpgtsq",    VXR(4, 903,0),  VXR_MASK,    POWER10,   0,              {VD, VA, VB}},
4913 {"vmulesw",     VX (4, 904),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
4914 {"vmulhsw",     VX (4, 905),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4915 {"vctuxs",      VX (4, 906),    VX_MASK,     PPCVEC,    0,              {VD, VB, UIMM}},
4916 {"vcfpuxws",    VX (4, 906),    VX_MASK,     PPCVEC,    0,              {VD, VB, UIMM}},
4917 {"vdivesw",     VX (4, 907),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4918 {"vspltisw",    VX (4, 908),    VXVB_MASK,   PPCVEC,    0,              {VD, SIMM}},
4919 {"vinsertw",    VX (4, 909),   VXUIMM4_MASK, PPCVEC3,   0,              {VD, VB, UIMM4}},
4920 {"vinswrx",     VX (4, 911),    VX_MASK,     POWER10,   0,              {VD, RA, RB}},
4921 {"maclhwsu",    XO (4, 460,0,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4922 {"maclhwsu.",   XO (4, 460,0,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4923 {"vminsd",      VX (4, 962),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
4924 {"vsrad",       VX (4, 964),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
4925 {"vcmpbfp",     VXR(4, 966,0),  VXR_MASK,    PPCVEC,    0,              {VD, VA, VB}},
4926 {"vcmpgtsd",    VXR(4, 967,0),  VXR_MASK,    PPCVEC2,   0,              {VD, VA, VB}},
4927 {"vmulesd",     VX (4, 968),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4928 {"vmulhsd",     VX (4, 969),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4929 {"vctsxs",      VX (4, 970),    VX_MASK,     PPCVEC,    0,              {VD, VB, UIMM}},
4930 {"vcfpsxws",    VX (4, 970),    VX_MASK,     PPCVEC,    0,              {VD, VB, UIMM}},
4931 {"vdivesd",     VX (4, 971),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
4932 {"vinsertd",    VX (4, 973),   VXUIMM4_MASK, PPCVEC3,   0,              {VD, VB, UIMM4}},
4933 {"vupklpx",     VX (4, 974),    VXVA_MASK,   PPCVEC,    0,              {VD, VB}},
4934 {"vinsdrx",     VX (4, 975),    VX_MASK,     POWER10,   0,              {VD, RA, RB}},
4935 {"maclhws",     XO (4, 492,0,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4936 {"maclhws.",    XO (4, 492,0,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4937 {"nmaclhws",    XO (4, 494,0,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4938 {"nmaclhws.",   XO (4, 494,0,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4939 {"vsububm",     VX (4,1024),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4940 {"bcdadd.",     VX (4,1025),    VXPS_MASK,   PPCVEC2,   0,              {VD, VA, VB, PS}},
4941 {"vavgub",      VX (4,1026),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4942 {"vabsdub",     VX (4,1027),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
4943 {"evmhessf",    VX (4,1027),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4944 {"vand",        VX (4,1028),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4945 {"vcmpequb.",   VXR(4,   6,1),  VXR_MASK,    PPCVEC,    0,              {VD, VA, VB}},
4946 {"vcmpneb.",    VXR(4,   7,1),  VXR_MASK,    PPCVEC3,   0,              {VD, VA, VB}},
4947 {"udi0fcm.",    APU(4, 515,0),  APU_MASK, PPC405|PPC440, 0,             {URT, URA, URB}},
4948 {"udi0fcm",     APU(4, 515,1),  APU_MASK, PPC405|PPC440, 0,             {URT, URA, URB}},
4949 {"evmhossf",    VX (4,1031),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4950 {"vpmsumb",     VX (4,1032),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
4951 {"evmheumi",    VX (4,1032),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4952 {"evmhesmi",    VX (4,1033),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4953 {"vmaxfp",      VX (4,1034),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4954 {"evmhesmf",    VX (4,1035),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4955 {"evmhoumi",    VX (4,1036),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4956 {"vslo",        VX (4,1036),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4957 {"vstribl.",    VXVA(4,1037,0), VXVA_MASK,   POWER10,   0,              {VD, VB}},
4958 {"vstribr.",    VXVA(4,1037,1), VXVA_MASK,   POWER10,   0,              {VD, VB}},
4959 {"vstrihl.",    VXVA(4,1037,2), VXVA_MASK,   POWER10,   0,              {VD, VB}},
4960 {"vstrihr.",    VXVA(4,1037,3), VXVA_MASK,   POWER10,   0,              {VD, VB}},
4961 {"evmhosmi",    VX (4,1037),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4962 {"evmhosmf",    VX (4,1039),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4963 {"machhwuo",    XO (4,  12,1,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4964 {"machhwuo.",   XO (4,  12,1,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4965 {"ps_merge00",  XOPS(4,528,0),  XOPS_MASK,   PPCPS,     0,              {FRT, FRA, FRB}},
4966 {"ps_merge00.", XOPS(4,528,1),  XOPS_MASK,   PPCPS,     0,              {FRT, FRA, FRB}},
4967 {"evmhessfa",   VX (4,1059),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4968 {"evmhossfa",   VX (4,1063),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4969 {"evmheumia",   VX (4,1064),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4970 {"evmhesmia",   VX (4,1065),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4971 {"evmhesmfa",   VX (4,1067),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4972 {"evmhoumia",   VX (4,1068),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4973 {"evmhosmia",   VX (4,1069),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4974 {"evmhosmfa",   VX (4,1071),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4975 {"vsubuhm",     VX (4,1088),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4976 {"bcdsub.",     VX (4,1089),    VXPS_MASK,   PPCVEC2,   0,              {VD, VA, VB, PS}},
4977 {"vavguh",      VX (4,1090),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4978 {"evmwlssf",    VX (4,1091),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
4979 {"vabsduh",     VX (4,1091),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
4980 {"vandc",       VX (4,1092),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4981 {"vcmpequh.",   VXR(4,  70,1),  VXR_MASK,    PPCVEC,    0,              {VD, VA, VB}},
4982 {"udi1fcm.",    APU(4, 547,0),  APU_MASK, PPC405|PPC440, 0,             {URT, URA, URB}},
4983 {"udi1fcm",     APU(4, 547,1),  APU_MASK, PPC405|PPC440, 0,             {URT, URA, URB}},
4984 {"vcmpneh.",    VXR(4,  71,1),  VXR_MASK,    PPCVEC3,   0,              {VD, VA, VB}},
4985 {"evmwhssf",    VX (4,1095),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4986 {"vpmsumh",     VX (4,1096),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
4987 {"evmwlumi",    VX (4,1096),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4988 {"vminfp",      VX (4,1098),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4989 {"evmwlsmf",    VX (4,1099),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
4990 {"evmwhumi",    VX (4,1100),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4991 {"vsro",        VX (4,1100),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
4992 {"evmwhsmi",    VX (4,1101),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4993 {"vpkudum",     VX (4,1102),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
4994 {"evmwhsmf",    VX (4,1103),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4995 {"evmwssf",     VX (4,1107),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4996 {"machhwo",     XO (4,  44,1,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4997 {"evmwumi",     VX (4,1112),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
4998 {"machhwo.",    XO (4,  44,1,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
4999 {"evmwsmi",     VX (4,1113),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5000 {"evmwsmf",     VX (4,1115),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5001 {"nmachhwo",    XO (4,  46,1,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5002 {"nmachhwo.",   XO (4,  46,1,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5003 {"ps_merge01",  XOPS(4,560,0),  XOPS_MASK,   PPCPS,     0,              {FRT, FRA, FRB}},
5004 {"ps_merge01.", XOPS(4,560,1),  XOPS_MASK,   PPCPS,     0,              {FRT, FRA, FRB}},
5005 {"evmwlssfa",   VX (4,1123),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
5006 {"evmwhssfa",   VX (4,1127),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5007 {"evmwlumia",   VX (4,1128),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5008 {"evmwlsmfa",   VX (4,1131),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
5009 {"evmwhumia",   VX (4,1132),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5010 {"evmwhsmia",   VX (4,1133),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5011 {"evmwhsmfa",   VX (4,1135),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5012 {"evmwssfa",    VX (4,1139),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5013 {"evmwumia",    VX (4,1144),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5014 {"evmwsmia",    VX (4,1145),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5015 {"evmwsmfa",    VX (4,1147),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5016 {"vsubuwm",     VX (4,1152),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
5017 {"bcdus.",      VX (4,1153),    VX_MASK,     PPCVEC3,   0,              {VD, VA, VB}},
5018 {"vavguw",      VX (4,1154),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
5019 {"vabsduw",     VX (4,1155),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
5020 {"vmr",         VX (4,1156),    VX_MASK,     PPCVEC,    0,              {VD, VAB}},
5021 {"vor",         VX (4,1156),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
5022 {"vcmpnew.",    VXR(4, 135,1),  VXR_MASK,    PPCVEC3,   0,              {VD, VA, VB}},
5023 {"vpmsumw",     VX (4,1160),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
5024 {"vcmpequw.",   VXR(4, 134,1),  VXR_MASK,    PPCVEC,    0,              {VD, VA, VB}},
5025 {"udi2fcm.",    APU(4, 579,0),  APU_MASK, PPC405|PPC440, 0,             {URT, URA, URB}},
5026 {"udi2fcm",     APU(4, 579,1),  APU_MASK, PPC405|PPC440, 0,             {URT, URA, URB}},
5027 {"machhwsuo",   XO (4,  76,1,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5028 {"machhwsuo.",  XO (4,  76,1,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5029 {"ps_merge10",  XOPS(4,592,0),  XOPS_MASK,   PPCPS,     0,              {FRT, FRA, FRB}},
5030 {"ps_merge10.", XOPS(4,592,1),  XOPS_MASK,   PPCPS,     0,              {FRT, FRA, FRB}},
5031 {"vsubudm",     VX (4,1216),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
5032 {"evaddusiaaw", VX (4,1216),    VX_MASK,     PPCSPE,    0,              {RS, RA}},
5033 {"bcds.",       VX (4,1217),    VXPS_MASK,   PPCVEC3,   0,              {VD, VA, VB, PS}},
5034 {"evaddssiaaw", VX (4,1217),    VX_MASK,     PPCSPE,    0,              {RS, RA}},
5035 {"evsubfusiaaw",VX (4,1218),    VX_MASK,     PPCSPE,    0,              {RS, RA}},
5036 {"evsubfssiaaw",VX (4,1219),    VX_MASK,     PPCSPE,    0,              {RS, RA}},
5037 {"evmra",       VX (4,1220),    VX_MASK,     PPCSPE,    0,              {RS, RA}},
5038 {"vxor",        VX (4,1220),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
5039 {"evdivws",     VX (4,1222),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5040 {"vcmpeqfp.",   VXR(4, 198,1),  VXR_MASK,    PPCVEC,    0,              {VD, VA, VB}},
5041 {"udi3fcm.",    APU(4, 611,0),  APU_MASK, PPC405|PPC440, 0,             {URT, URA, URB}},
5042 {"vcmpequd.",   VXR(4, 199,1),  VXR_MASK,    PPCVEC2,   0,              {VD, VA, VB}},
5043 {"udi3fcm",     APU(4, 611,1),  APU_MASK, PPC405|PPC440, 0,             {URT, URA, URB}},
5044 {"evdivwu",     VX (4,1223),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5045 {"vpmsumd",     VX (4,1224),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
5046 {"evaddumiaaw", VX (4,1224),    VX_MASK,     PPCSPE,    0,              {RS, RA}},
5047 {"evaddsmiaaw", VX (4,1225),    VX_MASK,     PPCSPE,    0,              {RS, RA}},
5048 {"evsubfumiaaw",VX (4,1226),    VX_MASK,     PPCSPE,    0,              {RS, RA}},
5049 {"evsubfsmiaaw",VX (4,1227),    VX_MASK,     PPCSPE,    0,              {RS, RA}},
5050 {"vgnb",        VX (4,1228),    VX_MASK,     POWER10,   0,              {RT, VB, UIMM3}},
5051 {"vpkudus",     VX (4,1230),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
5052 {"machhwso",    XO (4, 108,1,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5053 {"machhwso.",   XO (4, 108,1,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5054 {"nmachhwso",   XO (4, 110,1,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5055 {"nmachhwso.",  XO (4, 110,1,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5056 {"ps_merge11",  XOPS(4,624,0),  XOPS_MASK,   PPCPS,     0,              {FRT, FRA, FRB}},
5057 {"ps_merge11.", XOPS(4,624,1),  XOPS_MASK,   PPCPS,     0,              {FRT, FRA, FRB}},
5058 {"vsubuqm",     VX (4,1280),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
5059 {"evmheusiaaw", VX (4,1280),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5060 {"bcdtrunc.",   VX (4,1281),    VXPS_MASK,   PPCVEC3,   0,              {VD, VA, VB, PS}},
5061 {"evmhessiaaw", VX (4,1281),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5062 {"vavgsb",      VX (4,1282),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
5063 {"evmhessfaaw", VX (4,1283),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5064 {"evmhousiaaw", VX (4,1284),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5065 {"vnot",        VX (4,1284),    VX_MASK,     PPCVEC,    0,              {VD, VAB}},
5066 {"vnor",        VX (4,1284),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
5067 {"evmhossiaaw", VX (4,1285),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5068 {"udi4fcm.",    APU(4, 643,0),  APU_MASK, PPC405|PPC440, 0,             {URT, URA, URB}},
5069 {"udi4fcm",     APU(4, 643,1),  APU_MASK, PPC405|PPC440, 0,             {URT, URA, URB}},
5070 {"vcmpnezb.",   VXR(4, 263,1),  VXR_MASK,    PPCVEC3,   0,              {VD, VA, VB}},
5071 {"evmhossfaaw", VX (4,1287),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5072 {"evmheumiaaw", VX (4,1288),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5073 {"vcipher",     VX (4,1288),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
5074 {"vcipherlast", VX (4,1289),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
5075 {"evmhesmiaaw", VX (4,1289),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5076 {"evmhesmfaaw", VX (4,1291),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5077 {"vgbbd",       VX (4,1292),    VXVA_MASK,   PPCVEC2,   0,              {VD, VB}},
5078 {"evmhoumiaaw", VX (4,1292),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5079 {"evmhosmiaaw", VX (4,1293),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5080 {"evmhosmfaaw", VX (4,1295),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5081 {"macchwuo",    XO (4, 140,1,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5082 {"macchwuo.",   XO (4, 140,1,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5083 {"evmhegumiaa", VX (4,1320),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5084 {"evmhegsmiaa", VX (4,1321),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5085 {"evmhegsmfaa", VX (4,1323),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5086 {"evmhogumiaa", VX (4,1324),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5087 {"evmhogsmiaa", VX (4,1325),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5088 {"evmhogsmfaa", VX (4,1327),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5089 {"vsubcuq",     VX (4,1344),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
5090 {"evmwlusiaaw", VX (4,1344),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5091 {"bcdutrunc.",  VX (4,1345),    VX_MASK,     PPCVEC3,   0,              {VD, VA, VB}},
5092 {"evmwlssiaaw", VX (4,1345),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5093 {"vavgsh",      VX (4,1346),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
5094 {"evmwlssfaaw", VX (4,1347),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
5095 {"evmwhusiaa",  VX (4,1348),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
5096 {"vorc",        VX (4,1348),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
5097 {"evmwhssmaa",  VX (4,1349),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
5098 {"udi5fcm.",    APU(4, 675,0),  APU_MASK, PPC405|PPC440, 0,             {URT, URA, URB}},
5099 {"udi5fcm",     APU(4, 675,1),  APU_MASK, PPC405|PPC440, 0,             {URT, URA, URB}},
5100 {"vcmpnezh.",   VXR(4, 327,1),  VXR_MASK,    PPCVEC3,   0,              {VD, VA, VB}},
5101 {"evmwhssfaa",  VX (4,1351),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
5102 {"vncipher",    VX (4,1352),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
5103 {"evmwlumiaaw", VX (4,1352),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5104 {"vncipherlast",VX (4,1353),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
5105 {"evmwlsmiaaw", VX (4,1353),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5106 {"evmwlsmfaaw", VX (4,1355),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
5107 {"evmwhumiaa",  VX (4,1356),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
5108 {"vbpermq",     VX (4,1356),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
5109 {"vcfuged",     VX (4,1357),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
5110 {"evmwhsmiaa",  VX (4,1357),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
5111 {"vpksdus",     VX (4,1358),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
5112 {"evmwhsmfaa",  VX (4,1359),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
5113 {"evmwssfaa",   VX (4,1363),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5114 {"macchwo",     XO (4, 172,1,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5115 {"evmwumiaa",   VX (4,1368),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5116 {"macchwo.",    XO (4, 172,1,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5117 {"evmwsmiaa",   VX (4,1369),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5118 {"evmwsmfaa",   VX (4,1371),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5119 {"nmacchwo",    XO (4, 174,1,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5120 {"nmacchwo.",   XO (4, 174,1,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5121 {"evmwhgumiaa", VX (4,1380),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
5122 {"evmwhgsmiaa", VX (4,1381),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
5123 {"evmwhgssfaa", VX (4,1383),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
5124 {"evmwhgsmfaa", VX (4,1391),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
5125 {"evmheusianw", VX (4,1408),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5126 {"vsubcuw",     VX (4,1408),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
5127 {"evmhessianw", VX (4,1409),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5128 {"bcdctsq.",    VXVA(4,1409,0), VXVA_MASK,   PPCVEC3,   0,              {VD, VB}},
5129 {"bcdcfsq.",    VXVA(4,1409,2), VXVAPS_MASK, PPCVEC3,   0,              {VD, VB, PS}},
5130 {"bcdctz.",     VXVA(4,1409,4), VXVAPS_MASK, PPCVEC3,   0,              {VD, VB, PS}},
5131 {"bcdctn.",     VXVA(4,1409,5), VXVA_MASK,   PPCVEC3,   0,              {VD, VB}},
5132 {"bcdcfz.",     VXVA(4,1409,6), VXVAPS_MASK, PPCVEC3,   0,              {VD, VB, PS}},
5133 {"bcdcfn.",     VXVA(4,1409,7), VXVAPS_MASK, PPCVEC3,   0,              {VD, VB, PS}},
5134 {"bcdsetsgn.",  VXVA(4,1409,31), VXVAPS_MASK, PPCVEC3,  0,              {VD, VB, PS}},
5135 {"vavgsw",      VX (4,1410),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
5136 {"evmhessfanw", VX (4,1411),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5137 {"vnand",       VX (4,1412),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
5138 {"evmhousianw", VX (4,1412),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5139 {"evmhossianw", VX (4,1413),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5140 {"udi6fcm.",    APU(4, 707,0),  APU_MASK, PPC405|PPC440, 0,             {URT, URA, URB}},
5141 {"udi6fcm",     APU(4, 707,1),  APU_MASK, PPC405|PPC440, 0,             {URT, URA, URB}},
5142 {"vcmpnezw.",   VXR(4, 391,1),  VXR_MASK,    PPCVEC3,   0,              {VD, VA, VB}},
5143 {"evmhossfanw", VX (4,1415),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5144 {"evmheumianw", VX (4,1416),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5145 {"evmhesmianw", VX (4,1417),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5146 {"evmhesmfanw", VX (4,1419),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5147 {"evmhoumianw", VX (4,1420),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5148 {"vpextd",      VX (4,1421),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
5149 {"evmhosmianw", VX (4,1421),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5150 {"evmhosmfanw", VX (4,1423),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5151 {"macchwsuo",   XO (4, 204,1,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5152 {"macchwsuo.",  XO (4, 204,1,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5153 {"evmhegumian", VX (4,1448),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5154 {"evmhegsmian", VX (4,1449),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5155 {"evmhegsmfan", VX (4,1451),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5156 {"evmhogumian", VX (4,1452),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5157 {"evmhogsmian", VX (4,1453),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5158 {"evmhogsmfan", VX (4,1455),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5159 {"evmwlusianw", VX (4,1472),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5160 {"bcdsr.",      VX (4,1473),    VXPS_MASK,   PPCVEC3,   0,              {VD, VA, VB, PS}},
5161 {"evmwlssianw", VX (4,1473),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5162 {"evmwlssfanw", VX (4,1475),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
5163 {"evmwhusian",  VX (4,1476),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
5164 {"vsld",        VX (4,1476),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
5165 {"evmwhssian",  VX (4,1477),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
5166 {"vcmpgefp.",   VXR(4, 454,1),  VXR_MASK,    PPCVEC,    0,              {VD, VA, VB}},
5167 {"udi7fcm.",    APU(4, 739,0),  APU_MASK, PPC405|PPC440, 0,             {URT, URA, URB}},
5168 {"udi7fcm",     APU(4, 739,1),  APU_MASK, PPC405|PPC440, 0,             {URT, URA, URB}},
5169 {"vcmpequq.",   VXR(4, 455,1),  VXR_MASK,    POWER10,   0,              {VD, VA, VB}},
5170 {"evmwhssfan",  VX (4,1479),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
5171 {"vsbox",       VX (4,1480),    VXVB_MASK,   PPCVEC2,   0,              {VD, VA}},
5172 {"evmwlumianw", VX (4,1480),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5173 {"evmwlsmianw", VX (4,1481),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5174 {"evmwlsmfanw", VX (4,1483),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
5175 {"evmwhumian",  VX (4,1484),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
5176 {"vbpermd",     VX (4,1484),    VX_MASK,     PPCVEC3,   0,              {VD, VA, VB}},
5177 {"vpdepd",      VX (4,1485),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
5178 {"evmwhsmian",  VX (4,1485),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
5179 {"vpksdss",     VX (4,1486),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
5180 {"evmwhsmfan",  VX (4,1487),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
5181 {"evmwssfan",   VX (4,1491),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5182 {"macchwso",    XO (4, 236,1,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5183 {"evmwumian",   VX (4,1496),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5184 {"macchwso.",   XO (4, 236,1,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5185 {"evmwsmian",   VX (4,1497),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5186 {"evmwsmfan",   VX (4,1499),    VX_MASK,     PPCSPE,    0,              {RS, RA, RB}},
5187 {"evmwhgumian", VX (4,1508),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
5188 {"evmwhgsmian", VX (4,1509),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
5189 {"evmwhgssfan", VX (4,1511),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
5190 {"evmwhgsmfan", VX (4,1519),    VX_MASK,     PPCSPE,    0,              {RD, RA, RB}},
5191 {"nmacchwso",   XO (4, 238,1,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5192 {"nmacchwso.",  XO (4, 238,1,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5193 {"vsububs",     VX (4,1536),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
5194 {"vclzlsbb",    VXVA(4,1538,0), VXVA_MASK,   PPCVEC3,   0,              {RT, VB}},
5195 {"vctzlsbb",    VXVA(4,1538,1), VXVA_MASK,   PPCVEC3,   0,              {RT, VB}},
5196 {"vnegw",       VXVA(4,1538,6), VXVA_MASK,   PPCVEC3,   0,              {VD, VB}},
5197 {"vnegd",       VXVA(4,1538,7), VXVA_MASK,   PPCVEC3,   0,              {VD, VB}},
5198 {"vprtybw",     VXVA(4,1538,8), VXVA_MASK,   PPCVEC3,   0,              {VD, VB}},
5199 {"vprtybd",     VXVA(4,1538,9), VXVA_MASK,   PPCVEC3,   0,              {VD, VB}},
5200 {"vprtybq",     VXVA(4,1538,10), VXVA_MASK,  PPCVEC3,   0,              {VD, VB}},
5201 {"vextsb2w",    VXVA(4,1538,16), VXVA_MASK,  PPCVEC3,   0,              {VD, VB}},
5202 {"vextsh2w",    VXVA(4,1538,17), VXVA_MASK,  PPCVEC3,   0,              {VD, VB}},
5203 {"vextsb2d",    VXVA(4,1538,24), VXVA_MASK,  PPCVEC3,   0,              {VD, VB}},
5204 {"vextsh2d",    VXVA(4,1538,25), VXVA_MASK,  PPCVEC3,   0,              {VD, VB}},
5205 {"vextsw2d",    VXVA(4,1538,26), VXVA_MASK,  PPCVEC3,   0,              {VD, VB}},
5206 {"vextsd2q",    VXVA(4,1538,27), VXVA_MASK,  POWER10,   0,              {VD, VB}},
5207 {"vctzb",       VXVA(4,1538,28), VXVA_MASK,  PPCVEC3,   0,              {VD, VB}},
5208 {"vctzh",       VXVA(4,1538,29), VXVA_MASK,  PPCVEC3,   0,              {VD, VB}},
5209 {"vctzw",       VXVA(4,1538,30), VXVA_MASK,  PPCVEC3,   0,              {VD, VB}},
5210 {"vctzd",       VXVA(4,1538,31), VXVA_MASK,  PPCVEC3,   0,              {VD, VB}},
5211 {"mfvscr",      VX (4,1540),    VXVAVB_MASK, PPCVEC,    0,              {VD}},
5212 {"vcmpgtub.",   VXR(4, 518,1),  VXR_MASK,    PPCVEC,    0,              {VD, VA, VB}},
5213 {"udi8fcm.",    APU(4, 771,0),  APU_MASK,    PPC440,    0,              {URT, URA, URB}},
5214 {"udi8fcm",     APU(4, 771,1),  APU_MASK,    PPC440,    0,              {URT, URA, URB}},
5215 {"vsum4ubs",    VX (4,1544),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
5216 {"vmoduq",      VX (4,1547),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
5217 {"vextublx",    VX (4,1549),    VX_MASK,     PPCVEC3,   0,              {RT, RA, VB}},
5218 {"vsubuhs",     VX (4,1600),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
5219
5220 {"vexpandbm",   VXVA(4,1602,0),  VXVA_MASK,  POWER10,   0,              {VD, VB}},
5221 {"vexpandhm",   VXVA(4,1602,1),  VXVA_MASK,  POWER10,   0,              {VD, VB}},
5222 {"vexpandwm",   VXVA(4,1602,2),  VXVA_MASK,  POWER10,   0,              {VD, VB}},
5223 {"vexpanddm",   VXVA(4,1602,3),  VXVA_MASK,  POWER10,   0,              {VD, VB}},
5224 {"vexpandqm",   VXVA(4,1602,4),  VXVA_MASK,  POWER10,   0,              {VD, VB}},
5225 {"vextractbm",  VXVA(4,1602,8),  VXVA_MASK,  POWER10,   0,              {RT, VB}},
5226 {"vextracthm",  VXVA(4,1602,9),  VXVA_MASK,  POWER10,   0,              {RT, VB}},
5227 {"vextractwm",  VXVA(4,1602,10), VXVA_MASK,  POWER10,   0,              {RT, VB}},
5228 {"vextractdm",  VXVA(4,1602,11), VXVA_MASK,  POWER10,   0,              {RT, VB}},
5229 {"vextractqm",  VXVA(4,1602,12), VXVA_MASK,  POWER10,   0,              {RT, VB}},
5230 {"mtvsrbm",     VXVA(4,1602,16), VXVA_MASK,  POWER10,   0,              {VD, RB}},
5231 {"mtvsrhm",     VXVA(4,1602,17), VXVA_MASK,  POWER10,   0,              {VD, RB}},
5232 {"mtvsrwm",     VXVA(4,1602,18), VXVA_MASK,  POWER10,   0,              {VD, RB}},
5233 {"mtvsrdm",     VXVA(4,1602,19), VXVA_MASK,  POWER10,   0,              {VD, RB}},
5234 {"mtvsrqm",     VXVA(4,1602,20), VXVA_MASK,  POWER10,   0,              {VD, RB}},
5235 {"vcntmbb",     VXVA(4,1602,24), VXVAM_MASK, POWER10,   0,              {RT, VB, MP}},
5236 {"vcntmbh",     VXVA(4,1602,26), VXVAM_MASK, POWER10,   0,              {RT, VB, MP}},
5237 {"vcntmbw",     VXVA(4,1602,28), VXVAM_MASK, POWER10,   0,              {RT, VB, MP}},
5238 {"vcntmbd",     VXVA(4,1602,30), VXVAM_MASK, POWER10,   0,              {RT, VB, MP}},
5239
5240 {"mtvscr",      VX (4,1604),    VXVDVA_MASK, PPCVEC,    0,              {VB}},
5241 {"vcmpgtuh.",   VXR(4, 582,1),  VXR_MASK,    PPCVEC,    0,              {VD, VA, VB}},
5242 {"vsum4shs",    VX (4,1608),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
5243 {"udi9fcm.",    APU(4, 804,0),  APU_MASK,    PPC440,    0,              {URT, URA, URB}},
5244 {"udi9fcm",     APU(4, 804,1),  APU_MASK,    PPC440,    0,              {URT, URA, URB}},
5245 {"vextuhlx",    VX (4,1613),    VX_MASK,     PPCVEC3,   0,              {RT, RA, VB}},
5246 {"vupkhsw",     VX (4,1614),    VXVA_MASK,   PPCVEC2,   0,              {VD, VB}},
5247 {"vsubuws",     VX (4,1664),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
5248 {"vshasigmaw",  VX (4,1666),    VX_MASK,     PPCVEC2,   0,              {VD, VA, ST, SIX}},
5249 {"veqv",        VX (4,1668),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
5250 {"vcmpgtuw.",   VXR(4, 646,1),  VXR_MASK,    PPCVEC,    0,              {VD, VA, VB}},
5251 {"udi10fcm.",   APU(4, 835,0),  APU_MASK,    PPC440,    0,              {URT, URA, URB}},
5252 {"vcmpgtuq.",   VXR(4, 647,1),  VXR_MASK,    POWER10,   0,              {VD, VA, VB}},
5253 {"udi10fcm",    APU(4, 835,1),  APU_MASK,    PPC440,    0,              {URT, URA, URB}},
5254 {"vsum2sws",    VX (4,1672),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
5255 {"vmoduw",      VX (4,1675),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
5256 {"vmrgow",      VX (4,1676),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
5257 {"vextuwlx",    VX (4,1677),    VX_MASK,     PPCVEC3,   0,              {RT, RA, VB}},
5258 {"vshasigmad",  VX (4,1730),    VX_MASK,     PPCVEC2,   0,              {VD, VA, ST, SIX}},
5259 {"vsrd",        VX (4,1732),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
5260 {"vcmpgtfp.",   VXR(4, 710,1),  VXR_MASK,    PPCVEC,    0,              {VD, VA, VB}},
5261 {"udi11fcm.",   APU(4, 867,0),  APU_MASK,    PPC440,    0,              {URT, URA, URB}},
5262 {"vcmpgtud.",   VXR(4, 711,1),  VXR_MASK,    PPCVEC2,   0,              {VD, VA, VB}},
5263 {"udi11fcm",    APU(4, 867,1),  APU_MASK,    PPC440,    0,              {URT, URA, URB}},
5264 {"vmodud",      VX (4,1739),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
5265 {"vupklsw",     VX (4,1742),    VXVA_MASK,   PPCVEC2,   0,              {VD, VB}},
5266 {"vsubsbs",     VX (4,1792),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
5267 {"vclzb",       VX (4,1794),    VXVA_MASK,   PPCVEC2,   0,              {VD, VB}},
5268 {"vpopcntb",    VX (4,1795),    VXVA_MASK,   PPCVEC2,   0,              {VD, VB}},
5269 {"vsrv",        VX (4,1796),    VX_MASK,     PPCVEC3,   0,              {VD, VA, VB}},
5270 {"vcmpgtsb.",   VXR(4, 774,1),  VXR_MASK,    PPCVEC,    0,              {VD, VA, VB}},
5271 {"udi12fcm.",   APU(4, 899,0),  APU_MASK,    PPC440,    0,              {URT, URA, URB}},
5272 {"udi12fcm",    APU(4, 899,1),  APU_MASK,    PPC440,    0,              {URT, URA, URB}},
5273 {"vsum4sbs",    VX (4,1800),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
5274 {"vmodsq",      VX (4,1803),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
5275 {"vextubrx",    VX (4,1805),    VX_MASK,     PPCVEC3,   0,              {RT, RA, VB}},
5276 {"maclhwuo",    XO (4, 396,1,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5277 {"maclhwuo.",   XO (4, 396,1,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5278 {"vsubshs",     VX (4,1856),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
5279 {"vclzh",       VX (4,1858),    VXVA_MASK,   PPCVEC2,   0,              {VD, VB}},
5280 {"vpopcnth",    VX (4,1859),    VXVA_MASK,   PPCVEC2,   0,              {VD, VB}},
5281 {"vslv",        VX (4,1860),    VX_MASK,     PPCVEC3,   0,              {VD, VA, VB}},
5282 {"vcmpgtsh.",   VXR(4, 838,1),  VXR_MASK,    PPCVEC,    0,              {VD, VA, VB}},
5283 {"vextuhrx",    VX (4,1869),    VX_MASK,     PPCVEC3,   0,              {RT, RA, VB}},
5284 {"udi13fcm.",   APU(4, 931,0),  APU_MASK,    PPC440,    0,              {URT, URA, URB}},
5285 {"udi13fcm",    APU(4, 931,1),  APU_MASK,    PPC440,    0,              {URT, URA, URB}},
5286 {"maclhwo",     XO (4, 428,1,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5287 {"maclhwo.",    XO (4, 428,1,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5288 {"nmaclhwo",    XO (4, 430,1,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5289 {"nmaclhwo.",   XO (4, 430,1,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5290 {"vsubsws",     VX (4,1920),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
5291 {"vclzw",       VX (4,1922),    VXVA_MASK,   PPCVEC2,   0,              {VD, VB}},
5292 {"vpopcntw",    VX (4,1923),    VXVA_MASK,   PPCVEC2,   0,              {VD, VB}},
5293 {"vclzdm",      VX (4,1924),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
5294 {"vcmpgtsw.",   VXR(4, 902,1),  VXR_MASK,    PPCVEC,    0,              {VD, VA, VB}},
5295 {"udi14fcm.",   APU(4, 963,0),  APU_MASK,    PPC440,    0,              {URT, URA, URB}},
5296 {"vcmpgtsq.",   VXR(4, 903,1),  VXR_MASK,    POWER10,   0,              {VD, VA, VB}},
5297 {"udi14fcm",    APU(4, 963,1),  APU_MASK,    PPC440,    0,              {URT, URA, URB}},
5298 {"vsumsws",     VX (4,1928),    VX_MASK,     PPCVEC,    0,              {VD, VA, VB}},
5299 {"vmodsw",      VX (4,1931),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
5300 {"vmrgew",      VX (4,1932),    VX_MASK,     PPCVEC2,   0,              {VD, VA, VB}},
5301 {"vextuwrx",    VX (4,1933),    VX_MASK,     PPCVEC3,   0,              {RT, RA, VB}},
5302 {"maclhwsuo",   XO (4, 460,1,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5303 {"maclhwsuo.",  XO (4, 460,1,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5304 {"vclzd",       VX (4,1986),    VXVA_MASK,   PPCVEC2,   0,              {VD, VB}},
5305 {"vpopcntd",    VX (4,1987),    VXVA_MASK,   PPCVEC2,   0,              {VD, VB}},
5306 {"vctzdm",      VX (4,1988),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
5307 {"vcmpbfp.",    VXR(4, 966,1),  VXR_MASK,    PPCVEC,    0,              {VD, VA, VB}},
5308 {"udi15fcm.",   APU(4, 995,0),  APU_MASK,    PPC440,    0,              {URT, URA, URB}},
5309 {"vcmpgtsd.",   VXR(4, 967,1),  VXR_MASK,    PPCVEC2,   0,              {VD, VA, VB}},
5310 {"udi15fcm",    APU(4, 995,1),  APU_MASK,    PPC440,    0,              {URT, URA, URB}},
5311 {"vmodsd",      VX (4,1995),    VX_MASK,     POWER10,   0,              {VD, VA, VB}},
5312 {"maclhwso",    XO (4, 492,1,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5313 {"maclhwso.",   XO (4, 492,1,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5314 {"nmaclhwso",   XO (4, 494,1,0), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5315 {"nmaclhwso.",  XO (4, 494,1,1), XO_MASK,    MULHW,     0,              {RT, RA, RB}},
5316 {"dcbz_l",      X  (4,1014),    XRT_MASK,    PPCPS,     0,              {RA, RB}},
5317
5318 {"lxvp",        DQXP(6,0),      DQXP_MASK,   POWER10,   PPCVLE,         {XTP, DQ, RA0}},
5319 {"stxvp",       DQXP(6,1),      DQXP_MASK,   POWER10,   PPCVLE,         {XTP, DQ, RA0}},
5320
5321 {"mulli",       OP(7),          OP_MASK,     PPCCOM,    PPCVLE,         {RT, RA, SI}},
5322 {"muli",        OP(7),          OP_MASK,     PWRCOM,    PPCVLE,         {RT, RA, SI}},
5323
5324 {"subfic",      OP(8),          OP_MASK,     PPCCOM,    PPCVLE,         {RT, RA, SI}},
5325 {"sfi",         OP(8),          OP_MASK,     PWRCOM,    PPCVLE,         {RT, RA, SI}},
5326
5327 {"dozi",        OP(9),          OP_MASK,     M601,      PPCVLE,         {RT, RA, SI}},
5328
5329 {"cmplwi",      OPL(10,0),      OPL_MASK,    PPCCOM,    PPCVLE,         {OBF, RA, UISIGNOPT}},
5330 {"cmpldi",      OPL(10,1),      OPL_MASK,    PPC64,     PPCVLE,         {OBF, RA, UISIGNOPT}},
5331 {"cmpli",       OP(10),         OP_MASK,     PPC,       PPCVLE,         {BF, L32OPT, RA, UISIGNOPT}},
5332 {"cmpli",       OP(10),         OP_MASK,     PWRCOM,    PPC|PPCVLE,     {BF, RA, UISIGNOPT}},
5333
5334 {"cmpwi",       OPL(11,0),      OPL_MASK,    PPCCOM,    PPCVLE,         {OBF, RA, SI}},
5335 {"cmpdi",       OPL(11,1),      OPL_MASK,    PPC64,     PPCVLE,         {OBF, RA, SI}},
5336 {"cmpi",        OP(11),         OP_MASK,     PPC,       PPCVLE,         {BF, L32OPT, RA, SI}},
5337 {"cmpi",        OP(11),         OP_MASK,     PWRCOM,    PPC|PPCVLE,     {BF, RA, SI}},
5338
5339 {"addic",       OP(12),         OP_MASK,     PPCCOM,    PPCVLE,         {RT, RA, SI}},
5340 {"ai",          OP(12),         OP_MASK,     PWRCOM,    PPCVLE,         {RT, RA, SI}},
5341 {"subic",       OP(12),         OP_MASK,     PPCCOM,    PPCVLE,         {RT, RA, NSI}},
5342
5343 {"addic.",      OP(13),         OP_MASK,     PPCCOM,    PPCVLE,         {RT, RA, SI}},
5344 {"ai.",         OP(13),         OP_MASK,     PWRCOM,    PPCVLE,         {RT, RA, SI}},
5345 {"subic.",      OP(13),         OP_MASK,     PPCCOM,    PPCVLE,         {RT, RA, NSI}},
5346
5347 {"li",          OP(14),         DRA_MASK,    PPCCOM,    PPCVLE,         {RT, SI}},
5348 {"lil",         OP(14),         DRA_MASK,    PWRCOM,    PPCVLE,         {RT, SI}},
5349 {"addi",        OP(14),         OP_MASK,     PPCCOM,    PPCVLE,         {RT, RA0, SI}},
5350 {"cal",         OP(14),         OP_MASK,     PWRCOM,    PPCVLE,         {RT, D, RA0}},
5351 {"subi",        OP(14),         OP_MASK,     PPCCOM,    PPCVLE,         {RT, RA0, NSI}},
5352 {"la",          OP(14),         OP_MASK,     PPCCOM,    PPCVLE,         {RT, D, RA0}},
5353
5354 {"lis",         OP(15),         DRA_MASK,    PPCCOM,    PPCVLE,         {RT, SISIGNOPT}},
5355 {"liu",         OP(15),         DRA_MASK,    PWRCOM,    PPCVLE,         {RT, SISIGNOPT}},
5356 {"addis",       OP(15),         OP_MASK,     PPCCOM,    PPCVLE,         {RT, RA0, SISIGNOPT}},
5357 {"cau",         OP(15),         OP_MASK,     PWRCOM,    PPCVLE,         {RT, RA0, SISIGNOPT}},
5358 {"subis",       OP(15),         OP_MASK,     PPCCOM,    PPCVLE,         {RT, RA0, NSISIGNOPT}},
5359
5360 {"bdnz-",    BBO(16,BODNZ,0,0),         BBOATBI_MASK,  PPCCOM,   PPCVLE,        {BDM}},
5361 {"bdnz+",    BBO(16,BODNZ,0,0),         BBOATBI_MASK,  PPCCOM,   PPCVLE,        {BDP}},
5362 {"bdnz",     BBO(16,BODNZ,0,0),         BBOATBI_MASK,  PPCCOM,   PPCVLE,        {BD}},
5363 {"bdn",      BBO(16,BODNZ,0,0),         BBOATBI_MASK,  PWRCOM,   PPCVLE,        {BD}},
5364 {"bdnzl-",   BBO(16,BODNZ,0,1),         BBOATBI_MASK,  PPCCOM,   PPCVLE,        {BDM}},
5365 {"bdnzl+",   BBO(16,BODNZ,0,1),         BBOATBI_MASK,  PPCCOM,   PPCVLE,        {BDP}},
5366 {"bdnzl",    BBO(16,BODNZ,0,1),         BBOATBI_MASK,  PPCCOM,   PPCVLE,        {BD}},
5367 {"bdnl",     BBO(16,BODNZ,0,1),         BBOATBI_MASK,  PWRCOM,   PPCVLE,        {BD}},
5368 {"bdnza-",   BBO(16,BODNZ,1,0),         BBOATBI_MASK,  PPCCOM,   PPCVLE,        {BDMA}},
5369 {"bdnza+",   BBO(16,BODNZ,1,0),         BBOATBI_MASK,  PPCCOM,   PPCVLE,        {BDPA}},
5370 {"bdnza",    BBO(16,BODNZ,1,0),         BBOATBI_MASK,  PPCCOM,   PPCVLE,        {BDA}},
5371 {"bdna",     BBO(16,BODNZ,1,0),         BBOATBI_MASK,  PWRCOM,   PPCVLE,        {BDA}},
5372 {"bdnzla-",  BBO(16,BODNZ,1,1),         BBOATBI_MASK,  PPCCOM,   PPCVLE,        {BDMA}},
5373 {"bdnzla+",  BBO(16,BODNZ,1,1),         BBOATBI_MASK,  PPCCOM,   PPCVLE,        {BDPA}},
5374 {"bdnzla",   BBO(16,BODNZ,1,1),         BBOATBI_MASK,  PPCCOM,   PPCVLE,        {BDA}},
5375 {"bdnla",    BBO(16,BODNZ,1,1),         BBOATBI_MASK,  PWRCOM,   PPCVLE,        {BDA}},
5376 {"bdz-",     BBO(16,BODZ,0,0),          BBOATBI_MASK,  PPCCOM,   PPCVLE,        {BDM}},
5377 {"bdz+",     BBO(16,BODZ,0,0),          BBOATBI_MASK,  PPCCOM,   PPCVLE,        {BDP}},
5378 {"bdz",      BBO(16,BODZ,0,0),          BBOATBI_MASK,  COM,      PPCVLE,        {BD}},
5379 {"bdzl-",    BBO(16,BODZ,0,1),          BBOATBI_MASK,  PPCCOM,   PPCVLE,        {BDM}},
5380 {"bdzl+",    BBO(16,BODZ,0,1),          BBOATBI_MASK,  PPCCOM,   PPCVLE,        {BDP}},
5381 {"bdzl",     BBO(16,BODZ,0,1),          BBOATBI_MASK,  COM,      PPCVLE,        {BD}},
5382 {"bdza-",    BBO(16,BODZ,1,0),          BBOATBI_MASK,  PPCCOM,   PPCVLE,        {BDMA}},
5383 {"bdza+",    BBO(16,BODZ,1,0),          BBOATBI_MASK,  PPCCOM,   PPCVLE,        {BDPA}},
5384 {"bdza",     BBO(16,BODZ,1,0),          BBOATBI_MASK,  COM,      PPCVLE,        {BDA}},
5385 {"bdzla-",   BBO(16,BODZ,1,1),          BBOATBI_MASK,  PPCCOM,   PPCVLE,        {BDMA}},
5386 {"bdzla+",   BBO(16,BODZ,1,1),          BBOATBI_MASK,  PPCCOM,   PPCVLE,        {BDPA}},
5387 {"bdzla",    BBO(16,BODZ,1,1),          BBOATBI_MASK,  COM,      PPCVLE,        {BDA}},
5388
5389 {"bge-",     BBOCB(16,BOF,CBLT,0,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDM}},
5390 {"bge+",     BBOCB(16,BOF,CBLT,0,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDP}},
5391 {"bge",      BBOCB(16,BOF,CBLT,0,0),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BD}},
5392 {"bnl-",     BBOCB(16,BOF,CBLT,0,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDM}},
5393 {"bnl+",     BBOCB(16,BOF,CBLT,0,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDP}},
5394 {"bnl",      BBOCB(16,BOF,CBLT,0,0),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BD}},
5395 {"bgel-",    BBOCB(16,BOF,CBLT,0,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDM}},
5396 {"bgel+",    BBOCB(16,BOF,CBLT,0,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDP}},
5397 {"bgel",     BBOCB(16,BOF,CBLT,0,1),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BD}},
5398 {"bnll-",    BBOCB(16,BOF,CBLT,0,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDM}},
5399 {"bnll+",    BBOCB(16,BOF,CBLT,0,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDP}},
5400 {"bnll",     BBOCB(16,BOF,CBLT,0,1),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BD}},
5401 {"bgea-",    BBOCB(16,BOF,CBLT,1,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDMA}},
5402 {"bgea+",    BBOCB(16,BOF,CBLT,1,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDPA}},
5403 {"bgea",     BBOCB(16,BOF,CBLT,1,0),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BDA}},
5404 {"bnla-",    BBOCB(16,BOF,CBLT,1,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDMA}},
5405 {"bnla+",    BBOCB(16,BOF,CBLT,1,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDPA}},
5406 {"bnla",     BBOCB(16,BOF,CBLT,1,0),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BDA}},
5407 {"bgela-",   BBOCB(16,BOF,CBLT,1,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDMA}},
5408 {"bgela+",   BBOCB(16,BOF,CBLT,1,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDPA}},
5409 {"bgela",    BBOCB(16,BOF,CBLT,1,1),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BDA}},
5410 {"bnlla-",   BBOCB(16,BOF,CBLT,1,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDMA}},
5411 {"bnlla+",   BBOCB(16,BOF,CBLT,1,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDPA}},
5412 {"bnlla",    BBOCB(16,BOF,CBLT,1,1),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BDA}},
5413 {"ble-",     BBOCB(16,BOF,CBGT,0,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDM}},
5414 {"ble+",     BBOCB(16,BOF,CBGT,0,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDP}},
5415 {"ble",      BBOCB(16,BOF,CBGT,0,0),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BD}},
5416 {"bng-",     BBOCB(16,BOF,CBGT,0,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDM}},
5417 {"bng+",     BBOCB(16,BOF,CBGT,0,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDP}},
5418 {"bng",      BBOCB(16,BOF,CBGT,0,0),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BD}},
5419 {"blel-",    BBOCB(16,BOF,CBGT,0,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDM}},
5420 {"blel+",    BBOCB(16,BOF,CBGT,0,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDP}},
5421 {"blel",     BBOCB(16,BOF,CBGT,0,1),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BD}},
5422 {"bngl-",    BBOCB(16,BOF,CBGT,0,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDM}},
5423 {"bngl+",    BBOCB(16,BOF,CBGT,0,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDP}},
5424 {"bngl",     BBOCB(16,BOF,CBGT,0,1),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BD}},
5425 {"blea-",    BBOCB(16,BOF,CBGT,1,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDMA}},
5426 {"blea+",    BBOCB(16,BOF,CBGT,1,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDPA}},
5427 {"blea",     BBOCB(16,BOF,CBGT,1,0),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BDA}},
5428 {"bnga-",    BBOCB(16,BOF,CBGT,1,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDMA}},
5429 {"bnga+",    BBOCB(16,BOF,CBGT,1,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDPA}},
5430 {"bnga",     BBOCB(16,BOF,CBGT,1,0),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BDA}},
5431 {"blela-",   BBOCB(16,BOF,CBGT,1,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDMA}},
5432 {"blela+",   BBOCB(16,BOF,CBGT,1,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDPA}},
5433 {"blela",    BBOCB(16,BOF,CBGT,1,1),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BDA}},
5434 {"bngla-",   BBOCB(16,BOF,CBGT,1,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDMA}},
5435 {"bngla+",   BBOCB(16,BOF,CBGT,1,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDPA}},
5436 {"bngla",    BBOCB(16,BOF,CBGT,1,1),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BDA}},
5437 {"bne-",     BBOCB(16,BOF,CBEQ,0,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDM}},
5438 {"bne+",     BBOCB(16,BOF,CBEQ,0,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDP}},
5439 {"bne",      BBOCB(16,BOF,CBEQ,0,0),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BD}},
5440 {"bnel-",    BBOCB(16,BOF,CBEQ,0,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDM}},
5441 {"bnel+",    BBOCB(16,BOF,CBEQ,0,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDP}},
5442 {"bnel",     BBOCB(16,BOF,CBEQ,0,1),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BD}},
5443 {"bnea-",    BBOCB(16,BOF,CBEQ,1,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDMA}},
5444 {"bnea+",    BBOCB(16,BOF,CBEQ,1,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDPA}},
5445 {"bnea",     BBOCB(16,BOF,CBEQ,1,0),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BDA}},
5446 {"bnela-",   BBOCB(16,BOF,CBEQ,1,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDMA}},
5447 {"bnela+",   BBOCB(16,BOF,CBEQ,1,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDPA}},
5448 {"bnela",    BBOCB(16,BOF,CBEQ,1,1),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BDA}},
5449 {"bns-",     BBOCB(16,BOF,CBSO,0,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDM}},
5450 {"bns+",     BBOCB(16,BOF,CBSO,0,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDP}},
5451 {"bns",      BBOCB(16,BOF,CBSO,0,0),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BD}},
5452 {"bnu-",     BBOCB(16,BOF,CBSO,0,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDM}},
5453 {"bnu+",     BBOCB(16,BOF,CBSO,0,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDP}},
5454 {"bnu",      BBOCB(16,BOF,CBSO,0,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BD}},
5455 {"bnsl-",    BBOCB(16,BOF,CBSO,0,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDM}},
5456 {"bnsl+",    BBOCB(16,BOF,CBSO,0,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDP}},
5457 {"bnsl",     BBOCB(16,BOF,CBSO,0,1),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BD}},
5458 {"bnul-",    BBOCB(16,BOF,CBSO,0,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDM}},
5459 {"bnul+",    BBOCB(16,BOF,CBSO,0,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDP}},
5460 {"bnul",     BBOCB(16,BOF,CBSO,0,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BD}},
5461 {"bnsa-",    BBOCB(16,BOF,CBSO,1,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDMA}},
5462 {"bnsa+",    BBOCB(16,BOF,CBSO,1,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDPA}},
5463 {"bnsa",     BBOCB(16,BOF,CBSO,1,0),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BDA}},
5464 {"bnua-",    BBOCB(16,BOF,CBSO,1,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDMA}},
5465 {"bnua+",    BBOCB(16,BOF,CBSO,1,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDPA}},
5466 {"bnua",     BBOCB(16,BOF,CBSO,1,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDA}},
5467 {"bnsla-",   BBOCB(16,BOF,CBSO,1,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDMA}},
5468 {"bnsla+",   BBOCB(16,BOF,CBSO,1,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDPA}},
5469 {"bnsla",    BBOCB(16,BOF,CBSO,1,1),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BDA}},
5470 {"bnula-",   BBOCB(16,BOF,CBSO,1,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDMA}},
5471 {"bnula+",   BBOCB(16,BOF,CBSO,1,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDPA}},
5472 {"bnula",    BBOCB(16,BOF,CBSO,1,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDA}},
5473
5474 {"blt-",     BBOCB(16,BOT,CBLT,0,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDM}},
5475 {"blt+",     BBOCB(16,BOT,CBLT,0,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDP}},
5476 {"blt",      BBOCB(16,BOT,CBLT,0,0),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BD}},
5477 {"bltl-",    BBOCB(16,BOT,CBLT,0,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDM}},
5478 {"bltl+",    BBOCB(16,BOT,CBLT,0,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDP}},
5479 {"bltl",     BBOCB(16,BOT,CBLT,0,1),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BD}},
5480 {"blta-",    BBOCB(16,BOT,CBLT,1,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDMA}},
5481 {"blta+",    BBOCB(16,BOT,CBLT,1,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDPA}},
5482 {"blta",     BBOCB(16,BOT,CBLT,1,0),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BDA}},
5483 {"bltla-",   BBOCB(16,BOT,CBLT,1,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDMA}},
5484 {"bltla+",   BBOCB(16,BOT,CBLT,1,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDPA}},
5485 {"bltla",    BBOCB(16,BOT,CBLT,1,1),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BDA}},
5486 {"bgt-",     BBOCB(16,BOT,CBGT,0,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDM}},
5487 {"bgt+",     BBOCB(16,BOT,CBGT,0,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDP}},
5488 {"bgt",      BBOCB(16,BOT,CBGT,0,0),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BD}},
5489 {"bgtl-",    BBOCB(16,BOT,CBGT,0,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDM}},
5490 {"bgtl+",    BBOCB(16,BOT,CBGT,0,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDP}},
5491 {"bgtl",     BBOCB(16,BOT,CBGT,0,1),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BD}},
5492 {"bgta-",    BBOCB(16,BOT,CBGT,1,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDMA}},
5493 {"bgta+",    BBOCB(16,BOT,CBGT,1,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDPA}},
5494 {"bgta",     BBOCB(16,BOT,CBGT,1,0),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BDA}},
5495 {"bgtla-",   BBOCB(16,BOT,CBGT,1,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDMA}},
5496 {"bgtla+",   BBOCB(16,BOT,CBGT,1,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDPA}},
5497 {"bgtla",    BBOCB(16,BOT,CBGT,1,1),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BDA}},
5498 {"beq-",     BBOCB(16,BOT,CBEQ,0,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDM}},
5499 {"beq+",     BBOCB(16,BOT,CBEQ,0,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDP}},
5500 {"beq",      BBOCB(16,BOT,CBEQ,0,0),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BD}},
5501 {"beql-",    BBOCB(16,BOT,CBEQ,0,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDM}},
5502 {"beql+",    BBOCB(16,BOT,CBEQ,0,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDP}},
5503 {"beql",     BBOCB(16,BOT,CBEQ,0,1),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BD}},
5504 {"beqa-",    BBOCB(16,BOT,CBEQ,1,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDMA}},
5505 {"beqa+",    BBOCB(16,BOT,CBEQ,1,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDPA}},
5506 {"beqa",     BBOCB(16,BOT,CBEQ,1,0),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BDA}},
5507 {"beqla-",   BBOCB(16,BOT,CBEQ,1,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDMA}},
5508 {"beqla+",   BBOCB(16,BOT,CBEQ,1,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDPA}},
5509 {"beqla",    BBOCB(16,BOT,CBEQ,1,1),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BDA}},
5510 {"bso-",     BBOCB(16,BOT,CBSO,0,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDM}},
5511 {"bso+",     BBOCB(16,BOT,CBSO,0,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDP}},
5512 {"bso",      BBOCB(16,BOT,CBSO,0,0),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BD}},
5513 {"bun-",     BBOCB(16,BOT,CBSO,0,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDM}},
5514 {"bun+",     BBOCB(16,BOT,CBSO,0,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDP}},
5515 {"bun",      BBOCB(16,BOT,CBSO,0,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BD}},
5516 {"bsol-",    BBOCB(16,BOT,CBSO,0,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDM}},
5517 {"bsol+",    BBOCB(16,BOT,CBSO,0,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDP}},
5518 {"bsol",     BBOCB(16,BOT,CBSO,0,1),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BD}},
5519 {"bunl-",    BBOCB(16,BOT,CBSO,0,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDM}},
5520 {"bunl+",    BBOCB(16,BOT,CBSO,0,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDP}},
5521 {"bunl",     BBOCB(16,BOT,CBSO,0,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BD}},
5522 {"bsoa-",    BBOCB(16,BOT,CBSO,1,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDMA}},
5523 {"bsoa+",    BBOCB(16,BOT,CBSO,1,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDPA}},
5524 {"bsoa",     BBOCB(16,BOT,CBSO,1,0),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BDA}},
5525 {"buna-",    BBOCB(16,BOT,CBSO,1,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDMA}},
5526 {"buna+",    BBOCB(16,BOT,CBSO,1,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDPA}},
5527 {"buna",     BBOCB(16,BOT,CBSO,1,0),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDA}},
5528 {"bsola-",   BBOCB(16,BOT,CBSO,1,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDMA}},
5529 {"bsola+",   BBOCB(16,BOT,CBSO,1,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDPA}},
5530 {"bsola",    BBOCB(16,BOT,CBSO,1,1),    BBOATCB_MASK,  COM,      PPCVLE,        {CR, BDA}},
5531 {"bunla-",   BBOCB(16,BOT,CBSO,1,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDMA}},
5532 {"bunla+",   BBOCB(16,BOT,CBSO,1,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDPA}},
5533 {"bunla",    BBOCB(16,BOT,CBSO,1,1),    BBOATCB_MASK,  PPCCOM,   PPCVLE,        {CR, BDA}},
5534
5535 {"bdnzf-",   BBO(16,BODNZF,0,0),        BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDM}},
5536 {"bdnzf+",   BBO(16,BODNZF,0,0),        BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDP}},
5537 {"bdnzf",    BBO(16,BODNZF,0,0),        BBOY_MASK,     PPCCOM,   PPCVLE,        {BI, BD}},
5538 {"bdnzfl-",  BBO(16,BODNZF,0,1),        BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDM}},
5539 {"bdnzfl+",  BBO(16,BODNZF,0,1),        BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDP}},
5540 {"bdnzfl",   BBO(16,BODNZF,0,1),        BBOY_MASK,     PPCCOM,   PPCVLE,        {BI, BD}},
5541 {"bdnzfa-",  BBO(16,BODNZF,1,0),        BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDMA}},
5542 {"bdnzfa+",  BBO(16,BODNZF,1,0),        BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDPA}},
5543 {"bdnzfa",   BBO(16,BODNZF,1,0),        BBOY_MASK,     PPCCOM,   PPCVLE,        {BI, BDA}},
5544 {"bdnzfla-", BBO(16,BODNZF,1,1),        BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDMA}},
5545 {"bdnzfla+", BBO(16,BODNZF,1,1),        BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDPA}},
5546 {"bdnzfla",  BBO(16,BODNZF,1,1),        BBOY_MASK,     PPCCOM,   PPCVLE,        {BI, BDA}},
5547 {"bdzf-",    BBO(16,BODZF,0,0),         BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDM}},
5548 {"bdzf+",    BBO(16,BODZF,0,0),         BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDP}},
5549 {"bdzf",     BBO(16,BODZF,0,0),         BBOY_MASK,     PPCCOM,   PPCVLE,        {BI, BD}},
5550 {"bdzfl-",   BBO(16,BODZF,0,1),         BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDM}},
5551 {"bdzfl+",   BBO(16,BODZF,0,1),         BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDP}},
5552 {"bdzfl",    BBO(16,BODZF,0,1),         BBOY_MASK,     PPCCOM,   PPCVLE,        {BI, BD}},
5553 {"bdzfa-",   BBO(16,BODZF,1,0),         BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDMA}},
5554 {"bdzfa+",   BBO(16,BODZF,1,0),         BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDPA}},
5555 {"bdzfa",    BBO(16,BODZF,1,0),         BBOY_MASK,     PPCCOM,   PPCVLE,        {BI, BDA}},
5556 {"bdzfla-",  BBO(16,BODZF,1,1),         BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDMA}},
5557 {"bdzfla+",  BBO(16,BODZF,1,1),         BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDPA}},
5558 {"bdzfla",   BBO(16,BODZF,1,1),         BBOY_MASK,     PPCCOM,   PPCVLE,        {BI, BDA}},
5559
5560 {"bf-",      BBO(16,BOF,0,0),           BBOAT_MASK,    PPCCOM,   PPCVLE,        {BI, BDM}},
5561 {"bf+",      BBO(16,BOF,0,0),           BBOAT_MASK,    PPCCOM,   PPCVLE,        {BI, BDP}},
5562 {"bf",       BBO(16,BOF,0,0),           BBOAT_MASK,    PPCCOM,   PPCVLE,        {BI, BD}},
5563 {"bbf",      BBO(16,BOF,0,0),           BBOAT_MASK,    PWRCOM,   PPCVLE,        {BI, BD}},
5564 {"bfl-",     BBO(16,BOF,0,1),           BBOAT_MASK,    PPCCOM,   PPCVLE,        {BI, BDM}},
5565 {"bfl+",     BBO(16,BOF,0,1),           BBOAT_MASK,    PPCCOM,   PPCVLE,        {BI, BDP}},
5566 {"bfl",      BBO(16,BOF,0,1),           BBOAT_MASK,    PPCCOM,   PPCVLE,        {BI, BD}},
5567 {"bbfl",     BBO(16,BOF,0,1),           BBOAT_MASK,    PWRCOM,   PPCVLE,        {BI, BD}},
5568 {"bfa-",     BBO(16,BOF,1,0),           BBOAT_MASK,    PPCCOM,   PPCVLE,        {BI, BDMA}},
5569 {"bfa+",     BBO(16,BOF,1,0),           BBOAT_MASK,    PPCCOM,   PPCVLE,        {BI, BDPA}},
5570 {"bfa",      BBO(16,BOF,1,0),           BBOAT_MASK,    PPCCOM,   PPCVLE,        {BI, BDA}},
5571 {"bbfa",     BBO(16,BOF,1,0),           BBOAT_MASK,    PWRCOM,   PPCVLE,        {BI, BDA}},
5572 {"bfla-",    BBO(16,BOF,1,1),           BBOAT_MASK,    PPCCOM,   PPCVLE,        {BI, BDMA}},
5573 {"bfla+",    BBO(16,BOF,1,1),           BBOAT_MASK,    PPCCOM,   PPCVLE,        {BI, BDPA}},
5574 {"bfla",     BBO(16,BOF,1,1),           BBOAT_MASK,    PPCCOM,   PPCVLE,        {BI, BDA}},
5575 {"bbfla",    BBO(16,BOF,1,1),           BBOAT_MASK,    PWRCOM,   PPCVLE,        {BI, BDA}},
5576
5577 {"bdnzt-",   BBO(16,BODNZT,0,0),        BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDM}},
5578 {"bdnzt+",   BBO(16,BODNZT,0,0),        BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDP}},
5579 {"bdnzt",    BBO(16,BODNZT,0,0),        BBOY_MASK,     PPCCOM,   PPCVLE,        {BI, BD}},
5580 {"bdnztl-",  BBO(16,BODNZT,0,1),        BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDM}},
5581 {"bdnztl+",  BBO(16,BODNZT,0,1),        BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDP}},
5582 {"bdnztl",   BBO(16,BODNZT,0,1),        BBOY_MASK,     PPCCOM,   PPCVLE,        {BI, BD}},
5583 {"bdnzta-",  BBO(16,BODNZT,1,0),        BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDMA}},
5584 {"bdnzta+",  BBO(16,BODNZT,1,0),        BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDPA}},
5585 {"bdnzta",   BBO(16,BODNZT,1,0),        BBOY_MASK,     PPCCOM,   PPCVLE,        {BI, BDA}},
5586 {"bdnztla-", BBO(16,BODNZT,1,1),        BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDMA}},
5587 {"bdnztla+", BBO(16,BODNZT,1,1),        BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDPA}},
5588 {"bdnztla",  BBO(16,BODNZT,1,1),        BBOY_MASK,     PPCCOM,   PPCVLE,        {BI, BDA}},
5589 {"bdzt-",    BBO(16,BODZT,0,0),         BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDM}},
5590 {"bdzt+",    BBO(16,BODZT,0,0),         BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDP}},
5591 {"bdzt",     BBO(16,BODZT,0,0),         BBOY_MASK,     PPCCOM,   PPCVLE,        {BI, BD}},
5592 {"bdztl-",   BBO(16,BODZT,0,1),         BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDM}},
5593 {"bdztl+",   BBO(16,BODZT,0,1),         BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDP}},
5594 {"bdztl",    BBO(16,BODZT,0,1),         BBOY_MASK,     PPCCOM,   PPCVLE,        {BI, BD}},
5595 {"bdzta-",   BBO(16,BODZT,1,0),         BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDMA}},
5596 {"bdzta+",   BBO(16,BODZT,1,0),         BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDPA}},
5597 {"bdzta",    BBO(16,BODZT,1,0),         BBOY_MASK,     PPCCOM,   PPCVLE,        {BI, BDA}},
5598 {"bdztla-",  BBO(16,BODZT,1,1),         BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDMA}},
5599 {"bdztla+",  BBO(16,BODZT,1,1),         BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE, {BI, BDPA}},
5600 {"bdztla",   BBO(16,BODZT,1,1),         BBOY_MASK,     PPCCOM,   PPCVLE,        {BI, BDA}},
5601
5602 {"bt-",      BBO(16,BOT,0,0),           BBOAT_MASK,    PPCCOM,   PPCVLE,        {BI, BDM}},
5603 {"bt+",      BBO(16,BOT,0,0),           BBOAT_MASK,    PPCCOM,   PPCVLE,        {BI, BDP}},
5604 {"bt",       BBO(16,BOT,0,0),           BBOAT_MASK,    PPCCOM,   PPCVLE,        {BI, BD}},
5605 {"bbt",      BBO(16,BOT,0,0),           BBOAT_MASK,    PWRCOM,   PPCVLE,        {BI, BD}},
5606 {"btl-",     BBO(16,BOT,0,1),           BBOAT_MASK,    PPCCOM,   PPCVLE,        {BI, BDM}},
5607 {"btl+",     BBO(16,BOT,0,1),           BBOAT_MASK,    PPCCOM,   PPCVLE,        {BI, BDP}},
5608 {"btl",      BBO(16,BOT,0,1),           BBOAT_MASK,    PPCCOM,   PPCVLE,        {BI, BD}},
5609 {"bbtl",     BBO(16,BOT,0,1),           BBOAT_MASK,    PWRCOM,   PPCVLE,        {BI, BD}},
5610 {"bta-",     BBO(16,BOT,1,0),           BBOAT_MASK,    PPCCOM,   PPCVLE,        {BI, BDMA}},
5611 {"bta+",     BBO(16,BOT,1,0),           BBOAT_MASK,    PPCCOM,   PPCVLE,        {BI, BDPA}},
5612 {"bta",      BBO(16,BOT,1,0),           BBOAT_MASK,    PPCCOM,   PPCVLE,        {BI, BDA}},
5613 {"bbta",     BBO(16,BOT,1,0),           BBOAT_MASK,    PWRCOM,   PPCVLE,        {BI, BDA}},
5614 {"btla-",    BBO(16,BOT,1,1),           BBOAT_MASK,    PPCCOM,   PPCVLE,        {BI, BDMA}},
5615 {"btla+",    BBO(16,BOT,1,1),           BBOAT_MASK,    PPCCOM,   PPCVLE,        {BI, BDPA}},
5616 {"btla",     BBO(16,BOT,1,1),           BBOAT_MASK,    PPCCOM,   PPCVLE,        {BI, BDA}},
5617 {"bbtla",    BBO(16,BOT,1,1),           BBOAT_MASK,    PWRCOM,   PPCVLE,        {BI, BDA}},
5618
5619 {"bc-",         B(16,0,0),      B_MASK,      PPCCOM,    PPCVLE,         {BOM, BI, BDM}},
5620 {"bc+",         B(16,0,0),      B_MASK,      PPCCOM,    PPCVLE,         {BOP, BI, BDP}},
5621 {"bc",          B(16,0,0),      B_MASK,      COM,       PPCVLE,         {BO, BI, BD}},
5622 {"bcl-",        B(16,0,1),      B_MASK,      PPCCOM,    PPCVLE,         {BOM, BI, BDM}},
5623 {"bcl+",        B(16,0,1),      B_MASK,      PPCCOM,    PPCVLE,         {BOP, BI, BDP}},
5624 {"bcl",         B(16,0,1),      B_MASK,      COM,       PPCVLE,         {BO, BI, BD}},
5625 {"bca-",        B(16,1,0),      B_MASK,      PPCCOM,    PPCVLE,         {BOM, BI, BDMA}},
5626 {"bca+",        B(16,1,0),      B_MASK,      PPCCOM,    PPCVLE,         {BOP, BI, BDPA}},
5627 {"bca",         B(16,1,0),      B_MASK,      COM,       PPCVLE,         {BO, BI, BDA}},
5628 {"bcla-",       B(16,1,1),      B_MASK,      PPCCOM,    PPCVLE,         {BOM, BI, BDMA}},
5629 {"bcla+",       B(16,1,1),      B_MASK,      PPCCOM,    PPCVLE,         {BOP, BI, BDPA}},
5630 {"bcla",        B(16,1,1),      B_MASK,      COM,       PPCVLE,         {BO, BI, BDA}},
5631
5632 {"svc",         SC(17,0,0),     SC_MASK,     POWER,     PPCVLE,         {SVC_LEV, FL1, FL2}},
5633 {"scv",         SC(17,0,1),     SC_MASK,     POWER9,    PPCVLE,         {SVC_LEV}},
5634 {"svcl",        SC(17,0,1),     SC_MASK,     POWER,     PPCVLE,         {SVC_LEV, FL1, FL2}},
5635 {"sc",          SC(17,1,0),     SC_MASK,     PPC,       PPCVLE,         {LEV}},
5636 {"svca",        SC(17,1,0),     SC_MASK,     PWRCOM,    PPCVLE,         {SV}},
5637 {"svcla",       SC(17,1,1),     SC_MASK,     POWER,     PPCVLE,         {SV}},
5638
5639 {"b",           B(18,0,0),      B_MASK,      COM,       PPCVLE,         {LI}},
5640 {"bl",          B(18,0,1),      B_MASK,      COM,       PPCVLE,         {LI}},
5641 {"ba",          B(18,1,0),      B_MASK,      COM,       PPCVLE,         {LIA}},
5642 {"bla",         B(18,1,1),      B_MASK,      COM,       PPCVLE,         {LIA}},
5643
5644 {"mcrf",     XL(19,0), XLBB_MASK|(3<<21)|(3<<16), COM,  PPCVLE,         {BF, BFA}},
5645
5646 {"lnia",     DX(19,2),          NODX_MASK,   POWER9,    PPCVLE,         {RT}},
5647 {"addpcis",  DX(19,2),          DX_MASK,     POWER9,    PPCVLE,         {RT, DXD}},
5648 {"subpcis",  DX(19,2),          DX_MASK,     POWER9,    PPCVLE,         {RT, NDXD}},
5649
5650 {"bdnzlr-",  XLO(19,BODNZ,16,0),        XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {BH}},
5651 {"bdnzlr+",  XLO(19,BODNZP,16,0),       XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {BH}},
5652 {"bdnzlr",   XLO(19,BODNZ,16,0),        XLBOBIBB_MASK, PPCCOM,   PPCVLE,        {BH}},
5653 {"bdnzlrl-", XLO(19,BODNZ,16,1),        XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {BH}},
5654 {"bdnzlrl+", XLO(19,BODNZP,16,1),       XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {BH}},
5655 {"bdnzlrl",  XLO(19,BODNZ,16,1),        XLBOBIBB_MASK, PPCCOM,   PPCVLE,        {BH}},
5656 {"bdzlr-",   XLO(19,BODZ,16,0),         XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {BH}},
5657 {"bdzlr+",   XLO(19,BODZP,16,0),        XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {BH}},
5658 {"bdzlr",    XLO(19,BODZ,16,0),         XLBOBIBB_MASK, PPCCOM,   PPCVLE,        {BH}},
5659 {"bdzlrl-",  XLO(19,BODZ,16,1),         XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {BH}},
5660 {"bdzlrl+",  XLO(19,BODZP,16,1),        XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {BH}},
5661 {"bdzlrl",   XLO(19,BODZ,16,1),         XLBOBIBB_MASK, PPCCOM,   PPCVLE,        {BH}},
5662 {"blr",      XLO(19,BOU,16,0),          XLBOBIBB_MASK, PPCCOM,   PPCVLE,        {BH}},
5663 {"br",       XLO(19,BOU,16,0),          XLBOBIBB_MASK, PWRCOM,   PPCVLE,        {BH}},
5664 {"blrl",     XLO(19,BOU,16,1),          XLBOBIBB_MASK, PPCCOM,   PPCVLE,        {BH}},
5665 {"brl",      XLO(19,BOU,16,1),          XLBOBIBB_MASK, PWRCOM,   PPCVLE,        {BH}},
5666 {"bdnzlr-",  XLO(19,BODNZM4,16,0),      XLBOBIBB_MASK, ISA_V2,   PPCVLE,        {BH}},
5667 {"bdnzlrl-", XLO(19,BODNZM4,16,1),      XLBOBIBB_MASK, ISA_V2,   PPCVLE,        {BH}},
5668 {"bdnzlr+",  XLO(19,BODNZP4,16,0),      XLBOBIBB_MASK, ISA_V2,   PPCVLE,        {BH}},
5669 {"bdnzlrl+", XLO(19,BODNZP4,16,1),      XLBOBIBB_MASK, ISA_V2,   PPCVLE,        {BH}},
5670 {"bdzlr-",   XLO(19,BODZM4,16,0),       XLBOBIBB_MASK, ISA_V2,   PPCVLE,        {BH}},
5671 {"bdzlrl-",  XLO(19,BODZM4,16,1),       XLBOBIBB_MASK, ISA_V2,   PPCVLE,        {BH}},
5672 {"bdzlr+",   XLO(19,BODZP4,16,0),       XLBOBIBB_MASK, ISA_V2,   PPCVLE,        {BH}},
5673 {"bdzlrl+",  XLO(19,BODZP4,16,1),       XLBOBIBB_MASK, ISA_V2,   PPCVLE,        {BH}},
5674
5675 {"bgelr-",   XLOCB(19,BOF,CBLT,16,0),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5676 {"bgelr+",   XLOCB(19,BOFP,CBLT,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5677 {"bgelr",    XLOCB(19,BOF,CBLT,16,0),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5678 {"bger",     XLOCB(19,BOF,CBLT,16,0),   XLBOCBBB_MASK, PWRCOM,   PPCVLE,        {CR, BH}},
5679 {"bnllr-",   XLOCB(19,BOF,CBLT,16,0),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5680 {"bnllr+",   XLOCB(19,BOFP,CBLT,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5681 {"bnllr",    XLOCB(19,BOF,CBLT,16,0),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5682 {"bnlr",     XLOCB(19,BOF,CBLT,16,0),   XLBOCBBB_MASK, PWRCOM,   PPCVLE,        {CR, BH}},
5683 {"bgelrl-",  XLOCB(19,BOF,CBLT,16,1),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5684 {"bgelrl+",  XLOCB(19,BOFP,CBLT,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5685 {"bgelrl",   XLOCB(19,BOF,CBLT,16,1),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5686 {"bgerl",    XLOCB(19,BOF,CBLT,16,1),   XLBOCBBB_MASK, PWRCOM,   PPCVLE,        {CR, BH}},
5687 {"bnllrl-",  XLOCB(19,BOF,CBLT,16,1),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5688 {"bnllrl+",  XLOCB(19,BOFP,CBLT,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5689 {"bnllrl",   XLOCB(19,BOF,CBLT,16,1),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5690 {"bnlrl",    XLOCB(19,BOF,CBLT,16,1),   XLBOCBBB_MASK, PWRCOM,   PPCVLE,        {CR, BH}},
5691 {"blelr-",   XLOCB(19,BOF,CBGT,16,0),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5692 {"blelr+",   XLOCB(19,BOFP,CBGT,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5693 {"blelr",    XLOCB(19,BOF,CBGT,16,0),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5694 {"bler",     XLOCB(19,BOF,CBGT,16,0),   XLBOCBBB_MASK, PWRCOM,   PPCVLE,        {CR, BH}},
5695 {"bnglr-",   XLOCB(19,BOF,CBGT,16,0),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5696 {"bnglr+",   XLOCB(19,BOFP,CBGT,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5697 {"bnglr",    XLOCB(19,BOF,CBGT,16,0),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5698 {"bngr",     XLOCB(19,BOF,CBGT,16,0),   XLBOCBBB_MASK, PWRCOM,   PPCVLE,        {CR, BH}},
5699 {"blelrl-",  XLOCB(19,BOF,CBGT,16,1),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5700 {"blelrl+",  XLOCB(19,BOFP,CBGT,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5701 {"blelrl",   XLOCB(19,BOF,CBGT,16,1),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5702 {"blerl",    XLOCB(19,BOF,CBGT,16,1),   XLBOCBBB_MASK, PWRCOM,   PPCVLE,        {CR, BH}},
5703 {"bnglrl-",  XLOCB(19,BOF,CBGT,16,1),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5704 {"bnglrl+",  XLOCB(19,BOFP,CBGT,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5705 {"bnglrl",   XLOCB(19,BOF,CBGT,16,1),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5706 {"bngrl",    XLOCB(19,BOF,CBGT,16,1),   XLBOCBBB_MASK, PWRCOM,   PPCVLE,        {CR, BH}},
5707 {"bnelr-",   XLOCB(19,BOF,CBEQ,16,0),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5708 {"bnelr+",   XLOCB(19,BOFP,CBEQ,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5709 {"bnelr",    XLOCB(19,BOF,CBEQ,16,0),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5710 {"bner",     XLOCB(19,BOF,CBEQ,16,0),   XLBOCBBB_MASK, PWRCOM,   PPCVLE,        {CR, BH}},
5711 {"bnelrl-",  XLOCB(19,BOF,CBEQ,16,1),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5712 {"bnelrl+",  XLOCB(19,BOFP,CBEQ,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5713 {"bnelrl",   XLOCB(19,BOF,CBEQ,16,1),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5714 {"bnerl",    XLOCB(19,BOF,CBEQ,16,1),   XLBOCBBB_MASK, PWRCOM,   PPCVLE,        {CR, BH}},
5715 {"bnslr-",   XLOCB(19,BOF,CBSO,16,0),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5716 {"bnslr+",   XLOCB(19,BOFP,CBSO,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5717 {"bnslr",    XLOCB(19,BOF,CBSO,16,0),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5718 {"bnsr",     XLOCB(19,BOF,CBSO,16,0),   XLBOCBBB_MASK, PWRCOM,   PPCVLE,        {CR, BH}},
5719 {"bnulr-",   XLOCB(19,BOF,CBSO,16,0),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5720 {"bnulr+",   XLOCB(19,BOFP,CBSO,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5721 {"bnulr",    XLOCB(19,BOF,CBSO,16,0),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5722 {"bnslrl-",  XLOCB(19,BOF,CBSO,16,1),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5723 {"bnslrl+",  XLOCB(19,BOFP,CBSO,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5724 {"bnslrl",   XLOCB(19,BOF,CBSO,16,1),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5725 {"bnsrl",    XLOCB(19,BOF,CBSO,16,1),   XLBOCBBB_MASK, PWRCOM,   PPCVLE,        {CR, BH}},
5726 {"bnulrl-",  XLOCB(19,BOF,CBSO,16,1),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5727 {"bnulrl+",  XLOCB(19,BOFP,CBSO,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5728 {"bnulrl",   XLOCB(19,BOF,CBSO,16,1),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5729 {"bgelr-",   XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5730 {"bnllr-",   XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5731 {"bgelrl-",  XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5732 {"bnllrl-",  XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5733 {"blelr-",   XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5734 {"bnglr-",   XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5735 {"blelrl-",  XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5736 {"bnglrl-",  XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5737 {"bnelr-",   XLOCB(19,BOFM4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5738 {"bnelrl-",  XLOCB(19,BOFM4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5739 {"bnslr-",   XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5740 {"bnulr-",   XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5741 {"bnslrl-",  XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5742 {"bnulrl-",  XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5743 {"bgelr+",   XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5744 {"bnllr+",   XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5745 {"bgelrl+",  XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5746 {"bnllrl+",  XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5747 {"blelr+",   XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5748 {"bnglr+",   XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5749 {"blelrl+",  XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5750 {"bnglrl+",  XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5751 {"bnelr+",   XLOCB(19,BOFP4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5752 {"bnelrl+",  XLOCB(19,BOFP4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5753 {"bnslr+",   XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5754 {"bnulr+",   XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5755 {"bnslrl+",  XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5756 {"bnulrl+",  XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5757 {"bltlr-",   XLOCB(19,BOT,CBLT,16,0),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5758 {"bltlr+",   XLOCB(19,BOTP,CBLT,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5759 {"bltlr",    XLOCB(19,BOT,CBLT,16,0),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5760 {"bltr",     XLOCB(19,BOT,CBLT,16,0),   XLBOCBBB_MASK, PWRCOM,   PPCVLE,        {CR, BH}},
5761 {"bltlrl-",  XLOCB(19,BOT,CBLT,16,1),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5762 {"bltlrl+",  XLOCB(19,BOTP,CBLT,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5763 {"bltlrl",   XLOCB(19,BOT,CBLT,16,1),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5764 {"bltrl",    XLOCB(19,BOT,CBLT,16,1),   XLBOCBBB_MASK, PWRCOM,   PPCVLE,        {CR, BH}},
5765 {"bgtlr-",   XLOCB(19,BOT,CBGT,16,0),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5766 {"bgtlr+",   XLOCB(19,BOTP,CBGT,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5767 {"bgtlr",    XLOCB(19,BOT,CBGT,16,0),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5768 {"bgtr",     XLOCB(19,BOT,CBGT,16,0),   XLBOCBBB_MASK, PWRCOM,   PPCVLE,        {CR, BH}},
5769 {"bgtlrl-",  XLOCB(19,BOT,CBGT,16,1),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5770 {"bgtlrl+",  XLOCB(19,BOTP,CBGT,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5771 {"bgtlrl",   XLOCB(19,BOT,CBGT,16,1),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5772 {"bgtrl",    XLOCB(19,BOT,CBGT,16,1),   XLBOCBBB_MASK, PWRCOM,   PPCVLE,        {CR, BH}},
5773 {"beqlr-",   XLOCB(19,BOT,CBEQ,16,0),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5774 {"beqlr+",   XLOCB(19,BOTP,CBEQ,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5775 {"beqlr",    XLOCB(19,BOT,CBEQ,16,0),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5776 {"beqr",     XLOCB(19,BOT,CBEQ,16,0),   XLBOCBBB_MASK, PWRCOM,   PPCVLE,        {CR, BH}},
5777 {"beqlrl-",  XLOCB(19,BOT,CBEQ,16,1),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5778 {"beqlrl+",  XLOCB(19,BOTP,CBEQ,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5779 {"beqlrl",   XLOCB(19,BOT,CBEQ,16,1),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5780 {"beqrl",    XLOCB(19,BOT,CBEQ,16,1),   XLBOCBBB_MASK, PWRCOM,   PPCVLE,        {CR, BH}},
5781 {"bsolr-",   XLOCB(19,BOT,CBSO,16,0),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5782 {"bsolr+",   XLOCB(19,BOTP,CBSO,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5783 {"bsolr",    XLOCB(19,BOT,CBSO,16,0),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5784 {"bsor",     XLOCB(19,BOT,CBSO,16,0),   XLBOCBBB_MASK, PWRCOM,   PPCVLE,        {CR, BH}},
5785 {"bunlr-",   XLOCB(19,BOT,CBSO,16,0),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5786 {"bunlr+",   XLOCB(19,BOTP,CBSO,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5787 {"bunlr",    XLOCB(19,BOT,CBSO,16,0),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5788 {"bsolrl-",  XLOCB(19,BOT,CBSO,16,1),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5789 {"bsolrl+",  XLOCB(19,BOTP,CBSO,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5790 {"bsolrl",   XLOCB(19,BOT,CBSO,16,1),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5791 {"bsorl",    XLOCB(19,BOT,CBSO,16,1),   XLBOCBBB_MASK, PWRCOM,   PPCVLE,        {CR, BH}},
5792 {"bunlrl-",  XLOCB(19,BOT,CBSO,16,1),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5793 {"bunlrl+",  XLOCB(19,BOTP,CBSO,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5794 {"bunlrl",   XLOCB(19,BOT,CBSO,16,1),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5795 {"bltlr-",   XLOCB(19,BOTM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5796 {"bltlrl-",  XLOCB(19,BOTM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5797 {"bgtlr-",   XLOCB(19,BOTM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5798 {"bgtlrl-",  XLOCB(19,BOTM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5799 {"beqlr-",   XLOCB(19,BOTM4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5800 {"beqlrl-",  XLOCB(19,BOTM4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5801 {"bsolr-",   XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5802 {"bunlr-",   XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5803 {"bsolrl-",  XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5804 {"bunlrl-",  XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5805 {"bltlr+",   XLOCB(19,BOTP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5806 {"bltlrl+",  XLOCB(19,BOTP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5807 {"bgtlr+",   XLOCB(19,BOTP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5808 {"bgtlrl+",  XLOCB(19,BOTP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5809 {"beqlr+",   XLOCB(19,BOTP4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5810 {"beqlrl+",  XLOCB(19,BOTP4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5811 {"bsolr+",   XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5812 {"bunlr+",   XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5813 {"bsolrl+",  XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5814 {"bunlrl+",  XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5815
5816 {"bdnzflr-", XLO(19,BODNZF,16,0),       XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
5817 {"bdnzflr+", XLO(19,BODNZFP,16,0),      XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
5818 {"bdnzflr",  XLO(19,BODNZF,16,0),       XLBOBB_MASK,   PPCCOM,   PPCVLE,        {BI, BH}},
5819 {"bdnzflrl-",XLO(19,BODNZF,16,1),       XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
5820 {"bdnzflrl+",XLO(19,BODNZFP,16,1),      XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
5821 {"bdnzflrl", XLO(19,BODNZF,16,1),       XLBOBB_MASK,   PPCCOM,   PPCVLE,        {BI, BH}},
5822 {"bdzflr-",  XLO(19,BODZF,16,0),        XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
5823 {"bdzflr+",  XLO(19,BODZFP,16,0),       XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
5824 {"bdzflr",   XLO(19,BODZF,16,0),        XLBOBB_MASK,   PPCCOM,   PPCVLE,        {BI, BH}},
5825 {"bdzflrl-", XLO(19,BODZF,16,1),        XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
5826 {"bdzflrl+", XLO(19,BODZFP,16,1),       XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
5827 {"bdzflrl",  XLO(19,BODZF,16,1),        XLBOBB_MASK,   PPCCOM,   PPCVLE,        {BI, BH}},
5828 {"bflr-",    XLO(19,BOF,16,0),          XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
5829 {"bflr+",    XLO(19,BOFP,16,0),         XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
5830 {"bflr",     XLO(19,BOF,16,0),          XLBOBB_MASK,   PPCCOM,   PPCVLE,        {BI, BH}},
5831 {"bbfr",     XLO(19,BOF,16,0),          XLBOBB_MASK,   PWRCOM,   PPCVLE,        {BI, BH}},
5832 {"bflrl-",   XLO(19,BOF,16,1),          XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
5833 {"bflrl+",   XLO(19,BOFP,16,1),         XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
5834 {"bflrl",    XLO(19,BOF,16,1),          XLBOBB_MASK,   PPCCOM,   PPCVLE,        {BI, BH}},
5835 {"bbfrl",    XLO(19,BOF,16,1),          XLBOBB_MASK,   PWRCOM,   PPCVLE,        {BI, BH}},
5836 {"bflr-",    XLO(19,BOFM4,16,0),        XLBOBB_MASK,   ISA_V2,   PPCVLE,        {BI, BH}},
5837 {"bflrl-",   XLO(19,BOFM4,16,1),        XLBOBB_MASK,   ISA_V2,   PPCVLE,        {BI, BH}},
5838 {"bflr+",    XLO(19,BOFP4,16,0),        XLBOBB_MASK,   ISA_V2,   PPCVLE,        {BI, BH}},
5839 {"bflrl+",   XLO(19,BOFP4,16,1),        XLBOBB_MASK,   ISA_V2,   PPCVLE,        {BI, BH}},
5840 {"bdnztlr-", XLO(19,BODNZT,16,0),       XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
5841 {"bdnztlr+", XLO(19,BODNZTP,16,0),      XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
5842 {"bdnztlr",  XLO(19,BODNZT,16,0),       XLBOBB_MASK,   PPCCOM,   PPCVLE,        {BI, BH}},
5843 {"bdnztlrl-", XLO(19,BODNZT,16,1),      XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
5844 {"bdnztlrl+", XLO(19,BODNZTP,16,1),     XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
5845 {"bdnztlrl", XLO(19,BODNZT,16,1),       XLBOBB_MASK,   PPCCOM,   PPCVLE,        {BI, BH}},
5846 {"bdztlr-",  XLO(19,BODZT,16,0),        XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
5847 {"bdztlr+",  XLO(19,BODZTP,16,0),       XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
5848 {"bdztlr",   XLO(19,BODZT,16,0),        XLBOBB_MASK,   PPCCOM,   PPCVLE,        {BI, BH}},
5849 {"bdztlrl-", XLO(19,BODZT,16,1),        XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
5850 {"bdztlrl+", XLO(19,BODZTP,16,1),       XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
5851 {"bdztlrl",  XLO(19,BODZT,16,1),        XLBOBB_MASK,   PPCCOM,   PPCVLE,        {BI, BH}},
5852 {"btlr-",    XLO(19,BOT,16,0),          XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
5853 {"btlr+",    XLO(19,BOTP,16,0),         XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
5854 {"btlr",     XLO(19,BOT,16,0),          XLBOBB_MASK,   PPCCOM,   PPCVLE,        {BI, BH}},
5855 {"bbtr",     XLO(19,BOT,16,0),          XLBOBB_MASK,   PWRCOM,   PPCVLE,        {BI, BH}},
5856 {"btlrl-",   XLO(19,BOT,16,1),          XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
5857 {"btlrl+",   XLO(19,BOTP,16,1),         XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
5858 {"btlrl",    XLO(19,BOT,16,1),          XLBOBB_MASK,   PPCCOM,   PPCVLE,        {BI, BH}},
5859 {"bbtrl",    XLO(19,BOT,16,1),          XLBOBB_MASK,   PWRCOM,   PPCVLE,        {BI, BH}},
5860 {"btlr-",    XLO(19,BOTM4,16,0),        XLBOBB_MASK,   ISA_V2,   PPCVLE,        {BI, BH}},
5861 {"btlrl-",   XLO(19,BOTM4,16,1),        XLBOBB_MASK,   ISA_V2,   PPCVLE,        {BI, BH}},
5862 {"btlr+",    XLO(19,BOTP4,16,0),        XLBOBB_MASK,   ISA_V2,   PPCVLE,        {BI, BH}},
5863 {"btlrl+",   XLO(19,BOTP4,16,1),        XLBOBB_MASK,   ISA_V2,   PPCVLE,        {BI, BH}},
5864
5865 {"bclr-",    XLLK(19,16,0),             XLBH_MASK,     PPCCOM,   PPCVLE,        {BOM, BI, BH}},
5866 {"bclr+",    XLLK(19,16,0),             XLBH_MASK,     PPCCOM,   PPCVLE,        {BOP, BI, BH}},
5867 {"bclr",     XLLK(19,16,0),             XLBH_MASK,     PPCCOM,   PPCVLE,        {BO, BI, BH}},
5868 {"bcr",      XLLK(19,16,0),             XLBH_MASK,     PWRCOM,   PPCVLE,        {BO, BI, BH}},
5869 {"bclrl-",   XLLK(19,16,1),             XLBH_MASK,     PPCCOM,   PPCVLE,        {BOM, BI, BH}},
5870 {"bclrl+",   XLLK(19,16,1),             XLBH_MASK,     PPCCOM,   PPCVLE,        {BOP, BI, BH}},
5871 {"bclrl",    XLLK(19,16,1),             XLBH_MASK,     PPCCOM,   PPCVLE,        {BO, BI, BH}},
5872 {"bcrl",     XLLK(19,16,1),             XLBH_MASK,     PWRCOM,   PPCVLE,        {BO, BI, BH}},
5873
5874 {"rfid",        XL(19,18),      0xffffffff,  PPC64,     PPCVLE, {0}},
5875
5876 {"crnot",       XL(19,33),      XL_MASK,     PPCCOM,    PPCVLE,         {BT, BAB}},
5877 {"crnor",       XL(19,33),      XL_MASK,     COM,       PPCVLE,         {BT, BA, BB}},
5878 {"rfmci",       X(19,38),    0xffffffff, PPCRFMCI|PPCA2|PPC476, PPCVLE, {0}},
5879
5880 {"rfdi",        XL(19,39),      0xffffffff,  E500MC,    PPCVLE,         {0}},
5881 {"rfi",         XL(19,50),      0xffffffff,  COM,       PPCVLE,         {0}},
5882 {"rfci",        XL(19,51), 0xffffffff, PPC403|BOOKE|PPCE300|PPCA2|PPC476, PPCVLE, {0}},
5883
5884 {"rfscv",       XL(19,82),      0xffffffff,  POWER9,    PPCVLE,         {0}},
5885 {"rfsvc",       XL(19,82),      0xffffffff,  POWER,     PPCVLE,         {0}},
5886
5887 {"rfgi",        XL(19,102),   0xffffffff, E500MC|PPCA2, PPCVLE,         {0}},
5888
5889 {"crandc",      XL(19,129),     XL_MASK,     COM,       PPCVLE,         {BT, BA, BB}},
5890
5891 {"rfebb",       XL(19,146),     XLS_MASK,    POWER8,    PPCVLE,         {SXL}},
5892
5893 {"isync",       XL(19,150),     0xffffffff,  PPCCOM,    PPCVLE,         {0}},
5894 {"ics",         XL(19,150),     0xffffffff,  PWRCOM,    PPCVLE,         {0}},
5895
5896 {"crclr",       XL(19,193),     XL_MASK,     PPCCOM,    PPCVLE,         {BTAB}},
5897 {"crxor",       XL(19,193),     XL_MASK,     COM,       PPCVLE,         {BT, BA, BB}},
5898
5899 {"dnh",         X(19,198),      X_MASK,      E500MC,    PPCVLE,         {DUI, DUIS}},
5900
5901 {"crnand",      XL(19,225),     XL_MASK,     COM,       PPCVLE,         {BT, BA, BB}},
5902
5903 {"crand",       XL(19,257),     XL_MASK,     COM,       PPCVLE,         {BT, BA, BB}},
5904
5905 {"hrfid",       XL(19,274),    0xffffffff, POWER5|CELL, PPC476|PPCVLE,  {0}},
5906
5907 {"crset",       XL(19,289),     XL_MASK,     PPCCOM,    PPCVLE,         {BTAB}},
5908 {"creqv",       XL(19,289),     XL_MASK,     COM,       PPCVLE,         {BT, BA, BB}},
5909
5910 {"urfid",       XL(19,306),     0xffffffff,  POWER9,    PPCVLE,         {0}},
5911 {"stop",        XL(19,370),     0xffffffff,  POWER9,    PPCVLE,         {0}},
5912
5913 {"doze",        XL(19,402),     0xffffffff,  POWER6,    POWER9|PPCVLE,  {0}},
5914
5915 {"crorc",       XL(19,417),     XL_MASK,     COM,       PPCVLE,         {BT, BA, BB}},
5916
5917 {"nap",         XL(19,434),     0xffffffff,  POWER6,    POWER9|PPCVLE,  {0}},
5918
5919 {"crmove",      XL(19,449),     XL_MASK,     PPCCOM,    PPCVLE,         {BT, BAB}},
5920 {"cror",        XL(19,449),     XL_MASK,     COM,       PPCVLE,         {BT, BA, BB}},
5921
5922 {"sleep",       XL(19,466),     0xffffffff,  POWER6,    POWER9|PPCVLE,  {0}},
5923 {"rvwinkle",    XL(19,498),     0xffffffff,  POWER6,    POWER9|PPCVLE,  {0}},
5924
5925 {"bctr",    XLO(19,BOU,528,0),          XLBOBIBB_MASK, COM,      PPCVLE,        {BH}},
5926 {"bctrl",   XLO(19,BOU,528,1),          XLBOBIBB_MASK, COM,      PPCVLE,        {BH}},
5927
5928 {"bgectr-", XLOCB(19,BOF,CBLT,528,0),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5929 {"bgectr+", XLOCB(19,BOFP,CBLT,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5930 {"bgectr",  XLOCB(19,BOF,CBLT,528,0),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5931 {"bnlctr-", XLOCB(19,BOF,CBLT,528,0),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5932 {"bnlctr+", XLOCB(19,BOFP,CBLT,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5933 {"bnlctr",  XLOCB(19,BOF,CBLT,528,0),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5934 {"bgectrl-",XLOCB(19,BOF,CBLT,528,1),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5935 {"bgectrl+",XLOCB(19,BOFP,CBLT,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5936 {"bgectrl", XLOCB(19,BOF,CBLT,528,1),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5937 {"bnlctrl-",XLOCB(19,BOF,CBLT,528,1),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5938 {"bnlctrl+",XLOCB(19,BOFP,CBLT,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5939 {"bnlctrl", XLOCB(19,BOF,CBLT,528,1),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5940 {"blectr-", XLOCB(19,BOF,CBGT,528,0),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5941 {"blectr+", XLOCB(19,BOFP,CBGT,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5942 {"blectr",  XLOCB(19,BOF,CBGT,528,0),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5943 {"bngctr-", XLOCB(19,BOF,CBGT,528,0),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5944 {"bngctr+", XLOCB(19,BOFP,CBGT,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5945 {"bngctr",  XLOCB(19,BOF,CBGT,528,0),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5946 {"blectrl-",XLOCB(19,BOF,CBGT,528,1),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5947 {"blectrl+",XLOCB(19,BOFP,CBGT,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5948 {"blectrl", XLOCB(19,BOF,CBGT,528,1),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5949 {"bngctrl-",XLOCB(19,BOF,CBGT,528,1),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5950 {"bngctrl+",XLOCB(19,BOFP,CBGT,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5951 {"bngctrl", XLOCB(19,BOF,CBGT,528,1),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5952 {"bnectr-", XLOCB(19,BOF,CBEQ,528,0),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5953 {"bnectr+", XLOCB(19,BOFP,CBEQ,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5954 {"bnectr",  XLOCB(19,BOF,CBEQ,528,0),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5955 {"bnectrl-",XLOCB(19,BOF,CBEQ,528,1),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5956 {"bnectrl+",XLOCB(19,BOFP,CBEQ,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5957 {"bnectrl", XLOCB(19,BOF,CBEQ,528,1),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5958 {"bnsctr-", XLOCB(19,BOF,CBSO,528,0),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5959 {"bnsctr+", XLOCB(19,BOFP,CBSO,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5960 {"bnsctr",  XLOCB(19,BOF,CBSO,528,0),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5961 {"bnuctr-", XLOCB(19,BOF,CBSO,528,0),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5962 {"bnuctr+", XLOCB(19,BOFP,CBSO,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5963 {"bnuctr",  XLOCB(19,BOF,CBSO,528,0),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5964 {"bnsctrl-",XLOCB(19,BOF,CBSO,528,1),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5965 {"bnsctrl+",XLOCB(19,BOFP,CBSO,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5966 {"bnsctrl", XLOCB(19,BOF,CBSO,528,1),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5967 {"bnuctrl-",XLOCB(19,BOF,CBSO,528,1),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5968 {"bnuctrl+",XLOCB(19,BOFP,CBSO,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5969 {"bnuctrl", XLOCB(19,BOF,CBSO,528,1),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
5970 {"bgectr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5971 {"bnlctr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5972 {"bgectrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5973 {"bnlctrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5974 {"blectr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5975 {"bngctr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5976 {"blectrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5977 {"bngctrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5978 {"bnectr-", XLOCB(19,BOFM4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5979 {"bnectrl-",XLOCB(19,BOFM4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5980 {"bnsctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5981 {"bnuctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5982 {"bnsctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5983 {"bnuctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5984 {"bgectr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5985 {"bnlctr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5986 {"bgectrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5987 {"bnlctrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5988 {"blectr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5989 {"bngctr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5990 {"blectrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5991 {"bngctrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5992 {"bnectr+", XLOCB(19,BOFP4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5993 {"bnectrl+",XLOCB(19,BOFP4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5994 {"bnsctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5995 {"bnuctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5996 {"bnsctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5997 {"bnuctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
5998 {"bltctr-", XLOCB(19,BOT,CBLT,528,0),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
5999 {"bltctr+", XLOCB(19,BOTP,CBLT,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
6000 {"bltctr",  XLOCB(19,BOT,CBLT,528,0),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
6001 {"bltctrl-",XLOCB(19,BOT,CBLT,528,1),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
6002 {"bltctrl+",XLOCB(19,BOTP,CBLT,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
6003 {"bltctrl", XLOCB(19,BOT,CBLT,528,1),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
6004 {"bgtctr-", XLOCB(19,BOT,CBGT,528,0),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
6005 {"bgtctr+", XLOCB(19,BOTP,CBGT,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
6006 {"bgtctr",  XLOCB(19,BOT,CBGT,528,0),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
6007 {"bgtctrl-",XLOCB(19,BOT,CBGT,528,1),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
6008 {"bgtctrl+",XLOCB(19,BOTP,CBGT,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
6009 {"bgtctrl", XLOCB(19,BOT,CBGT,528,1),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
6010 {"beqctr-", XLOCB(19,BOT,CBEQ,528,0),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
6011 {"beqctr+", XLOCB(19,BOTP,CBEQ,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
6012 {"beqctr",  XLOCB(19,BOT,CBEQ,528,0),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
6013 {"beqctrl-",XLOCB(19,BOT,CBEQ,528,1),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
6014 {"beqctrl+",XLOCB(19,BOTP,CBEQ,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
6015 {"beqctrl", XLOCB(19,BOT,CBEQ,528,1),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
6016 {"bsoctr-", XLOCB(19,BOT,CBSO,528,0),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
6017 {"bsoctr+", XLOCB(19,BOTP,CBSO,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
6018 {"bsoctr",  XLOCB(19,BOT,CBSO,528,0),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
6019 {"bunctr-", XLOCB(19,BOT,CBSO,528,0),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
6020 {"bunctr+", XLOCB(19,BOTP,CBSO,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
6021 {"bunctr",  XLOCB(19,BOT,CBSO,528,0),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
6022 {"bsoctrl-",XLOCB(19,BOT,CBSO,528,1),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
6023 {"bsoctrl+",XLOCB(19,BOTP,CBSO,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
6024 {"bsoctrl", XLOCB(19,BOT,CBSO,528,1),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
6025 {"bunctrl-",XLOCB(19,BOT,CBSO,528,1),   XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
6026 {"bunctrl+",XLOCB(19,BOTP,CBSO,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE, {CR, BH}},
6027 {"bunctrl", XLOCB(19,BOT,CBSO,528,1),   XLBOCBBB_MASK, PPCCOM,   PPCVLE,        {CR, BH}},
6028 {"bltctr-", XLOCB(19,BOTM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
6029 {"bltctrl-",XLOCB(19,BOTM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
6030 {"bgtctr-", XLOCB(19,BOTM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
6031 {"bgtctrl-",XLOCB(19,BOTM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
6032 {"beqctr-", XLOCB(19,BOTM4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
6033 {"beqctrl-",XLOCB(19,BOTM4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
6034 {"bsoctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
6035 {"bunctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
6036 {"bsoctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
6037 {"bunctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
6038 {"bltctr+", XLOCB(19,BOTP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
6039 {"bltctrl+",XLOCB(19,BOTP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
6040 {"bgtctr+", XLOCB(19,BOTP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
6041 {"bgtctrl+",XLOCB(19,BOTP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
6042 {"beqctr+", XLOCB(19,BOTP4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
6043 {"beqctrl+",XLOCB(19,BOTP4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
6044 {"bsoctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
6045 {"bunctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
6046 {"bsoctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
6047 {"bunctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE,        {CR, BH}},
6048
6049 {"bfctr-",  XLO(19,BOF,528,0),          XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
6050 {"bfctr+",  XLO(19,BOFP,528,0),         XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
6051 {"bfctr",   XLO(19,BOF,528,0),          XLBOBB_MASK,   PPCCOM,   PPCVLE,        {BI, BH}},
6052 {"bfctrl-", XLO(19,BOF,528,1),          XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
6053 {"bfctrl+", XLO(19,BOFP,528,1),         XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
6054 {"bfctrl",  XLO(19,BOF,528,1),          XLBOBB_MASK,   PPCCOM,   PPCVLE,        {BI, BH}},
6055 {"bfctr-",  XLO(19,BOFM4,528,0),        XLBOBB_MASK,   ISA_V2,   PPCVLE,        {BI, BH}},
6056 {"bfctrl-", XLO(19,BOFM4,528,1),        XLBOBB_MASK,   ISA_V2,   PPCVLE,        {BI, BH}},
6057 {"bfctr+",  XLO(19,BOFP4,528,0),        XLBOBB_MASK,   ISA_V2,   PPCVLE,        {BI, BH}},
6058 {"bfctrl+", XLO(19,BOFP4,528,1),        XLBOBB_MASK,   ISA_V2,   PPCVLE,        {BI, BH}},
6059 {"btctr-",  XLO(19,BOT,528,0),          XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
6060 {"btctr+",  XLO(19,BOTP,528,0),         XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
6061 {"btctr",   XLO(19,BOT,528,0),          XLBOBB_MASK,   PPCCOM,   PPCVLE,        {BI, BH}},
6062 {"btctrl-", XLO(19,BOT,528,1),          XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
6063 {"btctrl+", XLO(19,BOTP,528,1),         XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE, {BI, BH}},
6064 {"btctrl",  XLO(19,BOT,528,1),          XLBOBB_MASK,   PPCCOM,   PPCVLE,        {BI, BH}},
6065 {"btctr-",  XLO(19,BOTM4,528,0),        XLBOBB_MASK,   ISA_V2,   PPCVLE,        {BI, BH}},
6066 {"btctrl-", XLO(19,BOTM4,528,1),        XLBOBB_MASK,   ISA_V2,   PPCVLE,        {BI, BH}},
6067 {"btctr+",  XLO(19,BOTP4,528,0),        XLBOBB_MASK,   ISA_V2,   PPCVLE,        {BI, BH}},
6068 {"btctrl+", XLO(19,BOTP4,528,1),        XLBOBB_MASK,   ISA_V2,   PPCVLE,        {BI, BH}},
6069
6070 {"bcctr-",  XLLK(19,528,0),             XLBH_MASK,     PPCCOM,   PPCVLE,        {BOM, BI, BH}},
6071 {"bcctr+",  XLLK(19,528,0),             XLBH_MASK,     PPCCOM,   PPCVLE,        {BOP, BI, BH}},
6072 {"bcctr",   XLLK(19,528,0),             XLBH_MASK,     PPCCOM,   PPCVLE,        {BO, BI, BH}},
6073 {"bcc",     XLLK(19,528,0),             XLBH_MASK,     PWRCOM,   PPCVLE,        {BO, BI, BH}},
6074 {"bcctrl-", XLLK(19,528,1),             XLBH_MASK,     PPCCOM,   PPCVLE,        {BOM, BI, BH}},
6075 {"bcctrl+", XLLK(19,528,1),             XLBH_MASK,     PPCCOM,   PPCVLE,        {BOP, BI, BH}},
6076 {"bcctrl",  XLLK(19,528,1),             XLBH_MASK,     PPCCOM,   PPCVLE,        {BO, BI, BH}},
6077 {"bccl",    XLLK(19,528,1),             XLBH_MASK,     PWRCOM,   PPCVLE,        {BO, BI, BH}},
6078
6079 {"bdnztar",   XLO(19,BODNZ,560,0),      XLBOBIBB_MASK, POWER8,   PPCVLE,        {BH}},
6080 {"bdnztarl",  XLO(19,BODNZ,560,1),      XLBOBIBB_MASK, POWER8,   PPCVLE,        {BH}},
6081 {"bdztar",    XLO(19,BODZ,560,0),       XLBOBIBB_MASK, POWER8,   PPCVLE,        {BH}},
6082 {"bdztarl",   XLO(19,BODZ,560,1),       XLBOBIBB_MASK, POWER8,   PPCVLE,        {BH}},
6083 {"btar",      XLO(19,BOU,560,0),        XLBOBIBB_MASK, POWER8,   PPCVLE,        {BH}},
6084 {"btarl",     XLO(19,BOU,560,1),        XLBOBIBB_MASK, POWER8,   PPCVLE,        {BH}},
6085 {"bdnztar-",  XLO(19,BODNZM4,560,0),    XLBOBIBB_MASK, POWER8,   PPCVLE,        {BH}},
6086 {"bdnztarl-", XLO(19,BODNZM4,560,1),    XLBOBIBB_MASK, POWER8,   PPCVLE,        {BH}},
6087 {"bdnztar+",  XLO(19,BODNZP4,560,0),    XLBOBIBB_MASK, POWER8,   PPCVLE,        {BH}},
6088 {"bdnztarl+", XLO(19,BODNZP4,560,1),    XLBOBIBB_MASK, POWER8,   PPCVLE,        {BH}},
6089 {"bdztar-",   XLO(19,BODZM4,560,0),     XLBOBIBB_MASK, POWER8,   PPCVLE,        {BH}},
6090 {"bdztarl-",  XLO(19,BODZM4,560,1),     XLBOBIBB_MASK, POWER8,   PPCVLE,        {BH}},
6091 {"bdztar+",   XLO(19,BODZP4,560,0),     XLBOBIBB_MASK, POWER8,   PPCVLE,        {BH}},
6092 {"bdztarl+",  XLO(19,BODZP4,560,1),     XLBOBIBB_MASK, POWER8,   PPCVLE,        {BH}},
6093
6094 {"bgetar",  XLOCB(19,BOF,CBLT,560,0),   XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6095 {"bnltar",  XLOCB(19,BOF,CBLT,560,0),   XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6096 {"bgetarl", XLOCB(19,BOF,CBLT,560,1),   XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6097 {"bnltarl", XLOCB(19,BOF,CBLT,560,1),   XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6098 {"bletar",  XLOCB(19,BOF,CBGT,560,0),   XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6099 {"bngtar",  XLOCB(19,BOF,CBGT,560,0),   XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6100 {"bletarl", XLOCB(19,BOF,CBGT,560,1),   XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6101 {"bngtarl", XLOCB(19,BOF,CBGT,560,1),   XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6102 {"bnetar",  XLOCB(19,BOF,CBEQ,560,0),   XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6103 {"bnetarl", XLOCB(19,BOF,CBEQ,560,1),   XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6104 {"bnstar",  XLOCB(19,BOF,CBSO,560,0),   XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6105 {"bnutar",  XLOCB(19,BOF,CBSO,560,0),   XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6106 {"bnstarl", XLOCB(19,BOF,CBSO,560,1),   XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6107 {"bnutarl", XLOCB(19,BOF,CBSO,560,1),   XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6108 {"bgetar-", XLOCB(19,BOFM4,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6109 {"bnltar-", XLOCB(19,BOFM4,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6110 {"bgetarl-",XLOCB(19,BOFM4,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6111 {"bnltarl-",XLOCB(19,BOFM4,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6112 {"bletar-", XLOCB(19,BOFM4,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6113 {"bngtar-", XLOCB(19,BOFM4,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6114 {"bletarl-",XLOCB(19,BOFM4,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6115 {"bngtarl-",XLOCB(19,BOFM4,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6116 {"bnetar-", XLOCB(19,BOFM4,CBEQ,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6117 {"bnetarl-",XLOCB(19,BOFM4,CBEQ,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6118 {"bnstar-", XLOCB(19,BOFM4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6119 {"bnutar-", XLOCB(19,BOFM4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6120 {"bnstarl-",XLOCB(19,BOFM4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6121 {"bnutarl-",XLOCB(19,BOFM4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6122 {"bgetar+", XLOCB(19,BOFP4,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6123 {"bnltar+", XLOCB(19,BOFP4,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6124 {"bgetarl+",XLOCB(19,BOFP4,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6125 {"bnltarl+",XLOCB(19,BOFP4,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6126 {"bletar+", XLOCB(19,BOFP4,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6127 {"bngtar+", XLOCB(19,BOFP4,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6128 {"bletarl+",XLOCB(19,BOFP4,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6129 {"bngtarl+",XLOCB(19,BOFP4,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6130 {"bnetar+", XLOCB(19,BOFP4,CBEQ,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6131 {"bnetarl+",XLOCB(19,BOFP4,CBEQ,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6132 {"bnstar+", XLOCB(19,BOFP4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6133 {"bnutar+", XLOCB(19,BOFP4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6134 {"bnstarl+",XLOCB(19,BOFP4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6135 {"bnutarl+",XLOCB(19,BOFP4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6136 {"blttar",  XLOCB(19,BOT,CBLT,560,0),   XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6137 {"blttarl", XLOCB(19,BOT,CBLT,560,1),   XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6138 {"bgttar",  XLOCB(19,BOT,CBGT,560,0),   XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6139 {"bgttarl", XLOCB(19,BOT,CBGT,560,1),   XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6140 {"beqtar",  XLOCB(19,BOT,CBEQ,560,0),   XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6141 {"beqtarl", XLOCB(19,BOT,CBEQ,560,1),   XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6142 {"bsotar",  XLOCB(19,BOT,CBSO,560,0),   XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6143 {"buntar",  XLOCB(19,BOT,CBSO,560,0),   XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6144 {"bsotarl", XLOCB(19,BOT,CBSO,560,1),   XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6145 {"buntarl", XLOCB(19,BOT,CBSO,560,1),   XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6146 {"blttar-", XLOCB(19,BOTM4,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6147 {"blttarl-",XLOCB(19,BOTM4,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6148 {"bgttar-", XLOCB(19,BOTM4,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6149 {"bgttarl-",XLOCB(19,BOTM4,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6150 {"beqtar-", XLOCB(19,BOTM4,CBEQ,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6151 {"beqtarl-",XLOCB(19,BOTM4,CBEQ,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6152 {"bsotar-", XLOCB(19,BOTM4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6153 {"buntar-", XLOCB(19,BOTM4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6154 {"bsotarl-",XLOCB(19,BOTM4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6155 {"buntarl-",XLOCB(19,BOTM4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6156 {"blttar+", XLOCB(19,BOTP4,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6157 {"blttarl+",XLOCB(19,BOTP4,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6158 {"bgttar+", XLOCB(19,BOTP4,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6159 {"bgttarl+",XLOCB(19,BOTP4,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6160 {"beqtar+", XLOCB(19,BOTP4,CBEQ,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6161 {"beqtarl+",XLOCB(19,BOTP4,CBEQ,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6162 {"bsotar+", XLOCB(19,BOTP4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6163 {"buntar+", XLOCB(19,BOTP4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6164 {"bsotarl+",XLOCB(19,BOTP4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6165 {"buntarl+",XLOCB(19,BOTP4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE,        {CR, BH}},
6166
6167 {"bdnzftar",  XLO(19,BODNZF,560,0),     XLBOBB_MASK,   POWER8,   PPCVLE,        {BI, BH}},
6168 {"bdnzftarl", XLO(19,BODNZF,560,1),     XLBOBB_MASK,   POWER8,   PPCVLE,        {BI, BH}},
6169 {"bdzftar",   XLO(19,BODZF,560,0),      XLBOBB_MASK,   POWER8,   PPCVLE,        {BI, BH}},
6170 {"bdzftarl",  XLO(19,BODZF,560,1),      XLBOBB_MASK,   POWER8,   PPCVLE,        {BI, BH}},
6171
6172 {"bftar",     XLO(19,BOF,560,0),        XLBOBB_MASK,   POWER8,   PPCVLE,        {BI, BH}},
6173 {"bftarl",    XLO(19,BOF,560,1),        XLBOBB_MASK,   POWER8,   PPCVLE,        {BI, BH}},
6174 {"bftar-",    XLO(19,BOFM4,560,0),      XLBOBB_MASK,   POWER8,   PPCVLE,        {BI, BH}},
6175 {"bftarl-",   XLO(19,BOFM4,560,1),      XLBOBB_MASK,   POWER8,   PPCVLE,        {BI, BH}},
6176 {"bftar+",    XLO(19,BOFP4,560,0),      XLBOBB_MASK,   POWER8,   PPCVLE,        {BI, BH}},
6177 {"bftarl+",   XLO(19,BOFP4,560,1),      XLBOBB_MASK,   POWER8,   PPCVLE,        {BI, BH}},
6178
6179 {"bdnzttar",  XLO(19,BODNZT,560,0),     XLBOBB_MASK,   POWER8,   PPCVLE,        {BI, BH}},
6180 {"bdnzttarl", XLO(19,BODNZT,560,1),     XLBOBB_MASK,   POWER8,   PPCVLE,        {BI, BH}},
6181 {"bdzttar",   XLO(19,BODZT,560,0),      XLBOBB_MASK,   POWER8,   PPCVLE,        {BI, BH}},
6182 {"bdzttarl",  XLO(19,BODZT,560,1),      XLBOBB_MASK,   POWER8,   PPCVLE,        {BI, BH}},
6183
6184 {"bttar",     XLO(19,BOT,560,0),        XLBOBB_MASK,   POWER8,   PPCVLE,        {BI, BH}},
6185 {"bttarl",    XLO(19,BOT,560,1),        XLBOBB_MASK,   POWER8,   PPCVLE,        {BI, BH}},
6186 {"bttar-",    XLO(19,BOTM4,560,0),      XLBOBB_MASK,   POWER8,   PPCVLE,        {BI, BH}},
6187 {"bttarl-",   XLO(19,BOTM4,560,1),      XLBOBB_MASK,   POWER8,   PPCVLE,        {BI, BH}},
6188 {"bttar+",    XLO(19,BOTP4,560,0),      XLBOBB_MASK,   POWER8,   PPCVLE,        {BI, BH}},
6189 {"bttarl+",   XLO(19,BOTP4,560,1),      XLBOBB_MASK,   POWER8,   PPCVLE,        {BI, BH}},
6190
6191 {"bctar-",  XLLK(19,560,0),             XLBH_MASK,     POWER8,   PPCVLE,        {BOM, BI, BH}},
6192 {"bctar+",  XLLK(19,560,0),             XLBH_MASK,     POWER8,   PPCVLE,        {BOP, BI, BH}},
6193 {"bctar",   XLLK(19,560,0),             XLBH_MASK,     POWER8,   PPCVLE,        {BO, BI, BH}},
6194 {"bctarl-", XLLK(19,560,1),             XLBH_MASK,     POWER8,   PPCVLE,        {BOM, BI, BH}},
6195 {"bctarl+", XLLK(19,560,1),             XLBH_MASK,     POWER8,   PPCVLE,        {BOP, BI, BH}},
6196 {"bctarl",  XLLK(19,560,1),             XLBH_MASK,     POWER8,   PPCVLE,        {BO, BI, BH}},
6197
6198 {"rlwimi",      M(20,0),        M_MASK,      PPCCOM,    PPCVLE,         {RA, RS, SH, MBE, ME}},
6199 {"rlimi",       M(20,0),        M_MASK,      PWRCOM,    PPCVLE,         {RA, RS, SH, MBE, ME}},
6200
6201 {"rlwimi.",     M(20,1),        M_MASK,      PPCCOM,    PPCVLE,         {RA, RS, SH, MBE, ME}},
6202 {"rlimi.",      M(20,1),        M_MASK,      PWRCOM,    PPCVLE,         {RA, RS, SH, MBE, ME}},
6203
6204 {"rotlwi",      MME(21,31,0),   MMBME_MASK,  PPCCOM,    PPCVLE,         {RA, RS, SH}},
6205 {"clrlwi",      MME(21,31,0),   MSHME_MASK,  PPCCOM,    PPCVLE,         {RA, RS, MB}},
6206 {"rlwinm",      M(21,0),        M_MASK,      PPCCOM,    PPCVLE,         {RA, RS, SH, MBE, ME}},
6207 {"rlinm",       M(21,0),        M_MASK,      PWRCOM,    PPCVLE,         {RA, RS, SH, MBE, ME}},
6208 {"rotlwi.",     MME(21,31,1),   MMBME_MASK,  PPCCOM,    PPCVLE,         {RA, RS, SH}},
6209 {"clrlwi.",     MME(21,31,1),   MSHME_MASK,  PPCCOM,    PPCVLE,         {RA, RS, MB}},
6210 {"rlwinm.",     M(21,1),        M_MASK,      PPCCOM,    PPCVLE,         {RA, RS, SH, MBE, ME}},
6211 {"rlinm.",      M(21,1),        M_MASK,      PWRCOM,    PPCVLE,         {RA, RS, SH, MBE, ME}},
6212
6213 {"rlmi",        M(22,0),        M_MASK,      M601,      PPCVLE,         {RA, RS, RB, MBE, ME}},
6214 {"rlmi.",       M(22,1),        M_MASK,      M601,      PPCVLE,         {RA, RS, RB, MBE, ME}},
6215
6216 {"rotlw",       MME(23,31,0),   MMBME_MASK,  PPCCOM,    PPCVLE,         {RA, RS, RB}},
6217 {"rlwnm",       M(23,0),        M_MASK,      PPCCOM,    PPCVLE,         {RA, RS, RB, MBE, ME}},
6218 {"rlnm",        M(23,0),        M_MASK,      PWRCOM,    PPCVLE,         {RA, RS, RB, MBE, ME}},
6219 {"rotlw.",      MME(23,31,1),   MMBME_MASK,  PPCCOM,    PPCVLE,         {RA, RS, RB}},
6220 {"rlwnm.",      M(23,1),        M_MASK,      PPCCOM,    PPCVLE,         {RA, RS, RB, MBE, ME}},
6221 {"rlnm.",       M(23,1),        M_MASK,      PWRCOM,    PPCVLE,         {RA, RS, RB, MBE, ME}},
6222
6223 {"nop",         OP(24),         0xffffffff,  PPCCOM,    PPCVLE,         {0}},
6224 {"exser",       0x63ff0000,     0xffffffff,  POWER9,    PPCVLE,         {0}},
6225 {"ori",         OP(24),         OP_MASK,     PPCCOM,    PPCVLE,         {RA, RS, UI}},
6226 {"oril",        OP(24),         OP_MASK,     PWRCOM,    PPCVLE,         {RA, RS, UI}},
6227
6228 {"oris",        OP(25),         OP_MASK,     PPCCOM,    PPCVLE,         {RA, RS, UI}},
6229 {"oriu",        OP(25),         OP_MASK,     PWRCOM,    PPCVLE,         {RA, RS, UI}},
6230
6231 {"xnop",        OP(26),         0xffffffff,  PPCCOM,    PPCVLE,         {0}},
6232 {"xori",        OP(26),         OP_MASK,     PPCCOM,    PPCVLE,         {RA, RS, UI}},
6233 {"xoril",       OP(26),         OP_MASK,     PWRCOM,    PPCVLE,         {RA, RS, UI}},
6234
6235 {"xoris",       OP(27),         OP_MASK,     PPCCOM,    PPCVLE,         {RA, RS, UI}},
6236 {"xoriu",       OP(27),         OP_MASK,     PWRCOM,    PPCVLE,         {RA, RS, UI}},
6237
6238 {"andi.",       OP(28),         OP_MASK,     PPCCOM,    PPCVLE,         {RA, RS, UI}},
6239 {"andil.",      OP(28),         OP_MASK,     PWRCOM,    PPCVLE,         {RA, RS, UI}},
6240
6241 {"andis.",      OP(29),         OP_MASK,     PPCCOM,    PPCVLE,         {RA, RS, UI}},
6242 {"andiu.",      OP(29),         OP_MASK,     PWRCOM,    PPCVLE,         {RA, RS, UI}},
6243
6244 {"rotldi",      MD(30,0,0),     MDMB_MASK,   PPC64,     PPCVLE,         {RA, RS, SH6}},
6245 {"clrldi",      MD(30,0,0),     MDSH_MASK,   PPC64,     PPCVLE,         {RA, RS, MB6}},
6246 {"rldicl",      MD(30,0,0),     MD_MASK,     PPC64,     PPCVLE,         {RA, RS, SH6, MB6}},
6247 {"rotldi.",     MD(30,0,1),     MDMB_MASK,   PPC64,     PPCVLE,         {RA, RS, SH6}},
6248 {"clrldi.",     MD(30,0,1),     MDSH_MASK,   PPC64,     PPCVLE,         {RA, RS, MB6}},
6249 {"rldicl.",     MD(30,0,1),     MD_MASK,     PPC64,     PPCVLE,         {RA, RS, SH6, MB6}},
6250
6251 {"rldicr",      MD(30,1,0),     MD_MASK,     PPC64,     PPCVLE,         {RA, RS, SH6, ME6}},
6252 {"rldicr.",     MD(30,1,1),     MD_MASK,     PPC64,     PPCVLE,         {RA, RS, SH6, ME6}},
6253
6254 {"rldic",       MD(30,2,0),     MD_MASK,     PPC64,     PPCVLE,         {RA, RS, SH6, MB6}},
6255 {"rldic.",      MD(30,2,1),     MD_MASK,     PPC64,     PPCVLE,         {RA, RS, SH6, MB6}},
6256
6257 {"rldimi",      MD(30,3,0),     MD_MASK,     PPC64,     PPCVLE,         {RA, RS, SH6, MB6}},
6258 {"rldimi.",     MD(30,3,1),     MD_MASK,     PPC64,     PPCVLE,         {RA, RS, SH6, MB6}},
6259
6260 {"rotld",       MDS(30,8,0),    MDSMB_MASK,  PPC64,     PPCVLE,         {RA, RS, RB}},
6261 {"rldcl",       MDS(30,8,0),    MDS_MASK,    PPC64,     PPCVLE,         {RA, RS, RB, MB6}},
6262 {"rotld.",      MDS(30,8,1),    MDSMB_MASK,  PPC64,     PPCVLE,         {RA, RS, RB}},
6263 {"rldcl.",      MDS(30,8,1),    MDS_MASK,    PPC64,     PPCVLE,         {RA, RS, RB, MB6}},
6264
6265 {"rldcr",       MDS(30,9,0),    MDS_MASK,    PPC64,     PPCVLE,         {RA, RS, RB, ME6}},
6266 {"rldcr.",      MDS(30,9,1),    MDS_MASK,    PPC64,     PPCVLE,         {RA, RS, RB, ME6}},
6267
6268 {"cmpw",        XOPL(31,0,0),   XCMPL_MASK,  PPCCOM,    0,              {OBF, RA, RB}},
6269 {"cmpd",        XOPL(31,0,1),   XCMPL_MASK,  PPC64,     0,              {OBF, RA, RB}},
6270 {"cmp",         X(31,0),        XCMP_MASK,   PPC,       0,              {BF, L32OPT, RA, RB}},
6271 {"cmp",         X(31,0),        XCMPL_MASK,  PWRCOM,    PPC,            {BF, RA, RB}},
6272
6273 {"twlgt",       XTO(31,4,TOLGT), XTO_MASK,   PPCCOM,    0,              {RA, RB}},
6274 {"tlgt",        XTO(31,4,TOLGT), XTO_MASK,   PWRCOM,    0,              {RA, RB}},
6275 {"twllt",       XTO(31,4,TOLLT), XTO_MASK,   PPCCOM,    0,              {RA, RB}},
6276 {"tllt",        XTO(31,4,TOLLT), XTO_MASK,   PWRCOM,    0,              {RA, RB}},
6277 {"tweq",        XTO(31,4,TOEQ),  XTO_MASK,   PPCCOM,    0,              {RA, RB}},
6278 {"teq",         XTO(31,4,TOEQ),  XTO_MASK,   PWRCOM,    0,              {RA, RB}},
6279 {"twlge",       XTO(31,4,TOLGE), XTO_MASK,   PPCCOM,    0,              {RA, RB}},
6280 {"tlge",        XTO(31,4,TOLGE), XTO_MASK,   PWRCOM,    0,              {RA, RB}},
6281 {"twlnl",       XTO(31,4,TOLNL), XTO_MASK,   PPCCOM,    0,              {RA, RB}},
6282 {"tlnl",        XTO(31,4,TOLNL), XTO_MASK,   PWRCOM,    0,              {RA, RB}},
6283 {"twlle",       XTO(31,4,TOLLE), XTO_MASK,   PPCCOM,    0,              {RA, RB}},
6284 {"tlle",        XTO(31,4,TOLLE), XTO_MASK,   PWRCOM,    0,              {RA, RB}},
6285 {"twlng",       XTO(31,4,TOLNG), XTO_MASK,   PPCCOM,    0,              {RA, RB}},
6286 {"tlng",        XTO(31,4,TOLNG), XTO_MASK,   PWRCOM,    0,              {RA, RB}},
6287 {"twgt",        XTO(31,4,TOGT),  XTO_MASK,   PPCCOM,    0,              {RA, RB}},
6288 {"tgt",         XTO(31,4,TOGT),  XTO_MASK,   PWRCOM,    0,              {RA, RB}},
6289 {"twge",        XTO(31,4,TOGE),  XTO_MASK,   PPCCOM,    0,              {RA, RB}},
6290 {"tge",         XTO(31,4,TOGE),  XTO_MASK,   PWRCOM,    0,              {RA, RB}},
6291 {"twnl",        XTO(31,4,TONL),  XTO_MASK,   PPCCOM,    0,              {RA, RB}},
6292 {"tnl",         XTO(31,4,TONL),  XTO_MASK,   PWRCOM,    0,              {RA, RB}},
6293 {"twlt",        XTO(31,4,TOLT),  XTO_MASK,   PPCCOM,    0,              {RA, RB}},
6294 {"tlt",         XTO(31,4,TOLT),  XTO_MASK,   PWRCOM,    0,              {RA, RB}},
6295 {"twle",        XTO(31,4,TOLE),  XTO_MASK,   PPCCOM,    0,              {RA, RB}},
6296 {"tle",         XTO(31,4,TOLE),  XTO_MASK,   PWRCOM,    0,              {RA, RB}},
6297 {"twng",        XTO(31,4,TONG),  XTO_MASK,   PPCCOM,    0,              {RA, RB}},
6298 {"tng",         XTO(31,4,TONG),  XTO_MASK,   PWRCOM,    0,              {RA, RB}},
6299 {"twne",        XTO(31,4,TONE),  XTO_MASK,   PPCCOM,    0,              {RA, RB}},
6300 {"tne",         XTO(31,4,TONE),  XTO_MASK,   PWRCOM,    0,              {RA, RB}},
6301 {"trap",        XTO(31,4,TOU),   0xffffffff, PPCCOM,    0,              {0}},
6302 {"twu",         XTO(31,4,TOU),   XTO_MASK,   PPCCOM,    0,              {RA, RB}},
6303 {"tu",          XTO(31,4,TOU),   XTO_MASK,   PWRCOM,    0,              {RA, RB}},
6304 {"tw",          X(31,4),         X_MASK,     PPCCOM,    0,              {TO, RA, RB}},
6305 {"t",           X(31,4),         X_MASK,     PWRCOM,    0,              {TO, RA, RB}},
6306
6307 {"lvsl",        X(31,6),        X_MASK,      PPCVEC,    0,              {VD, RA0, RB}},
6308 {"lvebx",       X(31,7),        X_MASK,      PPCVEC,    0,              {VD, RA0, RB}},
6309 {"lbfcmx",      APU(31,7,0),    APU_MASK,    PPC405,    0,              {FCRT, RA, RB}},
6310
6311 {"subfc",       XO(31,8,0,0),   XO_MASK,     PPCCOM,    0,              {RT, RA, RB}},
6312 {"sf",          XO(31,8,0,0),   XO_MASK,     PWRCOM,    0,              {RT, RA, RB}},
6313 {"subc",        XO(31,8,0,0),   XO_MASK,     PPCCOM,    0,              {RT, RB, RA}},
6314 {"subfc.",      XO(31,8,0,1),   XO_MASK,     PPCCOM,    0,              {RT, RA, RB}},
6315 {"sf.",         XO(31,8,0,1),   XO_MASK,     PWRCOM,    0,              {RT, RA, RB}},
6316 {"subc.",       XO(31,8,0,1),   XO_MASK,     PPCCOM,    0,              {RT, RB, RA}},
6317
6318 {"mulhdu",      XO(31,9,0,0),   XO_MASK,     PPC64,     0,              {RT, RA, RB}},
6319 {"mulhdu.",     XO(31,9,0,1),   XO_MASK,     PPC64,     0,              {RT, RA, RB}},
6320
6321 {"addc",        XO(31,10,0,0),  XO_MASK,     PPCCOM,    0,              {RT, RA, RB}},
6322 {"a",           XO(31,10,0,0),  XO_MASK,     PWRCOM,    0,              {RT, RA, RB}},
6323 {"addc.",       XO(31,10,0,1),  XO_MASK,     PPCCOM,    0,              {RT, RA, RB}},
6324 {"a.",          XO(31,10,0,1),  XO_MASK,     PWRCOM,    0,              {RT, RA, RB}},
6325
6326 {"mulhwu",      XO(31,11,0,0),  XO_MASK,     PPC,       0,              {RT, RA, RB}},
6327 {"mulhwu.",     XO(31,11,0,1),  XO_MASK,     PPC,       0,              {RT, RA, RB}},
6328
6329 {"lxsiwzx",     X(31,12),       XX1_MASK,    PPCVSX2,   0,              {XT6, RA0, RB}},
6330
6331 {"lxvrbx",      X(31,13),       XX1_MASK,    POWER10,   0,              {XT6, RA0, RB}},
6332
6333 {"isellt",      X(31,15),       X_MASK,      PPCISEL,   0,              {RT, RA0, RB}},
6334
6335 {"tlbilxlpid",  XTO(31,18,0),   XTO_MASK, E500MC|PPCA2, 0,              {0}},
6336 {"tlbilxpid",   XTO(31,18,1),   XTO_MASK, E500MC|PPCA2, 0,              {0}},
6337 {"tlbilxva",    XTO(31,18,3),   XTO_MASK, E500MC|PPCA2, 0,              {RA0, RB}},
6338 {"tlbilx",      X(31,18),       X_MASK,   E500MC|PPCA2, 0,              {T, RA0, RB}},
6339
6340 {"mfcr",        XFXM(31,19,0,0), XFXFXM_MASK, COM,      0,              {RT, FXM4}},
6341 {"mfocrf",      XFXM(31,19,0,1), XFXFXM_MASK, COM,      0,              {RT, FXM}},
6342
6343 {"lwarx",       X(31,20),       XEH_MASK,    PPC,       0,              {RT, RA0, RB, EH}},
6344
6345 {"ldx",         X(31,21),       X_MASK,      PPC64,     0,              {RT, RA0, RB}},
6346
6347 {"icbt",        X(31,22), X_MASK, POWER5|BOOKE|PPCE300, 0,              {CT, RA0, RB}},
6348
6349 {"lwzx",        X(31,23),       X_MASK,      PPCCOM,    0,              {RT, RA0, RB}},
6350 {"lx",          X(31,23),       X_MASK,      PWRCOM,    0,              {RT, RA, RB}},
6351
6352 {"slw",         XRC(31,24,0),   X_MASK,      PPCCOM,    0,              {RA, RS, RB}},
6353 {"sl",          XRC(31,24,0),   X_MASK,      PWRCOM,    0,              {RA, RS, RB}},
6354 {"slw.",        XRC(31,24,1),   X_MASK,      PPCCOM,    0,              {RA, RS, RB}},
6355 {"sl.",         XRC(31,24,1),   X_MASK,      PWRCOM,    0,              {RA, RS, RB}},
6356
6357 {"cntlzw",      XRC(31,26,0),   XRB_MASK,    PPCCOM,    0,              {RA, RS}},
6358 {"cntlz",       XRC(31,26,0),   XRB_MASK,    PWRCOM,    0,              {RA, RS}},
6359 {"cntlzw.",     XRC(31,26,1),   XRB_MASK,    PPCCOM,    0,              {RA, RS}},
6360 {"cntlz.",      XRC(31,26,1),   XRB_MASK,    PWRCOM,    0,              {RA, RS}},
6361
6362 {"sld",         XRC(31,27,0),   X_MASK,      PPC64,     0,              {RA, RS, RB}},
6363 {"sld.",        XRC(31,27,1),   X_MASK,      PPC64,     0,              {RA, RS, RB}},
6364
6365 {"and",         XRC(31,28,0),   X_MASK,      COM,       0,              {RA, RS, RB}},
6366 {"and.",        XRC(31,28,1),   X_MASK,      COM,       0,              {RA, RS, RB}},
6367
6368 {"maskg",       XRC(31,29,0),   X_MASK,      M601,      PPCA2,          {RA, RS, RB}},
6369 {"maskg.",      XRC(31,29,1),   X_MASK,      M601,      PPCA2,          {RA, RS, RB}},
6370
6371 {"ldepx",       X(31,29),       X_MASK,   E500MC|PPCA2, 0,              {RT, RA0, RB}},
6372
6373 {"waitasec",    X(31,30),      XRTRARB_MASK, POWER8,    POWER9,         {0}},
6374 {"waitrsv",     XWCPL(31,30,1,0),0xffffffff, POWER10,   0,              {0}},
6375 {"pause_short", XWCPL(31,30,2,0),0xffffffff, POWER10,   0,              {0}},
6376 {"wait",        X(31,30),       XWCPL_MASK,  POWER10,   0,              {WC, PL}},
6377 {"wait",        X(31,30),       XWC_MASK,    POWER9,    POWER10,        {WC}},
6378
6379 {"lwepx",       X(31,31),       X_MASK,   E500MC|PPCA2, 0,              {RT, RA0, RB}},
6380
6381 {"cmplw",       XOPL(31,32,0),  XCMPL_MASK,  PPCCOM,    0,              {OBF, RA, RB}},
6382 {"cmpld",       XOPL(31,32,1),  XCMPL_MASK,  PPC64,     0,              {OBF, RA, RB}},
6383 {"cmpl",        X(31,32),       XCMP_MASK,   PPC,       0,              {BF, L32OPT, RA, RB}},
6384 {"cmpl",        X(31,32),       XCMPL_MASK,  PWRCOM,    PPC,            {BF, RA, RB}},
6385
6386 {"lvsr",        X(31,38),       X_MASK,      PPCVEC,    0,              {VD, RA0, RB}},
6387 {"lvehx",       X(31,39),       X_MASK,      PPCVEC,    0,              {VD, RA0, RB}},
6388 {"lhfcmx",      APU(31,39,0),   APU_MASK,    PPC405,    0,              {FCRT, RA, RB}},
6389
6390 {"lxvrhx",      X(31,45),       XX1_MASK,    POWER10,   0,              {XT6, RA0, RB}},
6391
6392 {"mviwsplt",    X(31,46),       X_MASK,      E6500,     0,              {VD, RA, RB}},
6393
6394 {"iselgt",      X(31,47),       X_MASK,      PPCISEL,   0,              {RT, RA0, RB}},
6395
6396 {"lvewx",       X(31,71),       X_MASK,      PPCVEC,    0,              {VD, RA0, RB}},
6397
6398 {"addg6s",      XO(31,74,0,0),  XO_MASK,     POWER6,    0,              {RT, RA, RB}},
6399
6400 {"lxsiwax",     X(31,76),       XX1_MASK,    PPCVSX2,   0,              {XT6, RA0, RB}},
6401
6402 {"lxvrwx",      X(31,77),       XX1_MASK,    POWER10,   0,              {XT6, RA0, RB}},
6403
6404 {"iseleq",      X(31,79),       X_MASK,      PPCISEL,   0,              {RT, RA0, RB}},
6405
6406 {"isel",        XISEL(31,15), XISEL_MASK, PPCISEL|TITAN, 0,             {RT, RA0, RB, CRB}},
6407
6408 {"subf",        XO(31,40,0,0),  XO_MASK,     PPC,       0,              {RT, RA, RB}},
6409 {"sub",         XO(31,40,0,0),  XO_MASK,     PPC,       0,              {RT, RB, RA}},
6410 {"subf.",       XO(31,40,0,1),  XO_MASK,     PPC,       0,              {RT, RA, RB}},
6411 {"sub.",        XO(31,40,0,1),  XO_MASK,     PPC,       0,              {RT, RB, RA}},
6412
6413 {"mffprd",      X(31,51),       XX1RB_MASK|1, PPCVSX2,  0,              {RA, FRS}},
6414 {"mfvrd",       X(31,51)|1,     XX1RB_MASK|1, PPCVSX2,  0,              {RA, VS}},
6415 {"mfvsrd",      X(31,51),       XX1RB_MASK,   PPCVSX2,  0,              {RA, XS6}},
6416 {"eratilx",     X(31,51),       X_MASK,      PPCA2,     0,              {ERAT_T, RA, RB}},
6417
6418 {"lbarx",       X(31,52),       XEH_MASK, POWER8|E6500, 0,              {RT, RA0, RB, EH}},
6419
6420 {"ldux",        X(31,53),       X_MASK,      PPC64,     0,              {RT, RAL, RB}},
6421
6422 {"dcbst",       X(31,54),       XRT_MASK,    PPC,       0,              {RA0, RB}},
6423
6424 {"lwzux",       X(31,55),       X_MASK,      PPCCOM,    0,              {RT, RAL, RB}},
6425 {"lux",         X(31,55),       X_MASK,      PWRCOM,    0,              {RT, RA, RB}},
6426
6427 {"cntlzd",      XRC(31,58,0),   XRB_MASK,    PPC64,     0,              {RA, RS}},
6428 {"cntlzd.",     XRC(31,58,1),   XRB_MASK,    PPC64,     0,              {RA, RS}},
6429
6430 {"cntlzdm",     X(31,59),       X_MASK,      POWER10,   0,              {RA, RS, RB}},
6431
6432 {"andc",        XRC(31,60,0),   X_MASK,      COM,       0,              {RA, RS, RB}},
6433 {"andc.",       XRC(31,60,1),   X_MASK,      COM,       0,              {RA, RS, RB}},
6434
6435 {"waitrsv",     X(31,62)|(1<<21), 0xffffffff, E500MC|PPCA2, 0,          {0}},
6436 {"waitimpl",    X(31,62)|(2<<21), 0xffffffff, E500MC|PPCA2, 0,          {0}},
6437 {"wait",        X(31,62),       XWC_MASK,    E500MC|PPCA2, 0,           {WC}},
6438
6439 {"dcbstep",     XRT(31,63,0),   XRT_MASK,    E500MC|PPCA2, 0,           {RA0, RB}},
6440
6441 {"tdlgt",       XTO(31,68,TOLGT), XTO_MASK,  PPC64,     0,              {RA, RB}},
6442 {"tdllt",       XTO(31,68,TOLLT), XTO_MASK,  PPC64,     0,              {RA, RB}},
6443 {"tdeq",        XTO(31,68,TOEQ),  XTO_MASK,  PPC64,     0,              {RA, RB}},
6444 {"tdlge",       XTO(31,68,TOLGE), XTO_MASK,  PPC64,     0,              {RA, RB}},
6445 {"tdlnl",       XTO(31,68,TOLNL), XTO_MASK,  PPC64,     0,              {RA, RB}},
6446 {"tdlle",       XTO(31,68,TOLLE), XTO_MASK,  PPC64,     0,              {RA, RB}},
6447 {"tdlng",       XTO(31,68,TOLNG), XTO_MASK,  PPC64,     0,              {RA, RB}},
6448 {"tdgt",        XTO(31,68,TOGT),  XTO_MASK,  PPC64,     0,              {RA, RB}},
6449 {"tdge",        XTO(31,68,TOGE),  XTO_MASK,  PPC64,     0,              {RA, RB}},
6450 {"tdnl",        XTO(31,68,TONL),  XTO_MASK,  PPC64,     0,              {RA, RB}},
6451 {"tdlt",        XTO(31,68,TOLT),  XTO_MASK,  PPC64,     0,              {RA, RB}},
6452 {"tdle",        XTO(31,68,TOLE),  XTO_MASK,  PPC64,     0,              {RA, RB}},
6453 {"tdng",        XTO(31,68,TONG),  XTO_MASK,  PPC64,     0,              {RA, RB}},
6454 {"tdne",        XTO(31,68,TONE),  XTO_MASK,  PPC64,     0,              {RA, RB}},
6455 {"tdu",         XTO(31,68,TOU),   XTO_MASK,  PPC64,     0,              {RA, RB}},
6456 {"td",          X(31,68),       X_MASK,      PPC64,     0,              {TO, RA, RB}},
6457
6458 {"lwfcmx",      APU(31,71,0),   APU_MASK,    PPC405,    0,              {FCRT, RA, RB}},
6459 {"mulhd",       XO(31,73,0,0),  XO_MASK,     PPC64,     0,              {RT, RA, RB}},
6460 {"mulhd.",      XO(31,73,0,1),  XO_MASK,     PPC64,     0,              {RT, RA, RB}},
6461
6462 {"mulhw",       XO(31,75,0,0),  XO_MASK,     PPC,       0,              {RT, RA, RB}},
6463 {"mulhw.",      XO(31,75,0,1),  XO_MASK,     PPC,       0,              {RT, RA, RB}},
6464
6465 {"msgsndu",     XRTRA(31,78,0,0), XRTRA_MASK, POWER9,   0,              {RB}},
6466 {"dlmzb",       XRC(31,78,0), X_MASK, PPC403|PPC440|PPC476|TITAN, 0,    {RA, RS, RB}},
6467 {"dlmzb.",      XRC(31,78,1), X_MASK, PPC403|PPC440|PPC476|TITAN, 0,    {RA, RS, RB}},
6468
6469 {"mtsrd",       X(31,82),  XRB_MASK|(1<<20), PPC64,     0,              {SR, RS}},
6470
6471 {"mfmsr",       X(31,83),       XRARB_MASK,  COM,       0,              {RT}},
6472
6473 {"ldarx",       X(31,84),       XEH_MASK,    PPC64,     0,              {RT, RA0, RB, EH}},
6474
6475 {"dcbfl",       XOPL(31,86,1),  XRT_MASK,    POWER5,    PPC476,         {RA0, RB}},
6476 {"dcbflp",      XOPL2(31,86,3), XRT_MASK,    POWER9,    PPC476,         {RA0, RB}},
6477 {"dcbfps",      XOPL3(31,86,4), XRT_MASK,    POWER10,   PPC476,         {RA0, RB}},
6478 {"dcbstps",     XOPL3(31,86,6), XRT_MASK,    POWER10,   PPC476,         {RA0, RB}},
6479 {"dcbf",        X(31,86),       XL3RT_MASK,  POWER10,   PPC476,         {RA0, RB, L3OPT}},
6480 {"dcbf",        X(31,86),       XLRT_MASK,   PPC,       POWER10,        {RA0, RB, L2OPT}},
6481
6482 {"lbzx",        X(31,87),       X_MASK,      COM,       0,              {RT, RA0, RB}},
6483
6484 {"lbepx",       X(31,95),       X_MASK,   E500MC|PPCA2, 0,              {RT, RA0, RB}},
6485
6486 {"dni",         XRC(31,97,1),   XRB_MASK,    E6500,     0,              {DUI, DCTL}},
6487
6488 {"lvx",         X(31,103),      X_MASK,      PPCVEC,    0,              {VD, RA0, RB}},
6489 {"lqfcmx",      APU(31,103,0),  APU_MASK,    PPC405,    0,              {FCRT, RA, RB}},
6490
6491 {"neg",         XO(31,104,0,0), XORB_MASK,   COM,       0,              {RT, RA}},
6492 {"neg.",        XO(31,104,0,1), XORB_MASK,   COM,       0,              {RT, RA}},
6493
6494 {"mul",         XO(31,107,0,0), XO_MASK,     M601,      0,              {RT, RA, RB}},
6495 {"mul.",        XO(31,107,0,1), XO_MASK,     M601,      0,              {RT, RA, RB}},
6496
6497 {"lxvrdx",      X(31,109),      XX1_MASK,    POWER10,   0,              {XT6, RA0, RB}},
6498
6499 {"msgclru",     XRTRA(31,110,0,0), XRTRA_MASK, POWER9,  0,              {RB}},
6500 {"mvidsplt",    X(31,110),      X_MASK,      E6500,     0,              {VD, RA, RB}},
6501
6502 {"mtsrdin",     X(31,114),      XRA_MASK,    PPC64,     0,              {RS, RB}},
6503
6504 {"mffprwz",     X(31,115),      XX1RB_MASK|1, PPCVSX2,  0,              {RA, FRS}},
6505 {"mfvrwz",      X(31,115)|1,    XX1RB_MASK|1, PPCVSX2,  0,              {RA, VS}},
6506 {"mfvsrwz",     X(31,115),      XX1RB_MASK,   PPCVSX2,  0,              {RA, XS6}},
6507
6508 {"lharx",       X(31,116),      XEH_MASK, POWER8|E6500, 0,              {RT, RA0, RB, EH}},
6509
6510 {"clf",         X(31,118),      XTO_MASK,    POWER,     0,              {RA, RB}},
6511
6512 {"lbzux",       X(31,119),      X_MASK,      COM,       0,              {RT, RAL, RB}},
6513
6514 {"popcntb",     X(31,122),      XRB_MASK,    POWER5,    0,              {RA, RS}},
6515
6516 {"not",         XRC(31,124,0),  X_MASK,      COM,       0,              {RA, RSB}},
6517 {"nor",         XRC(31,124,0),  X_MASK,      COM,       0,              {RA, RS, RB}},
6518 {"not.",        XRC(31,124,1),  X_MASK,      COM,       0,              {RA, RSB}},
6519 {"nor.",        XRC(31,124,1),  X_MASK,      COM,       0,              {RA, RS, RB}},
6520
6521 {"dcbfep",      XRT(31,127,0),  XRT_MASK, E500MC|PPCA2, 0,              {RA0, RB}},
6522
6523 {"setb",        X(31,128),      XRB_MASK|(3<<16), POWER9, 0,            {RT, BFA}},
6524
6525 {"wrtee",       X(31,131), XRARB_MASK, PPC403|BOOKE|PPCA2|PPC476, 0,    {RS}},
6526
6527 {"dcbtstls",    X(31,134),      X_MASK, PPCCHLK|PPC476|TITAN, 0,        {CT, RA0, RB}},
6528
6529 {"stvebx",      X(31,135),      X_MASK,      PPCVEC,    0,              {VS, RA0, RB}},
6530 {"stbfcmx",     APU(31,135,0),  APU_MASK,    PPC405,    0,              {FCRT, RA, RB}},
6531
6532 {"subfe",       XO(31,136,0,0), XO_MASK,     PPCCOM,    0,              {RT, RA, RB}},
6533 {"sfe",         XO(31,136,0,0), XO_MASK,     PWRCOM,    0,              {RT, RA, RB}},
6534 {"subfe.",      XO(31,136,0,1), XO_MASK,     PPCCOM,    0,              {RT, RA, RB}},
6535 {"sfe.",        XO(31,136,0,1), XO_MASK,     PWRCOM,    0,              {RT, RA, RB}},
6536
6537 {"adde",        XO(31,138,0,0), XO_MASK,     PPCCOM,    0,              {RT, RA, RB}},
6538 {"ae",          XO(31,138,0,0), XO_MASK,     PWRCOM,    0,              {RT, RA, RB}},
6539 {"adde.",       XO(31,138,0,1), XO_MASK,     PPCCOM,    0,              {RT, RA, RB}},
6540 {"ae.",         XO(31,138,0,1), XO_MASK,     PWRCOM,    0,              {RT, RA, RB}},
6541
6542 {"stxsiwx",     X(31,140),      XX1_MASK,    PPCVSX2,   0,              {XS6, RA0, RB}},
6543
6544 {"stxvrbx",     X(31,141),      XX1_MASK,    POWER10,   0,              {XT6, RA0, RB}},
6545
6546 {"msgsndp",     XRTRA(31,142,0,0), XRTRA_MASK, POWER8,  0,              {RB}},
6547 {"dcbtstlse",   X(31,142),      X_MASK,      PPCCHLK,   E500MC,         {CT, RA0, RB}},
6548
6549 {"mtcr",        XFXM(31,144,0xff,0), XRARB_MASK, COM,   0,              {RS}},
6550 {"mtcrf",       XFXM(31,144,0,0), XFXFXM_MASK, COM,     0,              {FXM, RS}},
6551 {"mtocrf",      XFXM(31,144,0,1), XFXFXM_MASK, COM,     0,              {FXM, RS}},
6552
6553 {"mtmsr",       X(31,146),      XRLARB_MASK, COM,       0,              {RS, A_L}},
6554
6555 {"mtsle",       X(31,147),    XRTLRARB_MASK, POWER8,    0,              {L}},
6556
6557 {"eratsx",      XRC(31,147,0),  X_MASK,      PPCA2,     0,              {RT, RA0, RB}},
6558 {"eratsx.",     XRC(31,147,1),  X_MASK,      PPCA2,     0,              {RT, RA0, RB}},
6559
6560 {"stdx",        X(31,149),      X_MASK,      PPC64,     0,              {RS, RA0, RB}},
6561
6562 {"stwcx.",      XRC(31,150,1),  X_MASK,      PPC,       0,              {RS, RA0, RB}},
6563
6564 {"stwx",        X(31,151),      X_MASK,      PPCCOM,    0,              {RS, RA0, RB}},
6565 {"stx",         X(31,151),      X_MASK,      PWRCOM,    0,              {RS, RA, RB}},
6566
6567 {"slq",         XRC(31,152,0),  X_MASK,      M601,      0,              {RA, RS, RB}},
6568 {"slq.",        XRC(31,152,1),  X_MASK,      M601,      0,              {RA, RS, RB}},
6569
6570 {"sle",         XRC(31,153,0),  X_MASK,      M601,      0,              {RA, RS, RB}},
6571 {"sle.",        XRC(31,153,1),  X_MASK,      M601,      0,              {RA, RS, RB}},
6572
6573 {"prtyw",       X(31,154),    XRB_MASK, POWER6|PPCA2|PPC476, 0,         {RA, RS}},
6574
6575 {"brw",         X(31,155),      XRB_MASK,    POWER10,   0,              {RA, RS}},
6576 {"pdepd",       X(31,156),      X_MASK,      POWER10,   0,              {RA, RS, RB}},
6577
6578 {"stdepx",      X(31,157),      X_MASK,   E500MC|PPCA2, 0,              {RS, RA0, RB}},
6579
6580 {"stwepx",      X(31,159),      X_MASK,   E500MC|PPCA2, 0,              {RS, RA0, RB}},
6581
6582 {"wrteei",      X(31,163), XE_MASK, PPC403|BOOKE|PPCA2|PPC476, 0,       {E}},
6583
6584 {"dcbtls",      X(31,166),      X_MASK,  PPCCHLK|PPC476|TITAN, 0,       {CT, RA0, RB}},
6585
6586 {"stvehx",      X(31,167),      X_MASK,      PPCVEC,    0,              {VS, RA0, RB}},
6587 {"sthfcmx",     APU(31,167,0),  APU_MASK,    PPC405,    0,              {FCRT, RA, RB}},
6588
6589 {"addex",       ZRC(31,170,0),  Z2_MASK,     POWER9,    0,              {RT, RA, RB, CY}},
6590
6591 {"stxvrhx",     X(31,173),      XX1_MASK,    POWER10,   0,              {XT6, RA0, RB}},
6592
6593 {"msgclrp",     XRTRA(31,174,0,0), XRTRA_MASK, POWER8,  0,              {RB}},
6594 {"dcbtlse",     X(31,174),      X_MASK,      PPCCHLK,   E500MC,         {CT, RA0, RB}},
6595
6596 {"xxmfacc",     XVA(31,177,0), XRARB_MASK|3<<21, POWER10, 0,            {ACC}},
6597 {"xxmtacc",     XVA(31,177,1), XRARB_MASK|3<<21, POWER10, 0,            {ACC}},
6598 {"xxsetaccz",   XVA(31,177,3), XRARB_MASK|3<<21, POWER10, 0,            {ACC}},
6599
6600 {"mtmsrd",      X(31,178),      XRLARB_MASK, PPC64,     0,              {RS, A_L}},
6601
6602 {"mtfprd",      X(31,179),      XX1RB_MASK|1, PPCVSX2,  0,              {FRT, RA}},
6603 {"mtvrd",       X(31,179)|1,    XX1RB_MASK|1, PPCVSX2,  0,              {VD, RA}},
6604 {"mtvsrd",      X(31,179),      XX1RB_MASK,   PPCVSX2,  0,              {XT6, RA}},
6605 {"eratre",      X(31,179),      X_MASK,      PPCA2,     0,              {RT, RA, WS}},
6606
6607 {"stdux",       X(31,181),      X_MASK,      PPC64,     0,              {RS, RAS, RB}},
6608
6609 {"stqcx.",      XRC(31,182,1), X_MASK|Q_MASK, POWER8,   0,              {RSQ, RA0, RB}},
6610 {"wchkall",     X(31,182),      X_MASK,      PPCA2,     0,              {OBF}},
6611
6612 {"stwux",       X(31,183),      X_MASK,      PPCCOM,    0,              {RS, RAS, RB}},
6613 {"stux",        X(31,183),      X_MASK,      PWRCOM,    0,              {RS, RA0, RB}},
6614
6615 {"sliq",        XRC(31,184,0),  X_MASK,      M601,      0,              {RA, RS, SH}},
6616 {"sliq.",       XRC(31,184,1),  X_MASK,      M601,      0,              {RA, RS, SH}},
6617
6618 {"prtyd",       X(31,186),      XRB_MASK, POWER6|PPCA2, 0,              {RA, RS}},
6619
6620 {"brd",         X(31,187),      XRB_MASK,    POWER10,   0,              {RA, RS}},
6621 {"pextd",       X(31,188),      X_MASK,      POWER10,   0,              {RA, RS, RB}},
6622
6623 {"cmprb",       X(31,192),      XCMP_MASK,   POWER9,    0,              {BF, L, RA, RB}},
6624
6625 {"icblq.",      XRC(31,198,1),  X_MASK,      E6500,     0,              {CT, RA0, RB}},
6626
6627 {"stvewx",      X(31,199),      X_MASK,      PPCVEC,    0,              {VS, RA0, RB}},
6628 {"stwfcmx",     APU(31,199,0),  APU_MASK,    PPC405,    0,              {FCRT, RA, RB}},
6629
6630 {"subfze",      XO(31,200,0,0), XORB_MASK,   PPCCOM,    0,              {RT, RA}},
6631 {"sfze",        XO(31,200,0,0), XORB_MASK,   PWRCOM,    0,              {RT, RA}},
6632 {"subfze.",     XO(31,200,0,1), XORB_MASK,   PPCCOM,    0,              {RT, RA}},
6633 {"sfze.",       XO(31,200,0,1), XORB_MASK,   PWRCOM,    0,              {RT, RA}},
6634
6635 {"addze",       XO(31,202,0,0), XORB_MASK,   PPCCOM,    0,              {RT, RA}},
6636 {"aze",         XO(31,202,0,0), XORB_MASK,   PWRCOM,    0,              {RT, RA}},
6637 {"addze.",      XO(31,202,0,1), XORB_MASK,   PPCCOM,    0,              {RT, RA}},
6638 {"aze.",        XO(31,202,0,1), XORB_MASK,   PWRCOM,    0,              {RT, RA}},
6639
6640 {"stxvrwx",     X(31,205),      XX1_MASK,    POWER10,   0,              {XT6, RA0, RB}},
6641
6642 {"msgsnd",      XRTRA(31,206,0,0), XRTRA_MASK, E500MC|PPCA2|POWER8, 0,  {RB}},
6643
6644 {"mtsr",        X(31,210), XRB_MASK|(1<<20), COM,       NON32,          {SR, RS}},
6645
6646 {"mtfprwa",     X(31,211),      XX1RB_MASK|1, PPCVSX2,  0,              {FRT, RA}},
6647 {"mtvrwa",      X(31,211)|1,    XX1RB_MASK|1, PPCVSX2,  0,              {VD, RA}},
6648 {"mtvsrwa",     X(31,211),      XX1RB_MASK,   PPCVSX2,  0,              {XT6, RA}},
6649 {"eratwe",      X(31,211),      X_MASK,      PPCA2,     0,              {RS, RA, WS}},
6650
6651 {"ldawx.",      XRC(31,212,1),  X_MASK,      PPCA2,     0,              {RT, RA0, RB}},
6652
6653 {"stdcx.",      XRC(31,214,1),  X_MASK,      PPC64,     0,              {RS, RA0, RB}},
6654
6655 {"stbx",        X(31,215),      X_MASK,      COM,       0,              {RS, RA0, RB}},
6656
6657 {"sllq",        XRC(31,216,0),  X_MASK,      M601,      0,              {RA, RS, RB}},
6658 {"sllq.",       XRC(31,216,1),  X_MASK,      M601,      0,              {RA, RS, RB}},
6659
6660 {"sleq",        XRC(31,217,0),  X_MASK,      M601,      0,              {RA, RS, RB}},
6661 {"sleq.",       XRC(31,217,1),  X_MASK,      M601,      0,              {RA, RS, RB}},
6662
6663 {"brh",         X(31,219),      XRB_MASK,    POWER10,   0,              {RA, RS}},
6664 {"cfuged",      X(31,220),      X_MASK,      POWER10,   0,              {RA, RS, RB}},
6665
6666 {"stbepx",      X(31,223),      X_MASK,   E500MC|PPCA2, 0,              {RS, RA0, RB}},
6667
6668 {"cmpeqb",      X(31,224),      XCMPL_MASK,  POWER9,    0,              {BF, RA, RB}},
6669
6670 {"icblc",       X(31,230),      X_MASK, PPCCHLK|PPC476|TITAN, 0,        {CT, RA0, RB}},
6671
6672 {"stvx",        X(31,231),      X_MASK,      PPCVEC,    0,              {VS, RA0, RB}},
6673 {"stqfcmx",     APU(31,231,0),  APU_MASK,    PPC405,    0,              {FCRT, RA, RB}},
6674
6675 {"subfme",      XO(31,232,0,0), XORB_MASK,   PPCCOM,    0,              {RT, RA}},
6676 {"sfme",        XO(31,232,0,0), XORB_MASK,   PWRCOM,    0,              {RT, RA}},
6677 {"subfme.",     XO(31,232,0,1), XORB_MASK,   PPCCOM,    0,              {RT, RA}},
6678 {"sfme.",       XO(31,232,0,1), XORB_MASK,   PWRCOM,    0,              {RT, RA}},
6679
6680 {"mulld",       XO(31,233,0,0), XO_MASK,     PPC64,     0,              {RT, RA, RB}},
6681 {"mulld.",      XO(31,233,0,1), XO_MASK,     PPC64,     0,              {RT, RA, RB}},
6682
6683 {"addme",       XO(31,234,0,0), XORB_MASK,   PPCCOM,    0,              {RT, RA}},
6684 {"ame",         XO(31,234,0,0), XORB_MASK,   PWRCOM,    0,              {RT, RA}},
6685 {"addme.",      XO(31,234,0,1), XORB_MASK,   PPCCOM,    0,              {RT, RA}},
6686 {"ame.",        XO(31,234,0,1), XORB_MASK,   PWRCOM,    0,              {RT, RA}},
6687
6688 {"mullw",       XO(31,235,0,0), XO_MASK,     PPCCOM,    0,              {RT, RA, RB}},
6689 {"muls",        XO(31,235,0,0), XO_MASK,     PWRCOM,    0,              {RT, RA, RB}},
6690 {"mullw.",      XO(31,235,0,1), XO_MASK,     PPCCOM,    0,              {RT, RA, RB}},
6691 {"muls.",       XO(31,235,0,1), XO_MASK,     PWRCOM,    0,              {RT, RA, RB}},
6692
6693 {"stxvrdx",     X(31,237),      XX1_MASK,    POWER10,   0,              {XT6, RA0, RB}},
6694
6695 {"icblce",      X(31,238),      X_MASK,      PPCCHLK,   E500MC|PPCA2,   {CT, RA, RB}},
6696 {"msgclr",      XRTRA(31,238,0,0), XRTRA_MASK, E500MC|PPCA2|POWER8, 0,  {RB}},
6697 {"mtsrin",      X(31,242),      XRA_MASK,    PPC,       NON32,          {RS, RB}},
6698 {"mtsri",       X(31,242),      XRA_MASK,    POWER,     NON32,          {RS, RB}},
6699
6700 {"mtfprwz",     X(31,243),      XX1RB_MASK|1, PPCVSX2,  0,              {FRT, RA}},
6701 {"mtvrwz",      X(31,243)|1,    XX1RB_MASK|1, PPCVSX2,  0,              {VD, RA}},
6702 {"mtvsrwz",     X(31,243),      XX1RB_MASK,   PPCVSX2,  0,              {XT6, RA}},
6703
6704 {"dcbtstt",     XRT(31,246,0x10), XRT_MASK,  POWER7,    0,              {RA0, RB}},
6705 {"dcbtstct",    X(31,246),      X_MASK,      POWER4,    0,              {RA0, RB, THCT}},
6706 {"dcbtstds",    X(31,246),      X_MASK,      POWER4,    0,              {RA0, RB, THDS}},
6707 {"dcbtst",      X(31,246),      X_MASK,      POWER4,    DCBT_EO,        {RA0, RB, CT}},
6708 {"dcbtst",      X(31,246),      X_MASK,      DCBT_EO,   0,              {CT, RA0, RB}},
6709 {"dcbtst",      X(31,246),      X_MASK,      PPC,       POWER4|DCBT_EO, {RA0, RB}},
6710
6711 {"stbux",       X(31,247),      X_MASK,      COM,       0,              {RS, RAS, RB}},
6712
6713 {"slliq",       XRC(31,248,0),  X_MASK,      M601,      0,              {RA, RS, SH}},
6714 {"slliq.",      XRC(31,248,1),  X_MASK,      M601,      0,              {RA, RS, SH}},
6715
6716 {"bpermd",      X(31,252),      X_MASK,   POWER7|PPCA2, 0,              {RA, RS, RB}},
6717
6718 {"dcbtstep",    XRT(31,255,0),  X_MASK,   E500MC|PPCA2, 0,              {RT, RA0, RB}},
6719
6720 {"mfdcrx",      X(31,259),      X_MASK, BOOKE|PPCA2|PPC476, TITAN,      {RS, RA}},
6721 {"mfdcrx.",     XRC(31,259,1),  X_MASK,      PPCA2,     0,              {RS, RA}},
6722
6723 {"lvexbx",      X(31,261),      X_MASK,      E6500,     0,              {VD, RA0, RB}},
6724
6725 {"icbt",        X(31,262),      XRT_MASK,    PPC403,    0,              {RA, RB}},
6726
6727 {"lvepxl",      X(31,263),      X_MASK,      E6500,     0,              {VD, RA0, RB}},
6728
6729 {"ldfcmx",      APU(31,263,0),  APU_MASK,    PPC405,    0,              {FCRT, RA, RB}},
6730 {"doz",         XO(31,264,0,0), XO_MASK,     M601,      0,              {RT, RA, RB}},
6731 {"doz.",        XO(31,264,0,1), XO_MASK,     M601,      0,              {RT, RA, RB}},
6732
6733 {"modud",       X(31,265),      X_MASK,      POWER9,    0,              {RT, RA, RB}},
6734
6735 {"add",         XO(31,266,0,0), XO_MASK,     PPCCOM,    0,              {RT, RA, RB}},
6736 {"cax",         XO(31,266,0,0), XO_MASK,     PWRCOM,    0,              {RT, RA, RB}},
6737 {"add.",        XO(31,266,0,1), XO_MASK,     PPCCOM,    0,              {RT, RA, RB}},
6738 {"cax.",        XO(31,266,0,1), XO_MASK,     PWRCOM,    0,              {RT, RA, RB}},
6739
6740 {"moduw",       X(31,267),      X_MASK,      POWER9,    0,              {RT, RA, RB}},
6741
6742 {"lxvx",        X(31,268),      XX1_MASK|1<<6, PPCVSX3, 0,              {XT6, RA0, RB}},
6743 {"lxvl",        X(31,269),      XX1_MASK,    PPCVSX3,   0,              {XT6, RA0, RB}},
6744
6745 {"ehpriv",      X(31,270),      0xffffffff,  E500MC|PPCA2, 0,           {0}},
6746
6747 {"tlbiel",      X(31,274),      X_MASK|1<<20,POWER9,    0,              {RB, RSO, RIC, PRS, X_R}},
6748 {"tlbiel",      X(31,274),      XRTLRA_MASK, POWER4,    POWER9|PPC476,  {RB, LOPT}},
6749
6750 {"mfapidi",     X(31,275),      X_MASK,      BOOKE,     E500|TITAN,     {RT, RA}},
6751
6752 {"lqarx",       X(31,276),  XEH_MASK|Q_MASK, POWER8,    0,              {RTQ, RAX, RBX, EH}},
6753
6754 {"lscbx",       XRC(31,277,0),  X_MASK,      M601,      0,              {RT, RA, RB}},
6755 {"lscbx.",      XRC(31,277,1),  X_MASK,      M601,      0,              {RT, RA, RB}},
6756
6757 {"dcbtt",       XRT(31,278,0x10), XRT_MASK,  POWER7,    0,              {RA0, RB}},
6758 {"dcbna",       XRT(31,278,0x11), XRT_MASK,  POWER10,   0,              {RA0, RB}},
6759 {"dcbtct",      X(31,278),      X_MASK,      POWER4,    0,              {RA0, RB, THCT}},
6760 {"dcbtds",      X(31,278),      X_MASK,      POWER4,    0,              {RA0, RB, THDS}},
6761 {"dcbt",        X(31,278),      X_MASK,      POWER4,    DCBT_EO,        {RA0, RB, CT}},
6762 {"dcbt",        X(31,278),      X_MASK,      DCBT_EO,   0,              {CT, RA0, RB}},
6763 {"dcbt",        X(31,278),      X_MASK,      PPC,       POWER4|DCBT_EO, {RA0, RB}},
6764
6765 {"lhzx",        X(31,279),      X_MASK,      COM,       0,              {RT, RA0, RB}},
6766
6767 {"cdtbcd",      X(31,282),      XRB_MASK,    POWER6,    0,              {RA, RS}},
6768
6769 {"eqv",         XRC(31,284,0),  X_MASK,      COM,       0,              {RA, RS, RB}},
6770 {"eqv.",        XRC(31,284,1),  X_MASK,      COM,       0,              {RA, RS, RB}},
6771
6772 {"lhepx",       X(31,287),      X_MASK,   E500MC|PPCA2, 0,              {RT, RA0, RB}},
6773
6774 {"mfdcrux",     X(31,291),      X_MASK,  PPC464|PPC476, 0,              {RS, RA}},
6775
6776 {"lvexhx",      X(31,293),      X_MASK,      E6500,     0,              {VD, RA0, RB}},
6777 {"lvepx",       X(31,295),      X_MASK,      E6500,     0,              {VD, RA0, RB}},
6778
6779 {"lxvll",       X(31,301),      XX1_MASK,    PPCVSX3,   0,              {XT6, RA0, RB}},
6780
6781 {"mfbhrbe",     X(31,302),      X_MASK,      POWER8,    0,              {RT, BHRBE}},
6782
6783 {"tlbie",       X(31,306),      X_MASK|1<<20,POWER9,    TITAN,          {RB, RS, RIC, PRS, X_R}},
6784 {"tlbie",       X(31,306),      XRA_MASK,    POWER7,    POWER9|TITAN,   {RB, RS}},
6785 {"tlbie",       X(31,306),      XRTLRA_MASK, PPC,    E500|POWER7|TITAN, {RB, LOPT}},
6786 {"tlbi",        X(31,306),      XRT_MASK,    POWER,     0,              {RA0, RB}},
6787
6788 {"mfvsrld",     X(31,307),      XX1RB_MASK,  PPCVSX3,   0,              {RA, XS6}},
6789
6790 {"eciwx",       X(31,310),      X_MASK,      PPC,       E500|TITAN,     {RT, RA0, RB}},
6791
6792 {"lhzux",       X(31,311),      X_MASK,      COM,       0,              {RT, RAL, RB}},
6793
6794 {"cbcdtd",      X(31,314),      XRB_MASK,    POWER6,    0,              {RA, RS}},
6795
6796 {"xor",         XRC(31,316,0),  X_MASK,      COM,       0,              {RA, RS, RB}},
6797 {"xor.",        XRC(31,316,1),  X_MASK,      COM,       0,              {RA, RS, RB}},
6798
6799 {"dcbtep",      XRT(31,319,0),  X_MASK,   E500MC|PPCA2, 0,              {RT, RA0, RB}},
6800
6801 {"mfexisr",     XSPR(31,323, 64), XSPR_MASK, PPC403,    0,              {RT}},
6802 {"mfexier",     XSPR(31,323, 66), XSPR_MASK, PPC403,    0,              {RT}},
6803 {"mfbr0",       XSPR(31,323,128), XSPR_MASK, PPC403,    0,              {RT}},
6804 {"mfbr1",       XSPR(31,323,129), XSPR_MASK, PPC403,    0,              {RT}},
6805 {"mfbr2",       XSPR(31,323,130), XSPR_MASK, PPC403,    0,              {RT}},
6806 {"mfbr3",       XSPR(31,323,131), XSPR_MASK, PPC403,    0,              {RT}},
6807 {"mfbr4",       XSPR(31,323,132), XSPR_MASK, PPC403,    0,              {RT}},
6808 {"mfbr5",       XSPR(31,323,133), XSPR_MASK, PPC403,    0,              {RT}},
6809 {"mfbr6",       XSPR(31,323,134), XSPR_MASK, PPC403,    0,              {RT}},
6810 {"mfbr7",       XSPR(31,323,135), XSPR_MASK, PPC403,    0,              {RT}},
6811 {"mfbear",      XSPR(31,323,144), XSPR_MASK, PPC403,    0,              {RT}},
6812 {"mfbesr",      XSPR(31,323,145), XSPR_MASK, PPC403,    0,              {RT}},
6813 {"mfiocr",      XSPR(31,323,160), XSPR_MASK, PPC403,    0,              {RT}},
6814 {"mfdmacr0",    XSPR(31,323,192), XSPR_MASK, PPC403,    0,              {RT}},
6815 {"mfdmact0",    XSPR(31,323,193), XSPR_MASK, PPC403,    0,              {RT}},
6816 {"mfdmada0",    XSPR(31,323,194), XSPR_MASK, PPC403,    0,              {RT}},
6817 {"mfdmasa0",    XSPR(31,323,195), XSPR_MASK, PPC403,    0,              {RT}},
6818 {"mfdmacc0",    XSPR(31,323,196), XSPR_MASK, PPC403,    0,              {RT}},
6819 {"mfdmacr1",    XSPR(31,323,200), XSPR_MASK, PPC403,    0,              {RT}},
6820 {"mfdmact1",    XSPR(31,323,201), XSPR_MASK, PPC403,    0,              {RT}},
6821 {"mfdmada1",    XSPR(31,323,202), XSPR_MASK, PPC403,    0,              {RT}},
6822 {"mfdmasa1",    XSPR(31,323,203), XSPR_MASK, PPC403,    0,              {RT}},
6823 {"mfdmacc1",    XSPR(31,323,204), XSPR_MASK, PPC403,    0,              {RT}},
6824 {"mfdmacr2",    XSPR(31,323,208), XSPR_MASK, PPC403,    0,              {RT}},
6825 {"mfdmact2",    XSPR(31,323,209), XSPR_MASK, PPC403,    0,              {RT}},
6826 {"mfdmada2",    XSPR(31,323,210), XSPR_MASK, PPC403,    0,              {RT}},
6827 {"mfdmasa2",    XSPR(31,323,211), XSPR_MASK, PPC403,    0,              {RT}},
6828 {"mfdmacc2",    XSPR(31,323,212), XSPR_MASK, PPC403,    0,              {RT}},
6829 {"mfdmacr3",    XSPR(31,323,216), XSPR_MASK, PPC403,    0,              {RT}},
6830 {"mfdmact3",    XSPR(31,323,217), XSPR_MASK, PPC403,    0,              {RT}},
6831 {"mfdmada3",    XSPR(31,323,218), XSPR_MASK, PPC403,    0,              {RT}},
6832 {"mfdmasa3",    XSPR(31,323,219), XSPR_MASK, PPC403,    0,              {RT}},
6833 {"mfdmacc3",    XSPR(31,323,220), XSPR_MASK, PPC403,    0,              {RT}},
6834 {"mfdmasr",     XSPR(31,323,224), XSPR_MASK, PPC403,    0,              {RT}},
6835 {"mfdcr",       X(31,323), X_MASK, PPC403|BOOKE|PPCA2|PPC476, E500|TITAN, {RT, SPR}},
6836 {"mfdcr.",      XRC(31,323,1),  X_MASK,      PPCA2,     0,              {RT, SPR}},
6837
6838 {"lvexwx",      X(31,325),      X_MASK,      E6500,     0,              {VD, RA0, RB}},
6839
6840 {"dcread",      X(31,326),      X_MASK,   PPC476|TITAN, 0,              {RT, RA0, RB}},
6841
6842 {"div",         XO(31,331,0,0), XO_MASK,     M601,      0,              {RT, RA, RB}},
6843 {"div.",        XO(31,331,0,1), XO_MASK,     M601,      0,              {RT, RA, RB}},
6844
6845 {"lxvdsx",      X(31,332),      XX1_MASK,    PPCVSX,    0,              {XT6, RA0, RB}},
6846
6847 {"lxvpx",       X(31,333),      XX1_MASK,    POWER10,   0,              {XTP, RA0, RB}},
6848
6849 {"mfpmr",       X(31,334),      X_MASK, PPCPMR|PPCE300, 0,              {RT, PMR}},
6850 {"mftmr",       X(31,366),      X_MASK,      PPCTMR,    0,              {RT, TMR}},
6851
6852 {"slbsync",     X(31,338),      0xffffffff,  POWER9,    0,              {0}},
6853
6854 {"mfmq",        XSPR(31,339,  0), XSPR_MASK, M601,      0,              {RT}},
6855 {"mfxer",       XSPR(31,339,  1), XSPR_MASK, COM,       0,              {RT}},
6856 {"mfudscr",     XSPR(31,339,  3), XSPR_MASK, POWER9,    0,              {RS}},
6857 {"mfrtcu",      XSPR(31,339,  4), XSPR_MASK, COM,       TITAN,          {RT}},
6858 {"mfrtcl",      XSPR(31,339,  5), XSPR_MASK, COM,       TITAN,          {RT}},
6859 {"mfdec",       XSPR(31,339,  6), XSPR_MASK, MFDEC1,    0,              {RT}},
6860 {"mflr",        XSPR(31,339,  8), XSPR_MASK, COM,       0,              {RT}},
6861 {"mfctr",       XSPR(31,339,  9), XSPR_MASK, COM,       0,              {RT}},
6862 {"mfuamr",      XSPR(31,339, 13), XSPR_MASK, POWER9,    0,              {RS}},
6863 {"mfdscr",      XSPR(31,339, 17), XSPR_MASK, POWER6,    0,              {RT}},
6864 {"mftid",       XSPR(31,339, 17), XSPR_MASK, POWER,     0,              {RT}},
6865 {"mfdsisr",     XSPR(31,339, 18), XSPR_MASK, COM,       TITAN,          {RT}},
6866 {"mfdar",       XSPR(31,339, 19), XSPR_MASK, COM,       TITAN,          {RT}},
6867 {"mfdec",       XSPR(31,339, 22), XSPR_MASK, MFDEC2,    MFDEC1,         {RT}},
6868 {"mfsdr0",      XSPR(31,339, 24), XSPR_MASK, POWER,     0,              {RT}},
6869 {"mfsdr1",      XSPR(31,339, 25), XSPR_MASK, COM,       TITAN,          {RT}},
6870 {"mfsrr0",      XSPR(31,339, 26), XSPR_MASK, COM,       0,              {RT}},
6871 {"mfsrr1",      XSPR(31,339, 27), XSPR_MASK, COM,       0,              {RT}},
6872 {"mfcfar",      XSPR(31,339, 28), XSPR_MASK, POWER6,    0,              {RT}},
6873 {"mfamr",       XSPR(31,339, 29), XSPR_MASK, POWER7,    0,              {RS}},
6874 {"mfpidr",      XSPR(31,339, 48), XSPR_MASK, POWER10,   0,              {RS}},
6875 {"mfpid",       XSPR(31,339, 48), XSPR_MASK, BOOKE,     0,              {RT}},
6876 {"mfcsrr0",     XSPR(31,339, 58), XSPR_MASK, BOOKE,     0,              {RT}},
6877 {"mfcsrr1",     XSPR(31,339, 59), XSPR_MASK, BOOKE,     0,              {RT}},
6878 {"mfiamr",      XSPR(31,339, 61), XSPR_MASK, POWER10,   0,              {RS}},
6879 {"mfdear",      XSPR(31,339, 61), XSPR_MASK, BOOKE,     0,              {RT}},
6880 {"mfesr",       XSPR(31,339, 62), XSPR_MASK, BOOKE,     0,              {RT}},
6881 {"mfivpr",      XSPR(31,339, 63), XSPR_MASK, BOOKE,     0,              {RT}},
6882 {"mfctrl",      XSPR(31,339,136), XSPR_MASK, POWER4,    0,              {RT}},
6883 {"mfcmpa",      XSPR(31,339,144), XSPR_MASK, PPC860,    0,              {RT}},
6884 {"mfcmpb",      XSPR(31,339,145), XSPR_MASK, PPC860,    0,              {RT}},
6885 {"mfcmpc",      XSPR(31,339,146), XSPR_MASK, PPC860,    0,              {RT}},
6886 {"mfcmpd",      XSPR(31,339,147), XSPR_MASK, PPC860,    0,              {RT}},
6887 {"mficr",       XSPR(31,339,148), XSPR_MASK, PPC860,    0,              {RT}},
6888 {"mfder",       XSPR(31,339,149), XSPR_MASK, PPC860,    0,              {RT}},
6889 {"mfcounta",    XSPR(31,339,150), XSPR_MASK, PPC860,    0,              {RT}},
6890 {"mfcountb",    XSPR(31,339,151), XSPR_MASK, PPC860,    0,              {RT}},
6891 {"mfcmpe",      XSPR(31,339,152), XSPR_MASK, PPC860,    0,              {RT}},
6892 {"mffscr",      XSPR(31,339,153), XSPR_MASK, POWER10,   0,              {RS}},
6893 {"mfcmpf",      XSPR(31,339,153), XSPR_MASK, PPC860,    0,              {RT}},
6894 {"mfcmpg",      XSPR(31,339,154), XSPR_MASK, PPC860,    0,              {RT}},
6895 {"mfcmph",      XSPR(31,339,155), XSPR_MASK, PPC860,    0,              {RT}},
6896 {"mflctrl1",    XSPR(31,339,156), XSPR_MASK, PPC860,    0,              {RT}},
6897 {"mfuamor",     XSPR(31,339,157), XSPR_MASK, POWER7,    0,              {RS}},
6898 {"mflctrl2",    XSPR(31,339,157), XSPR_MASK, PPC860,    0,              {RT}},
6899 {"mfictrl",     XSPR(31,339,158), XSPR_MASK, PPC860,    0,              {RT}},
6900 {"mfpspb",      XSPR(31,339,159), XSPR_MASK, POWER10,   0,              {RS}},
6901 {"mfbar",       XSPR(31,339,159), XSPR_MASK, PPC860,    0,              {RT}},
6902 {"mfdpdes",     XSPR(31,339,176), XSPR_MASK, POWER10,   0,              {RS}},
6903 {"mfdawr0",     XSPR(31,339,180), XSPR_MASK, POWER10,   0,              {RS}},
6904 {"mfdawr1",     XSPR(31,339,181), XSPR_MASK, POWER10,   0,              {RS}},
6905 {"mfrpr",       XSPR(31,339,186), XSPR_MASK, POWER10,   0,              {RS}},
6906 {"mfciabr",     XSPR(31,339,187), XSPR_MASK, POWER10,   0,              {RS}},
6907 {"mfdawrx0",    XSPR(31,339,188), XSPR_MASK, POWER10,   0,              {RS}},
6908 {"mfdawrx1",    XSPR(31,339,189), XSPR_MASK, POWER10,   0,              {RS}},
6909 {"mfhfscr",     XSPR(31,339,190), XSPR_MASK, POWER10,   0,              {RS}},
6910 {"mfvrsave",    XSPR(31,339,256), XSPR_MASK, PPCVEC,    0,              {RT}},
6911 {"mfusprg0",    XSPR(31,339,256), XSPR_MASK, BOOKE,     0,              {RT}},
6912 {"mfsprg",      XSPR(31,339,256), XSPRG_MASK, PPC,      0,              {RT, SPRG}},
6913 {"mfusprg3",    XSPR(31,339,259), XSPR_MASK, POWER10,   0,              {RT}},
6914 {"mfsprg4",     XSPR(31,339,260), XSPR_MASK, PPC405|BOOKE, 0,           {RT}},
6915 {"mfsprg5",     XSPR(31,339,261), XSPR_MASK, PPC405|BOOKE, 0,           {RT}},
6916 {"mfsprg6",     XSPR(31,339,262), XSPR_MASK, PPC405|BOOKE, 0,           {RT}},
6917 {"mfsprg7",     XSPR(31,339,263), XSPR_MASK, PPC405|BOOKE, 0,           {RT}},
6918 {"mftbu",       XSPR(31,339,269), XSPR_MASK, POWER4|BOOKE, 0,           {RT}},
6919 {"mftb",        X(31,339),        X_MASK,    POWER4|BOOKE, 0,           {RT, TBR}},
6920 {"mftbl",       XSPR(31,339,268), XSPR_MASK, POWER4|BOOKE, 0,           {RT}},
6921 {"mfsprg0",     XSPR(31,339,272), XSPR_MASK, PPC,       0,              {RT}},
6922 {"mfsprg1",     XSPR(31,339,273), XSPR_MASK, PPC,       0,              {RT}},
6923 {"mfsprg2",     XSPR(31,339,274), XSPR_MASK, PPC,       0,              {RT}},
6924 {"mfsprg3",     XSPR(31,339,275), XSPR_MASK, PPC,       0,              {RT}},
6925 {"mfasr",       XSPR(31,339,280), XSPR_MASK, PPC64,     0,              {RT}},
6926 {"mfear",       XSPR(31,339,282), XSPR_MASK, PPC,       TITAN,          {RT}},
6927 {"mfpir",       XSPR(31,339,286), XSPR_MASK, BOOKE,     0,              {RT}},
6928 {"mfpvr",       XSPR(31,339,287), XSPR_MASK, PPC,       0,              {RT}},
6929 {"mfhsprg0",    XSPR(31,339,304), XSPR_MASK, POWER10,   0,              {RS}},
6930 {"mfdbsr",      XSPR(31,339,304), XSPR_MASK, BOOKE,     0,              {RT}},
6931 {"mfhsprg1",    XSPR(31,339,305), XSPR_MASK, POWER10,   0,              {RS}},
6932 {"mfhdisr",     XSPR(31,339,306), XSPR_MASK, POWER10,   0,              {RS}},
6933 {"mfhdar",      XSPR(31,339,307), XSPR_MASK, POWER10,   0,              {RS}},
6934 {"mfspurr",     XSPR(31,339,308), XSPR_MASK, POWER10,   0,              {RS}},
6935 {"mfdbcr0",     XSPR(31,339,308), XSPR_MASK, BOOKE,     0,              {RT}},
6936 {"mfpurr",      XSPR(31,339,309), XSPR_MASK, POWER10,   0,              {RS}},
6937 {"mfdbcr1",     XSPR(31,339,309), XSPR_MASK, BOOKE,     0,              {RT}},
6938 {"mfhdec",      XSPR(31,339,310), XSPR_MASK, POWER10,   0,              {RS}},
6939 {"mfdbcr2",     XSPR(31,339,310), XSPR_MASK, BOOKE,     0,              {RT}},
6940 {"mfiac1",      XSPR(31,339,312), XSPR_MASK, BOOKE,     0,              {RT}},
6941 {"mfhrmor",     XSPR(31,339,313), XSPR_MASK, POWER10,   0,              {RS}},
6942 {"mfiac2",      XSPR(31,339,313), XSPR_MASK, BOOKE,     0,              {RT}},
6943 {"mfhsrr0",     XSPR(31,339,314), XSPR_MASK, POWER10,   0,              {RS}},
6944 {"mfiac3",      XSPR(31,339,314), XSPR_MASK, BOOKE,     0,              {RT}},
6945 {"mfhsrr1",     XSPR(31,339,315), XSPR_MASK, POWER10,   0,              {RS}},
6946 {"mfiac4",      XSPR(31,339,315), XSPR_MASK, BOOKE,     0,              {RT}},
6947 {"mfdac1",      XSPR(31,339,316), XSPR_MASK, BOOKE,     0,              {RT}},
6948 {"mfdac2",      XSPR(31,339,317), XSPR_MASK, BOOKE,     0,              {RT}},
6949 {"mflpcr",      XSPR(31,339,318), XSPR_MASK, POWER10,   0,              {RS}},
6950 {"mfdvc1",      XSPR(31,339,318), XSPR_MASK, BOOKE,     0,              {RT}},
6951 {"mflpidr",     XSPR(31,339,319), XSPR_MASK, POWER10,   0,              {RS}},
6952 {"mfdvc2",      XSPR(31,339,319), XSPR_MASK, BOOKE,     0,              {RT}},
6953 {"mfhmer",      XSPR(31,339,336), XSPR_MASK, POWER7,    0,              {RS}},
6954 {"mftsr",       XSPR(31,339,336), XSPR_MASK, BOOKE,     0,              {RT}},
6955 {"mfhmeer",     XSPR(31,339,337), XSPR_MASK, POWER7,    0,              {RS}},
6956 {"mfpcr",       XSPR(31,339,338), XSPR_MASK, POWER10,   0,              {RS}},
6957 {"mfheir",      XSPR(31,339,339), XSPR_MASK, POWER10,   0,              {RS}},
6958 {"mftcr",       XSPR(31,339,340), XSPR_MASK, BOOKE,     0,              {RT}},
6959 {"mfamor",      XSPR(31,339,349), XSPR_MASK, POWER7,    0,              {RS}},
6960 {"mfivor0",     XSPR(31,339,400), XSPR_MASK, BOOKE,     0,              {RT}},
6961 {"mfivor1",     XSPR(31,339,401), XSPR_MASK, BOOKE,     0,              {RT}},
6962 {"mfivor2",     XSPR(31,339,402), XSPR_MASK, BOOKE,     0,              {RT}},
6963 {"mfivor3",     XSPR(31,339,403), XSPR_MASK, BOOKE,     0,              {RT}},
6964 {"mfivor4",     XSPR(31,339,404), XSPR_MASK, BOOKE,     0,              {RT}},
6965 {"mfivor5",     XSPR(31,339,405), XSPR_MASK, BOOKE,     0,              {RT}},
6966 {"mfivor6",     XSPR(31,339,406), XSPR_MASK, BOOKE,     0,              {RT}},
6967 {"mfivor7",     XSPR(31,339,407), XSPR_MASK, BOOKE,     0,              {RT}},
6968 {"mfivor8",     XSPR(31,339,408), XSPR_MASK, BOOKE,     0,              {RT}},
6969 {"mfivor9",     XSPR(31,339,409), XSPR_MASK, BOOKE,     0,              {RT}},
6970 {"mfivor10",    XSPR(31,339,410), XSPR_MASK, BOOKE,     0,              {RT}},
6971 {"mfivor11",    XSPR(31,339,411), XSPR_MASK, BOOKE,     0,              {RT}},
6972 {"mfivor12",    XSPR(31,339,412), XSPR_MASK, BOOKE,     0,              {RT}},
6973 {"mfivor13",    XSPR(31,339,413), XSPR_MASK, BOOKE,     0,              {RT}},
6974 {"mfivor14",    XSPR(31,339,414), XSPR_MASK, BOOKE,     0,              {RT}},
6975 {"mfivor15",    XSPR(31,339,415), XSPR_MASK, BOOKE,     0,              {RT}},
6976 {"mftir",       XSPR(31,339,446), XSPR_MASK, POWER10,   0,              {RS}},
6977 {"mfptcr",      XSPR(31,339,464), XSPR_MASK, POWER10,   0,              {RS}},
6978 {"mfusprg0",    XSPR(31,339,496), XSPR_MASK, POWER10,   0,              {RS}},
6979 {"mfusprg1",    XSPR(31,339,497), XSPR_MASK, POWER10,   0,              {RS}},
6980 {"mfurmor",     XSPR(31,339,505), XSPR_MASK, POWER10,   0,              {RS}},
6981 {"mfusrr0",     XSPR(31,339,506), XSPR_MASK, POWER10,   0,              {RS}},
6982 {"mfusrr1",     XSPR(31,339,507), XSPR_MASK, POWER10,   0,              {RS}},
6983 {"mfsmfctrl",   XSPR(31,339,511), XSPR_MASK, POWER10,   0,              {RS}},
6984 {"mfspefscr",   XSPR(31,339,512), XSPR_MASK, PPCSPE,    0,              {RT}},
6985 {"mfbbear",     XSPR(31,339,513), XSPR_MASK, PPCBRLK,   0,              {RT}},
6986 {"mfbbtar",     XSPR(31,339,514), XSPR_MASK, PPCBRLK,   0,              {RT}},
6987 {"mfivor32",    XSPR(31,339,528), XSPR_MASK, PPCSPE|E6500, 0,           {RT}},
6988 {"mfivor33",    XSPR(31,339,529), XSPR_MASK, PPCSPE|E6500, 0,           {RT}},
6989 {"mfivor34",    XSPR(31,339,530), XSPR_MASK, PPCSPE,    0,              {RT}},
6990 {"mfivor35",    XSPR(31,339,531), XSPR_MASK, PPCPMR,    0,              {RT}},
6991 {"mfibatu",     XSPR(31,339,528), XSPRBAT_MASK, PPC,    TITAN,          {RT, SPRBAT}},
6992 {"mfibatl",     XSPR(31,339,529), XSPRBAT_MASK, PPC,    TITAN,          {RT, SPRBAT}},
6993 {"mfdbatu",     XSPR(31,339,536), XSPRBAT_MASK, PPC,    TITAN,          {RT, SPRBAT}},
6994 {"mfdbatl",     XSPR(31,339,537), XSPRBAT_MASK, PPC,    TITAN,          {RT, SPRBAT}},
6995 {"mfic_cst",    XSPR(31,339,560), XSPR_MASK, PPC860,    0,              {RT}},
6996 {"mfic_adr",    XSPR(31,339,561), XSPR_MASK, PPC860,    0,              {RT}},
6997 {"mfic_dat",    XSPR(31,339,562), XSPR_MASK, PPC860,    0,              {RT}},
6998 {"mfdc_cst",    XSPR(31,339,568), XSPR_MASK, PPC860,    0,              {RT}},
6999 {"mfdc_adr",    XSPR(31,339,569), XSPR_MASK, PPC860,    0,              {RT}},
7000 {"mfdc_dat",    XSPR(31,339,570), XSPR_MASK, PPC860,    0,              {RT}},
7001 {"mfmcsrr0",    XSPR(31,339,570), XSPR_MASK, PPCRFMCI,  0,              {RT}},
7002 {"mfmcsrr1",    XSPR(31,339,571), XSPR_MASK, PPCRFMCI,  0,              {RT}},
7003 {"mfmcsr",      XSPR(31,339,572), XSPR_MASK, PPCRFMCI,  0,              {RT}},
7004 {"mfmcar",      XSPR(31,339,573), XSPR_MASK, PPCRFMCI,  TITAN,          {RT}},
7005 {"mfdpdr",      XSPR(31,339,630), XSPR_MASK, PPC860,    0,              {RT}},
7006 {"mfdpir",      XSPR(31,339,631), XSPR_MASK, PPC860,    0,              {RT}},
7007 {"mfimmr",      XSPR(31,339,638), XSPR_MASK, PPC860,    0,              {RT}},
7008 {"mfusier2",    XSPR(31,339,736), XSPR_MASK, POWER10,   0,              {RT}},
7009 {"mfsier2",     XSPR(31,339,736), XSPR_MASK, POWER10,   0,              {RT}},
7010 {"mfusier3",    XSPR(31,339,737), XSPR_MASK, POWER10,   0,              {RT}},
7011 {"mfsier3",     XSPR(31,339,737), XSPR_MASK, POWER10,   0,              {RT}},
7012 {"mfummcr3",    XSPR(31,339,738), XSPR_MASK, POWER10,   0,              {RT}},
7013 {"mfmmcr3",     XSPR(31,339,738), XSPR_MASK, POWER10,   0,              {RT}},
7014 {"mfusier",     XSPR(31,339,768), XSPR_MASK, POWER10,   0,              {RT}},
7015 {"mfsier",      XSPR(31,339,768), XSPR_MASK, POWER10,   0,              {RT}},
7016 {"mfummcr2",    XSPR(31,339,769), XSPR_MASK, POWER9,    0,              {RT}},
7017 {"mfmmcr2",     XSPR(31,339,769), XSPR_MASK, POWER9,    0,              {RT}},
7018 {"mfummcra",    XSPR(31,339,770), XSPR_MASK, POWER9,    0,              {RS}},
7019 {"mfmmcra",     XSPR(31,339,770), XSPR_MASK, POWER7,    0,              {RS}},
7020 {"mfupmc1",     XSPR(31,339,771), XSPR_MASK, POWER9,    0,              {RT}},
7021 {"mfpmc1",      XSPR(31,339,771), XSPR_MASK, POWER7,    0,              {RT}},
7022 {"mfupmc2",     XSPR(31,339,772), XSPR_MASK, POWER9,    0,              {RT}},
7023 {"mfpmc2",      XSPR(31,339,772), XSPR_MASK, POWER7,    0,              {RT}},
7024 {"mfupmc3",     XSPR(31,339,773), XSPR_MASK, POWER9,    0,              {RT}},
7025 {"mfpmc3",      XSPR(31,339,773), XSPR_MASK, POWER7,    0,              {RT}},
7026 {"mfupmc4",     XSPR(31,339,774), XSPR_MASK, POWER9,    0,              {RT}},
7027 {"mfpmc4",      XSPR(31,339,774), XSPR_MASK, POWER7,    0,              {RT}},
7028 {"mfupmc5",     XSPR(31,339,775), XSPR_MASK, POWER9,    0,              {RT}},
7029 {"mfpmc5",      XSPR(31,339,775), XSPR_MASK, POWER7,    0,              {RT}},
7030 {"mfupmc6",     XSPR(31,339,776), XSPR_MASK, POWER9,    0,              {RT}},
7031 {"mfpmc6",      XSPR(31,339,776), XSPR_MASK, POWER7,    0,              {RT}},
7032 {"mfummcr0",    XSPR(31,339,779), XSPR_MASK, POWER9,    0,              {RS}},
7033 {"mfmmcr0",     XSPR(31,339,779), XSPR_MASK, POWER7,    0,              {RS}},
7034 {"mfusiar",     XSPR(31,339,780), XSPR_MASK, POWER9,    0,              {RS}},
7035 {"mfsiar",      XSPR(31,339,780), XSPR_MASK, POWER9,    0,              {RS}},
7036 {"mfusdar",     XSPR(31,339,781), XSPR_MASK, POWER9,    0,              {RS}},
7037 {"mfsdar",      XSPR(31,339,781), XSPR_MASK, POWER9,    0,              {RS}},
7038 {"mfummcr1",    XSPR(31,339,782), XSPR_MASK, POWER9,    0,              {RS}},
7039 {"mfmmcr1",     XSPR(31,339,782), XSPR_MASK, POWER7,    0,              {RS}},
7040 {"mfmi_ctr",    XSPR(31,339,784), XSPR_MASK, PPC860,    0,              {RT}},
7041 {"mfmi_ap",     XSPR(31,339,786), XSPR_MASK, PPC860,    0,              {RT}},
7042 {"mfmi_epn",    XSPR(31,339,787), XSPR_MASK, PPC860,    0,              {RT}},
7043 {"mfmi_twc",    XSPR(31,339,789), XSPR_MASK, PPC860,    0,              {RT}},
7044 {"mfmi_rpn",    XSPR(31,339,790), XSPR_MASK, PPC860,    0,              {RT}},
7045 {"mfmd_ctr",    XSPR(31,339,792), XSPR_MASK, PPC860,    0,              {RT}},
7046 {"mfm_casid",   XSPR(31,339,793), XSPR_MASK, PPC860,    0,              {RT}},
7047 {"mfmd_ap",     XSPR(31,339,794), XSPR_MASK, PPC860,    0,              {RT}},
7048 {"mfmd_epn",    XSPR(31,339,795), XSPR_MASK, PPC860,    0,              {RT}},
7049 {"mfmd_twb",    XSPR(31,339,796), XSPR_MASK, PPC860,    0,              {RT}},
7050 {"mfmd_twc",    XSPR(31,339,797), XSPR_MASK, PPC860,    0,              {RT}},
7051 {"mfmd_rpn",    XSPR(31,339,798), XSPR_MASK, PPC860,    0,              {RT}},
7052 {"mfm_tw",      XSPR(31,339,799), XSPR_MASK, PPC860,    0,              {RT}},
7053 {"mfbescrs",    XSPR(31,339,800), XSPR_MASK, POWER9,    0,              {RS}},
7054 {"mfbescrsu",   XSPR(31,339,801), XSPR_MASK, POWER9,    0,              {RS}},
7055 {"mfbescrr",    XSPR(31,339,802), XSPR_MASK, POWER9,    0,              {RS}},
7056 {"mfbescrru",   XSPR(31,339,803), XSPR_MASK, POWER9,    0,              {RS}},
7057 {"mfebbhr",     XSPR(31,339,804), XSPR_MASK, POWER9,    0,              {RS}},
7058 {"mfebbrr",     XSPR(31,339,805), XSPR_MASK, POWER9,    0,              {RS}},
7059 {"mfbescr",     XSPR(31,339,806), XSPR_MASK, POWER9,    0,              {RS}},
7060 {"mftar",       XSPR(31,339,815), XSPR_MASK, POWER9,    0,              {RS}},
7061 {"mfasdr",      XSPR(31,339,816), XSPR_MASK, POWER10,   0,              {RS}},
7062 {"mfmi_dbcam",  XSPR(31,339,816), XSPR_MASK, PPC860,    0,              {RT}},
7063 {"mfmi_dbram0", XSPR(31,339,817), XSPR_MASK, PPC860,    0,              {RT}},
7064 {"mfmi_dbram1", XSPR(31,339,818), XSPR_MASK, PPC860,    0,              {RT}},
7065 {"mfpsscr",     XSPR(31,339,823), XSPR_MASK, POWER10,   0,              {RS}},
7066 {"mfmd_dbcam",  XSPR(31,339,824), XSPR_MASK, PPC860,    0,              {RT}},
7067 {"mfmd_dbram0", XSPR(31,339,825), XSPR_MASK, PPC860,    0,              {RT}},
7068 {"mfmd_dbram1", XSPR(31,339,826), XSPR_MASK, PPC860,    0,              {RT}},
7069 {"mfic",        XSPR(31,339,848), XSPR_MASK, POWER8,    0,              {RS}},
7070 {"mfvtb",       XSPR(31,339,849), XSPR_MASK, POWER8,    0,              {RS}},
7071 {"mfhpsscr",    XSPR(31,339,855), XSPR_MASK, POWER10,   0,              {RS}},
7072 {"mfivndx",     XSPR(31,339,880), XSPR_MASK, TITAN,     0,              {RT}},
7073 {"mfdvndx",     XSPR(31,339,881), XSPR_MASK, TITAN,     0,              {RT}},
7074 {"mfivlim",     XSPR(31,339,882), XSPR_MASK, TITAN,     0,              {RT}},
7075 {"mfdvlim",     XSPR(31,339,883), XSPR_MASK, TITAN,     0,              {RT}},
7076 {"mfclcsr",     XSPR(31,339,884), XSPR_MASK, TITAN,     0,              {RT}},
7077 {"mfccr1",      XSPR(31,339,888), XSPR_MASK, TITAN,     0,              {RT}},
7078 {"mfppr",       XSPR(31,339,896), XSPR_MASK, POWER7,    0,              {RT}},
7079 {"mfppr32",     XSPR(31,339,898), XSPR_MASK, POWER7,    0,              {RT}},
7080 {"mfgqr",       XSPR(31,339,912), XSPRGQR_MASK, PPCPS,  0,              {RT, SPRGQR}},
7081 {"mfhid2",      XSPR(31,339,920), XSPR_MASK, GEKKO,     0,              {RT}},
7082 {"mfwpar",      XSPR(31,339,921), XSPR_MASK, GEKKO,     0,              {RT}},
7083 {"mfdmau",      XSPR(31,339,922), XSPR_MASK, GEKKO,     0,              {RT}},
7084 {"mfdmal",      XSPR(31,339,923), XSPR_MASK, GEKKO,     0,              {RT}},
7085 {"mfrstcfg",    XSPR(31,339,923), XSPR_MASK, TITAN,     0,              {RT}},
7086 {"mfdcdbtrl",   XSPR(31,339,924), XSPR_MASK, TITAN,     0,              {RT}},
7087 {"mfdcdbtrh",   XSPR(31,339,925), XSPR_MASK, TITAN,     0,              {RT}},
7088 {"mficdbtr",    XSPR(31,339,927), XSPR_MASK, TITAN,     0,              {RT}},
7089 {"mfummcr0",    XSPR(31,339,936), XSPR_MASK, PPC750,    0,              {RT}},
7090 {"mfupmc1",     XSPR(31,339,937), XSPR_MASK, PPC750,    0,              {RT}},
7091 {"mfupmc2",     XSPR(31,339,938), XSPR_MASK, PPC750,    0,              {RT}},
7092 {"mfusia",      XSPR(31,339,939), XSPR_MASK, PPC750,    0,              {RT}},
7093 {"mfummcr1",    XSPR(31,339,940), XSPR_MASK, PPC750,    0,              {RT}},
7094 {"mfupmc3",     XSPR(31,339,941), XSPR_MASK, PPC750,    0,              {RT}},
7095 {"mfupmc4",     XSPR(31,339,942), XSPR_MASK, PPC750,    0,              {RT}},
7096 {"mfzpr",       XSPR(31,339,944), XSPR_MASK, PPC403,    0,              {RT}},
7097 {"mfpid",       XSPR(31,339,945), XSPR_MASK, PPC403,    0,              {RT}},
7098 {"mfmmucr",     XSPR(31,339,946), XSPR_MASK, TITAN,     0,              {RT}},
7099 {"mfccr0",      XSPR(31,339,947), XSPR_MASK, PPC405|TITAN, 0,           {RT}},
7100 {"mfiac3",      XSPR(31,339,948), XSPR_MASK, PPC405,    0,              {RT}},
7101 {"mfiac4",      XSPR(31,339,949), XSPR_MASK, PPC405,    0,              {RT}},
7102 {"mfdvc1",      XSPR(31,339,950), XSPR_MASK, PPC405,    0,              {RT}},
7103 {"mfdvc2",      XSPR(31,339,951), XSPR_MASK, PPC405,    0,              {RT}},
7104 {"mfmmcr0",     XSPR(31,339,952), XSPR_MASK, PPC750,    0,              {RT}},
7105 {"mfpmc1",      XSPR(31,339,953), XSPR_MASK, PPC750,    0,              {RT}},
7106 {"mfsgr",       XSPR(31,339,953), XSPR_MASK, PPC403,    0,              {RT}},
7107 {"mfdcwr",      XSPR(31,339,954), XSPR_MASK, PPC403,    0,              {RT}},
7108 {"mfpmc2",      XSPR(31,339,954), XSPR_MASK, PPC750,    0,              {RT}},
7109 {"mfsia",       XSPR(31,339,955), XSPR_MASK, PPC750,    0,              {RT}},
7110 {"mfsler",      XSPR(31,339,955), XSPR_MASK, PPC405,    0,              {RT}},
7111 {"mfmmcr1",     XSPR(31,339,956), XSPR_MASK, PPC750,    0,              {RT}},
7112 {"mfsu0r",      XSPR(31,339,956), XSPR_MASK, PPC405,    0,              {RT}},
7113 {"mfdbcr1",     XSPR(31,339,957), XSPR_MASK, PPC405,    0,              {RT}},
7114 {"mfpmc3",      XSPR(31,339,957), XSPR_MASK, PPC750,    0,              {RT}},
7115 {"mfpmc4",      XSPR(31,339,958), XSPR_MASK, PPC750,    0,              {RT}},
7116 {"mficdbdr",    XSPR(31,339,979), XSPR_MASK, PPC403|TITAN, 0,           {RT}},
7117 {"mfesr",       XSPR(31,339,980), XSPR_MASK, PPC403,    0,              {RT}},
7118 {"mfdear",      XSPR(31,339,981), XSPR_MASK, PPC403,    0,              {RT}},
7119 {"mfevpr",      XSPR(31,339,982), XSPR_MASK, PPC403,    0,              {RT}},
7120 {"mfcdbcr",     XSPR(31,339,983), XSPR_MASK, PPC403,    0,              {RT}},
7121 {"mftsr",       XSPR(31,339,984), XSPR_MASK, PPC403,    0,              {RT}},
7122 {"mftcr",       XSPR(31,339,986), XSPR_MASK, PPC403,    0,              {RT}},
7123 {"mfpit",       XSPR(31,339,987), XSPR_MASK, PPC403,    0,              {RT}},
7124 {"mftbhi",      XSPR(31,339,988), XSPR_MASK, PPC403,    0,              {RT}},
7125 {"mftblo",      XSPR(31,339,989), XSPR_MASK, PPC403,    0,              {RT}},
7126 {"mfsrr2",      XSPR(31,339,990), XSPR_MASK, PPC403,    0,              {RT}},
7127 {"mfsrr3",      XSPR(31,339,991), XSPR_MASK, PPC403,    0,              {RT}},
7128 {"mfdbsr",      XSPR(31,339,1008), XSPR_MASK, PPC403,   0,              {RT}},
7129 {"mfhid0",      XSPR(31,339,1008), XSPR_MASK, GEKKO,    0,              {RT}},
7130 {"mfhid1",      XSPR(31,339,1009), XSPR_MASK, GEKKO,    0,              {RT}},
7131 {"mfdbcr0",     XSPR(31,339,1010), XSPR_MASK, PPC405,   0,              {RT}},
7132 {"mfiabr",      XSPR(31,339,1010), XSPR_MASK, GEKKO,    0,              {RT}},
7133 {"mfhid4",      XSPR(31,339,1011), XSPR_MASK, BROADWAY, 0,              {RT}},
7134 {"mfdbdr",      XSPR(31,339,1011), XSPR_MASK, TITAN,    0,              {RS}},
7135 {"mfiac1",      XSPR(31,339,1012), XSPR_MASK, PPC403,   0,              {RT}},
7136 {"mfiac2",      XSPR(31,339,1013), XSPR_MASK, PPC403,   0,              {RT}},
7137 {"mfdabr",      XSPR(31,339,1013), XSPR_MASK, PPC750,   0,              {RT}},
7138 {"mfdac1",      XSPR(31,339,1014), XSPR_MASK, PPC403,   0,              {RT}},
7139 {"mfdac2",      XSPR(31,339,1015), XSPR_MASK, PPC403,   0,              {RT}},
7140 {"mfl2cr",      XSPR(31,339,1017), XSPR_MASK, PPC750,   0,              {RT}},
7141 {"mfdccr",      XSPR(31,339,1018), XSPR_MASK, PPC403,   0,              {RT}},
7142 {"mficcr",      XSPR(31,339,1019), XSPR_MASK, PPC403,   0,              {RT}},
7143 {"mfictc",      XSPR(31,339,1019), XSPR_MASK, PPC750,   0,              {RT}},
7144 {"mfpbl1",      XSPR(31,339,1020), XSPR_MASK, PPC403,   0,              {RT}},
7145 {"mfthrm1",     XSPR(31,339,1020), XSPR_MASK, PPC750,   0,              {RT}},
7146 {"mfpbu1",      XSPR(31,339,1021), XSPR_MASK, PPC403,   0,              {RT}},
7147 {"mfthrm2",     XSPR(31,339,1021), XSPR_MASK, PPC750,   0,              {RT}},
7148 {"mfpbl2",      XSPR(31,339,1022), XSPR_MASK, PPC403,   0,              {RT}},
7149 {"mfthrm3",     XSPR(31,339,1022), XSPR_MASK, PPC750,   0,              {RT}},
7150 {"mfpir",       XSPR(31,339,1023), XSPR_MASK, POWER10,  0,              {RT}},
7151 {"mfpbu2",      XSPR(31,339,1023), XSPR_MASK, PPC403,   0,              {RT}},
7152 {"mfspr",       X(31,339),      X_MASK,      COM,       0,              {RT, SPR}},
7153
7154 {"lwax",        X(31,341),      X_MASK,      PPC64,     0,              {RT, RA0, RB}},
7155
7156 {"dst",         XDSS(31,342,0), XDSS_MASK,   PPCVEC,    0,              {RA, RB, STRM}},
7157
7158 {"lhax",        X(31,343),      X_MASK,      COM,       0,              {RT, RA0, RB}},
7159
7160 {"lvxl",        X(31,359),      X_MASK,      PPCVEC,    0,              {VD, RA0, RB}},
7161
7162 {"abs",         XO(31,360,0,0), XORB_MASK,   M601,      0,              {RT, RA}},
7163 {"abs.",        XO(31,360,0,1), XORB_MASK,   M601,      0,              {RT, RA}},
7164
7165 {"divs",        XO(31,363,0,0), XO_MASK,     M601,      0,              {RT, RA, RB}},
7166 {"divs.",       XO(31,363,0,1), XO_MASK,     M601,      0,              {RT, RA, RB}},
7167
7168 {"lxvwsx",      X(31,364),      XX1_MASK,    PPCVSX3,   0,              {XT6, RA0, RB}},
7169
7170 {"tlbia",       X(31,370),      0xffffffff,  PPC,       E500|TITAN,     {0}},
7171
7172 {"mftbu",       XSPR(31,371,269), XSPR_MASK, PPC,       NO371|POWER4,   {RT}},
7173 {"mftb",        X(31,371),      X_MASK,      PPC,       NO371|POWER4,   {RT, TBR}},
7174 {"mftbl",       XSPR(31,371,268), XSPR_MASK, PPC,       NO371|POWER4,   {RT}},
7175
7176 {"lwaux",       X(31,373),      X_MASK,      PPC64,     0,              {RT, RAL, RB}},
7177
7178 {"dstst",       XDSS(31,374,0), XDSS_MASK,   PPCVEC,    0,              {RA, RB, STRM}},
7179
7180 {"lhaux",       X(31,375),      X_MASK,      COM,       0,              {RT, RAL, RB}},
7181
7182 {"popcntw",     X(31,378),      XRB_MASK,    POWER7|PPCA2, 0,           {RA, RS}},
7183
7184 {"setbc",       X(31,384),      XRB_MASK,    POWER10,   0,              {RT, BI}},
7185
7186 {"mtdcrx",      X(31,387),      X_MASK,      BOOKE|PPCA2|PPC476, TITAN, {RA, RS}},
7187 {"mtdcrx.",     XRC(31,387,1),  X_MASK,      PPCA2,     0,              {RA, RS}},
7188
7189 {"stvexbx",     X(31,389),      X_MASK,      E6500,     0,              {VS, RA0, RB}},
7190
7191 {"dcblc",       X(31,390),      X_MASK,  PPCCHLK|PPC476|TITAN, 0,       {CT, RA0, RB}},
7192 {"stdfcmx",     APU(31,391,0),  APU_MASK,    PPC405,    0,              {FCRT, RA, RB}},
7193
7194 {"divdeu",      XO(31,393,0,0), XO_MASK,     POWER7|PPCA2, 0,           {RT, RA, RB}},
7195 {"divdeu.",     XO(31,393,0,1), XO_MASK,     POWER7|PPCA2, 0,           {RT, RA, RB}},
7196 {"divweu",      XO(31,395,0,0), XO_MASK,     POWER7|PPCA2, 0,           {RT, RA, RB}},
7197 {"divweu.",     XO(31,395,0,1), XO_MASK,     POWER7|PPCA2, 0,           {RT, RA, RB}},
7198
7199 {"stxvx",       X(31,396),      XX1_MASK,    PPCVSX3,   0,              {XS6, RA0, RB}},
7200 {"stxvl",       X(31,397),      XX1_MASK,    PPCVSX3,   0,              {XS6, RA0, RB}},
7201
7202 {"dcblce",      X(31,398),      X_MASK,      PPCCHLK,   E500MC,         {CT, RA, RB}},
7203
7204 {"slbmte",      X(31,402),      XRA_MASK,    PPC64,     0,              {RS, RB}},
7205
7206 {"mtvsrws",     X(31,403),      XX1RB_MASK,  PPCVSX3,   0,              {XT6, RA}},
7207
7208 {"pbt.",        XRC(31,404,1),  X_MASK,      POWER8,    0,              {RS, RA0, RB}},
7209
7210 {"icswx",       XRC(31,406,0),  X_MASK,   POWER7|PPCA2, 0,              {RS, RA, RB}},
7211 {"icswx.",      XRC(31,406,1),  X_MASK,   POWER7|PPCA2, 0,              {RS, RA, RB}},
7212
7213 {"sthx",        X(31,407),      X_MASK,      COM,       0,              {RS, RA0, RB}},
7214
7215 {"orc",         XRC(31,412,0),  X_MASK,      COM,       0,              {RA, RS, RB}},
7216 {"orc.",        XRC(31,412,1),  X_MASK,      COM,       0,              {RA, RS, RB}},
7217
7218 {"sthepx",      X(31,415),      X_MASK,   E500MC|PPCA2, 0,              {RS, RA0, RB}},
7219
7220 {"setbcr",      X(31,416),      XRB_MASK,    POWER10,   0,              {RT, BI}},
7221
7222 {"mtdcrux",     X(31,419),      X_MASK,  PPC464|PPC476, 0,              {RA, RS}},
7223
7224 {"stvexhx",     X(31,421),      X_MASK,      E6500,     0,              {VS, RA0, RB}},
7225
7226 {"dcblq.",      XRC(31,422,1),  X_MASK,      E6500,     0,              {CT, RA0, RB}},
7227
7228 {"divde",       XO(31,425,0,0), XO_MASK,  POWER7|PPCA2, 0,              {RT, RA, RB}},
7229 {"divde.",      XO(31,425,0,1), XO_MASK,  POWER7|PPCA2, 0,              {RT, RA, RB}},
7230 {"divwe",       XO(31,427,0,0), XO_MASK,  POWER7|PPCA2, 0,              {RT, RA, RB}},
7231 {"divwe.",      XO(31,427,0,1), XO_MASK,  POWER7|PPCA2, 0,              {RT, RA, RB}},
7232
7233 {"stxvll",      X(31,429),      XX1_MASK,    PPCVSX3,   0,              {XS6, RA0, RB}},
7234
7235 {"clrbhrb",     X(31,430),      0xffffffff,  POWER8,    0,              {0}},
7236
7237 {"slbie",       X(31,434),      XRTRA_MASK,  PPC64,     0,              {RB}},
7238
7239 {"mtvsrdd",     X(31,435),      XX1_MASK,    PPCVSX3,   0,              {XT6, RA0, RB}},
7240
7241 {"ecowx",       X(31,438),      X_MASK,      PPC,       E500|TITAN,     {RT, RA0, RB}},
7242
7243 {"sthux",       X(31,439),      X_MASK,      COM,       0,              {RS, RAS, RB}},
7244
7245 /* or 1,1,1 */
7246 {"cctpl",       0x7c210b78,     0xffffffff,  CELL,      0,              {0}},
7247 /* or 2,2,2 */
7248 {"cctpm",       0x7c421378,     0xffffffff,  CELL,      0,              {0}},
7249 /* or 3,3,3 */
7250 {"cctph",       0x7c631b78,     0xffffffff,  CELL,      0,              {0}},
7251 /* or 26,26,26 */
7252 {"miso",        0x7f5ad378,   0xffffffff, POWER8|E6500, 0,              {0}},
7253 /* or 27,27,27 */
7254 {"yield",       0x7f7bdb78,     0xffffffff,  POWER7,    0,              {0}},
7255 /* or 28,28,28 */
7256 {"mdors",       0x7f9ce378,     0xffffffff,  E500MC,    0,              {0}},
7257 /* or 29,29,29 */
7258 {"mdoio",       0x7fbdeb78,     0xffffffff,  POWER7,    0,              {0}},
7259 /* or 30,30,30 */
7260 {"mdoom",       0x7fdef378,     0xffffffff,  POWER7,    0,              {0}},
7261
7262 {"mr",          XRC(31,444,0),  X_MASK,      COM,       0,              {RA, RSB}},
7263 {"or",          XRC(31,444,0),  X_MASK,      COM,       0,              {RA, RS, RB}},
7264 {"mr.",         XRC(31,444,1),  X_MASK,      COM,       0,              {RA, RSB}},
7265 {"or.",         XRC(31,444,1),  X_MASK,      COM,       0,              {RA, RS, RB}},
7266
7267 {"setnbc",      X(31,448),      XRB_MASK,    POWER10,   0,              {RT, BI}},
7268
7269 {"mtexisr",     XSPR(31,451, 64), XSPR_MASK, PPC403,    0,              {RS}},
7270 {"mtexier",     XSPR(31,451, 66), XSPR_MASK, PPC403,    0,              {RS}},
7271 {"mtbr0",       XSPR(31,451,128), XSPR_MASK, PPC403,    0,              {RS}},
7272 {"mtbr1",       XSPR(31,451,129), XSPR_MASK, PPC403,    0,              {RS}},
7273 {"mtbr2",       XSPR(31,451,130), XSPR_MASK, PPC403,    0,              {RS}},
7274 {"mtbr3",       XSPR(31,451,131), XSPR_MASK, PPC403,    0,              {RS}},
7275 {"mtbr4",       XSPR(31,451,132), XSPR_MASK, PPC403,    0,              {RS}},
7276 {"mtbr5",       XSPR(31,451,133), XSPR_MASK, PPC403,    0,              {RS}},
7277 {"mtbr6",       XSPR(31,451,134), XSPR_MASK, PPC403,    0,              {RS}},
7278 {"mtbr7",       XSPR(31,451,135), XSPR_MASK, PPC403,    0,              {RS}},
7279 {"mtbear",      XSPR(31,451,144), XSPR_MASK, PPC403,    0,              {RS}},
7280 {"mtbesr",      XSPR(31,451,145), XSPR_MASK, PPC403,    0,              {RS}},
7281 {"mtiocr",      XSPR(31,451,160), XSPR_MASK, PPC403,    0,              {RS}},
7282 {"mtdmacr0",    XSPR(31,451,192), XSPR_MASK, PPC403,    0,              {RS}},
7283 {"mtdmact0",    XSPR(31,451,193), XSPR_MASK, PPC403,    0,              {RS}},
7284 {"mtdmada0",    XSPR(31,451,194), XSPR_MASK, PPC403,    0,              {RS}},
7285 {"mtdmasa0",    XSPR(31,451,195), XSPR_MASK, PPC403,    0,              {RS}},
7286 {"mtdmacc0",    XSPR(31,451,196), XSPR_MASK, PPC403,    0,              {RS}},
7287 {"mtdmacr1",    XSPR(31,451,200), XSPR_MASK, PPC403,    0,              {RS}},
7288 {"mtdmact1",    XSPR(31,451,201), XSPR_MASK, PPC403,    0,              {RS}},
7289 {"mtdmada1",    XSPR(31,451,202), XSPR_MASK, PPC403,    0,              {RS}},
7290 {"mtdmasa1",    XSPR(31,451,203), XSPR_MASK, PPC403,    0,              {RS}},
7291 {"mtdmacc1",    XSPR(31,451,204), XSPR_MASK, PPC403,    0,              {RS}},
7292 {"mtdmacr2",    XSPR(31,451,208), XSPR_MASK, PPC403,    0,              {RS}},
7293 {"mtdmact2",    XSPR(31,451,209), XSPR_MASK, PPC403,    0,              {RS}},
7294 {"mtdmada2",    XSPR(31,451,210), XSPR_MASK, PPC403,    0,              {RS}},
7295 {"mtdmasa2",    XSPR(31,451,211), XSPR_MASK, PPC403,    0,              {RS}},
7296 {"mtdmacc2",    XSPR(31,451,212), XSPR_MASK, PPC403,    0,              {RS}},
7297 {"mtdmacr3",    XSPR(31,451,216), XSPR_MASK, PPC403,    0,              {RS}},
7298 {"mtdmact3",    XSPR(31,451,217), XSPR_MASK, PPC403,    0,              {RS}},
7299 {"mtdmada3",    XSPR(31,451,218), XSPR_MASK, PPC403,    0,              {RS}},
7300 {"mtdmasa3",    XSPR(31,451,219), XSPR_MASK, PPC403,    0,              {RS}},
7301 {"mtdmacc3",    XSPR(31,451,220), XSPR_MASK, PPC403,    0,              {RS}},
7302 {"mtdmasr",     XSPR(31,451,224), XSPR_MASK, PPC403,    0,              {RS}},
7303 {"mtdcr",       X(31,451), X_MASK, PPC403|BOOKE|PPCA2|PPC476, E500|TITAN, {SPR, RS}},
7304 {"mtdcr.",      XRC(31,451,1), X_MASK,       PPCA2,     0,              {SPR, RS}},
7305
7306 {"stvexwx",     X(31,453),      X_MASK,      E6500,     0,              {VS, RA0, RB}},
7307
7308 {"dccci",       X(31,454), XRT_MASK, PPC403|PPC440|PPC476|TITAN|PPCA2, 0, {RAOPT, RBOPT}},
7309 {"dci",         X(31,454),      XRARB_MASK, PPCA2|PPC476, 0,            {CT}},
7310
7311 {"divdu",       XO(31,457,0,0), XO_MASK,     PPC64,     0,              {RT, RA, RB}},
7312 {"divdu.",      XO(31,457,0,1), XO_MASK,     PPC64,     0,              {RT, RA, RB}},
7313
7314 {"divwu",       XO(31,459,0,0), XO_MASK,     PPC,       0,              {RT, RA, RB}},
7315 {"divwu.",      XO(31,459,0,1), XO_MASK,     PPC,       0,              {RT, RA, RB}},
7316
7317 {"stxvpx",      X(31,461),      XX1_MASK,    POWER10,   0,              {XTP, RA0, RB}},
7318
7319 {"mtpmr",       X(31,462),      X_MASK, PPCPMR|PPCE300, 0,              {PMR, RS}},
7320 {"mttmr",       X(31,494),      X_MASK,      PPCTMR,    0,              {TMR, RS}},
7321
7322 {"slbieg",      X(31,466),      XRA_MASK,    POWER9,    0,              {RS, RB}},
7323
7324 {"mtmq",        XSPR(31,467,  0), XSPR_MASK, M601,      0,              {RS}},
7325 {"mtxer",       XSPR(31,467,  1), XSPR_MASK, COM,       0,              {RS}},
7326 {"mtudscr",     XSPR(31,467,  3), XSPR_MASK, POWER9,    0,              {RS}},
7327 {"mtlr",        XSPR(31,467,  8), XSPR_MASK, COM,       0,              {RS}},
7328 {"mtctr",       XSPR(31,467,  9), XSPR_MASK, COM,       0,              {RS}},
7329 {"mtuamr",      XSPR(31,467, 13), XSPR_MASK, POWER9,    0,              {RS}},
7330 {"mtdscr",      XSPR(31,467, 17), XSPR_MASK, POWER6,    0,              {RS}},
7331 {"mttid",       XSPR(31,467, 17), XSPR_MASK, POWER,     0,              {RS}},
7332 {"mtdsisr",     XSPR(31,467, 18), XSPR_MASK, COM,       TITAN,          {RS}},
7333 {"mtdar",       XSPR(31,467, 19), XSPR_MASK, COM,       TITAN,          {RS}},
7334 {"mtrtcu",      XSPR(31,467, 20), XSPR_MASK, COM,       TITAN,          {RS}},
7335 {"mtrtcl",      XSPR(31,467, 21), XSPR_MASK, COM,       TITAN,          {RS}},
7336 {"mtdec",       XSPR(31,467, 22), XSPR_MASK, COM,       0,              {RS}},
7337 {"mtsdr0",      XSPR(31,467, 24), XSPR_MASK, POWER,     0,              {RS}},
7338 {"mtsdr1",      XSPR(31,467, 25), XSPR_MASK, COM,       TITAN,          {RS}},
7339 {"mtsrr0",      XSPR(31,467, 26), XSPR_MASK, COM,       0,              {RS}},
7340 {"mtsrr1",      XSPR(31,467, 27), XSPR_MASK, COM,       0,              {RS}},
7341 {"mtcfar",      XSPR(31,467, 28), XSPR_MASK, POWER6,    0,              {RS}},
7342 {"mtamr",       XSPR(31,467, 29), XSPR_MASK, POWER7,    0,              {RS}},
7343 {"mtpidr",      XSPR(31,467, 48), XSPR_MASK, POWER10,   0,              {RS}},
7344 {"mtpid",       XSPR(31,467, 48), XSPR_MASK, BOOKE,     0,              {RS}},
7345 {"mtdecar",     XSPR(31,467, 54), XSPR_MASK, BOOKE,     0,              {RS}},
7346 {"mtcsrr0",     XSPR(31,467, 58), XSPR_MASK, BOOKE,     0,              {RS}},
7347 {"mtcsrr1",     XSPR(31,467, 59), XSPR_MASK, BOOKE,     0,              {RS}},
7348 {"mtiamr",      XSPR(31,467, 61), XSPR_MASK, POWER10,   0,              {RS}},
7349 {"mtdear",      XSPR(31,467, 61), XSPR_MASK, BOOKE,     0,              {RS}},
7350 {"mtesr",       XSPR(31,467, 62), XSPR_MASK, BOOKE,     0,              {RS}},
7351 {"mtivpr",      XSPR(31,467, 63), XSPR_MASK, BOOKE,     0,              {RS}},
7352 {"mttfhar",     XSPR(31,467,128), XSPR_MASK, POWER9,    0,              {RS}},
7353 {"mttfiar",     XSPR(31,467,129), XSPR_MASK, POWER9,    0,              {RS}},
7354 {"mttexasr",    XSPR(31,467,130), XSPR_MASK, POWER9,    0,              {RS}},
7355 {"mttexasru",   XSPR(31,467,131), XSPR_MASK, POWER9,    0,              {RS}},
7356 {"mtcmpa",      XSPR(31,467,144), XSPR_MASK, PPC860,    0,              {RS}},
7357 {"mtcmpb",      XSPR(31,467,145), XSPR_MASK, PPC860,    0,              {RS}},
7358 {"mtcmpc",      XSPR(31,467,146), XSPR_MASK, PPC860,    0,              {RS}},
7359 {"mtcmpd",      XSPR(31,467,147), XSPR_MASK, PPC860,    0,              {RS}},
7360 {"mticr",       XSPR(31,467,148), XSPR_MASK, PPC860,    0,              {RS}},
7361 {"mtder",       XSPR(31,467,149), XSPR_MASK, PPC860,    0,              {RS}},
7362 {"mtcounta",    XSPR(31,467,150), XSPR_MASK, PPC860,    0,              {RS}},
7363 {"mtcountb",    XSPR(31,467,151), XSPR_MASK, PPC860,    0,              {RS}},
7364 {"mtctrl",      XSPR(31,467,152), XSPR_MASK, POWER4,    0,              {RS}},
7365 {"mtcmpe",      XSPR(31,467,152), XSPR_MASK, PPC860,    0,              {RS}},
7366 {"mtfscr",      XSPR(31,467,153), XSPR_MASK, POWER10,   0,              {RS}},
7367 {"mtcmpf",      XSPR(31,467,153), XSPR_MASK, PPC860,    0,              {RS}},
7368 {"mtcmpg",      XSPR(31,467,154), XSPR_MASK, PPC860,    0,              {RS}},
7369 {"mtcmph",      XSPR(31,467,155), XSPR_MASK, PPC860,    0,              {RS}},
7370 {"mtlctrl1",    XSPR(31,467,156), XSPR_MASK, PPC860,    0,              {RS}},
7371 {"mtuamor",     XSPR(31,467,157), XSPR_MASK, POWER7,    0,              {RS}},
7372 {"mtlctrl2",    XSPR(31,467,157), XSPR_MASK, PPC860,    0,              {RS}},
7373 {"mtictrl",     XSPR(31,467,158), XSPR_MASK, PPC860,    0,              {RS}},
7374 {"mtpspb",      XSPR(31,467,159), XSPR_MASK, POWER10,   0,              {RS}},
7375 {"mtbar",       XSPR(31,467,159), XSPR_MASK, PPC860,    0,              {RS}},
7376 {"mtdpdes",     XSPR(31,467,176), XSPR_MASK, POWER10,   0,              {RS}},
7377 {"mtdawr0",     XSPR(31,467,180), XSPR_MASK, POWER10,   0,              {RS}},
7378 {"mtdawr1",     XSPR(31,467,181), XSPR_MASK, POWER10,   0,              {RS}},
7379 {"mtrpr",       XSPR(31,467,186), XSPR_MASK, POWER10,   0,              {RS}},
7380 {"mtciabr",     XSPR(31,467,187), XSPR_MASK, POWER10,   0,              {RS}},
7381 {"mtdawrx0",    XSPR(31,467,188), XSPR_MASK, POWER10,   0,              {RS}},
7382 {"mtdawrx1",    XSPR(31,467,189), XSPR_MASK, POWER10,   0,              {RS}},
7383 {"mthfscr",     XSPR(31,467,190), XSPR_MASK, POWER10,   0,              {RS}},
7384 {"mtvrsave",    XSPR(31,467,256), XSPR_MASK, PPCVEC,    0,              {RS}},
7385 {"mtusprg0",    XSPR(31,467,256), XSPR_MASK, BOOKE,     0,              {RS}},
7386 {"mtsprg",      XSPR(31,467,256), XSPRG_MASK, PPC,      0,              {SPRG, RS}},
7387 {"mtsprg0",     XSPR(31,467,272), XSPR_MASK, PPC,       0,              {RS}},
7388 {"mtsprg1",     XSPR(31,467,273), XSPR_MASK, PPC,       0,              {RS}},
7389 {"mtsprg2",     XSPR(31,467,274), XSPR_MASK, PPC,       0,              {RS}},
7390 {"mtsprg3",     XSPR(31,467,275), XSPR_MASK, PPC,       0,              {RS}},
7391 {"mtsprg4",     XSPR(31,467,276), XSPR_MASK, PPC405|BOOKE, 0,           {RS}},
7392 {"mtsprg5",     XSPR(31,467,277), XSPR_MASK, PPC405|BOOKE, 0,           {RS}},
7393 {"mtsprg6",     XSPR(31,467,278), XSPR_MASK, PPC405|BOOKE, 0,           {RS}},
7394 {"mtsprg7",     XSPR(31,467,279), XSPR_MASK, PPC405|BOOKE, 0,           {RS}},
7395 {"mtasr",       XSPR(31,467,280), XSPR_MASK, PPC64,     0,              {RS}},
7396 {"mtear",       XSPR(31,467,282), XSPR_MASK, PPC,       TITAN,          {RS}},
7397 {"mttbl",       XSPR(31,467,284), XSPR_MASK, PPC,       0,              {RS}},
7398 {"mttbu",       XSPR(31,467,285), XSPR_MASK, PPC,       0,              {RS}},
7399 {"mttbu40",     XSPR(31,467,286), XSPR_MASK, POWER10,   0,              {RS}},
7400 {"mthsprg0",    XSPR(31,467,304), XSPR_MASK, POWER10,   0,              {RS}},
7401 {"mtdbsr",      XSPR(31,467,304), XSPR_MASK, BOOKE,     0,              {RS}},
7402 {"mthsprg1",    XSPR(31,467,305), XSPR_MASK, POWER10,   0,              {RS}},
7403 {"mthdisr",     XSPR(31,467,306), XSPR_MASK, POWER10,   0,              {RS}},
7404 {"mthdar",      XSPR(31,467,307), XSPR_MASK, POWER10,   0,              {RS}},
7405 {"mtspurr",     XSPR(31,467,308), XSPR_MASK, POWER10,   0,              {RS}},
7406 {"mtdbcr0",     XSPR(31,467,308), XSPR_MASK, BOOKE,     0,              {RS}},
7407 {"mtpurr",      XSPR(31,467,309), XSPR_MASK, POWER10,   0,              {RS}},
7408 {"mtdbcr1",     XSPR(31,467,309), XSPR_MASK, BOOKE,     0,              {RS}},
7409 {"mthdec",      XSPR(31,467,310), XSPR_MASK, POWER10,   0,              {RS}},
7410 {"mtdbcr2",     XSPR(31,467,310), XSPR_MASK, BOOKE,     0,              {RS}},
7411 {"mtiac1",      XSPR(31,467,312), XSPR_MASK, BOOKE,     0,              {RS}},
7412 {"mthrmor",     XSPR(31,467,313), XSPR_MASK, POWER10,   0,              {RS}},
7413 {"mtiac2",      XSPR(31,467,313), XSPR_MASK, BOOKE,     0,              {RS}},
7414 {"mthsrr0",     XSPR(31,467,314), XSPR_MASK, POWER10,   0,              {RS}},
7415 {"mtiac3",      XSPR(31,467,314), XSPR_MASK, BOOKE,     0,              {RS}},
7416 {"mthsrr1",     XSPR(31,467,315), XSPR_MASK, POWER10,   0,              {RS}},
7417 {"mtiac4",      XSPR(31,467,315), XSPR_MASK, BOOKE,     0,              {RS}},
7418 {"mtdac1",      XSPR(31,467,316), XSPR_MASK, BOOKE,     0,              {RS}},
7419 {"mtdac2",      XSPR(31,467,317), XSPR_MASK, BOOKE,     0,              {RS}},
7420 {"mtlpcr",      XSPR(31,467,318), XSPR_MASK, POWER10,   0,              {RS}},
7421 {"mtdvc1",      XSPR(31,467,318), XSPR_MASK, BOOKE,     0,              {RS}},
7422 {"mtlpidr",     XSPR(31,467,319), XSPR_MASK, POWER10,   0,              {RS}},
7423 {"mtdvc2",      XSPR(31,467,319), XSPR_MASK, BOOKE,     0,              {RS}},
7424 {"mthmer",      XSPR(31,467,336), XSPR_MASK, POWER7,    0,              {RS}},
7425 {"mttsr",       XSPR(31,467,336), XSPR_MASK, BOOKE,     0,              {RS}},
7426 {"mthmeer",     XSPR(31,467,337), XSPR_MASK, POWER7,    0,              {RS}},
7427 {"mtpcr",       XSPR(31,467,338), XSPR_MASK, POWER10,   0,              {RS}},
7428 {"mtheir",      XSPR(31,467,339), XSPR_MASK, POWER10,   0,              {RS}},
7429 {"mttcr",       XSPR(31,467,340), XSPR_MASK, BOOKE,     0,              {RS}},
7430 {"mtamor",      XSPR(31,467,349), XSPR_MASK, POWER7,    0,              {RS}},
7431 {"mtivor0",     XSPR(31,467,400), XSPR_MASK, BOOKE,     0,              {RS}},
7432 {"mtivor1",     XSPR(31,467,401), XSPR_MASK, BOOKE,     0,              {RS}},
7433 {"mtivor2",     XSPR(31,467,402), XSPR_MASK, BOOKE,     0,              {RS}},
7434 {"mtivor3",     XSPR(31,467,403), XSPR_MASK, BOOKE,     0,              {RS}},
7435 {"mtivor4",     XSPR(31,467,404), XSPR_MASK, BOOKE,     0,              {RS}},
7436 {"mtivor5",     XSPR(31,467,405), XSPR_MASK, BOOKE,     0,              {RS}},
7437 {"mtivor6",     XSPR(31,467,406), XSPR_MASK, BOOKE,     0,              {RS}},
7438 {"mtivor7",     XSPR(31,467,407), XSPR_MASK, BOOKE,     0,              {RS}},
7439 {"mtivor8",     XSPR(31,467,408), XSPR_MASK, BOOKE,     0,              {RS}},
7440 {"mtivor9",     XSPR(31,467,409), XSPR_MASK, BOOKE,     0,              {RS}},
7441 {"mtivor10",    XSPR(31,467,410), XSPR_MASK, BOOKE,     0,              {RS}},
7442 {"mtivor11",    XSPR(31,467,411), XSPR_MASK, BOOKE,     0,              {RS}},
7443 {"mtivor12",    XSPR(31,467,412), XSPR_MASK, BOOKE,     0,              {RS}},
7444 {"mtivor13",    XSPR(31,467,413), XSPR_MASK, BOOKE,     0,              {RS}},
7445 {"mtivor14",    XSPR(31,467,414), XSPR_MASK, BOOKE,     0,              {RS}},
7446 {"mtivor15",    XSPR(31,467,415), XSPR_MASK, BOOKE,     0,              {RS}},
7447 {"mtptcr",      XSPR(31,467,464), XSPR_MASK, POWER10,   0,              {RS}},
7448 {"mtusprg0",    XSPR(31,467,496), XSPR_MASK, POWER10,   0,              {RS}},
7449 {"mtusprg1",    XSPR(31,467,497), XSPR_MASK, POWER10,   0,              {RS}},
7450 {"mturmor",     XSPR(31,467,505), XSPR_MASK, POWER10,   0,              {RS}},
7451 {"mtusrr0",     XSPR(31,467,506), XSPR_MASK, POWER10,   0,              {RS}},
7452 {"mtusrr1",     XSPR(31,467,507), XSPR_MASK, POWER10,   0,              {RS}},
7453 {"mtsmfctrl",   XSPR(31,467,511), XSPR_MASK, POWER10,   0,              {RS}},
7454 {"mtspefscr",   XSPR(31,467,512), XSPR_MASK, PPCSPE,    0,              {RS}},
7455 {"mtbbear",     XSPR(31,467,513), XSPR_MASK, PPCBRLK,   0,              {RS}},
7456 {"mtbbtar",     XSPR(31,467,514), XSPR_MASK, PPCBRLK,   0,              {RS}},
7457 {"mtivor32",    XSPR(31,467,528), XSPR_MASK, PPCSPE|E6500, 0,           {RS}},
7458 {"mtivor33",    XSPR(31,467,529), XSPR_MASK, PPCSPE|E6500, 0,           {RS}},
7459 {"mtivor34",    XSPR(31,467,530), XSPR_MASK, PPCSPE,    0,              {RS}},
7460 {"mtivor35",    XSPR(31,467,531), XSPR_MASK, PPCPMR,    0,              {RS}},
7461 {"mtibatu",     XSPR(31,467,528), XSPRBAT_MASK, PPC,    TITAN,          {SPRBAT, RS}},
7462 {"mtibatl",     XSPR(31,467,529), XSPRBAT_MASK, PPC,    TITAN,          {SPRBAT, RS}},
7463 {"mtdbatu",     XSPR(31,467,536), XSPRBAT_MASK, PPC,    TITAN,          {SPRBAT, RS}},
7464 {"mtdbatl",     XSPR(31,467,537), XSPRBAT_MASK, PPC,    TITAN,          {SPRBAT, RS}},
7465 {"mtmcsrr0",    XSPR(31,467,570), XSPR_MASK, PPCRFMCI,  0,              {RS}},
7466 {"mtmcsrr1",    XSPR(31,467,571), XSPR_MASK, PPCRFMCI,  0,              {RS}},
7467 {"mtmcsr",      XSPR(31,467,572), XSPR_MASK, PPCRFMCI,  0,              {RS}},
7468 {"mtsier2",     XSPR(31,467,752), XSPR_MASK, POWER10,   0,              {RS}},
7469 {"mtsier3",     XSPR(31,467,753), XSPR_MASK, POWER10,   0,              {RS}},
7470 {"mtmmcr3",     XSPR(31,467,754), XSPR_MASK, POWER10,   0,              {RS}},
7471 {"mtummcr2",    XSPR(31,467,769), XSPR_MASK, POWER9,    0,              {RS}},
7472 {"mtmmcr2",     XSPR(31,467,769), XSPR_MASK, POWER9,    0,              {RS}},
7473 {"mtummcra",    XSPR(31,467,770), XSPR_MASK, POWER9,    0,              {RS}},
7474 {"mtupmc1",     XSPR(31,467,771), XSPR_MASK, POWER9,    0,              {RS}},
7475 {"mtupmc2",     XSPR(31,467,772), XSPR_MASK, POWER9,    0,              {RS}},
7476 {"mtupmc3",     XSPR(31,467,773), XSPR_MASK, POWER9,    0,              {RS}},
7477 {"mtupmc4",     XSPR(31,467,774), XSPR_MASK, POWER9,    0,              {RS}},
7478 {"mtupmc5",     XSPR(31,467,775), XSPR_MASK, POWER9,    0,              {RS}},
7479 {"mtupmc6",     XSPR(31,467,776), XSPR_MASK, POWER9,    0,              {RS}},
7480 {"mtummcr0",    XSPR(31,467,779), XSPR_MASK, POWER9,    0,              {RS}},
7481 {"mtsier",      XSPR(31,467,784), XSPR_MASK, POWER10,   0,              {RS}},
7482 {"mtmmcra",     XSPR(31,467,786), XSPR_MASK, POWER7,    0,              {RS}},
7483 {"mtpmc1",      XSPR(31,467,787), XSPR_MASK, POWER7,    0,              {RS}},
7484 {"mtpmc2",      XSPR(31,467,788), XSPR_MASK, POWER7,    0,              {RS}},
7485 {"mtpmc3",      XSPR(31,467,789), XSPR_MASK, POWER7,    0,              {RS}},
7486 {"mtpmc4",      XSPR(31,467,790), XSPR_MASK, POWER7,    0,              {RS}},
7487 {"mtpmc5",      XSPR(31,467,791), XSPR_MASK, POWER7,    0,              {RS}},
7488 {"mtpmc6",      XSPR(31,467,792), XSPR_MASK, POWER7,    0,              {RS}},
7489 {"mtmmcr0",     XSPR(31,467,795), XSPR_MASK, POWER7,    0,              {RS}},
7490 {"mtsiar",      XSPR(31,467,796), XSPR_MASK, POWER10,   0,              {RS}},
7491 {"mtsdar",      XSPR(31,467,797), XSPR_MASK, POWER10,   0,              {RS}},
7492 {"mtmmcr1",     XSPR(31,467,798), XSPR_MASK, POWER7,    0,              {RS}},
7493 {"mtbescrs",    XSPR(31,467,800), XSPR_MASK, POWER9,    0,              {RS}},
7494 {"mtbescrsu",   XSPR(31,467,801), XSPR_MASK, POWER9,    0,              {RS}},
7495 {"mtbescrr",    XSPR(31,467,802), XSPR_MASK, POWER9,    0,              {RS}},
7496 {"mtbescrru",   XSPR(31,467,803), XSPR_MASK, POWER9,    0,              {RS}},
7497 {"mtebbhr",     XSPR(31,467,804), XSPR_MASK, POWER9,    0,              {RS}},
7498 {"mtebbrr",     XSPR(31,467,805), XSPR_MASK, POWER9,    0,              {RS}},
7499 {"mtbescr",     XSPR(31,467,806), XSPR_MASK, POWER9,    0,              {RS}},
7500 {"mttar",       XSPR(31,467,815), XSPR_MASK, POWER9,    0,              {RS}},
7501 {"mtasdr",      XSPR(31,467,816), XSPR_MASK, POWER10,   0,              {RS}},
7502 {"mtpsscr",     XSPR(31,467,823), XSPR_MASK, POWER10,   0,              {RS}},
7503 {"mtic",        XSPR(31,467,848), XSPR_MASK, POWER8,    0,              {RS}},
7504 {"mtvtb",       XSPR(31,467,849), XSPR_MASK, POWER8,    0,              {RS}},
7505 {"mthpsscr",    XSPR(31,467,855), XSPR_MASK, POWER10,   0,              {RS}},
7506 {"mtivndx",     XSPR(31,467,880), XSPR_MASK, TITAN,     0,              {RS}},
7507 {"mtdvndx",     XSPR(31,467,881), XSPR_MASK, TITAN,     0,              {RS}},
7508 {"mtivlim",     XSPR(31,467,882), XSPR_MASK, TITAN,     0,              {RS}},
7509 {"mtdvlim",     XSPR(31,467,883), XSPR_MASK, TITAN,     0,              {RS}},
7510 {"mtclcsr",     XSPR(31,467,884), XSPR_MASK, TITAN,     0,              {RS}},
7511 {"mtccr1",      XSPR(31,467,888), XSPR_MASK, TITAN,     0,              {RS}},
7512 {"mtppr",       XSPR(31,467,896), XSPR_MASK, POWER7,    0,              {RS}},
7513 {"mtppr32",     XSPR(31,467,898), XSPR_MASK, POWER7,    0,              {RS}},
7514 {"mtgqr",       XSPR(31,467,912), XSPRGQR_MASK, PPCPS,  0,              {SPRGQR, RS}},
7515 {"mthid2",      XSPR(31,467,920), XSPR_MASK, GEKKO,     0,              {RS}},
7516 {"mtwpar",      XSPR(31,467,921), XSPR_MASK, GEKKO,     0,              {RS}},
7517 {"mtdmau",      XSPR(31,467,922), XSPR_MASK, GEKKO,     0,              {RS}},
7518 {"mtdmal",      XSPR(31,467,923), XSPR_MASK, GEKKO,     0,              {RS}},
7519 {"mtummcr0",    XSPR(31,467,936), XSPR_MASK, PPC750,    0,              {RS}},
7520 {"mtupmc1",     XSPR(31,467,937), XSPR_MASK, PPC750,    0,              {RS}},
7521 {"mtupmc2",     XSPR(31,467,938), XSPR_MASK, PPC750,    0,              {RS}},
7522 {"mtusia",      XSPR(31,467,939), XSPR_MASK, PPC750,    0,              {RS}},
7523 {"mtummcr1",    XSPR(31,467,940), XSPR_MASK, PPC750,    0,              {RS}},
7524 {"mtupmc3",     XSPR(31,467,941), XSPR_MASK, PPC750,    0,              {RS}},
7525 {"mtupmc4",     XSPR(31,467,942), XSPR_MASK, PPC750,    0,              {RS}},
7526 {"mtzpr",       XSPR(31,467,944), XSPR_MASK, PPC403,    0,              {RS}},
7527 {"mtpid",       XSPR(31,467,945), XSPR_MASK, PPC403,    0,              {RS}},
7528 {"mtrmmucr",    XSPR(31,467,946), XSPR_MASK, TITAN,     0,              {RS}},
7529 {"mtccr0",      XSPR(31,467,947), XSPR_MASK, PPC405|TITAN, 0,           {RS}},
7530 {"mtiac3",      XSPR(31,467,948), XSPR_MASK, PPC405,    0,              {RS}},
7531 {"mtiac4",      XSPR(31,467,949), XSPR_MASK, PPC405,    0,              {RS}},
7532 {"mtdvc1",      XSPR(31,467,950), XSPR_MASK, PPC405,    0,              {RS}},
7533 {"mtdvc2",      XSPR(31,467,951), XSPR_MASK, PPC405,    0,              {RS}},
7534 {"mtmmcr0",     XSPR(31,467,952), XSPR_MASK, PPC750,    0,              {RS}},
7535 {"mtpmc1",      XSPR(31,467,953), XSPR_MASK, PPC750,    0,              {RS}},
7536 {"mtsgr",       XSPR(31,467,953), XSPR_MASK, PPC403,    0,              {RS}},
7537 {"mtdcwr",      XSPR(31,467,954), XSPR_MASK, PPC403,    0,              {RS}},
7538 {"mtpmc2",      XSPR(31,467,954), XSPR_MASK, PPC750,    0,              {RS}},
7539 {"mtsia",       XSPR(31,467,955), XSPR_MASK, PPC750,    0,              {RS}},
7540 {"mtsler",      XSPR(31,467,955), XSPR_MASK, PPC405,    0,              {RS}},
7541 {"mtmmcr1",     XSPR(31,467,956), XSPR_MASK, PPC750,    0,              {RS}},
7542 {"mtsu0r",      XSPR(31,467,956), XSPR_MASK, PPC405,    0,              {RS}},
7543 {"mtdbcr1",     XSPR(31,467,957), XSPR_MASK, PPC405,    0,              {RS}},
7544 {"mtpmc3",      XSPR(31,467,957), XSPR_MASK, PPC750,    0,              {RS}},
7545 {"mtpmc4",      XSPR(31,467,958), XSPR_MASK, PPC750,    0,              {RS}},
7546 {"mticdbdr",    XSPR(31,467,979), XSPR_MASK, PPC403,    0,              {RS}},
7547 {"mtesr",       XSPR(31,467,980), XSPR_MASK, PPC403,    0,              {RS}},
7548 {"mtdear",      XSPR(31,467,981), XSPR_MASK, PPC403,    0,              {RS}},
7549 {"mtevpr",      XSPR(31,467,982), XSPR_MASK, PPC403,    0,              {RS}},
7550 {"mtcdbcr",     XSPR(31,467,983), XSPR_MASK, PPC403,    0,              {RS}},
7551 {"mttsr",       XSPR(31,467,984), XSPR_MASK, PPC403,    0,              {RS}},
7552 {"mttcr",       XSPR(31,467,986), XSPR_MASK, PPC403,    0,              {RS}},
7553 {"mtpit",       XSPR(31,467,987), XSPR_MASK, PPC403,    0,              {RS}},
7554 {"mttbhi",      XSPR(31,467,988), XSPR_MASK, PPC403,    0,              {RS}},
7555 {"mttblo",      XSPR(31,467,989), XSPR_MASK, PPC403,    0,              {RS}},
7556 {"mtsrr2",      XSPR(31,467,990), XSPR_MASK, PPC403,    0,              {RS}},
7557 {"mtsrr3",      XSPR(31,467,991), XSPR_MASK, PPC403,    0,              {RS}},
7558 {"mtdbsr",      XSPR(31,467,1008), XSPR_MASK, PPC403,   0,              {RS}},
7559 {"mthid0",      XSPR(31,467,1008), XSPR_MASK, GEKKO,    0,              {RS}},
7560 {"mthid1",      XSPR(31,467,1009), XSPR_MASK, GEKKO,    0,              {RS}},
7561 {"mtdbcr0",     XSPR(31,467,1010), XSPR_MASK, PPC405,   0,              {RS}},
7562 {"mtiabr",      XSPR(31,467,1010), XSPR_MASK, GEKKO,    0,              {RS}},
7563 {"mthid4",      XSPR(31,467,1011), XSPR_MASK, BROADWAY, 0,              {RS}},
7564 {"mtdbdr",      XSPR(31,467,1011), XSPR_MASK, TITAN,    0,              {RS}},
7565 {"mtiac1",      XSPR(31,467,1012), XSPR_MASK, PPC403,   0,              {RS}},
7566 {"mtiac2",      XSPR(31,467,1013), XSPR_MASK, PPC403,   0,              {RS}},
7567 {"mtdabr",      XSPR(31,467,1013), XSPR_MASK, PPC750,   0,              {RS}},
7568 {"mtdac1",      XSPR(31,467,1014), XSPR_MASK, PPC403,   0,              {RS}},
7569 {"mtdac2",      XSPR(31,467,1015), XSPR_MASK, PPC403,   0,              {RS}},
7570 {"mtl2cr",      XSPR(31,467,1017), XSPR_MASK, PPC750,   0,              {RS}},
7571 {"mtdccr",      XSPR(31,467,1018), XSPR_MASK, PPC403,   0,              {RS}},
7572 {"mticcr",      XSPR(31,467,1019), XSPR_MASK, PPC403,   0,              {RS}},
7573 {"mtictc",      XSPR(31,467,1019), XSPR_MASK, PPC750,   0,              {RS}},
7574 {"mtpbl1",      XSPR(31,467,1020), XSPR_MASK, PPC403,   0,              {RS}},
7575 {"mtthrm1",     XSPR(31,467,1020), XSPR_MASK, PPC750,   0,              {RS}},
7576 {"mtpbu1",      XSPR(31,467,1021), XSPR_MASK, PPC403,   0,              {RS}},
7577 {"mtthrm2",     XSPR(31,467,1021), XSPR_MASK, PPC750,   0,              {RS}},
7578 {"mtpbl2",      XSPR(31,467,1022), XSPR_MASK, PPC403,   0,              {RS}},
7579 {"mtthrm3",     XSPR(31,467,1022), XSPR_MASK, PPC750,   0,              {RS}},
7580 {"mtpbu2",      XSPR(31,467,1023), XSPR_MASK, PPC403,   0,              {RS}},
7581 {"mtspr",       X(31,467),      X_MASK,      COM,       0,              {SPR, RS}},
7582
7583 {"dcbi",        X(31,470),      XRT_MASK,    PPC,       0,              {RA0, RB}},
7584
7585 {"nand",        XRC(31,476,0),  X_MASK,      COM,       0,              {RA, RS, RB}},
7586 {"nand.",       XRC(31,476,1),  X_MASK,      COM,       0,              {RA, RS, RB}},
7587
7588 {"setnbcr",     X(31,480),      XRB_MASK,    POWER10,   0,              {RT, BI}},
7589
7590 {"dsn",         X(31,483),      XRT_MASK,    E500MC,    0,              {RA, RB}},
7591
7592 {"dcread",      X(31,486),      X_MASK,  PPC403|PPC440, PPCA2,          {RT, RA0, RB}},
7593
7594 {"icbtls",      X(31,486),      X_MASK,  PPCCHLK|PPC476|TITAN, 0,       {CT, RA0, RB}},
7595
7596 {"stvxl",       X(31,487),      X_MASK,      PPCVEC,    0,              {VS, RA0, RB}},
7597
7598 {"nabs",        XO(31,488,0,0), XORB_MASK,   M601,      0,              {RT, RA}},
7599 {"nabs.",       XO(31,488,0,1), XORB_MASK,   M601,      0,              {RT, RA}},
7600
7601 {"divd",        XO(31,489,0,0), XO_MASK,     PPC64,     0,              {RT, RA, RB}},
7602 {"divd.",       XO(31,489,0,1), XO_MASK,     PPC64,     0,              {RT, RA, RB}},
7603
7604 {"divw",        XO(31,491,0,0), XO_MASK,     PPC,       0,              {RT, RA, RB}},
7605 {"divw.",       XO(31,491,0,1), XO_MASK,     PPC,       0,              {RT, RA, RB}},
7606
7607 {"icbtlse",     X(31,494),      X_MASK,      PPCCHLK,   E500MC,         {CT, RA, RB}},
7608
7609 {"slbia",       X(31,498),      0xff1fffff,  POWER6,    0,              {IH}},
7610 {"slbia",       X(31,498),      0xffffffff,  PPC64,     POWER6,         {0}},
7611
7612 {"cli",         X(31,502),      XRB_MASK,    POWER,     0,              {RT, RA}},
7613
7614 {"popcntd",     X(31,506),      XRB_MASK, POWER7|PPCA2, 0,              {RA, RS}},
7615
7616 {"cmpb",        X(31,508),      X_MASK, POWER6|PPCA2|PPC476, 0,         {RA, RS, RB}},
7617
7618 {"mcrxr",       X(31,512),      XBFRARB_MASK, COM,      POWER7,         {BF}},
7619
7620 {"lbdcbx",      X(31,514),      X_MASK,      E200Z4,    0,              {RT, RA, RB}},
7621 {"lbdx",        X(31,515),      X_MASK,  E500MC|E200Z4, 0,              {RT, RA, RB}},
7622
7623 {"bblels",      X(31,518),      X_MASK,      PPCBRLK,   0,              {0}},
7624
7625 {"lvlx",        X(31,519),      X_MASK,      CELL,      0,              {VD, RA0, RB}},
7626 {"lbfcmux",     APU(31,519,0),  APU_MASK,    PPC405,    0,              {FCRT, RA, RB}},
7627
7628 {"subfco",      XO(31,8,1,0),   XO_MASK,     PPCCOM,    0,              {RT, RA, RB}},
7629 {"sfo",         XO(31,8,1,0),   XO_MASK,     PWRCOM,    0,              {RT, RA, RB}},
7630 {"subco",       XO(31,8,1,0),   XO_MASK,     PPCCOM,    0,              {RT, RB, RA}},
7631 {"subfco.",     XO(31,8,1,1),   XO_MASK,     PPCCOM,    0,              {RT, RA, RB}},
7632 {"sfo.",        XO(31,8,1,1),   XO_MASK,     PWRCOM,    0,              {RT, RA, RB}},
7633 {"subco.",      XO(31,8,1,1),   XO_MASK,     PPCCOM,    0,              {RT, RB, RA}},
7634
7635 {"addco",       XO(31,10,1,0),  XO_MASK,     PPCCOM,    0,              {RT, RA, RB}},
7636 {"ao",          XO(31,10,1,0),  XO_MASK,     PWRCOM,    0,              {RT, RA, RB}},
7637 {"addco.",      XO(31,10,1,1),  XO_MASK,     PPCCOM,    0,              {RT, RA, RB}},
7638 {"ao.",         XO(31,10,1,1),  XO_MASK,     PWRCOM,    0,              {RT, RA, RB}},
7639
7640 {"lxsspx",      X(31,524),      XX1_MASK,    PPCVSX2,   0,              {XT6, RA0, RB}},
7641
7642 {"clcs",        X(31,531),      XRB_MASK,    M601,      0,              {RT, RA}},
7643
7644 {"ldbrx",       X(31,532),      X_MASK, CELL|POWER7|PPCA2, 0,           {RT, RA0, RB}},
7645
7646 {"lswx",        X(31,533),      X_MASK,      PPCCOM,    E500|E500MC,    {RT, RAX, RBX}},
7647 {"lsx",         X(31,533),      X_MASK,      PWRCOM,    0,              {RT, RA, RB}},
7648
7649 {"lwbrx",       X(31,534),      X_MASK,      PPCCOM,    0,              {RT, RA0, RB}},
7650 {"lbrx",        X(31,534),      X_MASK,      PWRCOM,    0,              {RT, RA, RB}},
7651
7652 {"lfsx",        X(31,535),      X_MASK,      COM,       PPCEFS,         {FRT, RA0, RB}},
7653
7654 {"srw",         XRC(31,536,0),  X_MASK,      PPCCOM,    0,              {RA, RS, RB}},
7655 {"sr",          XRC(31,536,0),  X_MASK,      PWRCOM,    0,              {RA, RS, RB}},
7656 {"srw.",        XRC(31,536,1),  X_MASK,      PPCCOM,    0,              {RA, RS, RB}},
7657 {"sr.",         XRC(31,536,1),  X_MASK,      PWRCOM,    0,              {RA, RS, RB}},
7658
7659 {"rrib",        XRC(31,537,0),  X_MASK,      M601,      0,              {RA, RS, RB}},
7660 {"rrib.",       XRC(31,537,1),  X_MASK,      M601,      0,              {RA, RS, RB}},
7661
7662 {"cnttzw",      XRC(31,538,0),  XRB_MASK,    POWER9,    0,              {RA, RS}},
7663 {"cnttzw.",     XRC(31,538,1),  XRB_MASK,    POWER9,    0,              {RA, RS}},
7664
7665 {"srd",         XRC(31,539,0),  X_MASK,      PPC64,     0,              {RA, RS, RB}},
7666 {"srd.",        XRC(31,539,1),  X_MASK,      PPC64,     0,              {RA, RS, RB}},
7667
7668 {"maskir",      XRC(31,541,0),  X_MASK,      M601,      0,              {RA, RS, RB}},
7669 {"maskir.",     XRC(31,541,1),  X_MASK,      M601,      0,              {RA, RS, RB}},
7670
7671 {"lhdcbx",      X(31,546),      X_MASK,      E200Z4,    0,              {RT, RA, RB}},
7672 {"lhdx",        X(31,547),      X_MASK,  E500MC|E200Z4, 0,              {RT, RA, RB}},
7673
7674 {"lvtrx",       X(31,549),      X_MASK,      E6500,     0,              {VD, RA0, RB}},
7675
7676 {"bbelr",       X(31,550),      X_MASK,      PPCBRLK,   0,              {0}},
7677
7678 {"lvrx",        X(31,551),      X_MASK,      CELL,      0,              {VD, RA0, RB}},
7679 {"lhfcmux",     APU(31,551,0),  APU_MASK,    PPC405,    0,              {FCRT, RA, RB}},
7680
7681 {"subfo",       XO(31,40,1,0),  XO_MASK,     PPC,       0,              {RT, RA, RB}},
7682 {"subo",        XO(31,40,1,0),  XO_MASK,     PPC,       0,              {RT, RB, RA}},
7683 {"subfo.",      XO(31,40,1,1),  XO_MASK,     PPC,       0,              {RT, RA, RB}},
7684 {"subo.",       XO(31,40,1,1),  XO_MASK,     PPC,       0,              {RT, RB, RA}},
7685
7686 {"tlbsync",     X(31,566),      0xffffffff,  PPC,       0,              {0}},
7687
7688 {"lfsux",       X(31,567),      X_MASK,      COM,       PPCEFS,         {FRT, RAS, RB}},
7689
7690 {"cnttzd",      XRC(31,570,0),  XRB_MASK,    POWER9,    0,              {RA, RS}},
7691 {"cnttzd.",     XRC(31,570,1),  XRB_MASK,    POWER9,    0,              {RA, RS}},
7692
7693 {"cnttzdm",     X(31,571),      X_MASK,      POWER10,   0,              {RA, RS, RB}},
7694
7695 {"mcrxrx",      X(31,576),     XBFRARB_MASK, POWER9,    0,              {BF}},
7696
7697 {"lwdcbx",      X(31,578),      X_MASK,      E200Z4,    0,              {RT, RA, RB}},
7698 {"lwdx",        X(31,579),      X_MASK,  E500MC|E200Z4, 0,              {RT, RA, RB}},
7699
7700 {"lvtlx",       X(31,581),      X_MASK,      E6500,     0,              {VD, RA0, RB}},
7701
7702 {"lwat",        X(31,582),      X_MASK,      POWER9,    0,              {RT, RA0, FC}},
7703
7704 {"lwfcmux",     APU(31,583,0),  APU_MASK,    PPC405,    0,              {FCRT, RA, RB}},
7705
7706 {"lxsdx",       X(31,588),      XX1_MASK,    PPCVSX,    0,              {XT6, RA0, RB}},
7707
7708 {"mfsr",        X(31,595), XRB_MASK|(1<<20), COM,       NON32,          {RT, SR}},
7709
7710 {"lswi",        X(31,597),      X_MASK,      PPCCOM,    E500|E500MC,    {RT, RAX, NBI}},
7711 {"lsi",         X(31,597),      X_MASK,      PWRCOM,    0,              {RT, RA0, NB}},
7712
7713 {"hwsync",      XSYNC(31,598,0), 0xffffffff, POWER4,    BOOKE|PPC476,   {0}},
7714 {"lwsync",      XSYNC(31,598,1), 0xffffffff, PPC,       E500,           {0}},
7715 {"ptesync",     XSYNC(31,598,2), 0xffffffff, PPC64,     0,              {0}},
7716 {"phwsync",     XSYNCLS(31,598,4,0), 0xffffffff, POWER10, 0,            {0}},
7717 {"plwsync",     XSYNCLS(31,598,5,0), 0xffffffff, POWER10, 0,            {0}},
7718 {"stncisync",   XSYNCLS(31,598,1,1), 0xffffffff, POWER10, 0,            {0}},
7719 {"stcisync",    XSYNCLS(31,598,0,2), 0xffffffff, POWER10, 0,            {0}},
7720 {"stsync",      XSYNCLS(31,598,0,3), 0xffffffff, POWER10, 0,            {0}},
7721 {"sync",        X(31,598),     XSYNCLS_MASK, POWER10,   BOOKE|PPC476,   {LS3, SC2}},
7722 {"sync",        X(31,598),     XSYNCLE_MASK, E6500,     0,              {LS, ESYNC}},
7723 {"sync",        X(31,598),     XSYNC_MASK,   PPCCOM,    POWER10|BOOKE|PPC476, {LS}},
7724 {"msync",       X(31,598),     0xffffffff, BOOKE|PPCA2|PPC476, 0,       {0}},
7725 {"sync",        X(31,598),     0xffffffff,   BOOKE|PPC476, E6500,       {0}},
7726 {"lwsync",      X(31,598),     0xffffffff,   E500,      0,              {0}},
7727 {"dcs",         X(31,598),     0xffffffff,   PWRCOM,    0,              {0}},
7728
7729 {"lfdx",        X(31,599),      X_MASK,      COM,       PPCEFS,         {FRT, RA0, RB}},
7730
7731 {"mffgpr",      XRC(31,607,0),  XRA_MASK,    POWER6,    POWER7,         {FRT, RB}},
7732 {"lfdepx",      X(31,607),      X_MASK,   E500MC|PPCA2, 0,              {FRT, RA0, RB}},
7733
7734 {"lddx",        X(31,611),      X_MASK,      E500MC,    0,              {RT, RA, RB}},
7735
7736 {"lvswx",       X(31,613),      X_MASK,      E6500,     0,              {VD, RA0, RB}},
7737
7738 {"ldat",        X(31,614),      X_MASK,      POWER9,    0,              {RT, RA0, FC}},
7739
7740 {"lqfcmux",     APU(31,615,0),  APU_MASK,    PPC405,    0,              {FCRT, RA, RB}},
7741
7742 {"nego",        XO(31,104,1,0), XORB_MASK,   COM,       0,              {RT, RA}},
7743 {"nego.",       XO(31,104,1,1), XORB_MASK,   COM,       0,              {RT, RA}},
7744
7745 {"mulo",        XO(31,107,1,0), XO_MASK,     M601,      0,              {RT, RA, RB}},
7746 {"mulo.",       XO(31,107,1,1), XO_MASK,     M601,      0,              {RT, RA, RB}},
7747
7748 {"mfsri",       X(31,627),      X_MASK,      M601,      0,              {RT, RA, RB}},
7749
7750 {"dclst",       X(31,630),      XRB_MASK,    M601,      0,              {RS, RA}},
7751
7752 {"lfdux",       X(31,631),      X_MASK,      COM,       PPCEFS,         {FRT, RAS, RB}},
7753
7754 {"stbdcbx",     X(31,642),      X_MASK,      E200Z4,    0,              {RS, RA, RB}},
7755 {"stbdx",       X(31,643),      X_MASK,  E500MC|E200Z4, 0,              {RS, RA, RB}},
7756
7757 {"stvlx",       X(31,647),      X_MASK,      CELL,      0,              {VS, RA0, RB}},
7758 {"stbfcmux",    APU(31,647,0),  APU_MASK,    PPC405,    0,              {FCRT, RA, RB}},
7759
7760 {"stxsspx",     X(31,652),      XX1_MASK,    PPCVSX2,   0,              {XS6, RA0, RB}},
7761
7762 {"tbegin.",     XRC(31,654,1), XRTLRARB_MASK, PPCHTM,   0,              {HTM_R}},
7763
7764 {"subfeo",      XO(31,136,1,0), XO_MASK,     PPCCOM,    0,              {RT, RA, RB}},
7765 {"sfeo",        XO(31,136,1,0), XO_MASK,     PWRCOM,    0,              {RT, RA, RB}},
7766 {"subfeo.",     XO(31,136,1,1), XO_MASK,     PPCCOM,    0,              {RT, RA, RB}},
7767 {"sfeo.",       XO(31,136,1,1), XO_MASK,     PWRCOM,    0,              {RT, RA, RB}},
7768
7769 {"addeo",       XO(31,138,1,0), XO_MASK,     PPCCOM,    0,              {RT, RA, RB}},
7770 {"aeo",         XO(31,138,1,0), XO_MASK,     PWRCOM,    0,              {RT, RA, RB}},
7771 {"addeo.",      XO(31,138,1,1), XO_MASK,     PPCCOM,    0,              {RT, RA, RB}},
7772 {"aeo.",        XO(31,138,1,1), XO_MASK,     PWRCOM,    0,              {RT, RA, RB}},
7773
7774 {"hashstp",     X(31,658),      XRC_MASK,    POWER8,    0,              {RB, DW, RA0}},
7775
7776 {"mfsrin",      X(31,659),      XRA_MASK,    PPC,       NON32,          {RT, RB}},
7777
7778 {"stdbrx",      X(31,660),      X_MASK, CELL|POWER7|PPCA2, 0,           {RS, RA0, RB}},
7779
7780 {"stswx",       X(31,661),      X_MASK,      PPCCOM,    E500|E500MC,    {RS, RA0, RB}},
7781 {"stsx",        X(31,661),      X_MASK,      PWRCOM,    0,              {RS, RA0, RB}},
7782
7783 {"stwbrx",      X(31,662),      X_MASK,      PPCCOM,    0,              {RS, RA0, RB}},
7784 {"stbrx",       X(31,662),      X_MASK,      PWRCOM,    0,              {RS, RA0, RB}},
7785
7786 {"stfsx",       X(31,663),      X_MASK,      COM,       PPCEFS,         {FRS, RA0, RB}},
7787
7788 {"srq",         XRC(31,664,0),  X_MASK,      M601,      0,              {RA, RS, RB}},
7789 {"srq.",        XRC(31,664,1),  X_MASK,      M601,      0,              {RA, RS, RB}},
7790
7791 {"sre",         XRC(31,665,0),  X_MASK,      M601,      0,              {RA, RS, RB}},
7792 {"sre.",        XRC(31,665,1),  X_MASK,      M601,      0,              {RA, RS, RB}},
7793
7794 {"sthdcbx",     X(31,674),      X_MASK,      E200Z4,    0,              {RS, RA, RB}},
7795 {"sthdx",       X(31,675),      X_MASK,  E500MC|E200Z4, 0,              {RS, RA, RB}},
7796
7797 {"stvfrx",      X(31,677),      X_MASK,      E6500,     0,              {VS, RA0, RB}},
7798
7799 {"stvrx",       X(31,679),      X_MASK,      CELL,      0,              {VS, RA0, RB}},
7800 {"sthfcmux",    APU(31,679,0),  APU_MASK,    PPC405,    0,              {FCRT, RA, RB}},
7801
7802 {"tendall.",    XRC(31,686,1)|(1<<25), XRTRARB_MASK, PPCHTM, 0,         {0}},
7803 {"tend.",       XRC(31,686,1), XRTARARB_MASK, PPCHTM,   0,              {HTM_A}},
7804
7805 {"hashchkp",    X(31,690),      XRC_MASK,    POWER8,    0,              {RB, DW, RA0}},
7806
7807 {"stbcx.",      XRC(31,694,1),  X_MASK,   POWER8|E6500, 0,              {RS, RA0, RB}},
7808
7809 {"stfsux",      X(31,695),      X_MASK,      COM,       PPCEFS,         {FRS, RAS, RB}},
7810
7811 {"sriq",        XRC(31,696,0),  X_MASK,      M601,      0,              {RA, RS, SH}},
7812 {"sriq.",       XRC(31,696,1),  X_MASK,      M601,      0,              {RA, RS, SH}},
7813
7814 {"stwdcbx",     X(31,706),      X_MASK,      E200Z4,    0,              {RS, RA, RB}},
7815 {"stwdx",       X(31,707),      X_MASK,  E500MC|E200Z4, 0,              {RS, RA, RB}},
7816
7817 {"stvflx",      X(31,709),      X_MASK,      E6500,     0,              {VS, RA0, RB}},
7818
7819 {"stwat",       X(31,710),      X_MASK,      POWER9,    0,              {RS, RA0, FC}},
7820
7821 {"stwfcmux",    APU(31,711,0),  APU_MASK,    PPC405,    0,              {FCRT, RA, RB}},
7822
7823 {"stxsdx",      X(31,716),      XX1_MASK,    PPCVSX,    0,              {XS6, RA0, RB}},
7824
7825 {"tcheck",      X(31,718),   XRTBFRARB_MASK, PPCHTM,    0,              {BF}},
7826
7827 {"subfzeo",     XO(31,200,1,0), XORB_MASK,   PPCCOM,    0,              {RT, RA}},
7828 {"sfzeo",       XO(31,200,1,0), XORB_MASK,   PWRCOM,    0,              {RT, RA}},
7829 {"subfzeo.",    XO(31,200,1,1), XORB_MASK,   PPCCOM,    0,              {RT, RA}},
7830 {"sfzeo.",      XO(31,200,1,1), XORB_MASK,   PWRCOM,    0,              {RT, RA}},
7831
7832 {"addzeo",      XO(31,202,1,0), XORB_MASK,   PPCCOM,    0,              {RT, RA}},
7833 {"azeo",        XO(31,202,1,0), XORB_MASK,   PWRCOM,    0,              {RT, RA}},
7834 {"addzeo.",     XO(31,202,1,1), XORB_MASK,   PPCCOM,    0,              {RT, RA}},
7835 {"azeo.",       XO(31,202,1,1), XORB_MASK,   PWRCOM,    0,              {RT, RA}},
7836
7837 {"hashst",      X(31,722),      XRC_MASK,    POWER8,    0,              {RB, DW, RA0}},
7838
7839 {"stswi",       X(31,725),      X_MASK,      PPCCOM,    E500|E500MC,    {RS, RA0, NB}},
7840 {"stsi",        X(31,725),      X_MASK,      PWRCOM,    0,              {RS, RA0, NB}},
7841
7842 {"sthcx.",      XRC(31,726,1),  X_MASK,   POWER8|E6500, 0,              {RS, RA0, RB}},
7843
7844 {"stfdx",       X(31,727),      X_MASK,      COM,       PPCEFS,         {FRS, RA0, RB}},
7845
7846 {"srlq",        XRC(31,728,0),  X_MASK,      M601,      0,              {RA, RS, RB}},
7847 {"srlq.",       XRC(31,728,1),  X_MASK,      M601,      0,              {RA, RS, RB}},
7848
7849 {"sreq",        XRC(31,729,0),  X_MASK,      M601,      0,              {RA, RS, RB}},
7850 {"sreq.",       XRC(31,729,1),  X_MASK,      M601,      0,              {RA, RS, RB}},
7851
7852 {"mftgpr",      XRC(31,735,0),  XRA_MASK,    POWER6,    POWER7,         {RT, FRB}},
7853 {"stfdepx",     X(31,735),      X_MASK,   E500MC|PPCA2, 0,              {FRS, RA0, RB}},
7854
7855 {"stddx",       X(31,739),      X_MASK,      E500MC,    0,              {RS, RA, RB}},
7856
7857 {"stvswx",      X(31,741),      X_MASK,      E6500,     0,              {VS, RA0, RB}},
7858
7859 {"stdat",       X(31,742),      X_MASK,      POWER9,    0,              {RS, RA0, FC}},
7860
7861 {"stqfcmux",    APU(31,743,0),  APU_MASK,    PPC405,    0,              {FCRT, RA, RB}},
7862
7863 {"subfmeo",     XO(31,232,1,0), XORB_MASK,   PPCCOM,    0,              {RT, RA}},
7864 {"sfmeo",       XO(31,232,1,0), XORB_MASK,   PWRCOM,    0,              {RT, RA}},
7865 {"subfmeo.",    XO(31,232,1,1), XORB_MASK,   PPCCOM,    0,              {RT, RA}},
7866 {"sfmeo.",      XO(31,232,1,1), XORB_MASK,   PWRCOM,    0,              {RT, RA}},
7867
7868 {"mulldo",      XO(31,233,1,0), XO_MASK,     PPC64,     0,              {RT, RA, RB}},
7869 {"mulldo.",     XO(31,233,1,1), XO_MASK,     PPC64,     0,              {RT, RA, RB}},
7870
7871 {"addmeo",      XO(31,234,1,0), XORB_MASK,   PPCCOM,    0,              {RT, RA}},
7872 {"ameo",        XO(31,234,1,0), XORB_MASK,   PWRCOM,    0,              {RT, RA}},
7873 {"addmeo.",     XO(31,234,1,1), XORB_MASK,   PPCCOM,    0,              {RT, RA}},
7874 {"ameo.",       XO(31,234,1,1), XORB_MASK,   PWRCOM,    0,              {RT, RA}},
7875
7876 {"mullwo",      XO(31,235,1,0), XO_MASK,     PPCCOM,    0,              {RT, RA, RB}},
7877 {"mulso",       XO(31,235,1,0), XO_MASK,     PWRCOM,    0,              {RT, RA, RB}},
7878 {"mullwo.",     XO(31,235,1,1), XO_MASK,     PPCCOM,    0,              {RT, RA, RB}},
7879 {"mulso.",      XO(31,235,1,1), XO_MASK,     PWRCOM,    0,              {RT, RA, RB}},
7880
7881 {"tsuspend.",   XRCL(31,750,0,1), XRTRARB_MASK,PPCHTM,  0,              {0}},
7882 {"tresume.",    XRCL(31,750,1,1), XRTRARB_MASK,PPCHTM,  0,              {0}},
7883 {"tsr.",        XRC(31,750,1),    XRTLRARB_MASK,PPCHTM, 0,              {L}},
7884
7885 {"hashchk",     X(31,754),      XRC_MASK,    POWER8,    0,              {RB, DW, RA0}},
7886
7887 {"darn",        X(31,755),      XLRAND_MASK, POWER9,    0,              {RT, LRAND}},
7888
7889 {"dcba",        X(31,758), XRT_MASK, PPC405|PPC7450|BOOKE|PPCA2|PPC476, 0, {RA0, RB}},
7890 {"dcbal",       XOPL(31,758,1), XRT_MASK,    E500MC,    0,              {RA0, RB}},
7891
7892 {"stfdux",      X(31,759),      X_MASK,      COM,       PPCEFS,         {FRS, RAS, RB}},
7893
7894 {"srliq",       XRC(31,760,0),  X_MASK,      M601,      0,              {RA, RS, SH}},
7895 {"srliq.",      XRC(31,760,1),  X_MASK,      M601,      0,              {RA, RS, SH}},
7896
7897 {"lvsm",        X(31,773),      X_MASK,      E6500,     0,              {VD, RA0, RB}},
7898
7899 {"copy",        XOPL(31,774,1), XRT_MASK,    POWER9,    0,              {RA0, RB}},
7900
7901 {"stvepxl",     X(31,775),      X_MASK,      E6500,     0,              {VS, RA0, RB}},
7902 {"lvlxl",       X(31,775),      X_MASK,      CELL,      0,              {VD, RA0, RB}},
7903 {"ldfcmux",     APU(31,775,0),  APU_MASK,    PPC405,    0,              {FCRT, RA, RB}},
7904
7905 {"dozo",        XO(31,264,1,0), XO_MASK,     M601,      0,              {RT, RA, RB}},
7906 {"dozo.",       XO(31,264,1,1), XO_MASK,     M601,      0,              {RT, RA, RB}},
7907
7908 {"addo",        XO(31,266,1,0), XO_MASK,     PPCCOM,    0,              {RT, RA, RB}},
7909 {"caxo",        XO(31,266,1,0), XO_MASK,     PWRCOM,    0,              {RT, RA, RB}},
7910 {"addo.",       XO(31,266,1,1), XO_MASK,     PPCCOM,    0,              {RT, RA, RB}},
7911 {"caxo.",       XO(31,266,1,1), XO_MASK,     PWRCOM,    0,              {RT, RA, RB}},
7912
7913 {"modsd",       X(31,777),      X_MASK,      POWER9,    0,              {RT, RA, RB}},
7914 {"modsw",       X(31,779),      X_MASK,      POWER9,    0,              {RT, RA, RB}},
7915
7916 {"lxvw4x",      X(31,780),      XX1_MASK,    PPCVSX,    0,              {XT6, RA0, RB}},
7917 {"lxsibzx",     X(31,781),      XX1_MASK,    PPCVSX3,   0,              {XT6, RA0, RB}},
7918
7919 {"tabortwc.",   XRC(31,782,1),  X_MASK,      PPCHTM,    0,              {TO, RA, RB}},
7920
7921 {"tlbivax",     X(31,786),      XRT_MASK, BOOKE|PPCA2|PPC476, 0,        {RA0, RB}},
7922
7923 {"lwzcix",      X(31,789),      X_MASK,      POWER6,    0,              {RT, RA0, RB}},
7924
7925 {"lhbrx",       X(31,790),      X_MASK,      COM,       0,              {RT, RA0, RB}},
7926
7927 {"lfdpx",       X(31,791),    X_MASK|Q_MASK, POWER6,    POWER7,         {FRTp, RA0, RB}},
7928 {"lfqx",        X(31,791),      X_MASK,      POWER2,    0,              {FRT, RA, RB}},
7929
7930 {"sraw",        XRC(31,792,0),  X_MASK,      PPCCOM,    0,              {RA, RS, RB}},
7931 {"sra",         XRC(31,792,0),  X_MASK,      PWRCOM,    0,              {RA, RS, RB}},
7932 {"sraw.",       XRC(31,792,1),  X_MASK,      PPCCOM,    0,              {RA, RS, RB}},
7933 {"sra.",        XRC(31,792,1),  X_MASK,      PWRCOM,    0,              {RA, RS, RB}},
7934
7935 {"srad",        XRC(31,794,0),  X_MASK,      PPC64,     0,              {RA, RS, RB}},
7936 {"srad.",       XRC(31,794,1),  X_MASK,      PPC64,     0,              {RA, RS, RB}},
7937
7938 {"evlddepx",    VX (31, 1598),  VX_MASK,     PPCSPE,    0,              {RT, RA, RB}},
7939 {"lfddx",       X(31,803),      X_MASK,      E500MC,    0,              {FRT, RA, RB}},
7940
7941 {"lvtrxl",      X(31,805),      X_MASK,      E6500,     0,              {VD, RA0, RB}},
7942 {"stvepx",      X(31,807),      X_MASK,      E6500,     0,              {VS, RA0, RB}},
7943 {"lvrxl",       X(31,807),      X_MASK,      CELL,      0,              {VD, RA0, RB}},
7944
7945 {"lxvh8x",      X(31,812),      XX1_MASK,    PPCVSX3,   0,              {XT6, RA0, RB}},
7946 {"lxsihzx",     X(31,813),      XX1_MASK,    PPCVSX3,   0,              {XT6, RA0, RB}},
7947
7948 {"tabortdc.",   XRC(31,814,1),  X_MASK,      PPCHTM,    0,              {TO, RA, RB}},
7949
7950 {"rac",         X(31,818),      X_MASK,      M601,      0,              {RT, RA, RB}},
7951
7952 {"erativax",    X(31,819),      X_MASK,      PPCA2,     0,              {RS, RA0, RB}},
7953
7954 {"lhzcix",      X(31,821),      X_MASK,      POWER6,    0,              {RT, RA0, RB}},
7955
7956 {"dss",         XDSS(31,822,0), XDSS_MASK,   PPCVEC,    0,              {STRM}},
7957
7958 {"lfqux",       X(31,823),      X_MASK,      POWER2,    0,              {FRT, RA, RB}},
7959
7960 {"srawi",       XRC(31,824,0),  X_MASK,      PPCCOM,    0,              {RA, RS, SH}},
7961 {"srai",        XRC(31,824,0),  X_MASK,      PWRCOM,    0,              {RA, RS, SH}},
7962 {"srawi.",      XRC(31,824,1),  X_MASK,      PPCCOM,    0,              {RA, RS, SH}},
7963 {"srai.",       XRC(31,824,1),  X_MASK,      PWRCOM,    0,              {RA, RS, SH}},
7964
7965 {"sradi",       XS(31,413,0),   XS_MASK,     PPC64,     0,              {RA, RS, SH6}},
7966 {"sradi.",      XS(31,413,1),   XS_MASK,     PPC64,     0,              {RA, RS, SH6}},
7967
7968 {"lvtlxl",      X(31,837),      X_MASK,      E6500,     0,              {VD, RA0, RB}},
7969
7970 {"cpabort",     X(31,838),      XRTRARB_MASK,POWER9,    0,              {0}},
7971
7972 {"divo",        XO(31,331,1,0), XO_MASK,     M601,      0,              {RT, RA, RB}},
7973 {"divo.",       XO(31,331,1,1), XO_MASK,     M601,      0,              {RT, RA, RB}},
7974
7975 {"lxvd2x",      X(31,844),      XX1_MASK,    PPCVSX,    0,              {XT6, RA0, RB}},
7976 {"lxvx",        X(31,844),      XX1_MASK,    POWER8,    POWER9|PPCVSX3, {XT6, RA0, RB}},
7977
7978 {"tabortwci.",  XRC(31,846,1),  X_MASK,      PPCHTM,    0,              {TO, RA, HTM_SI}},
7979
7980 {"tlbsrx.",     XRC(31,850,1),  XRT_MASK,    PPCA2,     0,              {RA0, RB}},
7981
7982 {"slbiag",      X(31,850),      XRLARB_MASK, POWER10,   0,              {RS, A_L}},
7983 {"slbiag",      X(31,850),      XRARB_MASK,  POWER9,    POWER10,        {RS}},
7984
7985 {"slbmfev",     X(31,851),      XRLA_MASK,   POWER9,    0,              {RT, RB, A_L}},
7986 {"slbmfev",     X(31,851),      XRA_MASK,    PPC64,     POWER9,         {RT, RB}},
7987
7988 {"lbzcix",      X(31,853),      X_MASK,      POWER6,    0,              {RT, RA0, RB}},
7989
7990 {"eieio",       X(31,854),      0xffffffff,  PPC,   BOOKE|PPCA2|PPC476, {0}},
7991 {"mbar",        X(31,854),      X_MASK,    BOOKE|PPCA2|PPC476, 0,       {MO}},
7992 {"eieio",       XMBAR(31,854,1),0xffffffff,  E500,      0,              {0}},
7993 {"eieio",       X(31,854),      0xffffffff, PPCA2|PPC476, 0,            {0}},
7994
7995 {"lfiwax",      X(31,855),      X_MASK, POWER6|PPCA2|PPC476, 0,         {FRT, RA0, RB}},
7996
7997 {"lvswxl",      X(31,869),      X_MASK,      E6500,     0,              {VD, RA0, RB}},
7998
7999 {"abso",        XO(31,360,1,0), XORB_MASK,   M601,      0,              {RT, RA}},
8000 {"abso.",       XO(31,360,1,1), XORB_MASK,   M601,      0,              {RT, RA}},
8001
8002 {"divso",       XO(31,363,1,0), XO_MASK,     M601,      0,              {RT, RA, RB}},
8003 {"divso.",      XO(31,363,1,1), XO_MASK,     M601,      0,              {RT, RA, RB}},
8004
8005 {"lxvb16x",     X(31,876),      XX1_MASK,    PPCVSX3,   0,              {XT6, RA0, RB}},
8006
8007 {"tabortdci.",  XRC(31,878,1),  X_MASK,      PPCHTM,    0,              {TO, RA, HTM_SI}},
8008
8009 {"rmieg",       X(31,882),      XRTRA_MASK,  POWER9,    0,              {RB}},
8010
8011 {"ldcix",       X(31,885),      X_MASK,      POWER6,    0,              {RT, RA0, RB}},
8012
8013 {"msgsync",     X(31,886),      0xffffffff,  POWER9,    0,              {0}},
8014
8015 {"lfiwzx",      X(31,887),      X_MASK,   POWER7|PPCA2, 0,              {FRT, RA0, RB}},
8016
8017 {"extswsli",    XS(31,445,0),   XS_MASK,     POWER9,    0,              {RA, RS, SH6}},
8018 {"extswsli.",   XS(31,445,1),   XS_MASK,     POWER9,    0,              {RA, RS, SH6}},
8019
8020 {"paste.",      XRC(31,902,1),  XLRT_MASK,   POWER10,   0,              {RA0, RB, L1OPT}},
8021 {"paste.",      XRCL(31,902,1,1),XRT_MASK,   POWER9,    POWER10,        {RA0, RB}},
8022
8023 {"stvlxl",      X(31,903),      X_MASK,      CELL,      0,              {VS, RA0, RB}},
8024 {"stdfcmux",    APU(31,903,0),  APU_MASK,    PPC405,    0,              {FCRT, RA, RB}},
8025
8026 {"divdeuo",     XO(31,393,1,0), XO_MASK,  POWER7|PPCA2, 0,              {RT, RA, RB}},
8027 {"divdeuo.",    XO(31,393,1,1), XO_MASK,  POWER7|PPCA2, 0,              {RT, RA, RB}},
8028 {"divweuo",     XO(31,395,1,0), XO_MASK,  POWER7|PPCA2, 0,              {RT, RA, RB}},
8029 {"divweuo.",    XO(31,395,1,1), XO_MASK,  POWER7|PPCA2, 0,              {RT, RA, RB}},
8030
8031 {"stxvw4x",     X(31,908),      XX1_MASK,    PPCVSX,    0,              {XS6, RA0, RB}},
8032 {"stxsibx",     X(31,909),      XX1_MASK,    PPCVSX3,   0,              {XS6, RA0, RB}},
8033
8034 {"tabort.",     XRC(31,910,1),  XRTRB_MASK,  PPCHTM,    0,              {RA}},
8035
8036 {"tlbsx",       XRC(31,914,0),  X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0,   {RTO, RA0, RB}},
8037 {"tlbsx.",      XRC(31,914,1),  X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0,   {RTO, RA0, RB}},
8038
8039 {"slbmfee",     X(31,915),      XRLA_MASK,   POWER9,    0,              {RT, RB, A_L}},
8040 {"slbmfee",     X(31,915),      XRA_MASK,    PPC64,     POWER9,         {RT, RB}},
8041
8042 {"stwcix",      X(31,917),      X_MASK,      POWER6,    0,              {RS, RA0, RB}},
8043
8044 {"sthbrx",      X(31,918),      X_MASK,      COM,       0,              {RS, RA0, RB}},
8045
8046 {"stfdpx",      X(31,919),    X_MASK|Q_MASK, POWER6,    POWER7,         {FRSp, RA0, RB}},
8047 {"stfqx",       X(31,919),      X_MASK,      POWER2,    0,              {FRS, RA0, RB}},
8048
8049 {"sraq",        XRC(31,920,0),  X_MASK,      M601,      0,              {RA, RS, RB}},
8050 {"sraq.",       XRC(31,920,1),  X_MASK,      M601,      0,              {RA, RS, RB}},
8051
8052 {"srea",        XRC(31,921,0),  X_MASK,      M601,      0,              {RA, RS, RB}},
8053 {"srea.",       XRC(31,921,1),  X_MASK,      M601,      0,              {RA, RS, RB}},
8054
8055 {"extsh",       XRC(31,922,0),  XRB_MASK,    PPCCOM,    0,              {RA, RS}},
8056 {"exts",        XRC(31,922,0),  XRB_MASK,    PWRCOM,    0,              {RA, RS}},
8057 {"extsh.",      XRC(31,922,1),  XRB_MASK,    PPCCOM,    0,              {RA, RS}},
8058 {"exts.",       XRC(31,922,1),  XRB_MASK,    PWRCOM,    0,              {RA, RS}},
8059
8060 {"evstddepx",   VX (31, 1854),  VX_MASK,     PPCSPE,    0,              {RT, RA, RB}},
8061 {"stfddx",      X(31,931),      X_MASK,      E500MC,    0,              {FRS, RA, RB}},
8062
8063 {"stvfrxl",     X(31,933),      X_MASK,      E6500,     0,              {VS, RA0, RB}},
8064
8065 {"wclrone",     XOPL2(31,934,2),XRT_MASK,    PPCA2,     0,              {RA0, RB}},
8066 {"wclrall",     X(31,934),      XRARB_MASK,  PPCA2,     0,              {L2}},
8067 {"wclr",        X(31,934),      X_MASK,      PPCA2,     0,              {L2, RA0, RB}},
8068
8069 {"stvrxl",      X(31,935),      X_MASK,      CELL,      0,              {VS, RA0, RB}},
8070
8071 {"divdeo",      XO(31,425,1,0), XO_MASK,  POWER7|PPCA2, 0,              {RT, RA, RB}},
8072 {"divdeo.",     XO(31,425,1,1), XO_MASK,  POWER7|PPCA2, 0,              {RT, RA, RB}},
8073 {"divweo",      XO(31,427,1,0), XO_MASK,  POWER7|PPCA2, 0,              {RT, RA, RB}},
8074 {"divweo.",     XO(31,427,1,1), XO_MASK,  POWER7|PPCA2, 0,              {RT, RA, RB}},
8075
8076 {"stxvh8x",     X(31,940),      XX1_MASK,    PPCVSX3,   0,              {XS6, RA0, RB}},
8077 {"stxsihx",     X(31,941),      XX1_MASK,    PPCVSX3,   0,              {XS6, RA0, RB}},
8078
8079 {"treclaim.",   XRC(31,942,1),  XRTRB_MASK,  PPCHTM,    0,              {RA}},
8080
8081 {"tlbrehi",     XTLB(31,946,0), XTLB_MASK,   PPC403,    PPCA2,          {RT, RA}},
8082 {"tlbrelo",     XTLB(31,946,1), XTLB_MASK,   PPC403,    PPCA2,          {RT, RA}},
8083 {"tlbre",       X(31,946),  X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0,       {RSO, RAOPT, SHO}},
8084
8085 {"sthcix",      X(31,949),      X_MASK,      POWER6,    0,              {RS, RA0, RB}},
8086
8087 {"icswepx",     XRC(31,950,0),  X_MASK,      PPCA2,     0,              {RS, RA, RB}},
8088 {"icswepx.",    XRC(31,950,1),  X_MASK,      PPCA2,     0,              {RS, RA, RB}},
8089
8090 {"stfqux",      X(31,951),      X_MASK,      POWER2,    0,              {FRS, RA, RB}},
8091
8092 {"sraiq",       XRC(31,952,0),  X_MASK,      M601,      0,              {RA, RS, SH}},
8093 {"sraiq.",      XRC(31,952,1),  X_MASK,      M601,      0,              {RA, RS, SH}},
8094
8095 {"extsb",       XRC(31,954,0),  XRB_MASK,    PPC,       0,              {RA, RS}},
8096 {"extsb.",      XRC(31,954,1),  XRB_MASK,    PPC,       0,              {RA, RS}},
8097
8098 {"stvflxl",     X(31,965),      X_MASK,      E6500,     0,              {VS, RA0, RB}},
8099
8100 {"iccci",       X(31,966), XRT_MASK, PPC403|PPC440|PPC476|TITAN|PPCA2, 0, {RAOPT, RBOPT}},
8101 {"ici",         X(31,966),      XRARB_MASK,  PPCA2|PPC476, 0,           {CT}},
8102
8103 {"divduo",      XO(31,457,1,0), XO_MASK,     PPC64,     0,              {RT, RA, RB}},
8104 {"divduo.",     XO(31,457,1,1), XO_MASK,     PPC64,     0,              {RT, RA, RB}},
8105
8106 {"divwuo",      XO(31,459,1,0), XO_MASK,     PPC,       0,              {RT, RA, RB}},
8107 {"divwuo.",     XO(31,459,1,1), XO_MASK,     PPC,       0,              {RT, RA, RB}},
8108
8109 {"stxvd2x",     X(31,972),      XX1_MASK,    PPCVSX,    0,              {XS6, RA0, RB}},
8110 {"stxvx",       X(31,972),      XX1_MASK,    POWER8,    POWER9|PPCVSX3, {XS6, RA0, RB}},
8111
8112 {"tlbld",       X(31,978),      XRTRA_MASK,  PPC, PPC403|BOOKE|PPCA2|PPC476, {RB}},
8113 {"tlbwehi",     XTLB(31,978,0), XTLB_MASK,   PPC403,    0,              {RT, RA}},
8114 {"tlbwelo",     XTLB(31,978,1), XTLB_MASK,   PPC403,    0,              {RT, RA}},
8115 {"tlbwe",       X(31,978),  X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0,       {RSO, RAOPT, SHO}},
8116
8117 {"slbfee.",     XRC(31,979,1),  XRA_MASK,    POWER6,    0,              {RT, RB}},
8118
8119 {"stbcix",      X(31,981),      X_MASK,      POWER6,    0,              {RS, RA0, RB}},
8120
8121 {"icbi",        X(31,982),      XRT_MASK,    PPC,       0,              {RA0, RB}},
8122
8123 {"stfiwx",      X(31,983),      X_MASK,      PPC,       PPCEFS,         {FRS, RA0, RB}},
8124
8125 {"extsw",       XRC(31,986,0),  XRB_MASK,    PPC64,     0,              {RA, RS}},
8126 {"extsw.",      XRC(31,986,1),  XRB_MASK,    PPC64,     0,              {RA, RS}},
8127
8128 {"icbiep",      XRT(31,991,0),  XRT_MASK,    E500MC|PPCA2, 0,           {RA0, RB}},
8129
8130 {"stvswxl",     X(31,997),      X_MASK,      E6500,     0,              {VS, RA0, RB}},
8131
8132 {"icread",      X(31,998),     XRT_MASK, PPC403|PPC440|PPC476|TITAN, 0, {RA0, RB}},
8133
8134 {"nabso",       XO(31,488,1,0), XORB_MASK,   M601,      0,              {RT, RA}},
8135 {"nabso.",      XO(31,488,1,1), XORB_MASK,   M601,      0,              {RT, RA}},
8136
8137 {"divdo",       XO(31,489,1,0), XO_MASK,     PPC64,     0,              {RT, RA, RB}},
8138 {"divdo.",      XO(31,489,1,1), XO_MASK,     PPC64,     0,              {RT, RA, RB}},
8139
8140 {"divwo",       XO(31,491,1,0), XO_MASK,     PPC,       0,              {RT, RA, RB}},
8141 {"divwo.",      XO(31,491,1,1), XO_MASK,     PPC,       0,              {RT, RA, RB}},
8142
8143 {"stxvb16x",    X(31,1004),     XX1_MASK,    PPCVSX3,   0,              {XS6, RA0, RB}},
8144
8145 {"trechkpt.",   XRC(31,1006,1), XRTRARB_MASK,PPCHTM,    0,              {0}},
8146
8147 {"tlbli",       X(31,1010),     XRTRA_MASK,  PPC,       TITAN,          {RB}},
8148
8149 {"stdcix",      X(31,1013),     X_MASK,      POWER6,    0,              {RS, RA0, RB}},
8150
8151 {"dcbz",        X(31,1014),     XRT_MASK,    PPC,       0,              {RA0, RB}},
8152 {"dclz",        X(31,1014),     XRT_MASK,    PPC,       0,              {RA0, RB}},
8153
8154 {"dcbzep",      XRT(31,1023,0), XRT_MASK,    E500MC|PPCA2, 0,           {RA0, RB}},
8155
8156 {"dcbzl",       XOPL(31,1014,1), XRT_MASK,   POWER4|E500MC, PPC476,     {RA0, RB}},
8157
8158 {"dstt",        XDSS(31,342,1), XDSS_MASK,   PPCVEC,    0,              {RA, RB, STRM}},
8159 {"dststt",      XDSS(31,374,1), XDSS_MASK,   PPCVEC,    0,              {RA, RB, STRM}},
8160 {"dssall",      XDSS(31,822,1), XDSS_MASK,   PPCVEC,    0,              {0}},
8161
8162 {"db8cyc",      0x7f9ce378,     0xffffffff,  CELL,      0,              {0}},
8163 {"db10cyc",     0x7fbdeb78,     0xffffffff,  CELL,      0,              {0}},
8164 {"db12cyc",     0x7fdef378,     0xffffffff,  CELL,      0,              {0}},
8165 {"db16cyc",     0x7ffffb78,     0xffffffff,  CELL,      0,              {0}},
8166
8167 {"lwz",         OP(32),         OP_MASK,     PPCCOM,    PPCVLE,         {RT, D, RA0}},
8168 {"l",           OP(32),         OP_MASK,     PWRCOM,    PPCVLE,         {RT, D, RA0}},
8169
8170 {"lwzu",        OP(33),         OP_MASK,     PPCCOM,    PPCVLE,         {RT, D, RAL}},
8171 {"lu",          OP(33),         OP_MASK,     PWRCOM,    PPCVLE,         {RT, D, RA0}},
8172
8173 {"lbz",         OP(34),         OP_MASK,     COM,       PPCVLE,         {RT, D, RA0}},
8174
8175 {"lbzu",        OP(35),         OP_MASK,     COM,       PPCVLE,         {RT, D, RAL}},
8176
8177 {"stw",         OP(36),         OP_MASK,     PPCCOM,    PPCVLE,         {RS, D, RA0}},
8178 {"st",          OP(36),         OP_MASK,     PWRCOM,    PPCVLE,         {RS, D, RA0}},
8179
8180 {"stwu",        OP(37),         OP_MASK,     PPCCOM,    PPCVLE,         {RS, D, RAS}},
8181 {"stu",         OP(37),         OP_MASK,     PWRCOM,    PPCVLE,         {RS, D, RA0}},
8182
8183 {"stb",         OP(38),         OP_MASK,     COM,       PPCVLE,         {RS, D, RA0}},
8184
8185 {"stbu",        OP(39),         OP_MASK,     COM,       PPCVLE,         {RS, D, RAS}},
8186
8187 {"lhz",         OP(40),         OP_MASK,     COM,       PPCVLE,         {RT, D, RA0}},
8188
8189 {"lhzu",        OP(41),         OP_MASK,     COM,       PPCVLE,         {RT, D, RAL}},
8190
8191 {"lha",         OP(42),         OP_MASK,     COM,       PPCVLE,         {RT, D, RA0}},
8192
8193 {"lhau",        OP(43),         OP_MASK,     COM,       PPCVLE,         {RT, D, RAL}},
8194
8195 {"sth",         OP(44),         OP_MASK,     COM,       PPCVLE,         {RS, D, RA0}},
8196
8197 {"sthu",        OP(45),         OP_MASK,     COM,       PPCVLE,         {RS, D, RAS}},
8198
8199 {"lmw",         OP(46),         OP_MASK,     PPCCOM,    PPCVLE,         {RT, D, RAM}},
8200 {"lm",          OP(46),         OP_MASK,     PWRCOM,    PPCVLE,         {RT, D, RA0}},
8201
8202 {"stmw",        OP(47),         OP_MASK,     PPCCOM,    PPCVLE,         {RS, D, RA0}},
8203 {"stm",         OP(47),         OP_MASK,     PWRCOM,    PPCVLE,         {RS, D, RA0}},
8204
8205 {"lfs",         OP(48),         OP_MASK,     COM,       PPCEFS|PPCVLE,  {FRT, D, RA0}},
8206
8207 {"lfsu",        OP(49),         OP_MASK,     COM,       PPCEFS|PPCVLE,  {FRT, D, RAS}},
8208
8209 {"lfd",         OP(50),         OP_MASK,     COM,       PPCEFS|PPCVLE,  {FRT, D, RA0}},
8210
8211 {"lfdu",        OP(51),         OP_MASK,     COM,       PPCEFS|PPCVLE,  {FRT, D, RAS}},
8212
8213 {"stfs",        OP(52),         OP_MASK,     COM,       PPCEFS|PPCVLE,  {FRS, D, RA0}},
8214
8215 {"stfsu",       OP(53),         OP_MASK,     COM,       PPCEFS|PPCVLE,  {FRS, D, RAS}},
8216
8217 {"stfd",        OP(54),         OP_MASK,     COM,       PPCEFS|PPCVLE,  {FRS, D, RA0}},
8218
8219 {"stfdu",       OP(55),         OP_MASK,     COM,       PPCEFS|PPCVLE,  {FRS, D, RAS}},
8220
8221 {"lq",          OP(56),      OP_MASK|Q_MASK, POWER4,    PPC476|PPCVLE,  {RTQ, DQ, RAQ}},
8222 {"psq_l",       OP(56),         OP_MASK,     PPCPS,     PPCVLE,         {FRT,PSD,RA,PSW,PSQ}},
8223 {"lfq",         OP(56),         OP_MASK,     POWER2,    PPCVLE,         {FRT, D, RA0}},
8224
8225 {"lxsd",        DSO(57,2),      DS_MASK,     PPCVSX3,   PPCVLE,         {VD, DS, RA0}},
8226 {"lxssp",       DSO(57,3),      DS_MASK,     PPCVSX3,   PPCVLE,         {VD, DS, RA0}},
8227 {"lfdp",        OP(57),      OP_MASK|Q_MASK, POWER6,    POWER7|PPCVLE,  {FRTp, DS, RA0}},
8228 {"psq_lu",      OP(57),         OP_MASK,     PPCPS,     PPCVLE,         {FRT,PSD,RA,PSW,PSQ}},
8229 {"lfqu",        OP(57),         OP_MASK,     POWER2,    PPCVLE,         {FRT, D, RA0}},
8230
8231 {"ld",          DSO(58,0),      DS_MASK,     PPC64,     PPCVLE,         {RT, DS, RA0}},
8232 {"ldu",         DSO(58,1),      DS_MASK,     PPC64,     PPCVLE,         {RT, DS, RAL}},
8233 {"lwa",         DSO(58,2),      DS_MASK,     PPC64,     PPCVLE,         {RT, DS, RA0}},
8234
8235 {"dadd",        XRC(59,2,0),    X_MASK,      POWER6,    PPCVLE,         {FRT, FRA, FRB}},
8236 {"dadd.",       XRC(59,2,1),    X_MASK,      POWER6,    PPCVLE,         {FRT, FRA, FRB}},
8237
8238 {"dqua",        ZRC(59,3,0),    Z2_MASK,     POWER6,    PPCVLE,         {FRT,FRA,FRB,RMC}},
8239 {"dqua.",       ZRC(59,3,1),    Z2_MASK,     POWER6,    PPCVLE,         {FRT,FRA,FRB,RMC}},
8240
8241 {"xvi8ger4pp",  XX3(59,2),   XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6a, XB6a}},
8242 {"xvi8ger4",    XX3(59,3),   XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6a, XB6a}},
8243
8244 {"fdivs",       A(59,18,0),     AFRC_MASK,   PPC,       PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
8245 {"fdivs.",      A(59,18,1),     AFRC_MASK,   PPC,       PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
8246
8247 {"fsubs",       A(59,20,0),     AFRC_MASK,   PPC,       PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
8248 {"fsubs.",      A(59,20,1),     AFRC_MASK,   PPC,       PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
8249
8250 {"fadds",       A(59,21,0),     AFRC_MASK,   PPC,       PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
8251 {"fadds.",      A(59,21,1),     AFRC_MASK,   PPC,       PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
8252
8253 {"fsqrts",      A(59,22,0),    AFRAFRC_MASK, PPC,       TITAN|PPCVLE,   {FRT, FRB}},
8254 {"fsqrts.",     A(59,22,1),    AFRAFRC_MASK, PPC,       TITAN|PPCVLE,   {FRT, FRB}},
8255
8256 {"fres",        A(59,24,0),   AFRAFRC_MASK,  POWER7,    PPCVLE,         {FRT, FRB}},
8257 {"fres",        A(59,24,0),   AFRALFRC_MASK, PPC,       POWER7|PPCVLE,  {FRT, FRB, A_L}},
8258 {"fres.",       A(59,24,1),   AFRAFRC_MASK,  POWER7,    PPCVLE,         {FRT, FRB}},
8259 {"fres.",       A(59,24,1),   AFRALFRC_MASK, PPC,       POWER7|PPCVLE,  {FRT, FRB, A_L}},
8260
8261 {"fmuls",       A(59,25,0),     AFRB_MASK,   PPC,       PPCEFS|PPCVLE,  {FRT, FRA, FRC}},
8262 {"fmuls.",      A(59,25,1),     AFRB_MASK,   PPC,       PPCEFS|PPCVLE,  {FRT, FRA, FRC}},
8263
8264 {"frsqrtes",    A(59,26,0),   AFRAFRC_MASK,  POWER7,    PPCVLE,         {FRT, FRB}},
8265 {"frsqrtes",    A(59,26,0),   AFRALFRC_MASK, POWER5,    POWER7|PPCVLE,  {FRT, FRB, A_L}},
8266 {"frsqrtes.",   A(59,26,1),   AFRAFRC_MASK,  POWER7,    PPCVLE,         {FRT, FRB}},
8267 {"frsqrtes.",   A(59,26,1),   AFRALFRC_MASK, POWER5,    POWER7|PPCVLE,  {FRT, FRB, A_L}},
8268
8269 {"fmsubs",      A(59,28,0),     A_MASK,      PPC,       PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
8270 {"fmsubs.",     A(59,28,1),     A_MASK,      PPC,       PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
8271
8272 {"fmadds",      A(59,29,0),     A_MASK,      PPC,       PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
8273 {"fmadds.",     A(59,29,1),     A_MASK,      PPC,       PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
8274
8275 {"fnmsubs",     A(59,30,0),     A_MASK,      PPC,       PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
8276 {"fnmsubs.",    A(59,30,1),     A_MASK,      PPC,       PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
8277
8278 {"fnmadds",     A(59,31,0),     A_MASK,      PPC,       PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
8279 {"fnmadds.",    A(59,31,1),     A_MASK,      PPC,       PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
8280
8281 {"dmul",        XRC(59,34,0),   X_MASK,      POWER6,    PPCVLE,         {FRT, FRA, FRB}},
8282 {"dmul.",       XRC(59,34,1),   X_MASK,      POWER6,    PPCVLE,         {FRT, FRA, FRB}},
8283
8284 {"drrnd",       ZRC(59,35,0),   Z2_MASK,     POWER6,    PPCVLE,         {FRT, FRA, FRB, RMC}},
8285 {"drrnd.",      ZRC(59,35,1),   Z2_MASK,     POWER6,    PPCVLE,         {FRT, FRA, FRB, RMC}},
8286
8287 {"dscli",       ZRC(59,66,0),   Z_MASK,      POWER6,    PPCVLE,         {FRT, FRA, SH16}},
8288 {"dscli.",      ZRC(59,66,1),   Z_MASK,      POWER6,    PPCVLE,         {FRT, FRA, SH16}},
8289
8290 {"dquai",       ZRC(59,67,0),   Z2_MASK,     POWER6,    PPCVLE,         {TE, FRT,FRB,RMC}},
8291 {"dquai.",      ZRC(59,67,1),   Z2_MASK,     POWER6,    PPCVLE,         {TE, FRT,FRB,RMC}},
8292
8293 {"xvf16ger2pp", XX3(59,18),  XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6a, XB6a}},
8294 {"xvf16ger2",   XX3(59,19),  XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6a, XB6a}},
8295
8296 {"dscri",       ZRC(59,98,0),   Z_MASK,      POWER6,    PPCVLE,         {FRT, FRA, SH16}},
8297 {"dscri.",      ZRC(59,98,1),   Z_MASK,      POWER6,    PPCVLE,         {FRT, FRA, SH16}},
8298
8299 {"drintx",      ZRC(59,99,0),   Z2_MASK,     POWER6,    PPCVLE,         {R, FRT, FRB, RMC}},
8300 {"drintx.",     ZRC(59,99,1),   Z2_MASK,     POWER6,    PPCVLE,         {R, FRT, FRB, RMC}},
8301
8302 {"xvf32gerpp",  XX3(59,26),  XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6a, XB6a}},
8303 {"xvf32ger",    XX3(59,27),  XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6a, XB6a}},
8304
8305 {"dcmpo",       X(59,130),      X_MASK,      POWER6,    PPCVLE,         {BF,  FRA, FRB}},
8306
8307 {"xvi4ger8pp",  XX3(59,34),  XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6a, XB6a}},
8308 {"xvi4ger8",    XX3(59,35),  XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6a, XB6a}},
8309
8310 {"dtstex",      X(59,162),      X_MASK,      POWER6,    PPCVLE,         {BF,  FRA, FRB}},
8311
8312 {"xvi16ger2spp", XX3(59,42), XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6a, XB6a}},
8313 {"xvi16ger2s",  XX3(59,43),  XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6a, XB6a}},
8314
8315 {"dtstdc",      Z(59,194),      Z_MASK,      POWER6,    PPCVLE,         {BF,  FRA, DCM}},
8316
8317 {"xvbf16ger2pp",XX3(59,50),  XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6a, XB6a}},
8318 {"xvbf16ger2",  XX3(59,51),  XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6a, XB6a}},
8319
8320 {"dtstdg",      Z(59,226),      Z_MASK,      POWER6,    PPCVLE,         {BF,  FRA, DGM}},
8321
8322 {"drintn",      ZRC(59,227,0),  Z2_MASK,     POWER6,    PPCVLE,         {R, FRT, FRB, RMC}},
8323 {"drintn.",     ZRC(59,227,1),  Z2_MASK,     POWER6,    PPCVLE,         {R, FRT, FRB, RMC}},
8324
8325 {"xvf64gerpp",  XX3(59,58),  XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6ap, XB6a}},
8326 {"xvf64ger",    XX3(59,59),  XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6ap, XB6a}},
8327
8328 {"dctdp",       XRC(59,258,0),  X_MASK,      POWER6,    PPCVLE,         {FRT, FRB}},
8329 {"dctdp.",      XRC(59,258,1),  X_MASK,      POWER6,    PPCVLE,         {FRT, FRB}},
8330
8331 {"dctfix",      XRC(59,290,0),  X_MASK,      POWER6,    PPCVLE,         {FRT, FRB}},
8332 {"dctfix.",     XRC(59,290,1),  X_MASK,      POWER6,    PPCVLE,         {FRT, FRB}},
8333
8334 {"ddedpd",      XRC(59,322,0),  X_MASK,      POWER6,    PPCVLE,         {SP, FRT, FRB}},
8335 {"ddedpd.",     XRC(59,322,1),  X_MASK,      POWER6,    PPCVLE,         {SP, FRT, FRB}},
8336
8337 {"xvi16ger2",   XX3(59,75),  XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6a, XB6a}},
8338
8339 {"xvf16ger2np", XX3(59,82),  XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6a, XB6a}},
8340
8341 {"dxex",        XRC(59,354,0),  X_MASK,      POWER6,    PPCVLE,         {FRT, FRB}},
8342 {"dxex.",       XRC(59,354,1),  X_MASK,      POWER6,    PPCVLE,         {FRT, FRB}},
8343
8344 {"xvf32gernp",  XX3(59,90),  XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6a, XB6a}},
8345
8346 {"xvi8ger4spp", XX3(59,99),  XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6a, XB6a}},
8347
8348 {"xvi16ger2pp", XX3(59,107), XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6a, XB6a}},
8349
8350 {"xvbf16ger2np",XX3(59,114), XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6a, XB6a}},
8351
8352 {"xvf64gernp",  XX3(59,122), XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6ap, XB6a}},
8353
8354 {"dsub",        XRC(59,514,0),  X_MASK,      POWER6,    PPCVLE,         {FRT, FRA, FRB}},
8355 {"dsub.",       XRC(59,514,1),  X_MASK,      POWER6,    PPCVLE,         {FRT, FRA, FRB}},
8356
8357 {"ddiv",        XRC(59,546,0),  X_MASK,      POWER6,    PPCVLE,         {FRT, FRA, FRB}},
8358 {"ddiv.",       XRC(59,546,1),  X_MASK,      POWER6,    PPCVLE,         {FRT, FRA, FRB}},
8359
8360 {"xvf16ger2pn", XX3(59,146), XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6a, XB6a}},
8361
8362 {"xvf32gerpn",  XX3(59,154), XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6a, XB6a}},
8363
8364 {"dcmpu",       X(59,642),      X_MASK,      POWER6,    PPCVLE,         {BF,  FRA, FRB}},
8365
8366 {"dtstsf",      X(59,674),      X_MASK,      POWER6,    PPCVLE,         {BF,  FRA, FRB}},
8367 {"dtstsfi",     X(59,675),      X_MASK|1<<22,POWER9,    PPCVLE,         {BF, UIM6, FRB}},
8368
8369 {"xvbf16ger2pn",XX3(59,178), XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6a, XB6a}},
8370
8371 {"xvf64gerpn",  XX3(59,186), XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6ap, XB6a}},
8372
8373 {"drsp",        XRC(59,770,0),  X_MASK,      POWER6,    PPCVLE,         {FRT, FRB}},
8374 {"drsp.",       XRC(59,770,1),  X_MASK,      POWER6,    PPCVLE,         {FRT, FRB}},
8375
8376 {"dcffix",      XRC(59,802,0), X_MASK|FRA_MASK, POWER7, PPCVLE,         {FRT, FRB}},
8377 {"dcffix.",     XRC(59,802,1), X_MASK|FRA_MASK, POWER7, PPCVLE,         {FRT, FRB}},
8378
8379 {"denbcd",      XRC(59,834,0),  X_MASK,      POWER6,    PPCVLE,         {S, FRT, FRB}},
8380 {"denbcd.",     XRC(59,834,1),  X_MASK,      POWER6,    PPCVLE,         {S, FRT, FRB}},
8381
8382 {"xvf16ger2nn", XX3(59,210), XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6a, XB6a}},
8383
8384 {"fcfids",      XRC(59,846,0),  XRA_MASK, POWER7|PPCA2, PPCVLE,         {FRT, FRB}},
8385 {"fcfids.",     XRC(59,846,1),  XRA_MASK, POWER7|PPCA2, PPCVLE,         {FRT, FRB}},
8386
8387 {"diex",        XRC(59,866,0),  X_MASK,      POWER6,    PPCVLE,         {FRT, FRA, FRB}},
8388 {"diex.",       XRC(59,866,1),  X_MASK,      POWER6,    PPCVLE,         {FRT, FRA, FRB}},
8389
8390 {"xvf32gernn",  XX3(59,218), XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6a, XB6a}},
8391
8392 {"xvbf16ger2nn",XX3(59,242), XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6a, XB6a}},
8393
8394 {"fcfidus",     XRC(59,974,0),  XRA_MASK, POWER7|PPCA2, PPCVLE,         {FRT, FRB}},
8395 {"fcfidus.",    XRC(59,974,1),  XRA_MASK, POWER7|PPCA2, PPCVLE,         {FRT, FRB}},
8396
8397 {"xvf64gernn",  XX3(59,250), XX3_MASK|3<<21, POWER10,   PPCVLE,         {ACC, XA6ap, XB6a}},
8398
8399 {"xsaddsp",     XX3(60,0),      XX3_MASK,    PPCVSX2,   PPCVLE,         {XT6, XA6, XB6}},
8400 {"xsmaddasp",   XX3(60,1),      XX3_MASK,    PPCVSX2,   PPCVLE,         {XT6, XA6, XB6}},
8401 {"xxsldwi",     XX3(60,2),      XX3SHW_MASK, PPCVSX,    PPCVLE,         {XT6, XA6, XB6, SHW}},
8402 {"xscmpeqdp",   XX3(60,3),      XX3_MASK,    PPCVSX3,   PPCVLE,         {XT6, XA6, XB6}},
8403 {"xsrsqrtesp",  XX2(60,10),     XX2_MASK,    PPCVSX2,   PPCVLE,         {XT6, XB6}},
8404 {"xssqrtsp",    XX2(60,11),     XX2_MASK,    PPCVSX2,   PPCVLE,         {XT6, XB6}},
8405 {"xxsel",       XX4(60,3),      XX4_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6, XC6}},
8406 {"xssubsp",     XX3(60,8),      XX3_MASK,    PPCVSX2,   PPCVLE,         {XT6, XA6, XB6}},
8407 {"xsmaddmsp",   XX3(60,9),      XX3_MASK,    PPCVSX2,   PPCVLE,         {XT6, XA6, XB6}},
8408 {"xxspltd",     XX3(60,10),     XX3DM_MASK,  PPCVSX,    PPCVLE,         {XT6, XAB6, DMEX}},
8409 {"xxmrghd",     XX3(60,10),     XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8410 {"xxswapd",     XX3(60,10)|(2<<8), XX3_MASK, PPCVSX,    PPCVLE,         {XT6, XAB6}},
8411 {"xxmrgld",     XX3(60,10)|(3<<8), XX3_MASK, PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8412 {"xxpermdi",    XX3(60,10),     XX3DM_MASK,  PPCVSX,    PPCVLE,         {XT6, XA6, XB6, DM}},
8413 {"xscmpgtdp",   XX3(60,11),     XX3_MASK,    PPCVSX3,   PPCVLE,         {XT6, XA6, XB6}},
8414 {"xsresp",      XX2(60,26),     XX2_MASK,    PPCVSX2,   PPCVLE,         {XT6, XB6}},
8415 {"xsmulsp",     XX3(60,16),     XX3_MASK,    PPCVSX2,   PPCVLE,         {XT6, XA6, XB6}},
8416 {"xsmsubasp",   XX3(60,17),     XX3_MASK,    PPCVSX2,   PPCVLE,         {XT6, XA6, XB6}},
8417 {"xxmrghw",     XX3(60,18),     XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8418 {"xscmpgedp",   XX3(60,19),     XX3_MASK,    PPCVSX3,   PPCVLE,         {XT6, XA6, XB6}},
8419 {"xsdivsp",     XX3(60,24),     XX3_MASK,    PPCVSX2,   PPCVLE,         {XT6, XA6, XB6}},
8420 {"xsmsubmsp",   XX3(60,25),     XX3_MASK,    PPCVSX2,   PPCVLE,         {XT6, XA6, XB6}},
8421 {"xxperm",      XX3(60,26),     XX3_MASK,    PPCVSX3,   PPCVLE,         {XT6, XA6, XB6}},
8422 {"xsadddp",     XX3(60,32),     XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8423 {"xsmaddadp",   XX3(60,33),     XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8424 {"xscmpudp",    XX3(60,35),     XX3BF_MASK,  PPCVSX,    PPCVLE,         {BF, XA6, XB6}},
8425 {"xscvdpuxws",  XX2(60,72),     XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8426 {"xsrdpi",      XX2(60,73),     XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8427 {"xsrsqrtedp",  XX2(60,74),     XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8428 {"xssqrtdp",    XX2(60,75),     XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8429 {"xssubdp",     XX3(60,40),     XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8430 {"xsmaddmdp",   XX3(60,41),     XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8431 {"xscmpodp",    XX3(60,43),     XX3BF_MASK,  PPCVSX,    PPCVLE,         {BF, XA6, XB6}},
8432 {"xscvdpsxws",  XX2(60,88),     XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8433 {"xsrdpiz",     XX2(60,89),     XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8434 {"xsredp",      XX2(60,90),     XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8435 {"xsmuldp",     XX3(60,48),     XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8436 {"xsmsubadp",   XX3(60,49),     XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8437 {"xxmrglw",     XX3(60,50),     XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8438 {"xsrdpip",     XX2(60,105),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8439 {"xstsqrtdp",   XX2(60,106),    XX2BF_MASK,  PPCVSX,    PPCVLE,         {BF, XB6}},
8440 {"xsrdpic",     XX2(60,107),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8441 {"xsdivdp",     XX3(60,56),     XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8442 {"xsmsubmdp",   XX3(60,57),     XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8443 {"xxpermr",     XX3(60,58),     XX3_MASK,    PPCVSX3,   PPCVLE,         {XT6, XA6, XB6}},
8444 {"xscmpexpdp",  XX3(60,59),     XX3BF_MASK,  PPCVSX3,   PPCVLE,         {BF, XA6, XB6}},
8445 {"xsrdpim",     XX2(60,121),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8446 {"xstdivdp",    XX3(60,61),     XX3BF_MASK,  PPCVSX,    PPCVLE,         {BF, XA6, XB6}},
8447 {"xvaddsp",     XX3(60,64),     XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8448 {"xvmaddasp",   XX3(60,65),     XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8449 {"xvcmpeqsp",   XX3RC(60,67,0), XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8450 {"xvcmpeqsp.",  XX3RC(60,67,1), XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8451 {"xvcvspuxws",  XX2(60,136),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8452 {"xvrspi",      XX2(60,137),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8453 {"xvrsqrtesp",  XX2(60,138),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8454 {"xvsqrtsp",    XX2(60,139),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8455 {"xvsubsp",     XX3(60,72),     XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8456 {"xvmaddmsp",   XX3(60,73),     XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8457 {"xvcmpgtsp",   XX3RC(60,75,0), XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8458 {"xvcmpgtsp.",  XX3RC(60,75,1), XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8459 {"xvcvspsxws",  XX2(60,152),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8460 {"xvrspiz",     XX2(60,153),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8461 {"xvresp",      XX2(60,154),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8462 {"xvmulsp",     XX3(60,80),     XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8463 {"xvmsubasp",   XX3(60,81),     XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8464 {"xxspltw",     XX2(60,164),    XX2UIM_MASK, PPCVSX,    PPCVLE,         {XT6, XB6, UIM}},
8465 {"xxextractuw", XX2(60,165),   XX2UIM4_MASK, PPCVSX3,   PPCVLE,         {XT6, XB6, UIMM4}},
8466 {"xvcmpgesp",   XX3RC(60,83,0), XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8467 {"xvcmpgesp.",  XX3RC(60,83,1), XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8468 {"xvcvuxwsp",   XX2(60,168),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8469 {"xvrspip",     XX2(60,169),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8470 {"xvtsqrtsp",   XX2(60,170),    XX2BF_MASK,  PPCVSX,    PPCVLE,         {BF, XB6}},
8471 {"xvrspic",     XX2(60,171),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8472 {"xvdivsp",     XX3(60,88),     XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8473 {"xvmsubmsp",   XX3(60,89),     XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8474 {"xxspltib",    X(60,360),   XX1_MASK|3<<19, PPCVSX3,   PPCVLE,         {XT6, IMM8}},
8475 {"lxvkq",       XVA(60,360,31), XVA_MASK&~1, POWER10,   PPCVLE,         {XT6, UIM5}},
8476 {"xxinsertw",   XX2(60,181),   XX2UIM4_MASK, PPCVSX3,   PPCVLE,         {XT6, XB6, UIMM4}},
8477 {"xvcvsxwsp",   XX2(60,184),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8478 {"xvrspim",     XX2(60,185),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8479 {"xvtdivsp",    XX3(60,93),     XX3BF_MASK,  PPCVSX,    PPCVLE,         {BF, XA6, XB6}},
8480 {"xvadddp",     XX3(60,96),     XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8481 {"xvmaddadp",   XX3(60,97),     XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8482 {"xvcmpeqdp",   XX3RC(60,99,0), XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8483 {"xvcmpeqdp.",  XX3RC(60,99,1), XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8484 {"xvcvdpuxws",  XX2(60,200),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8485 {"xvrdpi",      XX2(60,201),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8486 {"xvrsqrtedp",  XX2(60,202),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8487 {"xvsqrtdp",    XX2(60,203),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8488 {"xvsubdp",     XX3(60,104),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8489 {"xvmaddmdp",   XX3(60,105),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8490 {"xvcmpgtdp",   XX3RC(60,107,0), XX3_MASK,   PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8491 {"xvcmpgtdp.",  XX3RC(60,107,1), XX3_MASK,   PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8492 {"xvcvdpsxws",  XX2(60,216),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8493 {"xvrdpiz",     XX2(60,217),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8494 {"xvredp",      XX2(60,218),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8495 {"xvmuldp",     XX3(60,112),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8496 {"xvmsubadp",   XX3(60,113),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8497 {"xvcmpgedp",   XX3RC(60,115,0), XX3_MASK,   PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8498 {"xvcmpgedp.",  XX3RC(60,115,1), XX3_MASK,   PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8499 {"xvcvuxwdp",   XX2(60,232),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8500 {"xvrdpip",     XX2(60,233),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8501 {"xvtsqrtdp",   XX2(60,234),    XX2BF_MASK,  PPCVSX,    PPCVLE,         {BF, XB6}},
8502 {"xvrdpic",     XX2(60,235),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8503 {"xvdivdp",     XX3(60,120),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8504 {"xvmsubmdp",   XX3(60,121),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8505 {"xvcvsxwdp",   XX2(60,248),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8506 {"xvrdpim",     XX2(60,249),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8507 {"xvtdivdp",    XX3(60,125),    XX3BF_MASK,  PPCVSX,    PPCVLE,         {BF, XA6, XB6}},
8508 {"xsmaxcdp",    XX3(60,128),    XX3_MASK,    PPCVSX3,   PPCVLE,         {XT6, XA6, XB6}},
8509 {"xsnmaddasp",  XX3(60,129),    XX3_MASK,    PPCVSX2,   PPCVLE,         {XT6, XA6, XB6}},
8510 {"xxland",      XX3(60,130),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8511 {"xscvdpsp",    XX2(60,265),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8512 {"xscvdpspn",   XX2(60,267),    XX2_MASK,    PPCVSX2,   PPCVLE,         {XT6, XB6}},
8513 {"xsmincdp",    XX3(60,136),    XX3_MASK,    PPCVSX3,   PPCVLE,         {XT6, XA6, XB6}},
8514 {"xsnmaddmsp",  XX3(60,137),    XX3_MASK,    PPCVSX2,   PPCVLE,         {XT6, XA6, XB6}},
8515 {"xxlandc",     XX3(60,138),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8516 {"xsrsp",       XX2(60,281),    XX2_MASK,    PPCVSX2,   PPCVLE,         {XT6, XB6}},
8517 {"xsmaxjdp",    XX3(60,144),    XX3_MASK,    PPCVSX3,   PPCVLE,         {XT6, XA6, XB6}},
8518 {"xsnmsubasp",  XX3(60,145),    XX3_MASK,    PPCVSX2,   PPCVLE,         {XT6, XA6, XB6}},
8519 {"xxlor",       XX3(60,146),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8520 {"xscvuxdsp",   XX2(60,296),    XX2_MASK,    PPCVSX2,   PPCVLE,         {XT6, XB6}},
8521 {"xststdcsp",   XX2(60,298),    XX2BFD_MASK, PPCVSX3,   PPCVLE,         {BF, XB6, DCMX}},
8522 {"xsminjdp",    XX3(60,152),    XX3_MASK,    PPCVSX3,   PPCVLE,         {XT6, XA6, XB6}},
8523 {"xsnmsubmsp",  XX3(60,153),    XX3_MASK,    PPCVSX2,   PPCVLE,         {XT6, XA6, XB6}},
8524 {"xxlxor",      XX3(60,154),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8525 {"xscvsxdsp",   XX2(60,312),    XX2_MASK,    PPCVSX2,   PPCVLE,         {XT6, XB6}},
8526 {"xsmaxdp",     XX3(60,160),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8527 {"xsnmaddadp",  XX3(60,161),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8528 {"xxlnor",      XX3(60,162),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8529 {"xscvdpuxds",  XX2(60,328),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8530 {"xscvspdp",    XX2(60,329),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8531 {"xscvspdpn",   XX2(60,331),    XX2_MASK,    PPCVSX2,   PPCVLE,         {XT6, XB6}},
8532 {"xsmindp",     XX3(60,168),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8533 {"xsnmaddmdp",  XX3(60,169),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8534 {"xxlorc",      XX3(60,170),    XX3_MASK,    PPCVSX2,   PPCVLE,         {XT6, XA6, XB6}},
8535 {"xscvdpsxds",  XX2(60,344),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8536 {"xsabsdp",     XX2(60,345),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8537 {"xsxexpdp",    XX2VA(60,347,0),XX2_MASK|1,  PPCVSX3,   PPCVLE,         {RT, XB6}},
8538 {"xsxsigdp",    XX2VA(60,347,1),XX2_MASK|1,  PPCVSX3,   PPCVLE,         {RT, XB6}},
8539 {"xscvhpdp",    XX2VA(60,347,16),XX2_MASK,   PPCVSX3,   PPCVLE,         {XT6, XB6}},
8540 {"xscvdphp",    XX2VA(60,347,17),XX2_MASK,   PPCVSX3,   PPCVLE,         {XT6, XB6}},
8541 {"xscpsgndp",   XX3(60,176),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8542 {"xsnmsubadp",  XX3(60,177),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8543 {"xxlnand",     XX3(60,178),    XX3_MASK,    PPCVSX2,   PPCVLE,         {XT6, XA6, XB6}},
8544 {"xscvuxddp",   XX2(60,360),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8545 {"xsnabsdp",    XX2(60,361),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8546 {"xststdcdp",   XX2(60,362),    XX2BFD_MASK, PPCVSX3,   PPCVLE,         {BF, XB6, DCMX}},
8547 {"xsnmsubmdp",  XX3(60,185),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8548 {"xxleqv",      XX3(60,186),    XX3_MASK,    PPCVSX2,   PPCVLE,         {XT6, XA6, XB6}},
8549 {"xscvsxddp",   XX2(60,376),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8550 {"xsnegdp",     XX2(60,377),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8551 {"xvmaxsp",     XX3(60,192),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8552 {"xvnmaddasp",  XX3(60,193),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8553 {"xvcvspuxds",  XX2(60,392),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8554 {"xvcvdpsp",    XX2(60,393),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8555 {"xvminsp",     XX3(60,200),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8556 {"xvnmaddmsp",  XX3(60,201),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8557 {"xvcvspsxds",  XX2(60,408),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8558 {"xvabssp",     XX2(60,409),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8559 {"xvmovsp",     XX3(60,208),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XAB6}},
8560 {"xvcpsgnsp",   XX3(60,208),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8561 {"xvnmsubasp",  XX3(60,209),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8562 {"xvcvuxdsp",   XX2(60,424),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8563 {"xvnabssp",    XX2(60,425),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8564 {"xvtstdcsp",   XX2(60,426),  XX2DCMXS_MASK, PPCVSX3,   PPCVLE,         {XT6, XB6, DCMXS}},
8565 {"xviexpsp",    XX3(60,216),    XX3_MASK,    PPCVSX3,   PPCVLE,         {XT6, XA6, XB6}},
8566 {"xvnmsubmsp",  XX3(60,217),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8567 {"xvcvsxdsp",   XX2(60,440),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8568 {"xvnegsp",     XX2(60,441),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8569 {"xvmaxdp",     XX3(60,224),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8570 {"xvnmaddadp",  XX3(60,225),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8571 {"xvcvdpuxds",  XX2(60,456),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8572 {"xvcvspdp",    XX2(60,457),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8573 {"xxgenpcvbm",  X(60,916),      XX1_MASK,    POWER10,   PPCVLE,         {XT6, VB, UIMM}},
8574 {"xxgenpcvhm",  X(60,917),      XX1_MASK,    POWER10,   PPCVLE,         {XT6, VB, UIMM}},
8575 {"xsiexpdp",    X(60,918),      XX1_MASK,    PPCVSX3,   PPCVLE,         {XT6, RA, RB}},
8576 {"xvmindp",     XX3(60,232),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8577 {"xvnmaddmdp",  XX3(60,233),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8578 {"xvcvdpsxds",  XX2(60,472),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8579 {"xvabsdp",     XX2(60,473),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8580 {"xxgenpcvwm",  X(60,948),      XX1_MASK,    POWER10,   PPCVLE,         {XT6, VB, UIMM}},
8581 {"xxgenpcvdm",  X(60,949),      XX1_MASK,    POWER10,   PPCVLE,         {XT6, VB, UIMM}},
8582 {"xvxexpdp",    XX2VA(60,475,0),XX2_MASK,    PPCVSX3,   PPCVLE,         {XT6, XB6}},
8583 {"xvxsigdp",    XX2VA(60,475,1),XX2_MASK,    PPCVSX3,   PPCVLE,         {XT6, XB6}},
8584 {"xvtlsbb",     XX2VA(60,475,2),XX2BF_MASK,  POWER10,   PPCVLE,         {BF, XB6}},
8585 {"xxbrh",       XX2VA(60,475,7),XX2_MASK,    PPCVSX3,   PPCVLE,         {XT6, XB6}},
8586 {"xvxexpsp",    XX2VA(60,475,8),XX2_MASK,    PPCVSX3,   PPCVLE,         {XT6, XB6}},
8587 {"xvxsigsp",    XX2VA(60,475,9),XX2_MASK,    PPCVSX3,   PPCVLE,         {XT6, XB6}},
8588 {"xxbrw",       XX2VA(60,475,15),XX2_MASK,   PPCVSX3,   PPCVLE,         {XT6, XB6}},
8589 {"xvcvbf16spn", XX2VA(60,475,16),XX2_MASK,   PPCVSX4,   PPCVLE,         {XT6, XB6}},
8590 {"xvcvspbf16",  XX2VA(60,475,17),XX2_MASK,   PPCVSX4,   PPCVLE,         {XT6, XB6}},
8591 {"xxbrd",       XX2VA(60,475,23),XX2_MASK,   PPCVSX3,   PPCVLE,         {XT6, XB6}},
8592 {"xvcvhpsp",    XX2VA(60,475,24),XX2_MASK,   PPCVSX3,   PPCVLE,         {XT6, XB6}},
8593 {"xvcvsphp",    XX2VA(60,475,25),XX2_MASK,   PPCVSX3,   PPCVLE,         {XT6, XB6}},
8594 {"xxbrq",       XX2VA(60,475,31),XX2_MASK,   PPCVSX3,   PPCVLE,         {XT6, XB6}},
8595 {"xvmovdp",     XX3(60,240),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XAB6}},
8596 {"xvcpsgndp",   XX3(60,240),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8597 {"xvnmsubadp",  XX3(60,241),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8598 {"xvcvuxddp",   XX2(60,488),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8599 {"xvnabsdp",    XX2(60,489),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8600 {"xvtstdcdp",   XX2(60,490),  XX2DCMXS_MASK, PPCVSX3,   PPCVLE,         {XT6, XB6, DCMXS}},
8601 {"xviexpdp",    XX3(60,248),    XX3_MASK,    PPCVSX3,   PPCVLE,         {XT6, XA6, XB6}},
8602 {"xvnmsubmdp",  XX3(60,249),    XX3_MASK,    PPCVSX,    PPCVLE,         {XT6, XA6, XB6}},
8603 {"xvcvsxddp",   XX2(60,504),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8604 {"xvnegdp",     XX2(60,505),    XX2_MASK,    PPCVSX,    PPCVLE,         {XT6, XB6}},
8605
8606 {"psq_st",      OP(60),         OP_MASK,     PPCPS,     PPCVLE,         {FRS,PSD,RA,PSW,PSQ}},
8607 {"stfq",        OP(60),         OP_MASK,     POWER2,    PPCVLE,         {FRS, D, RA}},
8608
8609 {"lxv",         DQX(61,1),      DQX_MASK,    PPCVSX3,   PPCVLE,         {XTQ6, DQ, RA0}},
8610 {"stxv",        DQX(61,5),      DQX_MASK,    PPCVSX3,   PPCVLE,         {XSQ6, DQ, RA0}},
8611 {"stxsd",       DSO(61,2),      DS_MASK,     PPCVSX3,   PPCVLE,         {VS, DS, RA0}},
8612 {"stxssp",      DSO(61,3),      DS_MASK,     PPCVSX3,   PPCVLE,         {VS, DS, RA0}},
8613 {"stfdp",       OP(61),      OP_MASK|Q_MASK, POWER6,    POWER7|PPCVLE,  {FRSp, DS, RA0}},
8614 {"psq_stu",     OP(61),         OP_MASK,     PPCPS,     PPCVLE,         {FRS,PSD,RA,PSW,PSQ}},
8615 {"stfqu",       OP(61),         OP_MASK,     POWER2,    PPCVLE,         {FRS, D, RA}},
8616
8617 {"std",         DSO(62,0),      DS_MASK,     PPC64,     PPCVLE,         {RS, DS, RA0}},
8618 {"stdu",        DSO(62,1),      DS_MASK,     PPC64,     PPCVLE,         {RS, DS, RAS}},
8619 {"stq",         DSO(62,2),   DS_MASK|Q_MASK, POWER4,    PPC476|PPCVLE,  {RSQ, DS, RA0}},
8620
8621 {"fcmpu",       X(63,0),        XBF_MASK,    COM,       PPCEFS|PPCVLE,  {BF, FRA, FRB}},
8622
8623 {"daddq",       XRC(63,2,0),  X_MASK|Q_MASK, POWER6,    PPCVLE,         {FRTp, FRAp, FRBp}},
8624 {"daddq.",      XRC(63,2,1),  X_MASK|Q_MASK, POWER6,    PPCVLE,         {FRTp, FRAp, FRBp}},
8625
8626 {"dquaq",       ZRC(63,3,0), Z2_MASK|Q_MASK, POWER6,    PPCVLE,         {FRTp, FRAp, FRBp, RMC}},
8627 {"dquaq.",      ZRC(63,3,1), Z2_MASK|Q_MASK, POWER6,    PPCVLE,         {FRTp, FRAp, FRBp, RMC}},
8628
8629 {"xsaddqp",     XRC(63,4,0),    X_MASK,      PPCVSX3,   PPCVLE,         {VD, VA, VB}},
8630 {"xsaddqpo",    XRC(63,4,1),    X_MASK,      PPCVSX3,   PPCVLE,         {VD, VA, VB}},
8631
8632 {"xsrqpi",      ZRC(63,5,0),    Z2_MASK,     PPCVSX3,   PPCVLE,         {R, VD, VB, RMC}},
8633 {"xsrqpix",     ZRC(63,5,1),    Z2_MASK,     PPCVSX3,   PPCVLE,         {R, VD, VB, RMC}},
8634
8635 {"fcpsgn",      XRC(63,8,0),    X_MASK, POWER6|PPCA2|PPC476, PPCVLE,    {FRT, FRA, FRB}},
8636 {"fcpsgn.",     XRC(63,8,1),    X_MASK, POWER6|PPCA2|PPC476, PPCVLE,    {FRT, FRA, FRB}},
8637
8638 {"frsp",        XRC(63,12,0),   XRA_MASK,    COM,       PPCEFS|PPCVLE,  {FRT, FRB}},
8639 {"frsp.",       XRC(63,12,1),   XRA_MASK,    COM,       PPCEFS|PPCVLE,  {FRT, FRB}},
8640
8641 {"fctiw",       XRC(63,14,0),   XRA_MASK,    PPCCOM,    PPCEFS|PPCVLE,  {FRT, FRB}},
8642 {"fcir",        XRC(63,14,0),   XRA_MASK,    PWR2COM,   PPCVLE,         {FRT, FRB}},
8643 {"fctiw.",      XRC(63,14,1),   XRA_MASK,    PPCCOM,    PPCEFS|PPCVLE,  {FRT, FRB}},
8644 {"fcir.",       XRC(63,14,1),   XRA_MASK,    PWR2COM,   PPCVLE,         {FRT, FRB}},
8645
8646 {"fctiwz",      XRC(63,15,0),   XRA_MASK,    PPCCOM,    PPCEFS|PPCVLE,  {FRT, FRB}},
8647 {"fcirz",       XRC(63,15,0),   XRA_MASK,    PWR2COM,   PPCVLE,         {FRT, FRB}},
8648 {"fctiwz.",     XRC(63,15,1),   XRA_MASK,    PPCCOM,    PPCEFS|PPCVLE,  {FRT, FRB}},
8649 {"fcirz.",      XRC(63,15,1),   XRA_MASK,    PWR2COM,   PPCVLE,         {FRT, FRB}},
8650
8651 {"fdiv",        A(63,18,0),     AFRC_MASK,   PPCCOM,    PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
8652 {"fd",          A(63,18,0),     AFRC_MASK,   PWRCOM,    PPCVLE,         {FRT, FRA, FRB}},
8653 {"fdiv.",       A(63,18,1),     AFRC_MASK,   PPCCOM,    PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
8654 {"fd.",         A(63,18,1),     AFRC_MASK,   PWRCOM,    PPCVLE,         {FRT, FRA, FRB}},
8655
8656 {"fsub",        A(63,20,0),     AFRC_MASK,   PPCCOM,    PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
8657 {"fs",          A(63,20,0),     AFRC_MASK,   PWRCOM,    PPCVLE,         {FRT, FRA, FRB}},
8658 {"fsub.",       A(63,20,1),     AFRC_MASK,   PPCCOM,    PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
8659 {"fs.",         A(63,20,1),     AFRC_MASK,   PWRCOM,    PPCVLE,         {FRT, FRA, FRB}},
8660
8661 {"fadd",        A(63,21,0),     AFRC_MASK,   PPCCOM,    PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
8662 {"fa",          A(63,21,0),     AFRC_MASK,   PWRCOM,    PPCVLE,         {FRT, FRA, FRB}},
8663 {"fadd.",       A(63,21,1),     AFRC_MASK,   PPCCOM,    PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
8664 {"fa.",         A(63,21,1),     AFRC_MASK,   PWRCOM,    PPCVLE,         {FRT, FRA, FRB}},
8665
8666 {"fsqrt",       A(63,22,0),    AFRAFRC_MASK, PPCPWR2,   TITAN|PPCVLE,   {FRT, FRB}},
8667 {"fsqrt.",      A(63,22,1),    AFRAFRC_MASK, PPCPWR2,   TITAN|PPCVLE,   {FRT, FRB}},
8668
8669 {"fsel",        A(63,23,0),     A_MASK,      PPC,       PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
8670 {"fsel.",       A(63,23,1),     A_MASK,      PPC,       PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
8671
8672 {"fre",         A(63,24,0),   AFRAFRC_MASK,  POWER7,    PPCVLE,         {FRT, FRB}},
8673 {"fre",         A(63,24,0),   AFRALFRC_MASK, POWER5,    POWER7|PPCVLE,  {FRT, FRB, A_L}},
8674 {"fre.",        A(63,24,1),   AFRAFRC_MASK,  POWER7,    PPCVLE,         {FRT, FRB}},
8675 {"fre.",        A(63,24,1),   AFRALFRC_MASK, POWER5,    POWER7|PPCVLE,  {FRT, FRB, A_L}},
8676
8677 {"fmul",        A(63,25,0),     AFRB_MASK,   PPCCOM,    PPCEFS|PPCVLE,  {FRT, FRA, FRC}},
8678 {"fm",          A(63,25,0),     AFRB_MASK,   PWRCOM,    PPCVLE|PPCVLE,  {FRT, FRA, FRC}},
8679 {"fmul.",       A(63,25,1),     AFRB_MASK,   PPCCOM,    PPCEFS|PPCVLE,  {FRT, FRA, FRC}},
8680 {"fm.",         A(63,25,1),     AFRB_MASK,   PWRCOM,    PPCVLE|PPCVLE,  {FRT, FRA, FRC}},
8681
8682 {"frsqrte",     A(63,26,0),   AFRAFRC_MASK,  POWER7,    PPCVLE,         {FRT, FRB}},
8683 {"frsqrte",     A(63,26,0),   AFRALFRC_MASK, PPC,       POWER7|PPCVLE,  {FRT, FRB, A_L}},
8684 {"frsqrte.",    A(63,26,1),   AFRAFRC_MASK,  POWER7,    PPCVLE,         {FRT, FRB}},
8685 {"frsqrte.",    A(63,26,1),   AFRALFRC_MASK, PPC,       POWER7|PPCVLE,  {FRT, FRB, A_L}},
8686
8687 {"fmsub",       A(63,28,0),     A_MASK,      PPCCOM,    PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
8688 {"fms",         A(63,28,0),     A_MASK,      PWRCOM,    PPCVLE,         {FRT, FRA, FRC, FRB}},
8689 {"fmsub.",      A(63,28,1),     A_MASK,      PPCCOM,    PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
8690 {"fms.",        A(63,28,1),     A_MASK,      PWRCOM,    PPCVLE,         {FRT, FRA, FRC, FRB}},
8691
8692 {"fmadd",       A(63,29,0),     A_MASK,      PPCCOM,    PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
8693 {"fma",         A(63,29,0),     A_MASK,      PWRCOM,    PPCVLE,         {FRT, FRA, FRC, FRB}},
8694 {"fmadd.",      A(63,29,1),     A_MASK,      PPCCOM,    PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
8695 {"fma.",        A(63,29,1),     A_MASK,      PWRCOM,    PPCVLE,         {FRT, FRA, FRC, FRB}},
8696
8697 {"fnmsub",      A(63,30,0),     A_MASK,      PPCCOM,    PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
8698 {"fnms",        A(63,30,0),     A_MASK,      PWRCOM,    PPCVLE,         {FRT, FRA, FRC, FRB}},
8699 {"fnmsub.",     A(63,30,1),     A_MASK,      PPCCOM,    PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
8700 {"fnms.",       A(63,30,1),     A_MASK,      PWRCOM,    PPCVLE,         {FRT, FRA, FRC, FRB}},
8701
8702 {"fnmadd",      A(63,31,0),     A_MASK,      PPCCOM,    PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
8703 {"fnma",        A(63,31,0),     A_MASK,      PWRCOM,    PPCVLE,         {FRT, FRA, FRC, FRB}},
8704 {"fnmadd.",     A(63,31,1),     A_MASK,      PPCCOM,    PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
8705 {"fnma.",       A(63,31,1),     A_MASK,      PWRCOM,    PPCVLE,         {FRT, FRA, FRC, FRB}},
8706
8707 {"fcmpo",       X(63,32),       XBF_MASK,    COM,       PPCEFS|PPCVLE,  {BF, FRA, FRB}},
8708
8709 {"dmulq",       XRC(63,34,0), X_MASK|Q_MASK, POWER6,    PPCVLE,         {FRTp, FRAp, FRBp}},
8710 {"dmulq.",      XRC(63,34,1), X_MASK|Q_MASK, POWER6,    PPCVLE,         {FRTp, FRAp, FRBp}},
8711
8712 {"drrndq",      ZRC(63,35,0), Z2_MASK|Q_MASK, POWER6,   PPCVLE,         {FRTp, FRA, FRBp, RMC}},
8713 {"drrndq.",     ZRC(63,35,1), Z2_MASK|Q_MASK, POWER6,   PPCVLE,         {FRTp, FRA, FRBp, RMC}},
8714
8715 {"xsmulqp",     XRC(63,36,0),   X_MASK,      PPCVSX3,   PPCVLE,         {VD, VA, VB}},
8716 {"xsmulqpo",    XRC(63,36,1),   X_MASK,      PPCVSX3,   PPCVLE,         {VD, VA, VB}},
8717
8718 {"xsrqpxp",     Z(63,37),       Z2_MASK,     PPCVSX3,   PPCVLE,         {R, VD, VB, RMC}},
8719
8720 {"mtfsb1",      XRC(63,38,0),   XRARB_MASK,  COM,       PPCVLE,         {BTF}},
8721 {"mtfsb1.",     XRC(63,38,1),   XRARB_MASK,  COM,       PPCVLE,         {BTF}},
8722
8723 {"fneg",        XRC(63,40,0),   XRA_MASK,    COM,       PPCEFS|PPCVLE,  {FRT, FRB}},
8724 {"fneg.",       XRC(63,40,1),   XRA_MASK,    COM,       PPCEFS|PPCVLE,  {FRT, FRB}},
8725
8726 {"mcrfs",      X(63,64), XRB_MASK|(3<<21)|(3<<16), COM, PPCVLE,         {BF, BFA}},
8727
8728 {"dscliq",      ZRC(63,66,0), Z_MASK|Q_MASK, POWER6,    PPCVLE,         {FRTp, FRAp, SH16}},
8729 {"dscliq.",     ZRC(63,66,1), Z_MASK|Q_MASK, POWER6,    PPCVLE,         {FRTp, FRAp, SH16}},
8730
8731 {"dquaiq",      ZRC(63,67,0), Z2_MASK|Q_MASK, POWER6,   PPCVLE,         {TE, FRTp, FRBp, RMC}},
8732 {"dquaiq.",     ZRC(63,67,1), Z2_MASK|Q_MASK, POWER6,   PPCVLE,         {TE, FRTp, FRBp, RMC}},
8733
8734 {"xscmpeqqp",   X(63,68),       X_MASK,      POWER10,   PPCVLE,         {VD, VA, VB}},
8735
8736 {"mtfsb0",      XRC(63,70,0),   XRARB_MASK,  COM,       PPCVLE,         {BTF}},
8737 {"mtfsb0.",     XRC(63,70,1),   XRARB_MASK,  COM,       PPCVLE,         {BTF}},
8738
8739 {"fmr",         XRC(63,72,0),   XRA_MASK,    COM,       PPCEFS|PPCVLE,  {FRT, FRB}},
8740 {"fmr.",        XRC(63,72,1),   XRA_MASK,    COM,       PPCEFS|PPCVLE,  {FRT, FRB}},
8741
8742 {"dscriq",      ZRC(63,98,0), Z_MASK|Q_MASK, POWER6,    PPCVLE,         {FRTp, FRAp, SH16}},
8743 {"dscriq.",     ZRC(63,98,1), Z_MASK|Q_MASK, POWER6,    PPCVLE,         {FRTp, FRAp, SH16}},
8744
8745 {"drintxq",     ZRC(63,99,0), Z2_MASK|Q_MASK, POWER6,   PPCVLE,         {R, FRTp, FRBp, RMC}},
8746 {"drintxq.",    ZRC(63,99,1), Z2_MASK|Q_MASK, POWER6,   PPCVLE,         {R, FRTp, FRBp, RMC}},
8747
8748 {"xscpsgnqp",   X(63,100),      X_MASK,      PPCVSX3,   PPCVLE,         {VD, VA, VB}},
8749
8750 {"ftdiv",       X(63,128),      XBF_MASK,    POWER7,    PPCVLE,         {BF, FRA, FRB}},
8751
8752 {"dcmpoq",      X(63,130),      X_MASK,      POWER6,    PPCVLE,         {BF, FRAp, FRBp}},
8753
8754 {"xscmpoqp",    X(63,132),      XBF_MASK,    PPCVSX3,   PPCVLE,         {BF, VA, VB}},
8755
8756 {"mtfsfi",  XRC(63,134,0), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCVLE, {BFF, U, W}},
8757 {"mtfsfi",  XRC(63,134,0), XRA_MASK|(3<<21)|(1<<11), COM, POWER6|PPCA2|PPC476|PPCVLE, {BFF, U}},
8758 {"mtfsfi.", XRC(63,134,1), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCVLE, {BFF, U, W}},
8759 {"mtfsfi.", XRC(63,134,1), XRA_MASK|(3<<21)|(1<<11), COM, POWER6|PPCA2|PPC476|PPCVLE, {BFF, U}},
8760
8761 {"fnabs",       XRC(63,136,0),  XRA_MASK,    COM,       PPCEFS|PPCVLE,  {FRT, FRB}},
8762 {"fnabs.",      XRC(63,136,1),  XRA_MASK,    COM,       PPCEFS|PPCVLE,  {FRT, FRB}},
8763
8764 {"fctiwu",      XRC(63,142,0),  XRA_MASK,    POWER7,    PPCVLE,         {FRT, FRB}},
8765 {"fctiwu.",     XRC(63,142,1),  XRA_MASK,    POWER7,    PPCVLE,         {FRT, FRB}},
8766 {"fctiwuz",     XRC(63,143,0),  XRA_MASK,    POWER7,    PPCVLE,         {FRT, FRB}},
8767 {"fctiwuz.",    XRC(63,143,1),  XRA_MASK,    POWER7,    PPCVLE,         {FRT, FRB}},
8768
8769 {"ftsqrt",      X(63,160),      XBF_MASK|FRA_MASK, POWER7, PPCVLE,      {BF, FRB}},
8770
8771 {"dtstexq",     X(63,162),      X_MASK,      POWER6,    PPCVLE,         {BF, FRAp, FRBp}},
8772
8773 {"xscmpexpqp",  X(63,164),      XBF_MASK,    PPCVSX3,   PPCVLE,         {BF, VA, VB}},
8774
8775 {"dtstdcq",     Z(63,194),      Z_MASK,      POWER6,    PPCVLE,         {BF, FRAp, DCM}},
8776
8777 {"xscmpgeqp",   X(63,196),      X_MASK,      POWER10,   PPCVLE,         {VD, VA, VB}},
8778
8779 {"dtstdgq",     Z(63,226),      Z_MASK,      POWER6,    PPCVLE,         {BF, FRAp, DGM}},
8780
8781 {"drintnq",     ZRC(63,227,0), Z2_MASK|Q_MASK, POWER6,  PPCVLE,         {R, FRTp, FRBp, RMC}},
8782 {"drintnq.",    ZRC(63,227,1), Z2_MASK|Q_MASK, POWER6,  PPCVLE,         {R, FRTp, FRBp, RMC}},
8783
8784 {"xscmpgtqp",   X(63,228),      X_MASK,      POWER10,   PPCVLE,         {VD, VA, VB}},
8785
8786 {"dctqpq",      XRC(63,258,0), X_MASK|Q_MASK, POWER6,   PPCVLE,         {FRTp, FRB}},
8787 {"dctqpq.",     XRC(63,258,1), X_MASK|Q_MASK, POWER6,   PPCVLE,         {FRTp, FRB}},
8788
8789 {"fabs",        XRC(63,264,0),  XRA_MASK,    COM,       PPCEFS|PPCVLE,  {FRT, FRB}},
8790 {"fabs.",       XRC(63,264,1),  XRA_MASK,    COM,       PPCEFS|PPCVLE,  {FRT, FRB}},
8791
8792 {"dctfixq",     XRC(63,290,0),  X_MASK,      POWER6,    PPCVLE,         {FRT, FRBp}},
8793 {"dctfixq.",    XRC(63,290,1),  X_MASK,      POWER6,    PPCVLE,         {FRT, FRBp}},
8794
8795 {"ddedpdq",     XRC(63,322,0), X_MASK|Q_MASK, POWER6,   PPCVLE,         {SP, FRTp, FRBp}},
8796 {"ddedpdq.",    XRC(63,322,1), X_MASK|Q_MASK, POWER6,   PPCVLE,         {SP, FRTp, FRBp}},
8797
8798 {"dxexq",       XRC(63,354,0),  X_MASK,      POWER6,    PPCVLE,         {FRT, FRBp}},
8799 {"dxexq.",      XRC(63,354,1),  X_MASK,      POWER6,    PPCVLE,         {FRT, FRBp}},
8800
8801 {"xsmaddqp",    XRC(63,388,0),  X_MASK,      PPCVSX3,   PPCVLE,         {VD, VA, VB}},
8802 {"xsmaddqpo",   XRC(63,388,1),  X_MASK,      PPCVSX3,   PPCVLE,         {VD, VA, VB}},
8803
8804 {"frin",        XRC(63,392,0),  XRA_MASK,    POWER5,    PPCVLE,         {FRT, FRB}},
8805 {"frin.",       XRC(63,392,1),  XRA_MASK,    POWER5,    PPCVLE,         {FRT, FRB}},
8806
8807 {"xsmsubqp",    XRC(63,420,0),  X_MASK,      PPCVSX3,   PPCVLE,         {VD, VA, VB}},
8808 {"xsmsubqpo",   XRC(63,420,1),  X_MASK,      PPCVSX3,   PPCVLE,         {VD, VA, VB}},
8809
8810 {"friz",        XRC(63,424,0),  XRA_MASK,    POWER5,    PPCVLE,         {FRT, FRB}},
8811 {"friz.",       XRC(63,424,1),  XRA_MASK,    POWER5,    PPCVLE,         {FRT, FRB}},
8812
8813 {"xsnmaddqp",   XRC(63,452,0),  X_MASK,      PPCVSX3,   PPCVLE,         {VD, VA, VB}},
8814 {"xsnmaddqpo",  XRC(63,452,1),  X_MASK,      PPCVSX3,   PPCVLE,         {VD, VA, VB}},
8815
8816 {"frip",        XRC(63,456,0),  XRA_MASK,    POWER5,    PPCVLE,         {FRT, FRB}},
8817 {"frip.",       XRC(63,456,1),  XRA_MASK,    POWER5,    PPCVLE,         {FRT, FRB}},
8818
8819 {"xsnmsubqp",   XRC(63,484,0),  X_MASK,      PPCVSX3,   PPCVLE,         {VD, VA, VB}},
8820 {"xsnmsubqpo",  XRC(63,484,1),  X_MASK,      PPCVSX3,   PPCVLE,         {VD, VA, VB}},
8821
8822 {"frim",        XRC(63,488,0),  XRA_MASK,    POWER5,    PPCVLE,         {FRT, FRB}},
8823 {"frim.",       XRC(63,488,1),  XRA_MASK,    POWER5,    PPCVLE,         {FRT, FRB}},
8824
8825 {"dsubq",       XRC(63,514,0), X_MASK|Q_MASK, POWER6,   PPCVLE,         {FRTp, FRAp, FRBp}},
8826 {"dsubq.",      XRC(63,514,1), X_MASK|Q_MASK, POWER6,   PPCVLE,         {FRTp, FRAp, FRBp}},
8827
8828 {"xssubqp",     XRC(63,516,0),  X_MASK,      PPCVSX3,   PPCVLE,         {VD, VA, VB}},
8829 {"xssubqpo",    XRC(63,516,1),  X_MASK,      PPCVSX3,   PPCVLE,         {VD, VA, VB}},
8830
8831 {"ddivq",       XRC(63,546,0), X_MASK|Q_MASK, POWER6,   PPCVLE,         {FRTp, FRAp, FRBp}},
8832 {"ddivq.",      XRC(63,546,1), X_MASK|Q_MASK, POWER6,   PPCVLE,         {FRTp, FRAp, FRBp}},
8833
8834 {"xsdivqp",     XRC(63,548,0),  X_MASK,      PPCVSX3,   PPCVLE,         {VD, VA, VB}},
8835 {"xsdivqpo",    XRC(63,548,1),  X_MASK,      PPCVSX3,   PPCVLE,         {VD, VA, VB}},
8836
8837 {"mffs",        XRC(63,583,0),  XRARB_MASK,  COM,       PPCEFS|PPCVLE,  {FRT}},
8838 {"mffs.",       XRC(63,583,1),  XRARB_MASK,  COM,       PPCEFS|PPCVLE,  {FRT}},
8839
8840 {"mffsce",      XMMF(63,583,0,1), XMMF_MASK|RB_MASK, POWER9, PPCVLE,    {FRT}},
8841 {"mffscdrn",    XMMF(63,583,2,4), XMMF_MASK,         POWER9, PPCVLE,    {FRT, FRB}},
8842 {"mffscdrni",   XMMF(63,583,2,5), XMMF_MASK|(3<<14), POWER9, PPCVLE,    {FRT, DRM}},
8843 {"mffscrn",     XMMF(63,583,2,6), XMMF_MASK,         POWER9, PPCVLE,    {FRT, FRB}},
8844 {"mffscrni",    XMMF(63,583,2,7), XMMF_MASK|(7<<13), POWER9, PPCVLE,    {FRT, RM}},
8845 {"mffsl",       XMMF(63,583,3,0), XMMF_MASK|RB_MASK, POWER9, PPCVLE,    {FRT}},
8846
8847 {"dcmpuq",      X(63,642),      X_MASK,      POWER6,    PPCVLE,         {BF, FRAp, FRBp}},
8848
8849 {"xscmpuqp",    X(63,644),      XBF_MASK,    PPCVSX3,   PPCVLE,         {BF, VA, VB}},
8850
8851 {"dtstsfq",     X(63,674),      X_MASK,      POWER6,    PPCVLE,         {BF, FRA, FRBp}},
8852 {"dtstsfiq",    X(63,675),      X_MASK|1<<22,POWER9,    PPCVLE,         {BF, UIM6, FRBp}},
8853
8854 {"xsmaxcqp",    X(63,676),      X_MASK,      POWER10,   PPCVLE,         {VD, VA, VB}},
8855
8856 {"xststdcqp",   X(63,708),      X_MASK,      PPCVSX3,   PPCVLE,         {BF, VB, DCMX}},
8857
8858 {"mtfsf",       XFL(63,711,0),  XFL_MASK, POWER6|PPCA2|PPC476, PPCVLE,  {FLM, FRB, XFL_L, W}},
8859 {"mtfsf",       XFL(63,711,0),  XFL_MASK,    COM, POWER6|PPCA2|PPC476|PPCEFS|PPCVLE, {FLM, FRB}},
8860 {"mtfsf.",      XFL(63,711,1),  XFL_MASK, POWER6|PPCA2|PPC476, PPCVLE,  {FLM, FRB, XFL_L, W}},
8861 {"mtfsf.",      XFL(63,711,1),  XFL_MASK,    COM, POWER6|PPCA2|PPC476|PPCEFS|PPCVLE, {FLM, FRB}},
8862
8863 {"xsmincqp",    X(63,740),      X_MASK,      POWER10,   PPCVLE,         {VD, VA, VB}},
8864
8865 {"drdpq",       XRC(63,770,0), X_MASK|Q_MASK, POWER6,   PPCVLE,         {FRTp, FRBp}},
8866 {"drdpq.",      XRC(63,770,1), X_MASK|Q_MASK, POWER6,   PPCVLE,         {FRTp, FRBp}},
8867
8868 {"dcffixq",     XRC(63,802,0), X_MASK|Q_MASK, POWER6,   PPCVLE,         {FRTp, FRB}},
8869 {"dcffixq.",    XRC(63,802,1), X_MASK|Q_MASK, POWER6,   PPCVLE,         {FRTp, FRB}},
8870
8871 {"xsabsqp",     XVA(63,804,0),  XVA_MASK,    PPCVSX3,   PPCVLE,         {VD, VB}},
8872 {"xsxexpqp",    XVA(63,804,2),  XVA_MASK,    PPCVSX3,   PPCVLE,         {VD, VB}},
8873 {"xsnabsqp",    XVA(63,804,8),  XVA_MASK,    PPCVSX3,   PPCVLE,         {VD, VB}},
8874 {"xsnegqp",     XVA(63,804,16), XVA_MASK,    PPCVSX3,   PPCVLE,         {VD, VB}},
8875 {"xsxsigqp",    XVA(63,804,18), XVA_MASK,    PPCVSX3,   PPCVLE,         {VD, VB}},
8876 {"xssqrtqp",    XVARC(63,804,27,0), XVA_MASK, PPCVSX3,  PPCVLE,         {VD, VB}},
8877 {"xssqrtqpo",   XVARC(63,804,27,1), XVA_MASK, PPCVSX3,  PPCVLE,         {VD, VB}},
8878
8879 {"fctid",       XRC(63,814,0),  XRA_MASK,    PPC64,     PPCVLE,         {FRT, FRB}},
8880 {"fctid",       XRC(63,814,0),  XRA_MASK,    PPC476,    PPCVLE,         {FRT, FRB}},
8881 {"fctid.",      XRC(63,814,1),  XRA_MASK,    PPC64,     PPCVLE,         {FRT, FRB}},
8882 {"fctid.",      XRC(63,814,1),  XRA_MASK,    PPC476,    PPCVLE,         {FRT, FRB}},
8883
8884 {"fctidz",      XRC(63,815,0),  XRA_MASK,    PPC64,     PPCVLE,         {FRT, FRB}},
8885 {"fctidz",      XRC(63,815,0),  XRA_MASK,    PPC476,    PPCVLE,         {FRT, FRB}},
8886 {"fctidz.",     XRC(63,815,1),  XRA_MASK,    PPC64,     PPCVLE,         {FRT, FRB}},
8887 {"fctidz.",     XRC(63,815,1),  XRA_MASK,    PPC476,    PPCVLE,         {FRT, FRB}},
8888
8889 {"denbcdq",     XRC(63,834,0), X_MASK|Q_MASK, POWER6,   PPCVLE,         {S, FRTp, FRBp}},
8890 {"denbcdq.",    XRC(63,834,1), X_MASK|Q_MASK, POWER6,   PPCVLE,         {S, FRTp, FRBp}},
8891
8892 {"xscvqpuqz",   XVA(63,836,0),  XVA_MASK,    POWER10,   PPCVLE,         {VD, VB}},
8893 {"xscvqpuwz",   XVA(63,836,1),  XVA_MASK,    PPCVSX3,   PPCVLE,         {VD, VB}},
8894 {"xscvudqp",    XVA(63,836,2),  XVA_MASK,    PPCVSX3,   PPCVLE,         {VD, VB}},
8895 {"xscvuqqp",    XVA(63,836,3),  XVA_MASK,    POWER10,   PPCVLE,         {VD, VB}},
8896 {"xscvqpsqz",   XVA(63,836,8),  XVA_MASK,    POWER10,   PPCVLE,         {VD, VB}},
8897 {"xscvqpswz",   XVA(63,836,9),  XVA_MASK,    PPCVSX3,   PPCVLE,         {VD, VB}},
8898 {"xscvsdqp",    XVA(63,836,10), XVA_MASK,    PPCVSX3,   PPCVLE,         {VD, VB}},
8899 {"xscvsqqp",    XVA(63,836,11), XVA_MASK,    POWER10,   PPCVLE,         {VD, VB}},
8900 {"xscvqpudz",   XVA(63,836,17), XVA_MASK,    PPCVSX3,   PPCVLE,         {VD, VB}},
8901 {"xscvqpdp",    XVARC(63,836,20,0), XVA_MASK, PPCVSX3,  PPCVLE,         {VD, VB}},
8902 {"xscvqpdpo",   XVARC(63,836,20,1), XVA_MASK, PPCVSX3,  PPCVLE,         {VD, VB}},
8903 {"xscvdpqp",    XVA(63,836,22), XVA_MASK,    PPCVSX3,   PPCVLE,         {VD, VB}},
8904 {"xscvqpsdz",   XVA(63,836,25), XVA_MASK,    PPCVSX3,   PPCVLE,         {VD, VB}},
8905
8906 {"fmrgow",      X(63,838),      X_MASK,      PPCVSX2,   PPCVLE,         {FRT, FRA, FRB}},
8907
8908 {"fcfid",       XRC(63,846,0),  XRA_MASK,    PPC64,     PPCVLE,         {FRT, FRB}},
8909 {"fcfid",       XRC(63,846,0),  XRA_MASK,    PPC476,    PPCVLE,         {FRT, FRB}},
8910 {"fcfid.",      XRC(63,846,1),  XRA_MASK,    PPC64,     PPCVLE,         {FRT, FRB}},
8911 {"fcfid.",      XRC(63,846,1),  XRA_MASK,    PPC476,    PPCVLE,         {FRT, FRB}},
8912
8913 {"diexq",       XRC(63,866,0), X_MASK|Q_MASK, POWER6,   PPCVLE,         {FRTp, FRA, FRBp}},
8914 {"diexq.",      XRC(63,866,1), X_MASK|Q_MASK, POWER6,   PPCVLE,         {FRTp, FRA, FRBp}},
8915
8916 {"xsiexpqp",    X(63,868),      X_MASK,      PPCVSX3,   PPCVLE,         {VD, VA, VB}},
8917
8918 {"fctidu",      XRC(63,942,0),  XRA_MASK, POWER7|PPCA2, PPCVLE,         {FRT, FRB}},
8919 {"fctidu.",     XRC(63,942,1),  XRA_MASK, POWER7|PPCA2, PPCVLE,         {FRT, FRB}},
8920
8921 {"fctiduz",     XRC(63,943,0),  XRA_MASK, POWER7|PPCA2, PPCVLE,         {FRT, FRB}},
8922 {"fctiduz.",    XRC(63,943,1),  XRA_MASK, POWER7|PPCA2, PPCVLE,         {FRT, FRB}},
8923
8924 {"fmrgew",      X(63,966),      X_MASK,      PPCVSX2,   PPCVLE,         {FRT, FRA, FRB}},
8925
8926 {"fcfidu",      XRC(63,974,0),  XRA_MASK, POWER7|PPCA2, PPCVLE,         {FRT, FRB}},
8927 {"fcfidu.",     XRC(63,974,1),  XRA_MASK, POWER7|PPCA2, PPCVLE,         {FRT, FRB}},
8928
8929 {"dcffixqq",    XVA(63,994,0),  XVA_MASK,    POWER10,   PPCVLE,         {FRTp, VB}},
8930 {"dctfixqq",    XVA(63,994,1),  XVA_MASK,    POWER10,   PPCVLE,         {VD, FRBp}},
8931 };
8932
8933 const unsigned int powerpc_num_opcodes =
8934   sizeof (powerpc_opcodes) / sizeof (powerpc_opcodes[0]);
8935 \f
8936 /* The opcode table for 8-byte prefix instructions.
8937
8938    The format of this opcode table is the same as the main opcode table.  */
8939
8940 const struct powerpc_opcode prefix_opcodes[] = {
8941 {"pnop",          PMRR,                PREFIX_MASK,     POWER10, 0,     {0}},
8942 {"pli",           PMLS|OP(14),         P_DRAPCREL_MASK, POWER10, 0,     {RT, SI34}},
8943 {"paddi",         PMLS|OP(14),         P_D_MASK,        POWER10, 0,     {RT, RA0, SI34, PCREL0}},
8944 {"psubi",         PMLS|OP(14),         P_D_MASK,        POWER10, 0,     {RT, RA0, NSI34, PCREL0}},
8945 {"pla",           PMLS|OP(14),         P_D_MASK,        POWER10, 0,     {RT, D34, PRA0, PCREL}},
8946 {"xxsplti32dx",   P8RR|VSOP(32,0),     P_VSI_MASK,      POWER10, 0,     {XTS, IX, IMM32}},
8947 {"xxspltidp",     P8RR|VSOP(32,2),     P_VS_MASK,       POWER10, 0,     {XTS, IMM32}},
8948 {"xxspltiw",      P8RR|VSOP(32,3),     P_VS_MASK,       POWER10, 0,     {XTS, IMM32}},
8949 {"plwz",          PMLS|OP(32),         P_D_MASK,        POWER10, 0,     {RT, D34, PRA0, PCREL}},
8950 {"xxblendvb",     P8RR|XX4(33,0),      P_XX4_MASK,      POWER10, 0,     {XT6, XA6, XB6, XC6}},
8951 {"xxblendvh",     P8RR|XX4(33,1),      P_XX4_MASK,      POWER10, 0,     {XT6, XA6, XB6, XC6}},
8952 {"xxblendvw",     P8RR|XX4(33,2),      P_XX4_MASK,      POWER10, 0,     {XT6, XA6, XB6, XC6}},
8953 {"xxblendvd",     P8RR|XX4(33,3),      P_XX4_MASK,      POWER10, 0,     {XT6, XA6, XB6, XC6}},
8954 {"xxpermx",       P8RR|XX4(34,0),      P_UXX4_MASK,     POWER10, 0,     {XT6, XA6, XB6, XC6, UIM3}},
8955 {"xxeval",        P8RR|XX4(34,1),      P_U8XX4_MASK,    POWER10, 0,     {XT6, XA6, XB6, XC6, UIM8}},
8956 {"plbz",          PMLS|OP(34),         P_D_MASK,        POWER10, 0,     {RT, D34, PRA0, PCREL}},
8957 {"pstw",          PMLS|OP(36),         P_D_MASK,        POWER10, 0,     {RS, D34, PRA0, PCREL}},
8958 {"pstb",          PMLS|OP(38),         P_D_MASK,        POWER10, 0,     {RS, D34, PRA0, PCREL}},
8959 {"plhz",          PMLS|OP(40),         P_D_MASK,        POWER10, 0,     {RT, D34, PRA0, PCREL}},
8960 {"plwa",          P8LS|OP(41),         P_D_MASK,        POWER10, 0,     {RT, D34, PRA0, PCREL}},
8961 {"plxsd",         P8LS|OP(42),         P_D_MASK,        POWER10, 0,     {VD, D34, PRA0, PCREL}},
8962 {"plha",          PMLS|OP(42),         P_D_MASK,        POWER10, 0,     {RT, D34, PRA0, PCREL}},
8963 {"plxssp",        P8LS|OP(43),         P_D_MASK,        POWER10, 0,     {VD, D34, PRA0, PCREL}},
8964 {"psth",          PMLS|OP(44),         P_D_MASK,        POWER10, 0,     {RS, D34, PRA0, PCREL}},
8965 {"pstxsd",        P8LS|OP(46),         P_D_MASK,        POWER10, 0,     {VS, D34, PRA0, PCREL}},
8966 {"pstxssp",       P8LS|OP(47),         P_D_MASK,        POWER10, 0,     {VS, D34, PRA0, PCREL}},
8967 {"plfs",          PMLS|OP(48),         P_D_MASK,        POWER10, 0,     {FRT, D34, PRA0, PCREL}},
8968 {"plxv",          P8LS|OP(50),         P_D_MASK&~OP(1), POWER10, 0,     {XTOP, D34, PRA0, PCREL}},
8969 {"plfd",          PMLS|OP(50),         P_D_MASK,        POWER10, 0,     {FRT, D34, PRA0, PCREL}},
8970 {"pstfs",         PMLS|OP(52),         P_D_MASK,        POWER10, 0,     {FRS, D34, PRA0, PCREL}},
8971 {"pstxv",         P8LS|OP(54),         P_D_MASK&~OP(1), POWER10, 0,     {XTOP, D34, PRA0, PCREL}},
8972 {"pstfd",         PMLS|OP(54),         P_D_MASK,        POWER10, 0,     {FRS, D34, PRA0, PCREL}},
8973 {"plq",           P8LS|OP(56),         P_D_MASK,        POWER10, 0,     {RTQ, D34, PRAQ, PCREL}},
8974 {"pld",           P8LS|OP(57),         P_D_MASK,        POWER10, 0,     {RT, D34, PRA0, PCREL}},
8975 {"plxvp",         P8LS|OP(58),         P_D_MASK,        POWER10, 0,     {XTP, D34, PRA0, PCREL}},
8976 {"pmxvi8ger4pp",  PMMIRR|XX3(59,2),    P_GER4_MASK,     POWER10, 0,     {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
8977 {"pmxvi8ger4",    PMMIRR|XX3(59,3),    P_GER4_MASK,     POWER10, 0,     {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
8978 {"pmxvf16ger2pp", PMMIRR|XX3(59,18),   P_GER2_MASK,     POWER10, 0,     {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
8979 {"pmxvf16ger2",   PMMIRR|XX3(59,19),   P_GER2_MASK,     POWER10, 0,     {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
8980 {"pmxvf32gerpp",  PMMIRR|XX3(59,26),   P_GER_MASK,      POWER10, 0,     {ACC, XA6a, XB6a, XMSK, YMSK}},
8981 {"pmxvf32ger",    PMMIRR|XX3(59,27),   P_GER_MASK,      POWER10, 0,     {ACC, XA6a, XB6a, XMSK, YMSK}},
8982 {"pmxvi4ger8pp",  PMMIRR|XX3(59,34),   P_GER8_MASK,     POWER10, 0,     {ACC, XA6a, XB6a, XMSK, YMSK, PMSK8}},
8983 {"pmxvi4ger8",    PMMIRR|XX3(59,35),   P_GER8_MASK,     POWER10, 0,     {ACC, XA6a, XB6a, XMSK, YMSK, PMSK8}},
8984 {"pmxvi16ger2spp",PMMIRR|XX3(59,42),   P_GER2_MASK,     POWER10, 0,     {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
8985 {"pmxvi16ger2s",  PMMIRR|XX3(59,43),   P_GER2_MASK,     POWER10, 0,     {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
8986 {"pmxvbf16ger2pp",PMMIRR|XX3(59,50),   P_GER2_MASK,     POWER10, 0,     {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
8987 {"pmxvbf16ger2",  PMMIRR|XX3(59,51),   P_GER2_MASK,     POWER10, 0,     {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
8988 {"pmxvf64gerpp",  PMMIRR|XX3(59,58),   P_GER64_MASK,    POWER10, 0,     {ACC, XA6ap, XB6a, XMSK, YMSK2}},
8989 {"pmxvf64ger",    PMMIRR|XX3(59,59),   P_GER64_MASK,    POWER10, 0,     {ACC, XA6ap, XB6a, XMSK, YMSK2}},
8990 {"pmxvi16ger2",   PMMIRR|XX3(59,75),   P_GER2_MASK,     POWER10, 0,     {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
8991 {"pmxvf16ger2np", PMMIRR|XX3(59,82),   P_GER2_MASK,     POWER10, 0,     {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
8992 {"pmxvf32gernp",  PMMIRR|XX3(59,90),   P_GER_MASK,      POWER10, 0,     {ACC, XA6a, XB6a, XMSK, YMSK}},
8993 {"pmxvi8ger4spp", PMMIRR|XX3(59,99),   P_GER4_MASK,     POWER10, 0,     {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
8994 {"pmxvi16ger2pp", PMMIRR|XX3(59,107),  P_GER2_MASK,     POWER10, 0,     {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
8995 {"pmxvbf16ger2np",PMMIRR|XX3(59,114),  P_GER2_MASK,     POWER10, 0,     {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
8996 {"pmxvf64gernp",  PMMIRR|XX3(59,122),  P_GER64_MASK,    POWER10, 0,     {ACC, XA6ap, XB6a, XMSK, YMSK2}},
8997 {"pmxvf16ger2pn", PMMIRR|XX3(59,146),  P_GER2_MASK,     POWER10, 0,     {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
8998 {"pmxvf32gerpn",  PMMIRR|XX3(59,154),  P_GER_MASK,      POWER10, 0,     {ACC, XA6a, XB6a, XMSK, YMSK}},
8999 {"pmxvbf16ger2pn",PMMIRR|XX3(59,178),  P_GER2_MASK,     POWER10, 0,     {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9000 {"pmxvf64gerpn",  PMMIRR|XX3(59,186),  P_GER64_MASK,    POWER10, 0,     {ACC, XA6ap, XB6a, XMSK, YMSK2}},
9001 {"pmxvf16ger2nn", PMMIRR|XX3(59,210),  P_GER2_MASK,     POWER10, 0,     {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9002 {"pmxvf32gernn",  PMMIRR|XX3(59,218),  P_GER_MASK,      POWER10, 0,     {ACC, XA6a, XB6a, XMSK, YMSK}},
9003 {"pmxvbf16ger2nn",PMMIRR|XX3(59,242),  P_GER2_MASK,     POWER10, 0,     {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9004 {"pmxvf64gernn",  PMMIRR|XX3(59,250),  P_GER64_MASK,    POWER10, 0,     {ACC, XA6ap, XB6a, XMSK, YMSK2}},
9005 {"pstq",          P8LS|OP(60),         P_D_MASK,        POWER10, 0,     {RSQ, D34, PRA0, PCREL}},
9006 {"pstd",          P8LS|OP(61),         P_D_MASK,        POWER10, 0,     {RS, D34, PRA0, PCREL}},
9007 {"pstxvp",        P8LS|OP(62),         P_D_MASK,        POWER10, 0,     {XTP, D34, PRA0, PCREL}},
9008 };
9009
9010 const unsigned int prefix_num_opcodes =
9011   sizeof (prefix_opcodes) / sizeof (prefix_opcodes[0]);
9012 \f
9013 /* The VLE opcode table.
9014
9015    The format of this opcode table is the same as the main opcode table.  */
9016
9017 const struct powerpc_opcode vle_opcodes[] = {
9018 {"se_illegal",  C(0),           C_MASK,         PPCVLE, 0,              {}},
9019 {"se_isync",    C(1),           C_MASK,         PPCVLE, 0,              {}},
9020 {"se_sc",       C(2),           C_MASK,         PPCVLE, 0,              {}},
9021 {"se_blr",      C_LK(2,0),      C_LK_MASK,      PPCVLE, 0,              {}},
9022 {"se_blrl",     C_LK(2,1),      C_LK_MASK,      PPCVLE, 0,              {}},
9023 {"se_bctr",     C_LK(3,0),      C_LK_MASK,      PPCVLE, 0,              {}},
9024 {"se_bctrl",    C_LK(3,1),      C_LK_MASK,      PPCVLE, 0,              {}},
9025 {"se_rfi",      C(8),           C_MASK,         PPCVLE, 0,              {}},
9026 {"se_rfci",     C(9),           C_MASK,         PPCVLE, 0,              {}},
9027 {"se_rfdi",     C(10),          C_MASK,         PPCVLE, 0,              {}},
9028 {"se_rfmci",    C(11),          C_MASK, PPCRFMCI|PPCVLE, 0,             {}},
9029 {"se_rfgi",     C(12),          C_MASK,         PPCVLE, 0,              {}},
9030 {"se_not",      SE_R(0,2),      SE_R_MASK,      PPCVLE, 0,              {RX}},
9031 {"se_neg",      SE_R(0,3),      SE_R_MASK,      PPCVLE, 0,              {RX}},
9032 {"se_mflr",     SE_R(0,8),      SE_R_MASK,      PPCVLE, 0,              {RX}},
9033 {"se_mtlr",     SE_R(0,9),      SE_R_MASK,      PPCVLE, 0,              {RX}},
9034 {"se_mfctr",    SE_R(0,10),     SE_R_MASK,      PPCVLE, 0,              {RX}},
9035 {"se_mtctr",    SE_R(0,11),     SE_R_MASK,      PPCVLE, 0,              {RX}},
9036 {"se_extzb",    SE_R(0,12),     SE_R_MASK,      PPCVLE, 0,              {RX}},
9037 {"se_extsb",    SE_R(0,13),     SE_R_MASK,      PPCVLE, 0,              {RX}},
9038 {"se_extzh",    SE_R(0,14),     SE_R_MASK,      PPCVLE, 0,              {RX}},
9039 {"se_extsh",    SE_R(0,15),     SE_R_MASK,      PPCVLE, 0,              {RX}},
9040 {"se_mr",       SE_RR(0,1),     SE_RR_MASK,     PPCVLE, 0,              {RX, RY}},
9041 {"se_mtar",     SE_RR(0,2),     SE_RR_MASK,     PPCVLE, 0,              {ARX, RY}},
9042 {"se_mfar",     SE_RR(0,3),     SE_RR_MASK,     PPCVLE, 0,              {RX, ARY}},
9043 {"se_add",      SE_RR(1,0),     SE_RR_MASK,     PPCVLE, 0,              {RX, RY}},
9044 {"se_mullw",    SE_RR(1,1),     SE_RR_MASK,     PPCVLE, 0,              {RX, RY}},
9045 {"se_sub",      SE_RR(1,2),     SE_RR_MASK,     PPCVLE, 0,              {RX, RY}},
9046 {"se_subf",     SE_RR(1,3),     SE_RR_MASK,     PPCVLE, 0,              {RX, RY}},
9047 {"se_cmp",      SE_RR(3,0),     SE_RR_MASK,     PPCVLE, 0,              {RX, RY}},
9048 {"se_cmpl",     SE_RR(3,1),     SE_RR_MASK,     PPCVLE, 0,              {RX, RY}},
9049 {"se_cmph",     SE_RR(3,2),     SE_RR_MASK,     PPCVLE, 0,              {RX, RY}},
9050 {"se_cmphl",    SE_RR(3,3),     SE_RR_MASK,     PPCVLE, 0,              {RX, RY}},
9051
9052 /* by major opcode */
9053 {"zvaddih",           VX(4, 0x200), VX_MASK,    PPCLSP, 0,              {RD, RA, EVUIMM}},
9054 {"zvsubifh",          VX(4, 0x201), VX_MASK,    PPCLSP, 0,              {RD, RA, EVUIMM}},
9055 {"zvaddh",            VX(4, 0x204), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9056 {"zvsubfh",           VX(4, 0x205), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9057 {"zvaddsubfh",        VX(4, 0x206), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9058 {"zvsubfaddh",        VX(4, 0x207), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9059 {"zvaddhx",           VX(4, 0x20C), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9060 {"zvsubfhx",          VX(4, 0x20D), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9061 {"zvaddsubfhx",       VX(4, 0x20E), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9062 {"zvsubfaddhx",       VX(4, 0x20F), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9063 {"zaddwus",           VX(4, 0x210), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9064 {"zsubfwus",          VX(4, 0x211), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9065 {"zaddwss",           VX(4, 0x212), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9066 {"zsubfwss",          VX(4, 0x213), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9067 {"zvaddhus",          VX(4, 0x214), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9068 {"zvsubfhus",         VX(4, 0x215), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9069 {"zvaddhss",          VX(4, 0x216), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9070 {"zvsubfhss",         VX(4, 0x217), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9071 {"zvaddsubfhss",      VX(4, 0x21A), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9072 {"zvsubfaddhss",      VX(4, 0x21B), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9073 {"zvaddhxss",         VX(4, 0x21C), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9074 {"zvsubfhxss",        VX(4, 0x21D), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9075 {"zvaddsubfhxss",     VX(4, 0x21E), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9076 {"zvsubfaddhxss",     VX(4, 0x21F), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9077 {"zaddheuw",          VX(4, 0x220), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9078 {"zsubfheuw",         VX(4, 0x221), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9079 {"zaddhesw",          VX(4, 0x222), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9080 {"zsubfhesw",         VX(4, 0x223), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9081 {"zaddhouw",          VX(4, 0x224), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9082 {"zsubfhouw",         VX(4, 0x225), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9083 {"zaddhosw",          VX(4, 0x226), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9084 {"zsubfhosw",         VX(4, 0x227), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9085 {"zvmergehih",        VX(4, 0x22C), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9086 {"zvmergeloh",        VX(4, 0x22D), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9087 {"zvmergehiloh",      VX(4, 0x22E), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9088 {"zvmergelohih",      VX(4, 0x22F), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9089 {"zvcmpgthu",         VX(4, 0x230), VX_MASK,    PPCLSP, 0,              {CRFD, RA, RB}},
9090 {"zvcmpgths",         VX(4, 0x230), VX_MASK,    PPCLSP, 0,              {CRFD, RA, RB}},
9091 {"zvcmplthu",         VX(4, 0x231), VX_MASK,    PPCLSP, 0,              {CRFD, RA, RB}},
9092 {"zvcmplths",         VX(4, 0x231), VX_MASK,    PPCLSP, 0,              {CRFD, RA, RB}},
9093 {"zvcmpeqh",          VX(4, 0x232), VX_MASK,    PPCLSP, 0,              {CRFD, RA, RB}},
9094 {"zpkswgshfrs",       VX(4, 0x238), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9095 {"zpkswgswfrs",       VX(4, 0x239), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9096 {"zvpkshgwshfrs",     VX(4, 0x23A), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9097 {"zvpkswshfrs",       VX(4, 0x23B), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9098 {"zvpkswuhs",         VX(4, 0x23C), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9099 {"zvpkswshs",         VX(4, 0x23D), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9100 {"zvpkuwuhs",         VX(4, 0x23E), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9101 {"zvsplatih",         VX_LSP(4, 0x23F), VX_LSP_MASK, PPCLSP, 0,         {RD, SIMM}},
9102 {"zvsplatfih",        VX_LSP(4, 0xA3F), VX_LSP_MASK, PPCLSP, 0,         {RD, SIMM}},
9103 {"zcntlsw",           VX_LSP(4, 0x2A3F), VX_LSP_MASK, PPCLSP, 0,        {RD, RA}},
9104 {"zvcntlzh",          VX_LSP(4, 0x323F), VX_LSP_MASK, PPCLSP, 0,        {RD, RA}},
9105 {"zvcntlsh",          VX_LSP(4, 0x3A3F), VX_LSP_MASK, PPCLSP, 0,        {RD, RA}},
9106 {"znegws",            VX_LSP(4, 0x4A3F), VX_LSP_MASK, PPCLSP, 0,        {RD, RA}},
9107 {"zvnegh",            VX_LSP(4, 0x523F), VX_LSP_MASK, PPCLSP, 0,        {RD, RA}},
9108 {"zvneghs",           VX_LSP(4, 0x5A3F), VX_LSP_MASK, PPCLSP, 0,        {RD, RA}},
9109 {"zvnegho",           VX_LSP(4, 0x623F), VX_LSP_MASK, PPCLSP, 0,        {RD, RA}},
9110 {"zvneghos",          VX_LSP(4, 0x6A3F), VX_LSP_MASK, PPCLSP, 0,        {RD, RA}},
9111 {"zrndwh",            VX_LSP(4, 0x823F), VX_LSP_MASK, PPCLSP, 0,        {RD, RA}},
9112 {"zrndwhss",          VX_LSP(4, 0x8A3F), VX_LSP_MASK, PPCLSP, 0,        {RD, RA}},
9113 {"zvabsh",            VX_LSP(4, 0xA23F), VX_LSP_MASK, PPCLSP, 0,        {RD, RA}},
9114 {"zvabshs",           VX_LSP(4, 0xAA3F), VX_LSP_MASK, PPCLSP, 0,        {RD, RA}},
9115 {"zabsw",             VX_LSP(4, 0xB23F), VX_LSP_MASK, PPCLSP, 0,        {RD, RA}},
9116 {"zabsws",            VX_LSP(4, 0xBA3F), VX_LSP_MASK, PPCLSP, 0,        {RD, RA}},
9117 {"zsatswuw",          VX_LSP(4, 0xC23F), VX_LSP_MASK, PPCLSP, 0,        {RD, RA}},
9118 {"zsatuwsw",          VX_LSP(4, 0xCA3F), VX_LSP_MASK, PPCLSP, 0,        {RD, RA}},
9119 {"zsatswuh",          VX_LSP(4, 0xD23F), VX_LSP_MASK, PPCLSP, 0,        {RD, RA}},
9120 {"zsatswsh",          VX_LSP(4, 0xDA3F), VX_LSP_MASK, PPCLSP, 0,        {RD, RA}},
9121 {"zvsatshuh",         VX_LSP(4, 0xE23F), VX_LSP_MASK, PPCLSP, 0,        {RD, RA}},
9122 {"zvsatuhsh",         VX_LSP(4, 0xEA3F), VX_LSP_MASK, PPCLSP, 0,        {RD, RA}},
9123 {"zsatuwuh",          VX_LSP(4, 0xF23F), VX_LSP_MASK, PPCLSP, 0,        {RD, RA}},
9124 {"zsatuwsh",          VX_LSP(4, 0xFA3F), VX_LSP_MASK, PPCLSP, 0,        {RD, RA}},
9125 {"zsatsduw",          VX(4, 0x260), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9126 {"zsatsdsw",          VX(4, 0x261), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9127 {"zsatuduw",          VX(4, 0x262), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9128 {"zvselh",            VX(4, 0x264), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9129 {"zxtrw",             VX(4, 0x264), VX_LSP_OFF_MASK, PPCLSP, 0,         {RD, RA, RB, VX_OFF}},
9130 {"zbrminc",           VX(4, 0x268), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9131 {"zcircinc",          VX(4, 0x269), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9132 {"zdivwsf",           VX(4, 0x26B), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9133 {"zvsrhu",            VX(4, 0x270), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9134 {"zvsrhs",            VX(4, 0x271), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9135 {"zvsrhiu",           VX(4, 0x272), VX_MASK,    PPCLSP, 0,              {RD, RA, EVUIMM_LT16}},
9136 {"zvsrhis",           VX(4, 0x273), VX_MASK,    PPCLSP, 0,              {RD, RA, EVUIMM_LT16}},
9137 {"zvslh",             VX(4, 0x274), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9138 {"zvrlh",             VX(4, 0x275), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9139 {"zvslhi",            VX(4, 0x276), VX_MASK,    PPCLSP, 0,              {RD, RA, EVUIMM_LT16}},
9140 {"zvrlhi",            VX(4, 0x277), VX_MASK,    PPCLSP, 0,              {RD, RA, EVUIMM_LT16}},
9141 {"zvslhus",           VX(4, 0x278), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9142 {"zvslhss",           VX(4, 0x279), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9143 {"zvslhius",          VX(4, 0x27A), VX_MASK,    PPCLSP, 0,              {RD, RA, EVUIMM_LT16}},
9144 {"zvslhiss",          VX(4, 0x27B), VX_MASK,    PPCLSP, 0,              {RD, RA, EVUIMM_LT16}},
9145 {"zslwus",            VX(4, 0x27C), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9146 {"zslwss",            VX(4, 0x27D), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9147 {"zslwius",           VX(4, 0x27E), VX_MASK,    PPCLSP, 0,              {RD, RA, EVUIMM}},
9148 {"zslwiss",           VX(4, 0x27F), VX_MASK,    PPCLSP, 0,              {RD, RA, EVUIMM}},
9149 {"zaddwgui",          VX(4, 0x460), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9150 {"zsubfwgui",         VX(4, 0x461), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9151 {"zaddd",             VX(4, 0x462), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9152 {"zsubfd",            VX(4, 0x463), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9153 {"zvaddsubfw",        VX(4, 0x464), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9154 {"zvsubfaddw",        VX(4, 0x465), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9155 {"zvaddw",            VX(4, 0x466), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9156 {"zvsubfw",           VX(4, 0x467), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9157 {"zaddwgsi",          VX(4, 0x468), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9158 {"zsubfwgsi",         VX(4, 0x469), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9159 {"zadddss",           VX(4, 0x46A), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9160 {"zsubfdss",          VX(4, 0x46B), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9161 {"zvaddsubfwss",      VX(4, 0x46C), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9162 {"zvsubfaddwss",      VX(4, 0x46D), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9163 {"zvaddwss",          VX(4, 0x46E), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9164 {"zvsubfwss",         VX(4, 0x46F), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9165 {"zaddwgsf",          VX(4, 0x470), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9166 {"zsubfwgsf",         VX(4, 0x471), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9167 {"zadddus",           VX(4, 0x472), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9168 {"zsubfdus",          VX(4, 0x473), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9169 {"zvaddwus",          VX(4, 0x476), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9170 {"zvsubfwus",         VX(4, 0x477), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9171 {"zvunpkhgwsf",       VX_LSP(4, 0x478), VX_LSP_MASK, PPCLSP, 0,         {RD_EVEN, RA}},
9172 {"zvunpkhsf",         VX_LSP(4, 0xC78), VX_LSP_MASK, PPCLSP, 0,         {RD_EVEN, RA}},
9173 {"zvunpkhui",         VX_LSP(4, 0x1478), VX_LSP_MASK, PPCLSP, 0,        {RD_EVEN, RA}},
9174 {"zvunpkhsi",         VX_LSP(4, 0x1C78), VX_LSP_MASK, PPCLSP, 0,        {RD_EVEN, RA}},
9175 {"zunpkwgsf",         VX_LSP(4, 0x2478), VX_LSP_MASK, PPCLSP, 0,        {RD_EVEN, RA}},
9176 {"zvdotphgwasmf",     VX(4, 0x488), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9177 {"zvdotphgwasmfr",    VX(4, 0x489), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9178 {"zvdotphgwasmfaa",   VX(4, 0x48A), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9179 {"zvdotphgwasmfraa",  VX(4, 0x48B), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9180 {"zvdotphgwasmfan",   VX(4, 0x48C), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9181 {"zvdotphgwasmfran",  VX(4, 0x48D), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9182 {"zvmhulgwsmf",       VX(4, 0x490), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9183 {"zvmhulgwsmfr",      VX(4, 0x491), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9184 {"zvmhulgwsmfaa",     VX(4, 0x492), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9185 {"zvmhulgwsmfraa",    VX(4, 0x493), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9186 {"zvmhulgwsmfan",     VX(4, 0x494), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9187 {"zvmhulgwsmfran",    VX(4, 0x495), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9188 {"zvmhulgwsmfanp",    VX(4, 0x496), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9189 {"zvmhulgwsmfranp",   VX(4, 0x497), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9190 {"zmhegwsmf",         VX(4, 0x498), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9191 {"zmhegwsmfr",        VX(4, 0x499), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9192 {"zmhegwsmfaa",       VX(4, 0x49A), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9193 {"zmhegwsmfraa",      VX(4, 0x49B), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9194 {"zmhegwsmfan",       VX(4, 0x49C), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9195 {"zmhegwsmfran",      VX(4, 0x49D), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9196 {"zvdotphxgwasmf",    VX(4, 0x4A8), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9197 {"zvdotphxgwasmfr",   VX(4, 0x4A9), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9198 {"zvdotphxgwasmfaa",  VX(4, 0x4AA), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9199 {"zvdotphxgwasmfraa", VX(4, 0x4AB), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9200 {"zvdotphxgwasmfan",  VX(4, 0x4AC), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9201 {"zvdotphxgwasmfran", VX(4, 0x4AD), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9202 {"zvmhllgwsmf",       VX(4, 0x4B0), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9203 {"zvmhllgwsmfr",      VX(4, 0x4B1), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9204 {"zvmhllgwsmfaa",     VX(4, 0x4B2), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9205 {"zvmhllgwsmfraa",    VX(4, 0x4B3), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9206 {"zvmhllgwsmfan",     VX(4, 0x4B4), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9207 {"zvmhllgwsmfran",    VX(4, 0x4B5), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9208 {"zvmhllgwsmfanp",    VX(4, 0x4B6), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9209 {"zvmhllgwsmfranp",   VX(4, 0x4B7), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9210 {"zmheogwsmf",        VX(4, 0x4B8), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9211 {"zmheogwsmfr",       VX(4, 0x4B9), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9212 {"zmheogwsmfaa",      VX(4, 0x4BA), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9213 {"zmheogwsmfraa",     VX(4, 0x4BB), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9214 {"zmheogwsmfan",      VX(4, 0x4BC), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9215 {"zmheogwsmfran",     VX(4, 0x4BD), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9216 {"zvdotphgwssmf",     VX(4, 0x4C8), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9217 {"zvdotphgwssmfr",    VX(4, 0x4C9), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9218 {"zvdotphgwssmfaa",   VX(4, 0x4CA), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9219 {"zvdotphgwssmfraa",  VX(4, 0x4CB), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9220 {"zvdotphgwssmfan",   VX(4, 0x4CC), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9221 {"zvdotphgwssmfran",  VX(4, 0x4CD), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9222 {"zvmhuugwsmf",       VX(4, 0x4D0), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9223 {"zvmhuugwsmfr",      VX(4, 0x4D1), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9224 {"zvmhuugwsmfaa",     VX(4, 0x4D2), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9225 {"zvmhuugwsmfraa",    VX(4, 0x4D3), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9226 {"zvmhuugwsmfan",     VX(4, 0x4D4), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9227 {"zvmhuugwsmfran",    VX(4, 0x4D5), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9228 {"zvmhuugwsmfanp",    VX(4, 0x4D6), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9229 {"zvmhuugwsmfranp",   VX(4, 0x4D7), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9230 {"zmhogwsmf",         VX(4, 0x4D8), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9231 {"zmhogwsmfr",        VX(4, 0x4D9), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9232 {"zmhogwsmfaa",       VX(4, 0x4DA), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9233 {"zmhogwsmfraa",      VX(4, 0x4DB), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9234 {"zmhogwsmfan",       VX(4, 0x4DC), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9235 {"zmhogwsmfran",      VX(4, 0x4DD), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9236 {"zvmhxlgwsmf",       VX(4, 0x4F0), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9237 {"zvmhxlgwsmfr",      VX(4, 0x4F1), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9238 {"zvmhxlgwsmfaa",     VX(4, 0x4F2), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9239 {"zvmhxlgwsmfraa",    VX(4, 0x4F3), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9240 {"zvmhxlgwsmfan",     VX(4, 0x4F4), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9241 {"zvmhxlgwsmfran",    VX(4, 0x4F5), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9242 {"zvmhxlgwsmfanp",    VX(4, 0x4F6), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9243 {"zvmhxlgwsmfranp",   VX(4, 0x4F7), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9244 {"zmhegui",           VX(4, 0x500), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9245 {"zvdotphgaui",       VX(4, 0x501), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9246 {"zmheguiaa",         VX(4, 0x502), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9247 {"zvdotphgauiaa",     VX(4, 0x503), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9248 {"zmheguian",         VX(4, 0x504), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9249 {"zvdotphgauian",     VX(4, 0x505), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9250 {"zmhegsi",           VX(4, 0x508), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9251 {"zvdotphgasi",       VX(4, 0x509), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9252 {"zmhegsiaa",         VX(4, 0x50A), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9253 {"zvdotphgasiaa",     VX(4, 0x50B), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9254 {"zmhegsian",         VX(4, 0x50C), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9255 {"zvdotphgasian",     VX(4, 0x50D), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9256 {"zmhegsui",          VX(4, 0x510), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9257 {"zvdotphgasui",      VX(4, 0x511), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9258 {"zmhegsuiaa",        VX(4, 0x512), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9259 {"zvdotphgasuiaa",    VX(4, 0x513), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9260 {"zmhegsuian",        VX(4, 0x514), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9261 {"zvdotphgasuian",    VX(4, 0x515), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9262 {"zmhegsmf",          VX(4, 0x518), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9263 {"zvdotphgasmf",      VX(4, 0x519), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9264 {"zmhegsmfaa",        VX(4, 0x51A), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9265 {"zvdotphgasmfaa",    VX(4, 0x51B), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9266 {"zmhegsmfan",        VX(4, 0x51C), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9267 {"zvdotphgasmfan",    VX(4, 0x51D), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9268 {"zmheogui",          VX(4, 0x520), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9269 {"zvdotphxgaui",      VX(4, 0x521), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9270 {"zmheoguiaa",        VX(4, 0x522), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9271 {"zvdotphxgauiaa",    VX(4, 0x523), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9272 {"zmheoguian",        VX(4, 0x524), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9273 {"zvdotphxgauian",    VX(4, 0x525), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9274 {"zmheogsi",          VX(4, 0x528), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9275 {"zvdotphxgasi",      VX(4, 0x529), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9276 {"zmheogsiaa",        VX(4, 0x52A), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9277 {"zvdotphxgasiaa",    VX(4, 0x52B), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9278 {"zmheogsian",        VX(4, 0x52C), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9279 {"zvdotphxgasian",    VX(4, 0x52D), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9280 {"zmheogsui",         VX(4, 0x530), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9281 {"zvdotphxgasui",     VX(4, 0x531), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9282 {"zmheogsuiaa",       VX(4, 0x532), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9283 {"zvdotphxgasuiaa",   VX(4, 0x533), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9284 {"zmheogsuian",       VX(4, 0x534), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9285 {"zvdotphxgasuian",   VX(4, 0x535), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9286 {"zmheogsmf",         VX(4, 0x538), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9287 {"zvdotphxgasmf",     VX(4, 0x539), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9288 {"zmheogsmfaa",       VX(4, 0x53A), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9289 {"zvdotphxgasmfaa",   VX(4, 0x53B), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9290 {"zmheogsmfan",       VX(4, 0x53C), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9291 {"zvdotphxgasmfan",   VX(4, 0x53D), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9292 {"zmhogui",           VX(4, 0x540), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9293 {"zvdotphgsui",       VX(4, 0x541), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9294 {"zmhoguiaa",         VX(4, 0x542), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9295 {"zvdotphgsuiaa",     VX(4, 0x543), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9296 {"zmhoguian",         VX(4, 0x544), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9297 {"zvdotphgsuian",     VX(4, 0x545), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9298 {"zmhogsi",           VX(4, 0x548), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9299 {"zvdotphgssi",       VX(4, 0x549), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9300 {"zmhogsiaa",         VX(4, 0x54A), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9301 {"zvdotphgssiaa",     VX(4, 0x54B), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9302 {"zmhogsian",         VX(4, 0x54C), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9303 {"zvdotphgssian",     VX(4, 0x54D), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9304 {"zmhogsui",          VX(4, 0x550), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9305 {"zvdotphgssui",      VX(4, 0x551), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9306 {"zmhogsuiaa",        VX(4, 0x552), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9307 {"zvdotphgssuiaa",    VX(4, 0x553), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9308 {"zmhogsuian",        VX(4, 0x554), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9309 {"zvdotphgssuian",    VX(4, 0x555), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9310 {"zmhogsmf",          VX(4, 0x558), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9311 {"zvdotphgssmf",      VX(4, 0x559), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9312 {"zmhogsmfaa",        VX(4, 0x55A), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9313 {"zvdotphgssmfaa",    VX(4, 0x55B), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9314 {"zmhogsmfan",        VX(4, 0x55C), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9315 {"zvdotphgssmfan",    VX(4, 0x55D), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9316 {"zmwgui",            VX(4, 0x560), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9317 {"zmwguiaa",          VX(4, 0x562), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9318 {"zmwguiaas",         VX(4, 0x563), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9319 {"zmwguian",          VX(4, 0x564), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9320 {"zmwguians",         VX(4, 0x565), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9321 {"zmwgsi",            VX(4, 0x568), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9322 {"zmwgsiaa",          VX(4, 0x56A), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9323 {"zmwgsiaas",         VX(4, 0x56B), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9324 {"zmwgsian",          VX(4, 0x56C), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9325 {"zmwgsians",         VX(4, 0x56D), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9326 {"zmwgsui",           VX(4, 0x570), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9327 {"zmwgsuiaa",         VX(4, 0x572), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9328 {"zmwgsuiaas",        VX(4, 0x573), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9329 {"zmwgsuian",         VX(4, 0x574), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9330 {"zmwgsuians",        VX(4, 0x575), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9331 {"zmwgsmf",           VX(4, 0x578), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9332 {"zmwgsmfr",          VX(4, 0x579), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9333 {"zmwgsmfaa",         VX(4, 0x57A), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9334 {"zmwgsmfraa",        VX(4, 0x57B), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9335 {"zmwgsmfan",         VX(4, 0x57C), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9336 {"zmwgsmfran",        VX(4, 0x57D), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9337 {"zvmhului",          VX(4, 0x580), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9338 {"zvmhuluiaa",        VX(4, 0x582), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9339 {"zvmhuluiaas",       VX(4, 0x583), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9340 {"zvmhuluian",        VX(4, 0x584), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9341 {"zvmhuluians",       VX(4, 0x585), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9342 {"zvmhuluianp",       VX(4, 0x586), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9343 {"zvmhuluianps",      VX(4, 0x587), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9344 {"zvmhulsi",          VX(4, 0x588), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9345 {"zvmhulsiaa",        VX(4, 0x58A), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9346 {"zvmhulsiaas",       VX(4, 0x58B), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9347 {"zvmhulsian",        VX(4, 0x58C), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9348 {"zvmhulsians",       VX(4, 0x58D), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9349 {"zvmhulsianp",       VX(4, 0x58E), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9350 {"zvmhulsianps",      VX(4, 0x58F), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9351 {"zvmhulsui",         VX(4, 0x590), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9352 {"zvmhulsuiaa",       VX(4, 0x592), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9353 {"zvmhulsuiaas",      VX(4, 0x593), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9354 {"zvmhulsuian",       VX(4, 0x594), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9355 {"zvmhulsuians",      VX(4, 0x595), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9356 {"zvmhulsuianp",      VX(4, 0x596), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9357 {"zvmhulsuianps",     VX(4, 0x597), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9358 {"zvmhulsf",          VX(4, 0x598), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9359 {"zvmhulsfr",         VX(4, 0x599), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9360 {"zvmhulsfaas",       VX(4, 0x59A), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9361 {"zvmhulsfraas",      VX(4, 0x59B), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9362 {"zvmhulsfans",       VX(4, 0x59C), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9363 {"zvmhulsfrans",      VX(4, 0x59D), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9364 {"zvmhulsfanps",      VX(4, 0x59E), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9365 {"zvmhulsfranps",     VX(4, 0x59F), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9366 {"zvmhllui",          VX(4, 0x5A0), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9367 {"zvmhlluiaa",        VX(4, 0x5A2), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9368 {"zvmhlluiaas",       VX(4, 0x5A3), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9369 {"zvmhlluian",        VX(4, 0x5A4), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9370 {"zvmhlluians",       VX(4, 0x5A5), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9371 {"zvmhlluianp",       VX(4, 0x5A6), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9372 {"zvmhlluianps",      VX(4, 0x5A7), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9373 {"zvmhllsi",          VX(4, 0x5A8), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9374 {"zvmhllsiaa",        VX(4, 0x5AA), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9375 {"zvmhllsiaas",       VX(4, 0x5AB), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9376 {"zvmhllsian",        VX(4, 0x5AC), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9377 {"zvmhllsians",       VX(4, 0x5AD), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9378 {"zvmhllsianp",       VX(4, 0x5AE), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9379 {"zvmhllsianps",      VX(4, 0x5AF), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9380 {"zvmhllsui",         VX(4, 0x5B0), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9381 {"zvmhllsuiaa",       VX(4, 0x5B2), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9382 {"zvmhllsuiaas",      VX(4, 0x5B3), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9383 {"zvmhllsuian",       VX(4, 0x5B4), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9384 {"zvmhllsuians",      VX(4, 0x5B5), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9385 {"zvmhllsuianp",      VX(4, 0x5B6), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9386 {"zvmhllsuianps",     VX(4, 0x5B7), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9387 {"zvmhllsf",          VX(4, 0x5B8), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9388 {"zvmhllsfr",         VX(4, 0x5B9), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9389 {"zvmhllsfaas",       VX(4, 0x5BA), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9390 {"zvmhllsfraas",      VX(4, 0x5BB), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9391 {"zvmhllsfans",       VX(4, 0x5BC), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9392 {"zvmhllsfrans",      VX(4, 0x5BD), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9393 {"zvmhllsfanps",      VX(4, 0x5BE), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9394 {"zvmhllsfranps",     VX(4, 0x5BF), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9395 {"zvmhuuui",          VX(4, 0x5C0), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9396 {"zvmhuuuiaa",        VX(4, 0x5C2), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9397 {"zvmhuuuiaas",       VX(4, 0x5C3), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9398 {"zvmhuuuian",        VX(4, 0x5C4), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9399 {"zvmhuuuians",       VX(4, 0x5C5), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9400 {"zvmhuuuianp",       VX(4, 0x5C6), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9401 {"zvmhuuuianps",      VX(4, 0x5C7), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9402 {"zvmhuusi",          VX(4, 0x5C8), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9403 {"zvmhuusiaa",        VX(4, 0x5CA), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9404 {"zvmhuusiaas",       VX(4, 0x5CB), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9405 {"zvmhuusian",        VX(4, 0x5CC), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9406 {"zvmhuusians",       VX(4, 0x5CD), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9407 {"zvmhuusianp",       VX(4, 0x5CE), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9408 {"zvmhuusianps",      VX(4, 0x5CF), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9409 {"zvmhuusui",         VX(4, 0x5D0), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9410 {"zvmhuusuiaa",       VX(4, 0x5D2), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9411 {"zvmhuusuiaas",      VX(4, 0x5D3), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9412 {"zvmhuusuian",       VX(4, 0x5D4), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9413 {"zvmhuusuians",      VX(4, 0x5D5), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9414 {"zvmhuusuianp",      VX(4, 0x5D6), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9415 {"zvmhuusuianps",     VX(4, 0x5D7), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9416 {"zvmhuusf",          VX(4, 0x5D8), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9417 {"zvmhuusfr",         VX(4, 0x5D9), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9418 {"zvmhuusfaas",       VX(4, 0x5DA), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9419 {"zvmhuusfraas",      VX(4, 0x5DB), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9420 {"zvmhuusfans",       VX(4, 0x5DC), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9421 {"zvmhuusfrans",      VX(4, 0x5DD), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9422 {"zvmhuusfanps",      VX(4, 0x5DE), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9423 {"zvmhuusfranps",     VX(4, 0x5DF), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9424 {"zvmhxlui",          VX(4, 0x5E0), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9425 {"zvmhxluiaa",        VX(4, 0x5E2), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9426 {"zvmhxluiaas",       VX(4, 0x5E3), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9427 {"zvmhxluian",        VX(4, 0x5E4), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9428 {"zvmhxluians",       VX(4, 0x5E5), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9429 {"zvmhxluianp",       VX(4, 0x5E6), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9430 {"zvmhxluianps",      VX(4, 0x5E7), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9431 {"zvmhxlsi",          VX(4, 0x5E8), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9432 {"zvmhxlsiaa",        VX(4, 0x5EA), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9433 {"zvmhxlsiaas",       VX(4, 0x5EB), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9434 {"zvmhxlsian",        VX(4, 0x5EC), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9435 {"zvmhxlsians",       VX(4, 0x5ED), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9436 {"zvmhxlsianp",       VX(4, 0x5EE), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9437 {"zvmhxlsianps",      VX(4, 0x5EF), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9438 {"zvmhxlsui",         VX(4, 0x5F0), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9439 {"zvmhxlsuiaa",       VX(4, 0x5F2), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9440 {"zvmhxlsuiaas",      VX(4, 0x5F3), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9441 {"zvmhxlsuian",       VX(4, 0x5F4), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9442 {"zvmhxlsuians",      VX(4, 0x5F5), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9443 {"zvmhxlsuianp",      VX(4, 0x5F6), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9444 {"zvmhxlsuianps",     VX(4, 0x5F7), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9445 {"zvmhxlsf",          VX(4, 0x5F8), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9446 {"zvmhxlsfr",         VX(4, 0x5F9), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9447 {"zvmhxlsfaas",       VX(4, 0x5FA), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9448 {"zvmhxlsfraas",      VX(4, 0x5FB), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9449 {"zvmhxlsfans",       VX(4, 0x5FC), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9450 {"zvmhxlsfrans",      VX(4, 0x5FD), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9451 {"zvmhxlsfanps",      VX(4, 0x5FE), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9452 {"zvmhxlsfranps",     VX(4, 0x5FF), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9453 {"zmheui",            VX(4, 0x600), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9454 {"zmheuiaa",          VX(4, 0x602), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9455 {"zmheuiaas",         VX(4, 0x603), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9456 {"zmheuian",          VX(4, 0x604), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9457 {"zmheuians",         VX(4, 0x605), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9458 {"zmhesi",            VX(4, 0x608), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9459 {"zmhesiaa",          VX(4, 0x60A), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9460 {"zmhesiaas",         VX(4, 0x60B), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9461 {"zmhesian",          VX(4, 0x60C), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9462 {"zmhesians",         VX(4, 0x60D), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9463 {"zmhesui",           VX(4, 0x610), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9464 {"zmhesuiaa",         VX(4, 0x612), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9465 {"zmhesuiaas",        VX(4, 0x613), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9466 {"zmhesuian",         VX(4, 0x614), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9467 {"zmhesuians",        VX(4, 0x615), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9468 {"zmhesf",            VX(4, 0x618), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9469 {"zmhesfr",           VX(4, 0x619), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9470 {"zmhesfaas",         VX(4, 0x61A), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9471 {"zmhesfraas",        VX(4, 0x61B), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9472 {"zmhesfans",         VX(4, 0x61C), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9473 {"zmhesfrans",        VX(4, 0x61D), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9474 {"zmheoui",           VX(4, 0x620), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9475 {"zmheouiaa",         VX(4, 0x622), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9476 {"zmheouiaas",        VX(4, 0x623), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9477 {"zmheouian",         VX(4, 0x624), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9478 {"zmheouians",        VX(4, 0x625), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9479 {"zmheosi",           VX(4, 0x628), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9480 {"zmheosiaa",         VX(4, 0x62A), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9481 {"zmheosiaas",        VX(4, 0x62B), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9482 {"zmheosian",         VX(4, 0x62C), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9483 {"zmheosians",        VX(4, 0x62D), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9484 {"zmheosui",          VX(4, 0x630), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9485 {"zmheosuiaa",        VX(4, 0x632), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9486 {"zmheosuiaas",       VX(4, 0x633), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9487 {"zmheosuian",        VX(4, 0x634), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9488 {"zmheosuians",       VX(4, 0x635), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9489 {"zmheosf",           VX(4, 0x638), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9490 {"zmheosfr",          VX(4, 0x639), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9491 {"zmheosfaas",        VX(4, 0x63A), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9492 {"zmheosfraas",       VX(4, 0x63B), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9493 {"zmheosfans",        VX(4, 0x63C), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9494 {"zmheosfrans",       VX(4, 0x63D), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9495 {"zmhoui",            VX(4, 0x640), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9496 {"zmhouiaa",          VX(4, 0x642), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9497 {"zmhouiaas",         VX(4, 0x643), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9498 {"zmhouian",          VX(4, 0x644), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9499 {"zmhouians",         VX(4, 0x645), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9500 {"zmhosi",            VX(4, 0x648), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9501 {"zmhosiaa",          VX(4, 0x64A), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9502 {"zmhosiaas",         VX(4, 0x64B), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9503 {"zmhosian",          VX(4, 0x64C), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9504 {"zmhosians",         VX(4, 0x64D), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9505 {"zmhosui",           VX(4, 0x650), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9506 {"zmhosuiaa",         VX(4, 0x652), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9507 {"zmhosuiaas",        VX(4, 0x653), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9508 {"zmhosuian",         VX(4, 0x654), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9509 {"zmhosuians",        VX(4, 0x655), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9510 {"zmhosf",            VX(4, 0x658), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9511 {"zmhosfr",           VX(4, 0x659), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9512 {"zmhosfaas",         VX(4, 0x65A), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9513 {"zmhosfraas",        VX(4, 0x65B), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9514 {"zmhosfans",         VX(4, 0x65C), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9515 {"zmhosfrans",        VX(4, 0x65D), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9516 {"zvmhuih",           VX(4, 0x660), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9517 {"zvmhuihs",          VX(4, 0x661), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9518 {"zvmhuiaah",         VX(4, 0x662), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9519 {"zvmhuiaahs",        VX(4, 0x663), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9520 {"zvmhuianh",         VX(4, 0x664), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9521 {"zvmhuianhs",        VX(4, 0x665), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9522 {"zvmhsihs",          VX(4, 0x669), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9523 {"zvmhsiaahs",        VX(4, 0x66B), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9524 {"zvmhsianhs",        VX(4, 0x66D), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9525 {"zvmhsuihs",         VX(4, 0x671), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9526 {"zvmhsuiaahs",       VX(4, 0x673), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9527 {"zvmhsuianhs",       VX(4, 0x675), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9528 {"zvmhsfh",           VX(4, 0x678), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9529 {"zvmhsfrh",          VX(4, 0x679), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9530 {"zvmhsfaahs",        VX(4, 0x67A), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9531 {"zvmhsfraahs",       VX(4, 0x67B), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9532 {"zvmhsfanhs",        VX(4, 0x67C), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9533 {"zvmhsfranhs",       VX(4, 0x67D), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9534 {"zvdotphaui",        VX(4, 0x680), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9535 {"zvdotphauis",       VX(4, 0x681), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9536 {"zvdotphauiaa",      VX(4, 0x682), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9537 {"zvdotphauiaas",     VX(4, 0x683), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9538 {"zvdotphauian",      VX(4, 0x684), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9539 {"zvdotphauians",     VX(4, 0x685), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9540 {"zvdotphasi",        VX(4, 0x688), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9541 {"zvdotphasis",       VX(4, 0x689), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9542 {"zvdotphasiaa",      VX(4, 0x68A), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9543 {"zvdotphasiaas",     VX(4, 0x68B), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9544 {"zvdotphasian",      VX(4, 0x68C), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9545 {"zvdotphasians",     VX(4, 0x68D), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9546 {"zvdotphasui",       VX(4, 0x690), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9547 {"zvdotphasuis",      VX(4, 0x691), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9548 {"zvdotphasuiaa",     VX(4, 0x692), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9549 {"zvdotphasuiaas",    VX(4, 0x693), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9550 {"zvdotphasuian",     VX(4, 0x694), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9551 {"zvdotphasuians",    VX(4, 0x695), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9552 {"zvdotphasfs",       VX(4, 0x698), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9553 {"zvdotphasfrs",      VX(4, 0x699), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9554 {"zvdotphasfaas",     VX(4, 0x69A), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9555 {"zvdotphasfraas",    VX(4, 0x69B), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9556 {"zvdotphasfans",     VX(4, 0x69C), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9557 {"zvdotphasfrans",    VX(4, 0x69D), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9558 {"zvdotphxaui",       VX(4, 0x6A0), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9559 {"zvdotphxauis",      VX(4, 0x6A1), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9560 {"zvdotphxauiaa",     VX(4, 0x6A2), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9561 {"zvdotphxauiaas",    VX(4, 0x6A3), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9562 {"zvdotphxauian",     VX(4, 0x6A4), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9563 {"zvdotphxauians",    VX(4, 0x6A5), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9564 {"zvdotphxasi",       VX(4, 0x6A8), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9565 {"zvdotphxasis",      VX(4, 0x6A9), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9566 {"zvdotphxasiaa",     VX(4, 0x6AA), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9567 {"zvdotphxasiaas",    VX(4, 0x6AB), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9568 {"zvdotphxasian",     VX(4, 0x6AC), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9569 {"zvdotphxasians",    VX(4, 0x6AD), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9570 {"zvdotphxasui",      VX(4, 0x6B0), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9571 {"zvdotphxasuis",     VX(4, 0x6B1), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9572 {"zvdotphxasuiaa",    VX(4, 0x6B2), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9573 {"zvdotphxasuiaas",   VX(4, 0x6B3), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9574 {"zvdotphxasuian",    VX(4, 0x6B4), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9575 {"zvdotphxasuians",   VX(4, 0x6B5), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9576 {"zvdotphxasfs",      VX(4, 0x6B8), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9577 {"zvdotphxasfrs",     VX(4, 0x6B9), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9578 {"zvdotphxasfaas",    VX(4, 0x6BA), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9579 {"zvdotphxasfraas",   VX(4, 0x6BB), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9580 {"zvdotphxasfans",    VX(4, 0x6BC), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9581 {"zvdotphxasfrans",   VX(4, 0x6BD), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9582 {"zvdotphsui",        VX(4, 0x6C0), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9583 {"zvdotphsuis",       VX(4, 0x6C1), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9584 {"zvdotphsuiaa",      VX(4, 0x6C2), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9585 {"zvdotphsuiaas",     VX(4, 0x6C3), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9586 {"zvdotphsuian",      VX(4, 0x6C4), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9587 {"zvdotphsuians",     VX(4, 0x6C5), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9588 {"zvdotphssi",        VX(4, 0x6C8), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9589 {"zvdotphssis",       VX(4, 0x6C9), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9590 {"zvdotphssiaa",      VX(4, 0x6CA), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9591 {"zvdotphssiaas",     VX(4, 0x6CB), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9592 {"zvdotphssian",      VX(4, 0x6CC), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9593 {"zvdotphssians",     VX(4, 0x6CD), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9594 {"zvdotphssui",       VX(4, 0x6D0), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9595 {"zvdotphssuis",      VX(4, 0x6D1), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9596 {"zvdotphssuiaa",     VX(4, 0x6D2), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9597 {"zvdotphssuiaas",    VX(4, 0x6D3), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9598 {"zvdotphssuian",     VX(4, 0x6D4), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9599 {"zvdotphssuians",    VX(4, 0x6D5), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9600 {"zvdotphssfs",       VX(4, 0x6D8), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9601 {"zvdotphssfrs",      VX(4, 0x6D9), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9602 {"zvdotphssfaas",     VX(4, 0x6DA), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9603 {"zvdotphssfraas",    VX(4, 0x6DB), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9604 {"zvdotphssfans",     VX(4, 0x6DC), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9605 {"zvdotphssfrans",    VX(4, 0x6DD), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9606 {"zmwluis",           VX(4, 0x6E1), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9607 {"zmwluiaa",          VX(4, 0x6E2), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9608 {"zmwluiaas",         VX(4, 0x6E3), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9609 {"zmwluian",          VX(4, 0x6E4), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9610 {"zmwluians",         VX(4, 0x6E5), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9611 {"zmwlsis",           VX(4, 0x6E9), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9612 {"zmwlsiaas",         VX(4, 0x6EB), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9613 {"zmwlsians",         VX(4, 0x6ED), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9614 {"zmwlsuis",          VX(4, 0x6F1), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9615 {"zmwlsuiaas",        VX(4, 0x6F3), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9616 {"zmwlsuians",        VX(4, 0x6F5), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9617 {"zmwsf",             VX(4, 0x6F8), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9618 {"zmwsfr",            VX(4, 0x6F9), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9619 {"zmwsfaas",          VX(4, 0x6FA), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9620 {"zmwsfraas",         VX(4, 0x6FB), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9621 {"zmwsfans",          VX(4, 0x6FC), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9622 {"zmwsfrans",         VX(4, 0x6FD), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9623 {"zlddx",             VX(4, 0x300), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9624 {"zldd",              VX(4, 0x301), VX_MASK,    PPCLSP, 0,              {RD_EVEN, EVUIMM_8, RA}},
9625 {"zldwx",             VX(4, 0x302), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9626 {"zldw",              VX(4, 0x303), VX_MASK,    PPCLSP, 0,              {RD_EVEN, EVUIMM_8, RA}},
9627 {"zldhx",             VX(4, 0x304), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9628 {"zldh",              VX(4, 0x305), VX_MASK,    PPCLSP, 0,              {RD_EVEN, EVUIMM_8, RA}},
9629 {"zlwgsfdx",          VX(4, 0x308), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9630 {"zlwgsfd",           VX(4, 0x309), VX_MASK,    PPCLSP, 0,              {RD_EVEN, EVUIMM_4, RA}},
9631 {"zlwwosdx",          VX(4, 0x30A), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9632 {"zlwwosd",           VX(4, 0x30B), VX_MASK,    PPCLSP, 0,              {RD_EVEN, EVUIMM_4, RA}},
9633 {"zlwhsplatwdx",      VX(4, 0x30C), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9634 {"zlwhsplatwd",       VX(4, 0x30D), VX_MASK,    PPCLSP, 0,              {RD_EVEN, EVUIMM_4, RA}},
9635 {"zlwhsplatdx",       VX(4, 0x30E), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9636 {"zlwhsplatd",        VX(4, 0x30F), VX_MASK,    PPCLSP, 0,              {RD_EVEN, EVUIMM_4, RA}},
9637 {"zlwhgwsfdx",        VX(4, 0x310), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9638 {"zlwhgwsfd",         VX(4, 0x311), VX_MASK,    PPCLSP, 0,              {RD_EVEN, EVUIMM_4, RA}},
9639 {"zlwhedx",           VX(4, 0x312), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9640 {"zlwhed",            VX(4, 0x313), VX_MASK,    PPCLSP, 0,              {RD_EVEN, EVUIMM_4, RA}},
9641 {"zlwhosdx",          VX(4, 0x314), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9642 {"zlwhosd",           VX(4, 0x315), VX_MASK,    PPCLSP, 0,              {RD_EVEN, EVUIMM_4, RA}},
9643 {"zlwhoudx",          VX(4, 0x316), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9644 {"zlwhoud",           VX(4, 0x317), VX_MASK,    PPCLSP, 0,              {RD_EVEN, EVUIMM_4, RA}},
9645 {"zlwhx",             VX(4, 0x318), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9646 {"zlwh",              VX(4, 0x319), VX_MASK,    PPCLSP, 0,              {RD, EVUIMM_4, RA}},
9647 {"zlwwx",             VX(4, 0x31A), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9648 {"zlww",              VX(4, 0x31B), VX_MASK,    PPCLSP, 0,              {RD, EVUIMM_4, RA}},
9649 {"zlhgwsfx",          VX(4, 0x31C), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9650 {"zlhgwsf",           VX(4, 0x31D), VX_MASK,    PPCLSP, 0,              {RD, EVUIMM_2, RA}},
9651 {"zlhhsplatx",        VX(4, 0x31E), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9652 {"zlhhsplat",         VX(4, 0x31F), VX_MASK,    PPCLSP, 0,              {RD, EVUIMM_2, RA}},
9653 {"zstddx",            VX(4, 0x320), VX_MASK,    PPCLSP, 0,              {RS_EVEN, RA, RB}},
9654 {"zstdd",             VX(4, 0x321), VX_MASK,    PPCLSP, 0,              {RS_EVEN, EVUIMM_8, RA}},
9655 {"zstdwx",            VX(4, 0x322), VX_MASK,    PPCLSP, 0,              {RS_EVEN, RA, RB}},
9656 {"zstdw",             VX(4, 0x323), VX_MASK,    PPCLSP, 0,              {RS_EVEN, EVUIMM_8, RA}},
9657 {"zstdhx",            VX(4, 0x324), VX_MASK,    PPCLSP, 0,              {RS_EVEN, RA, RB}},
9658 {"zstdh",             VX(4, 0x325), VX_MASK,    PPCLSP, 0,              {RS_EVEN, EVUIMM_8, RA}},
9659 {"zstwhedx",          VX(4, 0x328), VX_MASK,    PPCLSP, 0,              {RS_EVEN, RA, RB}},
9660 {"zstwhed",           VX(4, 0x329), VX_MASK,    PPCLSP, 0,              {RS_EVEN, EVUIMM_4, RA}},
9661 {"zstwhodx",          VX(4, 0x32A), VX_MASK,    PPCLSP, 0,              {RS_EVEN, RA, RB}},
9662 {"zstwhod",           VX(4, 0x32B), VX_MASK,    PPCLSP, 0,              {RS_EVEN, EVUIMM_4, RA}},
9663 {"zlhhex",            VX(4, 0x330), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9664 {"zlhhe",             VX(4, 0x331), VX_MASK,    PPCLSP, 0,              {RD, EVUIMM_2, RA}},
9665 {"zlhhosx",           VX(4, 0x332), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9666 {"zlhhos",            VX(4, 0x333), VX_MASK,    PPCLSP, 0,              {RD, EVUIMM_2, RA}},
9667 {"zlhhoux",           VX(4, 0x334), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9668 {"zlhhou",            VX(4, 0x335), VX_MASK,    PPCLSP, 0,              {RD, EVUIMM_2, RA}},
9669 {"zsthex",            VX(4, 0x338), VX_MASK,    PPCLSP, 0,              {RS, RA, RB}},
9670 {"zsthe",             VX(4, 0x339), VX_MASK,    PPCLSP, 0,              {RS, EVUIMM_2, RA}},
9671 {"zsthox",            VX(4, 0x33A), VX_MASK,    PPCLSP, 0,              {RS, RA, RB}},
9672 {"zstho",             VX(4, 0x33B), VX_MASK,    PPCLSP, 0,              {RS, EVUIMM_2, RA}},
9673 {"zstwhx",            VX(4, 0x33C), VX_MASK,    PPCLSP, 0,              {RS, RA, RB}},
9674 {"zstwh",             VX(4, 0x33D), VX_MASK,    PPCLSP, 0,              {RS, EVUIMM_4, RA}},
9675 {"zstwwx",            VX(4, 0x33E), VX_MASK,    PPCLSP, 0,              {RS, RA, RB}},
9676 {"zstww",             VX(4, 0x33F), VX_MASK,    PPCLSP, 0,              {RS, EVUIMM_4, RA}},
9677 {"zlddmx",            VX(4, 0x340), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9678 {"zlddu",             VX(4, 0x341), VX_MASK,    PPCLSP, 0,              {RD_EVEN, EVUIMM_8_EX0, RA}},
9679 {"zldwmx",            VX(4, 0x342), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9680 {"zldwu",             VX(4, 0x343), VX_MASK,    PPCLSP, 0,              {RD_EVEN, EVUIMM_8_EX0, RA}},
9681 {"zldhmx",            VX(4, 0x344), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9682 {"zldhu",             VX(4, 0x345), VX_MASK,    PPCLSP, 0,              {RD_EVEN, EVUIMM_8_EX0, RA}},
9683 {"zlwgsfdmx",         VX(4, 0x348), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9684 {"zlwgsfdu",          VX(4, 0x349), VX_MASK,    PPCLSP, 0,              {RD_EVEN, EVUIMM_4_EX0, RA}},
9685 {"zlwwosdmx",         VX(4, 0x34A), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9686 {"zlwwosdu",          VX(4, 0x34B), VX_MASK,    PPCLSP, 0,              {RD_EVEN, EVUIMM_4_EX0, RA}},
9687 {"zlwhsplatwdmx",     VX(4, 0x34C), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9688 {"zlwhsplatwdu",      VX(4, 0x34D), VX_MASK,    PPCLSP, 0,              {RD_EVEN, EVUIMM_4_EX0, RA}},
9689 {"zlwhsplatdmx",      VX(4, 0x34E), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9690 {"zlwhsplatdu",       VX(4, 0x34F), VX_MASK,    PPCLSP, 0,              {RD_EVEN, EVUIMM_4_EX0, RA}},
9691 {"zlwhgwsfdmx",       VX(4, 0x350), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9692 {"zlwhgwsfdu",        VX(4, 0x351), VX_MASK,    PPCLSP, 0,              {RD_EVEN, EVUIMM_4_EX0, RA}},
9693 {"zlwhedmx",          VX(4, 0x352), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9694 {"zlwhedu",           VX(4, 0x353), VX_MASK,    PPCLSP, 0,              {RD_EVEN, EVUIMM_4_EX0, RA}},
9695 {"zlwhosdmx",         VX(4, 0x354), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9696 {"zlwhosdu",          VX(4, 0x355), VX_MASK,    PPCLSP, 0,              {RD_EVEN, EVUIMM_4_EX0, RA}},
9697 {"zlwhoudmx",         VX(4, 0x356), VX_MASK,    PPCLSP, 0,              {RD_EVEN, RA, RB}},
9698 {"zlwhoudu",          VX(4, 0x357), VX_MASK,    PPCLSP, 0,              {RD_EVEN, EVUIMM_4_EX0, RA}},
9699 {"zlwhmx",            VX(4, 0x358), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9700 {"zlwhu",             VX(4, 0x359), VX_MASK,    PPCLSP, 0,              {RD, EVUIMM_4_EX0, RA}},
9701 {"zlwwmx",            VX(4, 0x35A), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9702 {"zlwwu",             VX(4, 0x35B), VX_MASK,    PPCLSP, 0,              {RD, EVUIMM_4_EX0, RA}},
9703 {"zlhgwsfmx",         VX(4, 0x35C), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9704 {"zlhgwsfu",          VX(4, 0x35D), VX_MASK,    PPCLSP, 0,              {RD, EVUIMM_2_EX0, RA}},
9705 {"zlhhsplatmx",       VX(4, 0x35E), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9706 {"zlhhsplatu",        VX(4, 0x35F), VX_MASK,    PPCLSP, 0,              {RD, EVUIMM_2_EX0, RA}},
9707 {"zstddmx",           VX(4, 0x360), VX_MASK,    PPCLSP, 0,              {RS_EVEN, RA, RB}},
9708 {"zstddu",            VX(4, 0x361), VX_MASK,    PPCLSP, 0,              {RS, EVUIMM_8_EX0, RA}},
9709 {"zstdwmx",           VX(4, 0x362), VX_MASK,    PPCLSP, 0,              {RS_EVEN, RA, RB}},
9710 {"zstdwu",            VX(4, 0x363), VX_MASK,    PPCLSP, 0,              {RS_EVEN, EVUIMM_8_EX0, RA}},
9711 {"zstdhmx",           VX(4, 0x364), VX_MASK,    PPCLSP, 0,              {RS_EVEN, RA, RB}},
9712 {"zstdhu",            VX(4, 0x365), VX_MASK,    PPCLSP, 0,              {RS_EVEN, EVUIMM_8_EX0, RA}},
9713 {"zstwhedmx",         VX(4, 0x368), VX_MASK,    PPCLSP, 0,              {RS_EVEN, RA, RB}},
9714 {"zstwhedu",          VX(4, 0x369), VX_MASK,    PPCLSP, 0,              {RS_EVEN, EVUIMM_4_EX0, RA}},
9715 {"zstwhodmx",         VX(4, 0x36A), VX_MASK,    PPCLSP, 0,              {RS_EVEN, RA, RB}},
9716 {"zstwhodu",          VX(4, 0x36B), VX_MASK,    PPCLSP, 0,              {RS_EVEN, EVUIMM_4_EX0, RA}},
9717 {"zlhhemx",           VX(4, 0x370), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9718 {"zlhheu",            VX(4, 0x371), VX_MASK,    PPCLSP, 0,              {RD, EVUIMM_2_EX0, RA}},
9719 {"zlhhosmx",          VX(4, 0x372), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9720 {"zlhhosu",           VX(4, 0x373), VX_MASK,    PPCLSP, 0,              {RD, EVUIMM_2_EX0, RA}},
9721 {"zlhhoumx",          VX(4, 0x374), VX_MASK,    PPCLSP, 0,              {RD, RA, RB}},
9722 {"zlhhouu",           VX(4, 0x375), VX_MASK,    PPCLSP, 0,              {RD, EVUIMM_2_EX0, RA}},
9723 {"zsthemx",           VX(4, 0x378), VX_MASK,    PPCLSP, 0,              {RS, RA, RB}},
9724 {"zstheu",            VX(4, 0x379), VX_MASK,    PPCLSP, 0,              {RS, EVUIMM_2_EX0, RA}},
9725 {"zsthomx",           VX(4, 0x37A), VX_MASK,    PPCLSP, 0,              {RS, RA, RB}},
9726 {"zsthou",            VX(4, 0x37B), VX_MASK,    PPCLSP, 0,              {RS, EVUIMM_2_EX0, RA}},
9727 {"zstwhmx",           VX(4, 0x37C), VX_MASK,    PPCLSP, 0,              {RS, RA, RB}},
9728 {"zstwhu",            VX(4, 0x37D), VX_MASK,    PPCLSP, 0,              {RS, EVUIMM_4_EX0, RA}},
9729 {"zstwwmx",           VX(4, 0x37E), VX_MASK,    PPCLSP, 0,              {RS, RA, RB}},
9730 {"zstwwu",            VX(4, 0x37F), VX_MASK,    PPCLSP, 0,              {RS, EVUIMM_4_EX0, RA}},
9731
9732 {"e_cmpi",      SCI8BF(6,0,21), SCI8BF_MASK,    PPCVLE, 0,              {CRD32, RA, SCLSCI8}},
9733 {"e_cmpwi",     SCI8BF(6,0,21), SCI8BF_MASK,    PPCVLE, 0,              {CRD32, RA, SCLSCI8}},
9734 {"e_cmpli",     SCI8BF(6,1,21), SCI8BF_MASK,    PPCVLE, 0,              {CRD32, RA, SCLSCI8}},
9735 {"e_cmplwi",    SCI8BF(6,1,21), SCI8BF_MASK,    PPCVLE, 0,              {CRD32, RA, SCLSCI8}},
9736 {"e_addi",      SCI8(6,16),     SCI8_MASK,      PPCVLE, 0,              {RT, RA, SCLSCI8}},
9737 {"e_subi",      SCI8(6,16),     SCI8_MASK,      PPCVLE, 0,              {RT, RA, SCLSCI8N}},
9738 {"e_addi.",     SCI8(6,17),     SCI8_MASK,      PPCVLE, 0,              {RT, RA, SCLSCI8}},
9739 {"e_addic",     SCI8(6,18),     SCI8_MASK,      PPCVLE, 0,              {RT, RA, SCLSCI8}},
9740 {"e_subic",     SCI8(6,18),     SCI8_MASK,      PPCVLE, 0,              {RT, RA, SCLSCI8N}},
9741 {"e_addic.",    SCI8(6,19),     SCI8_MASK,      PPCVLE, 0,              {RT, RA, SCLSCI8}},
9742 {"e_subic.",    SCI8(6,19),     SCI8_MASK,      PPCVLE, 0,              {RT, RA, SCLSCI8N}},
9743 {"e_mulli",     SCI8(6,20),     SCI8_MASK,      PPCVLE, 0,              {RT, RA, SCLSCI8}},
9744 {"e_subfic",    SCI8(6,22),     SCI8_MASK,      PPCVLE, 0,              {RT, RA, SCLSCI8}},
9745 {"e_subfic.",   SCI8(6,23),     SCI8_MASK,      PPCVLE, 0,              {RT, RA, SCLSCI8}},
9746 {"e_andi",      SCI8(6,24),     SCI8_MASK,      PPCVLE, 0,              {RA, RS, SCLSCI8}},
9747 {"e_andi.",     SCI8(6,25),     SCI8_MASK,      PPCVLE, 0,              {RA, RS, SCLSCI8}},
9748 {"e_nop",       SCI8(6,26),     0xffffffff,     PPCVLE, 0,              {0}},
9749 {"e_ori",       SCI8(6,26),     SCI8_MASK,      PPCVLE, 0,              {RA, RS, SCLSCI8}},
9750 {"e_ori.",      SCI8(6,27),     SCI8_MASK,      PPCVLE, 0,              {RA, RS, SCLSCI8}},
9751 {"e_xori",      SCI8(6,28),     SCI8_MASK,      PPCVLE, 0,              {RA, RS, SCLSCI8}},
9752 {"e_xori.",     SCI8(6,29),     SCI8_MASK,      PPCVLE, 0,              {RA, RS, SCLSCI8}},
9753 {"e_lbzu",      OPVUP(6,0),     OPVUP_MASK,     PPCVLE, 0,              {RT, D8, RA0}},
9754 {"e_lhau",      OPVUP(6,3),     OPVUP_MASK,     PPCVLE, 0,              {RT, D8, RA0}},
9755 {"e_lhzu",      OPVUP(6,1),     OPVUP_MASK,     PPCVLE, 0,              {RT, D8, RA0}},
9756 {"e_lmw",       OPVUP(6,8),     OPVUP_MASK,     PPCVLE, 0,              {RT, D8, RA0}},
9757 {"e_lwzu",      OPVUP(6,2),     OPVUP_MASK,     PPCVLE, 0,              {RT, D8, RA0}},
9758 {"e_stbu",      OPVUP(6,4),     OPVUP_MASK,     PPCVLE, 0,              {RT, D8, RA0}},
9759 {"e_sthu",      OPVUP(6,5),     OPVUP_MASK,     PPCVLE, 0,              {RT, D8, RA0}},
9760 {"e_stwu",      OPVUP(6,6),     OPVUP_MASK,     PPCVLE, 0,              {RT, D8, RA0}},
9761 {"e_stmw",      OPVUP(6,9),     OPVUP_MASK,     PPCVLE, 0,              {RT, D8, RA0}},
9762 {"e_lmvgprw",   OPVUPRT(6,16,0),OPVUPRT_MASK,   PPCVLE, 0,              {D8, RA0}},
9763 {"e_ldmvgprw",  OPVUPRT(6,16,0),OPVUPRT_MASK,   PPCVLE, 0,              {D8, RA0}},
9764 {"e_stmvgprw",  OPVUPRT(6,17,0),OPVUPRT_MASK,   PPCVLE, 0,              {D8, RA0}},
9765 {"e_lmvsprw",   OPVUPRT(6,16,1),OPVUPRT_MASK,   PPCVLE, 0,              {D8, RA0}},
9766 {"e_ldmvsprw",  OPVUPRT(6,16,1),OPVUPRT_MASK,   PPCVLE, 0,              {D8, RA0}},
9767 {"e_stmvsprw",  OPVUPRT(6,17,1),OPVUPRT_MASK,   PPCVLE, 0,              {D8, RA0}},
9768 {"e_lmvsrrw",   OPVUPRT(6,16,4),OPVUPRT_MASK,   PPCVLE, 0,              {D8, RA0}},
9769 {"e_ldmvsrrw",  OPVUPRT(6,16,4),OPVUPRT_MASK,   PPCVLE, 0,              {D8, RA0}},
9770 {"e_stmvsrrw",  OPVUPRT(6,17,4),OPVUPRT_MASK,   PPCVLE, 0,              {D8, RA0}},
9771 {"e_lmvcsrrw",  OPVUPRT(6,16,5),OPVUPRT_MASK,   PPCVLE, 0,              {D8, RA0}},
9772 {"e_ldmvcsrrw", OPVUPRT(6,16,5),OPVUPRT_MASK,   PPCVLE, 0,              {D8, RA0}},
9773 {"e_stmvcsrrw", OPVUPRT(6,17,5),OPVUPRT_MASK,   PPCVLE, 0,              {D8, RA0}},
9774 {"e_lmvdsrrw",  OPVUPRT(6,16,6),OPVUPRT_MASK,   PPCVLE, 0,              {D8, RA0}},
9775 {"e_ldmvdsrrw", OPVUPRT(6,16,6),OPVUPRT_MASK,   PPCVLE, 0,              {D8, RA0}},
9776 {"e_stmvdsrrw", OPVUPRT(6,17,6),OPVUPRT_MASK,   PPCVLE, 0,              {D8, RA0}},
9777 {"e_lmvmcsrrw", OPVUPRT(6,16,7),OPVUPRT_MASK,   PPCVLE, 0,              {D8, RA0}},
9778 {"e_stmvmcsrrw",        OPVUPRT(6,17,7),OPVUPRT_MASK,   PPCVLE, 0,              {D8, RA0}},
9779 {"e_add16i",    OP(7),          OP_MASK,        PPCVLE, 0,              {RT, RA, SI}},
9780 {"e_la",        OP(7),          OP_MASK,        PPCVLE, 0,              {RT, D, RA0}},
9781 {"e_sub16i",    OP(7),          OP_MASK,        PPCVLE, 0,              {RT, RA, NSI}},
9782
9783 {"se_addi",     SE_IM5(8,0),    SE_IM5_MASK,    PPCVLE, 0,              {RX, OIMM5}},
9784 {"se_cmpli",    SE_IM5(8,1),    SE_IM5_MASK,    PPCVLE, 0,              {RX, OIMM5}},
9785 {"se_subi",     SE_IM5(9,0),    SE_IM5_MASK,    PPCVLE, 0,              {RX, OIMM5}},
9786 {"se_subi.",    SE_IM5(9,1),    SE_IM5_MASK,    PPCVLE, 0,              {RX, OIMM5}},
9787 {"se_cmpi",     SE_IM5(10,1),   SE_IM5_MASK,    PPCVLE, 0,              {RX, UI5}},
9788 {"se_bmaski",   SE_IM5(11,0),   SE_IM5_MASK,    PPCVLE, 0,              {RX, UI5}},
9789 {"se_andi",     SE_IM5(11,1),   SE_IM5_MASK,    PPCVLE, 0,              {RX, UI5}},
9790
9791 {"e_lbz",       OP(12),         OP_MASK,        PPCVLE, 0,              {RT, D, RA0}},
9792 {"e_stb",       OP(13),         OP_MASK,        PPCVLE, 0,              {RT, D, RA0}},
9793 {"e_lha",       OP(14),         OP_MASK,        PPCVLE, 0,              {RT, D, RA0}},
9794
9795 {"se_srw",      SE_RR(16,0),    SE_RR_MASK,     PPCVLE, 0,              {RX, RY}},
9796 {"se_sraw",     SE_RR(16,1),    SE_RR_MASK,     PPCVLE, 0,              {RX, RY}},
9797 {"se_slw",      SE_RR(16,2),    SE_RR_MASK,     PPCVLE, 0,              {RX, RY}},
9798 {"se_nop",      SE_RR(17,0),    0xffff,         PPCVLE, 0,              {0}},
9799 {"se_or",       SE_RR(17,0),    SE_RR_MASK,     PPCVLE, 0,              {RX, RY}},
9800 {"se_andc",     SE_RR(17,1),    SE_RR_MASK,     PPCVLE, 0,              {RX, RY}},
9801 {"se_and",      SE_RR(17,2),    SE_RR_MASK,     PPCVLE, 0,              {RX, RY}},
9802 {"se_and.",     SE_RR(17,3),    SE_RR_MASK,     PPCVLE, 0,              {RX, RY}},
9803 {"se_li",       IM7(9),         IM7_MASK,       PPCVLE, 0,              {RX, UI7}},
9804
9805 {"e_lwz",       OP(20),         OP_MASK,        PPCVLE, 0,              {RT, D, RA0}},
9806 {"e_stw",       OP(21),         OP_MASK,        PPCVLE, 0,              {RT, D, RA0}},
9807 {"e_lhz",       OP(22),         OP_MASK,        PPCVLE, 0,              {RT, D, RA0}},
9808 {"e_sth",       OP(23),         OP_MASK,        PPCVLE, 0,              {RT, D, RA0}},
9809
9810 {"se_bclri",    SE_IM5(24,0),   SE_IM5_MASK,    PPCVLE, 0,              {RX, UI5}},
9811 {"se_bgeni",    SE_IM5(24,1),   SE_IM5_MASK,    PPCVLE, 0,              {RX, UI5}},
9812 {"se_bseti",    SE_IM5(25,0),   SE_IM5_MASK,    PPCVLE, 0,              {RX, UI5}},
9813 {"se_btsti",    SE_IM5(25,1),   SE_IM5_MASK,    PPCVLE, 0,              {RX, UI5}},
9814 {"se_srwi",     SE_IM5(26,0),   SE_IM5_MASK,    PPCVLE, 0,              {RX, UI5}},
9815 {"se_srawi",    SE_IM5(26,1),   SE_IM5_MASK,    PPCVLE, 0,              {RX, UI5}},
9816 {"se_slwi",     SE_IM5(27,0),   SE_IM5_MASK,    PPCVLE, 0,              {RX, UI5}},
9817
9818 {"e_lis",       I16L(28,28),    I16L_MASK,      PPCVLE, 0,              {RD, VLEUIMML}},
9819 {"e_and2is.",   I16L(28,29),    I16L_MASK,      PPCVLE, 0,              {RD, VLEUIMML}},
9820 {"e_or2is",     I16L(28,26),    I16L_MASK,      PPCVLE, 0,              {RD, VLEUIMML}},
9821 {"e_and2i.",    I16L(28,25),    I16L_MASK,      PPCVLE, 0,              {RD, VLEUIMML}},
9822 {"e_or2i",      I16L(28,24),    I16L_MASK,      PPCVLE, 0,              {RD, VLEUIMML}},
9823 {"e_cmphl16i",  IA16(28,23),    IA16_MASK,      PPCVLE, 0,              {RA, VLEUIMM}},
9824 {"e_cmph16i",   IA16(28,22),    IA16_MASK,      PPCVLE, 0,              {RA, VLESIMM}},
9825 {"e_cmpl16i",   I16A(28,21),    I16A_MASK,      PPCVLE, 0,              {RA, VLEUIMM}},
9826 {"e_mull2i",    I16A(28,20),    I16A_MASK,      PPCVLE, 0,              {RA, VLESIMM}},
9827 {"e_cmp16i",    IA16(28,19),    IA16_MASK,      PPCVLE, 0,              {RA, VLESIMM}},
9828 {"e_sub2is",    I16A(28,18),    I16A_MASK,      PPCVLE, 0,              {RA, VLENSIMM}},
9829 {"e_add2is",    I16A(28,18),    I16A_MASK,      PPCVLE, 0,              {RA, VLESIMM}},
9830 {"e_sub2i.",    I16A(28,17),    I16A_MASK,      PPCVLE, 0,              {RA, VLENSIMM}},
9831 {"e_add2i.",    I16A(28,17),    I16A_MASK,      PPCVLE, 0,              {RA, VLESIMM}},
9832 {"e_li",        LI20(28,0),     LI20_MASK,      PPCVLE, 0,              {RT, IMM20}},
9833 {"e_rlwimi",    M(29,0),        M_MASK,         PPCVLE, 0,              {RA, RS, SH, MB, ME}},
9834 {"e_rlwinm",    M(29,1),        M_MASK,         PPCVLE, 0,              {RA, RT, SH, MBE, ME}},
9835 {"e_b",         BD24(30,0,0),   BD24_MASK,      PPCVLE, 0,              {B24}},
9836 {"e_bl",        BD24(30,0,1),   BD24_MASK,      PPCVLE, 0,              {B24}},
9837 {"e_bdnz",      EBD15(30,8,BO32DNZ,0),  EBD15_MASK, PPCVLE, 0,          {B15}},
9838 {"e_bdnzl",     EBD15(30,8,BO32DNZ,1),  EBD15_MASK, PPCVLE, 0,          {B15}},
9839 {"e_bdz",       EBD15(30,8,BO32DZ,0),   EBD15_MASK, PPCVLE, 0,          {B15}},
9840 {"e_bdzl",      EBD15(30,8,BO32DZ,1),   EBD15_MASK, PPCVLE, 0,          {B15}},
9841 {"e_bge",       EBD15BI(30,8,BO32F,CBLT,0), EBD15BI_MASK, PPCVLE, 0,    {CRS,B15}},
9842 {"e_bgel",      EBD15BI(30,8,BO32F,CBLT,1), EBD15BI_MASK, PPCVLE, 0,    {CRS,B15}},
9843 {"e_bnl",       EBD15BI(30,8,BO32F,CBLT,0), EBD15BI_MASK, PPCVLE, 0,    {CRS,B15}},
9844 {"e_bnll",      EBD15BI(30,8,BO32F,CBLT,1), EBD15BI_MASK, PPCVLE, 0,    {CRS,B15}},
9845 {"e_blt",       EBD15BI(30,8,BO32T,CBLT,0), EBD15BI_MASK, PPCVLE, 0,    {CRS,B15}},
9846 {"e_bltl",      EBD15BI(30,8,BO32T,CBLT,1), EBD15BI_MASK, PPCVLE, 0,    {CRS,B15}},
9847 {"e_bgt",       EBD15BI(30,8,BO32T,CBGT,0), EBD15BI_MASK, PPCVLE, 0,    {CRS,B15}},
9848 {"e_bgtl",      EBD15BI(30,8,BO32T,CBGT,1), EBD15BI_MASK, PPCVLE, 0,    {CRS,B15}},
9849 {"e_ble",       EBD15BI(30,8,BO32F,CBGT,0), EBD15BI_MASK, PPCVLE, 0,    {CRS,B15}},
9850 {"e_blel",      EBD15BI(30,8,BO32F,CBGT,1), EBD15BI_MASK, PPCVLE, 0,    {CRS,B15}},
9851 {"e_bng",       EBD15BI(30,8,BO32F,CBGT,0), EBD15BI_MASK, PPCVLE, 0,    {CRS,B15}},
9852 {"e_bngl",      EBD15BI(30,8,BO32F,CBGT,1), EBD15BI_MASK, PPCVLE, 0,    {CRS,B15}},
9853 {"e_bne",       EBD15BI(30,8,BO32F,CBEQ,0), EBD15BI_MASK, PPCVLE, 0,    {CRS,B15}},
9854 {"e_bnel",      EBD15BI(30,8,BO32F,CBEQ,1), EBD15BI_MASK, PPCVLE, 0,    {CRS,B15}},
9855 {"e_beq",       EBD15BI(30,8,BO32T,CBEQ,0), EBD15BI_MASK, PPCVLE, 0,    {CRS,B15}},
9856 {"e_beql",      EBD15BI(30,8,BO32T,CBEQ,1), EBD15BI_MASK, PPCVLE, 0,    {CRS,B15}},
9857 {"e_bso",       EBD15BI(30,8,BO32T,CBSO,0), EBD15BI_MASK, PPCVLE, 0,    {CRS,B15}},
9858 {"e_bsol",      EBD15BI(30,8,BO32T,CBSO,1), EBD15BI_MASK, PPCVLE, 0,    {CRS,B15}},
9859 {"e_bun",       EBD15BI(30,8,BO32T,CBSO,0), EBD15BI_MASK, PPCVLE, 0,    {CRS,B15}},
9860 {"e_bunl",      EBD15BI(30,8,BO32T,CBSO,1), EBD15BI_MASK, PPCVLE, 0,    {CRS,B15}},
9861 {"e_bns",       EBD15BI(30,8,BO32F,CBSO,0), EBD15BI_MASK, PPCVLE, 0,    {CRS,B15}},
9862 {"e_bnsl",      EBD15BI(30,8,BO32F,CBSO,1), EBD15BI_MASK, PPCVLE, 0,    {CRS,B15}},
9863 {"e_bnu",       EBD15BI(30,8,BO32F,CBSO,0), EBD15BI_MASK, PPCVLE, 0,    {CRS,B15}},
9864 {"e_bnul",      EBD15BI(30,8,BO32F,CBSO,1), EBD15BI_MASK, PPCVLE, 0,    {CRS,B15}},
9865 {"e_bc",        BD15(30,8,0),   BD15_MASK,      PPCVLE, 0,              {BO32, BI32, B15}},
9866 {"e_bcl",       BD15(30,8,1),   BD15_MASK,      PPCVLE, 0,              {BO32, BI32, B15}},
9867
9868 {"e_bf",        EBD15(30,8,BO32F,0), EBD15_MASK, PPCVLE, 0,             {BI32,B15}},
9869 {"e_bfl",       EBD15(30,8,BO32F,1), EBD15_MASK, PPCVLE, 0,             {BI32,B15}},
9870 {"e_bt",        EBD15(30,8,BO32T,0), EBD15_MASK, PPCVLE, 0,             {BI32,B15}},
9871 {"e_btl",       EBD15(30,8,BO32T,1), EBD15_MASK, PPCVLE, 0,             {BI32,B15}},
9872
9873 {"e_cmph",      X(31,14),       X_MASK,         PPCVLE, 0,              {CRD, RA, RB}},
9874 {"e_sc",        X(31,36),       XRTRA_MASK,     PPCVLE, 0,              {ELEV}},
9875 {"e_cmphl",     X(31,46),       X_MASK,         PPCVLE, 0,              {CRD, RA, RB}},
9876 {"e_crandc",    XL(31,129),     XL_MASK,        PPCVLE, 0,              {BT, BA, BB}},
9877 {"e_crnand",    XL(31,225),     XL_MASK,        PPCVLE, 0,              {BT, BA, BB}},
9878 {"e_crnot",     XL(31,33),      XL_MASK,        PPCVLE, 0,              {BT, BAB}},
9879 {"e_crnor",     XL(31,33),      XL_MASK,        PPCVLE, 0,              {BT, BA, BB}},
9880 {"e_crclr",     XL(31,193),     XL_MASK,        PPCVLE, 0,              {BTAB}},
9881 {"e_crxor",     XL(31,193),     XL_MASK,        PPCVLE, 0,              {BT, BA, BB}},
9882 {"e_mcrf",      XL(31,16),      XL_MASK,        PPCVLE, 0,              {CRD, CR}},
9883 {"e_slwi",      EX(31,112),     EX_MASK,        PPCVLE, 0,              {RA, RS, SH}},
9884 {"e_slwi.",     EX(31,113),     EX_MASK,        PPCVLE, 0,              {RA, RS, SH}},
9885
9886 {"e_crand",     XL(31,257),     XL_MASK,        PPCVLE, 0,              {BT, BA, BB}},
9887
9888 {"e_rlw",       EX(31,560),     EX_MASK,        PPCVLE, 0,              {RA, RS, RB}},
9889 {"e_rlw.",      EX(31,561),     EX_MASK,        PPCVLE, 0,              {RA, RS, RB}},
9890
9891 {"e_crset",     XL(31,289),     XL_MASK,        PPCVLE, 0,              {BTAB}},
9892 {"e_creqv",     XL(31,289),     XL_MASK,        PPCVLE, 0,              {BT, BA, BB}},
9893
9894 {"e_rlwi",      EX(31,624),     EX_MASK,        PPCVLE, 0,              {RA, RS, SH}},
9895 {"e_rlwi.",     EX(31,625),     EX_MASK,        PPCVLE, 0,              {RA, RS, SH}},
9896
9897 {"e_crorc",     XL(31,417),     XL_MASK,        PPCVLE, 0,              {BT, BA, BB}},
9898
9899 {"e_crmove",    XL(31,449),     XL_MASK,        PPCVLE, 0,              {BT, BAB}},
9900 {"e_cror",      XL(31,449),     XL_MASK,        PPCVLE, 0,              {BT, BA, BB}},
9901
9902 {"mtmas1",      XSPR(31,467,625), XSPR_MASK,    PPCVLE, 0,              {RS}},
9903
9904 {"e_srwi",      EX(31,1136),    EX_MASK,        PPCVLE, 0,              {RA, RS, SH}},
9905 {"e_srwi.",     EX(31,1137),    EX_MASK,        PPCVLE, 0,              {RA, RS, SH}},
9906
9907 {"se_lbz",      SD4(8),         SD4_MASK,       PPCVLE, 0,              {RZ, SE_SD, RX}},
9908
9909 {"se_stb",      SD4(9),         SD4_MASK,       PPCVLE, 0,              {RZ, SE_SD, RX}},
9910
9911 {"se_lhz",      SD4(10),        SD4_MASK,       PPCVLE, 0,              {RZ, SE_SDH, RX}},
9912
9913 {"se_sth",      SD4(11),        SD4_MASK,       PPCVLE, 0,              {RZ, SE_SDH, RX}},
9914
9915 {"se_lwz",      SD4(12),        SD4_MASK,       PPCVLE, 0,              {RZ, SE_SDW, RX}},
9916
9917 {"se_stw",      SD4(13),        SD4_MASK,       PPCVLE, 0,              {RZ, SE_SDW, RX}},
9918
9919 {"se_bge",      EBD8IO(28,0,0), EBD8IO3_MASK,   PPCVLE, 0,              {B8}},
9920 {"se_bnl",      EBD8IO(28,0,0), EBD8IO3_MASK,   PPCVLE, 0,              {B8}},
9921 {"se_ble",      EBD8IO(28,0,1), EBD8IO3_MASK,   PPCVLE, 0,              {B8}},
9922 {"se_bng",      EBD8IO(28,0,1), EBD8IO3_MASK,   PPCVLE, 0,              {B8}},
9923 {"se_bne",      EBD8IO(28,0,2), EBD8IO3_MASK,   PPCVLE, 0,              {B8}},
9924 {"se_bns",      EBD8IO(28,0,3), EBD8IO3_MASK,   PPCVLE, 0,              {B8}},
9925 {"se_bnu",      EBD8IO(28,0,3), EBD8IO3_MASK,   PPCVLE, 0,              {B8}},
9926 {"se_bf",       EBD8IO(28,0,0), EBD8IO2_MASK,   PPCVLE, 0,              {BI16, B8}},
9927 {"se_blt",      EBD8IO(28,1,0), EBD8IO3_MASK,   PPCVLE, 0,              {B8}},
9928 {"se_bgt",      EBD8IO(28,1,1), EBD8IO3_MASK,   PPCVLE, 0,              {B8}},
9929 {"se_beq",      EBD8IO(28,1,2), EBD8IO3_MASK,   PPCVLE, 0,              {B8}},
9930 {"se_bso",      EBD8IO(28,1,3), EBD8IO3_MASK,   PPCVLE, 0,              {B8}},
9931 {"se_bun",      EBD8IO(28,1,3), EBD8IO3_MASK,   PPCVLE, 0,              {B8}},
9932 {"se_bt",       EBD8IO(28,1,0), EBD8IO2_MASK,   PPCVLE, 0,              {BI16, B8}},
9933 {"se_bc",       BD8IO(28),      BD8IO_MASK,     PPCVLE, 0,              {BO16, BI16, B8}},
9934 {"se_b",        BD8(58,0,0),    BD8_MASK,       PPCVLE, 0,              {B8}},
9935 {"se_bl",       BD8(58,0,1),    BD8_MASK,       PPCVLE, 0,              {B8}},
9936 };
9937
9938 const unsigned int vle_num_opcodes =
9939   sizeof (vle_opcodes) / sizeof (vle_opcodes[0]);
9940 \f
9941 /* The macro table.  This is only used by the assembler.  */
9942
9943 /* The expressions of the form (-x ! 31) & (x | 31) have the value 0
9944    when x=0; 32-x when x is between 1 and 31; are negative if x is
9945    negative; and are 32 or more otherwise.  This is what you want
9946    when, for instance, you are emulating a right shift by a
9947    rotate-left-and-mask, because the underlying instructions support
9948    shifts of size 0 but not shifts of size 32.  By comparison, when
9949    extracting x bits from some word you want to use just 32-x, because
9950    the underlying instructions don't support extracting 0 bits but do
9951    support extracting the whole word (32 bits in this case).  */
9952
9953 const struct powerpc_macro powerpc_macros[] = {
9954 {"extldi",   4, PPC64,  "rldicr %0,%1,%3,(%2)-1"},
9955 {"extldi.",  4, PPC64,  "rldicr. %0,%1,%3,(%2)-1"},
9956 {"extrdi",   4, PPC64,  "rldicl %0,%1,((%2)+(%3))&((%2)+(%3)<>64),64-(%2)"},
9957 {"extrdi.",  4, PPC64,  "rldicl. %0,%1,((%2)+(%3))&((%2)+(%3)<>64),64-(%2)"},
9958 {"insrdi",   4, PPC64,  "rldimi %0,%1,64-((%2)+(%3)),%3"},
9959 {"insrdi.",  4, PPC64,  "rldimi. %0,%1,64-((%2)+(%3)),%3"},
9960 {"rotrdi",   3, PPC64,  "rldicl %0,%1,(-(%2)!63)&((%2)|63),0"},
9961 {"rotrdi.",  3, PPC64,  "rldicl. %0,%1,(-(%2)!63)&((%2)|63),0"},
9962 {"sldi",     3, PPC64,  "rldicr %0,%1,%2,63-(%2)"},
9963 {"sldi.",    3, PPC64,  "rldicr. %0,%1,%2,63-(%2)"},
9964 {"srdi",     3, PPC64,  "rldicl %0,%1,(-(%2)!63)&((%2)|63),%2"},
9965 {"srdi.",    3, PPC64,  "rldicl. %0,%1,(-(%2)!63)&((%2)|63),%2"},
9966 {"clrrdi",   3, PPC64,  "rldicr %0,%1,0,63-(%2)"},
9967 {"clrrdi.",  3, PPC64,  "rldicr. %0,%1,0,63-(%2)"},
9968 {"clrlsldi", 4, PPC64,  "rldic %0,%1,%3,(%2)-(%3)"},
9969 {"clrlsldi.",4, PPC64,  "rldic. %0,%1,%3,(%2)-(%3)"},
9970
9971 {"extlwi",   4, PPCCOM, "rlwinm %0,%1,%3,0,(%2)-1"},
9972 {"extlwi.",  4, PPCCOM, "rlwinm. %0,%1,%3,0,(%2)-1"},
9973 {"extrwi",   4, PPCCOM, "rlwinm %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"},
9974 {"extrwi.",  4, PPCCOM, "rlwinm. %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"},
9975 {"inslwi",   4, PPCCOM, "rlwimi %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"},
9976 {"inslwi.",  4, PPCCOM, "rlwimi. %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"},
9977 {"insrwi",   4, PPCCOM, "rlwimi %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"},
9978 {"insrwi.",  4, PPCCOM, "rlwimi. %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"},
9979 {"rotrwi",   3, PPCCOM, "rlwinm %0,%1,(-(%2)!31)&((%2)|31),0,31"},
9980 {"rotrwi.",  3, PPCCOM, "rlwinm. %0,%1,(-(%2)!31)&((%2)|31),0,31"},
9981 {"slwi",     3, PPCCOM, "rlwinm %0,%1,%2,0,31-(%2)"},
9982 {"sli",      3, PWRCOM, "rlinm %0,%1,%2,0,31-(%2)"},
9983 {"slwi.",    3, PPCCOM, "rlwinm. %0,%1,%2,0,31-(%2)"},
9984 {"sli.",     3, PWRCOM, "rlinm. %0,%1,%2,0,31-(%2)"},
9985 {"srwi",     3, PPCCOM, "rlwinm %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
9986 {"sri",      3, PWRCOM, "rlinm %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
9987 {"srwi.",    3, PPCCOM, "rlwinm. %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
9988 {"sri.",     3, PWRCOM, "rlinm. %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
9989 {"clrrwi",   3, PPCCOM, "rlwinm %0,%1,0,0,31-(%2)"},
9990 {"clrrwi.",  3, PPCCOM, "rlwinm. %0,%1,0,0,31-(%2)"},
9991 {"clrlslwi", 4, PPCCOM, "rlwinm %0,%1,%3,(%2)-(%3),31-(%3)"},
9992 {"clrlslwi.",4, PPCCOM, "rlwinm. %0,%1,%3,(%2)-(%3),31-(%3)"},
9993
9994 {"e_extlwi", 4, PPCVLE, "e_rlwinm %0,%1,%3,0,(%2)-1"},
9995 {"e_extrwi", 4, PPCVLE, "e_rlwinm %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"},
9996 {"e_inslwi", 4, PPCVLE, "e_rlwimi %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"},
9997 {"e_insrwi", 4, PPCVLE, "e_rlwimi %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"},
9998 {"e_rotlwi", 3, PPCVLE, "e_rlwinm %0,%1,%2,0,31"},
9999 {"e_rotrwi", 3, PPCVLE, "e_rlwinm %0,%1,(-(%2)!31)&((%2)|31),0,31"},
10000 {"e_slwi",   3, PPCVLE, "e_rlwinm %0,%1,%2,0,31-(%2)"},
10001 {"e_srwi",   3, PPCVLE, "e_rlwinm %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
10002 {"e_clrlwi", 3, PPCVLE, "e_rlwinm %0,%1,0,%2,31"},
10003 {"e_clrrwi", 3, PPCVLE, "e_rlwinm %0,%1,0,0,31-(%2)"},
10004 {"e_clrlslwi",4, PPCVLE, "e_rlwinm %0,%1,%3,(%2)-(%3),31-(%3)"},
10005
10006 /* old SPE instructions have new names with the same opcodes */
10007 {"evsadd",      3, PPCSPE|PPCVLE, "efsadd %0,%1,%2"},
10008 {"evssub",      3, PPCSPE|PPCVLE, "efssub %0,%1,%2"},
10009 {"evsabs",      2, PPCSPE|PPCVLE, "efsabs %0,%1"},
10010 {"evsnabs",     2, PPCSPE|PPCVLE, "efsnabs %0,%1"},
10011 {"evsneg",      2, PPCSPE|PPCVLE, "efsneg %0,%1"},
10012 {"evsmul",      3, PPCSPE|PPCVLE, "efsmul %0,%1,%2"},
10013 {"evsdiv",      3, PPCSPE|PPCVLE, "efsdiv %0,%1,%2"},
10014 {"evscmpgt",    3, PPCSPE|PPCVLE, "efscmpgt %0,%1,%2"},
10015 {"evsgmplt",    3, PPCSPE|PPCVLE, "efscmplt %0,%1,%2"},
10016 {"evsgmpeq",    3, PPCSPE|PPCVLE, "efscmpeq %0,%1,%2"},
10017 {"evscfui",     2, PPCSPE|PPCVLE, "efscfui %0,%1"},
10018 {"evscfsi",     2, PPCSPE|PPCVLE, "efscfsi %0,%1"},
10019 {"evscfuf",     2, PPCSPE|PPCVLE, "efscfuf %0,%1"},
10020 {"evscfsf",     2, PPCSPE|PPCVLE, "efscfsf %0,%1"},
10021 {"evsctui",     2, PPCSPE|PPCVLE, "efsctui %0,%1"},
10022 {"evsctsi",     2, PPCSPE|PPCVLE, "efsctsi %0,%1"},
10023 {"evsctuf",     2, PPCSPE|PPCVLE, "efsctuf %0,%1"},
10024 {"evsctsf",     2, PPCSPE|PPCVLE, "efsctsf %0,%1"},
10025 {"evsctuiz",    2, PPCSPE|PPCVLE, "efsctuiz %0,%1"},
10026 {"evsctsiz",    2, PPCSPE|PPCVLE, "efsctsiz %0,%1"},
10027 {"evststgt",    3, PPCSPE|PPCVLE, "efststgt %0,%1,%2"},
10028 {"evststlt",    3, PPCSPE|PPCVLE, "efststlt %0,%1,%2"},
10029 {"evststeq",    3, PPCSPE|PPCVLE, "efststeq %0,%1,%2"},
10030
10031 /* SPE2 instructions which just are mapped to SPE2 */
10032 {"evdotphsssi",  3, PPCSPE2, "evdotphssmi %0,%1,%2"},
10033 {"evdotphsssia", 3, PPCSPE2, "evdotphssmia %0,%1,%2"},
10034 {"evdotpwsssi",  3, PPCSPE2, "evdotpwssmi %0,%1,%2"},
10035 {"evdotpwsssia", 3, PPCSPE2, "evdotpwssmia %0,%1,%2"}
10036 };
10037
10038 const int powerpc_num_macros =
10039   sizeof (powerpc_macros) / sizeof (powerpc_macros[0]);
10040
10041 /* SPE v2 instruction set from SPE2PIM Rev. 2 08/2011 */
10042 const struct powerpc_opcode spe2_opcodes[] = {
10043 {"evdotpwcssi",           VX (4, 128),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10044 {"evdotpwcsmi",           VX (4, 129),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10045 {"evdotpwcssfr",          VX (4, 130),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10046 {"evdotpwcssf",           VX (4, 131),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10047 {"evdotpwgasmf",          VX (4, 136),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10048 {"evdotpwxgasmf",         VX (4, 137),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10049 {"evdotpwgasmfr",         VX (4, 138),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10050 {"evdotpwxgasmfr",        VX (4, 139),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10051 {"evdotpwgssmf",          VX (4, 140),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10052 {"evdotpwxgssmf",         VX (4, 141),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10053 {"evdotpwgssmfr",         VX (4, 142),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10054 {"evdotpwxgssmfr",        VX (4, 143),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10055 {"evdotpwcssiaaw3",       VX (4, 144),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10056 {"evdotpwcsmiaaw3",       VX (4, 145),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10057 {"evdotpwcssfraaw3",      VX (4, 146),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10058 {"evdotpwcssfaaw3",       VX (4, 147),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10059 {"evdotpwgasmfaa3",       VX (4, 152),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10060 {"evdotpwxgasmfaa3",      VX (4, 153),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10061 {"evdotpwgasmfraa3",      VX (4, 154),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10062 {"evdotpwxgasmfraa3",     VX (4, 155),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10063 {"evdotpwgssmfaa3",       VX (4, 156),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10064 {"evdotpwxgssmfaa3",      VX (4, 157),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10065 {"evdotpwgssmfraa3",      VX (4, 158),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10066 {"evdotpwxgssmfraa3",     VX (4, 159),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10067 {"evdotpwcssia",          VX (4, 160),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10068 {"evdotpwcsmia",          VX (4, 161),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10069 {"evdotpwcssfra",         VX (4, 162),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10070 {"evdotpwcssfa",          VX (4, 163),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10071 {"evdotpwgasmfa",         VX (4, 168),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10072 {"evdotpwxgasmfa",        VX (4, 169),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10073 {"evdotpwgasmfra",        VX (4, 170),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10074 {"evdotpwxgasmfra",       VX (4, 171),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10075 {"evdotpwgssmfa",         VX (4, 172),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10076 {"evdotpwxgssmfa",        VX (4, 173),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10077 {"evdotpwgssmfra",        VX (4, 174),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10078 {"evdotpwxgssmfra",       VX (4, 175),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10079 {"evdotpwcssiaaw",        VX (4, 176),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10080 {"evdotpwcsmiaaw",        VX (4, 177),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10081 {"evdotpwcssfraaw",       VX (4, 178),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10082 {"evdotpwcssfaaw",        VX (4, 179),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10083 {"evdotpwgasmfaa",        VX (4, 184),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10084 {"evdotpwxgasmfaa",       VX (4, 185),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10085 {"evdotpwgasmfraa",       VX (4, 186),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10086 {"evdotpwxgasmfraa",      VX (4, 187),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10087 {"evdotpwgssmfaa",        VX (4, 188),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10088 {"evdotpwxgssmfaa",       VX (4, 189),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10089 {"evdotpwgssmfraa",       VX (4, 190),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10090 {"evdotpwxgssmfraa",      VX (4, 191),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10091 {"evdotphihcssi",         VX (4, 256),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10092 {"evdotplohcssi",         VX (4, 257),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10093 {"evdotphihcssf",         VX (4, 258),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10094 {"evdotplohcssf",         VX (4, 259),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10095 {"evdotphihcsmi",         VX (4, 264),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10096 {"evdotplohcsmi",         VX (4, 265),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10097 {"evdotphihcssfr",        VX (4, 266),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10098 {"evdotplohcssfr",        VX (4, 267),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10099 {"evdotphihcssiaaw3",     VX (4, 272),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10100 {"evdotplohcssiaaw3",     VX (4, 273),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10101 {"evdotphihcssfaaw3",     VX (4, 274),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10102 {"evdotplohcssfaaw3",     VX (4, 275),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10103 {"evdotphihcsmiaaw3",     VX (4, 280),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10104 {"evdotplohcsmiaaw3",     VX (4, 281),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10105 {"evdotphihcssfraaw3",    VX (4, 282),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10106 {"evdotplohcssfraaw3",    VX (4, 283),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10107 {"evdotphihcssia",        VX (4, 288),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10108 {"evdotplohcssia",        VX (4, 289),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10109 {"evdotphihcssfa",        VX (4, 290),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10110 {"evdotplohcssfa",        VX (4, 291),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10111 {"evdotphihcsmia",        VX (4, 296),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10112 {"evdotplohcsmia",        VX (4, 297),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10113 {"evdotphihcssfra",       VX (4, 298),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10114 {"evdotplohcssfra",       VX (4, 299),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10115 {"evdotphihcssiaaw",      VX (4, 304),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10116 {"evdotplohcssiaaw",      VX (4, 305),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10117 {"evdotphihcssfaaw",      VX (4, 306),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10118 {"evdotplohcssfaaw",      VX (4, 307),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10119 {"evdotphihcsmiaaw",      VX (4, 312),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10120 {"evdotplohcsmiaaw",      VX (4, 313),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10121 {"evdotphihcssfraaw",     VX (4, 314),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10122 {"evdotplohcssfraaw",     VX (4, 315),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10123 {"evdotphausi",           VX (4, 320),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10124 {"evdotphassi",           VX (4, 321),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10125 {"evdotphasusi",          VX (4, 322),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10126 {"evdotphassf",           VX (4, 323),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10127 {"evdotphsssf",           VX (4, 327),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10128 {"evdotphaumi",           VX (4, 328),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10129 {"evdotphasmi",           VX (4, 329),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10130 {"evdotphasumi",          VX (4, 330),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10131 {"evdotphassfr",          VX (4, 331),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10132 {"evdotphssmi",           VX (4, 333),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10133 {"evdotphsssfr",          VX (4, 335),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10134 {"evdotphausiaaw3",       VX (4, 336),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10135 {"evdotphassiaaw3",       VX (4, 337),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10136 {"evdotphasusiaaw3",      VX (4, 338),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10137 {"evdotphassfaaw3",       VX (4, 339),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10138 {"evdotphsssiaaw3",       VX (4, 341),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10139 {"evdotphsssfaaw3",       VX (4, 343),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10140 {"evdotphaumiaaw3",       VX (4, 344),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10141 {"evdotphasmiaaw3",       VX (4, 345),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10142 {"evdotphasumiaaw3",      VX (4, 346),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10143 {"evdotphassfraaw3",      VX (4, 347),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10144 {"evdotphssmiaaw3",       VX (4, 349),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10145 {"evdotphsssfraaw3",      VX (4, 351),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10146 {"evdotphausia",          VX (4, 352),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10147 {"evdotphassia",          VX (4, 353),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10148 {"evdotphasusia",         VX (4, 354),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10149 {"evdotphassfa",          VX (4, 355),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10150 {"evdotphsssfa",          VX (4, 359),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10151 {"evdotphaumia",          VX (4, 360),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10152 {"evdotphasmia",          VX (4, 361),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10153 {"evdotphasumia",         VX (4, 362),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10154 {"evdotphassfra",         VX (4, 363),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10155 {"evdotphssmia",          VX (4, 365),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10156 {"evdotphsssfra",         VX (4, 367),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10157 {"evdotphausiaaw",        VX (4, 368),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10158 {"evdotphassiaaw",        VX (4, 369),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10159 {"evdotphasusiaaw",       VX (4, 370),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10160 {"evdotphassfaaw",        VX (4, 371),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10161 {"evdotphsssiaaw",        VX (4, 373),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10162 {"evdotphsssfaaw",        VX (4, 375),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10163 {"evdotphaumiaaw",        VX (4, 376),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10164 {"evdotphasmiaaw",        VX (4, 377),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10165 {"evdotphasumiaaw",       VX (4, 378),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10166 {"evdotphassfraaw",       VX (4, 379),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10167 {"evdotphssmiaaw",        VX (4, 381),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10168 {"evdotphsssfraaw",       VX (4, 383),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10169 {"evdotp4hgaumi",         VX (4, 384),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10170 {"evdotp4hgasmi",         VX (4, 385),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10171 {"evdotp4hgasumi",        VX (4, 386),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10172 {"evdotp4hgasmf",         VX (4, 387),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10173 {"evdotp4hgssmi",         VX (4, 388),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10174 {"evdotp4hgssmf",         VX (4, 389),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10175 {"evdotp4hxgasmi",        VX (4, 390),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10176 {"evdotp4hxgasmf",        VX (4, 391),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10177 {"evdotpbaumi",           VX (4, 392),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10178 {"evdotpbasmi",           VX (4, 393),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10179 {"evdotpbasumi",          VX (4, 394),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10180 {"evdotp4hxgssmi",        VX (4, 398),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10181 {"evdotp4hxgssmf",        VX (4, 399),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10182 {"evdotp4hgaumiaa3",      VX (4, 400),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10183 {"evdotp4hgasmiaa3",      VX (4, 401),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10184 {"evdotp4hgasumiaa3",     VX (4, 402),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10185 {"evdotp4hgasmfaa3",      VX (4, 403),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10186 {"evdotp4hgssmiaa3",      VX (4, 404),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10187 {"evdotp4hgssmfaa3",      VX (4, 405),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10188 {"evdotp4hxgasmiaa3",     VX (4, 406),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10189 {"evdotp4hxgasmfaa3",     VX (4, 407),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10190 {"evdotpbaumiaaw3",       VX (4, 408),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10191 {"evdotpbasmiaaw3",       VX (4, 409),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10192 {"evdotpbasumiaaw3",      VX (4, 410),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10193 {"evdotp4hxgssmiaa3",     VX (4, 414),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10194 {"evdotp4hxgssmfaa3",     VX (4, 415),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10195 {"evdotp4hgaumia",        VX (4, 416),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10196 {"evdotp4hgasmia",        VX (4, 417),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10197 {"evdotp4hgasumia",       VX (4, 418),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10198 {"evdotp4hgasmfa",        VX (4, 419),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10199 {"evdotp4hgssmia",        VX (4, 420),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10200 {"evdotp4hgssmfa",        VX (4, 421),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10201 {"evdotp4hxgasmia",       VX (4, 422),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10202 {"evdotp4hxgasmfa",       VX (4, 423),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10203 {"evdotpbaumia",          VX (4, 424),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10204 {"evdotpbasmia",          VX (4, 425),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10205 {"evdotpbasumia",         VX (4, 426),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10206 {"evdotp4hxgssmia",       VX (4, 430),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10207 {"evdotp4hxgssmfa",       VX (4, 431),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10208 {"evdotp4hgaumiaa",       VX (4, 432),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10209 {"evdotp4hgasmiaa",       VX (4, 433),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10210 {"evdotp4hgasumiaa",      VX (4, 434),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10211 {"evdotp4hgasmfaa",       VX (4, 435),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10212 {"evdotp4hgssmiaa",       VX (4, 436),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10213 {"evdotp4hgssmfaa",       VX (4, 437),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10214 {"evdotp4hxgasmiaa",      VX (4, 438),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10215 {"evdotp4hxgasmfaa",      VX (4, 439),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10216 {"evdotpbaumiaaw",        VX (4, 440),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10217 {"evdotpbasmiaaw",        VX (4, 441),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10218 {"evdotpbasumiaaw",       VX (4, 442),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10219 {"evdotp4hxgssmiaa",      VX (4, 446),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10220 {"evdotp4hxgssmfaa",      VX (4, 447),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10221 {"evdotpwausi",           VX (4, 448),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10222 {"evdotpwassi",           VX (4, 449),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10223 {"evdotpwasusi",          VX (4, 450),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10224 {"evdotpwaumi",           VX (4, 456),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10225 {"evdotpwasmi",           VX (4, 457),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10226 {"evdotpwasumi",          VX (4, 458),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10227 {"evdotpwssmi",           VX (4, 461),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10228 {"evdotpwausiaa3",        VX (4, 464),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10229 {"evdotpwassiaa3",        VX (4, 465),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10230 {"evdotpwasusiaa3",       VX (4, 466),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10231 {"evdotpwsssiaa3",        VX (4, 469),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10232 {"evdotpwaumiaa3",        VX (4, 472),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10233 {"evdotpwasmiaa3",        VX (4, 473),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10234 {"evdotpwasumiaa3",       VX (4, 474),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10235 {"evdotpwssmiaa3",        VX (4, 477),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10236 {"evdotpwausia",          VX (4, 480),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10237 {"evdotpwassia",          VX (4, 481),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10238 {"evdotpwasusia",         VX (4, 482),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10239 {"evdotpwaumia",          VX (4, 488),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10240 {"evdotpwasmia",          VX (4, 489),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10241 {"evdotpwasumia",         VX (4, 490),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10242 {"evdotpwssmia",          VX (4, 493),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10243 {"evdotpwausiaa",         VX (4, 496),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10244 {"evdotpwassiaa",         VX (4, 497),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10245 {"evdotpwasusiaa",        VX (4, 498),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10246 {"evdotpwsssiaa",         VX (4, 501),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10247 {"evdotpwaumiaa",         VX (4, 504),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10248 {"evdotpwasmiaa",         VX (4, 505),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10249 {"evdotpwasumiaa",        VX (4, 506),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10250 {"evdotpwssmiaa",         VX (4, 509),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10251 {"evaddib",               VX (4, 515),          VX_MASK,                PPCSPE2, 0, {RD, RB, UIMM}},
10252 {"evaddih",               VX (4, 513),          VX_MASK,                PPCSPE2, 0, {RD, RB, UIMM}},
10253 {"evsubifh",              VX (4, 517),          VX_MASK,                PPCSPE2, 0, {RD, UIMM, RB}},
10254 {"evsubifb",              VX (4, 519),          VX_MASK,                PPCSPE2, 0, {RD, UIMM, RB}},
10255 {"evabsb",                VX_RB_CONST(4, 520, 2),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10256 {"evabsh",                VX_RB_CONST(4, 520, 4),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10257 {"evabsd",                VX_RB_CONST(4, 520, 6),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10258 {"evabss",                VX_RB_CONST(4, 520, 8),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10259 {"evabsbs",               VX_RB_CONST(4, 520, 10), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10260 {"evabshs",               VX_RB_CONST(4, 520, 12), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10261 {"evabsds",               VX_RB_CONST(4, 520, 14), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10262 {"evnegwo",               VX_RB_CONST(4, 521, 1),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10263 {"evnegb",                VX_RB_CONST(4, 521, 2),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10264 {"evnegbo",               VX_RB_CONST(4, 521, 3),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10265 {"evnegh",                VX_RB_CONST(4, 521, 4),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10266 {"evnegho",               VX_RB_CONST(4, 521, 5),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10267 {"evnegd",                VX_RB_CONST(4, 521, 6),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10268 {"evnegs",                VX_RB_CONST(4, 521, 8),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10269 {"evnegwos",              VX_RB_CONST(4, 521, 9),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10270 {"evnegbs",               VX_RB_CONST(4, 521, 10), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10271 {"evnegbos",              VX_RB_CONST(4, 521, 11), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10272 {"evneghs",               VX_RB_CONST(4, 521, 12), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10273 {"evneghos",              VX_RB_CONST(4, 521, 13), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10274 {"evnegds",               VX_RB_CONST(4, 521, 14), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10275 {"evextzb",               VX_RB_CONST(4, 522, 1),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10276 {"evextsbh",              VX_RB_CONST(4, 522, 4),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10277 {"evextsw",               VX_RB_CONST(4, 523, 6),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10278 {"evrndwh",               VX_RB_CONST(4, 524, 0),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10279 {"evrndhb",               VX_RB_CONST(4, 524, 4),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10280 {"evrnddw",               VX_RB_CONST(4, 524, 6),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10281 {"evrndwhus",             VX_RB_CONST(4, 524, 8),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10282 {"evrndwhss",             VX_RB_CONST(4, 524, 9),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10283 {"evrndhbus",             VX_RB_CONST(4, 524, 12), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10284 {"evrndhbss",             VX_RB_CONST(4, 524, 13), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10285 {"evrnddwus",             VX_RB_CONST(4, 524, 14), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10286 {"evrnddwss",             VX_RB_CONST(4, 524, 15), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10287 {"evrndwnh",              VX_RB_CONST(4, 524, 16), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10288 {"evrndhnb",              VX_RB_CONST(4, 524, 20), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10289 {"evrnddnw",              VX_RB_CONST(4, 524, 22), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10290 {"evrndwnhus",            VX_RB_CONST(4, 524, 24), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10291 {"evrndwnhss",            VX_RB_CONST(4, 524, 25), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10292 {"evrndhnbus",            VX_RB_CONST(4, 524, 28), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10293 {"evrndhnbss",            VX_RB_CONST(4, 524, 29), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10294 {"evrnddnwus",            VX_RB_CONST(4, 524, 30), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10295 {"evrnddnwss",            VX_RB_CONST(4, 524, 31), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10296 {"evcntlzh",              VX_RB_CONST(4, 525, 4),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10297 {"evcntlsh",              VX_RB_CONST(4, 526, 4),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10298 {"evpopcntb",             VX_RB_CONST(4, 526, 26), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10299 {"circinc",               VX (4, 528),             VX_MASK,             PPCSPE2, 0, {RD, RA, RB}},
10300 {"evunpkhibui",           VX_RB_CONST(4, 540, 0),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10301 {"evunpkhibsi",           VX_RB_CONST(4, 540, 1),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10302 {"evunpkhihui",           VX_RB_CONST(4, 540, 2),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10303 {"evunpkhihsi",           VX_RB_CONST(4, 540, 3),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10304 {"evunpklobui",           VX_RB_CONST(4, 540, 4),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10305 {"evunpklobsi",           VX_RB_CONST(4, 540, 5),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10306 {"evunpklohui",           VX_RB_CONST(4, 540, 6),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10307 {"evunpklohsi",           VX_RB_CONST(4, 540, 7),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10308 {"evunpklohf",            VX_RB_CONST(4, 540, 8),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10309 {"evunpkhihf",            VX_RB_CONST(4, 540, 9),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10310 {"evunpklowgsf",          VX_RB_CONST(4, 540, 12), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10311 {"evunpkhiwgsf",          VX_RB_CONST(4, 540, 13), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10312 {"evsatsduw",             VX_RB_CONST(4, 540, 16), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10313 {"evsatsdsw",             VX_RB_CONST(4, 540, 17), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10314 {"evsatshub",             VX_RB_CONST(4, 540, 18), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10315 {"evsatshsb",             VX_RB_CONST(4, 540, 19), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10316 {"evsatuwuh",             VX_RB_CONST(4, 540, 20), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10317 {"evsatswsh",             VX_RB_CONST(4, 540, 21), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10318 {"evsatswuh",             VX_RB_CONST(4, 540, 22), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10319 {"evsatuhub",             VX_RB_CONST(4, 540, 23), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10320 {"evsatuduw",             VX_RB_CONST(4, 540, 24), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10321 {"evsatuwsw",             VX_RB_CONST(4, 540, 25), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10322 {"evsatshuh",             VX_RB_CONST(4, 540, 26), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10323 {"evsatuhsh",             VX_RB_CONST(4, 540, 27), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10324 {"evsatswuw",             VX_RB_CONST(4, 540, 28), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10325 {"evsatswgsdf",           VX_RB_CONST(4, 540, 29), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10326 {"evsatsbub",             VX_RB_CONST(4, 540, 30), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10327 {"evsatubsb",             VX_RB_CONST(4, 540, 31), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10328 {"evmaxhpuw",             VX_RB_CONST(4, 541, 0),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10329 {"evmaxhpsw",             VX_RB_CONST(4, 541, 1),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10330 {"evmaxbpuh",             VX_RB_CONST(4, 541, 4),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10331 {"evmaxbpsh",             VX_RB_CONST(4, 541, 5),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10332 {"evmaxwpud",             VX_RB_CONST(4, 541, 6),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10333 {"evmaxwpsd",             VX_RB_CONST(4, 541, 7),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10334 {"evminhpuw",             VX_RB_CONST(4, 541, 8),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10335 {"evminhpsw",             VX_RB_CONST(4, 541, 9),  VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10336 {"evminbpuh",             VX_RB_CONST(4, 541, 12), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10337 {"evminbpsh",             VX_RB_CONST(4, 541, 13), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10338 {"evminwpud",             VX_RB_CONST(4, 541, 14), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10339 {"evminwpsd",             VX_RB_CONST(4, 541, 15), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10340 {"evmaxmagws",            VX (4, 543),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10341 {"evsl",                  VX (4, 549),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10342 {"evsli",                 VX (4, 551),          VX_MASK,                PPCSPE2, 0, {RD, RA, EVUIMM}},
10343 {"evsplatie",             VX_RB_CONST (4, 553, 1),  VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, SIMM}},
10344 {"evsplatib",             VX_RB_CONST (4, 553, 2),  VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, SIMM}},
10345 {"evsplatibe",            VX_RB_CONST (4, 553, 3),  VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, SIMM}},
10346 {"evsplatih",             VX_RB_CONST (4, 553, 4),  VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, SIMM}},
10347 {"evsplatihe",            VX_RB_CONST (4, 553, 5),  VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, SIMM}},
10348 {"evsplatid",             VX_RB_CONST (4, 553, 6),  VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, SIMM}},
10349 {"evsplatia",             VX_RB_CONST (4, 553, 16), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, SIMM}},
10350 {"evsplatiea",            VX_RB_CONST (4, 553, 17), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, SIMM}},
10351 {"evsplatiba",            VX_RB_CONST (4, 553, 18), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, SIMM}},
10352 {"evsplatibea",           VX_RB_CONST (4, 553, 19), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, SIMM}},
10353 {"evsplatiha",            VX_RB_CONST (4, 553, 20), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, SIMM}},
10354 {"evsplatihea",           VX_RB_CONST (4, 553, 21), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, SIMM}},
10355 {"evsplatida",            VX_RB_CONST (4, 553, 22), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, SIMM}},
10356 {"evsplatfio",            VX_RB_CONST (4, 555, 1),  VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, SIMM}},
10357 {"evsplatfib",            VX_RB_CONST (4, 555, 2),  VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, SIMM}},
10358 {"evsplatfibo",           VX_RB_CONST (4, 555, 3),  VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, SIMM}},
10359 {"evsplatfih",            VX_RB_CONST (4, 555, 4),  VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, SIMM}},
10360 {"evsplatfiho",           VX_RB_CONST (4, 555, 5),  VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, SIMM}},
10361 {"evsplatfid",            VX_RB_CONST (4, 555, 6),  VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, SIMM}},
10362 {"evsplatfia",            VX_RB_CONST (4, 555, 16), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, SIMM}},
10363 {"evsplatfioa",           VX_RB_CONST (4, 555, 17), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, SIMM}},
10364 {"evsplatfiba",           VX_RB_CONST (4, 555, 18), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, SIMM}},
10365 {"evsplatfiboa",          VX_RB_CONST (4, 555, 19), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, SIMM}},
10366 {"evsplatfiha",           VX_RB_CONST (4, 555, 20), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, SIMM}},
10367 {"evsplatfihoa",          VX_RB_CONST (4, 555, 21), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, SIMM}},
10368 {"evsplatfida",           VX_RB_CONST (4, 555, 22), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, SIMM}},
10369 {"evcmpgtdu",             VX_SPE_CRFD (4, 560, 1), VX_SPE_CRFD_MASK,    PPCSPE2, 0, {CRFD, RA, RB}},
10370 {"evcmpgtds",             VX_SPE_CRFD (4, 561, 1), VX_SPE_CRFD_MASK,    PPCSPE2, 0, {CRFD, RA, RB}},
10371 {"evcmpltdu",             VX_SPE_CRFD (4, 562, 1), VX_SPE_CRFD_MASK,    PPCSPE2, 0, {CRFD, RA, RB}},
10372 {"evcmpltds",             VX_SPE_CRFD (4, 563, 1), VX_SPE_CRFD_MASK,    PPCSPE2, 0, {CRFD, RA, RB}},
10373 {"evcmpeqd",              VX_SPE_CRFD (4, 564, 1), VX_SPE_CRFD_MASK,    PPCSPE2, 0, {CRFD, RA, RB}},
10374 {"evswapbhilo",           VX (4, 568),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10375 {"evswapblohi",           VX (4, 569),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10376 {"evswaphhilo",           VX (4, 570),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10377 {"evswaphlohi",           VX (4, 571),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10378 {"evswaphe",              VX (4, 572),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10379 {"evswaphhi",             VX (4, 573),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10380 {"evswaphlo",             VX (4, 574),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10381 {"evswapho",              VX (4, 575),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10382 {"evinsb",                VX (4, 584),          VX_MASK_DDD,            PPCSPE2, 0, {RD, RA, DDD, BBB}},
10383 {"evxtrb",                VX (4, 586),          VX_MASK_DDD,            PPCSPE2, 0, {RD, RA, DDD, BBB}},
10384 {"evsplath",              VX_SPE2_HH (4, 588, 0, 0), VX_SPE2_HH_MASK,   PPCSPE2, 0, {RD, RA, HH}},
10385 {"evsplatb",              VX_SPE2_SPLATB (4, 588, 2), VX_SPE2_SPLATB_MASK, PPCSPE2, 0, {RD, RA, BBB}},
10386 {"evinsh",                VX_SPE2_DDHH (4, 589, 0), VX_SPE2_DDHH_MASK,  PPCSPE2, 0, {RD, RA, DD, HH}},
10387 {"evclrbe",               VX_SPE2_CLR (4, 590, 0), VX_SPE2_CLR_MASK,    PPCSPE2, 0, {RD, RA, MMMM}},
10388 {"evclrbo",               VX_SPE2_CLR (4, 590, 1), VX_SPE2_CLR_MASK,    PPCSPE2, 0, {RD, RA, MMMM}},
10389 {"evclrh",                VX_SPE2_CLR (4, 591, 1), VX_SPE2_CLR_MASK,    PPCSPE2, 0, {RD, RA, MMMM}},
10390 {"evxtrh",                VX_SPE2_DDHH (4, 591, 0), VX_SPE2_DDHH_MASK,  PPCSPE2, 0, {RD, RA, DD, HH}},
10391 {"evselbitm0",            VX (4, 592),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10392 {"evselbitm1",            VX (4, 593),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10393 {"evselbit",              VX (4, 594),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10394 {"evperm",                VX (4, 596),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10395 {"evperm2",               VX (4, 597),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10396 {"evperm3",               VX (4, 598),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10397 {"evxtrd",                VX (4, 600),          VX_OFF_SPE2_MASK,       PPCSPE2, 0, {RD, RA, RB, VX_OFF_SPE2}},
10398 {"evsrbu",                VX (4, 608),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10399 {"evsrbs",                VX (4, 609),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10400 {"evsrbiu",               VX (4, 610),          VX_MASK,                PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
10401 {"evsrbis",               VX (4, 611),          VX_MASK,                PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
10402 {"evslb",                 VX (4, 612),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10403 {"evrlb",                 VX (4, 613),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10404 {"evslbi",                VX (4, 614),          VX_MASK,                PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
10405 {"evrlbi",                VX (4, 615),          VX_MASK,                PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
10406 {"evsrhu",                VX (4, 616),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10407 {"evsrhs",                VX (4, 617),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10408 {"evsrhiu",               VX (4, 618),          VX_MASK,                PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
10409 {"evsrhis",               VX (4, 619),          VX_MASK,                PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
10410 {"evslh",                 VX (4, 620),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10411 {"evrlh",                 VX (4, 621),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10412 {"evslhi",                VX (4, 622),          VX_MASK,                PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
10413 {"evrlhi",                VX (4, 623),          VX_MASK,                PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
10414 {"evsru",                 VX (4, 624),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10415 {"evsrs",                 VX (4, 625),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10416 {"evsriu",                VX (4, 626),          VX_MASK,                PPCSPE2, 0, {RD, RA, EVUIMM}},
10417 {"evsris",                VX (4, 627),          VX_MASK,                PPCSPE2, 0, {RD, RA, EVUIMM}},
10418 {"evlvsl",                VX (4, 628),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10419 {"evlvsr",                VX (4, 629),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10420 {"evsroiu",               VX_SPE2_OCTET (4, 631, 0), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
10421 {"evsrois",               VX_SPE2_OCTET (4, 631, 1), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
10422 {"evsloi",                VX_SPE2_OCTET (4, 631, 2), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
10423 {"evldbx",                VX (4, 774),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10424 {"evldb",                 VX (4, 775),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_8, RA}},
10425 {"evlhhsplathx",          VX (4, 778),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10426 {"evlhhsplath",           VX (4, 779),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_2, RA}},
10427 {"evlwbsplatwx",          VX (4, 786),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10428 {"evlwbsplatw",           VX (4, 787),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_4, RA}},
10429 {"evlwhsplatwx",          VX (4, 794),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10430 {"evlwhsplatw",           VX (4, 795),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_4, RA}},
10431 {"evlbbsplatbx",          VX (4, 798),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10432 {"evlbbsplatb",           VX (4, 799),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_1, RA}},
10433 {"evstdbx",               VX (4, 806),          VX_MASK,                PPCSPE2, 0, {RS, RA, RB}},
10434 {"evstdb",                VX (4, 807),          VX_MASK,                PPCSPE2, 0, {RS, EVUIMM_8, RA}},
10435 {"evlwbex",               VX (4, 810),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10436 {"evlwbe",                VX (4, 811),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_4, RA}},
10437 {"evlwboux",              VX (4, 812),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10438 {"evlwbou",               VX (4, 813),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_4, RA}},
10439 {"evlwbosx",              VX (4, 814),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10440 {"evlwbos",               VX (4, 815),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_4, RA}},
10441 {"evstwbex",              VX (4, 818),          VX_MASK,                PPCSPE2, 0, {RS, RA, RB}},
10442 {"evstwbe",               VX (4, 819),          VX_MASK,                PPCSPE2, 0, {RS, EVUIMM_4, RA}},
10443 {"evstwbox",              VX (4, 822),          VX_MASK,                PPCSPE2, 0, {RS, RA, RB}},
10444 {"evstwbo",               VX (4, 823),          VX_MASK,                PPCSPE2, 0, {RS, EVUIMM_4, RA}},
10445 {"evstwbx",               VX (4, 826),          VX_MASK,                PPCSPE2, 0, {RS, RA, RB}},
10446 {"evstwb",                VX (4, 827),          VX_MASK,                PPCSPE2, 0, {RS, EVUIMM_4, RA}},
10447 {"evsthbx",               VX (4, 830),          VX_MASK,                PPCSPE2, 0, {RS, RA, RB}},
10448 {"evsthb",                VX (4, 831),          VX_MASK,                PPCSPE2, 0, {RS, EVUIMM_2, RA}},
10449 {"evlddmx",               VX (4, 832),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10450 {"evlddu",                VX (4, 833),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
10451 {"evldwmx",               VX (4, 834),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10452 {"evldwu",                VX (4, 835),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
10453 {"evldhmx",               VX (4, 836),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10454 {"evldhu",                VX (4, 837),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
10455 {"evldbmx",               VX (4, 838),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10456 {"evldbu",                VX (4, 839),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
10457 {"evlhhesplatmx",         VX (4, 840),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10458 {"evlhhesplatu",          VX (4, 841),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
10459 {"evlhhsplathmx",         VX (4, 842),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10460 {"evlhhsplathu",          VX (4, 843),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
10461 {"evlhhousplatmx",        VX (4, 844),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10462 {"evlhhousplatu",         VX (4, 845),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
10463 {"evlhhossplatmx",        VX (4, 846),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10464 {"evlhhossplatu",         VX (4, 847),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
10465 {"evlwhemx",              VX (4, 848),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10466 {"evlwheu",               VX (4, 849),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
10467 {"evlwbsplatwmx",         VX (4, 850),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10468 {"evlwbsplatwu",          VX (4, 851),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
10469 {"evlwhoumx",             VX (4, 852),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10470 {"evlwhouu",              VX (4, 853),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
10471 {"evlwhosmx",             VX (4, 854),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10472 {"evlwhosu",              VX (4, 855),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
10473 {"evlwwsplatmx",          VX (4, 856),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10474 {"evlwwsplatu",           VX (4, 857),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
10475 {"evlwhsplatwmx",         VX (4, 858),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10476 {"evlwhsplatwu",          VX (4, 859),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
10477 {"evlwhsplatmx",          VX (4, 860),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10478 {"evlwhsplatu",           VX (4, 861),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
10479 {"evlbbsplatbmx",         VX (4, 862),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10480 {"evlbbsplatbu",          VX (4, 863),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_1_EX0, RA}},
10481 {"evstddmx",              VX (4, 864),          VX_MASK,                PPCSPE2, 0, {RS, RA, RB}},
10482 {"evstddu",               VX (4, 865),          VX_MASK,                PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
10483 {"evstdwmx",              VX (4, 866),          VX_MASK,                PPCSPE2, 0, {RS, RA, RB}},
10484 {"evstdwu",               VX (4, 867),          VX_MASK,                PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
10485 {"evstdhmx",              VX (4, 868),          VX_MASK,                PPCSPE2, 0, {RS, RA, RB}},
10486 {"evstdhu",               VX (4, 869),          VX_MASK,                PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
10487 {"evstdbmx",              VX (4, 870),          VX_MASK,                PPCSPE2, 0, {RS, RA, RB}},
10488 {"evstdbu",               VX (4, 871),          VX_MASK,                PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
10489 {"evlwbemx",              VX (4, 874),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10490 {"evlwbeu",               VX (4, 875),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
10491 {"evlwboumx",             VX (4, 876),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10492 {"evlwbouu",              VX (4, 877),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
10493 {"evlwbosmx",             VX (4, 878),          VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10494 {"evlwbosu",              VX (4, 879),          VX_MASK,                PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
10495 {"evstwhemx",             VX (4, 880),          VX_MASK,                PPCSPE2, 0, {RS, RA, RB}},
10496 {"evstwheu",              VX (4, 881),          VX_MASK,                PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
10497 {"evstwbemx",             VX (4, 882),          VX_MASK,                PPCSPE2, 0, {RS, RA, RB}},
10498 {"evstwbeu",              VX (4, 883),          VX_MASK,                PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
10499 {"evstwhomx",             VX (4, 884),          VX_MASK,                PPCSPE2, 0, {RS, RA, RB}},
10500 {"evstwhou",              VX (4, 885),          VX_MASK,                PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
10501 {"evstwbomx",             VX (4, 886),          VX_MASK,                PPCSPE2, 0, {RS, RA, RB}},
10502 {"evstwbou",              VX (4, 887),          VX_MASK,                PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
10503 {"evstwwemx",             VX (4, 888),          VX_MASK,                PPCSPE2, 0, {RS, RA, RB}},
10504 {"evstwweu",              VX (4, 889),          VX_MASK,                PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
10505 {"evstwbmx",              VX (4, 890),          VX_MASK,                PPCSPE2, 0, {RS, RA, RB}},
10506 {"evstwbu",               VX (4, 891),          VX_MASK,                PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
10507 {"evstwwomx",             VX (4, 892),          VX_MASK,                PPCSPE2, 0, {RS, RA, RB}},
10508 {"evstwwou",              VX (4, 893),          VX_MASK,                PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
10509 {"evsthbmx",              VX (4, 894),          VX_MASK,                PPCSPE2, 0, {RS, RA, RB}},
10510 {"evsthbu",               VX (4, 895),          VX_MASK,                PPCSPE2, 0, {RS, EVUIMM_2_EX0, RA}},
10511 {"evmhusi",               VX (4, 1024),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10512 {"evmhssi",               VX (4, 1025),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10513 {"evmhsusi",              VX (4, 1026),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10514 {"evmhssf",               VX (4, 1028),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10515 {"evmhumi",               VX (4, 1029),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10516 {"evmhssfr",              VX (4, 1030),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10517 {"evmhesumi",             VX (4, 1034),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10518 {"evmhosumi",             VX (4, 1038),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10519 {"evmbeumi",              VX (4, 1048),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10520 {"evmbesmi",              VX (4, 1049),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10521 {"evmbesumi",             VX (4, 1050),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10522 {"evmboumi",              VX (4, 1052),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10523 {"evmbosmi",              VX (4, 1053),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10524 {"evmbosumi",             VX (4, 1054),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10525 {"evmhesumia",            VX (4, 1066),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10526 {"evmhosumia",            VX (4, 1070),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10527 {"evmbeumia",             VX (4, 1080),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10528 {"evmbesmia",             VX (4, 1081),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10529 {"evmbesumia",            VX (4, 1082),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10530 {"evmboumia",             VX (4, 1084),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10531 {"evmbosmia",             VX (4, 1085),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10532 {"evmbosumia",            VX (4, 1086),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10533 {"evmwusiw",              VX (4, 1088),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10534 {"evmwssiw",              VX (4, 1089),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10535 {"evmwhssfr",             VX (4, 1094),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10536 {"evmwehgsmfr",           VX (4, 1110),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10537 {"evmwehgsmf",            VX (4, 1111),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10538 {"evmwohgsmfr",           VX (4, 1118),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10539 {"evmwohgsmf",            VX (4, 1119),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10540 {"evmwhssfra",            VX (4, 1126),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10541 {"evmwehgsmfra",          VX (4, 1142),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10542 {"evmwehgsmfa",           VX (4, 1143),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10543 {"evmwohgsmfra",          VX (4, 1150),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10544 {"evmwohgsmfa",           VX (4, 1151),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10545 {"evaddusiaa",            VX_RB_CONST(4, 1152, 0), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10546 {"evaddssiaa",            VX_RB_CONST(4, 1153, 0), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10547 {"evsubfusiaa",           VX_RB_CONST(4, 1154, 0), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10548 {"evsubfssiaa",           VX_RB_CONST(4, 1155, 0), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10549 {"evaddsmiaa",            VX_RB_CONST(4, 1156, 0), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10550 {"evsubfsmiaa",           VX_RB_CONST(4, 1158, 0), VX_RB_CONST_MASK,    PPCSPE2, 0, {RD, RA}},
10551 {"evaddh",                VX (4, 1160),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10552 {"evaddhss",              VX (4, 1161),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10553 {"evsubfh",               VX (4, 1162),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10554 {"evsubfhss",             VX (4, 1163),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10555 {"evaddhx",               VX (4, 1164),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10556 {"evaddhxss",             VX (4, 1165),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10557 {"evsubfhx",              VX (4, 1166),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10558 {"evsubfhxss",            VX (4, 1167),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10559 {"evaddd",                VX (4, 1168),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10560 {"evadddss",              VX (4, 1169),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10561 {"evsubfd",               VX (4, 1170),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10562 {"evsubfdss",             VX (4, 1171),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10563 {"evaddb",                VX (4, 1172),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10564 {"evaddbss",              VX (4, 1173),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10565 {"evsubfb",               VX (4, 1174),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10566 {"evsubfbss",             VX (4, 1175),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10567 {"evaddsubfh",            VX (4, 1176),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10568 {"evaddsubfhss",          VX (4, 1177),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10569 {"evsubfaddh",            VX (4, 1178),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10570 {"evsubfaddhss",          VX (4, 1179),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10571 {"evaddsubfhx",           VX (4, 1180),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10572 {"evaddsubfhxss",         VX (4, 1181),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10573 {"evsubfaddhx",           VX (4, 1182),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10574 {"evsubfaddhxss",         VX (4, 1183),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10575 {"evadddus",              VX (4, 1184),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10576 {"evaddbus",              VX (4, 1185),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10577 {"evsubfdus",             VX (4, 1186),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10578 {"evsubfbus",             VX (4, 1187),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10579 {"evaddwus",              VX (4, 1188),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10580 {"evaddwxus",             VX (4, 1189),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10581 {"evsubfwus",             VX (4, 1190),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10582 {"evsubfwxus",            VX (4, 1191),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10583 {"evadd2subf2h",          VX (4, 1192),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10584 {"evadd2subf2hss",        VX (4, 1193),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10585 {"evsubf2add2h",          VX (4, 1194),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10586 {"evsubf2add2hss",        VX (4, 1195),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10587 {"evaddhus",              VX (4, 1196),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10588 {"evaddhxus",             VX (4, 1197),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10589 {"evsubfhus",             VX (4, 1198),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10590 {"evsubfhxus",            VX (4, 1199),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10591 {"evaddwss",              VX (4, 1201),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10592 {"evsubfwss",             VX (4, 1203),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10593 {"evaddwx",               VX (4, 1204),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10594 {"evaddwxss",             VX (4, 1205),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10595 {"evsubfwx",              VX (4, 1206),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10596 {"evsubfwxss",            VX (4, 1207),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10597 {"evaddsubfw",            VX (4, 1208),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10598 {"evaddsubfwss",          VX (4, 1209),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10599 {"evsubfaddw",            VX (4, 1210),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10600 {"evsubfaddwss",          VX (4, 1211),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10601 {"evaddsubfwx",           VX (4, 1212),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10602 {"evaddsubfwxss",         VX (4, 1213),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10603 {"evsubfaddwx",           VX (4, 1214),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10604 {"evsubfaddwxss",         VX (4, 1215),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10605 {"evmar",                 VX_SPE2_EVMAR (4, 1220),  VX_SPE2_EVMAR_MASK, PPCSPE2, 0, {RD}},
10606 {"evsumwu",               VX_RB_CONST(4, 1221, 0),  VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, RA}},
10607 {"evsumws",               VX_RB_CONST(4, 1221, 1),  VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, RA}},
10608 {"evsum4bu",              VX_RB_CONST(4, 1221, 2),  VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, RA}},
10609 {"evsum4bs",              VX_RB_CONST(4, 1221, 3),  VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, RA}},
10610 {"evsum2hu",              VX_RB_CONST(4, 1221, 4),  VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, RA}},
10611 {"evsum2hs",              VX_RB_CONST(4, 1221, 5),  VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, RA}},
10612 {"evdiff2his",            VX_RB_CONST(4, 1221, 6),  VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, RA}},
10613 {"evsum2his",             VX_RB_CONST(4, 1221, 7),  VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, RA}},
10614 {"evsumwua",              VX_RB_CONST(4, 1221, 16), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, RA}},
10615 {"evsumwsa",              VX_RB_CONST(4, 1221, 17), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, RA}},
10616 {"evsum4bua",             VX_RB_CONST(4, 1221, 18), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, RA}},
10617 {"evsum4bsa",             VX_RB_CONST(4, 1221, 19), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, RA}},
10618 {"evsum2hua",             VX_RB_CONST(4, 1221, 20), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, RA}},
10619 {"evsum2hsa",             VX_RB_CONST(4, 1221, 21), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, RA}},
10620 {"evdiff2hisa",           VX_RB_CONST(4, 1221, 22), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, RA}},
10621 {"evsum2hisa",            VX_RB_CONST(4, 1221, 23), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, RA}},
10622 {"evsumwuaa",             VX_RB_CONST(4, 1221, 24), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, RA}},
10623 {"evsumwsaa",             VX_RB_CONST(4, 1221, 25), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, RA}},
10624 {"evsum4buaaw",           VX_RB_CONST(4, 1221, 26), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, RA}},
10625 {"evsum4bsaaw",           VX_RB_CONST(4, 1221, 27), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, RA}},
10626 {"evsum2huaaw",           VX_RB_CONST(4, 1221, 28), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, RA}},
10627 {"evsum2hsaaw",           VX_RB_CONST(4, 1221, 29), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, RA}},
10628 {"evdiff2hisaaw",         VX_RB_CONST(4, 1221, 30), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, RA}},
10629 {"evsum2hisaaw",          VX_RB_CONST(4, 1221, 31), VX_RB_CONST_MASK,   PPCSPE2, 0, {RD, RA}},
10630 {"evdivwsf",              VX (4, 1228),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10631 {"evdivwuf",              VX (4, 1229),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10632 {"evdivs",                VX (4, 1230),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10633 {"evdivu",                VX (4, 1231),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10634 {"evaddwegsi",            VX (4, 1232),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10635 {"evaddwegsf",            VX (4, 1233),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10636 {"evsubfwegsi",           VX (4, 1234),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10637 {"evsubfwegsf",           VX (4, 1235),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10638 {"evaddwogsi",            VX (4, 1236),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10639 {"evaddwogsf",            VX (4, 1237),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10640 {"evsubfwogsi",           VX (4, 1238),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10641 {"evsubfwogsf",           VX (4, 1239),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10642 {"evaddhhiuw",            VX (4, 1240),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10643 {"evaddhhisw",            VX (4, 1241),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10644 {"evsubfhhiuw",           VX (4, 1242),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10645 {"evsubfhhisw",           VX (4, 1243),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10646 {"evaddhlouw",            VX (4, 1244),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10647 {"evaddhlosw",            VX (4, 1245),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10648 {"evsubfhlouw",           VX (4, 1246),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10649 {"evsubfhlosw",           VX (4, 1247),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10650 {"evmhesusiaaw",          VX (4, 1282),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10651 {"evmhosusiaaw",          VX (4, 1286),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10652 {"evmhesumiaaw",          VX (4, 1290),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10653 {"evmhosumiaaw",          VX (4, 1294),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10654 {"evmbeusiaah",           VX (4, 1296),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10655 {"evmbessiaah",           VX (4, 1297),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10656 {"evmbesusiaah",          VX (4, 1298),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10657 {"evmbousiaah",           VX (4, 1300),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10658 {"evmbossiaah",           VX (4, 1301),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10659 {"evmbosusiaah",          VX (4, 1302),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10660 {"evmbeumiaah",           VX (4, 1304),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10661 {"evmbesmiaah",           VX (4, 1305),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10662 {"evmbesumiaah",          VX (4, 1306),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10663 {"evmboumiaah",           VX (4, 1308),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10664 {"evmbosmiaah",           VX (4, 1309),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10665 {"evmbosumiaah",          VX (4, 1310),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10666 {"evmwlusiaaw3",          VX (4, 1346),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10667 {"evmwlssiaaw3",          VX (4, 1347),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10668 {"evmwhssfraaw3",         VX (4, 1348),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10669 {"evmwhssfaaw3",          VX (4, 1349),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10670 {"evmwhssfraaw",          VX (4, 1350),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10671 {"evmwhssfaaw",           VX (4, 1351),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10672 {"evmwlumiaaw3",          VX (4, 1354),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10673 {"evmwlsmiaaw3",          VX (4, 1355),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10674 {"evmwusiaa",             VX (4, 1360),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10675 {"evmwssiaa",             VX (4, 1361),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10676 {"evmwehgsmfraa",         VX (4, 1366),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10677 {"evmwehgsmfaa",          VX (4, 1367),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10678 {"evmwohgsmfraa",         VX (4, 1374),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10679 {"evmwohgsmfaa",          VX (4, 1375),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10680 {"evmhesusianw",          VX (4, 1410),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10681 {"evmhosusianw",          VX (4, 1414),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10682 {"evmhesumianw",          VX (4, 1418),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10683 {"evmhosumianw",          VX (4, 1422),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10684 {"evmbeusianh",           VX (4, 1424),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10685 {"evmbessianh",           VX (4, 1425),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10686 {"evmbesusianh",          VX (4, 1426),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10687 {"evmbousianh",           VX (4, 1428),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10688 {"evmbossianh",           VX (4, 1429),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10689 {"evmbosusianh",          VX (4, 1430),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10690 {"evmbeumianh",           VX (4, 1432),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10691 {"evmbesmianh",           VX (4, 1433),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10692 {"evmbesumianh",          VX (4, 1434),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10693 {"evmboumianh",           VX (4, 1436),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10694 {"evmbosmianh",           VX (4, 1437),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10695 {"evmbosumianh",          VX (4, 1438),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10696 {"evmwlusianw3",          VX (4, 1474),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10697 {"evmwlssianw3",          VX (4, 1475),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10698 {"evmwhssfranw3",         VX (4, 1476),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10699 {"evmwhssfanw3",          VX (4, 1477),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10700 {"evmwhssfranw",          VX (4, 1478),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10701 {"evmwhssfanw",           VX (4, 1479),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10702 {"evmwlumianw3",          VX (4, 1482),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10703 {"evmwlsmianw3",          VX (4, 1483),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10704 {"evmwusian",             VX (4, 1488),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10705 {"evmwssian",             VX (4, 1489),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10706 {"evmwehgsmfran",         VX (4, 1494),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10707 {"evmwehgsmfan",          VX (4, 1495),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10708 {"evmwohgsmfran",         VX (4, 1502),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10709 {"evmwohgsmfan",          VX (4, 1503),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10710 {"evseteqb",              VX (4, 1536),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10711 {"evseteqb.",             VX (4, 1537),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10712 {"evseteqh",              VX (4, 1538),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10713 {"evseteqh.",             VX (4, 1539),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10714 {"evseteqw",              VX (4, 1540),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10715 {"evseteqw.",             VX (4, 1541),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10716 {"evsetgthu",             VX (4, 1544),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10717 {"evsetgthu.",            VX (4, 1545),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10718 {"evsetgths",             VX (4, 1546),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10719 {"evsetgths.",            VX (4, 1547),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10720 {"evsetgtwu",             VX (4, 1548),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10721 {"evsetgtwu.",            VX (4, 1549),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10722 {"evsetgtws",             VX (4, 1550),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10723 {"evsetgtws.",            VX (4, 1551),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10724 {"evsetgtbu",             VX (4, 1552),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10725 {"evsetgtbu.",            VX (4, 1553),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10726 {"evsetgtbs",             VX (4, 1554),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10727 {"evsetgtbs.",            VX (4, 1555),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10728 {"evsetltbu",             VX (4, 1556),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10729 {"evsetltbu.",            VX (4, 1557),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10730 {"evsetltbs",             VX (4, 1558),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10731 {"evsetltbs.",            VX (4, 1559),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10732 {"evsetlthu",             VX (4, 1560),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10733 {"evsetlthu.",            VX (4, 1561),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10734 {"evsetlths",             VX (4, 1562),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10735 {"evsetlths.",            VX (4, 1563),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10736 {"evsetltwu",             VX (4, 1564),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10737 {"evsetltwu.",            VX (4, 1565),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10738 {"evsetltws",             VX (4, 1566),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10739 {"evsetltws.",            VX (4, 1567),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10740 {"evsaduw",               VX (4, 1568),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10741 {"evsadsw",               VX (4, 1569),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10742 {"evsad4ub",              VX (4, 1570),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10743 {"evsad4sb",              VX (4, 1571),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10744 {"evsad2uh",              VX (4, 1572),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10745 {"evsad2sh",              VX (4, 1573),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10746 {"evsaduwa",              VX (4, 1576),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10747 {"evsadswa",              VX (4, 1577),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10748 {"evsad4uba",             VX (4, 1578),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10749 {"evsad4sba",             VX (4, 1579),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10750 {"evsad2uha",             VX (4, 1580),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10751 {"evsad2sha",             VX (4, 1581),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10752 {"evabsdifuw",            VX (4, 1584),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10753 {"evabsdifsw",            VX (4, 1585),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10754 {"evabsdifub",            VX (4, 1586),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10755 {"evabsdifsb",            VX (4, 1587),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10756 {"evabsdifuh",            VX (4, 1588),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10757 {"evabsdifsh",            VX (4, 1589),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10758 {"evsaduwaa",             VX (4, 1592),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10759 {"evsadswaa",             VX (4, 1593),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10760 {"evsad4ubaaw",           VX (4, 1594),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10761 {"evsad4sbaaw",           VX (4, 1595),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10762 {"evsad2uhaaw",           VX (4, 1596),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10763 {"evsad2shaaw",           VX (4, 1597),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10764 {"evpkshubs",             VX (4, 1600),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10765 {"evpkshsbs",             VX (4, 1601),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10766 {"evpkswuhs",             VX (4, 1602),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10767 {"evpkswshs",             VX (4, 1603),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10768 {"evpkuhubs",             VX (4, 1604),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10769 {"evpkuwuhs",             VX (4, 1605),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10770 {"evpkswshilvs",          VX (4, 1606),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10771 {"evpkswgshefrs",         VX (4, 1607),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10772 {"evpkswshfrs",           VX (4, 1608),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10773 {"evpkswshilvfrs",        VX (4, 1609),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10774 {"evpksdswfrs",           VX (4, 1610),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10775 {"evpksdshefrs",          VX (4, 1611),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10776 {"evpkuduws",             VX (4, 1612),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10777 {"evpksdsws",             VX (4, 1613),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10778 {"evpkswgswfrs",          VX (4, 1614),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10779 {"evilveh",               VX (4, 1616),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10780 {"evilveoh",              VX (4, 1617),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10781 {"evilvhih",              VX (4, 1618),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10782 {"evilvhiloh",            VX (4, 1619),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10783 {"evilvloh",              VX (4, 1620),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10784 {"evilvlohih",            VX (4, 1621),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10785 {"evilvoeh",              VX (4, 1622),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10786 {"evilvoh",               VX (4, 1623),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10787 {"evdlveb",               VX (4, 1624),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10788 {"evdlveh",               VX (4, 1625),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10789 {"evdlveob",              VX (4, 1626),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10790 {"evdlveoh",              VX (4, 1627),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10791 {"evdlvob",               VX (4, 1628),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10792 {"evdlvoh",               VX (4, 1629),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10793 {"evdlvoeb",              VX (4, 1630),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10794 {"evdlvoeh",              VX (4, 1631),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10795 {"evmaxbu",               VX (4, 1632),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10796 {"evmaxbs",               VX (4, 1633),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10797 {"evmaxhu",               VX (4, 1634),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10798 {"evmaxhs",               VX (4, 1635),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10799 {"evmaxwu",               VX (4, 1636),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10800 {"evmaxws",               VX (4, 1637),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10801 {"evmaxdu",               VX (4, 1638),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10802 {"evmaxds",               VX (4, 1639),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10803 {"evminbu",               VX (4, 1640),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10804 {"evminbs",               VX (4, 1641),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10805 {"evminhu",               VX (4, 1642),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10806 {"evminhs",               VX (4, 1643),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10807 {"evminwu",               VX (4, 1644),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10808 {"evminws",               VX (4, 1645),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10809 {"evmindu",               VX (4, 1646),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10810 {"evminds",               VX (4, 1647),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10811 {"evavgwu",               VX (4, 1648),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10812 {"evavgws",               VX (4, 1649),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10813 {"evavgbu",               VX (4, 1650),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10814 {"evavgbs",               VX (4, 1651),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10815 {"evavghu",               VX (4, 1652),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10816 {"evavghs",               VX (4, 1653),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10817 {"evavgdu",               VX (4, 1654),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10818 {"evavgds",               VX (4, 1655),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10819 {"evavgwur",              VX (4, 1656),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10820 {"evavgwsr",              VX (4, 1657),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10821 {"evavgbur",              VX (4, 1658),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10822 {"evavgbsr",              VX (4, 1659),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10823 {"evavghur",              VX (4, 1660),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10824 {"evavghsr",              VX (4, 1661),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10825 {"evavgdur",              VX (4, 1662),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10826 {"evavgdsr",              VX (4, 1663),         VX_MASK,                PPCSPE2, 0, {RD, RA, RB}},
10827 };
10828
10829 const unsigned int spe2_num_opcodes =
10830   sizeof (spe2_opcodes) / sizeof (spe2_opcodes[0]);
This page took 0.718982 seconds and 4 git commands to generate.