]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - opcodes/ppc-opc.c
Update year range in copyright notice of binutils files
[thirdparty/binutils-gdb.git] / opcodes / ppc-opc.c
CommitLineData
252b5132 1/* ppc-opc.c -- PowerPC opcode list
a2c58332 2 Copyright (C) 1994-2022 Free Software Foundation, Inc.
252b5132
RH
3 Written by Ian Lance Taylor, Cygnus Support
4
9b201bb5 5 This file is part of the GNU opcodes library.
252b5132 6
9b201bb5
NC
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.
252b5132 11
9b201bb5
NC
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.
252b5132 16
112290ab 17 You should have received a copy of the GNU General Public License
9b201bb5
NC
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. */
252b5132 21
0d8dfecf 22#include "sysdep.h"
df7b86aa 23#include <stdio.h>
252b5132
RH
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
b80c7270 32 the text segment.
252b5132
RH
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. */
252b5132 37
b80c7270 38/* The functions used to insert and extract complicated operands. */
252b5132 39
b80c7270 40/* The ARX, ARY, RX and RY operands are alternate encodings of GPRs. */
252b5132 41
0f873fd5
PB
42static uint64_t
43insert_arx (uint64_t insn,
44 int64_t value,
b80c7270
AM
45 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
46 const char **errmsg ATTRIBUTE_UNUSED)
252b5132 47{
71553718
AM
48 value -= 8;
49 if (value < 0 || value >= 16)
b80c7270
AM
50 {
51 *errmsg = _("invalid register");
71553718 52 value = 0xf;
b80c7270 53 }
71553718 54 return insn | value;
b80c7270 55}
b9c361e0 56
0f873fd5
PB
57static int64_t
58extract_arx (uint64_t insn,
b80c7270
AM
59 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
60 int *invalid ATTRIBUTE_UNUSED)
61{
62 return (insn & 0xf) + 8;
63}
b9c361e0 64
0f873fd5
PB
65static uint64_t
66insert_ary (uint64_t insn,
67 int64_t value,
b80c7270
AM
68 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
69 const char **errmsg ATTRIBUTE_UNUSED)
70{
71553718
AM
71 value -= 8;
72 if (value < 0 || value >= 16)
b80c7270
AM
73 {
74 *errmsg = _("invalid register");
71553718 75 value = 0xf;
b80c7270 76 }
71553718 77 return insn | (value << 4);
b80c7270 78}
23976049 79
0f873fd5
PB
80static int64_t
81extract_ary (uint64_t insn,
b80c7270
AM
82 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
83 int *invalid ATTRIBUTE_UNUSED)
84{
85 return ((insn >> 4) & 0xf) + 8;
86}
418c1742 87
0f873fd5
PB
88static uint64_t
89insert_rx (uint64_t insn,
90 int64_t value,
b80c7270
AM
91 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
92 const char **errmsg)
93{
94 if (value >= 0 && value < 8)
71553718 95 ;
b80c7270 96 else if (value >= 24 && value <= 31)
71553718 97 value -= 16;
b80c7270
AM
98 else
99 {
100 *errmsg = _("invalid register");
71553718 101 value = 0xf;
b80c7270 102 }
71553718 103 return insn | value;
b80c7270 104}
252b5132 105
0f873fd5
PB
106static int64_t
107extract_rx (uint64_t insn,
b80c7270
AM
108 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
109 int *invalid ATTRIBUTE_UNUSED)
110{
0f873fd5 111 int64_t value = insn & 0xf;
b80c7270
AM
112 if (value >= 0 && value < 8)
113 return value;
114 else
115 return value + 16;
116}
b9c361e0 117
0f873fd5
PB
118static uint64_t
119insert_ry (uint64_t insn,
120 int64_t value,
b80c7270
AM
121 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
122 const char **errmsg)
123{
124 if (value >= 0 && value < 8)
71553718 125 ;
b80c7270 126 else if (value >= 24 && value <= 31)
71553718 127 value -= 16;
b80c7270
AM
128 else
129 {
130 *errmsg = _("invalid register");
71553718 131 value = 0xf;
b80c7270 132 }
71553718 133 return insn | (value << 4);
b80c7270 134}
a680de9a 135
0f873fd5
PB
136static int64_t
137extract_ry (uint64_t insn,
b80c7270
AM
138 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
139 int *invalid ATTRIBUTE_UNUSED)
140{
0f873fd5 141 int64_t value = (insn >> 4) & 0xf;
b80c7270
AM
142 if (value >= 0 && value < 8)
143 return value;
144 else
145 return value + 16;
146}
a680de9a 147
98553ad3
PB
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. */
adadcc0c 152
0f873fd5 153static uint64_t
98553ad3
PB
154insert_bab (uint64_t insn,
155 int64_t value,
b80c7270
AM
156 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
157 const char **errmsg ATTRIBUTE_UNUSED)
158{
98553ad3
PB
159 value &= 0x1f;
160 return insn | (value << 16) | (value << 11);
b80c7270 161}
252b5132 162
0f873fd5 163static int64_t
98553ad3 164extract_bab (uint64_t insn,
b80c7270
AM
165 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
166 int *invalid)
167{
98553ad3
PB
168 int64_t ba = (insn >> 16) & 0x1f;
169 int64_t bb = (insn >> 11) & 0x1f;
170
171 if (ba != bb)
b80c7270 172 *invalid = 1;
98553ad3 173 return ba;
b80c7270 174}
19a6653c 175
98553ad3
PB
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. */
a680de9a 179
0f873fd5 180static uint64_t
98553ad3
PB
181insert_btab (uint64_t insn,
182 int64_t value,
183 ppc_cpu_t dialect,
184 const char **errmsg)
b80c7270 185{
98553ad3
PB
186 value &= 0x1f;
187 return (value << 21) | insert_bab (insn, value, dialect, errmsg);
b80c7270 188}
a680de9a 189
0f873fd5 190static int64_t
98553ad3
PB
191extract_btab (uint64_t insn,
192 ppc_cpu_t dialect,
b80c7270
AM
193 int *invalid)
194{
98553ad3
PB
195 int64_t bt = (insn >> 21) & 0x1f;
196 int64_t bab = extract_bab (insn, dialect, invalid);
197
198 if (bt != bab)
b80c7270 199 *invalid = 1;
98553ad3 200 return bt;
b80c7270 201}
252b5132 202
b80c7270
AM
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. */
252b5132 219
b80c7270 220#define ISA_V2 (PPC_OPCODE_POWER4 | PPC_OPCODE_E500MC | PPC_OPCODE_TITAN)
252b5132 221
0f873fd5
PB
222static uint64_t
223insert_bdm (uint64_t insn,
224 int64_t value,
b80c7270
AM
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}
252b5132 242
0f873fd5
PB
243static int64_t
244extract_bdm (uint64_t insn,
b80c7270
AM
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 }
252b5132 259
b80c7270
AM
260 return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
261}
989993d8 262
b80c7270
AM
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. */
252b5132 266
0f873fd5
PB
267static uint64_t
268insert_bdp (uint64_t insn,
269 int64_t value,
b80c7270
AM
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}
989993d8 287
0f873fd5
PB
288static int64_t
289extract_bdp (uint64_t insn,
b80c7270
AM
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 }
252b5132 304
b80c7270
AM
305 return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
306}
252b5132 307
b80c7270 308static inline int
0f873fd5 309valid_bo_pre_v2 (int64_t value)
b80c7270
AM
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)
aae9718e 324 /* BO: 0000y, 0001y, 0100y, 0101y. */
b80c7270
AM
325 return 1;
326 else if ((value & 0x14) == 0x4)
aae9718e 327 /* BO: 001zy, 011zy. */
b80c7270
AM
328 return (value & 0x2) == 0;
329 else if ((value & 0x14) == 0x10)
aae9718e 330 /* BO: 1z00y, 1z01y. */
b80c7270
AM
331 return (value & 0x8) == 0;
332 else
aae9718e 333 /* BO: 1z1zz. */
b80c7270
AM
334 return value == 0x14;
335}
989993d8 336
b80c7270 337static inline int
0f873fd5 338valid_bo_post_v2 (int64_t value)
b80c7270
AM
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)
aae9718e 353 /* BO: 0000z, 0001z, 0100z, 0101z. */
b80c7270
AM
354 return (value & 0x1) == 0;
355 else if ((value & 0x14) == 0x14)
aae9718e 356 /* BO: 1z1zz. */
b80c7270 357 return value == 0x14;
aae9718e
PB
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;
b80c7270
AM
364 else
365 return 1;
366}
c168870a 367
b80c7270 368/* Check for legal values of a BO field. */
252b5132 369
b80c7270 370static int
0f873fd5 371valid_bo (int64_t value, ppc_cpu_t dialect, int extract)
b80c7270
AM
372{
373 int valid_y = valid_bo_pre_v2 (value);
374 int valid_at = valid_bo_post_v2 (value);
b9c361e0 375
b80c7270
AM
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}
a5721ba2 385
b80c7270
AM
386/* The BO field in a B form instruction. Warn about attempts to set
387 the field to an illegal value. */
252b5132 388
0f873fd5
PB
389static uint64_t
390insert_bo (uint64_t insn,
391 int64_t value,
b80c7270
AM
392 ppc_cpu_t dialect,
393 const char **errmsg)
394{
395 if (!valid_bo (value, dialect, 0))
396 *errmsg = _("invalid conditional option");
aae9718e
PB
397 else if (PPC_OP (insn) == 19
398 && (((insn >> 1) & 0x3ff) == 528) && ! (value & 4))
b80c7270
AM
399 *errmsg = _("invalid counter access");
400 return insn | ((value & 0x1f) << 21);
401}
a680de9a 402
0f873fd5
PB
403static int64_t
404extract_bo (uint64_t insn,
b80c7270
AM
405 ppc_cpu_t dialect,
406 int *invalid)
407{
0f873fd5 408 int64_t value = (insn >> 21) & 0x1f;
b80c7270
AM
409 if (!valid_bo (value, dialect, 1))
410 *invalid = 1;
411 return value;
412}
252b5132 413
aae9718e
PB
414/* For the given BO value, return a bit mask detailing which bits
415 define the branch hints. */
416
417static int64_t
418get_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. */
1ed8e1e4 444
0f873fd5
PB
445static uint64_t
446insert_boe (uint64_t insn,
447 int64_t value,
b80c7270 448 ppc_cpu_t dialect,
aae9718e
PB
449 const char **errmsg,
450 int branch_taken)
b80c7270 451{
aae9718e
PB
452 int64_t implied_hint;
453 int64_t hint_mask = get_bo_hint_mask (value, dialect);
252b5132 454
aae9718e
PB
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);
b80c7270 476}
252b5132 477
0f873fd5
PB
478static int64_t
479extract_boe (uint64_t insn,
b80c7270 480 ppc_cpu_t dialect,
aae9718e
PB
481 int *invalid,
482 int branch_taken)
b80c7270 483{
0f873fd5 484 int64_t value = (insn >> 21) & 0x1f;
aae9718e
PB
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)
b80c7270 496 *invalid = 1;
aae9718e
PB
497 return value;
498}
499
500/* The BO field in a B form instruction when the - modifier is used. */
501
502static uint64_t
503insert_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
511static int64_t
512extract_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
521static uint64_t
522insert_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
530static int64_t
531extract_bop (uint64_t insn,
532 ppc_cpu_t dialect,
533 int *invalid)
534{
535 return extract_boe (insn, dialect, invalid, 1);
b80c7270 536}
252b5132 537
b80c7270
AM
538/* The DCMX field in a X form instruction when the field is split
539 into separate DC, DM and DX fields. */
252b5132 540
0f873fd5
PB
541static uint64_t
542insert_dcmxs (uint64_t insn,
543 int64_t value,
b80c7270
AM
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}
252b5132 552
0f873fd5
PB
553static int64_t
554extract_dcmxs (uint64_t insn,
b80c7270
AM
555 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
556 int *invalid ATTRIBUTE_UNUSED)
557{
558 return (insn & 0x40) | ((insn << 3) & 0x20) | ((insn >> 16) & 0x1f);
559}
252b5132 560
aae7fcb8
PB
561/* The DW field in a X form instruction when the field is split
562 into separate D and DX fields. */
563
564static uint64_t
565insert_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
580static int64_t
581extract_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
b80c7270
AM
589/* The D field in a DX form instruction when the field is split
590 into separate D0, D1 and D2 fields. */
989993d8 591
0f873fd5
PB
592static uint64_t
593insert_dxd (uint64_t insn,
594 int64_t value,
b80c7270
AM
595 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
596 const char **errmsg ATTRIBUTE_UNUSED)
597{
598 return insn | (value & 0xffc1) | ((value & 0x3e) << 15);
599}
e43de63c 600
0f873fd5
PB
601static int64_t
602extract_dxd (uint64_t insn,
b80c7270
AM
603 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
604 int *invalid ATTRIBUTE_UNUSED)
605{
0f873fd5 606 uint64_t dxd = (insn & 0xffc1) | ((insn >> 15) & 0x3e);
b80c7270
AM
607 return (dxd ^ 0x8000) - 0x8000;
608}
252b5132 609
0f873fd5
PB
610static uint64_t
611insert_dxdn (uint64_t insn,
612 int64_t value,
b80c7270
AM
613 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
614 const char **errmsg ATTRIBUTE_UNUSED)
615{
616 return insert_dxd (insn, -value, dialect, errmsg);
617}
252b5132 618
0f873fd5
PB
619static int64_t
620extract_dxdn (uint64_t insn,
b80c7270 621 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
9cf7e568 622 int *invalid)
b80c7270
AM
623{
624 return -extract_dxd (insn, dialect, invalid);
625}
fdd12ef3 626
8acf1435
PB
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
630static uint64_t
631insert_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
639static int64_t
640extract_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
655static uint64_t
656insert_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
664static int64_t
665extract_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
6edbfd3b
AM
674/* The split IMM32 field in a vector splat insn. */
675
676static uint64_t
677insert_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
685static int64_t
686extract_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
8acf1435
PB
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
696static uint64_t
697insert_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
710static int64_t
711extract_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
735static int64_t
736extract_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
b80c7270 746/* FXM mask in mfcr and mtcrf instructions. */
adadcc0c 747
0f873fd5
PB
748static uint64_t
749insert_fxm (uint64_t insn,
750 int64_t value,
b80c7270
AM
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 }
252b5132 764
b80c7270
AM
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;
252b5132 776
b80c7270
AM
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 }
252b5132 786
b80c7270
AM
787 return insn | ((value & 0xff) << 12);
788}
1f6c9eb0 789
0f873fd5
PB
790static int64_t
791extract_fxm (uint64_t insn,
b80c7270
AM
792 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
793 int *invalid)
794{
9cf7e568
AM
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;
252b5132 799
9cf7e568 800 int64_t mask = (insn >> 12) & 0xff;
b80c7270
AM
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 }
252b5132 808
b80c7270
AM
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 }
989993d8 817
b80c7270
AM
818 return mask;
819}
cee62821 820
afef4fe9
PB
821/* L field in the paste. instruction. */
822
823static uint64_t
824insert_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
832static int64_t
833extract_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
0f873fd5
PB
844static uint64_t
845insert_li20 (uint64_t insn,
846 int64_t value,
b80c7270
AM
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}
a680de9a 855
0f873fd5
PB
856static int64_t
857extract_li20 (uint64_t insn,
b80c7270
AM
858 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
859 int *invalid ATTRIBUTE_UNUSED)
860{
f143cb5f
AM
861 return ((((insn << 5) & 0xf0000)
862 | ((insn >> 5) & 0xf800)
863 | (insn & 0x7ff)) ^ 0x80000) - 0x80000;
b80c7270 864}
e3c2f928 865
3d205eb4 866/* The 2-bit/3-bit L or 2-bit WC field in a SYNC, DCBF or WAIT instruction.
b80c7270 867 For SYNC, some L values are reserved:
3d205eb4
PB
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. */
adadcc0c 876
0f873fd5
PB
877static uint64_t
878insert_ls (uint64_t insn,
879 int64_t value,
b80c7270
AM
880 ppc_cpu_t dialect,
881 const char **errmsg)
882{
3d205eb4
PB
883 int64_t mask;
884
b80c7270
AM
885 if (((insn >> 1) & 0x3ff) == 598)
886 {
3d205eb4
PB
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 }
b80c7270 947 }
1f6c9eb0 948
3d205eb4 949 return insn | ((value & mask) << 21);
b80c7270 950}
b9c361e0 951
0f873fd5
PB
952static int64_t
953extract_ls (uint64_t insn,
b80c7270
AM
954 ppc_cpu_t dialect,
955 int *invalid)
956{
3d205eb4
PB
957 uint64_t value;
958
9cf7e568
AM
959 /* Missing optional operands have a value of zero. */
960 if (*invalid < 0)
961 return 0;
b9c361e0 962
b80c7270
AM
963 if (((insn >> 1) & 0x3ff) == 598)
964 {
3d205eb4
PB
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 }
b80c7270 1000 }
3d205eb4
PB
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;
b80c7270 1023}
b9c361e0 1024
b80c7270
AM
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. */
b9c361e0 1028
0f873fd5
PB
1029static uint64_t
1030insert_esync (uint64_t insn,
1031 int64_t value,
9cf7e568 1032 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
b80c7270
AM
1033 const char **errmsg)
1034{
0f873fd5 1035 uint64_t ls = (insn >> 21) & 0x03;
b9c361e0 1036
9cf7e568
AM
1037 if (value != 0
1038 && ((~value >> 1) & 0x1) != ls)
b80c7270 1039 *errmsg = _("incompatible L operand value");
b9c361e0 1040
b80c7270
AM
1041 return insn | ((value & 0xf) << 16);
1042}
b9c361e0 1043
0f873fd5
PB
1044static int64_t
1045extract_esync (uint64_t insn,
9cf7e568 1046 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
b80c7270
AM
1047 int *invalid)
1048{
8acf1435 1049 /* Missing optional operands have a value of zero. */
9cf7e568
AM
1050 if (*invalid < 0)
1051 return 0;
b9c361e0 1052
9cf7e568
AM
1053 uint64_t ls = (insn >> 21) & 0x3;
1054 uint64_t value = (insn >> 16) & 0xf;
1055 if (value != 0
1056 && ((~value >> 1) & 0x1) != ls)
b80c7270 1057 *invalid = 1;
9cf7e568 1058 return value;
b80c7270 1059}
e3c2f928 1060
b80c7270
AM
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. */
5817ffd1 1065
0f873fd5
PB
1066static uint64_t
1067insert_mbe (uint64_t insn,
1068 int64_t value,
b80c7270
AM
1069 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1070 const char **errmsg)
1071{
0f873fd5
PB
1072 uint64_t uval, mask;
1073 long mb, me, mx, count, last;
252b5132 1074
b80c7270 1075 uval = value;
1f6c9eb0 1076
b80c7270
AM
1077 if (uval == 0)
1078 {
1079 *errmsg = _("illegal bitmask");
1080 return insn;
1081 }
252b5132 1082
b80c7270
AM
1083 mb = 0;
1084 me = 32;
1085 if ((uval & 1) != 0)
1086 last = 1;
1087 else
1088 last = 0;
1089 count = 0;
252b5132 1090
b80c7270
AM
1091 /* mb: location of last 0->1 transition */
1092 /* me: location of last 1->0 transition */
1093 /* count: # transitions */
b9c361e0 1094
0f873fd5 1095 for (mx = 0, mask = (uint64_t) 1 << 31; mx < 32; ++mx, mask >>= 1)
b80c7270
AM
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;
252b5132 1112
b80c7270
AM
1113 if (count != 2 && (count != 0 || ! last))
1114 *errmsg = _("illegal bitmask");
252b5132 1115
b80c7270
AM
1116 return insn | (mb << 6) | ((me - 1) << 1);
1117}
252b5132 1118
0f873fd5
PB
1119static int64_t
1120extract_mbe (uint64_t insn,
b80c7270
AM
1121 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1122 int *invalid)
1123{
0f873fd5
PB
1124 int64_t ret;
1125 long mb, me;
1126 long i;
252b5132 1127
b80c7270 1128 *invalid = 1;
f5c120c5 1129
b80c7270
AM
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++)
0f873fd5 1136 ret |= (uint64_t) 1 << (31 - i);
b80c7270
AM
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++)
0f873fd5 1144 ret &= ~((uint64_t) 1 << (31 - i));
b80c7270
AM
1145 }
1146 return ret;
1147}
aea77599 1148
b80c7270
AM
1149/* The MB or ME field in an MD or MDS form instruction. The high bit
1150 is wrapped to the low end. */
252b5132 1151
0f873fd5
PB
1152static uint64_t
1153insert_mb6 (uint64_t insn,
1154 int64_t value,
b80c7270
AM
1155 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1156 const char **errmsg ATTRIBUTE_UNUSED)
1157{
1158 return insn | ((value & 0x1f) << 6) | (value & 0x20);
1159}
252b5132 1160
0f873fd5
PB
1161static int64_t
1162extract_mb6 (uint64_t insn,
b80c7270
AM
1163 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1164 int *invalid ATTRIBUTE_UNUSED)
1165{
1166 return ((insn >> 6) & 0x1f) | (insn & 0x20);
1167}
252b5132 1168
b80c7270
AM
1169/* The NB field in an X form instruction. The value 32 is stored as
1170 0. */
786e2c0f 1171
0f873fd5
PB
1172static int64_t
1173extract_nb (uint64_t insn,
b80c7270
AM
1174 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1175 int *invalid ATTRIBUTE_UNUSED)
1176{
0f873fd5 1177 int64_t ret;
a47622ac 1178
b80c7270
AM
1179 ret = (insn >> 11) & 0x1f;
1180 if (ret == 0)
1181 ret = 32;
1182 return ret;
1183}
b9c361e0 1184
b80c7270
AM
1185/* The NB field in an lswi instruction, which has special value
1186 restrictions. The value 32 is stored as 0. */
b9c361e0 1187
0f873fd5
PB
1188static uint64_t
1189insert_nbi (uint64_t insn,
1190 int64_t value,
b80c7270
AM
1191 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1192 const char **errmsg ATTRIBUTE_UNUSED)
1193{
0f873fd5
PB
1194 int64_t rtvalue = (insn >> 21) & 0x1f;
1195 int64_t ravalue = (insn >> 16) & 0x1f;
b9c361e0 1196
b80c7270
AM
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}
786e2c0f 1204
b80c7270
AM
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. */
786e2c0f 1209
0f873fd5
PB
1210static uint64_t
1211insert_nsi (uint64_t insn,
1212 int64_t value,
b80c7270
AM
1213 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1214 const char **errmsg ATTRIBUTE_UNUSED)
1215{
1216 return insn | (-value & 0xffff);
1217}
786e2c0f 1218
0f873fd5
PB
1219static int64_t
1220extract_nsi (uint64_t insn,
b80c7270
AM
1221 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1222 int *invalid)
1223{
1224 *invalid = 1;
1225 return -(((insn & 0xffff) ^ 0x8000) - 0x8000);
1226}
786e2c0f 1227
3d205eb4
PB
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
1232static uint64_t
1233insert_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
1245static int64_t
1246extract_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
b80c7270
AM
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. */
786e2c0f 1266
0f873fd5
PB
1267static uint64_t
1268insert_ral (uint64_t insn,
1269 int64_t value,
b80c7270
AM
1270 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1271 const char **errmsg)
1272{
1273 if (value == 0
0f873fd5 1274 || (uint64_t) value == ((insn >> 21) & 0x1f))
b80c7270
AM
1275 *errmsg = "invalid register operand when updating";
1276 return insn | ((value & 0x1f) << 16);
1277}
786e2c0f 1278
0f873fd5
PB
1279static int64_t
1280extract_ral (uint64_t insn,
b80c7270
AM
1281 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1282 int *invalid)
1283{
0f873fd5
PB
1284 int64_t rtvalue = (insn >> 21) & 0x1f;
1285 int64_t ravalue = (insn >> 16) & 0x1f;
fb048c26 1286
b80c7270
AM
1287 if (rtvalue == ravalue || ravalue == 0)
1288 *invalid = 1;
1289 return ravalue;
1290}
a680de9a 1291
b80c7270
AM
1292/* The RA field in an lmw instruction, which has special value
1293 restrictions. */
c0637f3a 1294
0f873fd5
PB
1295static uint64_t
1296insert_ram (uint64_t insn,
1297 int64_t value,
b80c7270
AM
1298 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1299 const char **errmsg)
1300{
0f873fd5 1301 if ((uint64_t) value >= ((insn >> 21) & 0x1f))
b80c7270
AM
1302 *errmsg = _("index register in load range");
1303 return insn | ((value & 0x1f) << 16);
1304}
c0637f3a 1305
0f873fd5
PB
1306static int64_t
1307extract_ram (uint64_t insn,
b80c7270
AM
1308 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1309 int *invalid)
1310{
0f873fd5
PB
1311 uint64_t rtvalue = (insn >> 21) & 0x1f;
1312 uint64_t ravalue = (insn >> 16) & 0x1f;
ff3a6ee3 1313
b80c7270
AM
1314 if (ravalue >= rtvalue)
1315 *invalid = 1;
1316 return ravalue;
1317}
23976049 1318
b80c7270
AM
1319/* The RA field in the DQ form lq or an lswx instruction, which have special
1320 value restrictions. */
e3c2f928 1321
0f873fd5
PB
1322static uint64_t
1323insert_raq (uint64_t insn,
1324 int64_t value,
b80c7270
AM
1325 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1326 const char **errmsg)
1327{
0f873fd5 1328 int64_t rtvalue = (insn >> 21) & 0x1f;
23976049 1329
b80c7270
AM
1330 if (value == rtvalue)
1331 *errmsg = _("source and target register operands must be different");
1332 return insn | ((value & 0x1f) << 16);
1333}
e3c2f928 1334
0f873fd5
PB
1335static int64_t
1336extract_raq (uint64_t insn,
b80c7270
AM
1337 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1338 int *invalid)
1339{
8acf1435 1340 /* Missing optional operands have a value of zero. */
9cf7e568
AM
1341 if (*invalid < 0)
1342 return 0;
1343
0f873fd5
PB
1344 uint64_t rtvalue = (insn >> 21) & 0x1f;
1345 uint64_t ravalue = (insn >> 16) & 0x1f;
b80c7270
AM
1346 if (ravalue == rtvalue)
1347 *invalid = 1;
1348 return ravalue;
1349}
e3c2f928 1350
b80c7270
AM
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. */
ff3a6ee3 1354
0f873fd5
PB
1355static uint64_t
1356insert_ras (uint64_t insn,
1357 int64_t value,
b80c7270
AM
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}
c3d65c1c 1365
0f873fd5
PB
1366static int64_t
1367extract_ras (uint64_t insn,
b80c7270
AM
1368 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1369 int *invalid)
1370{
0f873fd5 1371 uint64_t ravalue = (insn >> 16) & 0x1f;
c3d65c1c 1372
b80c7270
AM
1373 if (ravalue == 0)
1374 *invalid = 1;
1375 return ravalue;
1376}
c3d65c1c 1377
98553ad3
PB
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. */
c3d65c1c 1381
0f873fd5 1382static uint64_t
98553ad3
PB
1383insert_rsb (uint64_t insn,
1384 int64_t value,
b80c7270
AM
1385 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1386 const char **errmsg ATTRIBUTE_UNUSED)
1387{
98553ad3
PB
1388 value &= 0x1f;
1389 return insn | (value << 21) | (value << 11);
b80c7270 1390}
5ae2e65e 1391
0f873fd5 1392static int64_t
98553ad3 1393extract_rsb (uint64_t insn,
b80c7270
AM
1394 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1395 int *invalid)
1396{
98553ad3
PB
1397 int64_t rs = (insn >> 21) & 0x1f;
1398 int64_t rb = (insn >> 11) & 0x1f;
1399
1400 if (rs != rb)
b80c7270 1401 *invalid = 1;
98553ad3 1402 return rs;
b80c7270 1403}
702f0fb4 1404
b80c7270
AM
1405/* The RB field in an lswx instruction, which has special value
1406 restrictions. */
702f0fb4 1407
0f873fd5
PB
1408static uint64_t
1409insert_rbx (uint64_t insn,
1410 int64_t value,
b80c7270
AM
1411 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1412 const char **errmsg)
1413{
0f873fd5 1414 int64_t rtvalue = (insn >> 21) & 0x1f;
a680de9a 1415
b80c7270
AM
1416 if (value == rtvalue)
1417 *errmsg = _("source and target register operands must be different");
1418 return insn | ((value & 0x1f) << 11);
1419}
a680de9a 1420
0f873fd5
PB
1421static int64_t
1422extract_rbx (uint64_t insn,
b80c7270
AM
1423 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1424 int *invalid)
1425{
0f873fd5
PB
1426 uint64_t rtvalue = (insn >> 21) & 0x1f;
1427 uint64_t rbvalue = (insn >> 11) & 0x1f;
702f0fb4 1428
b80c7270
AM
1429 if (rbvalue == rtvalue)
1430 *invalid = 1;
1431 return rbvalue;
1432}
702f0fb4 1433
b80c7270 1434/* The SCI8 field is made up of SCL and {U,N}I8 fields. */
0f873fd5
PB
1435static uint64_t
1436insert_sci8 (uint64_t insn,
1437 int64_t value,
b80c7270
AM
1438 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1439 const char **errmsg)
1440{
0f873fd5
PB
1441 uint64_t fill_scale = 0;
1442 uint64_t ui8 = value;
c0637f3a 1443
b80c7270
AM
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 }
702f0fb4 1483
b80c7270
AM
1484 return insn | fill_scale | (ui8 & 0xff);
1485}
ea192fa3 1486
0f873fd5
PB
1487static int64_t
1488extract_sci8 (uint64_t insn,
b80c7270
AM
1489 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1490 int *invalid ATTRIBUTE_UNUSED)
1491{
0f873fd5
PB
1492 int64_t fill = insn & 0x400;
1493 int64_t scale_factor = (insn & 0x300) >> 5;
1494 int64_t value = (insn & 0xff) << scale_factor;
081ba1b3 1495
b80c7270 1496 if (fill != 0)
0f873fd5 1497 value |= ~((int64_t) 0xff << scale_factor);
b80c7270
AM
1498 return value;
1499}
081ba1b3 1500
0f873fd5
PB
1501static uint64_t
1502insert_sci8n (uint64_t insn,
1503 int64_t value,
b80c7270
AM
1504 ppc_cpu_t dialect,
1505 const char **errmsg)
1506{
1507 return insert_sci8 (insn, -value, dialect, errmsg);
1508}
081ba1b3 1509
0f873fd5
PB
1510static int64_t
1511extract_sci8n (uint64_t insn,
b80c7270
AM
1512 ppc_cpu_t dialect,
1513 int *invalid)
1514{
1515 return -extract_sci8 (insn, dialect, invalid);
1516}
081ba1b3 1517
0f873fd5
PB
1518static uint64_t
1519insert_oimm (uint64_t insn,
1520 int64_t value,
b80c7270
AM
1521 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1522 const char **errmsg ATTRIBUTE_UNUSED)
1523{
1524 return insn | (((value - 1) & 0x1f) << 4);
1525}
b9c361e0 1526
0f873fd5
PB
1527static int64_t
1528extract_oimm (uint64_t insn,
b80c7270
AM
1529 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1530 int *invalid ATTRIBUTE_UNUSED)
1531{
1532 return ((insn >> 4) & 0x1f) + 1;
1533}
b9c361e0 1534
b80c7270 1535/* The SH field in an MD form instruction. This is split. */
b9c361e0 1536
0f873fd5
PB
1537static uint64_t
1538insert_sh6 (uint64_t insn,
1539 int64_t value,
b80c7270
AM
1540 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1541 const char **errmsg ATTRIBUTE_UNUSED)
1542{
71553718 1543 return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
b80c7270 1544}
9b4e5766 1545
0f873fd5
PB
1546static int64_t
1547extract_sh6 (uint64_t insn,
b80c7270
AM
1548 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1549 int *invalid ATTRIBUTE_UNUSED)
1550{
71553718 1551 return ((insn >> 11) & 0x1f) | ((insn << 4) & 0x20);
b80c7270 1552}
a680de9a 1553
b80c7270
AM
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. */
9b4e5766 1556
0f873fd5
PB
1557static uint64_t
1558insert_spr (uint64_t insn,
1559 int64_t value,
b80c7270
AM
1560 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1561 const char **errmsg ATTRIBUTE_UNUSED)
1562{
1563 return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
1564}
9b4e5766 1565
0f873fd5
PB
1566static int64_t
1567extract_spr (uint64_t insn,
b80c7270
AM
1568 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1569 int *invalid ATTRIBUTE_UNUSED)
1570{
1571 return ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
1572}
9b4e5766 1573
fa758a70
AC
1574/* Some dialects have 8 [DI]BAT registers instead of the standard 4. */
1575#define ALLOW8_BAT (PPC_OPCODE_750)
1576
16065af1
AM
1577static uint64_t
1578insert_sprbat (uint64_t insn,
1579 int64_t value,
fa758a70
AC
1580 ppc_cpu_t dialect,
1581 const char **errmsg)
1582{
71553718
AM
1583 if ((uint64_t) value > 7
1584 || ((uint64_t) value > 3 && (dialect & ALLOW8_BAT) == 0))
fa758a70
AC
1585 *errmsg = _("invalid bat number");
1586
1587 /* If this is [di]bat4..7 then use spr 560..575, otherwise 528..543. */
71553718 1588 if ((uint64_t) value > 3)
fa758a70
AC
1589 value = ((value & 3) << 6) | 1;
1590 else
1591 value = value << 6;
1592
1593 return insn | (value << 11);
1594}
1595
16065af1
AM
1596static int64_t
1597extract_sprbat (uint64_t insn,
fa758a70
AC
1598 ppc_cpu_t dialect,
1599 int *invalid)
1600{
16065af1 1601 uint64_t val = (insn >> 17) & 0x3;
fa758a70
AC
1602
1603 val = val + ((insn >> 9) & 0x4);
1604 if (val > 3 && (dialect & ALLOW8_BAT) == 0)
1605 *invalid = 1;
1606 return val;
1607}
1608
b80c7270
AM
1609/* Some dialects have 8 SPRG registers instead of the standard 4. */
1610#define ALLOW8_SPRG (PPC_OPCODE_BOOKE | PPC_OPCODE_405)
066be9f7 1611
0f873fd5
PB
1612static uint64_t
1613insert_sprg (uint64_t insn,
1614 int64_t value,
b80c7270
AM
1615 ppc_cpu_t dialect,
1616 const char **errmsg)
1617{
71553718
AM
1618 if ((uint64_t) value > 7
1619 || ((uint64_t) value > 3 && (dialect & ALLOW8_SPRG) == 0))
b80c7270 1620 *errmsg = _("invalid sprg number");
066be9f7 1621
b80c7270
AM
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. */
71553718 1624 if ((uint64_t) value <= 3 || (insn & 0x100) != 0)
b80c7270 1625 value |= 0x10;
066be9f7 1626
b80c7270
AM
1627 return insn | ((value & 0x17) << 16);
1628}
e0d602ec 1629
0f873fd5
PB
1630static int64_t
1631extract_sprg (uint64_t insn,
b80c7270
AM
1632 ppc_cpu_t dialect,
1633 int *invalid)
1634{
0f873fd5 1635 uint64_t val = (insn >> 16) & 0x1f;
4bc0608a 1636
b80c7270
AM
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}
a680de9a 1646
b80c7270
AM
1647/* The TBR field in an XFX instruction. This is just like SPR, but it
1648 is optional. */
e3c2f928 1649
0f873fd5
PB
1650static uint64_t
1651insert_tbr (uint64_t insn,
1652 int64_t value,
b80c7270
AM
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}
252b5132 1660
0f873fd5
PB
1661static int64_t
1662extract_tbr (uint64_t insn,
b80c7270
AM
1663 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1664 int *invalid)
1665{
8acf1435 1666 /* Missing optional operands have a value of 268. */
9cf7e568
AM
1667 if (*invalid < 0)
1668 return 268;
1669
0f873fd5 1670 int64_t ret = ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
b80c7270
AM
1671 if (ret != 268 && ret != 269)
1672 *invalid = 1;
1673 return ret;
1674}
252b5132 1675
b80c7270 1676/* The XT and XS fields in an XX1 or XX3 form instruction. This is split. */
b9c361e0 1677
0f873fd5
PB
1678static uint64_t
1679insert_xt6 (uint64_t insn,
1680 int64_t value,
b9c361e0
JL
1681 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1682 const char **errmsg ATTRIBUTE_UNUSED)
1683{
b80c7270 1684 return insn | ((value & 0x1f) << 21) | ((value & 0x20) >> 5);
b9c361e0
JL
1685}
1686
0f873fd5
PB
1687static int64_t
1688extract_xt6 (uint64_t insn,
b9c361e0
JL
1689 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1690 int *invalid ATTRIBUTE_UNUSED)
43e65147 1691{
b80c7270 1692 return ((insn << 5) & 0x20) | ((insn >> 21) & 0x1f);
b9c361e0
JL
1693}
1694
b80c7270 1695/* The XT and XS fields in an DQ form VSX instruction. This is split. */
0f873fd5
PB
1696static uint64_t
1697insert_xtq6 (uint64_t insn,
1698 int64_t value,
b80c7270
AM
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
0f873fd5
PB
1705static int64_t
1706extract_xtq6 (uint64_t insn,
b80c7270
AM
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
0f873fd5
PB
1715static uint64_t
1716insert_xa6 (uint64_t insn,
1717 int64_t value,
b9c361e0
JL
1718 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1719 const char **errmsg ATTRIBUTE_UNUSED)
1720{
b80c7270 1721 return insn | ((value & 0x1f) << 16) | ((value & 0x20) >> 3);
b9c361e0
JL
1722}
1723
0f873fd5
PB
1724static int64_t
1725extract_xa6 (uint64_t insn,
b9c361e0
JL
1726 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1727 int *invalid ATTRIBUTE_UNUSED)
1728{
b80c7270 1729 return ((insn << 3) & 0x20) | ((insn >> 16) & 0x1f);
b9c361e0
JL
1730}
1731
aa3c112f
AM
1732/* The XA field in an MMA XX3 form instruction. This is split
1733 and must not overlap with the ACC operand. */
1734
1735static uint64_t
1736insert_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
1747static int64_t
1748extract_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
b80c7270
AM
1759/* The XB field in an XX3 form instruction. This is split. */
1760
0f873fd5
PB
1761static uint64_t
1762insert_xb6 (uint64_t insn,
1763 int64_t value,
b80c7270
AM
1764 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1765 const char **errmsg ATTRIBUTE_UNUSED)
b9c361e0 1766{
b80c7270 1767 return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
b9c361e0
JL
1768}
1769
0f873fd5
PB
1770static int64_t
1771extract_xb6 (uint64_t insn,
b80c7270
AM
1772 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1773 int *invalid ATTRIBUTE_UNUSED)
b9c361e0 1774{
b80c7270 1775 return ((insn << 4) & 0x20) | ((insn >> 11) & 0x1f);
b9c361e0
JL
1776}
1777
aa3c112f
AM
1778/* The XB field in an MMA XX3 form instruction. This is split
1779 and must not overlap with the ACC operand. */
1780
1781static uint64_t
1782insert_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
1793static int64_t
1794extract_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
98553ad3
PB
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. */
b80c7270 1808
0f873fd5 1809static uint64_t
98553ad3
PB
1810insert_xab6 (uint64_t insn,
1811 int64_t value,
1812 ppc_cpu_t dialect,
1813 const char **errmsg)
b9c361e0 1814{
98553ad3
PB
1815 return insert_xa6 (insn, value, dialect, errmsg)
1816 | insert_xb6 (insn, value, dialect, errmsg);
b9c361e0
JL
1817}
1818
0f873fd5 1819static int64_t
98553ad3
PB
1820extract_xab6 (uint64_t insn,
1821 ppc_cpu_t dialect,
b80c7270 1822 int *invalid)
b9c361e0 1823{
98553ad3
PB
1824 int64_t xa6 = extract_xa6 (insn, dialect, invalid);
1825 int64_t xb6 = extract_xb6 (insn, dialect, invalid);
1826
1827 if (xa6 != xb6)
b80c7270 1828 *invalid = 1;
98553ad3 1829 return xa6;
b9c361e0
JL
1830}
1831
b80c7270 1832/* The XC field in an XX4 form instruction. This is split. */
252b5132 1833
0f873fd5
PB
1834static uint64_t
1835insert_xc6 (uint64_t insn,
1836 int64_t value,
fa452fa6 1837 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1838 const char **errmsg ATTRIBUTE_UNUSED)
252b5132 1839{
b80c7270 1840 return insn | ((value & 0x1f) << 6) | ((value & 0x20) >> 2);
252b5132
RH
1841}
1842
0f873fd5
PB
1843static int64_t
1844extract_xc6 (uint64_t insn,
fa452fa6 1845 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
b80c7270 1846 int *invalid ATTRIBUTE_UNUSED)
252b5132 1847{
b80c7270
AM
1848 return ((insn << 2) & 0x20) | ((insn >> 6) & 0x1f);
1849}
1850
94ba9882
AM
1851/* The split XTp field in a vector paired insn. */
1852
1853static uint64_t
1854insert_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
1862static int64_t
1863extract_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
6edbfd3b
AM
1870/* The split XT field in a vector splat insn. */
1871
1872static uint64_t
1873insert_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
1881static int64_t
1882extract_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
0f873fd5
PB
1889static uint64_t
1890insert_dm (uint64_t insn,
1891 int64_t value,
b80c7270
AM
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
0f873fd5
PB
1900static int64_t
1901extract_dm (uint64_t insn,
b80c7270
AM
1902 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1903 int *invalid)
1904{
0f873fd5 1905 int64_t value = (insn >> 8) & 3;
b80c7270 1906 if (value != 0 && value != 3)
252b5132 1907 *invalid = 1;
b80c7270 1908 return (value) ? 1 : 0;
252b5132
RH
1909}
1910
b80c7270 1911/* The VLESIMM field in an I16A form instruction. This is split. */
252b5132 1912
0f873fd5
PB
1913static uint64_t
1914insert_vlesi (uint64_t insn,
1915 int64_t value,
b80c7270
AM
1916 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1917 const char **errmsg ATTRIBUTE_UNUSED)
252b5132 1918{
b80c7270 1919 return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
252b5132
RH
1920}
1921
0f873fd5
PB
1922static int64_t
1923extract_vlesi (uint64_t insn,
b80c7270
AM
1924 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1925 int *invalid ATTRIBUTE_UNUSED)
252b5132 1926{
0f873fd5 1927 int64_t value = ((insn >> 10) & 0xf800) | (insn & 0x7ff);
b80c7270
AM
1928 value = (value ^ 0x8000) - 0x8000;
1929 return value;
252b5132
RH
1930}
1931
0f873fd5
PB
1932static uint64_t
1933insert_vlensi (uint64_t insn,
1934 int64_t value,
b80c7270
AM
1935 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1936 const char **errmsg ATTRIBUTE_UNUSED)
252b5132 1937{
b80c7270
AM
1938 value = -value;
1939 return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
252b5132 1940}
0f873fd5
PB
1941static int64_t
1942extract_vlensi (uint64_t insn,
b80c7270 1943 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
9cf7e568 1944 int *invalid)
252b5132 1945{
0f873fd5 1946 int64_t value = ((insn >> 10) & 0xf800) | (insn & 0x7ff);
b80c7270
AM
1947 value = (value ^ 0x8000) - 0x8000;
1948 /* Don't use for disassembly. */
1949 *invalid = 1;
1950 return -value;
252b5132
RH
1951}
1952
b80c7270 1953/* The VLEUIMM field in an I16A form instruction. This is split. */
252b5132 1954
0f873fd5
PB
1955static uint64_t
1956insert_vleui (uint64_t insn,
1957 int64_t value,
b80c7270
AM
1958 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1959 const char **errmsg ATTRIBUTE_UNUSED)
252b5132 1960{
b80c7270 1961 return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
252b5132
RH
1962}
1963
0f873fd5
PB
1964static int64_t
1965extract_vleui (uint64_t insn,
b80c7270
AM
1966 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1967 int *invalid ATTRIBUTE_UNUSED)
252b5132 1968{
b80c7270
AM
1969 return ((insn >> 10) & 0xf800) | (insn & 0x7ff);
1970}
8427c424 1971
b80c7270
AM
1972/* The VLEUIMML field in an I16L form instruction. This is split. */
1973
0f873fd5
PB
1974static uint64_t
1975insert_vleil (uint64_t insn,
1976 int64_t value,
b80c7270
AM
1977 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1978 const char **errmsg ATTRIBUTE_UNUSED)
1979{
1980 return insn | ((value & 0xf800) << 5) | (value & 0x7ff);
252b5132
RH
1981}
1982
0f873fd5
PB
1983static int64_t
1984extract_vleil (uint64_t insn,
b80c7270
AM
1985 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1986 int *invalid ATTRIBUTE_UNUSED)
252b5132 1987{
b80c7270 1988 return ((insn >> 5) & 0xf800) | (insn & 0x7ff);
8ebac3aa 1989}
ba4e851b 1990
0f873fd5
PB
1991static uint64_t
1992insert_evuimm1_ex0 (uint64_t insn,
1993 int64_t value,
74081948
AF
1994 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1995 const char **errmsg)
1996{
71553718
AM
1997 if (value <= 0 || value > 0x1f)
1998 *errmsg = _("UIMM = 00000 is illegal");
1999 return insn | ((value & 0x1f) << 11);
74081948
AF
2000}
2001
0f873fd5
PB
2002static int64_t
2003extract_evuimm1_ex0 (uint64_t insn,
74081948
AF
2004 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2005 int *invalid)
2006{
0f873fd5 2007 int64_t value = ((insn >> 11) & 0x1f);
74081948
AF
2008 if (value == 0)
2009 *invalid = 1;
2010
2011 return value;
2012}
2013
0f873fd5
PB
2014static uint64_t
2015insert_evuimm2_ex0 (uint64_t insn,
2016 int64_t value,
b80c7270
AM
2017 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2018 const char **errmsg)
8ebac3aa 2019{
71553718
AM
2020 if (value <= 0 || value > 0x3e)
2021 *errmsg = _("UIMM = 00000 is illegal");
2022 return insn | ((value & 0x3e) << 10);
252b5132
RH
2023}
2024
0f873fd5
PB
2025static int64_t
2026extract_evuimm2_ex0 (uint64_t insn,
b80c7270
AM
2027 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2028 int *invalid)
8ebac3aa 2029{
0f873fd5 2030 int64_t value = ((insn >> 10) & 0x3e);
b80c7270
AM
2031 if (value == 0)
2032 *invalid = 1;
8ebac3aa 2033
b80c7270 2034 return value;
8ebac3aa
AM
2035}
2036
0f873fd5
PB
2037static uint64_t
2038insert_evuimm4_ex0 (uint64_t insn,
2039 int64_t value,
b80c7270
AM
2040 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2041 const char **errmsg)
252b5132 2042{
71553718
AM
2043 if (value <= 0 || value > 0x7c)
2044 *errmsg = _("UIMM = 00000 is illegal");
2045 return insn | ((value & 0x7c) << 9);
252b5132
RH
2046}
2047
0f873fd5
PB
2048static int64_t
2049extract_evuimm4_ex0 (uint64_t insn,
b80c7270
AM
2050 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2051 int *invalid)
252b5132 2052{
0f873fd5 2053 int64_t value = ((insn >> 9) & 0x7c);
b80c7270 2054 if (value == 0)
252b5132 2055 *invalid = 1;
b80c7270 2056
252b5132
RH
2057 return value;
2058}
2059
0f873fd5
PB
2060static uint64_t
2061insert_evuimm8_ex0 (uint64_t insn,
2062 int64_t value,
b80c7270
AM
2063 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2064 const char **errmsg)
2065{
71553718
AM
2066 if (value <= 0 || value > 0xf8)
2067 *errmsg = _("UIMM = 00000 is illegal");
2068 return insn | ((value & 0xf8) << 8);
252b5132
RH
2069}
2070
0f873fd5
PB
2071static int64_t
2072extract_evuimm8_ex0 (uint64_t insn,
b80c7270
AM
2073 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2074 int *invalid)
252b5132 2075{
0f873fd5 2076 int64_t value = ((insn >> 8) & 0xf8);
b80c7270 2077 if (value == 0)
252b5132 2078 *invalid = 1;
252b5132 2079
b80c7270
AM
2080 return value;
2081}
a680de9a 2082
0f873fd5
PB
2083static uint64_t
2084insert_evuimm_lt8 (uint64_t insn,
2085 int64_t value,
74081948
AF
2086 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2087 const char **errmsg)
2088{
71553718
AM
2089 if (value < 0 || value > 7)
2090 *errmsg = _("UIMM values >7 are illegal");
2091 return insn | ((value & 0x7) << 11);
74081948
AF
2092}
2093
0f873fd5
PB
2094static int64_t
2095extract_evuimm_lt8 (uint64_t insn,
74081948
AF
2096 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2097 int *invalid)
2098{
0f873fd5 2099 int64_t value = ((insn >> 11) & 0x1f);
74081948
AF
2100 if (value > 7)
2101 *invalid = 1;
2102
2103 return value;
2104}
2105
0f873fd5
PB
2106static uint64_t
2107insert_evuimm_lt16 (uint64_t insn,
2108 int64_t value,
b80c7270
AM
2109 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2110 const char **errmsg)
a680de9a 2111{
71553718
AM
2112 if (value < 0 || value > 15)
2113 *errmsg = _("UIMM values >15 are illegal");
2114 return insn | ((value & 0xf) << 11);
a680de9a
PB
2115}
2116
0f873fd5
PB
2117static int64_t
2118extract_evuimm_lt16 (uint64_t insn,
b80c7270
AM
2119 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2120 int *invalid)
a680de9a 2121{
0f873fd5 2122 int64_t value = ((insn >> 11) & 0x1f);
b80c7270
AM
2123 if (value > 15)
2124 *invalid = 1;
a680de9a 2125
b80c7270
AM
2126 return value;
2127}
a680de9a 2128
0f873fd5
PB
2129static uint64_t
2130insert_rD_rS_even (uint64_t insn,
2131 int64_t value,
b80c7270
AM
2132 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2133 const char **errmsg)
a680de9a 2134{
71553718
AM
2135 if ((value & 0x1) != 0)
2136 *errmsg = _("GPR odd is illegal");
2137 return insn | ((value & 0x1e) << 21);
a680de9a
PB
2138}
2139
0f873fd5
PB
2140static int64_t
2141extract_rD_rS_even (uint64_t insn,
b80c7270
AM
2142 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2143 int *invalid)
a680de9a 2144{
0f873fd5 2145 int64_t value = ((insn >> 21) & 0x1f);
b80c7270
AM
2146 if ((value & 0x1) != 0)
2147 *invalid = 1;
2148
2149 return value;
a680de9a
PB
2150}
2151
0f873fd5
PB
2152static uint64_t
2153insert_off_lsp (uint64_t insn,
2154 int64_t value,
b80c7270
AM
2155 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2156 const char **errmsg)
a680de9a 2157{
71553718
AM
2158 if (value <= 0 || value > 0x3)
2159 *errmsg = _("invalid offset");
2160 return insn | (value & 0x3);
a680de9a
PB
2161}
2162
0f873fd5
PB
2163static int64_t
2164extract_off_lsp (uint64_t insn,
b80c7270
AM
2165 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2166 int *invalid)
a680de9a 2167{
0f873fd5 2168 int64_t value = (insn & 0x3);
b80c7270
AM
2169 if (value == 0)
2170 *invalid = 1;
2171
2172 return value;
a680de9a 2173}
74081948 2174
0f873fd5
PB
2175static uint64_t
2176insert_off_spe2 (uint64_t insn,
2177 int64_t value,
74081948
AF
2178 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2179 const char **errmsg)
2180{
71553718
AM
2181 if (value <= 0 || value > 0x7)
2182 *errmsg = _("invalid offset");
2183 return insn | (value & 0x7);
74081948
AF
2184}
2185
0f873fd5
PB
2186static int64_t
2187extract_off_spe2 (uint64_t insn,
74081948
AF
2188 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2189 int *invalid)
2190{
0f873fd5 2191 int64_t value = (insn & 0x7);
74081948
AF
2192 if (value == 0)
2193 *invalid = 1;
2194
2195 return value;
2196}
2197
0f873fd5
PB
2198static uint64_t
2199insert_Ddd (uint64_t insn,
2200 int64_t value,
74081948
AF
2201 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2202 const char **errmsg)
2203{
71553718
AM
2204 if (value < 0 || value > 0x7)
2205 *errmsg = _("invalid Ddd value");
2206 return insn | ((value & 0x3) << 11) | ((value & 0x4) >> 2);
74081948
AF
2207}
2208
0f873fd5
PB
2209static int64_t
2210extract_Ddd (uint64_t insn,
74081948
AF
2211 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2212 int *invalid ATTRIBUTE_UNUSED)
2213{
2214 return ((insn >> 11) & 0x3) | ((insn << 2) & 0x4);
2215}
9cf7e568
AM
2216
2217static uint64_t
2218insert_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
2226static int64_t
2227extract_sxl (uint64_t insn,
2228 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2229 int *invalid)
2230{
8acf1435 2231 /* Missing optional operands have a value of one. */
9cf7e568
AM
2232 if (*invalid < 0)
2233 return 1;
2234 return (insn >> 11) & 0x1;
2235}
97bf40d8
AM
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
2251static uint64_t
2252insert_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
2262static int64_t
2263extract_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
2278static uint64_t
2279insert_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
2289static int64_t
2290extract_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}
b80c7270
AM
2304\f
2305/* The operands table.
a680de9a 2306
b80c7270 2307 The fields are bitm, shift, insert, extract, flags.
2fbfdc41 2308
b80c7270
AM
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
2316const struct powerpc_operand powerpc_operands[] =
c168870a 2317{
b80c7270
AM
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
98553ad3
PB
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 },
b80c7270
AM
2334
2335 /* The BB field in an XL form instruction. */
98553ad3 2336#define BB BTAB + 1
b80c7270
AM
2337#define BB_MASK (0x1f << 11)
2338 { 0x1f, 11, NULL, NULL, PPC_OPERAND_CR_BIT },
2339
98553ad3
PB
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 },
b80c7270
AM
2354
2355 /* The BD field in a B form instruction. The lower two bits are
2356 forced to zero. */
98553ad3 2357#define BD RAB + 1
b80c7270
AM
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
aa3c112f
AM
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
b80c7270
AM
2405 /* An optional BF field. This is used for comparison instructions,
2406 in which an omitted BF field is taken as zero. */
aa3c112f 2407#define OBF ACC + 1
b80c7270
AM
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
aae9718e
PB
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 },
b80c7270
AM
2427
2428 /* The RM field in an X form instruction. */
aae9718e 2429#define RM BOP + 1
74081948 2430#define DD RM
b80c7270
AM
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
96a86c01
AM
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
b80c7270 2444 /* The BI16 field in a BD8 form instruction. */
96a86c01 2445#define BI16 BTF + 1
b80c7270
AM
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 },
98e69875 2451
b80c7270
AM
2452 /* The BO32 field in a BD15 form instruction. */
2453#define BO32 BI32 + 1
2454 { 0x3, 20, NULL, NULL, 0 },
c168870a 2455
b80c7270
AM
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 },
c168870a 2459
b80c7270
AM
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 },
c168870a 2464
b80c7270
AM
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 },
c168870a 2469
b80c7270
AM
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 },
c168870a 2476
b80c7270
AM
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 },
c168870a 2483
b80c7270
AM
2484 /* The CRD32 field in an XL form instruction. */
2485#define CRD32 CRB + 1
2486 { 0x3, 21, NULL, NULL, PPC_OPERAND_CR_REG },
c168870a 2487
b80c7270
AM
2488 /* The CRFS field in an X form instruction. */
2489#define CRFS CRD32 + 1
2490 { 0x7, 0, NULL, NULL, PPC_OPERAND_CR_REG },
b9c361e0 2491
b80c7270
AM
2492#define CRS CRFS + 1
2493 { 0x3, 18, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
b9c361e0 2494
b80c7270
AM
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 },
b9c361e0 2500
97bf40d8
AM
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
b80c7270
AM
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. */
97bf40d8 2512#define D THDS + 1
b80c7270 2513 { 0xffff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
aea77599 2514
b80c7270
AM
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 },
7b934113 2520
b80c7270
AM
2521 /* The DCMX field in an X form instruction. */
2522#define DCMX D8 + 1
2523 { 0x7f, 16, NULL, NULL, 0 },
7b934113 2524
b80c7270
AM
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 },
73f07bff 2528
b80c7270
AM
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 },
73f07bff 2534
b80c7270
AM
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 },
7b934113 2540
8acf1435
PB
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
0e62b37a 2545 { UINT64_C(0x3ffffffff), PPC_OPSHIFT_INV, insert_d34, extract_d34,
8acf1435
PB
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
0e62b37a 2550 { UINT64_C(0x3ffffffff), PPC_OPSHIFT_INV, insert_d34, extract_d34, PPC_OPERAND_SIGNED },
8acf1435
PB
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
0e62b37a 2555 { UINT64_C(0x3ffffffff), PPC_OPSHIFT_INV, insert_nsi34, extract_nsi34,
8acf1435
PB
2556 PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
2557
6edbfd3b
AM
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
ec40e91c
AM
2566 /* The UIM field in a vector eval prefix instruction. */
2567#define UIM8 UIM3 + 1
2568 { 0xff, 32, NULL, NULL, 0},
2569
6edbfd3b 2570 /* The IX field in xxsplti32dx. */
ec40e91c 2571#define IX UIM8 + 1
6edbfd3b
AM
2572 { 0x1, 17, NULL, NULL, 0 },
2573
aa3c112f
AM
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
b80c7270
AM
2598 /* The DUIS or BHRBE fields in a XFX form instruction, 10 bits
2599 unsigned imediate */
aa3c112f 2600#define DUIS YMSK2 + 1
b80c7270
AM
2601#define BHRBE DUIS
2602 { 0x3ff, 11, NULL, NULL, 0 },
aea77599 2603
aae7fcb8
PB
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
b80c7270 2609 /* The split D field in a DX form instruction. */
aae7fcb8 2610#define DXD DW + 1
b80c7270
AM
2611 { 0xffff, PPC_OPSHIFT_INV, insert_dxd, extract_dxd,
2612 PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT},
7b934113 2613
b80c7270
AM
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},
7b934113 2619
b80c7270
AM
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 },
aea77599 2627
b80c7270
AM
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 },
73f07bff 2633
b80c7270
AM
2634 /* The FL2 field in a POWER SC form instruction. */
2635#define FL2 FL1 + 1
2636 { 0x7, 2, NULL, NULL, 0 },
73f07bff 2637
b80c7270
AM
2638 /* The FLM field in an XFL form instruction. */
2639#define FLM FL2 + 1
2640 { 0xff, 17, NULL, NULL, 0 },
73f07bff 2641
b80c7270
AM
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 },
252b5132 2646
b80c7270
AM
2647 /* The FRAp field of DFP instructions. */
2648#define FRAp FRA + 1
2649 { 0x1e, 16, NULL, NULL, PPC_OPERAND_FPR },
252b5132 2650
b80c7270
AM
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 },
252b5132 2659
b80c7270
AM
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 },
252b5132 2664
b80c7270
AM
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 },
252b5132 2670
b80c7270
AM
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 },
252b5132 2676
b80c7270
AM
2677 /* The FXM field in an XFX instruction. */
2678#define FXM FRSp + 1
2679 { 0xff, 12, insert_fxm, extract_fxm, 0 },
252b5132 2680
b80c7270
AM
2681 /* Power4 version for mfcr. */
2682#define FXM4 FXM + 1
9cf7e568 2683 { 0xff, 12, insert_fxm, extract_fxm, PPC_OPERAND_OPTIONAL },
252b5132 2684
b80c7270 2685 /* The IMM20 field in an LI instruction. */
9cf7e568 2686#define IMM20 FXM4 + 1
b80c7270 2687 { 0xfffff, PPC_OPSHIFT_INV, insert_li20, extract_li20, PPC_OPERAND_SIGNED},
252b5132 2688
b80c7270
AM
2689 /* The L field in a D or X form instruction. */
2690#define L IMM20 + 1
2691 { 0x1, 21, NULL, NULL, 0 },
252b5132 2692
b80c7270
AM
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 },
252b5132 2698
afef4fe9
PB
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
b80c7270 2704 /* The optional (for 32-bit) L field in cmp[l][i] instructions. */
afef4fe9 2705#define L32OPT L1OPT + 1
b80c7270 2706 { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL32 },
252b5132 2707
3d205eb4 2708 /* The 2-bit L or WC field in an X (sync, dcbf or wait) form instruction. */
b80c7270 2709#define L2OPT L32OPT + 1
3d205eb4
PB
2710#define LS L2OPT
2711#define WC L2OPT
2712 { 0x3, 21, insert_ls, extract_ls, PPC_OPERAND_OPTIONAL },
252b5132 2713
b80c7270
AM
2714 /* The LEV field in a POWER SVC / POWER9 SCV form instruction. */
2715#define SVC_LEV L2OPT + 1
2716 { 0x7f, 5, NULL, NULL, 0 },
252b5132 2717
b80c7270
AM
2718 /* The LEV field in an SC form instruction. */
2719#define LEV SVC_LEV + 1
2720 { 0x7f, 5, NULL, NULL, PPC_OPERAND_OPTIONAL },
252b5132 2721
b80c7270
AM
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 },
252b5132 2726
b80c7270
AM
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 },
252b5132 2731
3d205eb4
PB
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 },
252b5132 2736
b80c7270 2737 /* The ME field in an M form instruction. */
3d205eb4 2738#define ME LS3 + 1
b80c7270
AM
2739#define ME_MASK (0x1f << 1)
2740 { 0x1f, 1, NULL, NULL, 0 },
989993d8 2741
b80c7270
AM
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 },
989993d8 2749
b80c7270
AM
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 },
989993d8 2756
b80c7270
AM
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 },
252b5132 2761
b80c7270
AM
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 },
252b5132 2766
b80c7270
AM
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 },
252b5132 2772
b80c7270
AM
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 },
252b5132 2778
b80c7270
AM
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 },
252b5132 2783
b80c7270
AM
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 },
73f07bff 2787
8acf1435
PB
2788 /* Similar to above, but optional. */
2789#define PRA0 RA0 + 1
2790 { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR_0 | PPC_OPERAND_OPTIONAL },
2791
b80c7270
AM
2792 /* The RA field in the DQ form lq or an lswx instruction, which have
2793 special value restrictions. */
8acf1435 2794#define RAQ PRA0 + 1
b80c7270
AM
2795#define RAX RAQ
2796 { 0x1f, 16, insert_raq, extract_raq, PPC_OPERAND_GPR_0 },
73f07bff 2797
8acf1435
PB
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
b80c7270
AM
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. */
8acf1435 2814#define RAL PCREL0 + 1
b80c7270 2815 { 0x1f, 16, insert_ral, extract_ral, PPC_OPERAND_GPR_0 },
252b5132 2816
b80c7270
AM
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 },
252b5132 2821
b80c7270
AM
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 },
73f07bff 2827
b80c7270
AM
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 },
73f07bff 2832
b80c7270
AM
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 },
adadcc0c 2837
98553ad3
PB
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 },
adadcc0c 2842
b80c7270
AM
2843 /* The RB field in an lswx instruction, which has special value
2844 restrictions. */
98553ad3 2845#define RBX RSB + 1
b80c7270 2846 { 0x1f, 11, insert_rbx, extract_rbx, PPC_OPERAND_GPR },
adadcc0c 2847
b80c7270
AM
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 },
73f07bff 2851
b80c7270
AM
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 },
73f07bff 2855
b80c7270
AM
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 },
252b5132 2864
b80c7270
AM
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 },
252b5132 2868
b80c7270
AM
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 },
73f07bff 2875
b80c7270
AM
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 },
73f07bff 2880
b80c7270
AM
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 },
252b5132 2884
b80c7270
AM
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 },
252b5132 2888
b80c7270
AM
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 },
252b5132 2893
b80c7270
AM
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 },
989993d8 2897
b80c7270
AM
2898 /* The SCLSCI8 field in a D form instruction. */
2899#define SCLSCI8 ARY + 1
2900 { 0xffffffff, PPC_OPSHIFT_INV, insert_sci8, extract_sci8, 0 },
989993d8 2901
b80c7270
AM
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 },
989993d8 2907
b80c7270
AM
2908 /* The SD field of the SD4 form instruction. */
2909#define SE_SD SCLSCI8N + 1
2910 { 0xf, 8, NULL, NULL, PPC_OPERAND_PARENS },
73f07bff 2911
b80c7270
AM
2912 /* The SD field of the SD4 form instruction, for halfword. */
2913#define SE_SDH SE_SD + 1
71553718 2914 { 0x1e, 7, NULL, NULL, PPC_OPERAND_PARENS },
73f07bff 2915
b80c7270
AM
2916 /* The SD field of the SD4 form instruction, for word. */
2917#define SE_SDW SE_SDH + 1
71553718 2918 { 0x3c, 6, NULL, NULL, PPC_OPERAND_PARENS },
b9c361e0 2919
b80c7270
AM
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
6edbfd3b 2927#define UIM5 SH
b80c7270 2928 { 0x1f, 11, NULL, NULL, 0 },
b9c361e0 2929
74081948
AF
2930#define EVUIMM_LT8 SH + 1
2931 { 0x1f, 11, insert_evuimm_lt8, extract_evuimm_lt8, 0 },
2932
2933#define EVUIMM_LT16 EVUIMM_LT8 + 1
b80c7270 2934 { 0x1f, 11, insert_evuimm_lt16, extract_evuimm_lt16, 0 },
b9c361e0 2935
b80c7270
AM
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 },
943d398f 2939
b80c7270
AM
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 },
b9c361e0 2944
b80c7270
AM
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 },
b9c361e0 2950
b80c7270
AM
2951 /* The SI field in a D form instruction. */
2952#define SI SHO + 1
2953 { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED },
b9c361e0 2954
b80c7270
AM
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 },
b9c361e0 2959
b80c7270
AM
2960 /* The SI8 field in a D form instruction. */
2961#define SI8 SISIGNOPT + 1
2962 { 0xff, 0, NULL, NULL, PPC_OPERAND_SIGNED },
b9c361e0 2963
b80c7270
AM
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 },
b9c361e0 2971
b80c7270
AM
2972 /* The BAT index number in an XFX form m[ft]ibat[lu] instruction. */
2973#define SPRBAT SPR + 1
fa758a70
AC
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 },
b9c361e0 2981
b80c7270 2982 /* The SPRG register number in an XFX form m[ft]sprg instruction. */
fa758a70 2983#define SPRG SPRGQR + 1
b80c7270 2984 { 0x1f, 16, insert_sprg, extract_sprg, PPC_OPERAND_SPR },
b9c361e0 2985
b80c7270
AM
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 },
b9c361e0 2991
b80c7270
AM
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 },
252b5132 2999
b80c7270
AM
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 },
252b5132 3003
b80c7270
AM
3004 /* The SV field in a POWER SC form instruction. */
3005#define SV ESYNC + 1
3006 { 0x3fff, 2, NULL, NULL, 0 },
252b5132 3007
b80c7270
AM
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,
9cf7e568 3012 PPC_OPERAND_SPR | PPC_OPERAND_OPTIONAL },
252b5132 3013
b80c7270 3014 /* The TO field in a D or X form instruction. */
9cf7e568 3015#define TO TBR + 1
b80c7270
AM
3016#define DUI TO
3017#define TO_MASK (0x1f << 21)
3018 { 0x1f, 21, NULL, NULL, 0 },
252b5132 3019
b80c7270
AM
3020 /* The UI field in a D form instruction. */
3021#define UI TO + 1
3022 { 0xffff, 0, NULL, NULL, 0 },
252b5132 3023
b80c7270
AM
3024#define UISIGNOPT UI + 1
3025 { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNOPT },
da99ee72 3026
b80c7270
AM
3027 /* The IMM field in an SE_IM5 instruction. */
3028#define UI5 UISIGNOPT + 1
3029 { 0x1f, 4, NULL, NULL, 0 },
da99ee72 3030
b80c7270
AM
3031 /* The OIMM field in an SE_OIM5 instruction. */
3032#define OIMM5 UI5 + 1
71553718 3033 { 0x1f, 4, insert_oimm, extract_oimm, PPC_OPERAND_PLUS1 },
da99ee72 3034
b80c7270
AM
3035 /* The UI7 field in an SE_LI instruction. */
3036#define UI7 OIMM5 + 1
3037 { 0x7f, 4, NULL, NULL, 0 },
da99ee72 3038
b80c7270
AM
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 },
da99ee72 3042
b80c7270
AM
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 },
da99ee72 3046
b80c7270
AM
3047 /* The VC field in a VA form instruction. */
3048#define VC VB + 1
3049 { 0x1f, 6, NULL, NULL, PPC_OPERAND_VR },
252b5132 3050
b80c7270
AM
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 },
252b5132 3055
b80c7270
AM
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},
252b5132 3060
b80c7270
AM
3061 /* The UIMM field in a VX form instruction. */
3062#define UIMM SIMM + 1
3063#define DCTL UIMM
3064 { 0x1f, 16, NULL, NULL, 0 },
9b4e5766 3065
b80c7270
AM
3066 /* The 3-bit UIMM field in a VX form instruction. */
3067#define UIMM3 UIMM + 1
3068 { 0x7, 16, NULL, NULL, 0 },
9b4e5766 3069
b80c7270
AM
3070 /* The 6-bit UIM field in a X form instruction. */
3071#define UIM6 UIMM3 + 1
3072 { 0x3f, 16, NULL, NULL, 0 },
9b4e5766 3073
b80c7270
AM
3074 /* The SIX field in a VX form instruction. */
3075#define SIX UIM6 + 1
74081948 3076#define MMMM SIX
b80c7270 3077 { 0xf, 11, NULL, NULL, 0 },
9b4e5766 3078
b80c7270
AM
3079 /* The PS field in a VX form instruction. */
3080#define PS SIX + 1
3081 { 0x1, 9, NULL, NULL, 0 },
a680de9a 3082
6edbfd3b
AM
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
b80c7270 3087 /* The SHB field in a VA form instruction. */
6edbfd3b 3088#define SHB SH3 + 1
b80c7270 3089 { 0xf, 6, NULL, NULL, 0 },
a680de9a 3090
b80c7270 3091 /* The other UIMM field in a half word EVX form instruction. */
74081948
AF
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
b80c7270 3099 { 0x3e, 10, NULL, NULL, PPC_OPERAND_PARENS },
9b4e5766 3100
b80c7270
AM
3101#define EVUIMM_2_EX0 EVUIMM_2 + 1
3102 { 0x3e, 10, insert_evuimm2_ex0, extract_evuimm2_ex0, PPC_OPERAND_PARENS },
9b4e5766 3103
b80c7270
AM
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 },
9b4e5766 3107
b80c7270
AM
3108#define EVUIMM_4_EX0 EVUIMM_4 + 1
3109 { 0x7c, 9, insert_evuimm4_ex0, extract_evuimm4_ex0, PPC_OPERAND_PARENS },
9b4e5766 3110
b80c7270
AM
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 },
9b4e5766 3114
b80c7270
AM
3115#define EVUIMM_8_EX0 EVUIMM_8 + 1
3116 { 0xf8, 8, insert_evuimm8_ex0, extract_evuimm8_ex0, PPC_OPERAND_PARENS },
9b4e5766 3117
b80c7270
AM
3118 /* The WS or DRM field in an X form instruction. */
3119#define WS EVUIMM_8_EX0 + 1
3120#define DRM WS
74081948
AF
3121 /* The NNN field in a VX form instruction for SPE2 */
3122#define NNN WS
b80c7270 3123 { 0x7, 11, NULL, NULL, 0 },
9b4e5766 3124
b80c7270
AM
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 },
9b4e5766 3131
b80c7270
AM
3132 /* IDX bits for quantization in the pair singles instructions. */
3133#define PSQ PSWM + 1
3134 { 0x7, 12, 0, 0, PPC_OPERAND_GQR },
066be9f7 3135
b80c7270
AM
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 },
066be9f7 3139
b80c7270
AM
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 },
066be9f7 3143
b80c7270
AM
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 },
066be9f7 3150
b80c7270
AM
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 },
066be9f7 3155
b80c7270 3156#define R RMC + 1
fdefed7c 3157#define MP R
b80c7270 3158 { 0x1, 16, NULL, NULL, 0 },
066be9f7 3159
b80c7270
AM
3160#define RIC R + 1
3161 { 0x3, 18, NULL, NULL, PPC_OPERAND_OPTIONAL },
7b934113 3162
b80c7270
AM
3163#define PRS RIC + 1
3164 { 0x1, 17, NULL, NULL, PPC_OPERAND_OPTIONAL },
b9c361e0 3165
b80c7270
AM
3166#define SP PRS + 1
3167 { 0x3, 19, NULL, NULL, 0 },
b9c361e0 3168
b80c7270
AM
3169#define S SP + 1
3170 { 0x1, 20, NULL, NULL, 0 },
b9c361e0 3171
b80c7270
AM
3172 /* The S field in a XL form instruction. */
3173#define SXL S + 1
9cf7e568 3174 { 0x1, 11, insert_sxl, extract_sxl, PPC_OPERAND_OPTIONAL },
b80c7270
AM
3175
3176 /* SH field starting at bit position 16. */
9cf7e568 3177#define SH16 SXL + 1
b80c7270
AM
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 },
b9c361e0 3186
b80c7270
AM
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},
b9c361e0 3192
b80c7270
AM
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 },
b9c361e0 3197
b80c7270
AM
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 },
b9c361e0 3202
b80c7270
AM
3203 /* Xilinx UDI related masks and macros */
3204#define URT FSL + 1
3205 { 0x1f, 21, 0, 0, PPC_OPERAND_UDI },
b9c361e0 3206
b80c7270
AM
3207#define URA URT + 1
3208 { 0x1f, 16, 0, 0, PPC_OPERAND_UDI },
b9c361e0 3209
b80c7270
AM
3210#define URB URA + 1
3211 { 0x1f, 11, 0, 0, PPC_OPERAND_UDI },
b9c361e0 3212
b80c7270
AM
3213#define URC URB + 1
3214 { 0x1f, 6, 0, 0, PPC_OPERAND_UDI },
e3c2f928 3215
b80c7270
AM
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 },
e3c2f928 3220
b80c7270
AM
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 },
e3c2f928 3225
b80c7270
AM
3226 /* The VLEUIMM field in a D form instruction. */
3227#define VLEUIMM VLENSIMM + 1
3228 { 0xffff, PPC_OPSHIFT_INV, insert_vleui, extract_vleui, 0 },
e3c2f928 3229
b80c7270
AM
3230 /* The VLEUIMML field in a D form instruction. */
3231#define VLEUIMML VLEUIMM + 1
3232 { 0xffff, PPC_OPSHIFT_INV, insert_vleil, extract_vleil, 0 },
e3c2f928 3233
b80c7270
AM
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 },
e3c2f928 3239
b80c7270
AM
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 },
e3c2f928 3244
94ba9882
AM
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
6edbfd3b
AM
3249#define XTS XTP + 1
3250 { 0x3f, PPC_OPSHIFT_INV, insert_xts, extract_xts, PPC_OPERAND_VSR },
3251
8acf1435 3252 /* The XT field in a plxv instruction. Runs into the OP field. */
6edbfd3b 3253#define XTOP XTS + 1
8acf1435
PB
3254 { 0x3f, 21, NULL, NULL, PPC_OPERAND_VSR },
3255
b80c7270 3256 /* The XA field in an XX3 form instruction. This is split. */
8acf1435 3257#define XA6 XTOP + 1
b80c7270 3258 { 0x3f, PPC_OPSHIFT_INV, insert_xa6, extract_xa6, PPC_OPERAND_VSR },
e3c2f928 3259
aa3c112f
AM
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
b80c7270 3270 /* The XB field in an XX2 or XX3 form instruction. This is split. */
aa3c112f 3271#define XB6 XA6ap + 1
b80c7270 3272 { 0x3f, PPC_OPSHIFT_INV, insert_xb6, extract_xb6, PPC_OPERAND_VSR },
e3c2f928 3273
aa3c112f
AM
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
98553ad3
PB
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. */
aa3c112f 3281#define XAB6 XB6a + 1
98553ad3 3282 { 0x3f, PPC_OPSHIFT_INV, insert_xab6, extract_xab6, PPC_OPERAND_VSR },
e3c2f928 3283
b80c7270 3284 /* The XC field in an XX4 form instruction. This is split. */
98553ad3 3285#define XC6 XAB6 + 1
b80c7270 3286 { 0x3f, PPC_OPSHIFT_INV, insert_xc6, extract_xc6, PPC_OPERAND_VSR },
e3c2f928 3287
b80c7270
AM
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 },
e3c2f928 3292
b80c7270
AM
3293 /* The DM field in an extended mnemonic XX3 form instruction. */
3294#define DMEX DM + 1
3295 { 0x3, 8, insert_dm, extract_dm, 0 },
e3c2f928 3296
b80c7270
AM
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 },
e3c2f928 3304
b80c7270
AM
3305#define ERAT_T UIM + 1
3306 { 0x7, 21, NULL, NULL, 0 },
e3c2f928 3307
b80c7270
AM
3308#define IH ERAT_T + 1
3309 { 0x7, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
e3c2f928 3310
3d205eb4
PB
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
b80c7270 3316 /* The 8-bit IMM8 field in a XX1 form instruction. */
3d205eb4 3317#define IMM8 SC2 + 1
b80c7270 3318 { 0xff, 11, NULL, NULL, PPC_OPERAND_SIGNOPT },
e3c2f928 3319
b80c7270
AM
3320#define VX_OFF IMM8 + 1
3321 { 0x3, 0, insert_off_lsp, extract_off_lsp, 0 },
74081948
AF
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 },
b80c7270
AM
3335};
3336
3337const unsigned int num_powerpc_operands = (sizeof (powerpc_operands)
3338 / sizeof (powerpc_operands[0]));
252b5132
RH
3339\f
3340/* Macros used to form opcodes. */
3341
3342/* The main opcode. */
0f873fd5 3343#define OP(x) ((((uint64_t)(x)) & 0x3f) << 26)
252b5132
RH
3344#define OP_MASK OP (0x3f)
3345
dd7efa79
PB
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
8acf1435
PB
3355/* Prefix insn, eight byte load/store form 8LS. */
3356#define P8LS (PREFIX_OP | PREFIX_FORM (0))
3357
6edbfd3b
AM
3358/* Prefix insn, eight byte register to register form 8RR. */
3359#define P8RR (PREFIX_OP | PREFIX_FORM (1))
3360
8acf1435
PB
3361/* Prefix insn, modified load/store form MLS. */
3362#define PMLS (PREFIX_OP | PREFIX_FORM (2))
3363
dd7efa79
PB
3364/* Prefix insn, modified register to register form MRR. */
3365#define PMRR (PREFIX_OP | PREFIX_FORM (3))
3366
aa3c112f
AM
3367/* Prefix insn, modified masked immediate register to register form MMIRR. */
3368#define PMMIRR (PREFIX_OP | PREFIX_FORM (3) | (9ULL << 52))
3369
8acf1435
PB
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
aa3c112f
AM
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
6edbfd3b
AM
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))
ec40e91c 3383#define P_U8XX4_MASK (P_XX4_MASK & ~(0xffULL << 32))
6edbfd3b 3384
aa3c112f
AM
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
6edbfd3b
AM
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
252b5132
RH
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. */
0f873fd5 3400#define OPTO(x,to) (OP (x) | ((((uint64_t)(to)) & 0x1f) << 21))
252b5132
RH
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. */
0f873fd5 3406#define OPL(x,l) (OP (x) | ((((uint64_t)(l)) & 1) << 21))
252b5132
RH
3407#define OPL_MASK OPL (0x3f,1)
3408
b9c361e0
JL
3409/* The main opcode combined with an update code in D form instruction.
3410 Used for extended mnemonics for VLE memory instructions. */
0f873fd5 3411#define OPVUP(x,vup) (OP (x) | ((((uint64_t)(vup)) & 0xff) << 8))
b9c361e0
JL
3412#define OPVUP_MASK OPVUP (0x3f, 0xff)
3413
b80c7270
AM
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) \
0f873fd5 3419 | ((((uint64_t)(rt)) & 0x1f) << 21))
dfdaec14
AJ
3420#define OPVUPRT_MASK OPVUPRT (0x3f, 0xff, 0x1f)
3421
252b5132 3422/* An A form instruction. */
b80c7270
AM
3423#define A(op, xop, rc) \
3424 (OP (op) \
0f873fd5
PB
3425 | ((((uint64_t)(xop)) & 0x1f) << 1) \
3426 | (((uint64_t)(rc)) & 1))
252b5132
RH
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
702f0fb4 3438/* An AFRAFRC_MASK, but with L bit clear. */
0f873fd5 3439#define AFRALFRC_MASK (AFRAFRC_MASK & ~((uint64_t) 1 << 16))
702f0fb4 3440
252b5132 3441/* A B form instruction. */
b80c7270
AM
3442#define B(op, aa, lk) \
3443 (OP (op) \
0f873fd5 3444 | ((((uint64_t)(aa)) & 1) << 1) \
b80c7270 3445 | ((lk) & 1))
252b5132
RH
3446#define B_MASK B (0x3f, 1, 1)
3447
b9c361e0 3448/* A BD8 form instruction. This is a 16-bit instruction. */
b80c7270 3449#define BD8(op, aa, lk) \
0f873fd5 3450 (((((uint64_t)(op)) & 0x3f) << 10) \
b80c7270
AM
3451 | (((aa) & 1) << 9) \
3452 | (((lk) & 1) << 8))
b9c361e0
JL
3453#define BD8_MASK BD8 (0x3f, 1, 1)
3454
3455/* Another BD8 form instruction. This is a 16-bit instruction. */
0f873fd5 3456#define BD8IO(op) ((((uint64_t)(op)) & 0x1f) << 11)
b9c361e0
JL
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. */
b80c7270
AM
3469#define BD15(op, aa, lk) \
3470 (OP (op) \
0f873fd5 3471 | ((((uint64_t)(aa)) & 0xf) << 22) \
b80c7270 3472 | ((lk) & 1))
b9c361e0
JL
3473#define BD15_MASK BD15 (0x3f, 0xf, 1)
3474
3475/* A BD15 form instruction for extended conditional branch mnemonics. */
b80c7270 3476#define EBD15(op, aa, bo, lk) \
2480b6fa 3477 (((op) & 0x3fu) << 26) \
b80c7270
AM
3478 | (((aa) & 0xf) << 22) \
3479 | (((bo) & 0x3) << 20) \
3480 | ((lk) & 1)
b9c361e0
JL
3481#define EBD15_MASK 0xfff00001
3482
b80c7270
AM
3483/* A BD15 form instruction for extended conditional branch mnemonics
3484 with BI. */
3485#define EBD15BI(op, aa, bo, bi, lk) \
2480b6fa 3486 ((((op) & 0x3fu) << 26) \
b80c7270
AM
3487 | (((aa) & 0xf) << 22) \
3488 | (((bo) & 0x3) << 20) \
3489 | (((bi) & 0x3) << 16) \
3490 | ((lk) & 1))
3491
b9c361e0
JL
3492#define EBD15BI_MASK 0xfff30001
3493
3494/* A BD24 form instruction. */
b80c7270
AM
3495#define BD24(op, aa, lk) \
3496 (OP (op) \
0f873fd5 3497 | ((((uint64_t)(aa)) & 1) << 25) \
b80c7270 3498 | ((lk) & 1))
b9c361e0
JL
3499#define BD24_MASK BD24 (0x3f, 1, 1)
3500
252b5132 3501/* A B form instruction setting the BO field. */
b80c7270
AM
3502#define BBO(op, bo, aa, lk) \
3503 (B ((op), (aa), (lk)) \
0f873fd5 3504 | ((((uint64_t)(bo)) & 0x1f) << 21))
252b5132
RH
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
94efba12 3509 bit. Similarly for the 'at' bits used for power4 branch hints. */
0f873fd5
PB
3510#define Y_MASK (((uint64_t) 1) << 21)
3511#define AT1_MASK (((uint64_t) 3) << 21)
3512#define AT2_MASK (((uint64_t) 9) << 21)
802a735e
AM
3513#define BBOY_MASK (BBO_MASK &~ Y_MASK)
3514#define BBOAT_MASK (BBO_MASK &~ AT1_MASK)
252b5132
RH
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) \
0f873fd5 3519 (BBO ((op), (bo), (aa), (lk)) | ((((uint64_t)(cb)) & 0x3) << 16))
252b5132
RH
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)
802a735e
AM
3524#define BBOATCB_MASK (BBOCB_MASK &~ AT1_MASK)
3525#define BBOAT2CB_MASK (BBOCB_MASK &~ AT2_MASK)
252b5132
RH
3526
3527/* A BBOYCB_MASK in which the BI field is fixed. */
3528#define BBOYBI_MASK (BBOYCB_MASK | BI_MASK)
802a735e 3529#define BBOATBI_MASK (BBOAT2CB_MASK | BI_MASK)
252b5132 3530
b9c361e0 3531/* A VLE C form instruction. */
0f873fd5 3532#define C_LK(x, lk) (((((uint64_t)(x)) & 0x7fff) << 1) | ((lk) & 1))
b9c361e0 3533#define C_LK_MASK C_LK(0x7fff, 1)
0f873fd5 3534#define C(x) ((((uint64_t)(x)) & 0xffff))
b9c361e0
JL
3535#define C_MASK C(0xffff)
3536
23976049 3537/* An Context form instruction. */
0f873fd5 3538#define CTX(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x7))
fdd12ef3 3539#define CTX_MASK CTX(0x3f, 0x7)
23976049
EZ
3540
3541/* An User Context form instruction. */
0f873fd5 3542#define UCTX(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f))
fdd12ef3 3543#define UCTX_MASK UCTX(0x3f, 0x1f)
23976049 3544
252b5132
RH
3545/* The main opcode mask with the RA field clear. */
3546#define DRA_MASK (OP_MASK | RA_MASK)
3547
a680de9a
PB
3548/* A DQ form VSX instruction. */
3549#define DQX(op, xop) (OP (op) | ((xop) & 0x7))
3550#define DQX_MASK DQX (0x3f, 7)
3551
94ba9882
AM
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
252b5132
RH
3556/* A DS form instruction. */
3557#define DSO(op, xop) (OP (op) | ((xop) & 0x3))
3558#define DS_MASK DSO (0x3f, 3)
3559
a680de9a 3560/* An DX form instruction. */
0f873fd5 3561#define DX(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1f) << 1))
a680de9a 3562#define DX_MASK DX (0x3f, 0x1f)
1437d063
PB
3563/* An DX form instruction with the D bits specified. */
3564#define NODX_MASK (DX_MASK | 0x1fffc1)
a680de9a 3565
23976049 3566/* An EVSEL form instruction. */
0f873fd5 3567#define EVSEL(op, xop) (OP (op) | (((uint64_t)(xop)) & 0xff) << 3)
23976049
EZ
3568#define EVSEL_MASK EVSEL(0x3f, 0xff)
3569
b9c361e0 3570/* An IA16 form instruction. */
0f873fd5 3571#define IA16(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f) << 11)
b9c361e0
JL
3572#define IA16_MASK IA16(0x3f, 0x1f)
3573
3574/* An I16A form instruction. */
0f873fd5 3575#define I16A(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f) << 11)
b9c361e0
JL
3576#define I16A_MASK I16A(0x3f, 0x1f)
3577
3578/* An I16L form instruction. */
0f873fd5 3579#define I16L(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f) << 11)
b9c361e0
JL
3580#define I16L_MASK I16L(0x3f, 0x1f)
3581
3582/* An IM7 form instruction. */
0f873fd5 3583#define IM7(op) ((((uint64_t)(op)) & 0x1f) << 11)
b9c361e0
JL
3584#define IM7_MASK IM7(0x1f)
3585
252b5132
RH
3586/* An M form instruction. */
3587#define M(op, rc) (OP (op) | ((rc) & 1))
3588#define M_MASK M (0x3f, 1)
3589
b9c361e0 3590/* An LI20 form instruction. */
0f873fd5 3591#define LI20(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1) << 15)
b9c361e0
JL
3592#define LI20_MASK LI20(0x3f, 0x1)
3593
252b5132 3594/* An M form instruction with the ME field specified. */
b80c7270
AM
3595#define MME(op, me, rc) \
3596 (M ((op), (rc)) \
0f873fd5 3597 | ((((uint64_t)(me)) & 0x1f) << 1))
252b5132
RH
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. */
b80c7270
AM
3606#define MD(op, xop, rc) \
3607 (OP (op) \
0f873fd5 3608 | ((((uint64_t)(xop)) & 0x7) << 2) \
b80c7270 3609 | ((rc) & 1))
252b5132
RH
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. */
b80c7270
AM
3619#define MDS(op, xop, rc) \
3620 (OP (op) \
0f873fd5 3621 | ((((uint64_t)(xop)) & 0xf) << 1) \
b80c7270 3622 | ((rc) & 1))
252b5132
RH
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. */
b80c7270
AM
3629#define SC(op, sa, lk) \
3630 (OP (op) \
0f873fd5 3631 | ((((uint64_t)(sa)) & 1) << 1) \
b80c7270
AM
3632 | ((lk) & 1))
3633#define SC_MASK \
3634 (OP_MASK \
0f873fd5
PB
3635 | (((uint64_t) 0x3ff) << 16) \
3636 | (((uint64_t) 1) << 1) \
b80c7270 3637 | 1)
252b5132 3638
b9c361e0 3639/* An SCI8 form instruction. */
0f873fd5 3640#define SCI8(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1f) << 11))
b9c361e0
JL
3641#define SCI8_MASK SCI8(0x3f, 0x1f)
3642
3643/* An SCI8 form instruction. */
b80c7270
AM
3644#define SCI8BF(op, fop, xop) \
3645 (OP (op) \
0f873fd5 3646 | ((((uint64_t)(xop)) & 0x1f) << 11) \
b80c7270 3647 | (((fop) & 7) << 23))
b9c361e0
JL
3648#define SCI8BF_MASK SCI8BF(0x3f, 7, 0x1f)
3649
3650/* An SD4 form instruction. This is a 16-bit instruction. */
0f873fd5 3651#define SD4(op) ((((uint64_t)(op)) & 0xf) << 12)
b9c361e0
JL
3652#define SD4_MASK SD4(0xf)
3653
3654/* An SE_IM5 form instruction. This is a 16-bit instruction. */
b80c7270 3655#define SE_IM5(op, xop) \
0f873fd5 3656 (((((uint64_t)(op)) & 0x3f) << 10) \
b80c7270 3657 | (((xop) & 0x1) << 9))
b9c361e0
JL
3658#define SE_IM5_MASK SE_IM5(0x3f, 1)
3659
3660/* An SE_R form instruction. This is a 16-bit instruction. */
b80c7270 3661#define SE_R(op, xop) \
0f873fd5 3662 (((((uint64_t)(op)) & 0x3f) << 10) \
b80c7270 3663 | (((xop) & 0x3f) << 4))
b9c361e0
JL
3664#define SE_R_MASK SE_R(0x3f, 0x3f)
3665
3666/* An SE_RR form instruction. This is a 16-bit instruction. */
b80c7270 3667#define SE_RR(op, xop) \
0f873fd5 3668 (((((uint64_t)(op)) & 0x3f) << 10) \
b80c7270 3669 | (((xop) & 0x3) << 8))
b9c361e0
JL
3670#define SE_RR_MASK SE_RR(0x3f, 3)
3671
3672/* A VX form instruction. */
0f873fd5 3673#define VX(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x7ff))
786e2c0f 3674
112290ab 3675/* The mask for an VX form instruction. */
786e2c0f
C
3676#define VX_MASK VX(0x3f, 0x7ff)
3677
e3c2f928 3678/* A VX LSP form instruction. */
0f873fd5 3679#define VX_LSP(op, xop) (OP (op) | (((uint64_t)(xop)) & 0xffff))
e3c2f928
AF
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
74081948
AF
3685/* Additional format of VX SPE2 form instruction. */
3686#define VX_RA_CONST(op, xop, bits11_15) \
3687 (OP (op) \
0f873fd5
PB
3688 | (((uint64_t)(bits11_15) & 0x1f) << 16) \
3689 | (((uint64_t)(xop)) & 0x7ff))
74081948
AF
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) \
0f873fd5
PB
3694 | (((uint64_t)(bits16_20) & 0x1f) << 11) \
3695 | (((uint64_t)(xop)) & 0x7ff))
74081948
AF
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) \
0f873fd5
PB
3702 | (((uint64_t)(bits9_10) & 0x3) << 21) \
3703 | (((uint64_t)(xop)) & 0x7ff))
74081948
AF
3704#define VX_SPE_CRFD_MASK VX_SPE_CRFD(0x3f, 0x7ff, 0x3)
3705
3706#define VX_SPE2_CLR(op, xop, bit16) \
3707 (OP (op) \
0f873fd5
PB
3708 | (((uint64_t)(bit16) & 0x1) << 15) \
3709 | (((uint64_t)(xop)) & 0x7ff))
74081948
AF
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) \
0f873fd5
PB
3714 | (((uint64_t)(bits19_20) & 0x3) << 11) \
3715 | (((uint64_t)(xop)) & 0x7ff))
74081948
AF
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) \
0f873fd5
PB
3720 | (((uint64_t)(bits16_17) & 0x3) << 14) \
3721 | (((uint64_t)(xop)) & 0x7ff))
74081948
AF
3722#define VX_SPE2_OCTET_MASK VX_SPE2_OCTET(0x3f, 0x7ff, 0x7)
3723
3724#define VX_SPE2_DDHH(op, xop, bit16) \
3725 (OP (op) \
0f873fd5
PB
3726 | (((uint64_t)(bit16) & 0x1) << 15) \
3727 | (((uint64_t)(xop)) & 0x7ff))
74081948
AF
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) \
0f873fd5
PB
3732 | (((uint64_t)(bit16) & 0x1) << 15) \
3733 | (((uint64_t)(bits19_20) & 0x3) << 11) \
3734 | (((uint64_t)(xop)) & 0x7ff))
74081948
AF
3735#define VX_SPE2_HH_MASK VX_SPE2_HH(0x3f, 0x7ff, 0x1, 0x3)
3736
3737#define VX_SPE2_EVMAR(op, xop) \
3738 (OP (op) \
0f873fd5
PB
3739 | ((uint64_t)(0x1) << 11) \
3740 | (((uint64_t)(xop)) & 0x7ff))
74081948
AF
3741#define VX_SPE2_EVMAR_MASK \
3742 (VX_SPE2_EVMAR(0x3f, 0x7ff) \
0f873fd5 3743 | ((uint64_t)(0x1) << 11))
74081948 3744
fb048c26
PB
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
c0637f3a
PB
3766/* A VX_MASK with a PS field. */
3767#define VXPS_MASK (VX_MASK & ~(0x1 << 9))
3768
a680de9a 3769/* A VX_MASK with the VA field fixed with a PS field. */
fdefed7c
AM
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))
a680de9a 3774
c7d7aea2
AM
3775/* A VX_MASK for instructions using a BF field. */
3776#define VXBF_MASK (VX_MASK | (3 << 21))
3777
6edbfd3b
AM
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
b9c361e0 3784/* A VA form instruction. */
0f873fd5 3785#define VXA(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x03f))
786e2c0f 3786
112290ab 3787/* The mask for an VA form instruction. */
2613489e 3788#define VXA_MASK VXA(0x3f, 0x3f)
786e2c0f 3789
382c72e9
PB
3790/* A VXA_MASK with a SHB field. */
3791#define VXASHB_MASK (VXA_MASK | (1 << 10))
3792
b9c361e0 3793/* A VXR form instruction. */
b80c7270
AM
3794#define VXR(op, xop, rc) \
3795 (OP (op) \
0f873fd5
PB
3796 | (((uint64_t)(rc) & 1) << 10) \
3797 | (((uint64_t)(xop)) & 0x3ff))
786e2c0f 3798
112290ab 3799/* The mask for a VXR form instruction. */
786e2c0f
C
3800#define VXR_MASK VXR(0x3f, 0x3ff, 1)
3801
a680de9a
PB
3802/* A VX form instruction with a VA tertiary opcode. */
3803#define VXVA(op, xop, vaop) (VX(op,xop) | (((vaop) & 0x1f) << 16))
3804
0f873fd5 3805#define VXASH(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1f) << 1))
6fd3a02d
PB
3806#define VXASH_MASK VXASH (0x3f, 0x1f)
3807
252b5132 3808/* An X form instruction. */
0f873fd5 3809#define X(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x3ff) << 1))
252b5132 3810
a680de9a
PB
3811/* A X form instruction for Quad-Precision FP Instructions. */
3812#define XVA(op, xop, vaop) (X(op,xop) | (((vaop) & 0x1f) << 16))
3813
b9c361e0 3814/* An EX form instruction. */
0f873fd5 3815#define EX(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x7ff))
b9c361e0
JL
3816
3817/* The mask for an EX form instruction. */
3818#define EX_MASK EX (0x3f, 0x7ff)
3819
066be9f7 3820/* An XX2 form instruction. */
0f873fd5 3821#define XX2(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1ff) << 2))
066be9f7 3822
a680de9a
PB
3823/* A XX2 form instruction with the VA bits specified. */
3824#define XX2VA(op, xop, vaop) (XX2(op,xop) | (((vaop) & 0x1f) << 16))
3825
9b4e5766 3826/* An XX3 form instruction. */
0f873fd5 3827#define XX3(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0xff) << 3))
9b4e5766 3828
066be9f7 3829/* An XX3 form instruction with the RC bit specified. */
b80c7270
AM
3830#define XX3RC(op, xop, rc) \
3831 (OP (op) \
0f873fd5
PB
3832 | (((uint64_t)(rc) & 1) << 10) \
3833 | ((((uint64_t)(xop)) & 0x7f) << 3))
066be9f7
PB
3834
3835/* An XX4 form instruction. */
0f873fd5 3836#define XX4(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x3) << 4))
9b4e5766 3837
702f0fb4 3838/* A Z form instruction. */
0f873fd5 3839#define Z(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1ff) << 1))
702f0fb4 3840
252b5132
RH
3841/* An X form instruction with the RC bit specified. */
3842#define XRC(op, xop, rc) (X ((op), (xop)) | ((rc) & 1))
3843
a680de9a
PB
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
6fd3a02d 3847/* An X form instruction with the RA bits specified as two ops. */
b80c7270
AM
3848#define XMMF(op, xop, mop0, mop1) \
3849 (X ((op), (xop)) \
3850 | ((mop0) & 3) << 19 \
3851 | ((mop1) & 7) << 16)
6fd3a02d 3852
702f0fb4
PB
3853/* A Z form instruction with the RC bit specified. */
3854#define ZRC(op, xop, rc) (Z ((op), (xop)) | ((rc) & 1))
3855
252b5132
RH
3856/* The mask for an X form instruction. */
3857#define X_MASK XRC (0x3f, 0x3ff, 1)
3858
a680de9a
PB
3859/* The mask for an X form instruction with the BF bits specified. */
3860#define XBF_MASK (X_MASK | (3 << 21))
3861
aae7fcb8
PB
3862/* An X form instruction without the RC field specified. */
3863#define XRC_MASK XRC (0x3f, 0x3ff, 0)
3864
b80c7270
AM
3865/* An X form wait instruction with everything filled in except the WC
3866 field. */
e0d602ec
BE
3867#define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK)
3868
3d205eb4
PB
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
9b4e5766
PB
3873/* The mask for an XX1 form instruction. */
3874#define XX1_MASK X (0x3f, 0x3ff)
3875
c0637f3a
PB
3876/* An XX1_MASK with the RB field fixed. */
3877#define XX1RB_MASK (XX1_MASK | RB_MASK)
3878
066be9f7
PB
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
a680de9a
PB
3885/* The mask for an XX2 form instruction with the 4 UIM bits specified. */
3886#define XX2UIM4_MASK (XX2 (0x3f, 0x1ff) | (1 << 20))
3887
066be9f7
PB
3888/* The mask for an XX2 form instruction with the BF bits specified. */
3889#define XX2BF_MASK (XX2_MASK | (3 << 21) | (1))
3890
b80c7270
AM
3891/* The mask for an XX2 form instruction with the BF and DCMX bits
3892 specified. */
a680de9a
PB
3893#define XX2BFD_MASK (XX2 (0x3f, 0x1ff) | 1)
3894
b80c7270
AM
3895/* The mask for an XX2 form instruction with a split DCMX bits
3896 specified. */
a680de9a
PB
3897#define XX2DCMXS_MASK XX2 (0x3f, 0x1ee)
3898
9b4e5766
PB
3899/* The mask for an XX3 form instruction. */
3900#define XX3_MASK XX3 (0x3f, 0xff)
3901
066be9f7
PB
3902/* The mask for an XX3 form instruction with the BF bits specified. */
3903#define XX3BF_MASK (XX3 (0x3f, 0xff) | (3 << 21) | (1))
3904
b80c7270
AM
3905/* The mask for an XX3 form instruction with the DM or SHW bits
3906 specified. */
9b4e5766 3907#define XX3DM_MASK (XX3 (0x3f, 0x1f) | (1 << 10))
066be9f7
PB
3908#define XX3SHW_MASK XX3DM_MASK
3909
3910/* The mask for an XX4 form instruction. */
3911#define XX4_MASK XX4 (0x3f, 0x3)
3912
b80c7270
AM
3913/* An X form wait instruction with everything filled in except the WC
3914 field. */
066be9f7 3915#define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK)
9b4e5766 3916
6fd3a02d
PB
3917/* The mask for an XMMF form instruction. */
3918#define XMMF_MASK (XMMF (0x3f, 0x3ff, 3, 7) | (1))
3919
702f0fb4
PB
3920/* The mask for a Z form instruction. */
3921#define Z_MASK ZRC (0x3f, 0x1ff, 1)
0bbdef92 3922#define Z2_MASK ZRC (0x3f, 0xff, 1)
702f0fb4 3923
a680de9a 3924/* An X_MASK with the RA/VA field fixed. */
252b5132 3925#define XRA_MASK (X_MASK | RA_MASK)
a680de9a 3926#define XVA_MASK XRA_MASK
252b5132 3927
a680de9a 3928/* An XRA_MASK with the A_L/W field clear. */
0f873fd5 3929#define XWRA_MASK (XRA_MASK & ~((uint64_t) 1 << 16))
a680de9a 3930#define XRLA_MASK XWRA_MASK
ea192fa3 3931
252b5132
RH
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
3d205eb4 3938/* An XRT_MASK mask with the 2 L bits clear. */
0f873fd5 3939#define XLRT_MASK (XRT_MASK & ~((uint64_t) 0x3 << 21))
702f0fb4 3940
3d205eb4
PB
3941/* An XRT_MASK mask with the 3 L bits clear. */
3942#define XL3RT_MASK (XRT_MASK & ~((uint64_t) 0x7 << 21))
3943
252b5132
RH
3944/* An X_MASK with the RA and RB fields fixed. */
3945#define XRARB_MASK (X_MASK | RA_MASK | RB_MASK)
3946
a680de9a
PB
3947/* An XBF_MASK with the RA and RB fields fixed. */
3948#define XBFRARB_MASK (XBF_MASK | RA_MASK | RB_MASK)
3949
112290ab 3950/* An XRARB_MASK, but with the L bit clear. */
0f873fd5 3951#define XRLARB_MASK (XRARB_MASK & ~((uint64_t) 1 << 16))
5ae2e65e 3952
a680de9a 3953/* An XRARB_MASK, but with the L bits in a darn instruction clear. */
0f873fd5 3954#define XLRAND_MASK (XRARB_MASK & ~((uint64_t) 3 << 16))
a680de9a 3955
252b5132
RH
3956/* An X_MASK with the RT and RA fields fixed. */
3957#define XRTRA_MASK (X_MASK | RT_MASK | RA_MASK)
3958
5817ffd1
PB
3959/* An X_MASK with the RT and RB fields fixed. */
3960#define XRTRB_MASK (X_MASK | RT_MASK | RB_MASK)
3961
98acc1c5 3962/* An XRTRA_MASK, but with L bit clear. */
0f873fd5 3963#define XRTLRA_MASK (XRTRA_MASK & ~((uint64_t) 1 << 21))
98acc1c5 3964
5817ffd1
PB
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. */
0f873fd5 3969#define XRTLRARB_MASK (XRTRARB_MASK & ~((uint64_t) 1 << 21))
5817ffd1
PB
3970
3971/* An XRTRARB_MASK, but with A bit clear. */
0f873fd5 3972#define XRTARARB_MASK (XRTRARB_MASK & ~((uint64_t) 1 << 25))
5817ffd1
PB
3973
3974/* An XRTRARB_MASK, but with BF bits clear. */
0f873fd5 3975#define XRTBFRARB_MASK (XRTRARB_MASK & ~((uint64_t) 7 << 23))
5817ffd1 3976
f3806e43 3977/* An X form instruction with the L bit specified. */
b80c7270
AM
3978#define XOPL(op, xop, l) \
3979 (X ((op), (xop)) \
0f873fd5 3980 | ((((uint64_t)(l)) & 1) << 21))
252b5132 3981
3d205eb4 3982/* An X form instruction with the 2 L bits specified. */
b80c7270
AM
3983#define XOPL2(op, xop, l) \
3984 (X ((op), (xop)) \
0f873fd5 3985 | ((((uint64_t)(l)) & 3) << 21))
e0d602ec 3986
3d205eb4
PB
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
5817ffd1 3997/* An X form instruction with the L bit and RC bit specified. */
b80c7270
AM
3998#define XRCL(op, xop, l, rc) \
3999 (XRC ((op), (xop), (rc)) \
0f873fd5 4000 | ((((uint64_t)(l)) & 1) << 21))
5817ffd1 4001
19a6653c 4002/* An X form instruction with RT fields specified */
b80c7270
AM
4003#define XRT(op, xop, rt) \
4004 (X ((op), (xop)) \
0f873fd5 4005 | ((((uint64_t)(rt)) & 0x1f) << 21))
19a6653c
AM
4006
4007/* An X form instruction with RT and RA fields specified */
b80c7270
AM
4008#define XRTRA(op, xop, rt, ra) \
4009 (X ((op), (xop)) \
0f873fd5
PB
4010 | ((((uint64_t)(rt)) & 0x1f) << 21) \
4011 | ((((uint64_t)(ra)) & 0x1f) << 16))
19a6653c 4012
252b5132 4013/* The mask for an X form comparison instruction. */
0f873fd5 4014#define XCMP_MASK (X_MASK | (((uint64_t)1) << 22))
252b5132 4015
520ceea4
BE
4016/* The mask for an X form comparison instruction with the L field
4017 fixed. */
0f873fd5 4018#define XCMPL_MASK (XCMP_MASK | (((uint64_t)1) << 21))
252b5132
RH
4019
4020/* An X form trap instruction with the TO field specified. */
b80c7270
AM
4021#define XTO(op, xop, to) \
4022 (X ((op), (xop)) \
0f873fd5 4023 | ((((uint64_t)(to)) & 0x1f) << 21))
252b5132
RH
4024#define XTO_MASK (X_MASK | TO_MASK)
4025
e0c21649 4026/* An X form tlb instruction with the SH field specified. */
b80c7270
AM
4027#define XTLB(op, xop, sh) \
4028 (X ((op), (xop)) \
0f873fd5 4029 | ((((uint64_t)(sh)) & 0x1f) << 11))
e0c21649
GK
4030#define XTLB_MASK (X_MASK | SH_MASK)
4031
6ba045b1 4032/* An X form sync instruction. */
b80c7270
AM
4033#define XSYNC(op, xop, l) \
4034 (X ((op), (xop)) \
0f873fd5 4035 | ((((uint64_t)(l)) & 3) << 21))
6ba045b1 4036
b80c7270
AM
4037/* An X form sync instruction with everything filled in except the LS
4038 field. */
6ba045b1
AM
4039#define XSYNC_MASK (0xff9fffff)
4040
b80c7270
AM
4041/* An X form sync instruction with everything filled in except the L
4042 and E fields. */
aea77599
AM
4043#define XSYNCLE_MASK (0xff90ffff)
4044
3d205eb4
PB
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
702f0fb4 4055/* An X_MASK, but with the EH bit clear. */
0f873fd5 4056#define XEH_MASK (X_MASK & ~((uint64_t )1))
702f0fb4 4057
f5c120c5 4058/* An X form AltiVec dss instruction. */
0f873fd5 4059#define XDSS(op, xop, a) (X ((op), (xop)) | ((((uint64_t)(a)) & 1) << 25))
f5c120c5
MG
4060#define XDSS_MASK XDSS(0x3f, 0x3ff, 1)
4061
252b5132 4062/* An XFL form instruction. */
b80c7270
AM
4063#define XFL(op, xop, rc) \
4064 (OP (op) \
0f873fd5
PB
4065 | ((((uint64_t)(xop)) & 0x3ff) << 1) \
4066 | (((uint64_t)(rc)) & 1))
ea192fa3 4067#define XFL_MASK XFL (0x3f, 0x3ff, 1)
252b5132 4068
23976049 4069/* An X form isel instruction. */
1ff6a3b8
AM
4070#define XISEL(op, xop, cr) (OP (op) | ((xop) << 1) | ((cr) << 6))
4071#define XISEL_MASK XISEL(0x3f, 0x1f, 0)
23976049 4072
252b5132 4073/* An XL form instruction with the LK field set to 0. */
0f873fd5 4074#define XL(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x3ff) << 1))
252b5132
RH
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
c0637f3a
PB
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
252b5132
RH
4085/* An XL form instruction which explicitly sets the BO field. */
4086#define XLO(op, bo, xop, lk) \
0f873fd5 4087 (XLLK ((op), (xop), (lk)) | ((((uint64_t)(bo)) & 0x1f) << 21))
252b5132
RH
4088#define XLO_MASK (XL_MASK | BO_MASK)
4089
252b5132
RH
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) \
0f873fd5 4093 (XLO ((op), (bo), (xop), (lk)) | ((((uint64_t)(cb)) & 3) << 16))
252b5132 4094
5a403766 4095/* An XL_MASK with the BB field fixed. */
252b5132 4096#define XLBB_MASK (XL_MASK | BB_MASK)
252b5132 4097
d0618d1c 4098/* A mask for branch instructions using the BH field. */
66e85460 4099#define XLBH_MASK (XL_MASK | (BB_MASK & ~(3 << 11)))
d0618d1c 4100
5a403766
AM
4101/* An XLBH_MASK with the BO field fixed. */
4102#define XLBOBB_MASK (XLBH_MASK | BO_MASK)
252b5132 4103
5a403766
AM
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))
252b5132 4109
e01d869a 4110/* An X form mbar instruction with MO field. */
b80c7270
AM
4111#define XMBAR(op, xop, mo) \
4112 (X ((op), (xop)) \
0f873fd5 4113 | ((((uint64_t)(mo)) & 1) << 21))
e01d869a 4114
252b5132 4115/* An XO form instruction. */
b80c7270
AM
4116#define XO(op, xop, oe, rc) \
4117 (OP (op) \
0f873fd5
PB
4118 | ((((uint64_t)(xop)) & 0x1ff) << 1) \
4119 | ((((uint64_t)(oe)) & 1) << 10) \
b80c7270 4120 | (((unsigned long)(rc)) & 1))
252b5132
RH
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
c3d65c1c 4126/* An XOPS form instruction for paired singles. */
b80c7270
AM
4127#define XOPS(op, xop, rc) \
4128 (OP (op) \
0f873fd5
PB
4129 | ((((uint64_t)(xop)) & 0x3ff) << 1) \
4130 | (((uint64_t)(rc)) & 1))
c3d65c1c
BE
4131#define XOPS_MASK XOPS (0x3f, 0x3ff, 1)
4132
4133
252b5132 4134/* An XS form instruction. */
b80c7270
AM
4135#define XS(op, xop, rc) \
4136 (OP (op) \
0f873fd5
PB
4137 | ((((uint64_t)(xop)) & 0x1ff) << 2) \
4138 | (((uint64_t)(rc)) & 1))
252b5132
RH
4139#define XS_MASK XS (0x3f, 0x1ff, 1)
4140
4141/* A mask for the FXM version of an XFX form instruction. */
98e69875 4142#define XFXFXM_MASK (X_MASK | (1 << 11) | (1 << 20))
252b5132
RH
4143
4144/* An XFX form instruction with the FXM field filled in. */
b80c7270
AM
4145#define XFXM(op, xop, fxm, p4) \
4146 (X ((op), (xop)) \
0f873fd5
PB
4147 | ((((uint64_t)(fxm)) & 0xff) << 12) \
4148 | ((uint64_t)(p4) << 20))
252b5132
RH
4149
4150/* An XFX form instruction with the SPR field filled in. */
b80c7270
AM
4151#define XSPR(op, xop, spr) \
4152 (X ((op), (xop)) \
0f873fd5
PB
4153 | ((((uint64_t)(spr)) & 0x1f) << 16) \
4154 | ((((uint64_t)(spr)) & 0x3e0) << 6))
252b5132
RH
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
fa758a70
AC
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
252b5132
RH
4165/* An XFX form instruction with the SPR field filled in except for the
4166 SPRG field. */
b84bf58a 4167#define XSPRG_MASK (XSPR_MASK & ~(0x1f << 16))
252b5132
RH
4168
4169/* An X form instruction with everything filled in except the E field. */
4170#define XE_MASK (0xffff7fff)
4171
23976049 4172/* An X form user context instruction. */
0f873fd5 4173#define XUC(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f))
23976049
EZ
4174#define XUC_MASK XUC(0x3f, 0x1f)
4175
c3d65c1c 4176/* An XW form instruction. */
b80c7270
AM
4177#define XW(op, xop, rc) \
4178 (OP (op) \
0f873fd5 4179 | ((((uint64_t)(xop)) & 0x3f) << 1) \
b80c7270 4180 | ((rc) & 1))
c3d65c1c
BE
4181/* The mask for a G form instruction. rc not supported at present. */
4182#define XW_MASK XW (0x3f, 0x3f, 0)
4183
081ba1b3 4184/* An APU form instruction. */
b80c7270
AM
4185#define APU(op, xop, rc) \
4186 (OP (op) \
0f873fd5 4187 | (((uint64_t)(xop)) & 0x3ff) << 1 \
b80c7270 4188 | ((rc) & 1))
081ba1b3
AM
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
252b5132
RH
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)
252b5132
RH
4200#define BODNZT (0x8)
4201#define BODNZTP (0x9)
4202#define BODZT (0xa)
4203#define BODZTP (0xb)
802a735e
AM
4204
4205#define BOF (0x4)
4206#define BOFP (0x5)
94efba12
AM
4207#define BOFM4 (0x6)
4208#define BOFP4 (0x7)
252b5132
RH
4209#define BOT (0xc)
4210#define BOTP (0xd)
94efba12
AM
4211#define BOTM4 (0xe)
4212#define BOTP4 (0xf)
802a735e 4213
252b5132
RH
4214#define BODNZ (0x10)
4215#define BODNZP (0x11)
4216#define BODZ (0x12)
4217#define BODZP (0x13)
94efba12
AM
4218#define BODNZM4 (0x18)
4219#define BODNZP4 (0x19)
4220#define BODZM4 (0x1a)
4221#define BODZP4 (0x1b)
802a735e 4222
252b5132
RH
4223#define BOU (0x14)
4224
b9c361e0
JL
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
252b5132
RH
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
de866fcc 4262#define PPC PPC_OPCODE_PPC
661bd698 4263#define PPCCOM PPC_OPCODE_PPC | PPC_OPCODE_COMMON
661bd698 4264#define POWER4 PPC_OPCODE_POWER4
1ed8e1e4 4265#define POWER5 PPC_OPCODE_POWER5
702f0fb4 4266#define POWER6 PPC_OPCODE_POWER6
066be9f7 4267#define POWER7 PPC_OPCODE_POWER7
5817ffd1 4268#define POWER8 PPC_OPCODE_POWER8
a680de9a 4269#define POWER9 PPC_OPCODE_POWER9
7c1f4227 4270#define POWER10 PPC_OPCODE_POWER10
ede602d7 4271#define CELL PPC_OPCODE_CELL
bdc70b4a 4272#define PPC64 PPC_OPCODE_64 | PPC_OPCODE_64_BRIDGE
6b069ee7 4273#define NON32 (PPC_OPCODE_64 | PPC_OPCODE_POWER4 \
bdc70b4a 4274 | PPC_OPCODE_EFS | PPC_OPCODE_E500MC | PPC_OPCODE_TITAN)
418c1742 4275#define PPC403 PPC_OPCODE_403
081ba1b3 4276#define PPC405 PPC_OPCODE_405
7d5b217e 4277#define PPC440 PPC_OPCODE_440
c8187e15 4278#define PPC464 PPC440
9fe54b1c 4279#define PPC476 PPC_OPCODE_476
ef5a96d5 4280#define PPC750 PPC_OPCODE_750
fa758a70
AC
4281#define GEKKO PPC_OPCODE_750
4282#define BROADWAY PPC_OPCODE_750
ef5a96d5
AM
4283#define PPC7450 PPC_OPCODE_7450
4284#define PPC860 PPC_OPCODE_860
c3d65c1c 4285#define PPCPS PPC_OPCODE_PPCPS
a404d431 4286#define PPCVEC PPC_OPCODE_ALTIVEC
9a85b496
AM
4287#define PPCVEC2 (PPC_OPCODE_POWER8 | PPC_OPCODE_E6500)
4288#define PPCVEC3 PPC_OPCODE_POWER9
9b4e5766 4289#define PPCVSX PPC_OPCODE_VSX
9570835e
AM
4290#define PPCVSX2 PPC_OPCODE_POWER8
4291#define PPCVSX3 PPC_OPCODE_POWER9
aa3c112f 4292#define PPCVSX4 PPC_OPCODE_POWER10
de866fcc
AM
4293#define POWER PPC_OPCODE_POWER
4294#define POWER2 PPC_OPCODE_POWER | PPC_OPCODE_POWER2
81a0b7e2 4295#define PWR2COM PPC_OPCODE_POWER | PPC_OPCODE_POWER2 | PPC_OPCODE_COMMON
b80c7270
AM
4296#define PPCPWR2 (PPC_OPCODE_PPC | PPC_OPCODE_POWER | PPC_OPCODE_POWER2 \
4297 | PPC_OPCODE_COMMON)
de866fcc 4298#define COM PPC_OPCODE_POWER | PPC_OPCODE_PPC | PPC_OPCODE_COMMON
de866fcc 4299#define M601 PPC_OPCODE_POWER | PPC_OPCODE_601
661bd698 4300#define PWRCOM PPC_OPCODE_POWER | PPC_OPCODE_601 | PPC_OPCODE_COMMON
de866fcc 4301#define MFDEC1 PPC_OPCODE_POWER
b80c7270
AM
4302#define MFDEC2 (PPC_OPCODE_PPC | PPC_OPCODE_601 | PPC_OPCODE_BOOKE \
4303 | PPC_OPCODE_TITAN)
418c1742 4304#define BOOKE PPC_OPCODE_BOOKE
14b57c7c 4305#define NO371 PPC_OPCODE_BOOKE | PPC_OPCODE_PPCPS | PPC_OPCODE_EFS
36ae0db3 4306#define PPCE300 PPC_OPCODE_E300
14b57c7c 4307#define PPCSPE PPC_OPCODE_SPE
74081948 4308#define PPCSPE2 PPC_OPCODE_SPE2
14b57c7c
AM
4309#define PPCISEL PPC_OPCODE_ISEL
4310#define PPCEFS PPC_OPCODE_EFS
74081948 4311#define PPCEFS2 PPC_OPCODE_EFS2
de866fcc 4312#define PPCBRLK PPC_OPCODE_BRLOCK
23976049 4313#define PPCPMR PPC_OPCODE_PMR
aea77599 4314#define PPCTMR PPC_OPCODE_TMR
de866fcc 4315#define PPCCHLK PPC_OPCODE_CACHELCK
fa758a70 4316#define PPCRFMCI PPC_OPCODE_RFMCI
19a6653c 4317#define E500MC PPC_OPCODE_E500MC
634b50f2 4318#define PPCA2 PPC_OPCODE_A2
43e65147 4319#define TITAN PPC_OPCODE_TITAN
62adc510 4320#define MULHW PPC_OPCODE_405 | PPC_OPCODE_440 | PPC_OPCODE_476 | TITAN
e01d869a 4321#define E500 PPC_OPCODE_E500
aea77599 4322#define E6500 PPC_OPCODE_E6500
b9c361e0 4323#define PPCVLE PPC_OPCODE_VLE
ef85eab0 4324#define PPCHTM PPC_OPCODE_POWER8
dfdaec14 4325#define E200Z4 PPC_OPCODE_E200Z4
e3c2f928 4326#define PPCLSP PPC_OPCODE_LSP
1ff6a3b8
AM
4327/* Used to mark extended mnemonic in deprecated field so that -Mraw
4328 won't use this variant in disassembly. */
4329#define EXT PPC_OPCODE_RAW
252b5132
RH
4330\f
4331/* The opcode table.
4332
4333 The format of the opcode table is:
4334
8ebac3aa 4335 NAME OPCODE MASK FLAGS ANTI {OPERANDS}
252b5132
RH
4336
4337 NAME is the name of the instruction.
4338 OPCODE is the instruction opcode.
4339 MASK is the opcode mask; this is used to tell the disassembler
4340 which bits in the actual opcode must match OPCODE.
8ebac3aa
AM
4341 FLAGS are flags indicating which processors support the instruction.
4342 ANTI indicates which processors don't support the instruction.
252b5132
RH
4343 OPERANDS is the list of operands.
4344
4345 The disassembler reads the table in order and prints the first
4346 instruction which matches, so this table is sorted to put more
de866fcc
AM
4347 specific instructions before more general instructions.
4348
4349 This table must be sorted by major opcode. Please try to keep it
4350 vaguely sorted within major opcode too, except of course where
4351 constrained otherwise by disassembler operation. */
252b5132
RH
4352
4353const struct powerpc_opcode powerpc_opcodes[] = {
14b57c7c 4354{"attn", X(0,256), X_MASK, POWER4|PPCA2, PPC476|PPCVLE, {0}},
1ff6a3b8
AM
4355{"tdlgti", OPTO(2,TOLGT), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
4356{"tdllti", OPTO(2,TOLLT), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
4357{"tdeqi", OPTO(2,TOEQ), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
4358{"tdlgei", OPTO(2,TOLGE), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
4359{"tdlnli", OPTO(2,TOLNL), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
4360{"tdllei", OPTO(2,TOLLE), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
4361{"tdlngi", OPTO(2,TOLNG), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
4362{"tdgti", OPTO(2,TOGT), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
4363{"tdgei", OPTO(2,TOGE), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
4364{"tdnli", OPTO(2,TONL), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
4365{"tdlti", OPTO(2,TOLT), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
4366{"tdlei", OPTO(2,TOLE), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
4367{"tdngi", OPTO(2,TONG), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
4368{"tdnei", OPTO(2,TONE), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
4369{"tdui", OPTO(2,TOU), OPTO_MASK, PPC64, PPCVLE|EXT, {RA, SI}},
14b57c7c
AM
4370{"tdi", OP(2), OP_MASK, PPC64, PPCVLE, {TO, RA, SI}},
4371
1ff6a3b8
AM
4372{"twlgti", OPTO(3,TOLGT), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
4373{"tlgti", OPTO(3,TOLGT), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
4374{"twllti", OPTO(3,TOLLT), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
4375{"tllti", OPTO(3,TOLLT), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
4376{"tweqi", OPTO(3,TOEQ), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
4377{"teqi", OPTO(3,TOEQ), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
4378{"twlgei", OPTO(3,TOLGE), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
4379{"tlgei", OPTO(3,TOLGE), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
4380{"twlnli", OPTO(3,TOLNL), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
4381{"tlnli", OPTO(3,TOLNL), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
4382{"twllei", OPTO(3,TOLLE), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
4383{"tllei", OPTO(3,TOLLE), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
4384{"twlngi", OPTO(3,TOLNG), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
4385{"tlngi", OPTO(3,TOLNG), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
4386{"twgti", OPTO(3,TOGT), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
4387{"tgti", OPTO(3,TOGT), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
4388{"twgei", OPTO(3,TOGE), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
4389{"tgei", OPTO(3,TOGE), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
4390{"twnli", OPTO(3,TONL), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
4391{"tnli", OPTO(3,TONL), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
4392{"twlti", OPTO(3,TOLT), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
4393{"tlti", OPTO(3,TOLT), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
4394{"twlei", OPTO(3,TOLE), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
4395{"tlei", OPTO(3,TOLE), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
4396{"twngi", OPTO(3,TONG), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
4397{"tngi", OPTO(3,TONG), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
4398{"twnei", OPTO(3,TONE), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
4399{"tnei", OPTO(3,TONE), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
4400{"twui", OPTO(3,TOU), OPTO_MASK, PPCCOM, PPCVLE|EXT, {RA, SI}},
4401{"tui", OPTO(3,TOU), OPTO_MASK, PWRCOM, PPCVLE|EXT, {RA, SI}},
14b57c7c
AM
4402{"twi", OP(3), OP_MASK, PPCCOM, PPCVLE, {TO, RA, SI}},
4403{"ti", OP(3), OP_MASK, PWRCOM, PPCVLE, {TO, RA, SI}},
4404
4405{"ps_cmpu0", X (4, 0), XBF_MASK, PPCPS, 0, {BF, FRA, FRB}},
4406{"vaddubm", VX (4, 0), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4407{"vmul10cuq", VX (4, 1), VXVB_MASK, PPCVEC3, 0, {VD, VA}},
4408{"vmaxub", VX (4, 2), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4409{"vrlb", VX (4, 4), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
c7d7aea2 4410{"vrlq", VX (4, 5), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
4411{"vcmpequb", VXR(4, 6,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4412{"vcmpneb", VXR(4, 7,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
4413{"vmuloub", VX (4, 8), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4414{"vaddfp", VX (4, 10), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
c7d7aea2 4415{"vdivuq", VX (4, 11), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
4416{"psq_lx", XW (4, 6,0), XW_MASK, PPCPS, 0, {FRT,RA,RB,PSWM,PSQM}},
4417{"vmrghb", VX (4, 12), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
66ef5847
AM
4418{"vstribl", VXVA(4,13,0), VXVA_MASK, POWER10, 0, {VD, VB}},
4419{"vstribr", VXVA(4,13,1), VXVA_MASK, POWER10, 0, {VD, VB}},
4420{"vstrihl", VXVA(4,13,2), VXVA_MASK, POWER10, 0, {VD, VB}},
4421{"vstrihr", VXVA(4,13,3), VXVA_MASK, POWER10, 0, {VD, VB}},
14b57c7c
AM
4422{"psq_stx", XW (4, 7,0), XW_MASK, PPCPS, 0, {FRS,RA,RB,PSWM,PSQM}},
4423{"vpkuhum", VX (4, 14), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
6edbfd3b 4424{"vinsbvlx", VX (4, 15), VX_MASK, POWER10, 0, {VD, RA, VB}},
14b57c7c
AM
4425{"mulhhwu", XRC(4, 8,0), X_MASK, MULHW, 0, {RT, RA, RB}},
4426{"mulhhwu.", XRC(4, 8,1), X_MASK, MULHW, 0, {RT, RA, RB}},
fdefed7c 4427{"mtvsrbmi", DX (4,10), DX_MASK, POWER10, 0, {VD, DXD}},
14b57c7c
AM
4428{"ps_sum0", A (4, 10,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
4429{"ps_sum0.", A (4, 10,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
6edbfd3b 4430{"vsldbi", VX (4, 22), VXSH_MASK, POWER10, 0, {VD, VA, VB, SH3}},
14b57c7c
AM
4431{"ps_sum1", A (4, 11,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
4432{"ps_sum1.", A (4, 11,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
6edbfd3b 4433{"vextdubvlx", VX (4, 24), VXRC_MASK, POWER10, 0, {VD, VA, VB, RC}},
14b57c7c
AM
4434{"ps_muls0", A (4, 12,0), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
4435{"machhwu", XO (4, 12,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
6edbfd3b 4436{"vextdubvrx", VX (4, 25), VXRC_MASK, POWER10, 0, {VD, VA, VB, RC}},
14b57c7c
AM
4437{"ps_muls0.", A (4, 12,1), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
4438{"machhwu.", XO (4, 12,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
6edbfd3b 4439{"vextduhvlx", VX (4, 26), VXRC_MASK, POWER10, 0, {VD, VA, VB, RC}},
14b57c7c 4440{"ps_muls1", A (4, 13,0), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
6edbfd3b 4441{"vextduhvrx", VX (4, 27), VXRC_MASK, POWER10, 0, {VD, VA, VB, RC}},
14b57c7c 4442{"ps_muls1.", A (4, 13,1), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
6edbfd3b 4443{"vextduwvlx", VX (4, 28), VXRC_MASK, POWER10, 0, {VD, VA, VB, RC}},
14b57c7c 4444{"ps_madds0", A (4, 14,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
6edbfd3b 4445{"vextduwvrx", VX (4, 29), VXRC_MASK, POWER10, 0, {VD, VA, VB, RC}},
14b57c7c 4446{"ps_madds0.", A (4, 14,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
6edbfd3b 4447{"vextddvlx", VX (4, 30), VXRC_MASK, POWER10, 0, {VD, VA, VB, RC}},
14b57c7c 4448{"ps_madds1", A (4, 15,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
6edbfd3b 4449{"vextddvrx", VX (4, 31), VXRC_MASK, POWER10, 0, {VD, VA, VB, RC}},
14b57c7c
AM
4450{"ps_madds1.", A (4, 15,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
4451{"vmhaddshs", VXA(4, 32), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
4452{"vmhraddshs", VXA(4, 33), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
4453{"vmladduhm", VXA(4, 34), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
4454{"vmsumudm", VXA(4, 35), VXA_MASK, PPCVEC3, 0, {VD, VA, VB, VC}},
4455{"ps_div", A (4, 18,0), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
c7d7aea2 4456{"vmsumcud", VXA(4, 23), VXA_MASK, POWER10, 0, {VD, VA, VB, VC}},
14b57c7c
AM
4457{"vmsumubm", VXA(4, 36), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
4458{"ps_div.", A (4, 18,1), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
4459{"vmsummbm", VXA(4, 37), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
4460{"vmsumuhm", VXA(4, 38), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
4461{"vmsumuhs", VXA(4, 39), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
4462{"ps_sub", A (4, 20,0), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
4463{"vmsumshm", VXA(4, 40), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
4464{"ps_sub.", A (4, 20,1), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
4465{"vmsumshs", VXA(4, 41), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
4466{"ps_add", A (4, 21,0), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
4467{"vsel", VXA(4, 42), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
4468{"ps_add.", A (4, 21,1), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
4469{"vperm", VXA(4, 43), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
4470{"vsldoi", VXA(4, 44), VXASHB_MASK, PPCVEC, 0, {VD, VA, VB, SHB}},
4471{"vpermxor", VXA(4, 45), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}},
4472{"ps_sel", A (4, 23,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
4473{"vmaddfp", VXA(4, 46), VXA_MASK, PPCVEC, 0, {VD, VA, VC, VB}},
4474{"ps_sel.", A (4, 23,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
4475{"vnmsubfp", VXA(4, 47), VXA_MASK, PPCVEC, 0, {VD, VA, VC, VB}},
4476{"ps_res", A (4, 24,0), AFRAFRC_MASK, PPCPS, 0, {FRT, FRB}},
4477{"maddhd", VXA(4, 48), VXA_MASK, POWER9, 0, {RT, RA, RB, RC}},
4478{"ps_res.", A (4, 24,1), AFRAFRC_MASK, PPCPS, 0, {FRT, FRB}},
4479{"maddhdu", VXA(4, 49), VXA_MASK, POWER9, 0, {RT, RA, RB, RC}},
4480{"ps_mul", A (4, 25,0), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
4481{"ps_mul.", A (4, 25,1), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
4482{"maddld", VXA(4, 51), VXA_MASK, POWER9, 0, {RT, RA, RB, RC}},
4483{"ps_rsqrte", A (4, 26,0), AFRAFRC_MASK, PPCPS, 0, {FRT, FRB}},
4484{"ps_rsqrte.", A (4, 26,1), AFRAFRC_MASK, PPCPS, 0, {FRT, FRB}},
4485{"ps_msub", A (4, 28,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
4486{"ps_msub.", A (4, 28,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
4487{"ps_madd", A (4, 29,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
4488{"ps_madd.", A (4, 29,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
4489{"vpermr", VXA(4, 59), VXA_MASK, PPCVEC3, 0, {VD, VA, VB, VC}},
4490{"ps_nmsub", A (4, 30,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
4491{"vaddeuqm", VXA(4, 60), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}},
4492{"ps_nmsub.", A (4, 30,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
4493{"vaddecuq", VXA(4, 61), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}},
4494{"ps_nmadd", A (4, 31,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
4495{"vsubeuqm", VXA(4, 62), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}},
4496{"ps_nmadd.", A (4, 31,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
4497{"vsubecuq", VXA(4, 63), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}},
4498{"ps_cmpo0", X (4, 32), XBF_MASK, PPCPS, 0, {BF, FRA, FRB}},
4499{"vadduhm", VX (4, 64), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4500{"vmul10ecuq", VX (4, 65), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
4501{"vmaxuh", VX (4, 66), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4502{"vrlh", VX (4, 68), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
c7d7aea2 4503{"vrlqmi", VX (4, 69), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
4504{"vcmpequh", VXR(4, 70,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4505{"vcmpneh", VXR(4, 71,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
4506{"vmulouh", VX (4, 72), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4507{"vsubfp", VX (4, 74), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4508{"psq_lux", XW (4, 38,0), XW_MASK, PPCPS, 0, {FRT,RA,RB,PSWM,PSQM}},
4509{"vmrghh", VX (4, 76), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4510{"psq_stux", XW (4, 39,0), XW_MASK, PPCPS, 0, {FRS,RA,RB,PSWM,PSQM}},
4511{"vpkuwum", VX (4, 78), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
6edbfd3b 4512{"vinshvlx", VX (4, 79), VX_MASK, POWER10, 0, {VD, RA, VB}},
14b57c7c
AM
4513{"ps_neg", XRC(4, 40,0), XRA_MASK, PPCPS, 0, {FRT, FRB}},
4514{"mulhhw", XRC(4, 40,0), X_MASK, MULHW, 0, {RT, RA, RB}},
4515{"ps_neg.", XRC(4, 40,1), XRA_MASK, PPCPS, 0, {FRT, FRB}},
4516{"mulhhw.", XRC(4, 40,1), X_MASK, MULHW, 0, {RT, RA, RB}},
4517{"machhw", XO (4, 44,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4518{"machhw.", XO (4, 44,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4519{"nmachhw", XO (4, 46,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4520{"nmachhw.", XO (4, 46,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4521{"ps_cmpu1", X (4, 64), XBF_MASK, PPCPS, 0, {BF, FRA, FRB}},
4522{"vadduwm", VX (4, 128), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4523{"vmaxuw", VX (4, 130), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4524{"vrlw", VX (4, 132), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4525{"vrlwmi", VX (4, 133), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
4526{"vcmpequw", VXR(4, 134,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4527{"vcmpnew", VXR(4, 135,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
4528{"vmulouw", VX (4, 136), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4529{"vmuluwm", VX (4, 137), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
f4791f1a 4530{"vdivuw", VX (4, 139), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
4531{"vmrghw", VX (4, 140), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4532{"vpkuhus", VX (4, 142), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
6edbfd3b 4533{"vinswvlx", VX (4, 143), VX_MASK, POWER10, 0, {VD, RA, VB}},
14b57c7c
AM
4534{"ps_mr", XRC(4, 72,0), XRA_MASK, PPCPS, 0, {FRT, FRB}},
4535{"ps_mr.", XRC(4, 72,1), XRA_MASK, PPCPS, 0, {FRT, FRB}},
4536{"machhwsu", XO (4, 76,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4537{"machhwsu.", XO (4, 76,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4538{"ps_cmpo1", X (4, 96), XBF_MASK, PPCPS, 0, {BF, FRA, FRB}},
4539{"vaddudm", VX (4, 192), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4540{"vmaxud", VX (4, 194), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4541{"vrld", VX (4, 196), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4542{"vrldmi", VX (4, 197), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
4543{"vcmpeqfp", VXR(4, 198,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4544{"vcmpequd", VXR(4, 199,0), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
c7d7aea2 4545{"vmuloud", VX (4, 200), VX_MASK, POWER10, 0, {VD, VA, VB}},
f4791f1a 4546{"vdivud", VX (4, 203), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c 4547{"vpkuwus", VX (4, 206), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
6edbfd3b 4548{"vinsw", VX (4, 207), VXUIMM4_MASK, POWER10, 0, {VD, RB, UIMM4}},
14b57c7c
AM
4549{"machhws", XO (4, 108,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4550{"machhws.", XO (4, 108,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4551{"nmachhws", XO (4, 110,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4552{"nmachhws.", XO (4, 110,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4553{"vadduqm", VX (4, 256), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
18a8a00e 4554{"vcmpuq", VX (4, 257), VXBF_MASK, POWER10, 0, {BF, VA, VB}},
14b57c7c
AM
4555{"vmaxsb", VX (4, 258), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4556{"vslb", VX (4, 260), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
c7d7aea2 4557{"vslq", VX (4, 261), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
4558{"vcmpnezb", VXR(4, 263,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
4559{"vmulosb", VX (4, 264), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4560{"vrefp", VX (4, 266), VXVA_MASK, PPCVEC, 0, {VD, VB}},
c7d7aea2 4561{"vdivsq", VX (4, 267), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
4562{"vmrglb", VX (4, 268), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4563{"vpkshus", VX (4, 270), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
6edbfd3b 4564{"vinsbvrx", VX (4, 271), VX_MASK, POWER10, 0, {VD, RA, VB}},
14b57c7c
AM
4565{"ps_nabs", XRC(4, 136,0), XRA_MASK, PPCPS, 0, {FRT, FRB}},
4566{"mulchwu", XRC(4, 136,0), X_MASK, MULHW, 0, {RT, RA, RB}},
4567{"ps_nabs.", XRC(4, 136,1), XRA_MASK, PPCPS, 0, {FRT, FRB}},
4568{"mulchwu.", XRC(4, 136,1), X_MASK, MULHW, 0, {RT, RA, RB}},
4569{"macchwu", XO (4, 140,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4570{"macchwu.", XO (4, 140,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4571{"vaddcuq", VX (4, 320), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
18a8a00e 4572{"vcmpsq", VX (4, 321), VXBF_MASK, POWER10, 0, {BF, VA, VB}},
14b57c7c
AM
4573{"vmaxsh", VX (4, 322), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4574{"vslh", VX (4, 324), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
c7d7aea2 4575{"vrlqnm", VX (4, 325), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
4576{"vcmpnezh", VXR(4, 327,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
4577{"vmulosh", VX (4, 328), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4578{"vrsqrtefp", VX (4, 330), VXVA_MASK, PPCVEC, 0, {VD, VB}},
4579{"vmrglh", VX (4, 332), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4580{"vpkswus", VX (4, 334), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
6edbfd3b 4581{"vinshvrx", VX (4, 335), VX_MASK, POWER10, 0, {VD, RA, VB}},
14b57c7c
AM
4582{"mulchw", XRC(4, 168,0), X_MASK, MULHW, 0, {RT, RA, RB}},
4583{"mulchw.", XRC(4, 168,1), X_MASK, MULHW, 0, {RT, RA, RB}},
4584{"macchw", XO (4, 172,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4585{"macchw.", XO (4, 172,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4586{"nmacchw", XO (4, 174,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4587{"nmacchw.", XO (4, 174,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4588{"vaddcuw", VX (4, 384), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4589{"vmaxsw", VX (4, 386), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4590{"vslw", VX (4, 388), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4591{"vrlwnm", VX (4, 389), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
4592{"vcmpnezw", VXR(4, 391,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
4593{"vmulosw", VX (4, 392), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4594{"vexptefp", VX (4, 394), VXVA_MASK, PPCVEC, 0, {VD, VB}},
f4791f1a 4595{"vdivsw", VX (4, 395), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c 4596{"vmrglw", VX (4, 396), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
66ef5847 4597{"vclrlb", VX (4, 397), VX_MASK, POWER10, 0, {VD, VA, RB}},
14b57c7c 4598{"vpkshss", VX (4, 398), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
6edbfd3b 4599{"vinswvrx", VX (4, 399), VX_MASK, POWER10, 0, {VD, RA, VB}},
14b57c7c
AM
4600{"macchwsu", XO (4, 204,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4601{"macchwsu.", XO (4, 204,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4602{"vmaxsd", VX (4, 450), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4603{"vsl", VX (4, 452), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4604{"vrldnm", VX (4, 453), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
4605{"vcmpgefp", VXR(4, 454,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
c7d7aea2
AM
4606{"vcmpequq", VXR(4, 455,0), VXR_MASK, POWER10, 0, {VD, VA, VB}},
4607{"vmulosd", VX (4, 456), VX_MASK, POWER10, 0, {VD, VA, VB}},
f4791f1a 4608{"vmulld", VX (4, 457), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c 4609{"vlogefp", VX (4, 458), VXVA_MASK, PPCVEC, 0, {VD, VB}},
f4791f1a 4610{"vdivsd", VX (4, 459), VX_MASK, POWER10, 0, {VD, VA, VB}},
66ef5847 4611{"vclrrb", VX (4, 461), VX_MASK, POWER10, 0, {VD, VA, RB}},
14b57c7c 4612{"vpkswss", VX (4, 462), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
6edbfd3b 4613{"vinsd", VX (4, 463), VXUIMM4_MASK, POWER10, 0, {VD, RB, UIMM4}},
14b57c7c
AM
4614{"macchws", XO (4, 236,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4615{"macchws.", XO (4, 236,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4616{"nmacchws", XO (4, 238,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4617{"nmacchws.", XO (4, 238,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4618{"evaddw", VX (4, 512), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4619{"vaddubs", VX (4, 512), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4620{"vmul10uq", VX (4, 513), VXVB_MASK, PPCVEC3, 0, {VD, VA}},
4621{"evaddiw", VX (4, 514), VX_MASK, PPCSPE, 0, {RS, RB, UIMM}},
4622{"vminub", VX (4, 514), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4623{"evsubfw", VX (4, 516), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4624{"evsubw", VX (4, 516), VX_MASK, PPCSPE, 0, {RS, RB, RA}},
4625{"vsrb", VX (4, 516), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
c7d7aea2 4626{"vsrq", VX (4, 517), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
4627{"evsubifw", VX (4, 518), VX_MASK, PPCSPE, 0, {RS, UIMM, RB}},
4628{"evsubiw", VX (4, 518), VX_MASK, PPCSPE, 0, {RS, RB, UIMM}},
4629{"vcmpgtub", VXR(4, 518,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4630{"evabs", VX (4, 520), VX_MASK, PPCSPE, 0, {RS, RA}},
4631{"vmuleub", VX (4, 520), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4632{"evneg", VX (4, 521), VX_MASK, PPCSPE, 0, {RS, RA}},
4633{"evextsb", VX (4, 522), VX_MASK, PPCSPE, 0, {RS, RA}},
4634{"vrfin", VX (4, 522), VXVA_MASK, PPCVEC, 0, {VD, VB}},
c7d7aea2 4635{"vdiveuq", VX (4, 523), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
4636{"evextsh", VX (4, 523), VX_MASK, PPCSPE, 0, {RS, RA}},
4637{"evrndw", VX (4, 524), VX_MASK, PPCSPE, 0, {RS, RA}},
4638{"vspltb", VX (4, 524), VXUIMM4_MASK, PPCVEC, 0, {VD, VB, UIMM4}},
4639{"vextractub", VX (4, 525), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
4640{"evcntlzw", VX (4, 525), VX_MASK, PPCSPE, 0, {RS, RA}},
4641{"evcntlsw", VX (4, 526), VX_MASK, PPCSPE, 0, {RS, RA}},
4642{"vupkhsb", VX (4, 526), VXVA_MASK, PPCVEC, 0, {VD, VB}},
6edbfd3b 4643{"vinsblx", VX (4, 527), VX_MASK, POWER10, 0, {VD, RA, RB}},
14b57c7c
AM
4644{"brinc", VX (4, 527), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4645{"ps_abs", XRC(4, 264,0), XRA_MASK, PPCPS, 0, {FRT, FRB}},
4646{"ps_abs.", XRC(4, 264,1), XRA_MASK, PPCPS, 0, {FRT, FRB}},
4647{"evand", VX (4, 529), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4648{"evandc", VX (4, 530), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
6edbfd3b 4649{"vsrdbi", VX (4, 534), VXSH_MASK, POWER10, 0, {VD, VA, VB, SH3}},
14b57c7c 4650{"evxor", VX (4, 534), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
1ff6a3b8 4651{"evmr", VX (4, 535), VX_MASK, PPCSPE, EXT, {RS, RAB}},
14b57c7c 4652{"evor", VX (4, 535), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
1ff6a3b8 4653{"evnot", VX (4, 536), VX_MASK, PPCSPE, EXT, {RS, RAB}},
14b57c7c 4654{"evnor", VX (4, 536), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
14b57c7c
AM
4655{"get", APU(4, 268,0), APU_RA_MASK, PPC405, 0, {RT, FSL}},
4656{"eveqv", VX (4, 537), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4657{"evorc", VX (4, 539), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4658{"evnand", VX (4, 542), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4659{"evsrwu", VX (4, 544), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4660{"evsrws", VX (4, 545), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4661{"evsrwiu", VX (4, 546), VX_MASK, PPCSPE, 0, {RS, RA, EVUIMM}},
4662{"evsrwis", VX (4, 547), VX_MASK, PPCSPE, 0, {RS, RA, EVUIMM}},
4663{"evslw", VX (4, 548), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4664{"evslwi", VX (4, 550), VX_MASK, PPCSPE, 0, {RS, RA, EVUIMM}},
4665{"evrlw", VX (4, 552), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4666{"evsplati", VX (4, 553), VX_MASK, PPCSPE, 0, {RS, SIMM}},
4667{"evrlwi", VX (4, 554), VX_MASK, PPCSPE, 0, {RS, RA, EVUIMM}},
4668{"evsplatfi", VX (4, 555), VX_MASK, PPCSPE, 0, {RS, SIMM}},
4669{"evmergehi", VX (4, 556), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4670{"evmergelo", VX (4, 557), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4671{"evmergehilo", VX (4, 558), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4672{"evmergelohi", VX (4, 559), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4673{"evcmpgtu", VX (4, 560), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
4674{"evcmpgts", VX (4, 561), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
4675{"evcmpltu", VX (4, 562), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
4676{"evcmplts", VX (4, 563), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
4677{"evcmpeq", VX (4, 564), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
4678{"cget", APU(4, 284,0), APU_RA_MASK, PPC405, 0, {RT, FSL}},
4679{"vadduhs", VX (4, 576), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4680{"vmul10euq", VX (4, 577), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
4681{"vminuh", VX (4, 578), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4682{"vsrh", VX (4, 580), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4683{"vcmpgtuh", VXR(4, 582,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4684{"vmuleuh", VX (4, 584), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4685{"vrfiz", VX (4, 586), VXVA_MASK, PPCVEC, 0, {VD, VB}},
4686{"vsplth", VX (4, 588), VXUIMM3_MASK, PPCVEC, 0, {VD, VB, UIMM3}},
4687{"vextractuh", VX (4, 589), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
4688{"vupkhsh", VX (4, 590), VXVA_MASK, PPCVEC, 0, {VD, VB}},
6edbfd3b 4689{"vinshlx", VX (4, 591), VX_MASK, POWER10, 0, {VD, RA, RB}},
14b57c7c
AM
4690{"nget", APU(4, 300,0), APU_RA_MASK, PPC405, 0, {RT, FSL}},
4691{"evsel", EVSEL(4,79), EVSEL_MASK, PPCSPE, 0, {RS, RA, RB, CRFS}},
4692{"ncget", APU(4, 316,0), APU_RA_MASK, PPC405, 0, {RT, FSL}},
4693{"evfsadd", VX (4, 640), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4694{"vadduws", VX (4, 640), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4695{"evfssub", VX (4, 641), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
74081948 4696{"evfsmadd", VX (4, 642), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
14b57c7c 4697{"vminuw", VX (4, 642), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
74081948 4698{"evfsmsub", VX (4, 643), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
14b57c7c
AM
4699{"evfsabs", VX (4, 644), VX_MASK, PPCSPE, 0, {RS, RA}},
4700{"vsrw", VX (4, 644), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4701{"evfsnabs", VX (4, 645), VX_MASK, PPCSPE, 0, {RS, RA}},
4702{"evfsneg", VX (4, 646), VX_MASK, PPCSPE, 0, {RS, RA}},
4703{"vcmpgtuw", VXR(4, 646,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
c7d7aea2 4704{"vcmpgtuq", VXR(4, 647,0), VXR_MASK, POWER10, 0, {VD, VA, VB}},
74081948 4705{"evfssqrt", VX_RB_CONST(4, 647, 0), VX_RB_CONST_MASK, PPCEFS2, 0, {RD, RA}},
14b57c7c
AM
4706{"vmuleuw", VX (4, 648), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4707{"evfsmul", VX (4, 648), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
f4791f1a 4708{"vmulhuw", VX (4, 649), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c 4709{"evfsdiv", VX (4, 649), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
74081948 4710{"evfsnmadd", VX (4, 650), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
14b57c7c 4711{"vrfip", VX (4, 650), VXVA_MASK, PPCVEC, 0, {VD, VB}},
f4791f1a 4712{"vdiveuw", VX (4, 651), VX_MASK, POWER10, 0, {VD, VA, VB}},
74081948 4713{"evfsnmsub", VX (4, 651), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
14b57c7c
AM
4714{"evfscmpgt", VX (4, 652), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
4715{"vspltw", VX (4, 652), VXUIMM2_MASK, PPCVEC, 0, {VD, VB, UIMM2}},
4716{"vextractuw", VX (4, 653), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
4717{"evfscmplt", VX (4, 653), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
4718{"evfscmpeq", VX (4, 654), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
4719{"vupklsb", VX (4, 654), VXVA_MASK, PPCVEC, 0, {VD, VB}},
6edbfd3b 4720{"vinswlx", VX (4, 655), VX_MASK, POWER10, 0, {VD, RA, RB}},
14b57c7c 4721{"evfscfui", VX (4, 656), VX_MASK, PPCSPE, 0, {RS, RB}},
74081948 4722{"evfscfh", VX_RA_CONST(4, 657, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
14b57c7c
AM
4723{"evfscfsi", VX (4, 657), VX_MASK, PPCSPE, 0, {RS, RB}},
4724{"evfscfuf", VX (4, 658), VX_MASK, PPCSPE, 0, {RS, RB}},
4725{"evfscfsf", VX (4, 659), VX_MASK, PPCSPE, 0, {RS, RB}},
4726{"evfsctui", VX (4, 660), VX_MASK, PPCSPE, 0, {RS, RB}},
74081948 4727{"evfscth", VX_RA_CONST(4, 661, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
14b57c7c
AM
4728{"evfsctsi", VX (4, 661), VX_MASK, PPCSPE, 0, {RS, RB}},
4729{"evfsctuf", VX (4, 662), VX_MASK, PPCSPE, 0, {RS, RB}},
4730{"evfsctsf", VX (4, 663), VX_MASK, PPCSPE, 0, {RS, RB}},
4731{"evfsctuiz", VX (4, 664), VX_MASK, PPCSPE, 0, {RS, RB}},
4732{"put", APU(4, 332,0), APU_RT_MASK, PPC405, 0, {RA, FSL}},
4733{"evfsctsiz", VX (4, 666), VX_MASK, PPCSPE, 0, {RS, RB}},
4734{"evfststgt", VX (4, 668), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
4735{"evfststlt", VX (4, 669), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
4736{"evfststeq", VX (4, 670), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
74081948
AF
4737{"evfsmax", VX (4, 672), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4738{"evfsmin", VX (4, 673), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4739{"evfsaddsub", VX (4, 674), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4740{"evfssubadd", VX (4, 675), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4741{"evfssum", VX (4, 676), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4742{"evfsdiff", VX (4, 677), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4743{"evfssumdiff", VX (4, 678), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4744{"evfsdiffsum", VX (4, 679), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4745{"evfsaddx", VX (4, 680), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4746{"evfssubx", VX (4, 681), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4747{"evfsaddsubx", VX (4, 682), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4748{"evfssubaddx", VX (4, 683), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4749{"evfsmulx", VX (4, 684), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4750{"evfsmule", VX (4, 686), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4751{"evfsmulo", VX (4, 687), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4752{"efsmax", VX (4, 688), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4753{"efsmin", VX (4, 689), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4754{"efdmax", VX (4, 696), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
14b57c7c 4755{"cput", APU(4, 348,0), APU_RT_MASK, PPC405, 0, {RA, FSL}},
74081948 4756{"efdmin", VX (4, 697), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
14b57c7c
AM
4757{"efsadd", VX (4, 704), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
4758{"efssub", VX (4, 705), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
74081948 4759{"efsmadd", VX (4, 706), VX_MASK, PPCEFS2, 0, {RS, RA, RB}},
14b57c7c 4760{"vminud", VX (4, 706), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
74081948 4761{"efsmsub", VX (4, 707), VX_MASK, PPCEFS2, 0, {RS, RA, RB}},
14b57c7c
AM
4762{"efsabs", VX (4, 708), VX_MASK, PPCEFS, 0, {RS, RA}},
4763{"vsr", VX (4, 708), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4764{"efsnabs", VX (4, 709), VX_MASK, PPCEFS, 0, {RS, RA}},
4765{"efsneg", VX (4, 710), VX_MASK, PPCEFS, 0, {RS, RA}},
4766{"vcmpgtfp", VXR(4, 710,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
74081948 4767{"efssqrt", VX_RB_CONST(4, 711, 0), VX_RB_CONST_MASK,PPCEFS2, 0, {RD, RA}},
14b57c7c 4768{"vcmpgtud", VXR(4, 711,0), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
c7d7aea2 4769{"vmuleud", VX (4, 712), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c 4770{"efsmul", VX (4, 712), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
f4791f1a 4771{"vmulhud", VX (4, 713), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c 4772{"efsdiv", VX (4, 713), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
74081948 4773{"efsnmadd", VX (4, 714), VX_MASK, PPCEFS2, 0, {RS, RA, RB}},
14b57c7c 4774{"vrfim", VX (4, 714), VXVA_MASK, PPCVEC, 0, {VD, VB}},
f4791f1a 4775{"vdiveud", VX (4, 715), VX_MASK, POWER10, 0, {VD, VA, VB}},
74081948 4776{"efsnmsub", VX (4, 715), VX_MASK, PPCEFS2, 0, {RS, RA, RB}},
14b57c7c
AM
4777{"efscmpgt", VX (4, 716), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
4778{"vextractd", VX (4, 717), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
4779{"efscmplt", VX (4, 717), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
4780{"efscmpeq", VX (4, 718), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
4781{"vupklsh", VX (4, 718), VXVA_MASK, PPCVEC, 0, {VD, VB}},
6edbfd3b 4782{"vinsdlx", VX (4, 719), VX_MASK, POWER10, 0, {VD, RA, RB}},
14b57c7c
AM
4783{"efscfd", VX (4, 719), VX_MASK, PPCEFS, 0, {RS, RB}},
4784{"efscfui", VX (4, 720), VX_MASK, PPCEFS, 0, {RS, RB}},
74081948 4785{"efscfh", VX_RA_CONST(4, 721, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
14b57c7c
AM
4786{"efscfsi", VX (4, 721), VX_MASK, PPCEFS, 0, {RS, RB}},
4787{"efscfuf", VX (4, 722), VX_MASK, PPCEFS, 0, {RS, RB}},
4788{"efscfsf", VX (4, 723), VX_MASK, PPCEFS, 0, {RS, RB}},
4789{"efsctui", VX (4, 724), VX_MASK, PPCEFS, 0, {RS, RB}},
74081948 4790{"efscth", VX_RA_CONST(4, 725, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
14b57c7c
AM
4791{"efsctsi", VX (4, 725), VX_MASK, PPCEFS, 0, {RS, RB}},
4792{"efsctuf", VX (4, 726), VX_MASK, PPCEFS, 0, {RS, RB}},
4793{"efsctsf", VX (4, 727), VX_MASK, PPCEFS, 0, {RS, RB}},
4794{"efsctuiz", VX (4, 728), VX_MASK, PPCEFS, 0, {RS, RB}},
4795{"nput", APU(4, 364,0), APU_RT_MASK, PPC405, 0, {RA, FSL}},
4796{"efsctsiz", VX (4, 730), VX_MASK, PPCEFS, 0, {RS, RB}},
4797{"efststgt", VX (4, 732), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
4798{"efststlt", VX (4, 733), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
4799{"efststeq", VX (4, 734), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
4800{"efdadd", VX (4, 736), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
4801{"efdsub", VX (4, 737), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
74081948
AF
4802{"efdmadd", VX (4, 738), VX_MASK, PPCEFS2, E500|E500MC, {RD, RA, RB}},
4803{"efdcfuid", VX (4, 738), VX_MASK, E500|E500MC,0, {RS, RB}},
4804{"efdmsub", VX (4, 739), VX_MASK, PPCEFS2, E500|E500MC, {RD, RA, RB}},
4805{"efdcfsid", VX (4, 739), VX_MASK, E500|E500MC,0, {RS, RB}},
14b57c7c
AM
4806{"efdabs", VX (4, 740), VX_MASK, PPCEFS, 0, {RS, RA}},
4807{"efdnabs", VX (4, 741), VX_MASK, PPCEFS, 0, {RS, RA}},
4808{"efdneg", VX (4, 742), VX_MASK, PPCEFS, 0, {RS, RA}},
74081948 4809{"efdsqrt", VX_RB_CONST(4, 743, 0), VX_RB_CONST_MASK, PPCEFS2, 0, {RD, RA}},
14b57c7c
AM
4810{"efdmul", VX (4, 744), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
4811{"efddiv", VX (4, 745), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
74081948
AF
4812{"efdnmadd", VX (4, 746), VX_MASK, PPCEFS2, E500|E500MC, {RD, RA, RB}},
4813{"efdctuidz", VX (4, 746), VX_MASK, E500|E500MC,0, {RS, RB}},
4814{"efdnmsub", VX (4, 747), VX_MASK, PPCEFS2, E500|E500MC, {RD, RA, RB}},
4815{"efdctsidz", VX (4, 747), VX_MASK, E500|E500MC,0, {RS, RB}},
14b57c7c
AM
4816{"efdcmpgt", VX (4, 748), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
4817{"efdcmplt", VX (4, 749), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
4818{"efdcmpeq", VX (4, 750), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
4819{"efdcfs", VX (4, 751), VX_MASK, PPCEFS, 0, {RS, RB}},
74081948
AF
4820{"efdcfui", VX_RA_CONST(4, 752, 0), VX_RA_CONST_MASK, PPCEFS, 0, {RS, RB}},
4821{"efdcfuid", VX_RA_CONST(4, 752, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC, {RS, RB}},
4822{"efdcfsi", VX_RA_CONST(4, 753, 0), VX_RA_CONST_MASK, PPCEFS, 0, {RS, RB}},
4823{"efdcfsid", VX_RA_CONST(4, 753, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC, {RS, RB}},
4824{"efdcfh", VX_RA_CONST(4, 753, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
14b57c7c
AM
4825{"efdcfuf", VX (4, 754), VX_MASK, PPCEFS, 0, {RS, RB}},
4826{"efdcfsf", VX (4, 755), VX_MASK, PPCEFS, 0, {RS, RB}},
4827{"efdctui", VX (4, 756), VX_MASK, PPCEFS, 0, {RS, RB}},
74081948 4828{"efdcth", VX_RA_CONST(4, 757, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
14b57c7c
AM
4829{"efdctsi", VX (4, 757), VX_MASK, PPCEFS, 0, {RS, RB}},
4830{"efdctuf", VX (4, 758), VX_MASK, PPCEFS, 0, {RS, RB}},
4831{"efdctsf", VX (4, 759), VX_MASK, PPCEFS, 0, {RS, RB}},
74081948
AF
4832{"efdctuiz", VX_RA_CONST(4, 760, 0), VX_RA_CONST_MASK, PPCEFS, 0, {RS, RB}},
4833{"efdctuidz", VX_RA_CONST(4, 760, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC, {RS, RB}},
14b57c7c 4834{"ncput", APU(4, 380,0), APU_RT_MASK, PPC405, 0, {RA, FSL}},
74081948
AF
4835{"efdctsiz", VX_RA_CONST(4, 762, 0), VX_RA_CONST_MASK, PPCEFS, 0, {RS, RB}},
4836{"efdctsidz", VX_RA_CONST(4, 762, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC, {RS, RB}},
14b57c7c
AM
4837{"efdtstgt", VX (4, 764), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
4838{"efdtstlt", VX (4, 765), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
4839{"efdtsteq", VX (4, 766), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
4840{"evlddx", VX (4, 768), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4841{"vaddsbs", VX (4, 768), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4842{"evldd", VX (4, 769), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
4843{"evldwx", VX (4, 770), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4844{"vminsb", VX (4, 770), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4845{"evldw", VX (4, 771), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
4846{"evldhx", VX (4, 772), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4847{"vsrab", VX (4, 772), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
c7d7aea2 4848{"vsraq", VX (4, 773), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
4849{"evldh", VX (4, 773), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
4850{"vcmpgtsb", VXR(4, 774,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4851{"evlhhesplatx",VX (4, 776), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4852{"vmulesb", VX (4, 776), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4853{"evlhhesplat", VX (4, 777), VX_MASK, PPCSPE, 0, {RS, EVUIMM_2, RA}},
4854{"vcfux", VX (4, 778), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
1ff6a3b8 4855{"vcuxwfp", VX (4, 778), VX_MASK, PPCVEC, EXT, {VD, VB, UIMM}},
c7d7aea2 4856{"vdivesq", VX (4, 779), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
4857{"evlhhousplatx",VX(4, 780), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4858{"vspltisb", VX (4, 780), VXVB_MASK, PPCVEC, 0, {VD, SIMM}},
4859{"vinsertb", VX (4, 781), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
4860{"evlhhousplat",VX (4, 781), VX_MASK, PPCSPE, 0, {RS, EVUIMM_2, RA}},
4861{"evlhhossplatx",VX(4, 782), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4862{"vpkpx", VX (4, 782), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
6edbfd3b 4863{"vinsbrx", VX (4, 783), VX_MASK, POWER10, 0, {VD, RA, RB}},
14b57c7c
AM
4864{"evlhhossplat",VX (4, 783), VX_MASK, PPCSPE, 0, {RS, EVUIMM_2, RA}},
4865{"mullhwu", XRC(4, 392,0), X_MASK, MULHW, 0, {RT, RA, RB}},
4866{"evlwhex", VX (4, 784), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4867{"mullhwu.", XRC(4, 392,1), X_MASK, MULHW, 0, {RT, RA, RB}},
4868{"evlwhe", VX (4, 785), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
4869{"evlwhoux", VX (4, 788), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4870{"evlwhou", VX (4, 789), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
4871{"evlwhosx", VX (4, 790), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4872{"evlwhos", VX (4, 791), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
4873{"maclhwu", XO (4, 396,0,0),XO_MASK, MULHW, 0, {RT, RA, RB}},
4874{"evlwwsplatx", VX (4, 792), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4875{"maclhwu.", XO (4, 396,0,1),XO_MASK, MULHW, 0, {RT, RA, RB}},
4876{"evlwwsplat", VX (4, 793), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
4877{"evlwhsplatx", VX (4, 796), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4878{"evlwhsplat", VX (4, 797), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
4879{"evstddx", VX (4, 800), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4880{"evstdd", VX (4, 801), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
4881{"evstdwx", VX (4, 802), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4882{"evstdw", VX (4, 803), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
4883{"evstdhx", VX (4, 804), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4884{"evstdh", VX (4, 805), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
4885{"evstwhex", VX (4, 816), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4886{"evstwhe", VX (4, 817), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
4887{"evstwhox", VX (4, 820), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4888{"evstwho", VX (4, 821), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
4889{"evstwwex", VX (4, 824), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4890{"evstwwe", VX (4, 825), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
4891{"evstwwox", VX (4, 828), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4892{"evstwwo", VX (4, 829), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
4893{"vaddshs", VX (4, 832), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4894{"bcdcpsgn.", VX (4, 833), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
4895{"vminsh", VX (4, 834), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4896{"vsrah", VX (4, 836), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4897{"vcmpgtsh", VXR(4, 838,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4898{"vmulesh", VX (4, 840), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4899{"vcfsx", VX (4, 842), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
1ff6a3b8 4900{"vcsxwfp", VX (4, 842), VX_MASK, PPCVEC, EXT, {VD, VB, UIMM}},
14b57c7c
AM
4901{"vspltish", VX (4, 844), VXVB_MASK, PPCVEC, 0, {VD, SIMM}},
4902{"vinserth", VX (4, 845), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
4903{"vupkhpx", VX (4, 846), VXVA_MASK, PPCVEC, 0, {VD, VB}},
6edbfd3b 4904{"vinshrx", VX (4, 847), VX_MASK, POWER10, 0, {VD, RA, RB}},
14b57c7c
AM
4905{"mullhw", XRC(4, 424,0), X_MASK, MULHW, 0, {RT, RA, RB}},
4906{"mullhw.", XRC(4, 424,1), X_MASK, MULHW, 0, {RT, RA, RB}},
4907{"maclhw", XO (4, 428,0,0),XO_MASK, MULHW, 0, {RT, RA, RB}},
4908{"maclhw.", XO (4, 428,0,1),XO_MASK, MULHW, 0, {RT, RA, RB}},
4909{"nmaclhw", XO (4, 430,0,0),XO_MASK, MULHW, 0, {RT, RA, RB}},
4910{"nmaclhw.", XO (4, 430,0,1),XO_MASK, MULHW, 0, {RT, RA, RB}},
4911{"vaddsws", VX (4, 896), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4912{"vminsw", VX (4, 898), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4913{"vsraw", VX (4, 900), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4914{"vcmpgtsw", VXR(4, 902,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
c7d7aea2 4915{"vcmpgtsq", VXR(4, 903,0), VXR_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c 4916{"vmulesw", VX (4, 904), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
f4791f1a 4917{"vmulhsw", VX (4, 905), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c 4918{"vctuxs", VX (4, 906), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
1ff6a3b8 4919{"vcfpuxws", VX (4, 906), VX_MASK, PPCVEC, EXT, {VD, VB, UIMM}},
f4791f1a 4920{"vdivesw", VX (4, 907), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
4921{"vspltisw", VX (4, 908), VXVB_MASK, PPCVEC, 0, {VD, SIMM}},
4922{"vinsertw", VX (4, 909), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
6edbfd3b 4923{"vinswrx", VX (4, 911), VX_MASK, POWER10, 0, {VD, RA, RB}},
14b57c7c
AM
4924{"maclhwsu", XO (4, 460,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4925{"maclhwsu.", XO (4, 460,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4926{"vminsd", VX (4, 962), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4927{"vsrad", VX (4, 964), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4928{"vcmpbfp", VXR(4, 966,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4929{"vcmpgtsd", VXR(4, 967,0), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
c7d7aea2 4930{"vmulesd", VX (4, 968), VX_MASK, POWER10, 0, {VD, VA, VB}},
f4791f1a 4931{"vmulhsd", VX (4, 969), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c 4932{"vctsxs", VX (4, 970), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
1ff6a3b8 4933{"vcfpsxws", VX (4, 970), VX_MASK, PPCVEC, EXT, {VD, VB, UIMM}},
f4791f1a 4934{"vdivesd", VX (4, 971), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
4935{"vinsertd", VX (4, 973), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
4936{"vupklpx", VX (4, 974), VXVA_MASK, PPCVEC, 0, {VD, VB}},
6edbfd3b 4937{"vinsdrx", VX (4, 975), VX_MASK, POWER10, 0, {VD, RA, RB}},
14b57c7c
AM
4938{"maclhws", XO (4, 492,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4939{"maclhws.", XO (4, 492,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4940{"nmaclhws", XO (4, 494,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4941{"nmaclhws.", XO (4, 494,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4942{"vsububm", VX (4,1024), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4943{"bcdadd.", VX (4,1025), VXPS_MASK, PPCVEC2, 0, {VD, VA, VB, PS}},
4944{"vavgub", VX (4,1026), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4945{"vabsdub", VX (4,1027), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4946{"evmhessf", VX (4,1027), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4947{"vand", VX (4,1028), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4948{"vcmpequb.", VXR(4, 6,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4949{"vcmpneb.", VXR(4, 7,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
62adc510
AM
4950{"udi0fcm.", APU(4, 515,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
4951{"udi0fcm", APU(4, 515,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
14b57c7c
AM
4952{"evmhossf", VX (4,1031), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4953{"vpmsumb", VX (4,1032), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4954{"evmheumi", VX (4,1032), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4955{"evmhesmi", VX (4,1033), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4956{"vmaxfp", VX (4,1034), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4957{"evmhesmf", VX (4,1035), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4958{"evmhoumi", VX (4,1036), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4959{"vslo", VX (4,1036), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
66ef5847
AM
4960{"vstribl.", VXVA(4,1037,0), VXVA_MASK, POWER10, 0, {VD, VB}},
4961{"vstribr.", VXVA(4,1037,1), VXVA_MASK, POWER10, 0, {VD, VB}},
4962{"vstrihl.", VXVA(4,1037,2), VXVA_MASK, POWER10, 0, {VD, VB}},
4963{"vstrihr.", VXVA(4,1037,3), VXVA_MASK, POWER10, 0, {VD, VB}},
14b57c7c
AM
4964{"evmhosmi", VX (4,1037), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4965{"evmhosmf", VX (4,1039), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4966{"machhwuo", XO (4, 12,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4967{"machhwuo.", XO (4, 12,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4968{"ps_merge00", XOPS(4,528,0), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
4969{"ps_merge00.", XOPS(4,528,1), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
4970{"evmhessfa", VX (4,1059), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4971{"evmhossfa", VX (4,1063), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4972{"evmheumia", VX (4,1064), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4973{"evmhesmia", VX (4,1065), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4974{"evmhesmfa", VX (4,1067), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4975{"evmhoumia", VX (4,1068), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4976{"evmhosmia", VX (4,1069), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4977{"evmhosmfa", VX (4,1071), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4978{"vsubuhm", VX (4,1088), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4979{"bcdsub.", VX (4,1089), VXPS_MASK, PPCVEC2, 0, {VD, VA, VB, PS}},
4980{"vavguh", VX (4,1090), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
74081948 4981{"evmwlssf", VX (4,1091), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c
AM
4982{"vabsduh", VX (4,1091), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4983{"vandc", VX (4,1092), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4984{"vcmpequh.", VXR(4, 70,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
62adc510
AM
4985{"udi1fcm.", APU(4, 547,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
4986{"udi1fcm", APU(4, 547,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
14b57c7c
AM
4987{"vcmpneh.", VXR(4, 71,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
4988{"evmwhssf", VX (4,1095), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4989{"vpmsumh", VX (4,1096), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4990{"evmwlumi", VX (4,1096), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4991{"vminfp", VX (4,1098), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
74081948 4992{"evmwlsmf", VX (4,1099), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c
AM
4993{"evmwhumi", VX (4,1100), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4994{"vsro", VX (4,1100), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4995{"evmwhsmi", VX (4,1101), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4996{"vpkudum", VX (4,1102), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4997{"evmwhsmf", VX (4,1103), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4998{"evmwssf", VX (4,1107), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4999{"machhwo", XO (4, 44,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5000{"evmwumi", VX (4,1112), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5001{"machhwo.", XO (4, 44,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5002{"evmwsmi", VX (4,1113), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5003{"evmwsmf", VX (4,1115), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5004{"nmachhwo", XO (4, 46,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5005{"nmachhwo.", XO (4, 46,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5006{"ps_merge01", XOPS(4,560,0), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
5007{"ps_merge01.", XOPS(4,560,1), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
74081948 5008{"evmwlssfa", VX (4,1123), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c
AM
5009{"evmwhssfa", VX (4,1127), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5010{"evmwlumia", VX (4,1128), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
74081948 5011{"evmwlsmfa", VX (4,1131), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c
AM
5012{"evmwhumia", VX (4,1132), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5013{"evmwhsmia", VX (4,1133), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5014{"evmwhsmfa", VX (4,1135), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5015{"evmwssfa", VX (4,1139), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5016{"evmwumia", VX (4,1144), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5017{"evmwsmia", VX (4,1145), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5018{"evmwsmfa", VX (4,1147), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5019{"vsubuwm", VX (4,1152), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5020{"bcdus.", VX (4,1153), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
5021{"vavguw", VX (4,1154), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5022{"vabsduw", VX (4,1155), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
1ff6a3b8 5023{"vmr", VX (4,1156), VX_MASK, PPCVEC, EXT, {VD, VAB}},
14b57c7c
AM
5024{"vor", VX (4,1156), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5025{"vcmpnew.", VXR(4, 135,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
5026{"vpmsumw", VX (4,1160), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5027{"vcmpequw.", VXR(4, 134,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
62adc510
AM
5028{"udi2fcm.", APU(4, 579,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
5029{"udi2fcm", APU(4, 579,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
14b57c7c
AM
5030{"machhwsuo", XO (4, 76,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5031{"machhwsuo.", XO (4, 76,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5032{"ps_merge10", XOPS(4,592,0), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
5033{"ps_merge10.", XOPS(4,592,1), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
5034{"vsubudm", VX (4,1216), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5035{"evaddusiaaw", VX (4,1216), VX_MASK, PPCSPE, 0, {RS, RA}},
5036{"bcds.", VX (4,1217), VXPS_MASK, PPCVEC3, 0, {VD, VA, VB, PS}},
5037{"evaddssiaaw", VX (4,1217), VX_MASK, PPCSPE, 0, {RS, RA}},
5038{"evsubfusiaaw",VX (4,1218), VX_MASK, PPCSPE, 0, {RS, RA}},
5039{"evsubfssiaaw",VX (4,1219), VX_MASK, PPCSPE, 0, {RS, RA}},
5040{"evmra", VX (4,1220), VX_MASK, PPCSPE, 0, {RS, RA}},
5041{"vxor", VX (4,1220), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5042{"evdivws", VX (4,1222), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5043{"vcmpeqfp.", VXR(4, 198,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
62adc510 5044{"udi3fcm.", APU(4, 611,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
14b57c7c 5045{"vcmpequd.", VXR(4, 199,1), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
62adc510 5046{"udi3fcm", APU(4, 611,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
14b57c7c
AM
5047{"evdivwu", VX (4,1223), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5048{"vpmsumd", VX (4,1224), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5049{"evaddumiaaw", VX (4,1224), VX_MASK, PPCSPE, 0, {RS, RA}},
5050{"evaddsmiaaw", VX (4,1225), VX_MASK, PPCSPE, 0, {RS, RA}},
5051{"evsubfumiaaw",VX (4,1226), VX_MASK, PPCSPE, 0, {RS, RA}},
5052{"evsubfsmiaaw",VX (4,1227), VX_MASK, PPCSPE, 0, {RS, RA}},
ec40e91c 5053{"vgnb", VX (4,1228), VX_MASK, POWER10, 0, {RT, VB, UIMM3}},
14b57c7c
AM
5054{"vpkudus", VX (4,1230), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5055{"machhwso", XO (4, 108,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5056{"machhwso.", XO (4, 108,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5057{"nmachhwso", XO (4, 110,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5058{"nmachhwso.", XO (4, 110,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5059{"ps_merge11", XOPS(4,624,0), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
5060{"ps_merge11.", XOPS(4,624,1), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
5061{"vsubuqm", VX (4,1280), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5062{"evmheusiaaw", VX (4,1280), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5063{"bcdtrunc.", VX (4,1281), VXPS_MASK, PPCVEC3, 0, {VD, VA, VB, PS}},
5064{"evmhessiaaw", VX (4,1281), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5065{"vavgsb", VX (4,1282), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5066{"evmhessfaaw", VX (4,1283), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5067{"evmhousiaaw", VX (4,1284), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
1ff6a3b8 5068{"vnot", VX (4,1284), VX_MASK, PPCVEC, EXT, {VD, VAB}},
14b57c7c
AM
5069{"vnor", VX (4,1284), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5070{"evmhossiaaw", VX (4,1285), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
62adc510
AM
5071{"udi4fcm.", APU(4, 643,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
5072{"udi4fcm", APU(4, 643,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
14b57c7c
AM
5073{"vcmpnezb.", VXR(4, 263,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
5074{"evmhossfaaw", VX (4,1287), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5075{"evmheumiaaw", VX (4,1288), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5076{"vcipher", VX (4,1288), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5077{"vcipherlast", VX (4,1289), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5078{"evmhesmiaaw", VX (4,1289), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5079{"evmhesmfaaw", VX (4,1291), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5080{"vgbbd", VX (4,1292), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
5081{"evmhoumiaaw", VX (4,1292), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5082{"evmhosmiaaw", VX (4,1293), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5083{"evmhosmfaaw", VX (4,1295), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5084{"macchwuo", XO (4, 140,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5085{"macchwuo.", XO (4, 140,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5086{"evmhegumiaa", VX (4,1320), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5087{"evmhegsmiaa", VX (4,1321), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5088{"evmhegsmfaa", VX (4,1323), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5089{"evmhogumiaa", VX (4,1324), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5090{"evmhogsmiaa", VX (4,1325), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5091{"evmhogsmfaa", VX (4,1327), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5092{"vsubcuq", VX (4,1344), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5093{"evmwlusiaaw", VX (4,1344), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5094{"bcdutrunc.", VX (4,1345), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
5095{"evmwlssiaaw", VX (4,1345), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5096{"vavgsh", VX (4,1346), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
74081948
AF
5097{"evmwlssfaaw", VX (4,1347), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
5098{"evmwhusiaa", VX (4,1348), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c 5099{"vorc", VX (4,1348), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
74081948 5100{"evmwhssmaa", VX (4,1349), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
62adc510
AM
5101{"udi5fcm.", APU(4, 675,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
5102{"udi5fcm", APU(4, 675,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
14b57c7c 5103{"vcmpnezh.", VXR(4, 327,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
74081948 5104{"evmwhssfaa", VX (4,1351), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c
AM
5105{"vncipher", VX (4,1352), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5106{"evmwlumiaaw", VX (4,1352), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5107{"vncipherlast",VX (4,1353), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5108{"evmwlsmiaaw", VX (4,1353), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
74081948
AF
5109{"evmwlsmfaaw", VX (4,1355), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
5110{"evmwhumiaa", VX (4,1356), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c 5111{"vbpermq", VX (4,1356), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
ec40e91c 5112{"vcfuged", VX (4,1357), VX_MASK, POWER10, 0, {VD, VA, VB}},
74081948 5113{"evmwhsmiaa", VX (4,1357), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c 5114{"vpksdus", VX (4,1358), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
74081948 5115{"evmwhsmfaa", VX (4,1359), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c
AM
5116{"evmwssfaa", VX (4,1363), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5117{"macchwo", XO (4, 172,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5118{"evmwumiaa", VX (4,1368), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5119{"macchwo.", XO (4, 172,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5120{"evmwsmiaa", VX (4,1369), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5121{"evmwsmfaa", VX (4,1371), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5122{"nmacchwo", XO (4, 174,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5123{"nmacchwo.", XO (4, 174,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
74081948
AF
5124{"evmwhgumiaa", VX (4,1380), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
5125{"evmwhgsmiaa", VX (4,1381), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
5126{"evmwhgssfaa", VX (4,1383), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
5127{"evmwhgsmfaa", VX (4,1391), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c
AM
5128{"evmheusianw", VX (4,1408), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5129{"vsubcuw", VX (4,1408), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5130{"evmhessianw", VX (4,1409), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5131{"bcdctsq.", VXVA(4,1409,0), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
5132{"bcdcfsq.", VXVA(4,1409,2), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}},
5133{"bcdctz.", VXVA(4,1409,4), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}},
5134{"bcdctn.", VXVA(4,1409,5), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
5135{"bcdcfz.", VXVA(4,1409,6), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}},
5136{"bcdcfn.", VXVA(4,1409,7), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}},
5137{"bcdsetsgn.", VXVA(4,1409,31), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}},
5138{"vavgsw", VX (4,1410), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5139{"evmhessfanw", VX (4,1411), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5140{"vnand", VX (4,1412), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5141{"evmhousianw", VX (4,1412), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5142{"evmhossianw", VX (4,1413), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
62adc510
AM
5143{"udi6fcm.", APU(4, 707,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
5144{"udi6fcm", APU(4, 707,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
14b57c7c
AM
5145{"vcmpnezw.", VXR(4, 391,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
5146{"evmhossfanw", VX (4,1415), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5147{"evmheumianw", VX (4,1416), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5148{"evmhesmianw", VX (4,1417), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5149{"evmhesmfanw", VX (4,1419), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5150{"evmhoumianw", VX (4,1420), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
ec40e91c 5151{"vpextd", VX (4,1421), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
5152{"evmhosmianw", VX (4,1421), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5153{"evmhosmfanw", VX (4,1423), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5154{"macchwsuo", XO (4, 204,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5155{"macchwsuo.", XO (4, 204,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5156{"evmhegumian", VX (4,1448), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5157{"evmhegsmian", VX (4,1449), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5158{"evmhegsmfan", VX (4,1451), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5159{"evmhogumian", VX (4,1452), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5160{"evmhogsmian", VX (4,1453), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5161{"evmhogsmfan", VX (4,1455), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5162{"evmwlusianw", VX (4,1472), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5163{"bcdsr.", VX (4,1473), VXPS_MASK, PPCVEC3, 0, {VD, VA, VB, PS}},
5164{"evmwlssianw", VX (4,1473), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
74081948
AF
5165{"evmwlssfanw", VX (4,1475), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
5166{"evmwhusian", VX (4,1476), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c 5167{"vsld", VX (4,1476), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
74081948 5168{"evmwhssian", VX (4,1477), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c 5169{"vcmpgefp.", VXR(4, 454,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
62adc510
AM
5170{"udi7fcm.", APU(4, 739,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
5171{"udi7fcm", APU(4, 739,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
c7d7aea2 5172{"vcmpequq.", VXR(4, 455,1), VXR_MASK, POWER10, 0, {VD, VA, VB}},
74081948 5173{"evmwhssfan", VX (4,1479), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c
AM
5174{"vsbox", VX (4,1480), VXVB_MASK, PPCVEC2, 0, {VD, VA}},
5175{"evmwlumianw", VX (4,1480), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5176{"evmwlsmianw", VX (4,1481), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
74081948
AF
5177{"evmwlsmfanw", VX (4,1483), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
5178{"evmwhumian", VX (4,1484), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c 5179{"vbpermd", VX (4,1484), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
ec40e91c 5180{"vpdepd", VX (4,1485), VX_MASK, POWER10, 0, {VD, VA, VB}},
74081948 5181{"evmwhsmian", VX (4,1485), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c 5182{"vpksdss", VX (4,1486), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
74081948 5183{"evmwhsmfan", VX (4,1487), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c
AM
5184{"evmwssfan", VX (4,1491), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5185{"macchwso", XO (4, 236,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5186{"evmwumian", VX (4,1496), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5187{"macchwso.", XO (4, 236,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5188{"evmwsmian", VX (4,1497), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
5189{"evmwsmfan", VX (4,1499), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
74081948
AF
5190{"evmwhgumian", VX (4,1508), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
5191{"evmwhgsmian", VX (4,1509), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
5192{"evmwhgssfan", VX (4,1511), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
5193{"evmwhgsmfan", VX (4,1519), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c
AM
5194{"nmacchwso", XO (4, 238,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5195{"nmacchwso.", XO (4, 238,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5196{"vsububs", VX (4,1536), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5197{"vclzlsbb", VXVA(4,1538,0), VXVA_MASK, PPCVEC3, 0, {RT, VB}},
5198{"vctzlsbb", VXVA(4,1538,1), VXVA_MASK, PPCVEC3, 0, {RT, VB}},
5199{"vnegw", VXVA(4,1538,6), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
5200{"vnegd", VXVA(4,1538,7), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
5201{"vprtybw", VXVA(4,1538,8), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
5202{"vprtybd", VXVA(4,1538,9), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
5203{"vprtybq", VXVA(4,1538,10), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
5204{"vextsb2w", VXVA(4,1538,16), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
5205{"vextsh2w", VXVA(4,1538,17), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
5206{"vextsb2d", VXVA(4,1538,24), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
5207{"vextsh2d", VXVA(4,1538,25), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
5208{"vextsw2d", VXVA(4,1538,26), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
c7d7aea2 5209{"vextsd2q", VXVA(4,1538,27), VXVA_MASK, POWER10, 0, {VD, VB}},
14b57c7c
AM
5210{"vctzb", VXVA(4,1538,28), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
5211{"vctzh", VXVA(4,1538,29), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
5212{"vctzw", VXVA(4,1538,30), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
5213{"vctzd", VXVA(4,1538,31), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
5214{"mfvscr", VX (4,1540), VXVAVB_MASK, PPCVEC, 0, {VD}},
5215{"vcmpgtub.", VXR(4, 518,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
62adc510
AM
5216{"udi8fcm.", APU(4, 771,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
5217{"udi8fcm", APU(4, 771,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
14b57c7c 5218{"vsum4ubs", VX (4,1544), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
c7d7aea2 5219{"vmoduq", VX (4,1547), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
5220{"vextublx", VX (4,1549), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
5221{"vsubuhs", VX (4,1600), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
fdefed7c
AM
5222
5223{"vexpandbm", VXVA(4,1602,0), VXVA_MASK, POWER10, 0, {VD, VB}},
5224{"vexpandhm", VXVA(4,1602,1), VXVA_MASK, POWER10, 0, {VD, VB}},
5225{"vexpandwm", VXVA(4,1602,2), VXVA_MASK, POWER10, 0, {VD, VB}},
5226{"vexpanddm", VXVA(4,1602,3), VXVA_MASK, POWER10, 0, {VD, VB}},
5227{"vexpandqm", VXVA(4,1602,4), VXVA_MASK, POWER10, 0, {VD, VB}},
5228{"vextractbm", VXVA(4,1602,8), VXVA_MASK, POWER10, 0, {RT, VB}},
5229{"vextracthm", VXVA(4,1602,9), VXVA_MASK, POWER10, 0, {RT, VB}},
5230{"vextractwm", VXVA(4,1602,10), VXVA_MASK, POWER10, 0, {RT, VB}},
5231{"vextractdm", VXVA(4,1602,11), VXVA_MASK, POWER10, 0, {RT, VB}},
5232{"vextractqm", VXVA(4,1602,12), VXVA_MASK, POWER10, 0, {RT, VB}},
5233{"mtvsrbm", VXVA(4,1602,16), VXVA_MASK, POWER10, 0, {VD, RB}},
5234{"mtvsrhm", VXVA(4,1602,17), VXVA_MASK, POWER10, 0, {VD, RB}},
5235{"mtvsrwm", VXVA(4,1602,18), VXVA_MASK, POWER10, 0, {VD, RB}},
5236{"mtvsrdm", VXVA(4,1602,19), VXVA_MASK, POWER10, 0, {VD, RB}},
5237{"mtvsrqm", VXVA(4,1602,20), VXVA_MASK, POWER10, 0, {VD, RB}},
5238{"vcntmbb", VXVA(4,1602,24), VXVAM_MASK, POWER10, 0, {RT, VB, MP}},
5239{"vcntmbh", VXVA(4,1602,26), VXVAM_MASK, POWER10, 0, {RT, VB, MP}},
5240{"vcntmbw", VXVA(4,1602,28), VXVAM_MASK, POWER10, 0, {RT, VB, MP}},
5241{"vcntmbd", VXVA(4,1602,30), VXVAM_MASK, POWER10, 0, {RT, VB, MP}},
5242
14b57c7c
AM
5243{"mtvscr", VX (4,1604), VXVDVA_MASK, PPCVEC, 0, {VB}},
5244{"vcmpgtuh.", VXR(4, 582,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
5245{"vsum4shs", VX (4,1608), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
62adc510
AM
5246{"udi9fcm.", APU(4, 804,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
5247{"udi9fcm", APU(4, 804,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
14b57c7c
AM
5248{"vextuhlx", VX (4,1613), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
5249{"vupkhsw", VX (4,1614), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
5250{"vsubuws", VX (4,1664), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5251{"vshasigmaw", VX (4,1666), VX_MASK, PPCVEC2, 0, {VD, VA, ST, SIX}},
5252{"veqv", VX (4,1668), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5253{"vcmpgtuw.", VXR(4, 646,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
62adc510 5254{"udi10fcm.", APU(4, 835,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
c7d7aea2 5255{"vcmpgtuq.", VXR(4, 647,1), VXR_MASK, POWER10, 0, {VD, VA, VB}},
62adc510 5256{"udi10fcm", APU(4, 835,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
14b57c7c 5257{"vsum2sws", VX (4,1672), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
f4791f1a 5258{"vmoduw", VX (4,1675), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
5259{"vmrgow", VX (4,1676), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5260{"vextuwlx", VX (4,1677), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
5261{"vshasigmad", VX (4,1730), VX_MASK, PPCVEC2, 0, {VD, VA, ST, SIX}},
5262{"vsrd", VX (4,1732), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5263{"vcmpgtfp.", VXR(4, 710,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
62adc510 5264{"udi11fcm.", APU(4, 867,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
14b57c7c 5265{"vcmpgtud.", VXR(4, 711,1), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
62adc510 5266{"udi11fcm", APU(4, 867,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
f4791f1a 5267{"vmodud", VX (4,1739), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
5268{"vupklsw", VX (4,1742), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
5269{"vsubsbs", VX (4,1792), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5270{"vclzb", VX (4,1794), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
5271{"vpopcntb", VX (4,1795), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
5272{"vsrv", VX (4,1796), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
5273{"vcmpgtsb.", VXR(4, 774,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
62adc510
AM
5274{"udi12fcm.", APU(4, 899,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
5275{"udi12fcm", APU(4, 899,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
14b57c7c 5276{"vsum4sbs", VX (4,1800), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
c7d7aea2 5277{"vmodsq", VX (4,1803), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
5278{"vextubrx", VX (4,1805), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
5279{"maclhwuo", XO (4, 396,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5280{"maclhwuo.", XO (4, 396,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5281{"vsubshs", VX (4,1856), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5282{"vclzh", VX (4,1858), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
5283{"vpopcnth", VX (4,1859), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
5284{"vslv", VX (4,1860), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
5285{"vcmpgtsh.", VXR(4, 838,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
5286{"vextuhrx", VX (4,1869), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
62adc510
AM
5287{"udi13fcm.", APU(4, 931,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
5288{"udi13fcm", APU(4, 931,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
14b57c7c
AM
5289{"maclhwo", XO (4, 428,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5290{"maclhwo.", XO (4, 428,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5291{"nmaclhwo", XO (4, 430,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5292{"nmaclhwo.", XO (4, 430,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5293{"vsubsws", VX (4,1920), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
5294{"vclzw", VX (4,1922), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
5295{"vpopcntw", VX (4,1923), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
ec40e91c 5296{"vclzdm", VX (4,1924), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c 5297{"vcmpgtsw.", VXR(4, 902,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
62adc510 5298{"udi14fcm.", APU(4, 963,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
c7d7aea2 5299{"vcmpgtsq.", VXR(4, 903,1), VXR_MASK, POWER10, 0, {VD, VA, VB}},
62adc510 5300{"udi14fcm", APU(4, 963,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
14b57c7c 5301{"vsumsws", VX (4,1928), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
f4791f1a 5302{"vmodsw", VX (4,1931), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
5303{"vmrgew", VX (4,1932), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
5304{"vextuwrx", VX (4,1933), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
5305{"maclhwsuo", XO (4, 460,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5306{"maclhwsuo.", XO (4, 460,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5307{"vclzd", VX (4,1986), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
5308{"vpopcntd", VX (4,1987), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
ec40e91c 5309{"vctzdm", VX (4,1988), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c 5310{"vcmpbfp.", VXR(4, 966,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
62adc510 5311{"udi15fcm.", APU(4, 995,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
14b57c7c 5312{"vcmpgtsd.", VXR(4, 967,1), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
62adc510 5313{"udi15fcm", APU(4, 995,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
f4791f1a 5314{"vmodsd", VX (4,1995), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
5315{"maclhwso", XO (4, 492,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5316{"maclhwso.", XO (4, 492,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5317{"nmaclhwso", XO (4, 494,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
5318{"nmaclhwso.", XO (4, 494,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
5319{"dcbz_l", X (4,1014), XRT_MASK, PPCPS, 0, {RA, RB}},
5320
94ba9882
AM
5321{"lxvp", DQXP(6,0), DQXP_MASK, POWER10, PPCVLE, {XTP, DQ, RA0}},
5322{"stxvp", DQXP(6,1), DQXP_MASK, POWER10, PPCVLE, {XTP, DQ, RA0}},
5323
14b57c7c
AM
5324{"mulli", OP(7), OP_MASK, PPCCOM, PPCVLE, {RT, RA, SI}},
5325{"muli", OP(7), OP_MASK, PWRCOM, PPCVLE, {RT, RA, SI}},
5326
5327{"subfic", OP(8), OP_MASK, PPCCOM, PPCVLE, {RT, RA, SI}},
5328{"sfi", OP(8), OP_MASK, PWRCOM, PPCVLE, {RT, RA, SI}},
5329
5330{"dozi", OP(9), OP_MASK, M601, PPCVLE, {RT, RA, SI}},
5331
1ff6a3b8
AM
5332{"cmplwi", OPL(10,0), OPL_MASK, PPCCOM, PPCVLE|EXT, {OBF, RA, UISIGNOPT}},
5333{"cmpldi", OPL(10,1), OPL_MASK, PPC64, PPCVLE|EXT, {OBF, RA, UISIGNOPT}},
a5721ba2 5334{"cmpli", OP(10), OP_MASK, PPC, PPCVLE, {BF, L32OPT, RA, UISIGNOPT}},
14b57c7c
AM
5335{"cmpli", OP(10), OP_MASK, PWRCOM, PPC|PPCVLE, {BF, RA, UISIGNOPT}},
5336
1ff6a3b8
AM
5337{"cmpwi", OPL(11,0), OPL_MASK, PPCCOM, PPCVLE|EXT, {OBF, RA, SI}},
5338{"cmpdi", OPL(11,1), OPL_MASK, PPC64, PPCVLE|EXT, {OBF, RA, SI}},
a5721ba2 5339{"cmpi", OP(11), OP_MASK, PPC, PPCVLE, {BF, L32OPT, RA, SI}},
14b57c7c
AM
5340{"cmpi", OP(11), OP_MASK, PWRCOM, PPC|PPCVLE, {BF, RA, SI}},
5341
5342{"addic", OP(12), OP_MASK, PPCCOM, PPCVLE, {RT, RA, SI}},
5343{"ai", OP(12), OP_MASK, PWRCOM, PPCVLE, {RT, RA, SI}},
1ff6a3b8 5344{"subic", OP(12), OP_MASK, PPCCOM, PPCVLE|EXT, {RT, RA, NSI}},
14b57c7c
AM
5345
5346{"addic.", OP(13), OP_MASK, PPCCOM, PPCVLE, {RT, RA, SI}},
5347{"ai.", OP(13), OP_MASK, PWRCOM, PPCVLE, {RT, RA, SI}},
1ff6a3b8 5348{"subic.", OP(13), OP_MASK, PPCCOM, PPCVLE|EXT, {RT, RA, NSI}},
14b57c7c 5349
1ff6a3b8
AM
5350{"li", OP(14), DRA_MASK, PPCCOM, PPCVLE|EXT, {RT, SI}},
5351{"lil", OP(14), DRA_MASK, PWRCOM, PPCVLE|EXT, {RT, SI}},
14b57c7c
AM
5352{"addi", OP(14), OP_MASK, PPCCOM, PPCVLE, {RT, RA0, SI}},
5353{"cal", OP(14), OP_MASK, PWRCOM, PPCVLE, {RT, D, RA0}},
1ff6a3b8
AM
5354{"subi", OP(14), OP_MASK, PPCCOM, PPCVLE|EXT, {RT, RA0, NSI}},
5355{"la", OP(14), OP_MASK, PPCCOM, PPCVLE|EXT, {RT, D, RA0}},
14b57c7c 5356
1ff6a3b8
AM
5357{"lis", OP(15), DRA_MASK, PPCCOM, PPCVLE|EXT, {RT, SISIGNOPT}},
5358{"liu", OP(15), DRA_MASK, PWRCOM, PPCVLE|EXT, {RT, SISIGNOPT}},
14b57c7c
AM
5359{"addis", OP(15), OP_MASK, PPCCOM, PPCVLE, {RT, RA0, SISIGNOPT}},
5360{"cau", OP(15), OP_MASK, PWRCOM, PPCVLE, {RT, RA0, SISIGNOPT}},
1ff6a3b8
AM
5361{"subis", OP(15), OP_MASK, PPCCOM, PPCVLE|EXT, {RT, RA0, NSISIGNOPT}},
5362
5363{"bdnz-", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDM}},
5364{"bdnz+", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDP}},
5365{"bdnz", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BD}},
5366{"bdn", BBO(16,BODNZ,0,0), BBOATBI_MASK, PWRCOM, PPCVLE|EXT, {BD}},
5367{"bdnzl-", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDM}},
5368{"bdnzl+", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDP}},
5369{"bdnzl", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BD}},
5370{"bdnl", BBO(16,BODNZ,0,1), BBOATBI_MASK, PWRCOM, PPCVLE|EXT, {BD}},
5371{"bdnza-", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDMA}},
5372{"bdnza+", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDPA}},
5373{"bdnza", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDA}},
5374{"bdna", BBO(16,BODNZ,1,0), BBOATBI_MASK, PWRCOM, PPCVLE|EXT, {BDA}},
5375{"bdnzla-", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDMA}},
5376{"bdnzla+", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDPA}},
5377{"bdnzla", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDA}},
5378{"bdnla", BBO(16,BODNZ,1,1), BBOATBI_MASK, PWRCOM, PPCVLE|EXT, {BDA}},
5379{"bdz-", BBO(16,BODZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDM}},
5380{"bdz+", BBO(16,BODZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDP}},
5381{"bdz", BBO(16,BODZ,0,0), BBOATBI_MASK, COM, PPCVLE|EXT, {BD}},
5382{"bdzl-", BBO(16,BODZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDM}},
5383{"bdzl+", BBO(16,BODZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDP}},
5384{"bdzl", BBO(16,BODZ,0,1), BBOATBI_MASK, COM, PPCVLE|EXT, {BD}},
5385{"bdza-", BBO(16,BODZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDMA}},
5386{"bdza+", BBO(16,BODZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDPA}},
5387{"bdza", BBO(16,BODZ,1,0), BBOATBI_MASK, COM, PPCVLE|EXT, {BDA}},
5388{"bdzla-", BBO(16,BODZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDMA}},
5389{"bdzla+", BBO(16,BODZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE|EXT, {BDPA}},
5390{"bdzla", BBO(16,BODZ,1,1), BBOATBI_MASK, COM, PPCVLE|EXT, {BDA}},
5391
5392{"bge-", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
5393{"bge+", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
5394{"bge", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
5395{"bnl-", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
5396{"bnl+", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
5397{"bnl", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
5398{"bgel-", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
5399{"bgel+", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
5400{"bgel", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
5401{"bnll-", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
5402{"bnll+", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
5403{"bnll", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
5404{"bgea-", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
5405{"bgea+", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
5406{"bgea", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
5407{"bnla-", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
5408{"bnla+", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
5409{"bnla", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
5410{"bgela-", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
5411{"bgela+", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
5412{"bgela", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
5413{"bnlla-", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
5414{"bnlla+", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
5415{"bnlla", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
5416{"ble-", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
5417{"ble+", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
5418{"ble", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
5419{"bng-", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
5420{"bng+", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
5421{"bng", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
5422{"blel-", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
5423{"blel+", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
5424{"blel", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
5425{"bngl-", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
5426{"bngl+", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
5427{"bngl", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
5428{"blea-", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
5429{"blea+", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
5430{"blea", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
5431{"bnga-", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
5432{"bnga+", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
5433{"bnga", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
5434{"blela-", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
5435{"blela+", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
5436{"blela", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
5437{"bngla-", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
5438{"bngla+", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
5439{"bngla", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
5440{"bne-", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
5441{"bne+", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
5442{"bne", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
5443{"bnel-", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
5444{"bnel+", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
5445{"bnel", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
5446{"bnea-", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
5447{"bnea+", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
5448{"bnea", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
5449{"bnela-", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
5450{"bnela+", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
5451{"bnela", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
5452{"bns-", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
5453{"bns+", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
5454{"bns", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
5455{"bnu-", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
5456{"bnu+", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
5457{"bnu", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BD}},
5458{"bnsl-", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
5459{"bnsl+", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
5460{"bnsl", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
5461{"bnul-", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
5462{"bnul+", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
5463{"bnul", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BD}},
5464{"bnsa-", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
5465{"bnsa+", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
5466{"bnsa", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
5467{"bnua-", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
5468{"bnua+", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
5469{"bnua", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDA}},
5470{"bnsla-", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
5471{"bnsla+", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
5472{"bnsla", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
5473{"bnula-", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
5474{"bnula+", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
5475{"bnula", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDA}},
5476
5477{"blt-", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
5478{"blt+", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
5479{"blt", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
5480{"bltl-", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
5481{"bltl+", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
5482{"bltl", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
5483{"blta-", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
5484{"blta+", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
5485{"blta", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
5486{"bltla-", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
5487{"bltla+", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
5488{"bltla", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
5489{"bgt-", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
5490{"bgt+", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
5491{"bgt", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
5492{"bgtl-", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
5493{"bgtl+", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
5494{"bgtl", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
5495{"bgta-", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
5496{"bgta+", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
5497{"bgta", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
5498{"bgtla-", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
5499{"bgtla+", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
5500{"bgtla", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
5501{"beq-", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
5502{"beq+", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
5503{"beq", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
5504{"beql-", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
5505{"beql+", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
5506{"beql", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
5507{"beqa-", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
5508{"beqa+", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
5509{"beqa", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
5510{"beqla-", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
5511{"beqla+", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
5512{"beqla", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
5513{"bso-", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
5514{"bso+", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
5515{"bso", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
5516{"bun-", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
5517{"bun+", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
5518{"bun", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BD}},
5519{"bsol-", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
5520{"bsol+", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
5521{"bsol", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BD}},
5522{"bunl-", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDM}},
5523{"bunl+", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDP}},
5524{"bunl", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BD}},
5525{"bsoa-", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
5526{"bsoa+", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
5527{"bsoa", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
5528{"buna-", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
5529{"buna+", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
5530{"buna", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDA}},
5531{"bsola-", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
5532{"bsola+", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
5533{"bsola", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, COM, PPCVLE|EXT, {CR, BDA}},
5534{"bunla-", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDMA}},
5535{"bunla+", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDPA}},
5536{"bunla", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE|EXT, {CR, BDA}},
5537
5538{"bdnzf-", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDM}},
5539{"bdnzf+", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDP}},
5540{"bdnzf", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BD}},
5541{"bdnzfl-", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDM}},
5542{"bdnzfl+", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDP}},
5543{"bdnzfl", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BD}},
5544{"bdnzfa-", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDMA}},
5545{"bdnzfa+", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDPA}},
5546{"bdnzfa", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BDA}},
5547{"bdnzfla-", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDMA}},
5548{"bdnzfla+", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDPA}},
5549{"bdnzfla", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BDA}},
5550{"bdzf-", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDM}},
5551{"bdzf+", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDP}},
5552{"bdzf", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BD}},
5553{"bdzfl-", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDM}},
5554{"bdzfl+", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDP}},
5555{"bdzfl", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BD}},
5556{"bdzfa-", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDMA}},
5557{"bdzfa+", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDPA}},
5558{"bdzfa", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BDA}},
5559{"bdzfla-", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDMA}},
5560{"bdzfla+", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDPA}},
5561{"bdzfla", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BDA}},
5562
5563{"bf-", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDM}},
5564{"bf+", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDP}},
5565{"bf", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BD}},
5566{"bbf", BBO(16,BOF,0,0), BBOAT_MASK, PWRCOM, PPCVLE|EXT, {BI, BD}},
5567{"bfl-", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDM}},
5568{"bfl+", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDP}},
5569{"bfl", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BD}},
5570{"bbfl", BBO(16,BOF,0,1), BBOAT_MASK, PWRCOM, PPCVLE|EXT, {BI, BD}},
5571{"bfa-", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDMA}},
5572{"bfa+", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDPA}},
5573{"bfa", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDA}},
5574{"bbfa", BBO(16,BOF,1,0), BBOAT_MASK, PWRCOM, PPCVLE|EXT, {BI, BDA}},
5575{"bfla-", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDMA}},
5576{"bfla+", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDPA}},
5577{"bfla", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDA}},
5578{"bbfla", BBO(16,BOF,1,1), BBOAT_MASK, PWRCOM, PPCVLE|EXT, {BI, BDA}},
5579
5580{"bdnzt-", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDM}},
5581{"bdnzt+", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDP}},
5582{"bdnzt", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BD}},
5583{"bdnztl-", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDM}},
5584{"bdnztl+", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDP}},
5585{"bdnztl", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BD}},
5586{"bdnzta-", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDMA}},
5587{"bdnzta+", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDPA}},
5588{"bdnzta", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BDA}},
5589{"bdnztla-", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDMA}},
5590{"bdnztla+", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDPA}},
5591{"bdnztla", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BDA}},
5592{"bdzt-", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDM}},
5593{"bdzt+", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDP}},
5594{"bdzt", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BD}},
5595{"bdztl-", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDM}},
5596{"bdztl+", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDP}},
5597{"bdztl", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BD}},
5598{"bdzta-", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDMA}},
5599{"bdzta+", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDPA}},
5600{"bdzta", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BDA}},
5601{"bdztla-", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDMA}},
5602{"bdztla+", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BDPA}},
5603{"bdztla", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, PPCVLE|EXT, {BI, BDA}},
5604
5605{"bt-", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDM}},
5606{"bt+", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDP}},
5607{"bt", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BD}},
5608{"bbt", BBO(16,BOT,0,0), BBOAT_MASK, PWRCOM, PPCVLE|EXT, {BI, BD}},
5609{"btl-", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDM}},
5610{"btl+", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDP}},
5611{"btl", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BD}},
5612{"bbtl", BBO(16,BOT,0,1), BBOAT_MASK, PWRCOM, PPCVLE|EXT, {BI, BD}},
5613{"bta-", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDMA}},
5614{"bta+", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDPA}},
5615{"bta", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDA}},
5616{"bbta", BBO(16,BOT,1,0), BBOAT_MASK, PWRCOM, PPCVLE|EXT, {BI, BDA}},
5617{"btla-", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDMA}},
5618{"btla+", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDPA}},
5619{"btla", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, PPCVLE|EXT, {BI, BDA}},
5620{"bbtla", BBO(16,BOT,1,1), BBOAT_MASK, PWRCOM, PPCVLE|EXT, {BI, BDA}},
5621
5622{"bc-", B(16,0,0), B_MASK, PPCCOM, PPCVLE|EXT, {BOM, BI, BDM}},
5623{"bc+", B(16,0,0), B_MASK, PPCCOM, PPCVLE|EXT, {BOP, BI, BDP}},
14b57c7c 5624{"bc", B(16,0,0), B_MASK, COM, PPCVLE, {BO, BI, BD}},
1ff6a3b8
AM
5625{"bcl-", B(16,0,1), B_MASK, PPCCOM, PPCVLE|EXT, {BOM, BI, BDM}},
5626{"bcl+", B(16,0,1), B_MASK, PPCCOM, PPCVLE|EXT, {BOP, BI, BDP}},
14b57c7c 5627{"bcl", B(16,0,1), B_MASK, COM, PPCVLE, {BO, BI, BD}},
1ff6a3b8
AM
5628{"bca-", B(16,1,0), B_MASK, PPCCOM, PPCVLE|EXT, {BOM, BI, BDMA}},
5629{"bca+", B(16,1,0), B_MASK, PPCCOM, PPCVLE|EXT, {BOP, BI, BDPA}},
14b57c7c 5630{"bca", B(16,1,0), B_MASK, COM, PPCVLE, {BO, BI, BDA}},
1ff6a3b8
AM
5631{"bcla-", B(16,1,1), B_MASK, PPCCOM, PPCVLE|EXT, {BOM, BI, BDMA}},
5632{"bcla+", B(16,1,1), B_MASK, PPCCOM, PPCVLE|EXT, {BOP, BI, BDPA}},
14b57c7c
AM
5633{"bcla", B(16,1,1), B_MASK, COM, PPCVLE, {BO, BI, BDA}},
5634
5635{"svc", SC(17,0,0), SC_MASK, POWER, PPCVLE, {SVC_LEV, FL1, FL2}},
dce75bf9 5636{"scv", SC(17,0,1), SC_MASK, POWER9, PPCVLE, {SVC_LEV}},
14b57c7c
AM
5637{"svcl", SC(17,0,1), SC_MASK, POWER, PPCVLE, {SVC_LEV, FL1, FL2}},
5638{"sc", SC(17,1,0), SC_MASK, PPC, PPCVLE, {LEV}},
5639{"svca", SC(17,1,0), SC_MASK, PWRCOM, PPCVLE, {SV}},
5640{"svcla", SC(17,1,1), SC_MASK, POWER, PPCVLE, {SV}},
5641
5642{"b", B(18,0,0), B_MASK, COM, PPCVLE, {LI}},
5643{"bl", B(18,0,1), B_MASK, COM, PPCVLE, {LI}},
5644{"ba", B(18,1,0), B_MASK, COM, PPCVLE, {LIA}},
5645{"bla", B(18,1,1), B_MASK, COM, PPCVLE, {LIA}},
5646
5647{"mcrf", XL(19,0), XLBB_MASK|(3<<21)|(3<<16), COM, PPCVLE, {BF, BFA}},
5648
1ff6a3b8 5649{"lnia", DX(19,2), NODX_MASK, POWER9, PPCVLE|EXT, {RT}},
14b57c7c 5650{"addpcis", DX(19,2), DX_MASK, POWER9, PPCVLE, {RT, DXD}},
1ff6a3b8
AM
5651{"subpcis", DX(19,2), DX_MASK, POWER9, PPCVLE|EXT, {RT, NDXD}},
5652
5653{"bdnzlr-", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BH}},
5654{"bdnzlr+", XLO(19,BODNZP,16,0), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BH}},
5655{"bdnzlr", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPCCOM, PPCVLE|EXT, {BH}},
5656{"bdnzlrl-", XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BH}},
5657{"bdnzlrl+", XLO(19,BODNZP,16,1), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BH}},
5658{"bdnzlrl", XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPCCOM, PPCVLE|EXT, {BH}},
5659{"bdzlr-", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BH}},
5660{"bdzlr+", XLO(19,BODZP,16,0), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BH}},
5661{"bdzlr", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPCCOM, PPCVLE|EXT, {BH}},
5662{"bdzlrl-", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BH}},
5663{"bdzlrl+", XLO(19,BODZP,16,1), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BH}},
5664{"bdzlrl", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPCCOM, PPCVLE|EXT, {BH}},
5665{"blr", XLO(19,BOU,16,0), XLBOBIBB_MASK, PPCCOM, PPCVLE|EXT, {BH}},
5666{"br", XLO(19,BOU,16,0), XLBOBIBB_MASK, PWRCOM, PPCVLE|EXT, {BH}},
5667{"blrl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PPCCOM, PPCVLE|EXT, {BH}},
5668{"brl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PWRCOM, PPCVLE|EXT, {BH}},
5669{"bdnzlr-", XLO(19,BODNZM4,16,0), XLBOBIBB_MASK, ISA_V2, PPCVLE|EXT, {BH}},
5670{"bdnzlrl-", XLO(19,BODNZM4,16,1), XLBOBIBB_MASK, ISA_V2, PPCVLE|EXT, {BH}},
5671{"bdnzlr+", XLO(19,BODNZP4,16,0), XLBOBIBB_MASK, ISA_V2, PPCVLE|EXT, {BH}},
5672{"bdnzlrl+", XLO(19,BODNZP4,16,1), XLBOBIBB_MASK, ISA_V2, PPCVLE|EXT, {BH}},
5673{"bdzlr-", XLO(19,BODZM4,16,0), XLBOBIBB_MASK, ISA_V2, PPCVLE|EXT, {BH}},
5674{"bdzlrl-", XLO(19,BODZM4,16,1), XLBOBIBB_MASK, ISA_V2, PPCVLE|EXT, {BH}},
5675{"bdzlr+", XLO(19,BODZP4,16,0), XLBOBIBB_MASK, ISA_V2, PPCVLE|EXT, {BH}},
5676{"bdzlrl+", XLO(19,BODZP4,16,1), XLBOBIBB_MASK, ISA_V2, PPCVLE|EXT, {BH}},
5677
5678{"bgelr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5679{"bgelr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5680{"bgelr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5681{"bger", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
5682{"bnllr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5683{"bnllr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5684{"bnllr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5685{"bnlr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
5686{"bgelrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5687{"bgelrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5688{"bgelrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5689{"bgerl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
5690{"bnllrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5691{"bnllrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5692{"bnllrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5693{"bnlrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
5694{"blelr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5695{"blelr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5696{"blelr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5697{"bler", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
5698{"bnglr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5699{"bnglr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5700{"bnglr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5701{"bngr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
5702{"blelrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5703{"blelrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5704{"blelrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5705{"blerl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
5706{"bnglrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5707{"bnglrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5708{"bnglrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5709{"bngrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
5710{"bnelr-", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5711{"bnelr+", XLOCB(19,BOFP,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5712{"bnelr", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5713{"bner", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
5714{"bnelrl-", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5715{"bnelrl+", XLOCB(19,BOFP,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5716{"bnelrl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5717{"bnerl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
5718{"bnslr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5719{"bnslr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5720{"bnslr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5721{"bnsr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
5722{"bnulr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5723{"bnulr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5724{"bnulr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5725{"bnslrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5726{"bnslrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5727{"bnslrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5728{"bnsrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
5729{"bnulrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5730{"bnulrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5731{"bnulrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5732{"bgelr-", XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5733{"bnllr-", XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5734{"bgelrl-", XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5735{"bnllrl-", XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5736{"blelr-", XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5737{"bnglr-", XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5738{"blelrl-", XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5739{"bnglrl-", XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5740{"bnelr-", XLOCB(19,BOFM4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5741{"bnelrl-", XLOCB(19,BOFM4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5742{"bnslr-", XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5743{"bnulr-", XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5744{"bnslrl-", XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5745{"bnulrl-", XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5746{"bgelr+", XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5747{"bnllr+", XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5748{"bgelrl+", XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5749{"bnllrl+", XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5750{"blelr+", XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5751{"bnglr+", XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5752{"blelrl+", XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5753{"bnglrl+", XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5754{"bnelr+", XLOCB(19,BOFP4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5755{"bnelrl+", XLOCB(19,BOFP4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5756{"bnslr+", XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5757{"bnulr+", XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5758{"bnslrl+", XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5759{"bnulrl+", XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5760{"bltlr-", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5761{"bltlr+", XLOCB(19,BOTP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5762{"bltlr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5763{"bltr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
5764{"bltlrl-", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5765{"bltlrl+", XLOCB(19,BOTP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5766{"bltlrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5767{"bltrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
5768{"bgtlr-", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5769{"bgtlr+", XLOCB(19,BOTP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5770{"bgtlr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5771{"bgtr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
5772{"bgtlrl-", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5773{"bgtlrl+", XLOCB(19,BOTP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5774{"bgtlrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5775{"bgtrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
5776{"beqlr-", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5777{"beqlr+", XLOCB(19,BOTP,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5778{"beqlr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5779{"beqr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
5780{"beqlrl-", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5781{"beqlrl+", XLOCB(19,BOTP,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5782{"beqlrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5783{"beqrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
5784{"bsolr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5785{"bsolr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5786{"bsolr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5787{"bsor", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
5788{"bunlr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5789{"bunlr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5790{"bunlr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5791{"bsolrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5792{"bsolrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5793{"bsolrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5794{"bsorl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE|EXT, {CR, BH}},
5795{"bunlrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5796{"bunlrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5797{"bunlrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5798{"bltlr-", XLOCB(19,BOTM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5799{"bltlrl-", XLOCB(19,BOTM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5800{"bgtlr-", XLOCB(19,BOTM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5801{"bgtlrl-", XLOCB(19,BOTM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5802{"beqlr-", XLOCB(19,BOTM4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5803{"beqlrl-", XLOCB(19,BOTM4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5804{"bsolr-", XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5805{"bunlr-", XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5806{"bsolrl-", XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5807{"bunlrl-", XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5808{"bltlr+", XLOCB(19,BOTP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5809{"bltlrl+", XLOCB(19,BOTP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5810{"bgtlr+", XLOCB(19,BOTP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5811{"bgtlrl+", XLOCB(19,BOTP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5812{"beqlr+", XLOCB(19,BOTP4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5813{"beqlrl+", XLOCB(19,BOTP4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5814{"bsolr+", XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5815{"bunlr+", XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5816{"bsolrl+", XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5817{"bunlrl+", XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5818
5819{"bdnzflr-", XLO(19,BODNZF,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
5820{"bdnzflr+", XLO(19,BODNZFP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
5821{"bdnzflr", XLO(19,BODNZF,16,0), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
5822{"bdnzflrl-",XLO(19,BODNZF,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
5823{"bdnzflrl+",XLO(19,BODNZFP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
5824{"bdnzflrl", XLO(19,BODNZF,16,1), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
5825{"bdzflr-", XLO(19,BODZF,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
5826{"bdzflr+", XLO(19,BODZFP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
5827{"bdzflr", XLO(19,BODZF,16,0), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
5828{"bdzflrl-", XLO(19,BODZF,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
5829{"bdzflrl+", XLO(19,BODZFP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
5830{"bdzflrl", XLO(19,BODZF,16,1), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
5831{"bflr-", XLO(19,BOF,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
5832{"bflr+", XLO(19,BOFP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
5833{"bflr", XLO(19,BOF,16,0), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
5834{"bbfr", XLO(19,BOF,16,0), XLBOBB_MASK, PWRCOM, PPCVLE|EXT, {BI, BH}},
5835{"bflrl-", XLO(19,BOF,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
5836{"bflrl+", XLO(19,BOFP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
5837{"bflrl", XLO(19,BOF,16,1), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
5838{"bbfrl", XLO(19,BOF,16,1), XLBOBB_MASK, PWRCOM, PPCVLE|EXT, {BI, BH}},
5839{"bflr-", XLO(19,BOFM4,16,0), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
5840{"bflrl-", XLO(19,BOFM4,16,1), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
5841{"bflr+", XLO(19,BOFP4,16,0), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
5842{"bflrl+", XLO(19,BOFP4,16,1), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
5843{"bdnztlr-", XLO(19,BODNZT,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
5844{"bdnztlr+", XLO(19,BODNZTP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
5845{"bdnztlr", XLO(19,BODNZT,16,0), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
5846{"bdnztlrl-", XLO(19,BODNZT,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
5847{"bdnztlrl+", XLO(19,BODNZTP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
5848{"bdnztlrl", XLO(19,BODNZT,16,1), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
5849{"bdztlr-", XLO(19,BODZT,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
5850{"bdztlr+", XLO(19,BODZTP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
5851{"bdztlr", XLO(19,BODZT,16,0), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
5852{"bdztlrl-", XLO(19,BODZT,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
5853{"bdztlrl+", XLO(19,BODZTP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
5854{"bdztlrl", XLO(19,BODZT,16,1), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
5855{"btlr-", XLO(19,BOT,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
5856{"btlr+", XLO(19,BOTP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
5857{"btlr", XLO(19,BOT,16,0), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
5858{"bbtr", XLO(19,BOT,16,0), XLBOBB_MASK, PWRCOM, PPCVLE|EXT, {BI, BH}},
5859{"btlrl-", XLO(19,BOT,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
5860{"btlrl+", XLO(19,BOTP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
5861{"btlrl", XLO(19,BOT,16,1), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
5862{"bbtrl", XLO(19,BOT,16,1), XLBOBB_MASK, PWRCOM, PPCVLE|EXT, {BI, BH}},
5863{"btlr-", XLO(19,BOTM4,16,0), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
5864{"btlrl-", XLO(19,BOTM4,16,1), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
5865{"btlr+", XLO(19,BOTP4,16,0), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
5866{"btlrl+", XLO(19,BOTP4,16,1), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
5867
5868{"bclr-", XLLK(19,16,0), XLBH_MASK, PPCCOM, PPCVLE|EXT, {BOM, BI, BH}},
5869{"bclr+", XLLK(19,16,0), XLBH_MASK, PPCCOM, PPCVLE|EXT, {BOP, BI, BH}},
14b57c7c 5870{"bclr", XLLK(19,16,0), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}},
66e85460 5871{"bcr", XLLK(19,16,0), XLBH_MASK, PWRCOM, PPCVLE, {BO, BI, BH}},
1ff6a3b8
AM
5872{"bclrl-", XLLK(19,16,1), XLBH_MASK, PPCCOM, PPCVLE|EXT, {BOM, BI, BH}},
5873{"bclrl+", XLLK(19,16,1), XLBH_MASK, PPCCOM, PPCVLE|EXT, {BOP, BI, BH}},
14b57c7c 5874{"bclrl", XLLK(19,16,1), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}},
66e85460 5875{"bcrl", XLLK(19,16,1), XLBH_MASK, PWRCOM, PPCVLE, {BO, BI, BH}},
14b57c7c
AM
5876
5877{"rfid", XL(19,18), 0xffffffff, PPC64, PPCVLE, {0}},
5878
1ff6a3b8 5879{"crnot", XL(19,33), XL_MASK, PPCCOM, PPCVLE|EXT, {BT, BAB}},
14b57c7c 5880{"crnor", XL(19,33), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
14b57c7c 5881
1ff6a3b8 5882{"rfmci", X(19,38), 0xffffffff, PPCRFMCI|PPCA2|PPC476, PPCVLE, {0}},
14b57c7c
AM
5883{"rfdi", XL(19,39), 0xffffffff, E500MC, PPCVLE, {0}},
5884{"rfi", XL(19,50), 0xffffffff, COM, PPCVLE, {0}},
5885{"rfci", XL(19,51), 0xffffffff, PPC403|BOOKE|PPCE300|PPCA2|PPC476, PPCVLE, {0}},
5886
dce75bf9 5887{"rfscv", XL(19,82), 0xffffffff, POWER9, PPCVLE, {0}},
14b57c7c
AM
5888{"rfsvc", XL(19,82), 0xffffffff, POWER, PPCVLE, {0}},
5889
5890{"rfgi", XL(19,102), 0xffffffff, E500MC|PPCA2, PPCVLE, {0}},
5891
5892{"crandc", XL(19,129), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
5893
5894{"rfebb", XL(19,146), XLS_MASK, POWER8, PPCVLE, {SXL}},
5895
5896{"isync", XL(19,150), 0xffffffff, PPCCOM, PPCVLE, {0}},
5897{"ics", XL(19,150), 0xffffffff, PWRCOM, PPCVLE, {0}},
5898
1ff6a3b8 5899{"crclr", XL(19,193), XL_MASK, PPCCOM, PPCVLE|EXT, {BTAB}},
14b57c7c
AM
5900{"crxor", XL(19,193), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
5901
5902{"dnh", X(19,198), X_MASK, E500MC, PPCVLE, {DUI, DUIS}},
5903
5904{"crnand", XL(19,225), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
5905
5906{"crand", XL(19,257), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
5907
5908{"hrfid", XL(19,274), 0xffffffff, POWER5|CELL, PPC476|PPCVLE, {0}},
5909
1ff6a3b8 5910{"crset", XL(19,289), XL_MASK, PPCCOM, PPCVLE|EXT, {BTAB}},
14b57c7c
AM
5911{"creqv", XL(19,289), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
5912
5913{"urfid", XL(19,306), 0xffffffff, POWER9, PPCVLE, {0}},
5914{"stop", XL(19,370), 0xffffffff, POWER9, PPCVLE, {0}},
5915
5916{"doze", XL(19,402), 0xffffffff, POWER6, POWER9|PPCVLE, {0}},
5917
5918{"crorc", XL(19,417), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
5919
5920{"nap", XL(19,434), 0xffffffff, POWER6, POWER9|PPCVLE, {0}},
5921
1ff6a3b8 5922{"crmove", XL(19,449), XL_MASK, PPCCOM, PPCVLE|EXT, {BT, BAB}},
14b57c7c
AM
5923{"cror", XL(19,449), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
5924
5925{"sleep", XL(19,466), 0xffffffff, POWER6, POWER9|PPCVLE, {0}},
5926{"rvwinkle", XL(19,498), 0xffffffff, POWER6, POWER9|PPCVLE, {0}},
5927
1ff6a3b8
AM
5928{"bctr", XLO(19,BOU,528,0), XLBOBIBB_MASK, COM, PPCVLE|EXT, {BH}},
5929{"bctrl", XLO(19,BOU,528,1), XLBOBIBB_MASK, COM, PPCVLE|EXT, {BH}},
5930{"bgectr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5931{"bgectr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5932{"bgectr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5933{"bnlctr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5934{"bnlctr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5935{"bnlctr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5936{"bgectrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5937{"bgectrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5938{"bgectrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5939{"bnlctrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5940{"bnlctrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5941{"bnlctrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5942{"blectr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5943{"blectr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5944{"blectr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5945{"bngctr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5946{"bngctr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5947{"bngctr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5948{"blectrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5949{"blectrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5950{"blectrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5951{"bngctrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5952{"bngctrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5953{"bngctrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5954{"bnectr-", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5955{"bnectr+", XLOCB(19,BOFP,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5956{"bnectr", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5957{"bnectrl-",XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5958{"bnectrl+",XLOCB(19,BOFP,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5959{"bnectrl", XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5960{"bnsctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5961{"bnsctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5962{"bnsctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5963{"bnuctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5964{"bnuctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5965{"bnuctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5966{"bnsctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5967{"bnsctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5968{"bnsctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5969{"bnuctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5970{"bnuctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
5971{"bnuctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
5972{"bgectr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5973{"bnlctr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5974{"bgectrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5975{"bnlctrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5976{"blectr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5977{"bngctr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5978{"blectrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5979{"bngctrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5980{"bnectr-", XLOCB(19,BOFM4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5981{"bnectrl-",XLOCB(19,BOFM4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5982{"bnsctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5983{"bnuctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5984{"bnsctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5985{"bnuctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5986{"bgectr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5987{"bnlctr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5988{"bgectrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5989{"bnlctrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5990{"blectr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5991{"bngctr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5992{"blectrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5993{"bngctrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5994{"bnectr+", XLOCB(19,BOFP4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5995{"bnectrl+",XLOCB(19,BOFP4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5996{"bnsctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5997{"bnuctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5998{"bnsctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
5999{"bnuctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6000{"bltctr-", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6001{"bltctr+", XLOCB(19,BOTP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6002{"bltctr", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6003{"bltctrl-",XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6004{"bltctrl+",XLOCB(19,BOTP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6005{"bltctrl", XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6006{"bgtctr-", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6007{"bgtctr+", XLOCB(19,BOTP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6008{"bgtctr", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6009{"bgtctrl-",XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6010{"bgtctrl+",XLOCB(19,BOTP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6011{"bgtctrl", XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6012{"beqctr-", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6013{"beqctr+", XLOCB(19,BOTP,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6014{"beqctr", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6015{"beqctrl-",XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6016{"beqctrl+",XLOCB(19,BOTP,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6017{"beqctrl", XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6018{"bsoctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6019{"bsoctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6020{"bsoctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6021{"bunctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6022{"bunctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6023{"bunctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6024{"bsoctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6025{"bsoctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6026{"bsoctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6027{"bunctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6028{"bunctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {CR, BH}},
6029{"bunctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE|EXT, {CR, BH}},
6030{"bltctr-", XLOCB(19,BOTM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6031{"bltctrl-",XLOCB(19,BOTM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6032{"bgtctr-", XLOCB(19,BOTM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6033{"bgtctrl-",XLOCB(19,BOTM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6034{"beqctr-", XLOCB(19,BOTM4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6035{"beqctrl-",XLOCB(19,BOTM4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6036{"bsoctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6037{"bunctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6038{"bsoctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6039{"bunctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6040{"bltctr+", XLOCB(19,BOTP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6041{"bltctrl+",XLOCB(19,BOTP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6042{"bgtctr+", XLOCB(19,BOTP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6043{"bgtctrl+",XLOCB(19,BOTP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6044{"beqctr+", XLOCB(19,BOTP4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6045{"beqctrl+",XLOCB(19,BOTP4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6046{"bsoctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6047{"bunctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6048{"bsoctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6049{"bunctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE|EXT, {CR, BH}},
6050
6051{"bfctr-", XLO(19,BOF,528,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6052{"bfctr+", XLO(19,BOFP,528,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6053{"bfctr", XLO(19,BOF,528,0), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
6054{"bfctrl-", XLO(19,BOF,528,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6055{"bfctrl+", XLO(19,BOFP,528,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6056{"bfctrl", XLO(19,BOF,528,1), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
6057{"bfctr-", XLO(19,BOFM4,528,0), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
6058{"bfctrl-", XLO(19,BOFM4,528,1), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
6059{"bfctr+", XLO(19,BOFP4,528,0), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
6060{"bfctrl+", XLO(19,BOFP4,528,1), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
6061{"btctr-", XLO(19,BOT,528,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6062{"btctr+", XLO(19,BOTP,528,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6063{"btctr", XLO(19,BOT,528,0), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
6064{"btctrl-", XLO(19,BOT,528,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6065{"btctrl+", XLO(19,BOTP,528,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE|EXT, {BI, BH}},
6066{"btctrl", XLO(19,BOT,528,1), XLBOBB_MASK, PPCCOM, PPCVLE|EXT, {BI, BH}},
6067{"btctr-", XLO(19,BOTM4,528,0), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
6068{"btctrl-", XLO(19,BOTM4,528,1), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
6069{"btctr+", XLO(19,BOTP4,528,0), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
6070{"btctrl+", XLO(19,BOTP4,528,1), XLBOBB_MASK, ISA_V2, PPCVLE|EXT, {BI, BH}},
6071
6072{"bcctr-", XLLK(19,528,0), XLBH_MASK, PPCCOM, PPCVLE|EXT, {BOM, BI, BH}},
6073{"bcctr+", XLLK(19,528,0), XLBH_MASK, PPCCOM, PPCVLE|EXT, {BOP, BI, BH}},
14b57c7c 6074{"bcctr", XLLK(19,528,0), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}},
66e85460 6075{"bcc", XLLK(19,528,0), XLBH_MASK, PWRCOM, PPCVLE, {BO, BI, BH}},
1ff6a3b8
AM
6076{"bcctrl-", XLLK(19,528,1), XLBH_MASK, PPCCOM, PPCVLE|EXT, {BOM, BI, BH}},
6077{"bcctrl+", XLLK(19,528,1), XLBH_MASK, PPCCOM, PPCVLE|EXT, {BOP, BI, BH}},
14b57c7c 6078{"bcctrl", XLLK(19,528,1), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}},
66e85460 6079{"bccl", XLLK(19,528,1), XLBH_MASK, PWRCOM, PPCVLE, {BO, BI, BH}},
14b57c7c 6080
1ff6a3b8
AM
6081{"bdnztar", XLO(19,BODNZ,560,0), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6082{"bdnztarl", XLO(19,BODNZ,560,1), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6083{"bdztar", XLO(19,BODZ,560,0), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6084{"bdztarl", XLO(19,BODZ,560,1), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6085{"btar", XLO(19,BOU,560,0), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6086{"btarl", XLO(19,BOU,560,1), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6087{"bdnztar-", XLO(19,BODNZM4,560,0), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6088{"bdnztarl-", XLO(19,BODNZM4,560,1), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6089{"bdnztar+", XLO(19,BODNZP4,560,0), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6090{"bdnztarl+", XLO(19,BODNZP4,560,1), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6091{"bdztar-", XLO(19,BODZM4,560,0), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6092{"bdztarl-", XLO(19,BODZM4,560,1), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6093{"bdztar+", XLO(19,BODZP4,560,0), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6094{"bdztarl+", XLO(19,BODZP4,560,1), XLBOBIBB_MASK, POWER8, PPCVLE|EXT, {BH}},
6095
6096{"bgetar", XLOCB(19,BOF,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6097{"bnltar", XLOCB(19,BOF,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6098{"bgetarl", XLOCB(19,BOF,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6099{"bnltarl", XLOCB(19,BOF,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6100{"bletar", XLOCB(19,BOF,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6101{"bngtar", XLOCB(19,BOF,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6102{"bletarl", XLOCB(19,BOF,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6103{"bngtarl", XLOCB(19,BOF,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6104{"bnetar", XLOCB(19,BOF,CBEQ,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6105{"bnetarl", XLOCB(19,BOF,CBEQ,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6106{"bnstar", XLOCB(19,BOF,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6107{"bnutar", XLOCB(19,BOF,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6108{"bnstarl", XLOCB(19,BOF,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6109{"bnutarl", XLOCB(19,BOF,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6110{"bgetar-", XLOCB(19,BOFM4,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6111{"bnltar-", XLOCB(19,BOFM4,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6112{"bgetarl-",XLOCB(19,BOFM4,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6113{"bnltarl-",XLOCB(19,BOFM4,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6114{"bletar-", XLOCB(19,BOFM4,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6115{"bngtar-", XLOCB(19,BOFM4,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6116{"bletarl-",XLOCB(19,BOFM4,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6117{"bngtarl-",XLOCB(19,BOFM4,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6118{"bnetar-", XLOCB(19,BOFM4,CBEQ,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6119{"bnetarl-",XLOCB(19,BOFM4,CBEQ,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6120{"bnstar-", XLOCB(19,BOFM4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6121{"bnutar-", XLOCB(19,BOFM4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6122{"bnstarl-",XLOCB(19,BOFM4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6123{"bnutarl-",XLOCB(19,BOFM4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6124{"bgetar+", XLOCB(19,BOFP4,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6125{"bnltar+", XLOCB(19,BOFP4,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6126{"bgetarl+",XLOCB(19,BOFP4,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6127{"bnltarl+",XLOCB(19,BOFP4,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6128{"bletar+", XLOCB(19,BOFP4,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6129{"bngtar+", XLOCB(19,BOFP4,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6130{"bletarl+",XLOCB(19,BOFP4,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6131{"bngtarl+",XLOCB(19,BOFP4,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6132{"bnetar+", XLOCB(19,BOFP4,CBEQ,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6133{"bnetarl+",XLOCB(19,BOFP4,CBEQ,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6134{"bnstar+", XLOCB(19,BOFP4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6135{"bnutar+", XLOCB(19,BOFP4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6136{"bnstarl+",XLOCB(19,BOFP4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6137{"bnutarl+",XLOCB(19,BOFP4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6138{"blttar", XLOCB(19,BOT,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6139{"blttarl", XLOCB(19,BOT,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6140{"bgttar", XLOCB(19,BOT,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6141{"bgttarl", XLOCB(19,BOT,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6142{"beqtar", XLOCB(19,BOT,CBEQ,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6143{"beqtarl", XLOCB(19,BOT,CBEQ,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6144{"bsotar", XLOCB(19,BOT,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6145{"buntar", XLOCB(19,BOT,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6146{"bsotarl", XLOCB(19,BOT,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6147{"buntarl", XLOCB(19,BOT,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6148{"blttar-", XLOCB(19,BOTM4,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6149{"blttarl-",XLOCB(19,BOTM4,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6150{"bgttar-", XLOCB(19,BOTM4,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6151{"bgttarl-",XLOCB(19,BOTM4,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6152{"beqtar-", XLOCB(19,BOTM4,CBEQ,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6153{"beqtarl-",XLOCB(19,BOTM4,CBEQ,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6154{"bsotar-", XLOCB(19,BOTM4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6155{"buntar-", XLOCB(19,BOTM4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6156{"bsotarl-",XLOCB(19,BOTM4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6157{"buntarl-",XLOCB(19,BOTM4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6158{"blttar+", XLOCB(19,BOTP4,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6159{"blttarl+",XLOCB(19,BOTP4,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6160{"bgttar+", XLOCB(19,BOTP4,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6161{"bgttarl+",XLOCB(19,BOTP4,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6162{"beqtar+", XLOCB(19,BOTP4,CBEQ,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6163{"beqtarl+",XLOCB(19,BOTP4,CBEQ,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6164{"bsotar+", XLOCB(19,BOTP4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6165{"buntar+", XLOCB(19,BOTP4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6166{"bsotarl+",XLOCB(19,BOTP4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6167{"buntarl+",XLOCB(19,BOTP4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE|EXT, {CR, BH}},
6168
6169{"bdnzftar", XLO(19,BODNZF,560,0), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
6170{"bdnzftarl", XLO(19,BODNZF,560,1), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
6171{"bdzftar", XLO(19,BODZF,560,0), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
6172{"bdzftarl", XLO(19,BODZF,560,1), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
6173
6174{"bftar", XLO(19,BOF,560,0), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
6175{"bftarl", XLO(19,BOF,560,1), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
6176{"bftar-", XLO(19,BOFM4,560,0), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
6177{"bftarl-", XLO(19,BOFM4,560,1), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
6178{"bftar+", XLO(19,BOFP4,560,0), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
6179{"bftarl+", XLO(19,BOFP4,560,1), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
6180
6181{"bdnzttar", XLO(19,BODNZT,560,0), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
6182{"bdnzttarl", XLO(19,BODNZT,560,1), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
6183{"bdzttar", XLO(19,BODZT,560,0), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
6184{"bdzttarl", XLO(19,BODZT,560,1), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
6185
6186{"bttar", XLO(19,BOT,560,0), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
6187{"bttarl", XLO(19,BOT,560,1), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
6188{"bttar-", XLO(19,BOTM4,560,0), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
6189{"bttarl-", XLO(19,BOTM4,560,1), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
6190{"bttar+", XLO(19,BOTP4,560,0), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
6191{"bttarl+", XLO(19,BOTP4,560,1), XLBOBB_MASK, POWER8, PPCVLE|EXT, {BI, BH}},
6192
6193{"bctar-", XLLK(19,560,0), XLBH_MASK, POWER8, PPCVLE|EXT, {BOM, BI, BH}},
6194{"bctar+", XLLK(19,560,0), XLBH_MASK, POWER8, PPCVLE|EXT, {BOP, BI, BH}},
14b57c7c 6195{"bctar", XLLK(19,560,0), XLBH_MASK, POWER8, PPCVLE, {BO, BI, BH}},
1ff6a3b8
AM
6196{"bctarl-", XLLK(19,560,1), XLBH_MASK, POWER8, PPCVLE|EXT, {BOM, BI, BH}},
6197{"bctarl+", XLLK(19,560,1), XLBH_MASK, POWER8, PPCVLE|EXT, {BOP, BI, BH}},
14b57c7c
AM
6198{"bctarl", XLLK(19,560,1), XLBH_MASK, POWER8, PPCVLE, {BO, BI, BH}},
6199
6200{"rlwimi", M(20,0), M_MASK, PPCCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
6201{"rlimi", M(20,0), M_MASK, PWRCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
6202
6203{"rlwimi.", M(20,1), M_MASK, PPCCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
6204{"rlimi.", M(20,1), M_MASK, PWRCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
6205
1ff6a3b8
AM
6206{"rotlwi", MME(21,31,0), MMBME_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, SH}},
6207{"clrlwi", MME(21,31,0), MSHME_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, MB}},
14b57c7c
AM
6208{"rlwinm", M(21,0), M_MASK, PPCCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
6209{"rlinm", M(21,0), M_MASK, PWRCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
1ff6a3b8
AM
6210{"rotlwi.", MME(21,31,1), MMBME_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, SH}},
6211{"clrlwi.", MME(21,31,1), MSHME_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, MB}},
14b57c7c
AM
6212{"rlwinm.", M(21,1), M_MASK, PPCCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
6213{"rlinm.", M(21,1), M_MASK, PWRCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
6214
6215{"rlmi", M(22,0), M_MASK, M601, PPCVLE, {RA, RS, RB, MBE, ME}},
6216{"rlmi.", M(22,1), M_MASK, M601, PPCVLE, {RA, RS, RB, MBE, ME}},
6217
1ff6a3b8 6218{"rotlw", MME(23,31,0), MMBME_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, RB}},
14b57c7c
AM
6219{"rlwnm", M(23,0), M_MASK, PPCCOM, PPCVLE, {RA, RS, RB, MBE, ME}},
6220{"rlnm", M(23,0), M_MASK, PWRCOM, PPCVLE, {RA, RS, RB, MBE, ME}},
1ff6a3b8 6221{"rotlw.", MME(23,31,1), MMBME_MASK, PPCCOM, PPCVLE|EXT, {RA, RS, RB}},
14b57c7c
AM
6222{"rlwnm.", M(23,1), M_MASK, PPCCOM, PPCVLE, {RA, RS, RB, MBE, ME}},
6223{"rlnm.", M(23,1), M_MASK, PWRCOM, PPCVLE, {RA, RS, RB, MBE, ME}},
6224
1ff6a3b8
AM
6225{"nop", OP(24), 0xffffffff, PPCCOM, PPCVLE|EXT, {0}},
6226{"exser", 0x63ff0000, 0xffffffff, POWER9, PPCVLE|EXT, {0}},
14b57c7c
AM
6227{"ori", OP(24), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
6228{"oril", OP(24), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
6229
6230{"oris", OP(25), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
6231{"oriu", OP(25), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
6232
1ff6a3b8 6233{"xnop", OP(26), 0xffffffff, PPCCOM, PPCVLE|EXT, {0}},
14b57c7c
AM
6234{"xori", OP(26), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
6235{"xoril", OP(26), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
6236
6237{"xoris", OP(27), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
6238{"xoriu", OP(27), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
6239
6240{"andi.", OP(28), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
6241{"andil.", OP(28), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
6242
6243{"andis.", OP(29), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
6244{"andiu.", OP(29), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
6245
1ff6a3b8
AM
6246{"rotldi", MD(30,0,0), MDMB_MASK, PPC64, PPCVLE|EXT, {RA, RS, SH6}},
6247{"clrldi", MD(30,0,0), MDSH_MASK, PPC64, PPCVLE|EXT, {RA, RS, MB6}},
14b57c7c 6248{"rldicl", MD(30,0,0), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
1ff6a3b8
AM
6249{"rotldi.", MD(30,0,1), MDMB_MASK, PPC64, PPCVLE|EXT, {RA, RS, SH6}},
6250{"clrldi.", MD(30,0,1), MDSH_MASK, PPC64, PPCVLE|EXT, {RA, RS, MB6}},
14b57c7c
AM
6251{"rldicl.", MD(30,0,1), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
6252
6253{"rldicr", MD(30,1,0), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, ME6}},
6254{"rldicr.", MD(30,1,1), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, ME6}},
6255
6256{"rldic", MD(30,2,0), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
6257{"rldic.", MD(30,2,1), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
6258
6259{"rldimi", MD(30,3,0), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
6260{"rldimi.", MD(30,3,1), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
6261
1ff6a3b8 6262{"rotld", MDS(30,8,0), MDSMB_MASK, PPC64, PPCVLE|EXT, {RA, RS, RB}},
14b57c7c 6263{"rldcl", MDS(30,8,0), MDS_MASK, PPC64, PPCVLE, {RA, RS, RB, MB6}},
1ff6a3b8 6264{"rotld.", MDS(30,8,1), MDSMB_MASK, PPC64, PPCVLE|EXT, {RA, RS, RB}},
14b57c7c
AM
6265{"rldcl.", MDS(30,8,1), MDS_MASK, PPC64, PPCVLE, {RA, RS, RB, MB6}},
6266
6267{"rldcr", MDS(30,9,0), MDS_MASK, PPC64, PPCVLE, {RA, RS, RB, ME6}},
6268{"rldcr.", MDS(30,9,1), MDS_MASK, PPC64, PPCVLE, {RA, RS, RB, ME6}},
6269
1ff6a3b8
AM
6270{"cmpw", XOPL(31,0,0), XCMPL_MASK, PPCCOM, EXT, {OBF, RA, RB}},
6271{"cmpd", XOPL(31,0,1), XCMPL_MASK, PPC64, EXT, {OBF, RA, RB}},
a5721ba2 6272{"cmp", X(31,0), XCMP_MASK, PPC, 0, {BF, L32OPT, RA, RB}},
bdc70b4a 6273{"cmp", X(31,0), XCMPL_MASK, PWRCOM, PPC, {BF, RA, RB}},
1cb0a767 6274
1ff6a3b8
AM
6275{"twlgt", XTO(31,4,TOLGT), XTO_MASK, PPCCOM, EXT, {RA, RB}},
6276{"tlgt", XTO(31,4,TOLGT), XTO_MASK, PWRCOM, EXT, {RA, RB}},
6277{"twllt", XTO(31,4,TOLLT), XTO_MASK, PPCCOM, EXT, {RA, RB}},
6278{"tllt", XTO(31,4,TOLLT), XTO_MASK, PWRCOM, EXT, {RA, RB}},
6279{"tweq", XTO(31,4,TOEQ), XTO_MASK, PPCCOM, EXT, {RA, RB}},
6280{"teq", XTO(31,4,TOEQ), XTO_MASK, PWRCOM, EXT, {RA, RB}},
6281{"twlge", XTO(31,4,TOLGE), XTO_MASK, PPCCOM, EXT, {RA, RB}},
6282{"tlge", XTO(31,4,TOLGE), XTO_MASK, PWRCOM, EXT, {RA, RB}},
6283{"twlnl", XTO(31,4,TOLNL), XTO_MASK, PPCCOM, EXT, {RA, RB}},
6284{"tlnl", XTO(31,4,TOLNL), XTO_MASK, PWRCOM, EXT, {RA, RB}},
6285{"twlle", XTO(31,4,TOLLE), XTO_MASK, PPCCOM, EXT, {RA, RB}},
6286{"tlle", XTO(31,4,TOLLE), XTO_MASK, PWRCOM, EXT, {RA, RB}},
6287{"twlng", XTO(31,4,TOLNG), XTO_MASK, PPCCOM, EXT, {RA, RB}},
6288{"tlng", XTO(31,4,TOLNG), XTO_MASK, PWRCOM, EXT, {RA, RB}},
6289{"twgt", XTO(31,4,TOGT), XTO_MASK, PPCCOM, EXT, {RA, RB}},
6290{"tgt", XTO(31,4,TOGT), XTO_MASK, PWRCOM, EXT, {RA, RB}},
6291{"twge", XTO(31,4,TOGE), XTO_MASK, PPCCOM, EXT, {RA, RB}},
6292{"tge", XTO(31,4,TOGE), XTO_MASK, PWRCOM, EXT, {RA, RB}},
6293{"twnl", XTO(31,4,TONL), XTO_MASK, PPCCOM, EXT, {RA, RB}},
6294{"tnl", XTO(31,4,TONL), XTO_MASK, PWRCOM, EXT, {RA, RB}},
6295{"twlt", XTO(31,4,TOLT), XTO_MASK, PPCCOM, EXT, {RA, RB}},
6296{"tlt", XTO(31,4,TOLT), XTO_MASK, PWRCOM, EXT, {RA, RB}},
6297{"twle", XTO(31,4,TOLE), XTO_MASK, PPCCOM, EXT, {RA, RB}},
6298{"tle", XTO(31,4,TOLE), XTO_MASK, PWRCOM, EXT, {RA, RB}},
6299{"twng", XTO(31,4,TONG), XTO_MASK, PPCCOM, EXT, {RA, RB}},
6300{"tng", XTO(31,4,TONG), XTO_MASK, PWRCOM, EXT, {RA, RB}},
6301{"twne", XTO(31,4,TONE), XTO_MASK, PPCCOM, EXT, {RA, RB}},
6302{"tne", XTO(31,4,TONE), XTO_MASK, PWRCOM, EXT, {RA, RB}},
6303{"trap", XTO(31,4,TOU), 0xffffffff, PPCCOM, EXT, {0}},
6304{"twu", XTO(31,4,TOU), XTO_MASK, PPCCOM, EXT, {RA, RB}},
6305{"tu", XTO(31,4,TOU), XTO_MASK, PWRCOM, EXT, {RA, RB}},
14b57c7c
AM
6306{"tw", X(31,4), X_MASK, PPCCOM, 0, {TO, RA, RB}},
6307{"t", X(31,4), X_MASK, PWRCOM, 0, {TO, RA, RB}},
6308
6309{"lvsl", X(31,6), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
6310{"lvebx", X(31,7), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
6311{"lbfcmx", APU(31,7,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
6312
6313{"subfc", XO(31,8,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6314{"sf", XO(31,8,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
1ff6a3b8 6315{"subc", XO(31,8,0,0), XO_MASK, PPCCOM, EXT, {RT, RB, RA}},
14b57c7c
AM
6316{"subfc.", XO(31,8,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6317{"sf.", XO(31,8,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
1ff6a3b8 6318{"subc.", XO(31,8,0,1), XO_MASK, PPCCOM, EXT, {RT, RB, RA}},
14b57c7c
AM
6319
6320{"mulhdu", XO(31,9,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
6321{"mulhdu.", XO(31,9,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
6322
6323{"addc", XO(31,10,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6324{"a", XO(31,10,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6325{"addc.", XO(31,10,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6326{"a.", XO(31,10,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6327
6328{"mulhwu", XO(31,11,0,0), XO_MASK, PPC, 0, {RT, RA, RB}},
6329{"mulhwu.", XO(31,11,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
6330
6331{"lxsiwzx", X(31,12), XX1_MASK, PPCVSX2, 0, {XT6, RA0, RB}},
6332
9cc4ce88
AM
6333{"lxvrbx", X(31,13), XX1_MASK, POWER10, 0, {XT6, RA0, RB}},
6334
1ff6a3b8
AM
6335{"isellt", XISEL(31,15,0), X_MASK, PPCISEL, EXT, {RT, RA0, RB}},
6336{"iselgt", XISEL(31,15,1), X_MASK, PPCISEL, EXT, {RT, RA0, RB}},
6337{"iseleq", XISEL(31,15,2), X_MASK, PPCISEL, EXT, {RT, RA0, RB}},
6338{"isel", XISEL(31,15,0), XISEL_MASK, PPCISEL|TITAN, 0, {RT, RA0, RB, CRB}},
14b57c7c
AM
6339
6340{"tlbilxlpid", XTO(31,18,0), XTO_MASK, E500MC|PPCA2, 0, {0}},
6341{"tlbilxpid", XTO(31,18,1), XTO_MASK, E500MC|PPCA2, 0, {0}},
6342{"tlbilxva", XTO(31,18,3), XTO_MASK, E500MC|PPCA2, 0, {RA0, RB}},
6343{"tlbilx", X(31,18), X_MASK, E500MC|PPCA2, 0, {T, RA0, RB}},
6344
6345{"mfcr", XFXM(31,19,0,0), XFXFXM_MASK, COM, 0, {RT, FXM4}},
6346{"mfocrf", XFXM(31,19,0,1), XFXFXM_MASK, COM, 0, {RT, FXM}},
6347
6348{"lwarx", X(31,20), XEH_MASK, PPC, 0, {RT, RA0, RB, EH}},
6349
6350{"ldx", X(31,21), X_MASK, PPC64, 0, {RT, RA0, RB}},
6351
8b2742a1 6352{"icbt", X(31,22), X_MASK, POWER5|BOOKE|PPCE300, 0, {CT, RA0, RB}},
14b57c7c
AM
6353
6354{"lwzx", X(31,23), X_MASK, PPCCOM, 0, {RT, RA0, RB}},
6355{"lx", X(31,23), X_MASK, PWRCOM, 0, {RT, RA, RB}},
6356
6357{"slw", XRC(31,24,0), X_MASK, PPCCOM, 0, {RA, RS, RB}},
6358{"sl", XRC(31,24,0), X_MASK, PWRCOM, 0, {RA, RS, RB}},
6359{"slw.", XRC(31,24,1), X_MASK, PPCCOM, 0, {RA, RS, RB}},
6360{"sl.", XRC(31,24,1), X_MASK, PWRCOM, 0, {RA, RS, RB}},
6361
6362{"cntlzw", XRC(31,26,0), XRB_MASK, PPCCOM, 0, {RA, RS}},
6363{"cntlz", XRC(31,26,0), XRB_MASK, PWRCOM, 0, {RA, RS}},
6364{"cntlzw.", XRC(31,26,1), XRB_MASK, PPCCOM, 0, {RA, RS}},
6365{"cntlz.", XRC(31,26,1), XRB_MASK, PWRCOM, 0, {RA, RS}},
6366
6367{"sld", XRC(31,27,0), X_MASK, PPC64, 0, {RA, RS, RB}},
6368{"sld.", XRC(31,27,1), X_MASK, PPC64, 0, {RA, RS, RB}},
6369
6370{"and", XRC(31,28,0), X_MASK, COM, 0, {RA, RS, RB}},
6371{"and.", XRC(31,28,1), X_MASK, COM, 0, {RA, RS, RB}},
6372
6373{"maskg", XRC(31,29,0), X_MASK, M601, PPCA2, {RA, RS, RB}},
6374{"maskg.", XRC(31,29,1), X_MASK, M601, PPCA2, {RA, RS, RB}},
6375
6376{"ldepx", X(31,29), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
6377
6378{"waitasec", X(31,30), XRTRARB_MASK, POWER8, POWER9, {0}},
1ff6a3b8
AM
6379{"waitrsv", XWCPL(31,30,1,0),0xffffffff, POWER10, EXT, {0}},
6380{"pause_short", XWCPL(31,30,2,0),0xffffffff, POWER10, EXT, {0}},
3d205eb4
PB
6381{"wait", X(31,30), XWCPL_MASK, POWER10, 0, {WC, PL}},
6382{"wait", X(31,30), XWC_MASK, POWER9, POWER10, {WC}},
14b57c7c
AM
6383
6384{"lwepx", X(31,31), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
6385
1ff6a3b8
AM
6386{"cmplw", XOPL(31,32,0), XCMPL_MASK, PPCCOM, EXT, {OBF, RA, RB}},
6387{"cmpld", XOPL(31,32,1), XCMPL_MASK, PPC64, EXT, {OBF, RA, RB}},
a5721ba2 6388{"cmpl", X(31,32), XCMP_MASK, PPC, 0, {BF, L32OPT, RA, RB}},
bdc70b4a 6389{"cmpl", X(31,32), XCMPL_MASK, PWRCOM, PPC, {BF, RA, RB}},
de866fcc 6390
14b57c7c
AM
6391{"lvsr", X(31,38), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
6392{"lvehx", X(31,39), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
6393{"lhfcmx", APU(31,39,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
de866fcc 6394
9cc4ce88
AM
6395{"lxvrhx", X(31,45), XX1_MASK, POWER10, 0, {XT6, RA0, RB}},
6396
ac8f0f72 6397{"mviwsplt", X(31,46), X_MASK, E6500, 0, {VD, RA, RB}},
e67ed0e8 6398
14b57c7c 6399{"lvewx", X(31,71), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
de866fcc 6400
14b57c7c 6401{"addg6s", XO(31,74,0,0), XO_MASK, POWER6, 0, {RT, RA, RB}},
066be9f7 6402
14b57c7c 6403{"lxsiwax", X(31,76), XX1_MASK, PPCVSX2, 0, {XT6, RA0, RB}},
c0637f3a 6404
9cc4ce88
AM
6405{"lxvrwx", X(31,77), XX1_MASK, POWER10, 0, {XT6, RA0, RB}},
6406
14b57c7c 6407{"subf", XO(31,40,0,0), XO_MASK, PPC, 0, {RT, RA, RB}},
1ff6a3b8 6408{"sub", XO(31,40,0,0), XO_MASK, PPC, EXT, {RT, RB, RA}},
14b57c7c 6409{"subf.", XO(31,40,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
1ff6a3b8 6410{"sub.", XO(31,40,0,1), XO_MASK, PPC, EXT, {RT, RB, RA}},
de866fcc 6411
1ff6a3b8
AM
6412{"mffprd", X(31,51), XX1RB_MASK|1, PPCVSX2, EXT, {RA, FRS}},
6413{"mfvrd", X(31,51)|1, XX1RB_MASK|1, PPCVSX2, EXT, {RA, VS}},
5fbec329 6414{"mfvsrd", X(31,51), XX1RB_MASK, PPCVSX2, 0, {RA, XS6}},
14b57c7c 6415{"eratilx", X(31,51), X_MASK, PPCA2, 0, {ERAT_T, RA, RB}},
e0d602ec 6416
14b57c7c 6417{"lbarx", X(31,52), XEH_MASK, POWER8|E6500, 0, {RT, RA0, RB, EH}},
066be9f7 6418
14b57c7c 6419{"ldux", X(31,53), X_MASK, PPC64, 0, {RT, RAL, RB}},
43e65147 6420
14b57c7c 6421{"dcbst", X(31,54), XRT_MASK, PPC, 0, {RA0, RB}},
43e65147 6422
14b57c7c
AM
6423{"lwzux", X(31,55), X_MASK, PPCCOM, 0, {RT, RAL, RB}},
6424{"lux", X(31,55), X_MASK, PWRCOM, 0, {RT, RA, RB}},
de866fcc 6425
14b57c7c
AM
6426{"cntlzd", XRC(31,58,0), XRB_MASK, PPC64, 0, {RA, RS}},
6427{"cntlzd.", XRC(31,58,1), XRB_MASK, PPC64, 0, {RA, RS}},
de866fcc 6428
ec40e91c
AM
6429{"cntlzdm", X(31,59), X_MASK, POWER10, 0, {RA, RS, RB}},
6430
14b57c7c
AM
6431{"andc", XRC(31,60,0), X_MASK, COM, 0, {RA, RS, RB}},
6432{"andc.", XRC(31,60,1), X_MASK, COM, 0, {RA, RS, RB}},
de866fcc 6433
1ff6a3b8
AM
6434{"waitrsv", X(31,62)|(1<<21), 0xffffffff, E500MC|PPCA2, EXT, {0}},
6435{"waitimpl", X(31,62)|(2<<21), 0xffffffff, E500MC|PPCA2, EXT, {0}},
14b57c7c 6436{"wait", X(31,62), XWC_MASK, E500MC|PPCA2, 0, {WC}},
43e65147 6437
14b57c7c 6438{"dcbstep", XRT(31,63,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}},
19a6653c 6439
1ff6a3b8
AM
6440{"tdlgt", XTO(31,68,TOLGT), XTO_MASK, PPC64, EXT, {RA, RB}},
6441{"tdllt", XTO(31,68,TOLLT), XTO_MASK, PPC64, EXT, {RA, RB}},
6442{"tdeq", XTO(31,68,TOEQ), XTO_MASK, PPC64, EXT, {RA, RB}},
6443{"tdlge", XTO(31,68,TOLGE), XTO_MASK, PPC64, EXT, {RA, RB}},
6444{"tdlnl", XTO(31,68,TOLNL), XTO_MASK, PPC64, EXT, {RA, RB}},
6445{"tdlle", XTO(31,68,TOLLE), XTO_MASK, PPC64, EXT, {RA, RB}},
6446{"tdlng", XTO(31,68,TOLNG), XTO_MASK, PPC64, EXT, {RA, RB}},
6447{"tdgt", XTO(31,68,TOGT), XTO_MASK, PPC64, EXT, {RA, RB}},
6448{"tdge", XTO(31,68,TOGE), XTO_MASK, PPC64, EXT, {RA, RB}},
6449{"tdnl", XTO(31,68,TONL), XTO_MASK, PPC64, EXT, {RA, RB}},
6450{"tdlt", XTO(31,68,TOLT), XTO_MASK, PPC64, EXT, {RA, RB}},
6451{"tdle", XTO(31,68,TOLE), XTO_MASK, PPC64, EXT, {RA, RB}},
6452{"tdng", XTO(31,68,TONG), XTO_MASK, PPC64, EXT, {RA, RB}},
6453{"tdne", XTO(31,68,TONE), XTO_MASK, PPC64, EXT, {RA, RB}},
6454{"tdu", XTO(31,68,TOU), XTO_MASK, PPC64, EXT, {RA, RB}},
14b57c7c 6455{"td", X(31,68), X_MASK, PPC64, 0, {TO, RA, RB}},
de866fcc 6456
14b57c7c
AM
6457{"lwfcmx", APU(31,71,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
6458{"mulhd", XO(31,73,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
6459{"mulhd.", XO(31,73,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
43e65147 6460
14b57c7c
AM
6461{"mulhw", XO(31,75,0,0), XO_MASK, PPC, 0, {RT, RA, RB}},
6462{"mulhw.", XO(31,75,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
de866fcc 6463
8b2742a1 6464{"msgsndu", XRTRA(31,78,0,0), XRTRA_MASK, POWER9, 0, {RB}},
62adc510
AM
6465{"dlmzb", XRC(31,78,0), X_MASK, PPC403|PPC440|PPC476|TITAN, 0, {RA, RS, RB}},
6466{"dlmzb.", XRC(31,78,1), X_MASK, PPC403|PPC440|PPC476|TITAN, 0, {RA, RS, RB}},
de866fcc 6467
14b57c7c 6468{"mtsrd", X(31,82), XRB_MASK|(1<<20), PPC64, 0, {SR, RS}},
de866fcc 6469
14b57c7c 6470{"mfmsr", X(31,83), XRARB_MASK, COM, 0, {RT}},
43e65147 6471
14b57c7c 6472{"ldarx", X(31,84), XEH_MASK, PPC64, 0, {RT, RA0, RB, EH}},
de866fcc 6473
1ff6a3b8
AM
6474{"dcbfl", XOPL(31,86,1), XRT_MASK, POWER5, PPC476|EXT, {RA0, RB}},
6475{"dcbflp", XOPL2(31,86,3), XRT_MASK, POWER9, PPC476|EXT, {RA0, RB}},
6476{"dcbfps", XOPL3(31,86,4), XRT_MASK, POWER10, PPC476|EXT, {RA0, RB}},
6477{"dcbstps", XOPL3(31,86,6), XRT_MASK, POWER10, PPC476|EXT, {RA0, RB}},
3d205eb4
PB
6478{"dcbf", X(31,86), XL3RT_MASK, POWER10, PPC476, {RA0, RB, L3OPT}},
6479{"dcbf", X(31,86), XLRT_MASK, PPC, POWER10, {RA0, RB, L2OPT}},
de866fcc 6480
14b57c7c 6481{"lbzx", X(31,87), X_MASK, COM, 0, {RT, RA0, RB}},
43e65147 6482
14b57c7c 6483{"lbepx", X(31,95), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
de866fcc 6484
14b57c7c 6485{"dni", XRC(31,97,1), XRB_MASK, E6500, 0, {DUI, DCTL}},
aea77599 6486
14b57c7c
AM
6487{"lvx", X(31,103), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
6488{"lqfcmx", APU(31,103,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
de866fcc 6489
14b57c7c
AM
6490{"neg", XO(31,104,0,0), XORB_MASK, COM, 0, {RT, RA}},
6491{"neg.", XO(31,104,0,1), XORB_MASK, COM, 0, {RT, RA}},
de866fcc 6492
14b57c7c
AM
6493{"mul", XO(31,107,0,0), XO_MASK, M601, 0, {RT, RA, RB}},
6494{"mul.", XO(31,107,0,1), XO_MASK, M601, 0, {RT, RA, RB}},
de866fcc 6495
9cc4ce88
AM
6496{"lxvrdx", X(31,109), XX1_MASK, POWER10, 0, {XT6, RA0, RB}},
6497
8b2742a1 6498{"msgclru", XRTRA(31,110,0,0), XRTRA_MASK, POWER9, 0, {RB}},
ac8f0f72 6499{"mvidsplt", X(31,110), X_MASK, E6500, 0, {VD, RA, RB}},
aea77599 6500
14b57c7c 6501{"mtsrdin", X(31,114), XRA_MASK, PPC64, 0, {RS, RB}},
de866fcc 6502
1ff6a3b8
AM
6503{"mffprwz", X(31,115), XX1RB_MASK|1, PPCVSX2, EXT, {RA, FRS}},
6504{"mfvrwz", X(31,115)|1, XX1RB_MASK|1, PPCVSX2, EXT, {RA, VS}},
14b57c7c 6505{"mfvsrwz", X(31,115), XX1RB_MASK, PPCVSX2, 0, {RA, XS6}},
c0637f3a 6506
14b57c7c 6507{"lharx", X(31,116), XEH_MASK, POWER8|E6500, 0, {RT, RA0, RB, EH}},
066be9f7 6508
14b57c7c 6509{"clf", X(31,118), XTO_MASK, POWER, 0, {RA, RB}},
de866fcc 6510
14b57c7c 6511{"lbzux", X(31,119), X_MASK, COM, 0, {RT, RAL, RB}},
43e65147 6512
14b57c7c 6513{"popcntb", X(31,122), XRB_MASK, POWER5, 0, {RA, RS}},
de866fcc 6514
1ff6a3b8 6515{"not", XRC(31,124,0), X_MASK, COM, EXT, {RA, RSB}},
14b57c7c 6516{"nor", XRC(31,124,0), X_MASK, COM, 0, {RA, RS, RB}},
1ff6a3b8 6517{"not.", XRC(31,124,1), X_MASK, COM, EXT, {RA, RSB}},
14b57c7c 6518{"nor.", XRC(31,124,1), X_MASK, COM, 0, {RA, RS, RB}},
19a6653c 6519
14b57c7c 6520{"dcbfep", XRT(31,127,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}},
43e65147 6521
fd486b63 6522{"setb", X(31,128), XRB_MASK|(3<<16), POWER9, 0, {RT, BFA}},
a680de9a 6523
14b57c7c 6524{"wrtee", X(31,131), XRARB_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RS}},
43e65147 6525
14b57c7c 6526{"dcbtstls", X(31,134), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
de866fcc 6527
14b57c7c
AM
6528{"stvebx", X(31,135), X_MASK, PPCVEC, 0, {VS, RA0, RB}},
6529{"stbfcmx", APU(31,135,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
de866fcc 6530
14b57c7c
AM
6531{"subfe", XO(31,136,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6532{"sfe", XO(31,136,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6533{"subfe.", XO(31,136,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6534{"sfe.", XO(31,136,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
de866fcc 6535
14b57c7c
AM
6536{"adde", XO(31,138,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6537{"ae", XO(31,138,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6538{"adde.", XO(31,138,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6539{"ae.", XO(31,138,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
de866fcc 6540
14b57c7c 6541{"stxsiwx", X(31,140), XX1_MASK, PPCVSX2, 0, {XS6, RA0, RB}},
c0637f3a 6542
9cc4ce88
AM
6543{"stxvrbx", X(31,141), XX1_MASK, POWER10, 0, {XT6, RA0, RB}},
6544
14b57c7c
AM
6545{"msgsndp", XRTRA(31,142,0,0), XRTRA_MASK, POWER8, 0, {RB}},
6546{"dcbtstlse", X(31,142), X_MASK, PPCCHLK, E500MC, {CT, RA0, RB}},
de866fcc 6547
1ff6a3b8 6548{"mtcr", XFXM(31,144,0xff,0), XRARB_MASK, COM, EXT, {RS}},
14b57c7c
AM
6549{"mtcrf", XFXM(31,144,0,0), XFXFXM_MASK, COM, 0, {FXM, RS}},
6550{"mtocrf", XFXM(31,144,0,1), XFXFXM_MASK, COM, 0, {FXM, RS}},
de866fcc 6551
14b57c7c 6552{"mtmsr", X(31,146), XRLARB_MASK, COM, 0, {RS, A_L}},
de866fcc 6553
14b57c7c 6554{"mtsle", X(31,147), XRTLRARB_MASK, POWER8, 0, {L}},
14b57c7c
AM
6555{"eratsx", XRC(31,147,0), X_MASK, PPCA2, 0, {RT, RA0, RB}},
6556{"eratsx.", XRC(31,147,1), X_MASK, PPCA2, 0, {RT, RA0, RB}},
e0d602ec 6557
14b57c7c 6558{"stdx", X(31,149), X_MASK, PPC64, 0, {RS, RA0, RB}},
43e65147 6559
14b57c7c 6560{"stwcx.", XRC(31,150,1), X_MASK, PPC, 0, {RS, RA0, RB}},
43e65147 6561
14b57c7c
AM
6562{"stwx", X(31,151), X_MASK, PPCCOM, 0, {RS, RA0, RB}},
6563{"stx", X(31,151), X_MASK, PWRCOM, 0, {RS, RA, RB}},
de866fcc 6564
14b57c7c
AM
6565{"slq", XRC(31,152,0), X_MASK, M601, 0, {RA, RS, RB}},
6566{"slq.", XRC(31,152,1), X_MASK, M601, 0, {RA, RS, RB}},
de866fcc 6567
14b57c7c
AM
6568{"sle", XRC(31,153,0), X_MASK, M601, 0, {RA, RS, RB}},
6569{"sle.", XRC(31,153,1), X_MASK, M601, 0, {RA, RS, RB}},
de866fcc 6570
14b57c7c 6571{"prtyw", X(31,154), XRB_MASK, POWER6|PPCA2|PPC476, 0, {RA, RS}},
de866fcc 6572
3ff0a5ba 6573{"brw", X(31,155), XRB_MASK, POWER10, 0, {RA, RS}},
ec40e91c 6574{"pdepd", X(31,156), X_MASK, POWER10, 0, {RA, RS, RB}},
3ff0a5ba 6575
14b57c7c 6576{"stdepx", X(31,157), X_MASK, E500MC|PPCA2, 0, {RS, RA0, RB}},
43e65147 6577
14b57c7c 6578{"stwepx", X(31,159), X_MASK, E500MC|PPCA2, 0, {RS, RA0, RB}},
43e65147 6579
14b57c7c 6580{"wrteei", X(31,163), XE_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {E}},
43e65147 6581
14b57c7c 6582{"dcbtls", X(31,166), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
de866fcc 6583
14b57c7c
AM
6584{"stvehx", X(31,167), X_MASK, PPCVEC, 0, {VS, RA0, RB}},
6585{"sthfcmx", APU(31,167,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
de866fcc 6586
14b57c7c 6587{"addex", ZRC(31,170,0), Z2_MASK, POWER9, 0, {RT, RA, RB, CY}},
19dfcc89 6588
9cc4ce88
AM
6589{"stxvrhx", X(31,173), XX1_MASK, POWER10, 0, {XT6, RA0, RB}},
6590
14b57c7c
AM
6591{"msgclrp", XRTRA(31,174,0,0), XRTRA_MASK, POWER8, 0, {RB}},
6592{"dcbtlse", X(31,174), X_MASK, PPCCHLK, E500MC, {CT, RA0, RB}},
de866fcc 6593
aa3c112f
AM
6594{"xxmfacc", XVA(31,177,0), XRARB_MASK|3<<21, POWER10, 0, {ACC}},
6595{"xxmtacc", XVA(31,177,1), XRARB_MASK|3<<21, POWER10, 0, {ACC}},
6596{"xxsetaccz", XVA(31,177,3), XRARB_MASK|3<<21, POWER10, 0, {ACC}},
6597
14b57c7c 6598{"mtmsrd", X(31,178), XRLARB_MASK, PPC64, 0, {RS, A_L}},
de866fcc 6599
1ff6a3b8
AM
6600{"mtfprd", X(31,179), XX1RB_MASK|1, PPCVSX2, EXT, {FRT, RA}},
6601{"mtvrd", X(31,179)|1, XX1RB_MASK|1, PPCVSX2, EXT, {VD, RA}},
5fbec329 6602{"mtvsrd", X(31,179), XX1RB_MASK, PPCVSX2, 0, {XT6, RA}},
14b57c7c 6603{"eratre", X(31,179), X_MASK, PPCA2, 0, {RT, RA, WS}},
e0d602ec 6604
14b57c7c 6605{"stdux", X(31,181), X_MASK, PPC64, 0, {RS, RAS, RB}},
de866fcc 6606
73f07bff 6607{"stqcx.", XRC(31,182,1), X_MASK|Q_MASK, POWER8, 0, {RSQ, RA0, RB}},
14b57c7c 6608{"wchkall", X(31,182), X_MASK, PPCA2, 0, {OBF}},
e0d602ec 6609
14b57c7c
AM
6610{"stwux", X(31,183), X_MASK, PPCCOM, 0, {RS, RAS, RB}},
6611{"stux", X(31,183), X_MASK, PWRCOM, 0, {RS, RA0, RB}},
de866fcc 6612
14b57c7c
AM
6613{"sliq", XRC(31,184,0), X_MASK, M601, 0, {RA, RS, SH}},
6614{"sliq.", XRC(31,184,1), X_MASK, M601, 0, {RA, RS, SH}},
de866fcc 6615
14b57c7c 6616{"prtyd", X(31,186), XRB_MASK, POWER6|PPCA2, 0, {RA, RS}},
252b5132 6617
3ff0a5ba 6618{"brd", X(31,187), XRB_MASK, POWER10, 0, {RA, RS}},
ec40e91c 6619{"pextd", X(31,188), X_MASK, POWER10, 0, {RA, RS, RB}},
3ff0a5ba 6620
14b57c7c 6621{"cmprb", X(31,192), XCMP_MASK, POWER9, 0, {BF, L, RA, RB}},
a680de9a 6622
14b57c7c 6623{"icblq.", XRC(31,198,1), X_MASK, E6500, 0, {CT, RA0, RB}},
aea77599 6624
14b57c7c
AM
6625{"stvewx", X(31,199), X_MASK, PPCVEC, 0, {VS, RA0, RB}},
6626{"stwfcmx", APU(31,199,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
252b5132 6627
14b57c7c
AM
6628{"subfze", XO(31,200,0,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
6629{"sfze", XO(31,200,0,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
6630{"subfze.", XO(31,200,0,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
6631{"sfze.", XO(31,200,0,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
252b5132 6632
14b57c7c
AM
6633{"addze", XO(31,202,0,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
6634{"aze", XO(31,202,0,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
6635{"addze.", XO(31,202,0,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
6636{"aze.", XO(31,202,0,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
418c1742 6637
9cc4ce88
AM
6638{"stxvrwx", X(31,205), XX1_MASK, POWER10, 0, {XT6, RA0, RB}},
6639
14b57c7c 6640{"msgsnd", XRTRA(31,206,0,0), XRTRA_MASK, E500MC|PPCA2|POWER8, 0, {RB}},
19a6653c 6641
14b57c7c 6642{"mtsr", X(31,210), XRB_MASK|(1<<20), COM, NON32, {SR, RS}},
418c1742 6643
1ff6a3b8
AM
6644{"mtfprwa", X(31,211), XX1RB_MASK|1, PPCVSX2, EXT, {FRT, RA}},
6645{"mtvrwa", X(31,211)|1, XX1RB_MASK|1, PPCVSX2, EXT, {VD, RA}},
14b57c7c
AM
6646{"mtvsrwa", X(31,211), XX1RB_MASK, PPCVSX2, 0, {XT6, RA}},
6647{"eratwe", X(31,211), X_MASK, PPCA2, 0, {RS, RA, WS}},
e0d602ec 6648
14b57c7c 6649{"ldawx.", XRC(31,212,1), X_MASK, PPCA2, 0, {RT, RA0, RB}},
e0d602ec 6650
14b57c7c 6651{"stdcx.", XRC(31,214,1), X_MASK, PPC64, 0, {RS, RA0, RB}},
43e65147 6652
14b57c7c 6653{"stbx", X(31,215), X_MASK, COM, 0, {RS, RA0, RB}},
252b5132 6654
14b57c7c
AM
6655{"sllq", XRC(31,216,0), X_MASK, M601, 0, {RA, RS, RB}},
6656{"sllq.", XRC(31,216,1), X_MASK, M601, 0, {RA, RS, RB}},
252b5132 6657
14b57c7c
AM
6658{"sleq", XRC(31,217,0), X_MASK, M601, 0, {RA, RS, RB}},
6659{"sleq.", XRC(31,217,1), X_MASK, M601, 0, {RA, RS, RB}},
252b5132 6660
3ff0a5ba 6661{"brh", X(31,219), XRB_MASK, POWER10, 0, {RA, RS}},
ec40e91c 6662{"cfuged", X(31,220), X_MASK, POWER10, 0, {RA, RS, RB}},
3ff0a5ba 6663
14b57c7c 6664{"stbepx", X(31,223), X_MASK, E500MC|PPCA2, 0, {RS, RA0, RB}},
43e65147 6665
14b57c7c 6666{"cmpeqb", X(31,224), XCMPL_MASK, POWER9, 0, {BF, RA, RB}},
a680de9a 6667
14b57c7c 6668{"icblc", X(31,230), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
7d5b217e 6669
14b57c7c
AM
6670{"stvx", X(31,231), X_MASK, PPCVEC, 0, {VS, RA0, RB}},
6671{"stqfcmx", APU(31,231,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
f509565f 6672
14b57c7c
AM
6673{"subfme", XO(31,232,0,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
6674{"sfme", XO(31,232,0,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
6675{"subfme.", XO(31,232,0,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
6676{"sfme.", XO(31,232,0,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
252b5132 6677
14b57c7c
AM
6678{"mulld", XO(31,233,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
6679{"mulld.", XO(31,233,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
43e65147 6680
14b57c7c
AM
6681{"addme", XO(31,234,0,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
6682{"ame", XO(31,234,0,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
6683{"addme.", XO(31,234,0,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
6684{"ame.", XO(31,234,0,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
252b5132 6685
14b57c7c
AM
6686{"mullw", XO(31,235,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6687{"muls", XO(31,235,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6688{"mullw.", XO(31,235,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6689{"muls.", XO(31,235,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
252b5132 6690
9cc4ce88
AM
6691{"stxvrdx", X(31,237), XX1_MASK, POWER10, 0, {XT6, RA0, RB}},
6692
14b57c7c
AM
6693{"icblce", X(31,238), X_MASK, PPCCHLK, E500MC|PPCA2, {CT, RA, RB}},
6694{"msgclr", XRTRA(31,238,0,0), XRTRA_MASK, E500MC|PPCA2|POWER8, 0, {RB}},
6695{"mtsrin", X(31,242), XRA_MASK, PPC, NON32, {RS, RB}},
bdc70b4a 6696{"mtsri", X(31,242), XRA_MASK, POWER, NON32, {RS, RB}},
418c1742 6697
1ff6a3b8
AM
6698{"mtfprwz", X(31,243), XX1RB_MASK|1, PPCVSX2, EXT, {FRT, RA}},
6699{"mtvrwz", X(31,243)|1, XX1RB_MASK|1, PPCVSX2, EXT, {VD, RA}},
14b57c7c 6700{"mtvsrwz", X(31,243), XX1RB_MASK, PPCVSX2, 0, {XT6, RA}},
c0637f3a 6701
1ff6a3b8
AM
6702{"dcbtstt", XRT(31,246,0x10), XRT_MASK, POWER7, EXT, {RA0, RB}},
6703{"dcbtstct", X(31,246), X_MASK, POWER4, EXT, {RA0, RB, THCT}},
6704{"dcbtstds", X(31,246), X_MASK, POWER4, EXT, {RA0, RB, THDS}},
14b57c7c
AM
6705{"dcbtst", X(31,246), X_MASK, POWER4, DCBT_EO, {RA0, RB, CT}},
6706{"dcbtst", X(31,246), X_MASK, DCBT_EO, 0, {CT, RA0, RB}},
6707{"dcbtst", X(31,246), X_MASK, PPC, POWER4|DCBT_EO, {RA0, RB}},
4fff86c5 6708
14b57c7c 6709{"stbux", X(31,247), X_MASK, COM, 0, {RS, RAS, RB}},
252b5132 6710
14b57c7c
AM
6711{"slliq", XRC(31,248,0), X_MASK, M601, 0, {RA, RS, SH}},
6712{"slliq.", XRC(31,248,1), X_MASK, M601, 0, {RA, RS, SH}},
252b5132 6713
14b57c7c 6714{"bpermd", X(31,252), X_MASK, POWER7|PPCA2, 0, {RA, RS, RB}},
066be9f7 6715
14b57c7c 6716{"dcbtstep", XRT(31,255,0), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
19a6653c 6717
14b57c7c
AM
6718{"mfdcrx", X(31,259), X_MASK, BOOKE|PPCA2|PPC476, TITAN, {RS, RA}},
6719{"mfdcrx.", XRC(31,259,1), X_MASK, PPCA2, 0, {RS, RA}},
252b5132 6720
ac8f0f72 6721{"lvexbx", X(31,261), X_MASK, E6500, 0, {VD, RA0, RB}},
aea77599 6722
14b57c7c 6723{"icbt", X(31,262), XRT_MASK, PPC403, 0, {RA, RB}},
1ed8e1e4 6724
ac8f0f72 6725{"lvepxl", X(31,263), X_MASK, E6500, 0, {VD, RA0, RB}},
14b57c7c 6726{"ldfcmx", APU(31,263,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
1ff6a3b8 6727
14b57c7c
AM
6728{"doz", XO(31,264,0,0), XO_MASK, M601, 0, {RT, RA, RB}},
6729{"doz.", XO(31,264,0,1), XO_MASK, M601, 0, {RT, RA, RB}},
252b5132 6730
14b57c7c 6731{"modud", X(31,265), X_MASK, POWER9, 0, {RT, RA, RB}},
a680de9a 6732
14b57c7c
AM
6733{"add", XO(31,266,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6734{"cax", XO(31,266,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6735{"add.", XO(31,266,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6736{"cax.", XO(31,266,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
418c1742 6737
14b57c7c 6738{"moduw", X(31,267), X_MASK, POWER9, 0, {RT, RA, RB}},
a680de9a 6739
14b57c7c
AM
6740{"lxvx", X(31,268), XX1_MASK|1<<6, PPCVSX3, 0, {XT6, RA0, RB}},
6741{"lxvl", X(31,269), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
a680de9a 6742
14b57c7c 6743{"ehpriv", X(31,270), 0xffffffff, E500MC|PPCA2, 0, {0}},
19a6653c 6744
62adc510 6745{"tlbiel", X(31,274), X_MASK|1<<20,POWER9, 0, {RB, RSO, RIC, PRS, X_R}},
a5721ba2 6746{"tlbiel", X(31,274), XRTLRA_MASK, POWER4, POWER9|PPC476, {RB, LOPT}},
418c1742 6747
14b57c7c 6748{"mfapidi", X(31,275), X_MASK, BOOKE, E500|TITAN, {RT, RA}},
1cb0a767 6749
73f07bff 6750{"lqarx", X(31,276), XEH_MASK|Q_MASK, POWER8, 0, {RTQ, RAX, RBX, EH}},
c0637f3a 6751
14b57c7c
AM
6752{"lscbx", XRC(31,277,0), X_MASK, M601, 0, {RT, RA, RB}},
6753{"lscbx.", XRC(31,277,1), X_MASK, M601, 0, {RT, RA, RB}},
1cb0a767 6754
1ff6a3b8
AM
6755{"dcbtt", XRT(31,278,0x10), XRT_MASK, POWER7, EXT, {RA0, RB}},
6756{"dcbna", XRT(31,278,0x11), XRT_MASK, POWER10, EXT, {RA0, RB}},
6757{"dcbtct", X(31,278), X_MASK, POWER4, EXT, {RA0, RB, THCT}},
6758{"dcbtds", X(31,278), X_MASK, POWER4, EXT, {RA0, RB, THDS}},
14b57c7c
AM
6759{"dcbt", X(31,278), X_MASK, POWER4, DCBT_EO, {RA0, RB, CT}},
6760{"dcbt", X(31,278), X_MASK, DCBT_EO, 0, {CT, RA0, RB}},
6761{"dcbt", X(31,278), X_MASK, PPC, POWER4|DCBT_EO, {RA0, RB}},
4fff86c5 6762
14b57c7c 6763{"lhzx", X(31,279), X_MASK, COM, 0, {RT, RA0, RB}},
1cb0a767 6764
14b57c7c 6765{"cdtbcd", X(31,282), XRB_MASK, POWER6, 0, {RA, RS}},
066be9f7 6766
14b57c7c
AM
6767{"eqv", XRC(31,284,0), X_MASK, COM, 0, {RA, RS, RB}},
6768{"eqv.", XRC(31,284,1), X_MASK, COM, 0, {RA, RS, RB}},
1cb0a767 6769
14b57c7c 6770{"lhepx", X(31,287), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
1cb0a767 6771
62adc510 6772{"mfdcrux", X(31,291), X_MASK, PPC464|PPC476, 0, {RS, RA}},
1cb0a767 6773
ac8f0f72
AM
6774{"lvexhx", X(31,293), X_MASK, E6500, 0, {VD, RA0, RB}},
6775{"lvepx", X(31,295), X_MASK, E6500, 0, {VD, RA0, RB}},
aea77599 6776
14b57c7c 6777{"lxvll", X(31,301), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
a680de9a 6778
14b57c7c 6779{"mfbhrbe", X(31,302), X_MASK, POWER8, 0, {RT, BHRBE}},
c0637f3a 6780
14b57c7c
AM
6781{"tlbie", X(31,306), X_MASK|1<<20,POWER9, TITAN, {RB, RS, RIC, PRS, X_R}},
6782{"tlbie", X(31,306), XRA_MASK, POWER7, POWER9|TITAN, {RB, RS}},
a5721ba2 6783{"tlbie", X(31,306), XRTLRA_MASK, PPC, E500|POWER7|TITAN, {RB, LOPT}},
14b57c7c 6784{"tlbi", X(31,306), XRT_MASK, POWER, 0, {RA0, RB}},
1cb0a767 6785
14b57c7c 6786{"mfvsrld", X(31,307), XX1RB_MASK, PPCVSX3, 0, {RA, XS6}},
a680de9a 6787
14b57c7c 6788{"eciwx", X(31,310), X_MASK, PPC, E500|TITAN, {RT, RA0, RB}},
1cb0a767 6789
14b57c7c 6790{"lhzux", X(31,311), X_MASK, COM, 0, {RT, RAL, RB}},
1cb0a767 6791
14b57c7c 6792{"cbcdtd", X(31,314), XRB_MASK, POWER6, 0, {RA, RS}},
066be9f7 6793
14b57c7c
AM
6794{"xor", XRC(31,316,0), X_MASK, COM, 0, {RA, RS, RB}},
6795{"xor.", XRC(31,316,1), X_MASK, COM, 0, {RA, RS, RB}},
1cb0a767 6796
14b57c7c 6797{"dcbtep", XRT(31,319,0), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
1cb0a767 6798
14b57c7c
AM
6799{"mfexisr", XSPR(31,323, 64), XSPR_MASK, PPC403, 0, {RT}},
6800{"mfexier", XSPR(31,323, 66), XSPR_MASK, PPC403, 0, {RT}},
6801{"mfbr0", XSPR(31,323,128), XSPR_MASK, PPC403, 0, {RT}},
6802{"mfbr1", XSPR(31,323,129), XSPR_MASK, PPC403, 0, {RT}},
6803{"mfbr2", XSPR(31,323,130), XSPR_MASK, PPC403, 0, {RT}},
6804{"mfbr3", XSPR(31,323,131), XSPR_MASK, PPC403, 0, {RT}},
6805{"mfbr4", XSPR(31,323,132), XSPR_MASK, PPC403, 0, {RT}},
6806{"mfbr5", XSPR(31,323,133), XSPR_MASK, PPC403, 0, {RT}},
6807{"mfbr6", XSPR(31,323,134), XSPR_MASK, PPC403, 0, {RT}},
6808{"mfbr7", XSPR(31,323,135), XSPR_MASK, PPC403, 0, {RT}},
6809{"mfbear", XSPR(31,323,144), XSPR_MASK, PPC403, 0, {RT}},
6810{"mfbesr", XSPR(31,323,145), XSPR_MASK, PPC403, 0, {RT}},
6811{"mfiocr", XSPR(31,323,160), XSPR_MASK, PPC403, 0, {RT}},
6812{"mfdmacr0", XSPR(31,323,192), XSPR_MASK, PPC403, 0, {RT}},
6813{"mfdmact0", XSPR(31,323,193), XSPR_MASK, PPC403, 0, {RT}},
6814{"mfdmada0", XSPR(31,323,194), XSPR_MASK, PPC403, 0, {RT}},
6815{"mfdmasa0", XSPR(31,323,195), XSPR_MASK, PPC403, 0, {RT}},
6816{"mfdmacc0", XSPR(31,323,196), XSPR_MASK, PPC403, 0, {RT}},
6817{"mfdmacr1", XSPR(31,323,200), XSPR_MASK, PPC403, 0, {RT}},
6818{"mfdmact1", XSPR(31,323,201), XSPR_MASK, PPC403, 0, {RT}},
6819{"mfdmada1", XSPR(31,323,202), XSPR_MASK, PPC403, 0, {RT}},
6820{"mfdmasa1", XSPR(31,323,203), XSPR_MASK, PPC403, 0, {RT}},
6821{"mfdmacc1", XSPR(31,323,204), XSPR_MASK, PPC403, 0, {RT}},
6822{"mfdmacr2", XSPR(31,323,208), XSPR_MASK, PPC403, 0, {RT}},
6823{"mfdmact2", XSPR(31,323,209), XSPR_MASK, PPC403, 0, {RT}},
6824{"mfdmada2", XSPR(31,323,210), XSPR_MASK, PPC403, 0, {RT}},
6825{"mfdmasa2", XSPR(31,323,211), XSPR_MASK, PPC403, 0, {RT}},
6826{"mfdmacc2", XSPR(31,323,212), XSPR_MASK, PPC403, 0, {RT}},
6827{"mfdmacr3", XSPR(31,323,216), XSPR_MASK, PPC403, 0, {RT}},
6828{"mfdmact3", XSPR(31,323,217), XSPR_MASK, PPC403, 0, {RT}},
6829{"mfdmada3", XSPR(31,323,218), XSPR_MASK, PPC403, 0, {RT}},
6830{"mfdmasa3", XSPR(31,323,219), XSPR_MASK, PPC403, 0, {RT}},
6831{"mfdmacc3", XSPR(31,323,220), XSPR_MASK, PPC403, 0, {RT}},
6832{"mfdmasr", XSPR(31,323,224), XSPR_MASK, PPC403, 0, {RT}},
6833{"mfdcr", X(31,323), X_MASK, PPC403|BOOKE|PPCA2|PPC476, E500|TITAN, {RT, SPR}},
6834{"mfdcr.", XRC(31,323,1), X_MASK, PPCA2, 0, {RT, SPR}},
1cb0a767 6835
ac8f0f72 6836{"lvexwx", X(31,325), X_MASK, E6500, 0, {VD, RA0, RB}},
aea77599 6837
14b57c7c 6838{"dcread", X(31,326), X_MASK, PPC476|TITAN, 0, {RT, RA0, RB}},
9fe54b1c 6839
14b57c7c
AM
6840{"div", XO(31,331,0,0), XO_MASK, M601, 0, {RT, RA, RB}},
6841{"div.", XO(31,331,0,1), XO_MASK, M601, 0, {RT, RA, RB}},
1cb0a767 6842
14b57c7c 6843{"lxvdsx", X(31,332), XX1_MASK, PPCVSX, 0, {XT6, RA0, RB}},
066be9f7 6844
94ba9882
AM
6845{"lxvpx", X(31,333), XX1_MASK, POWER10, 0, {XTP, RA0, RB}},
6846
14b57c7c 6847{"mfpmr", X(31,334), X_MASK, PPCPMR|PPCE300, 0, {RT, PMR}},
c03dc33b 6848{"mftmr", X(31,366), X_MASK, PPCTMR, 0, {RT, TMR}},
1cb0a767 6849
14b57c7c
AM
6850{"slbsync", X(31,338), 0xffffffff, POWER9, 0, {0}},
6851
1ff6a3b8
AM
6852{"mfmq", XSPR(31,339, 0), XSPR_MASK, M601, EXT, {RT}},
6853{"mfxer", XSPR(31,339, 1), XSPR_MASK, COM, EXT, {RT}},
6854{"mfudscr", XSPR(31,339, 3), XSPR_MASK, POWER9, EXT, {RS}},
6855{"mfrtcu", XSPR(31,339, 4), XSPR_MASK, COM, TITAN|EXT, {RT}},
6856{"mfrtcl", XSPR(31,339, 5), XSPR_MASK, COM, TITAN|EXT, {RT}},
6857{"mfdec", XSPR(31,339, 6), XSPR_MASK, MFDEC1, EXT, {RT}},
6858{"mflr", XSPR(31,339, 8), XSPR_MASK, COM, EXT, {RT}},
6859{"mfctr", XSPR(31,339, 9), XSPR_MASK, COM, EXT, {RT}},
6860{"mfuamr", XSPR(31,339, 13), XSPR_MASK, POWER9, EXT, {RS}},
6861{"mfdscr", XSPR(31,339, 17), XSPR_MASK, POWER6, EXT, {RT}},
6862{"mftid", XSPR(31,339, 17), XSPR_MASK, POWER, EXT, {RT}},
6863{"mfdsisr", XSPR(31,339, 18), XSPR_MASK, COM, TITAN|EXT, {RT}},
6864{"mfdar", XSPR(31,339, 19), XSPR_MASK, COM, TITAN|EXT, {RT}},
6865{"mfdec", XSPR(31,339, 22), XSPR_MASK, MFDEC2, MFDEC1|EXT, {RT}},
6866{"mfsdr0", XSPR(31,339, 24), XSPR_MASK, POWER, EXT, {RT}},
6867{"mfsdr1", XSPR(31,339, 25), XSPR_MASK, COM, TITAN|EXT, {RT}},
6868{"mfsrr0", XSPR(31,339, 26), XSPR_MASK, COM, EXT, {RT}},
6869{"mfsrr1", XSPR(31,339, 27), XSPR_MASK, COM, EXT, {RT}},
6870{"mfcfar", XSPR(31,339, 28), XSPR_MASK, POWER6, EXT, {RT}},
6871{"mfamr", XSPR(31,339, 29), XSPR_MASK, POWER7, EXT, {RS}},
6872{"mfpidr", XSPR(31,339, 48), XSPR_MASK, POWER10, EXT, {RS}},
6873{"mfpid", XSPR(31,339, 48), XSPR_MASK, BOOKE, EXT, {RT}},
6874{"mfcsrr0", XSPR(31,339, 58), XSPR_MASK, BOOKE, EXT, {RT}},
6875{"mfcsrr1", XSPR(31,339, 59), XSPR_MASK, BOOKE, EXT, {RT}},
6876{"mfiamr", XSPR(31,339, 61), XSPR_MASK, POWER10, EXT, {RS}},
6877{"mfdear", XSPR(31,339, 61), XSPR_MASK, BOOKE, EXT, {RT}},
6878{"mfesr", XSPR(31,339, 62), XSPR_MASK, BOOKE, EXT, {RT}},
6879{"mfivpr", XSPR(31,339, 63), XSPR_MASK, BOOKE, EXT, {RT}},
6880{"mfctrl", XSPR(31,339,136), XSPR_MASK, POWER4, EXT, {RT}},
6881{"mfcmpa", XSPR(31,339,144), XSPR_MASK, PPC860, EXT, {RT}},
6882{"mfcmpb", XSPR(31,339,145), XSPR_MASK, PPC860, EXT, {RT}},
6883{"mfcmpc", XSPR(31,339,146), XSPR_MASK, PPC860, EXT, {RT}},
6884{"mfcmpd", XSPR(31,339,147), XSPR_MASK, PPC860, EXT, {RT}},
6885{"mficr", XSPR(31,339,148), XSPR_MASK, PPC860, EXT, {RT}},
6886{"mfder", XSPR(31,339,149), XSPR_MASK, PPC860, EXT, {RT}},
6887{"mfcounta", XSPR(31,339,150), XSPR_MASK, PPC860, EXT, {RT}},
6888{"mfcountb", XSPR(31,339,151), XSPR_MASK, PPC860, EXT, {RT}},
6889{"mfcmpe", XSPR(31,339,152), XSPR_MASK, PPC860, EXT, {RT}},
6890{"mffscr", XSPR(31,339,153), XSPR_MASK, POWER10, EXT, {RS}},
6891{"mfcmpf", XSPR(31,339,153), XSPR_MASK, PPC860, EXT, {RT}},
6892{"mfcmpg", XSPR(31,339,154), XSPR_MASK, PPC860, EXT, {RT}},
6893{"mfcmph", XSPR(31,339,155), XSPR_MASK, PPC860, EXT, {RT}},
6894{"mflctrl1", XSPR(31,339,156), XSPR_MASK, PPC860, EXT, {RT}},
6895{"mfuamor", XSPR(31,339,157), XSPR_MASK, POWER7, EXT, {RS}},
6896{"mflctrl2", XSPR(31,339,157), XSPR_MASK, PPC860, EXT, {RT}},
6897{"mfictrl", XSPR(31,339,158), XSPR_MASK, PPC860, EXT, {RT}},
6898{"mfpspb", XSPR(31,339,159), XSPR_MASK, POWER10, EXT, {RS}},
6899{"mfbar", XSPR(31,339,159), XSPR_MASK, PPC860, EXT, {RT}},
6900{"mfdpdes", XSPR(31,339,176), XSPR_MASK, POWER10, EXT, {RS}},
6901{"mfdawr0", XSPR(31,339,180), XSPR_MASK, POWER10, EXT, {RS}},
6902{"mfdawr1", XSPR(31,339,181), XSPR_MASK, POWER10, EXT, {RS}},
6903{"mfrpr", XSPR(31,339,186), XSPR_MASK, POWER10, EXT, {RS}},
6904{"mfciabr", XSPR(31,339,187), XSPR_MASK, POWER10, EXT, {RS}},
6905{"mfdawrx0", XSPR(31,339,188), XSPR_MASK, POWER10, EXT, {RS}},
6906{"mfdawrx1", XSPR(31,339,189), XSPR_MASK, POWER10, EXT, {RS}},
6907{"mfhfscr", XSPR(31,339,190), XSPR_MASK, POWER10, EXT, {RS}},
6908{"mfvrsave", XSPR(31,339,256), XSPR_MASK, PPCVEC, EXT, {RT}},
6909{"mfusprg0", XSPR(31,339,256), XSPR_MASK, BOOKE, EXT, {RT}},
6910{"mfsprg", XSPR(31,339,256), XSPRG_MASK, PPC, EXT, {RT, SPRG}},
6911{"mfusprg3", XSPR(31,339,259), XSPR_MASK, POWER10, EXT, {RT}},
6912{"mfsprg4", XSPR(31,339,260), XSPR_MASK, PPC405|BOOKE, EXT, {RT}},
6913{"mfsprg5", XSPR(31,339,261), XSPR_MASK, PPC405|BOOKE, EXT, {RT}},
6914{"mfsprg6", XSPR(31,339,262), XSPR_MASK, PPC405|BOOKE, EXT, {RT}},
6915{"mfsprg7", XSPR(31,339,263), XSPR_MASK, PPC405|BOOKE, EXT, {RT}},
6916{"mftbu", XSPR(31,339,269), XSPR_MASK, POWER4|BOOKE, EXT, {RT}},
6917{"mftb", X(31,339), X_MASK, POWER4|BOOKE, EXT, {RT, TBR}},
6918{"mftbl", XSPR(31,339,268), XSPR_MASK, POWER4|BOOKE, EXT, {RT}},
6919{"mfsprg0", XSPR(31,339,272), XSPR_MASK, PPC, EXT, {RT}},
6920{"mfsprg1", XSPR(31,339,273), XSPR_MASK, PPC, EXT, {RT}},
6921{"mfsprg2", XSPR(31,339,274), XSPR_MASK, PPC, EXT, {RT}},
6922{"mfsprg3", XSPR(31,339,275), XSPR_MASK, PPC, EXT, {RT}},
6923{"mfasr", XSPR(31,339,280), XSPR_MASK, PPC64, EXT, {RT}},
6924{"mfear", XSPR(31,339,282), XSPR_MASK, PPC, TITAN|EXT, {RT}},
6925{"mfpir", XSPR(31,339,286), XSPR_MASK, BOOKE, EXT, {RT}},
6926{"mfpvr", XSPR(31,339,287), XSPR_MASK, PPC, EXT, {RT}},
6927{"mfhsprg0", XSPR(31,339,304), XSPR_MASK, POWER10, EXT, {RS}},
6928{"mfdbsr", XSPR(31,339,304), XSPR_MASK, BOOKE, EXT, {RT}},
6929{"mfhsprg1", XSPR(31,339,305), XSPR_MASK, POWER10, EXT, {RS}},
6930{"mfhdisr", XSPR(31,339,306), XSPR_MASK, POWER10, EXT, {RS}},
6931{"mfhdar", XSPR(31,339,307), XSPR_MASK, POWER10, EXT, {RS}},
6932{"mfspurr", XSPR(31,339,308), XSPR_MASK, POWER10, EXT, {RS}},
6933{"mfdbcr0", XSPR(31,339,308), XSPR_MASK, BOOKE, EXT, {RT}},
6934{"mfpurr", XSPR(31,339,309), XSPR_MASK, POWER10, EXT, {RS}},
6935{"mfdbcr1", XSPR(31,339,309), XSPR_MASK, BOOKE, EXT, {RT}},
6936{"mfhdec", XSPR(31,339,310), XSPR_MASK, POWER10, EXT, {RS}},
6937{"mfdbcr2", XSPR(31,339,310), XSPR_MASK, BOOKE, EXT, {RT}},
6938{"mfiac1", XSPR(31,339,312), XSPR_MASK, BOOKE, EXT, {RT}},
6939{"mfhrmor", XSPR(31,339,313), XSPR_MASK, POWER10, EXT, {RS}},
6940{"mfiac2", XSPR(31,339,313), XSPR_MASK, BOOKE, EXT, {RT}},
6941{"mfhsrr0", XSPR(31,339,314), XSPR_MASK, POWER10, EXT, {RS}},
6942{"mfiac3", XSPR(31,339,314), XSPR_MASK, BOOKE, EXT, {RT}},
6943{"mfhsrr1", XSPR(31,339,315), XSPR_MASK, POWER10, EXT, {RS}},
6944{"mfiac4", XSPR(31,339,315), XSPR_MASK, BOOKE, EXT, {RT}},
6945{"mfdac1", XSPR(31,339,316), XSPR_MASK, BOOKE, EXT, {RT}},
6946{"mfdac2", XSPR(31,339,317), XSPR_MASK, BOOKE, EXT, {RT}},
6947{"mflpcr", XSPR(31,339,318), XSPR_MASK, POWER10, EXT, {RS}},
6948{"mfdvc1", XSPR(31,339,318), XSPR_MASK, BOOKE, EXT, {RT}},
6949{"mflpidr", XSPR(31,339,319), XSPR_MASK, POWER10, EXT, {RS}},
6950{"mfdvc2", XSPR(31,339,319), XSPR_MASK, BOOKE, EXT, {RT}},
6951{"mfhmer", XSPR(31,339,336), XSPR_MASK, POWER7, EXT, {RS}},
6952{"mftsr", XSPR(31,339,336), XSPR_MASK, BOOKE, EXT, {RT}},
6953{"mfhmeer", XSPR(31,339,337), XSPR_MASK, POWER7, EXT, {RS}},
6954{"mfpcr", XSPR(31,339,338), XSPR_MASK, POWER10, EXT, {RS}},
6955{"mfheir", XSPR(31,339,339), XSPR_MASK, POWER10, EXT, {RS}},
6956{"mftcr", XSPR(31,339,340), XSPR_MASK, BOOKE, EXT, {RT}},
6957{"mfamor", XSPR(31,339,349), XSPR_MASK, POWER7, EXT, {RS}},
6958{"mfivor0", XSPR(31,339,400), XSPR_MASK, BOOKE, EXT, {RT}},
6959{"mfivor1", XSPR(31,339,401), XSPR_MASK, BOOKE, EXT, {RT}},
6960{"mfivor2", XSPR(31,339,402), XSPR_MASK, BOOKE, EXT, {RT}},
6961{"mfivor3", XSPR(31,339,403), XSPR_MASK, BOOKE, EXT, {RT}},
6962{"mfivor4", XSPR(31,339,404), XSPR_MASK, BOOKE, EXT, {RT}},
6963{"mfivor5", XSPR(31,339,405), XSPR_MASK, BOOKE, EXT, {RT}},
6964{"mfivor6", XSPR(31,339,406), XSPR_MASK, BOOKE, EXT, {RT}},
6965{"mfivor7", XSPR(31,339,407), XSPR_MASK, BOOKE, EXT, {RT}},
6966{"mfivor8", XSPR(31,339,408), XSPR_MASK, BOOKE, EXT, {RT}},
6967{"mfivor9", XSPR(31,339,409), XSPR_MASK, BOOKE, EXT, {RT}},
6968{"mfivor10", XSPR(31,339,410), XSPR_MASK, BOOKE, EXT, {RT}},
6969{"mfivor11", XSPR(31,339,411), XSPR_MASK, BOOKE, EXT, {RT}},
6970{"mfivor12", XSPR(31,339,412), XSPR_MASK, BOOKE, EXT, {RT}},
6971{"mfivor13", XSPR(31,339,413), XSPR_MASK, BOOKE, EXT, {RT}},
6972{"mfivor14", XSPR(31,339,414), XSPR_MASK, BOOKE, EXT, {RT}},
6973{"mfivor15", XSPR(31,339,415), XSPR_MASK, BOOKE, EXT, {RT}},
6974{"mftir", XSPR(31,339,446), XSPR_MASK, POWER10, EXT, {RS}},
6975{"mfptcr", XSPR(31,339,464), XSPR_MASK, POWER10, EXT, {RS}},
6976{"mfusprg0", XSPR(31,339,496), XSPR_MASK, POWER10, EXT, {RS}},
6977{"mfusprg1", XSPR(31,339,497), XSPR_MASK, POWER10, EXT, {RS}},
6978{"mfurmor", XSPR(31,339,505), XSPR_MASK, POWER10, EXT, {RS}},
6979{"mfusrr0", XSPR(31,339,506), XSPR_MASK, POWER10, EXT, {RS}},
6980{"mfusrr1", XSPR(31,339,507), XSPR_MASK, POWER10, EXT, {RS}},
6981{"mfsmfctrl", XSPR(31,339,511), XSPR_MASK, POWER10, EXT, {RS}},
6982{"mfspefscr", XSPR(31,339,512), XSPR_MASK, PPCSPE, EXT, {RT}},
6983{"mfbbear", XSPR(31,339,513), XSPR_MASK, PPCBRLK, EXT, {RT}},
6984{"mfbbtar", XSPR(31,339,514), XSPR_MASK, PPCBRLK, EXT, {RT}},
6985{"mfivor32", XSPR(31,339,528), XSPR_MASK, PPCSPE|E6500, EXT, {RT}},
6986{"mfivor33", XSPR(31,339,529), XSPR_MASK, PPCSPE|E6500, EXT, {RT}},
6987{"mfivor34", XSPR(31,339,530), XSPR_MASK, PPCSPE, EXT, {RT}},
6988{"mfivor35", XSPR(31,339,531), XSPR_MASK, PPCPMR, EXT, {RT}},
6989{"mfibatu", XSPR(31,339,528), XSPRBAT_MASK, PPC, TITAN|EXT, {RT, SPRBAT}},
6990{"mfibatl", XSPR(31,339,529), XSPRBAT_MASK, PPC, TITAN|EXT, {RT, SPRBAT}},
6991{"mfdbatu", XSPR(31,339,536), XSPRBAT_MASK, PPC, TITAN|EXT, {RT, SPRBAT}},
6992{"mfdbatl", XSPR(31,339,537), XSPRBAT_MASK, PPC, TITAN|EXT, {RT, SPRBAT}},
6993{"mfic_cst", XSPR(31,339,560), XSPR_MASK, PPC860, EXT, {RT}},
6994{"mfic_adr", XSPR(31,339,561), XSPR_MASK, PPC860, EXT, {RT}},
6995{"mfic_dat", XSPR(31,339,562), XSPR_MASK, PPC860, EXT, {RT}},
6996{"mfdc_cst", XSPR(31,339,568), XSPR_MASK, PPC860, EXT, {RT}},
6997{"mfdc_adr", XSPR(31,339,569), XSPR_MASK, PPC860, EXT, {RT}},
6998{"mfdc_dat", XSPR(31,339,570), XSPR_MASK, PPC860, EXT, {RT}},
6999{"mfmcsrr0", XSPR(31,339,570), XSPR_MASK, PPCRFMCI, EXT, {RT}},
7000{"mfmcsrr1", XSPR(31,339,571), XSPR_MASK, PPCRFMCI, EXT, {RT}},
7001{"mfmcsr", XSPR(31,339,572), XSPR_MASK, PPCRFMCI, EXT, {RT}},
7002{"mfmcar", XSPR(31,339,573), XSPR_MASK, PPCRFMCI, TITAN|EXT, {RT}},
7003{"mfdpdr", XSPR(31,339,630), XSPR_MASK, PPC860, EXT, {RT}},
7004{"mfdpir", XSPR(31,339,631), XSPR_MASK, PPC860, EXT, {RT}},
7005{"mfimmr", XSPR(31,339,638), XSPR_MASK, PPC860, EXT, {RT}},
7006{"mfusier2", XSPR(31,339,736), XSPR_MASK, POWER10, EXT, {RT}},
7007{"mfsier2", XSPR(31,339,736), XSPR_MASK, POWER10, EXT, {RT}},
7008{"mfusier3", XSPR(31,339,737), XSPR_MASK, POWER10, EXT, {RT}},
7009{"mfsier3", XSPR(31,339,737), XSPR_MASK, POWER10, EXT, {RT}},
7010{"mfummcr3", XSPR(31,339,738), XSPR_MASK, POWER10, EXT, {RT}},
7011{"mfmmcr3", XSPR(31,339,738), XSPR_MASK, POWER10, EXT, {RT}},
7012{"mfusier", XSPR(31,339,768), XSPR_MASK, POWER10, EXT, {RT}},
7013{"mfsier", XSPR(31,339,768), XSPR_MASK, POWER10, EXT, {RT}},
7014{"mfummcr2", XSPR(31,339,769), XSPR_MASK, POWER9, EXT, {RT}},
7015{"mfmmcr2", XSPR(31,339,769), XSPR_MASK, POWER9, EXT, {RT}},
7016{"mfummcra", XSPR(31,339,770), XSPR_MASK, POWER9, EXT, {RS}},
7017{"mfmmcra", XSPR(31,339,770), XSPR_MASK, POWER7, EXT, {RS}},
7018{"mfupmc1", XSPR(31,339,771), XSPR_MASK, POWER9, EXT, {RT}},
7019{"mfpmc1", XSPR(31,339,771), XSPR_MASK, POWER7, EXT, {RT}},
7020{"mfupmc2", XSPR(31,339,772), XSPR_MASK, POWER9, EXT, {RT}},
7021{"mfpmc2", XSPR(31,339,772), XSPR_MASK, POWER7, EXT, {RT}},
7022{"mfupmc3", XSPR(31,339,773), XSPR_MASK, POWER9, EXT, {RT}},
7023{"mfpmc3", XSPR(31,339,773), XSPR_MASK, POWER7, EXT, {RT}},
7024{"mfupmc4", XSPR(31,339,774), XSPR_MASK, POWER9, EXT, {RT}},
7025{"mfpmc4", XSPR(31,339,774), XSPR_MASK, POWER7, EXT, {RT}},
7026{"mfupmc5", XSPR(31,339,775), XSPR_MASK, POWER9, EXT, {RT}},
7027{"mfpmc5", XSPR(31,339,775), XSPR_MASK, POWER7, EXT, {RT}},
7028{"mfupmc6", XSPR(31,339,776), XSPR_MASK, POWER9, EXT, {RT}},
7029{"mfpmc6", XSPR(31,339,776), XSPR_MASK, POWER7, EXT, {RT}},
7030{"mfummcr0", XSPR(31,339,779), XSPR_MASK, POWER9, EXT, {RS}},
7031{"mfmmcr0", XSPR(31,339,779), XSPR_MASK, POWER7, EXT, {RS}},
7032{"mfusiar", XSPR(31,339,780), XSPR_MASK, POWER9, EXT, {RS}},
7033{"mfsiar", XSPR(31,339,780), XSPR_MASK, POWER9, EXT, {RS}},
7034{"mfusdar", XSPR(31,339,781), XSPR_MASK, POWER9, EXT, {RS}},
7035{"mfsdar", XSPR(31,339,781), XSPR_MASK, POWER9, EXT, {RS}},
7036{"mfummcr1", XSPR(31,339,782), XSPR_MASK, POWER9, EXT, {RS}},
7037{"mfmmcr1", XSPR(31,339,782), XSPR_MASK, POWER7, EXT, {RS}},
7038{"mfmi_ctr", XSPR(31,339,784), XSPR_MASK, PPC860, EXT, {RT}},
7039{"mfmi_ap", XSPR(31,339,786), XSPR_MASK, PPC860, EXT, {RT}},
7040{"mfmi_epn", XSPR(31,339,787), XSPR_MASK, PPC860, EXT, {RT}},
7041{"mfmi_twc", XSPR(31,339,789), XSPR_MASK, PPC860, EXT, {RT}},
7042{"mfmi_rpn", XSPR(31,339,790), XSPR_MASK, PPC860, EXT, {RT}},
7043{"mfmd_ctr", XSPR(31,339,792), XSPR_MASK, PPC860, EXT, {RT}},
7044{"mfm_casid", XSPR(31,339,793), XSPR_MASK, PPC860, EXT, {RT}},
7045{"mfmd_ap", XSPR(31,339,794), XSPR_MASK, PPC860, EXT, {RT}},
7046{"mfmd_epn", XSPR(31,339,795), XSPR_MASK, PPC860, EXT, {RT}},
7047{"mfmd_twb", XSPR(31,339,796), XSPR_MASK, PPC860, EXT, {RT}},
7048{"mfmd_twc", XSPR(31,339,797), XSPR_MASK, PPC860, EXT, {RT}},
7049{"mfmd_rpn", XSPR(31,339,798), XSPR_MASK, PPC860, EXT, {RT}},
7050{"mfm_tw", XSPR(31,339,799), XSPR_MASK, PPC860, EXT, {RT}},
7051{"mfbescrs", XSPR(31,339,800), XSPR_MASK, POWER9, EXT, {RS}},
7052{"mfbescrsu", XSPR(31,339,801), XSPR_MASK, POWER9, EXT, {RS}},
7053{"mfbescrr", XSPR(31,339,802), XSPR_MASK, POWER9, EXT, {RS}},
7054{"mfbescrru", XSPR(31,339,803), XSPR_MASK, POWER9, EXT, {RS}},
7055{"mfebbhr", XSPR(31,339,804), XSPR_MASK, POWER9, EXT, {RS}},
7056{"mfebbrr", XSPR(31,339,805), XSPR_MASK, POWER9, EXT, {RS}},
7057{"mfbescr", XSPR(31,339,806), XSPR_MASK, POWER9, EXT, {RS}},
7058{"mftar", XSPR(31,339,815), XSPR_MASK, POWER9, EXT, {RS}},
7059{"mfasdr", XSPR(31,339,816), XSPR_MASK, POWER10, EXT, {RS}},
7060{"mfmi_dbcam", XSPR(31,339,816), XSPR_MASK, PPC860, EXT, {RT}},
7061{"mfmi_dbram0", XSPR(31,339,817), XSPR_MASK, PPC860, EXT, {RT}},
7062{"mfmi_dbram1", XSPR(31,339,818), XSPR_MASK, PPC860, EXT, {RT}},
7063{"mfpsscr", XSPR(31,339,823), XSPR_MASK, POWER10, EXT, {RS}},
7064{"mfmd_dbcam", XSPR(31,339,824), XSPR_MASK, PPC860, EXT, {RT}},
7065{"mfmd_dbram0", XSPR(31,339,825), XSPR_MASK, PPC860, EXT, {RT}},
7066{"mfmd_dbram1", XSPR(31,339,826), XSPR_MASK, PPC860, EXT, {RT}},
7067{"mfic", XSPR(31,339,848), XSPR_MASK, POWER8, EXT, {RS}},
7068{"mfvtb", XSPR(31,339,849), XSPR_MASK, POWER8, EXT, {RS}},
7069{"mfhpsscr", XSPR(31,339,855), XSPR_MASK, POWER10, EXT, {RS}},
7070{"mfivndx", XSPR(31,339,880), XSPR_MASK, TITAN, EXT, {RT}},
7071{"mfdvndx", XSPR(31,339,881), XSPR_MASK, TITAN, EXT, {RT}},
7072{"mfivlim", XSPR(31,339,882), XSPR_MASK, TITAN, EXT, {RT}},
7073{"mfdvlim", XSPR(31,339,883), XSPR_MASK, TITAN, EXT, {RT}},
7074{"mfclcsr", XSPR(31,339,884), XSPR_MASK, TITAN, EXT, {RT}},
7075{"mfccr1", XSPR(31,339,888), XSPR_MASK, TITAN, EXT, {RT}},
4d5d5d46
PB
7076{"mfppr", XSPR(31,339,896), XSPR_MASK, POWER5, EXT, {RT}},
7077{"mfppr32", XSPR(31,339,898), XSPR_MASK, POWER5, EXT, {RT}},
1ff6a3b8
AM
7078{"mfgqr", XSPR(31,339,912), XSPRGQR_MASK, PPCPS, EXT, {RT, SPRGQR}},
7079{"mfhid2", XSPR(31,339,920), XSPR_MASK, GEKKO, EXT, {RT}},
7080{"mfwpar", XSPR(31,339,921), XSPR_MASK, GEKKO, EXT, {RT}},
7081{"mfdmau", XSPR(31,339,922), XSPR_MASK, GEKKO, EXT, {RT}},
7082{"mfdmal", XSPR(31,339,923), XSPR_MASK, GEKKO, EXT, {RT}},
7083{"mfrstcfg", XSPR(31,339,923), XSPR_MASK, TITAN, EXT, {RT}},
7084{"mfdcdbtrl", XSPR(31,339,924), XSPR_MASK, TITAN, EXT, {RT}},
7085{"mfdcdbtrh", XSPR(31,339,925), XSPR_MASK, TITAN, EXT, {RT}},
7086{"mficdbtr", XSPR(31,339,927), XSPR_MASK, TITAN, EXT, {RT}},
7087{"mfummcr0", XSPR(31,339,936), XSPR_MASK, PPC750, EXT, {RT}},
7088{"mfupmc1", XSPR(31,339,937), XSPR_MASK, PPC750, EXT, {RT}},
7089{"mfupmc2", XSPR(31,339,938), XSPR_MASK, PPC750, EXT, {RT}},
7090{"mfusia", XSPR(31,339,939), XSPR_MASK, PPC750, EXT, {RT}},
7091{"mfummcr1", XSPR(31,339,940), XSPR_MASK, PPC750, EXT, {RT}},
7092{"mfupmc3", XSPR(31,339,941), XSPR_MASK, PPC750, EXT, {RT}},
7093{"mfupmc4", XSPR(31,339,942), XSPR_MASK, PPC750, EXT, {RT}},
7094{"mfzpr", XSPR(31,339,944), XSPR_MASK, PPC403, EXT, {RT}},
7095{"mfpid", XSPR(31,339,945), XSPR_MASK, PPC403, EXT, {RT}},
7096{"mfmmucr", XSPR(31,339,946), XSPR_MASK, TITAN, EXT, {RT}},
7097{"mfccr0", XSPR(31,339,947), XSPR_MASK, PPC405|TITAN, EXT, {RT}},
7098{"mfiac3", XSPR(31,339,948), XSPR_MASK, PPC405, EXT, {RT}},
7099{"mfiac4", XSPR(31,339,949), XSPR_MASK, PPC405, EXT, {RT}},
7100{"mfdvc1", XSPR(31,339,950), XSPR_MASK, PPC405, EXT, {RT}},
7101{"mfdvc2", XSPR(31,339,951), XSPR_MASK, PPC405, EXT, {RT}},
7102{"mfmmcr0", XSPR(31,339,952), XSPR_MASK, PPC750, EXT, {RT}},
7103{"mfpmc1", XSPR(31,339,953), XSPR_MASK, PPC750, EXT, {RT}},
7104{"mfsgr", XSPR(31,339,953), XSPR_MASK, PPC403, EXT, {RT}},
7105{"mfdcwr", XSPR(31,339,954), XSPR_MASK, PPC403, EXT, {RT}},
7106{"mfpmc2", XSPR(31,339,954), XSPR_MASK, PPC750, EXT, {RT}},
7107{"mfsia", XSPR(31,339,955), XSPR_MASK, PPC750, EXT, {RT}},
7108{"mfsler", XSPR(31,339,955), XSPR_MASK, PPC405, EXT, {RT}},
7109{"mfmmcr1", XSPR(31,339,956), XSPR_MASK, PPC750, EXT, {RT}},
7110{"mfsu0r", XSPR(31,339,956), XSPR_MASK, PPC405, EXT, {RT}},
7111{"mfdbcr1", XSPR(31,339,957), XSPR_MASK, PPC405, EXT, {RT}},
7112{"mfpmc3", XSPR(31,339,957), XSPR_MASK, PPC750, EXT, {RT}},
7113{"mfpmc4", XSPR(31,339,958), XSPR_MASK, PPC750, EXT, {RT}},
7114{"mficdbdr", XSPR(31,339,979), XSPR_MASK, PPC403|TITAN, EXT, {RT}},
7115{"mfesr", XSPR(31,339,980), XSPR_MASK, PPC403, EXT, {RT}},
7116{"mfdear", XSPR(31,339,981), XSPR_MASK, PPC403, EXT, {RT}},
7117{"mfevpr", XSPR(31,339,982), XSPR_MASK, PPC403, EXT, {RT}},
7118{"mfcdbcr", XSPR(31,339,983), XSPR_MASK, PPC403, EXT, {RT}},
7119{"mftsr", XSPR(31,339,984), XSPR_MASK, PPC403, EXT, {RT}},
7120{"mftcr", XSPR(31,339,986), XSPR_MASK, PPC403, EXT, {RT}},
7121{"mfpit", XSPR(31,339,987), XSPR_MASK, PPC403, EXT, {RT}},
7122{"mftbhi", XSPR(31,339,988), XSPR_MASK, PPC403, EXT, {RT}},
7123{"mftblo", XSPR(31,339,989), XSPR_MASK, PPC403, EXT, {RT}},
7124{"mfsrr2", XSPR(31,339,990), XSPR_MASK, PPC403, EXT, {RT}},
7125{"mfsrr3", XSPR(31,339,991), XSPR_MASK, PPC403, EXT, {RT}},
7126{"mfdbsr", XSPR(31,339,1008), XSPR_MASK, PPC403, EXT, {RT}},
7127{"mfhid0", XSPR(31,339,1008), XSPR_MASK, GEKKO, EXT, {RT}},
7128{"mfhid1", XSPR(31,339,1009), XSPR_MASK, GEKKO, EXT, {RT}},
7129{"mfdbcr0", XSPR(31,339,1010), XSPR_MASK, PPC405, EXT, {RT}},
7130{"mfiabr", XSPR(31,339,1010), XSPR_MASK, GEKKO, EXT, {RT}},
7131{"mfhid4", XSPR(31,339,1011), XSPR_MASK, BROADWAY, EXT, {RT}},
7132{"mfdbdr", XSPR(31,339,1011), XSPR_MASK, TITAN, EXT, {RS}},
7133{"mfiac1", XSPR(31,339,1012), XSPR_MASK, PPC403, EXT, {RT}},
7134{"mfiac2", XSPR(31,339,1013), XSPR_MASK, PPC403, EXT, {RT}},
7135{"mfdabr", XSPR(31,339,1013), XSPR_MASK, PPC750, EXT, {RT}},
7136{"mfdac1", XSPR(31,339,1014), XSPR_MASK, PPC403, EXT, {RT}},
7137{"mfdac2", XSPR(31,339,1015), XSPR_MASK, PPC403, EXT, {RT}},
7138{"mfl2cr", XSPR(31,339,1017), XSPR_MASK, PPC750, EXT, {RT}},
7139{"mfdccr", XSPR(31,339,1018), XSPR_MASK, PPC403, EXT, {RT}},
7140{"mficcr", XSPR(31,339,1019), XSPR_MASK, PPC403, EXT, {RT}},
7141{"mfictc", XSPR(31,339,1019), XSPR_MASK, PPC750, EXT, {RT}},
7142{"mfpbl1", XSPR(31,339,1020), XSPR_MASK, PPC403, EXT, {RT}},
7143{"mfthrm1", XSPR(31,339,1020), XSPR_MASK, PPC750, EXT, {RT}},
7144{"mfpbu1", XSPR(31,339,1021), XSPR_MASK, PPC403, EXT, {RT}},
7145{"mfthrm2", XSPR(31,339,1021), XSPR_MASK, PPC750, EXT, {RT}},
7146{"mfpbl2", XSPR(31,339,1022), XSPR_MASK, PPC403, EXT, {RT}},
7147{"mfthrm3", XSPR(31,339,1022), XSPR_MASK, PPC750, EXT, {RT}},
7148{"mfpir", XSPR(31,339,1023), XSPR_MASK, POWER10, EXT, {RT}},
7149{"mfpbu2", XSPR(31,339,1023), XSPR_MASK, PPC403, EXT, {RT}},
14b57c7c
AM
7150{"mfspr", X(31,339), X_MASK, COM, 0, {RT, SPR}},
7151
7152{"lwax", X(31,341), X_MASK, PPC64, 0, {RT, RA0, RB}},
7153
7154{"dst", XDSS(31,342,0), XDSS_MASK, PPCVEC, 0, {RA, RB, STRM}},
1ff6a3b8 7155{"dstt", XDSS(31,342,1), XDSS_MASK, PPCVEC, 0, {RA, RB, STRM}},
14b57c7c
AM
7156
7157{"lhax", X(31,343), X_MASK, COM, 0, {RT, RA0, RB}},
7158
7159{"lvxl", X(31,359), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
7160
7161{"abs", XO(31,360,0,0), XORB_MASK, M601, 0, {RT, RA}},
7162{"abs.", XO(31,360,0,1), XORB_MASK, M601, 0, {RT, RA}},
7163
7164{"divs", XO(31,363,0,0), XO_MASK, M601, 0, {RT, RA, RB}},
7165{"divs.", XO(31,363,0,1), XO_MASK, M601, 0, {RT, RA, RB}},
7166
7167{"lxvwsx", X(31,364), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
7168
7169{"tlbia", X(31,370), 0xffffffff, PPC, E500|TITAN, {0}},
1cb0a767 7170
1ff6a3b8
AM
7171{"mftbu", XSPR(31,371,269), XSPR_MASK, PPC, NO371|POWER4|EXT, {RT}},
7172{"mftb", X(31,371), X_MASK, PPC, NO371|POWER4, {RT, TBR}},
7173{"mftbl", XSPR(31,371,268), XSPR_MASK, PPC, NO371|POWER4|EXT, {RT}},
1cb0a767 7174
14b57c7c 7175{"lwaux", X(31,373), X_MASK, PPC64, 0, {RT, RAL, RB}},
1cb0a767 7176
14b57c7c 7177{"dstst", XDSS(31,374,0), XDSS_MASK, PPCVEC, 0, {RA, RB, STRM}},
1ff6a3b8 7178{"dststt", XDSS(31,374,1), XDSS_MASK, PPCVEC, 0, {RA, RB, STRM}},
1cb0a767 7179
14b57c7c 7180{"lhaux", X(31,375), X_MASK, COM, 0, {RT, RAL, RB}},
1cb0a767 7181
14b57c7c 7182{"popcntw", X(31,378), XRB_MASK, POWER7|PPCA2, 0, {RA, RS}},
066be9f7 7183
4f3e9537
PB
7184{"setbc", X(31,384), XRB_MASK, POWER10, 0, {RT, BI}},
7185
14b57c7c
AM
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}},
1cb0a767 7188
ac8f0f72 7189{"stvexbx", X(31,389), X_MASK, E6500, 0, {VS, RA0, RB}},
aea77599 7190
14b57c7c
AM
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}},
1cb0a767 7193
14b57c7c
AM
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}},
066be9f7 7198
14b57c7c
AM
7199{"stxvx", X(31,396), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
7200{"stxvl", X(31,397), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
a680de9a 7201
14b57c7c 7202{"dcblce", X(31,398), X_MASK, PPCCHLK, E500MC, {CT, RA, RB}},
1cb0a767 7203
14b57c7c 7204{"slbmte", X(31,402), XRA_MASK, PPC64, 0, {RS, RB}},
1cb0a767 7205
14b57c7c 7206{"mtvsrws", X(31,403), XX1RB_MASK, PPCVSX3, 0, {XT6, RA}},
a680de9a 7207
14b57c7c 7208{"pbt.", XRC(31,404,1), X_MASK, POWER8, 0, {RS, RA0, RB}},
c0637f3a 7209
14b57c7c
AM
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}},
e0d602ec 7212
14b57c7c 7213{"sthx", X(31,407), X_MASK, COM, 0, {RS, RA0, RB}},
1cb0a767 7214
14b57c7c
AM
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}},
1cb0a767 7217
14b57c7c 7218{"sthepx", X(31,415), X_MASK, E500MC|PPCA2, 0, {RS, RA0, RB}},
1cb0a767 7219
4f3e9537
PB
7220{"setbcr", X(31,416), XRB_MASK, POWER10, 0, {RT, BI}},
7221
62adc510 7222{"mtdcrux", X(31,419), X_MASK, PPC464|PPC476, 0, {RA, RS}},
1cb0a767 7223
ac8f0f72 7224{"stvexhx", X(31,421), X_MASK, E6500, 0, {VS, RA0, RB}},
aea77599 7225
14b57c7c 7226{"dcblq.", XRC(31,422,1), X_MASK, E6500, 0, {CT, RA0, RB}},
aea77599 7227
14b57c7c
AM
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}},
066be9f7 7232
14b57c7c 7233{"stxvll", X(31,429), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
a680de9a 7234
14b57c7c 7235{"clrbhrb", X(31,430), 0xffffffff, POWER8, 0, {0}},
c0637f3a 7236
14b57c7c 7237{"slbie", X(31,434), XRTRA_MASK, PPC64, 0, {RB}},
1cb0a767 7238
14b57c7c 7239{"mtvsrdd", X(31,435), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
a680de9a 7240
14b57c7c 7241{"ecowx", X(31,438), X_MASK, PPC, E500|TITAN, {RT, RA0, RB}},
1cb0a767 7242
14b57c7c 7243{"sthux", X(31,439), X_MASK, COM, 0, {RS, RAS, RB}},
1cb0a767 7244
08770ec2 7245/* or 1,1,1 */
1ff6a3b8 7246{"cctpl", 0x7c210b78, 0xffffffff, CELL, EXT, {0}},
08770ec2 7247/* or 2,2,2 */
1ff6a3b8 7248{"cctpm", 0x7c421378, 0xffffffff, CELL, EXT, {0}},
08770ec2 7249/* or 3,3,3 */
1ff6a3b8 7250{"cctph", 0x7c631b78, 0xffffffff, CELL, EXT, {0}},
8b2742a1 7251/* or 26,26,26 */
1ff6a3b8 7252{"miso", 0x7f5ad378, 0xffffffff, POWER8|E6500, EXT, {0}},
8b2742a1 7253/* or 27,27,27 */
1ff6a3b8 7254{"yield", 0x7f7bdb78, 0xffffffff, POWER7, EXT, {0}},
8b2742a1 7255/* or 28,28,28 */
1ff6a3b8 7256{"mdors", 0x7f9ce378, 0xffffffff, E500MC, EXT, {0}},
7993124e 7257{"db8cyc", 0x7f9ce378, 0xffffffff, CELL, EXT, {0}},
8b2742a1 7258/* or 29,29,29 */
1ff6a3b8 7259{"mdoio", 0x7fbdeb78, 0xffffffff, POWER7, EXT, {0}},
7993124e 7260{"db10cyc", 0x7fbdeb78, 0xffffffff, CELL, EXT, {0}},
8b2742a1 7261/* or 30,30,30 */
1ff6a3b8 7262{"mdoom", 0x7fdef378, 0xffffffff, POWER7, EXT, {0}},
7993124e
AM
7263{"db12cyc", 0x7fdef378, 0xffffffff, CELL, EXT, {0}},
7264/* or 31,31,31 */
7265{"db16cyc", 0x7ffffb78, 0xffffffff, CELL, EXT, {0}},
08770ec2 7266
1ff6a3b8 7267{"mr", XRC(31,444,0), X_MASK, COM, EXT, {RA, RSB}},
14b57c7c 7268{"or", XRC(31,444,0), X_MASK, COM, 0, {RA, RS, RB}},
1ff6a3b8 7269{"mr.", XRC(31,444,1), X_MASK, COM, EXT, {RA, RSB}},
14b57c7c
AM
7270{"or.", XRC(31,444,1), X_MASK, COM, 0, {RA, RS, RB}},
7271
4f3e9537
PB
7272{"setnbc", X(31,448), XRB_MASK, POWER10, 0, {RT, BI}},
7273
14b57c7c
AM
7274{"mtexisr", XSPR(31,451, 64), XSPR_MASK, PPC403, 0, {RS}},
7275{"mtexier", XSPR(31,451, 66), XSPR_MASK, PPC403, 0, {RS}},
7276{"mtbr0", XSPR(31,451,128), XSPR_MASK, PPC403, 0, {RS}},
7277{"mtbr1", XSPR(31,451,129), XSPR_MASK, PPC403, 0, {RS}},
7278{"mtbr2", XSPR(31,451,130), XSPR_MASK, PPC403, 0, {RS}},
7279{"mtbr3", XSPR(31,451,131), XSPR_MASK, PPC403, 0, {RS}},
7280{"mtbr4", XSPR(31,451,132), XSPR_MASK, PPC403, 0, {RS}},
7281{"mtbr5", XSPR(31,451,133), XSPR_MASK, PPC403, 0, {RS}},
7282{"mtbr6", XSPR(31,451,134), XSPR_MASK, PPC403, 0, {RS}},
7283{"mtbr7", XSPR(31,451,135), XSPR_MASK, PPC403, 0, {RS}},
7284{"mtbear", XSPR(31,451,144), XSPR_MASK, PPC403, 0, {RS}},
7285{"mtbesr", XSPR(31,451,145), XSPR_MASK, PPC403, 0, {RS}},
7286{"mtiocr", XSPR(31,451,160), XSPR_MASK, PPC403, 0, {RS}},
7287{"mtdmacr0", XSPR(31,451,192), XSPR_MASK, PPC403, 0, {RS}},
7288{"mtdmact0", XSPR(31,451,193), XSPR_MASK, PPC403, 0, {RS}},
7289{"mtdmada0", XSPR(31,451,194), XSPR_MASK, PPC403, 0, {RS}},
7290{"mtdmasa0", XSPR(31,451,195), XSPR_MASK, PPC403, 0, {RS}},
7291{"mtdmacc0", XSPR(31,451,196), XSPR_MASK, PPC403, 0, {RS}},
7292{"mtdmacr1", XSPR(31,451,200), XSPR_MASK, PPC403, 0, {RS}},
7293{"mtdmact1", XSPR(31,451,201), XSPR_MASK, PPC403, 0, {RS}},
7294{"mtdmada1", XSPR(31,451,202), XSPR_MASK, PPC403, 0, {RS}},
7295{"mtdmasa1", XSPR(31,451,203), XSPR_MASK, PPC403, 0, {RS}},
7296{"mtdmacc1", XSPR(31,451,204), XSPR_MASK, PPC403, 0, {RS}},
7297{"mtdmacr2", XSPR(31,451,208), XSPR_MASK, PPC403, 0, {RS}},
7298{"mtdmact2", XSPR(31,451,209), XSPR_MASK, PPC403, 0, {RS}},
7299{"mtdmada2", XSPR(31,451,210), XSPR_MASK, PPC403, 0, {RS}},
7300{"mtdmasa2", XSPR(31,451,211), XSPR_MASK, PPC403, 0, {RS}},
7301{"mtdmacc2", XSPR(31,451,212), XSPR_MASK, PPC403, 0, {RS}},
7302{"mtdmacr3", XSPR(31,451,216), XSPR_MASK, PPC403, 0, {RS}},
7303{"mtdmact3", XSPR(31,451,217), XSPR_MASK, PPC403, 0, {RS}},
7304{"mtdmada3", XSPR(31,451,218), XSPR_MASK, PPC403, 0, {RS}},
7305{"mtdmasa3", XSPR(31,451,219), XSPR_MASK, PPC403, 0, {RS}},
7306{"mtdmacc3", XSPR(31,451,220), XSPR_MASK, PPC403, 0, {RS}},
7307{"mtdmasr", XSPR(31,451,224), XSPR_MASK, PPC403, 0, {RS}},
7308{"mtdcr", X(31,451), X_MASK, PPC403|BOOKE|PPCA2|PPC476, E500|TITAN, {SPR, RS}},
7309{"mtdcr.", XRC(31,451,1), X_MASK, PPCA2, 0, {SPR, RS}},
7310
ac8f0f72 7311{"stvexwx", X(31,453), X_MASK, E6500, 0, {VS, RA0, RB}},
14b57c7c 7312
62adc510 7313{"dccci", X(31,454), XRT_MASK, PPC403|PPC440|PPC476|TITAN|PPCA2, 0, {RAOPT, RBOPT}},
14b57c7c
AM
7314{"dci", X(31,454), XRARB_MASK, PPCA2|PPC476, 0, {CT}},
7315
7316{"divdu", XO(31,457,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
7317{"divdu.", XO(31,457,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
7318
7319{"divwu", XO(31,459,0,0), XO_MASK, PPC, 0, {RT, RA, RB}},
7320{"divwu.", XO(31,459,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
7321
94ba9882
AM
7322{"stxvpx", X(31,461), XX1_MASK, POWER10, 0, {XTP, RA0, RB}},
7323
14b57c7c 7324{"mtpmr", X(31,462), X_MASK, PPCPMR|PPCE300, 0, {PMR, RS}},
c03dc33b 7325{"mttmr", X(31,494), X_MASK, PPCTMR, 0, {TMR, RS}},
14b57c7c
AM
7326
7327{"slbieg", X(31,466), XRA_MASK, POWER9, 0, {RS, RB}},
7328
1ff6a3b8
AM
7329{"mtmq", XSPR(31,467, 0), XSPR_MASK, M601, EXT, {RS}},
7330{"mtxer", XSPR(31,467, 1), XSPR_MASK, COM, EXT, {RS}},
7331{"mtudscr", XSPR(31,467, 3), XSPR_MASK, POWER9, EXT, {RS}},
7332{"mtlr", XSPR(31,467, 8), XSPR_MASK, COM, EXT, {RS}},
7333{"mtctr", XSPR(31,467, 9), XSPR_MASK, COM, EXT, {RS}},
7334{"mtuamr", XSPR(31,467, 13), XSPR_MASK, POWER9, EXT, {RS}},
7335{"mtdscr", XSPR(31,467, 17), XSPR_MASK, POWER6, EXT, {RS}},
7336{"mttid", XSPR(31,467, 17), XSPR_MASK, POWER, EXT, {RS}},
7337{"mtdsisr", XSPR(31,467, 18), XSPR_MASK, COM, TITAN|EXT, {RS}},
7338{"mtdar", XSPR(31,467, 19), XSPR_MASK, COM, TITAN|EXT, {RS}},
7339{"mtrtcu", XSPR(31,467, 20), XSPR_MASK, COM, TITAN|EXT, {RS}},
7340{"mtrtcl", XSPR(31,467, 21), XSPR_MASK, COM, TITAN|EXT, {RS}},
7341{"mtdec", XSPR(31,467, 22), XSPR_MASK, COM, EXT, {RS}},
7342{"mtsdr0", XSPR(31,467, 24), XSPR_MASK, POWER, EXT, {RS}},
7343{"mtsdr1", XSPR(31,467, 25), XSPR_MASK, COM, TITAN|EXT, {RS}},
7344{"mtsrr0", XSPR(31,467, 26), XSPR_MASK, COM, EXT, {RS}},
7345{"mtsrr1", XSPR(31,467, 27), XSPR_MASK, COM, EXT, {RS}},
7346{"mtcfar", XSPR(31,467, 28), XSPR_MASK, POWER6, EXT, {RS}},
7347{"mtamr", XSPR(31,467, 29), XSPR_MASK, POWER7, EXT, {RS}},
7348{"mtpidr", XSPR(31,467, 48), XSPR_MASK, POWER10, EXT, {RS}},
7349{"mtpid", XSPR(31,467, 48), XSPR_MASK, BOOKE, EXT, {RS}},
7350{"mtdecar", XSPR(31,467, 54), XSPR_MASK, BOOKE, EXT, {RS}},
7351{"mtcsrr0", XSPR(31,467, 58), XSPR_MASK, BOOKE, EXT, {RS}},
7352{"mtcsrr1", XSPR(31,467, 59), XSPR_MASK, BOOKE, EXT, {RS}},
7353{"mtiamr", XSPR(31,467, 61), XSPR_MASK, POWER10, EXT, {RS}},
7354{"mtdear", XSPR(31,467, 61), XSPR_MASK, BOOKE, EXT, {RS}},
7355{"mtesr", XSPR(31,467, 62), XSPR_MASK, BOOKE, EXT, {RS}},
7356{"mtivpr", XSPR(31,467, 63), XSPR_MASK, BOOKE, EXT, {RS}},
7357{"mttfhar", XSPR(31,467,128), XSPR_MASK, POWER9, EXT, {RS}},
7358{"mttfiar", XSPR(31,467,129), XSPR_MASK, POWER9, EXT, {RS}},
7359{"mttexasr", XSPR(31,467,130), XSPR_MASK, POWER9, EXT, {RS}},
7360{"mttexasru", XSPR(31,467,131), XSPR_MASK, POWER9, EXT, {RS}},
7361{"mtcmpa", XSPR(31,467,144), XSPR_MASK, PPC860, EXT, {RS}},
7362{"mtcmpb", XSPR(31,467,145), XSPR_MASK, PPC860, EXT, {RS}},
7363{"mtcmpc", XSPR(31,467,146), XSPR_MASK, PPC860, EXT, {RS}},
7364{"mtcmpd", XSPR(31,467,147), XSPR_MASK, PPC860, EXT, {RS}},
7365{"mticr", XSPR(31,467,148), XSPR_MASK, PPC860, EXT, {RS}},
7366{"mtder", XSPR(31,467,149), XSPR_MASK, PPC860, EXT, {RS}},
7367{"mtcounta", XSPR(31,467,150), XSPR_MASK, PPC860, EXT, {RS}},
7368{"mtcountb", XSPR(31,467,151), XSPR_MASK, PPC860, EXT, {RS}},
7369{"mtctrl", XSPR(31,467,152), XSPR_MASK, POWER4, EXT, {RS}},
7370{"mtcmpe", XSPR(31,467,152), XSPR_MASK, PPC860, EXT, {RS}},
7371{"mtfscr", XSPR(31,467,153), XSPR_MASK, POWER10, EXT, {RS}},
7372{"mtcmpf", XSPR(31,467,153), XSPR_MASK, PPC860, EXT, {RS}},
7373{"mtcmpg", XSPR(31,467,154), XSPR_MASK, PPC860, EXT, {RS}},
7374{"mtcmph", XSPR(31,467,155), XSPR_MASK, PPC860, EXT, {RS}},
7375{"mtlctrl1", XSPR(31,467,156), XSPR_MASK, PPC860, EXT, {RS}},
7376{"mtuamor", XSPR(31,467,157), XSPR_MASK, POWER7, EXT, {RS}},
7377{"mtlctrl2", XSPR(31,467,157), XSPR_MASK, PPC860, EXT, {RS}},
7378{"mtictrl", XSPR(31,467,158), XSPR_MASK, PPC860, EXT, {RS}},
7379{"mtpspb", XSPR(31,467,159), XSPR_MASK, POWER10, EXT, {RS}},
7380{"mtbar", XSPR(31,467,159), XSPR_MASK, PPC860, EXT, {RS}},
7381{"mtdpdes", XSPR(31,467,176), XSPR_MASK, POWER10, EXT, {RS}},
7382{"mtdawr0", XSPR(31,467,180), XSPR_MASK, POWER10, EXT, {RS}},
7383{"mtdawr1", XSPR(31,467,181), XSPR_MASK, POWER10, EXT, {RS}},
7384{"mtrpr", XSPR(31,467,186), XSPR_MASK, POWER10, EXT, {RS}},
7385{"mtciabr", XSPR(31,467,187), XSPR_MASK, POWER10, EXT, {RS}},
7386{"mtdawrx0", XSPR(31,467,188), XSPR_MASK, POWER10, EXT, {RS}},
7387{"mtdawrx1", XSPR(31,467,189), XSPR_MASK, POWER10, EXT, {RS}},
7388{"mthfscr", XSPR(31,467,190), XSPR_MASK, POWER10, EXT, {RS}},
7389{"mtvrsave", XSPR(31,467,256), XSPR_MASK, PPCVEC, EXT, {RS}},
7390{"mtusprg0", XSPR(31,467,256), XSPR_MASK, BOOKE, EXT, {RS}},
7391{"mtsprg", XSPR(31,467,256), XSPRG_MASK, PPC, EXT, {SPRG, RS}},
7392{"mtsprg0", XSPR(31,467,272), XSPR_MASK, PPC, EXT, {RS}},
7393{"mtsprg1", XSPR(31,467,273), XSPR_MASK, PPC, EXT, {RS}},
7394{"mtsprg2", XSPR(31,467,274), XSPR_MASK, PPC, EXT, {RS}},
7395{"mtsprg3", XSPR(31,467,275), XSPR_MASK, PPC, EXT, {RS}},
7396{"mtsprg4", XSPR(31,467,276), XSPR_MASK, PPC405|BOOKE, EXT, {RS}},
7397{"mtsprg5", XSPR(31,467,277), XSPR_MASK, PPC405|BOOKE, EXT, {RS}},
7398{"mtsprg6", XSPR(31,467,278), XSPR_MASK, PPC405|BOOKE, EXT, {RS}},
7399{"mtsprg7", XSPR(31,467,279), XSPR_MASK, PPC405|BOOKE, EXT, {RS}},
7400{"mtasr", XSPR(31,467,280), XSPR_MASK, PPC64, EXT, {RS}},
7401{"mtear", XSPR(31,467,282), XSPR_MASK, PPC, TITAN|EXT, {RS}},
7402{"mttbl", XSPR(31,467,284), XSPR_MASK, PPC, EXT, {RS}},
7403{"mttbu", XSPR(31,467,285), XSPR_MASK, PPC, EXT, {RS}},
7404{"mttbu40", XSPR(31,467,286), XSPR_MASK, POWER10, EXT, {RS}},
7405{"mthsprg0", XSPR(31,467,304), XSPR_MASK, POWER10, EXT, {RS}},
7406{"mtdbsr", XSPR(31,467,304), XSPR_MASK, BOOKE, EXT, {RS}},
7407{"mthsprg1", XSPR(31,467,305), XSPR_MASK, POWER10, EXT, {RS}},
7408{"mthdisr", XSPR(31,467,306), XSPR_MASK, POWER10, EXT, {RS}},
7409{"mthdar", XSPR(31,467,307), XSPR_MASK, POWER10, EXT, {RS}},
7410{"mtspurr", XSPR(31,467,308), XSPR_MASK, POWER10, EXT, {RS}},
7411{"mtdbcr0", XSPR(31,467,308), XSPR_MASK, BOOKE, EXT, {RS}},
7412{"mtpurr", XSPR(31,467,309), XSPR_MASK, POWER10, EXT, {RS}},
7413{"mtdbcr1", XSPR(31,467,309), XSPR_MASK, BOOKE, EXT, {RS}},
7414{"mthdec", XSPR(31,467,310), XSPR_MASK, POWER10, EXT, {RS}},
7415{"mtdbcr2", XSPR(31,467,310), XSPR_MASK, BOOKE, EXT, {RS}},
7416{"mtiac1", XSPR(31,467,312), XSPR_MASK, BOOKE, EXT, {RS}},
7417{"mthrmor", XSPR(31,467,313), XSPR_MASK, POWER10, EXT, {RS}},
7418{"mtiac2", XSPR(31,467,313), XSPR_MASK, BOOKE, EXT, {RS}},
7419{"mthsrr0", XSPR(31,467,314), XSPR_MASK, POWER10, EXT, {RS}},
7420{"mtiac3", XSPR(31,467,314), XSPR_MASK, BOOKE, EXT, {RS}},
7421{"mthsrr1", XSPR(31,467,315), XSPR_MASK, POWER10, EXT, {RS}},
7422{"mtiac4", XSPR(31,467,315), XSPR_MASK, BOOKE, EXT, {RS}},
7423{"mtdac1", XSPR(31,467,316), XSPR_MASK, BOOKE, EXT, {RS}},
7424{"mtdac2", XSPR(31,467,317), XSPR_MASK, BOOKE, EXT, {RS}},
7425{"mtlpcr", XSPR(31,467,318), XSPR_MASK, POWER10, EXT, {RS}},
7426{"mtdvc1", XSPR(31,467,318), XSPR_MASK, BOOKE, EXT, {RS}},
7427{"mtlpidr", XSPR(31,467,319), XSPR_MASK, POWER10, EXT, {RS}},
7428{"mtdvc2", XSPR(31,467,319), XSPR_MASK, BOOKE, EXT, {RS}},
7429{"mthmer", XSPR(31,467,336), XSPR_MASK, POWER7, EXT, {RS}},
7430{"mttsr", XSPR(31,467,336), XSPR_MASK, BOOKE, EXT, {RS}},
7431{"mthmeer", XSPR(31,467,337), XSPR_MASK, POWER7, EXT, {RS}},
7432{"mtpcr", XSPR(31,467,338), XSPR_MASK, POWER10, EXT, {RS}},
7433{"mtheir", XSPR(31,467,339), XSPR_MASK, POWER10, EXT, {RS}},
7434{"mttcr", XSPR(31,467,340), XSPR_MASK, BOOKE, EXT, {RS}},
7435{"mtamor", XSPR(31,467,349), XSPR_MASK, POWER7, EXT, {RS}},
7436{"mtivor0", XSPR(31,467,400), XSPR_MASK, BOOKE, EXT, {RS}},
7437{"mtivor1", XSPR(31,467,401), XSPR_MASK, BOOKE, EXT, {RS}},
7438{"mtivor2", XSPR(31,467,402), XSPR_MASK, BOOKE, EXT, {RS}},
7439{"mtivor3", XSPR(31,467,403), XSPR_MASK, BOOKE, EXT, {RS}},
7440{"mtivor4", XSPR(31,467,404), XSPR_MASK, BOOKE, EXT, {RS}},
7441{"mtivor5", XSPR(31,467,405), XSPR_MASK, BOOKE, EXT, {RS}},
7442{"mtivor6", XSPR(31,467,406), XSPR_MASK, BOOKE, EXT, {RS}},
7443{"mtivor7", XSPR(31,467,407), XSPR_MASK, BOOKE, EXT, {RS}},
7444{"mtivor8", XSPR(31,467,408), XSPR_MASK, BOOKE, EXT, {RS}},
7445{"mtivor9", XSPR(31,467,409), XSPR_MASK, BOOKE, EXT, {RS}},
7446{"mtivor10", XSPR(31,467,410), XSPR_MASK, BOOKE, EXT, {RS}},
7447{"mtivor11", XSPR(31,467,411), XSPR_MASK, BOOKE, EXT, {RS}},
7448{"mtivor12", XSPR(31,467,412), XSPR_MASK, BOOKE, EXT, {RS}},
7449{"mtivor13", XSPR(31,467,413), XSPR_MASK, BOOKE, EXT, {RS}},
7450{"mtivor14", XSPR(31,467,414), XSPR_MASK, BOOKE, EXT, {RS}},
7451{"mtivor15", XSPR(31,467,415), XSPR_MASK, BOOKE, EXT, {RS}},
7452{"mtptcr", XSPR(31,467,464), XSPR_MASK, POWER10, EXT, {RS}},
7453{"mtusprg0", XSPR(31,467,496), XSPR_MASK, POWER10, EXT, {RS}},
7454{"mtusprg1", XSPR(31,467,497), XSPR_MASK, POWER10, EXT, {RS}},
7455{"mturmor", XSPR(31,467,505), XSPR_MASK, POWER10, EXT, {RS}},
7456{"mtusrr0", XSPR(31,467,506), XSPR_MASK, POWER10, EXT, {RS}},
7457{"mtusrr1", XSPR(31,467,507), XSPR_MASK, POWER10, EXT, {RS}},
7458{"mtsmfctrl", XSPR(31,467,511), XSPR_MASK, POWER10, EXT, {RS}},
7459{"mtspefscr", XSPR(31,467,512), XSPR_MASK, PPCSPE, EXT, {RS}},
7460{"mtbbear", XSPR(31,467,513), XSPR_MASK, PPCBRLK, EXT, {RS}},
7461{"mtbbtar", XSPR(31,467,514), XSPR_MASK, PPCBRLK, EXT, {RS}},
7462{"mtivor32", XSPR(31,467,528), XSPR_MASK, PPCSPE|E6500, EXT, {RS}},
7463{"mtivor33", XSPR(31,467,529), XSPR_MASK, PPCSPE|E6500, EXT, {RS}},
7464{"mtivor34", XSPR(31,467,530), XSPR_MASK, PPCSPE, EXT, {RS}},
7465{"mtivor35", XSPR(31,467,531), XSPR_MASK, PPCPMR, EXT, {RS}},
7466{"mtibatu", XSPR(31,467,528), XSPRBAT_MASK, PPC, TITAN|EXT, {SPRBAT, RS}},
7467{"mtibatl", XSPR(31,467,529), XSPRBAT_MASK, PPC, TITAN|EXT, {SPRBAT, RS}},
7468{"mtdbatu", XSPR(31,467,536), XSPRBAT_MASK, PPC, TITAN|EXT, {SPRBAT, RS}},
7469{"mtdbatl", XSPR(31,467,537), XSPRBAT_MASK, PPC, TITAN|EXT, {SPRBAT, RS}},
7470{"mtmcsrr0", XSPR(31,467,570), XSPR_MASK, PPCRFMCI, EXT, {RS}},
7471{"mtmcsrr1", XSPR(31,467,571), XSPR_MASK, PPCRFMCI, EXT, {RS}},
7472{"mtmcsr", XSPR(31,467,572), XSPR_MASK, PPCRFMCI, EXT, {RS}},
7473{"mtsier2", XSPR(31,467,752), XSPR_MASK, POWER10, EXT, {RS}},
7474{"mtsier3", XSPR(31,467,753), XSPR_MASK, POWER10, EXT, {RS}},
7475{"mtmmcr3", XSPR(31,467,754), XSPR_MASK, POWER10, EXT, {RS}},
7476{"mtummcr2", XSPR(31,467,769), XSPR_MASK, POWER9, EXT, {RS}},
7477{"mtmmcr2", XSPR(31,467,769), XSPR_MASK, POWER9, EXT, {RS}},
7478{"mtummcra", XSPR(31,467,770), XSPR_MASK, POWER9, EXT, {RS}},
7479{"mtupmc1", XSPR(31,467,771), XSPR_MASK, POWER9, EXT, {RS}},
7480{"mtupmc2", XSPR(31,467,772), XSPR_MASK, POWER9, EXT, {RS}},
7481{"mtupmc3", XSPR(31,467,773), XSPR_MASK, POWER9, EXT, {RS}},
7482{"mtupmc4", XSPR(31,467,774), XSPR_MASK, POWER9, EXT, {RS}},
7483{"mtupmc5", XSPR(31,467,775), XSPR_MASK, POWER9, EXT, {RS}},
7484{"mtupmc6", XSPR(31,467,776), XSPR_MASK, POWER9, EXT, {RS}},
7485{"mtummcr0", XSPR(31,467,779), XSPR_MASK, POWER9, EXT, {RS}},
7486{"mtsier", XSPR(31,467,784), XSPR_MASK, POWER10, EXT, {RS}},
7487{"mtmmcra", XSPR(31,467,786), XSPR_MASK, POWER7, EXT, {RS}},
7488{"mtpmc1", XSPR(31,467,787), XSPR_MASK, POWER7, EXT, {RS}},
7489{"mtpmc2", XSPR(31,467,788), XSPR_MASK, POWER7, EXT, {RS}},
7490{"mtpmc3", XSPR(31,467,789), XSPR_MASK, POWER7, EXT, {RS}},
7491{"mtpmc4", XSPR(31,467,790), XSPR_MASK, POWER7, EXT, {RS}},
7492{"mtpmc5", XSPR(31,467,791), XSPR_MASK, POWER7, EXT, {RS}},
7493{"mtpmc6", XSPR(31,467,792), XSPR_MASK, POWER7, EXT, {RS}},
7494{"mtmmcr0", XSPR(31,467,795), XSPR_MASK, POWER7, EXT, {RS}},
7495{"mtsiar", XSPR(31,467,796), XSPR_MASK, POWER10, EXT, {RS}},
7496{"mtsdar", XSPR(31,467,797), XSPR_MASK, POWER10, EXT, {RS}},
7497{"mtmmcr1", XSPR(31,467,798), XSPR_MASK, POWER7, EXT, {RS}},
7498{"mtbescrs", XSPR(31,467,800), XSPR_MASK, POWER9, EXT, {RS}},
7499{"mtbescrsu", XSPR(31,467,801), XSPR_MASK, POWER9, EXT, {RS}},
7500{"mtbescrr", XSPR(31,467,802), XSPR_MASK, POWER9, EXT, {RS}},
7501{"mtbescrru", XSPR(31,467,803), XSPR_MASK, POWER9, EXT, {RS}},
7502{"mtebbhr", XSPR(31,467,804), XSPR_MASK, POWER9, EXT, {RS}},
7503{"mtebbrr", XSPR(31,467,805), XSPR_MASK, POWER9, EXT, {RS}},
7504{"mtbescr", XSPR(31,467,806), XSPR_MASK, POWER9, EXT, {RS}},
7505{"mttar", XSPR(31,467,815), XSPR_MASK, POWER9, EXT, {RS}},
7506{"mtasdr", XSPR(31,467,816), XSPR_MASK, POWER10, EXT, {RS}},
7507{"mtpsscr", XSPR(31,467,823), XSPR_MASK, POWER10, EXT, {RS}},
7508{"mtic", XSPR(31,467,848), XSPR_MASK, POWER8, EXT, {RS}},
7509{"mtvtb", XSPR(31,467,849), XSPR_MASK, POWER8, EXT, {RS}},
7510{"mthpsscr", XSPR(31,467,855), XSPR_MASK, POWER10, EXT, {RS}},
7511{"mtivndx", XSPR(31,467,880), XSPR_MASK, TITAN, EXT, {RS}},
7512{"mtdvndx", XSPR(31,467,881), XSPR_MASK, TITAN, EXT, {RS}},
7513{"mtivlim", XSPR(31,467,882), XSPR_MASK, TITAN, EXT, {RS}},
7514{"mtdvlim", XSPR(31,467,883), XSPR_MASK, TITAN, EXT, {RS}},
7515{"mtclcsr", XSPR(31,467,884), XSPR_MASK, TITAN, EXT, {RS}},
7516{"mtccr1", XSPR(31,467,888), XSPR_MASK, TITAN, EXT, {RS}},
4d5d5d46
PB
7517{"mtppr", XSPR(31,467,896), XSPR_MASK, POWER5, EXT, {RS}},
7518{"mtppr32", XSPR(31,467,898), XSPR_MASK, POWER5, EXT, {RS}},
1ff6a3b8
AM
7519{"mtgqr", XSPR(31,467,912), XSPRGQR_MASK, PPCPS, EXT, {SPRGQR, RS}},
7520{"mthid2", XSPR(31,467,920), XSPR_MASK, GEKKO, EXT, {RS}},
7521{"mtwpar", XSPR(31,467,921), XSPR_MASK, GEKKO, EXT, {RS}},
7522{"mtdmau", XSPR(31,467,922), XSPR_MASK, GEKKO, EXT, {RS}},
7523{"mtdmal", XSPR(31,467,923), XSPR_MASK, GEKKO, EXT, {RS}},
7524{"mtummcr0", XSPR(31,467,936), XSPR_MASK, PPC750, EXT, {RS}},
7525{"mtupmc1", XSPR(31,467,937), XSPR_MASK, PPC750, EXT, {RS}},
7526{"mtupmc2", XSPR(31,467,938), XSPR_MASK, PPC750, EXT, {RS}},
7527{"mtusia", XSPR(31,467,939), XSPR_MASK, PPC750, EXT, {RS}},
7528{"mtummcr1", XSPR(31,467,940), XSPR_MASK, PPC750, EXT, {RS}},
7529{"mtupmc3", XSPR(31,467,941), XSPR_MASK, PPC750, EXT, {RS}},
7530{"mtupmc4", XSPR(31,467,942), XSPR_MASK, PPC750, EXT, {RS}},
7531{"mtzpr", XSPR(31,467,944), XSPR_MASK, PPC403, EXT, {RS}},
7532{"mtpid", XSPR(31,467,945), XSPR_MASK, PPC403, EXT, {RS}},
7533{"mtrmmucr", XSPR(31,467,946), XSPR_MASK, TITAN, EXT, {RS}},
7534{"mtccr0", XSPR(31,467,947), XSPR_MASK, PPC405|TITAN, EXT, {RS}},
7535{"mtiac3", XSPR(31,467,948), XSPR_MASK, PPC405, EXT, {RS}},
7536{"mtiac4", XSPR(31,467,949), XSPR_MASK, PPC405, EXT, {RS}},
7537{"mtdvc1", XSPR(31,467,950), XSPR_MASK, PPC405, EXT, {RS}},
7538{"mtdvc2", XSPR(31,467,951), XSPR_MASK, PPC405, EXT, {RS}},
7539{"mtmmcr0", XSPR(31,467,952), XSPR_MASK, PPC750, EXT, {RS}},
7540{"mtpmc1", XSPR(31,467,953), XSPR_MASK, PPC750, EXT, {RS}},
7541{"mtsgr", XSPR(31,467,953), XSPR_MASK, PPC403, EXT, {RS}},
7542{"mtdcwr", XSPR(31,467,954), XSPR_MASK, PPC403, EXT, {RS}},
7543{"mtpmc2", XSPR(31,467,954), XSPR_MASK, PPC750, EXT, {RS}},
7544{"mtsia", XSPR(31,467,955), XSPR_MASK, PPC750, EXT, {RS}},
7545{"mtsler", XSPR(31,467,955), XSPR_MASK, PPC405, EXT, {RS}},
7546{"mtmmcr1", XSPR(31,467,956), XSPR_MASK, PPC750, EXT, {RS}},
7547{"mtsu0r", XSPR(31,467,956), XSPR_MASK, PPC405, EXT, {RS}},
7548{"mtdbcr1", XSPR(31,467,957), XSPR_MASK, PPC405, EXT, {RS}},
7549{"mtpmc3", XSPR(31,467,957), XSPR_MASK, PPC750, EXT, {RS}},
7550{"mtpmc4", XSPR(31,467,958), XSPR_MASK, PPC750, EXT, {RS}},
7551{"mticdbdr", XSPR(31,467,979), XSPR_MASK, PPC403, EXT, {RS}},
7552{"mtesr", XSPR(31,467,980), XSPR_MASK, PPC403, EXT, {RS}},
7553{"mtdear", XSPR(31,467,981), XSPR_MASK, PPC403, EXT, {RS}},
7554{"mtevpr", XSPR(31,467,982), XSPR_MASK, PPC403, EXT, {RS}},
7555{"mtcdbcr", XSPR(31,467,983), XSPR_MASK, PPC403, EXT, {RS}},
7556{"mttsr", XSPR(31,467,984), XSPR_MASK, PPC403, EXT, {RS}},
7557{"mttcr", XSPR(31,467,986), XSPR_MASK, PPC403, EXT, {RS}},
7558{"mtpit", XSPR(31,467,987), XSPR_MASK, PPC403, EXT, {RS}},
7559{"mttbhi", XSPR(31,467,988), XSPR_MASK, PPC403, EXT, {RS}},
7560{"mttblo", XSPR(31,467,989), XSPR_MASK, PPC403, EXT, {RS}},
7561{"mtsrr2", XSPR(31,467,990), XSPR_MASK, PPC403, EXT, {RS}},
7562{"mtsrr3", XSPR(31,467,991), XSPR_MASK, PPC403, EXT, {RS}},
7563{"mtdbsr", XSPR(31,467,1008), XSPR_MASK, PPC403, EXT, {RS}},
7564{"mthid0", XSPR(31,467,1008), XSPR_MASK, GEKKO, EXT, {RS}},
7565{"mthid1", XSPR(31,467,1009), XSPR_MASK, GEKKO, EXT, {RS}},
7566{"mtdbcr0", XSPR(31,467,1010), XSPR_MASK, PPC405, EXT, {RS}},
7567{"mtiabr", XSPR(31,467,1010), XSPR_MASK, GEKKO, EXT, {RS}},
7568{"mthid4", XSPR(31,467,1011), XSPR_MASK, BROADWAY, EXT, {RS}},
7569{"mtdbdr", XSPR(31,467,1011), XSPR_MASK, TITAN, EXT, {RS}},
7570{"mtiac1", XSPR(31,467,1012), XSPR_MASK, PPC403, EXT, {RS}},
7571{"mtiac2", XSPR(31,467,1013), XSPR_MASK, PPC403, EXT, {RS}},
7572{"mtdabr", XSPR(31,467,1013), XSPR_MASK, PPC750, EXT, {RS}},
7573{"mtdac1", XSPR(31,467,1014), XSPR_MASK, PPC403, EXT, {RS}},
7574{"mtdac2", XSPR(31,467,1015), XSPR_MASK, PPC403, EXT, {RS}},
7575{"mtl2cr", XSPR(31,467,1017), XSPR_MASK, PPC750, EXT, {RS}},
7576{"mtdccr", XSPR(31,467,1018), XSPR_MASK, PPC403, EXT, {RS}},
7577{"mticcr", XSPR(31,467,1019), XSPR_MASK, PPC403, EXT, {RS}},
7578{"mtictc", XSPR(31,467,1019), XSPR_MASK, PPC750, EXT, {RS}},
7579{"mtpbl1", XSPR(31,467,1020), XSPR_MASK, PPC403, EXT, {RS}},
7580{"mtthrm1", XSPR(31,467,1020), XSPR_MASK, PPC750, EXT, {RS}},
7581{"mtpbu1", XSPR(31,467,1021), XSPR_MASK, PPC403, EXT, {RS}},
7582{"mtthrm2", XSPR(31,467,1021), XSPR_MASK, PPC750, EXT, {RS}},
7583{"mtpbl2", XSPR(31,467,1022), XSPR_MASK, PPC403, EXT, {RS}},
7584{"mtthrm3", XSPR(31,467,1022), XSPR_MASK, PPC750, EXT, {RS}},
7585{"mtpbu2", XSPR(31,467,1023), XSPR_MASK, PPC403, EXT, {RS}},
14b57c7c
AM
7586{"mtspr", X(31,467), X_MASK, COM, 0, {SPR, RS}},
7587
7588{"dcbi", X(31,470), XRT_MASK, PPC, 0, {RA0, RB}},
7589
7590{"nand", XRC(31,476,0), X_MASK, COM, 0, {RA, RS, RB}},
7591{"nand.", XRC(31,476,1), X_MASK, COM, 0, {RA, RS, RB}},
7592
4f3e9537
PB
7593{"setnbcr", X(31,480), XRB_MASK, POWER10, 0, {RT, BI}},
7594
14b57c7c
AM
7595{"dsn", X(31,483), XRT_MASK, E500MC, 0, {RA, RB}},
7596
62adc510 7597{"dcread", X(31,486), X_MASK, PPC403|PPC440, PPCA2, {RT, RA0, RB}},
14b57c7c
AM
7598
7599{"icbtls", X(31,486), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
7600
7601{"stvxl", X(31,487), X_MASK, PPCVEC, 0, {VS, RA0, RB}},
7602
7603{"nabs", XO(31,488,0,0), XORB_MASK, M601, 0, {RT, RA}},
7604{"nabs.", XO(31,488,0,1), XORB_MASK, M601, 0, {RT, RA}},
7605
7606{"divd", XO(31,489,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
7607{"divd.", XO(31,489,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
7608
7609{"divw", XO(31,491,0,0), XO_MASK, PPC, 0, {RT, RA, RB}},
7610{"divw.", XO(31,491,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
7611
7612{"icbtlse", X(31,494), X_MASK, PPCCHLK, E500MC, {CT, RA, RB}},
7613
7614{"slbia", X(31,498), 0xff1fffff, POWER6, 0, {IH}},
4bc0608a 7615{"slbia", X(31,498), 0xffffffff, PPC64, POWER6, {0}},
1cb0a767 7616
14b57c7c 7617{"cli", X(31,502), XRB_MASK, POWER, 0, {RT, RA}},
1cb0a767 7618
14b57c7c 7619{"popcntd", X(31,506), XRB_MASK, POWER7|PPCA2, 0, {RA, RS}},
066be9f7 7620
14b57c7c 7621{"cmpb", X(31,508), X_MASK, POWER6|PPCA2|PPC476, 0, {RA, RS, RB}},
1cb0a767 7622
14b57c7c 7623{"mcrxr", X(31,512), XBFRARB_MASK, COM, POWER7, {BF}},
252b5132 7624
dfdaec14 7625{"lbdcbx", X(31,514), X_MASK, E200Z4, 0, {RT, RA, RB}},
a8cc8a54 7626{"lbdx", X(31,515), X_MASK, E500MC|E200Z4, 0, {RT, RA, RB}},
19a6653c 7627
14b57c7c 7628{"bblels", X(31,518), X_MASK, PPCBRLK, 0, {0}},
252b5132 7629
14b57c7c
AM
7630{"lvlx", X(31,519), X_MASK, CELL, 0, {VD, RA0, RB}},
7631{"lbfcmux", APU(31,519,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
252b5132 7632
14b57c7c
AM
7633{"subfco", XO(31,8,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7634{"sfo", XO(31,8,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
1ff6a3b8 7635{"subco", XO(31,8,1,0), XO_MASK, PPCCOM, EXT, {RT, RB, RA}},
14b57c7c
AM
7636{"subfco.", XO(31,8,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7637{"sfo.", XO(31,8,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
1ff6a3b8 7638{"subco.", XO(31,8,1,1), XO_MASK, PPCCOM, EXT, {RT, RB, RA}},
43e65147 7639
14b57c7c
AM
7640{"addco", XO(31,10,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7641{"ao", XO(31,10,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
7642{"addco.", XO(31,10,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7643{"ao.", XO(31,10,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
252b5132 7644
14b57c7c 7645{"lxsspx", X(31,524), XX1_MASK, PPCVSX2, 0, {XT6, RA0, RB}},
c0637f3a 7646
14b57c7c 7647{"clcs", X(31,531), XRB_MASK, M601, 0, {RT, RA}},
418c1742 7648
14b57c7c 7649{"ldbrx", X(31,532), X_MASK, CELL|POWER7|PPCA2, 0, {RT, RA0, RB}},
418c1742 7650
14b57c7c
AM
7651{"lswx", X(31,533), X_MASK, PPCCOM, E500|E500MC, {RT, RAX, RBX}},
7652{"lsx", X(31,533), X_MASK, PWRCOM, 0, {RT, RA, RB}},
252b5132 7653
14b57c7c
AM
7654{"lwbrx", X(31,534), X_MASK, PPCCOM, 0, {RT, RA0, RB}},
7655{"lbrx", X(31,534), X_MASK, PWRCOM, 0, {RT, RA, RB}},
252b5132 7656
14b57c7c 7657{"lfsx", X(31,535), X_MASK, COM, PPCEFS, {FRT, RA0, RB}},
702f0fb4 7658
14b57c7c
AM
7659{"srw", XRC(31,536,0), X_MASK, PPCCOM, 0, {RA, RS, RB}},
7660{"sr", XRC(31,536,0), X_MASK, PWRCOM, 0, {RA, RS, RB}},
7661{"srw.", XRC(31,536,1), X_MASK, PPCCOM, 0, {RA, RS, RB}},
7662{"sr.", XRC(31,536,1), X_MASK, PWRCOM, 0, {RA, RS, RB}},
252b5132 7663
14b57c7c
AM
7664{"rrib", XRC(31,537,0), X_MASK, M601, 0, {RA, RS, RB}},
7665{"rrib.", XRC(31,537,1), X_MASK, M601, 0, {RA, RS, RB}},
23976049 7666
14b57c7c
AM
7667{"cnttzw", XRC(31,538,0), XRB_MASK, POWER9, 0, {RA, RS}},
7668{"cnttzw.", XRC(31,538,1), XRB_MASK, POWER9, 0, {RA, RS}},
a680de9a 7669
14b57c7c
AM
7670{"srd", XRC(31,539,0), X_MASK, PPC64, 0, {RA, RS, RB}},
7671{"srd.", XRC(31,539,1), X_MASK, PPC64, 0, {RA, RS, RB}},
f509565f 7672
14b57c7c
AM
7673{"maskir", XRC(31,541,0), X_MASK, M601, 0, {RA, RS, RB}},
7674{"maskir.", XRC(31,541,1), X_MASK, M601, 0, {RA, RS, RB}},
252b5132 7675
dfdaec14 7676{"lhdcbx", X(31,546), X_MASK, E200Z4, 0, {RT, RA, RB}},
a8cc8a54 7677{"lhdx", X(31,547), X_MASK, E500MC|E200Z4, 0, {RT, RA, RB}},
19a6653c 7678
ac8f0f72 7679{"lvtrx", X(31,549), X_MASK, E6500, 0, {VD, RA0, RB}},
aea77599 7680
14b57c7c 7681{"bbelr", X(31,550), X_MASK, PPCBRLK, 0, {0}},
418c1742 7682
14b57c7c
AM
7683{"lvrx", X(31,551), X_MASK, CELL, 0, {VD, RA0, RB}},
7684{"lhfcmux", APU(31,551,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
252b5132 7685
14b57c7c 7686{"subfo", XO(31,40,1,0), XO_MASK, PPC, 0, {RT, RA, RB}},
1ff6a3b8 7687{"subo", XO(31,40,1,0), XO_MASK, PPC, EXT, {RT, RB, RA}},
14b57c7c 7688{"subfo.", XO(31,40,1,1), XO_MASK, PPC, 0, {RT, RA, RB}},
1ff6a3b8 7689{"subo.", XO(31,40,1,1), XO_MASK, PPC, EXT, {RT, RB, RA}},
252b5132 7690
14b57c7c 7691{"tlbsync", X(31,566), 0xffffffff, PPC, 0, {0}},
252b5132 7692
14b57c7c 7693{"lfsux", X(31,567), X_MASK, COM, PPCEFS, {FRT, RAS, RB}},
252b5132 7694
14b57c7c
AM
7695{"cnttzd", XRC(31,570,0), XRB_MASK, POWER9, 0, {RA, RS}},
7696{"cnttzd.", XRC(31,570,1), XRB_MASK, POWER9, 0, {RA, RS}},
a680de9a 7697
ec40e91c
AM
7698{"cnttzdm", X(31,571), X_MASK, POWER10, 0, {RA, RS, RB}},
7699
14b57c7c 7700{"mcrxrx", X(31,576), XBFRARB_MASK, POWER9, 0, {BF}},
a680de9a 7701
dfdaec14 7702{"lwdcbx", X(31,578), X_MASK, E200Z4, 0, {RT, RA, RB}},
a8cc8a54 7703{"lwdx", X(31,579), X_MASK, E500MC|E200Z4, 0, {RT, RA, RB}},
19a6653c 7704
ac8f0f72 7705{"lvtlx", X(31,581), X_MASK, E6500, 0, {VD, RA0, RB}},
aea77599 7706
14b57c7c 7707{"lwat", X(31,582), X_MASK, POWER9, 0, {RT, RA0, FC}},
a680de9a 7708
14b57c7c 7709{"lwfcmux", APU(31,583,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
081ba1b3 7710
14b57c7c 7711{"lxsdx", X(31,588), XX1_MASK, PPCVSX, 0, {XT6, RA0, RB}},
066be9f7 7712
14b57c7c 7713{"mfsr", X(31,595), XRB_MASK|(1<<20), COM, NON32, {RT, SR}},
252b5132 7714
14b57c7c
AM
7715{"lswi", X(31,597), X_MASK, PPCCOM, E500|E500MC, {RT, RAX, NBI}},
7716{"lsi", X(31,597), X_MASK, PWRCOM, 0, {RT, RA0, NB}},
252b5132 7717
1ff6a3b8
AM
7718{"hwsync", XSYNC(31,598,0), 0xffffffff, POWER4, BOOKE|PPC476|EXT, {0}},
7719{"lwsync", XSYNC(31,598,1), 0xffffffff, PPC, E500|EXT, {0}},
7720{"ptesync", XSYNC(31,598,2), 0xffffffff, PPC64, EXT, {0}},
7721{"phwsync", XSYNCLS(31,598,4,0), 0xffffffff, POWER10, EXT, {0}},
7722{"plwsync", XSYNCLS(31,598,5,0), 0xffffffff, POWER10, EXT, {0}},
7723{"stncisync", XSYNCLS(31,598,1,1), 0xffffffff, POWER10, EXT, {0}},
7724{"stcisync", XSYNCLS(31,598,0,2), 0xffffffff, POWER10, EXT, {0}},
7725{"stsync", XSYNCLS(31,598,0,3), 0xffffffff, POWER10, EXT, {0}},
7726{"sync", X(31,598), XSYNCLS_MASK, POWER10, BOOKE|PPC476, {LS3, SC2}},
7727{"sync", X(31,598), XSYNCLE_MASK, E6500, 0, {LS, ESYNC}},
7728{"sync", X(31,598), XSYNC_MASK, PPCCOM, POWER10|BOOKE|PPC476, {LS}},
7729{"msync", X(31,598), 0xffffffff, BOOKE|PPCA2|PPC476, 0, {0}},
7730{"sync", X(31,598), 0xffffffff, BOOKE|PPC476, E6500, {0}},
7731{"lwsync", X(31,598), 0xffffffff, E500, 0, {0}},
7732{"dcs", X(31,598), 0xffffffff, PWRCOM, 0, {0}},
418c1742 7733
14b57c7c 7734{"lfdx", X(31,599), X_MASK, COM, PPCEFS, {FRT, RA0, RB}},
23976049 7735
066be9f7 7736{"mffgpr", XRC(31,607,0), XRA_MASK, POWER6, POWER7, {FRT, RB}},
14b57c7c 7737{"lfdepx", X(31,607), X_MASK, E500MC|PPCA2, 0, {FRT, RA0, RB}},
252b5132 7738
14b57c7c 7739{"lddx", X(31,611), X_MASK, E500MC, 0, {RT, RA, RB}},
19a6653c 7740
ac8f0f72 7741{"lvswx", X(31,613), X_MASK, E6500, 0, {VD, RA0, RB}},
aea77599 7742
14b57c7c 7743{"ldat", X(31,614), X_MASK, POWER9, 0, {RT, RA0, FC}},
a680de9a 7744
14b57c7c 7745{"lqfcmux", APU(31,615,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
081ba1b3 7746
14b57c7c
AM
7747{"nego", XO(31,104,1,0), XORB_MASK, COM, 0, {RT, RA}},
7748{"nego.", XO(31,104,1,1), XORB_MASK, COM, 0, {RT, RA}},
252b5132 7749
14b57c7c
AM
7750{"mulo", XO(31,107,1,0), XO_MASK, M601, 0, {RT, RA, RB}},
7751{"mulo.", XO(31,107,1,1), XO_MASK, M601, 0, {RT, RA, RB}},
252b5132 7752
14b57c7c 7753{"mfsri", X(31,627), X_MASK, M601, 0, {RT, RA, RB}},
252b5132 7754
14b57c7c 7755{"dclst", X(31,630), XRB_MASK, M601, 0, {RS, RA}},
252b5132 7756
14b57c7c 7757{"lfdux", X(31,631), X_MASK, COM, PPCEFS, {FRT, RAS, RB}},
252b5132 7758
dfdaec14 7759{"stbdcbx", X(31,642), X_MASK, E200Z4, 0, {RS, RA, RB}},
a8cc8a54 7760{"stbdx", X(31,643), X_MASK, E500MC|E200Z4, 0, {RS, RA, RB}},
19a6653c 7761
14b57c7c
AM
7762{"stvlx", X(31,647), X_MASK, CELL, 0, {VS, RA0, RB}},
7763{"stbfcmux", APU(31,647,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
23976049 7764
14b57c7c 7765{"stxsspx", X(31,652), XX1_MASK, PPCVSX2, 0, {XS6, RA0, RB}},
c0637f3a 7766
14b57c7c 7767{"tbegin.", XRC(31,654,1), XRTLRARB_MASK, PPCHTM, 0, {HTM_R}},
5817ffd1 7768
14b57c7c
AM
7769{"subfeo", XO(31,136,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7770{"sfeo", XO(31,136,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
7771{"subfeo.", XO(31,136,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7772{"sfeo.", XO(31,136,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
252b5132 7773
14b57c7c
AM
7774{"addeo", XO(31,138,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7775{"aeo", XO(31,138,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
7776{"addeo.", XO(31,138,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7777{"aeo.", XO(31,138,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
252b5132 7778
aae7fcb8
PB
7779{"hashstp", X(31,658), XRC_MASK, POWER8, 0, {RB, DW, RA0}},
7780
14b57c7c 7781{"mfsrin", X(31,659), XRA_MASK, PPC, NON32, {RT, RB}},
418c1742 7782
14b57c7c 7783{"stdbrx", X(31,660), X_MASK, CELL|POWER7|PPCA2, 0, {RS, RA0, RB}},
252b5132 7784
14b57c7c
AM
7785{"stswx", X(31,661), X_MASK, PPCCOM, E500|E500MC, {RS, RA0, RB}},
7786{"stsx", X(31,661), X_MASK, PWRCOM, 0, {RS, RA0, RB}},
418c1742 7787
14b57c7c
AM
7788{"stwbrx", X(31,662), X_MASK, PPCCOM, 0, {RS, RA0, RB}},
7789{"stbrx", X(31,662), X_MASK, PWRCOM, 0, {RS, RA0, RB}},
252b5132 7790
14b57c7c 7791{"stfsx", X(31,663), X_MASK, COM, PPCEFS, {FRS, RA0, RB}},
ede602d7 7792
14b57c7c
AM
7793{"srq", XRC(31,664,0), X_MASK, M601, 0, {RA, RS, RB}},
7794{"srq.", XRC(31,664,1), X_MASK, M601, 0, {RA, RS, RB}},
252b5132 7795
14b57c7c
AM
7796{"sre", XRC(31,665,0), X_MASK, M601, 0, {RA, RS, RB}},
7797{"sre.", XRC(31,665,1), X_MASK, M601, 0, {RA, RS, RB}},
252b5132 7798
dfdaec14 7799{"sthdcbx", X(31,674), X_MASK, E200Z4, 0, {RS, RA, RB}},
a8cc8a54 7800{"sthdx", X(31,675), X_MASK, E500MC|E200Z4, 0, {RS, RA, RB}},
19a6653c 7801
ac8f0f72 7802{"stvfrx", X(31,677), X_MASK, E6500, 0, {VS, RA0, RB}},
aea77599 7803
14b57c7c
AM
7804{"stvrx", X(31,679), X_MASK, CELL, 0, {VS, RA0, RB}},
7805{"sthfcmux", APU(31,679,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
252b5132 7806
14b57c7c
AM
7807{"tendall.", XRC(31,686,1)|(1<<25), XRTRARB_MASK, PPCHTM, 0, {0}},
7808{"tend.", XRC(31,686,1), XRTARARB_MASK, PPCHTM, 0, {HTM_A}},
5817ffd1 7809
aae7fcb8
PB
7810{"hashchkp", X(31,690), XRC_MASK, POWER8, 0, {RB, DW, RA0}},
7811
14b57c7c 7812{"stbcx.", XRC(31,694,1), X_MASK, POWER8|E6500, 0, {RS, RA0, RB}},
066be9f7 7813
14b57c7c 7814{"stfsux", X(31,695), X_MASK, COM, PPCEFS, {FRS, RAS, RB}},
252b5132 7815
14b57c7c
AM
7816{"sriq", XRC(31,696,0), X_MASK, M601, 0, {RA, RS, SH}},
7817{"sriq.", XRC(31,696,1), X_MASK, M601, 0, {RA, RS, SH}},
252b5132 7818
dfdaec14 7819{"stwdcbx", X(31,706), X_MASK, E200Z4, 0, {RS, RA, RB}},
a8cc8a54 7820{"stwdx", X(31,707), X_MASK, E500MC|E200Z4, 0, {RS, RA, RB}},
19a6653c 7821
ac8f0f72 7822{"stvflx", X(31,709), X_MASK, E6500, 0, {VS, RA0, RB}},
aea77599 7823
14b57c7c 7824{"stwat", X(31,710), X_MASK, POWER9, 0, {RS, RA0, FC}},
a680de9a 7825
14b57c7c 7826{"stwfcmux", APU(31,711,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
081ba1b3 7827
14b57c7c 7828{"stxsdx", X(31,716), XX1_MASK, PPCVSX, 0, {XS6, RA0, RB}},
066be9f7 7829
14b57c7c 7830{"tcheck", X(31,718), XRTBFRARB_MASK, PPCHTM, 0, {BF}},
5817ffd1 7831
14b57c7c
AM
7832{"subfzeo", XO(31,200,1,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
7833{"sfzeo", XO(31,200,1,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
7834{"subfzeo.", XO(31,200,1,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
7835{"sfzeo.", XO(31,200,1,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
418c1742 7836
14b57c7c
AM
7837{"addzeo", XO(31,202,1,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
7838{"azeo", XO(31,202,1,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
7839{"addzeo.", XO(31,202,1,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
7840{"azeo.", XO(31,202,1,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
fdd12ef3 7841
aae7fcb8
PB
7842{"hashst", X(31,722), XRC_MASK, POWER8, 0, {RB, DW, RA0}},
7843
14b57c7c
AM
7844{"stswi", X(31,725), X_MASK, PPCCOM, E500|E500MC, {RS, RA0, NB}},
7845{"stsi", X(31,725), X_MASK, PWRCOM, 0, {RS, RA0, NB}},
252b5132 7846
14b57c7c 7847{"sthcx.", XRC(31,726,1), X_MASK, POWER8|E6500, 0, {RS, RA0, RB}},
066be9f7 7848
14b57c7c 7849{"stfdx", X(31,727), X_MASK, COM, PPCEFS, {FRS, RA0, RB}},
252b5132 7850
14b57c7c
AM
7851{"srlq", XRC(31,728,0), X_MASK, M601, 0, {RA, RS, RB}},
7852{"srlq.", XRC(31,728,1), X_MASK, M601, 0, {RA, RS, RB}},
418c1742 7853
14b57c7c
AM
7854{"sreq", XRC(31,729,0), X_MASK, M601, 0, {RA, RS, RB}},
7855{"sreq.", XRC(31,729,1), X_MASK, M601, 0, {RA, RS, RB}},
252b5132 7856
066be9f7 7857{"mftgpr", XRC(31,735,0), XRA_MASK, POWER6, POWER7, {RT, FRB}},
14b57c7c 7858{"stfdepx", X(31,735), X_MASK, E500MC|PPCA2, 0, {FRS, RA0, RB}},
252b5132 7859
14b57c7c 7860{"stddx", X(31,739), X_MASK, E500MC, 0, {RS, RA, RB}},
19a6653c 7861
ac8f0f72 7862{"stvswx", X(31,741), X_MASK, E6500, 0, {VS, RA0, RB}},
aea77599 7863
14b57c7c 7864{"stdat", X(31,742), X_MASK, POWER9, 0, {RS, RA0, FC}},
a680de9a 7865
14b57c7c 7866{"stqfcmux", APU(31,743,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
081ba1b3 7867
14b57c7c
AM
7868{"subfmeo", XO(31,232,1,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
7869{"sfmeo", XO(31,232,1,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
7870{"subfmeo.", XO(31,232,1,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
7871{"sfmeo.", XO(31,232,1,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
252b5132 7872
14b57c7c
AM
7873{"mulldo", XO(31,233,1,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
7874{"mulldo.", XO(31,233,1,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
252b5132 7875
14b57c7c
AM
7876{"addmeo", XO(31,234,1,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
7877{"ameo", XO(31,234,1,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
7878{"addmeo.", XO(31,234,1,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
7879{"ameo.", XO(31,234,1,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
418c1742 7880
14b57c7c
AM
7881{"mullwo", XO(31,235,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7882{"mulso", XO(31,235,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
7883{"mullwo.", XO(31,235,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7884{"mulso.", XO(31,235,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
702f0fb4 7885
1ff6a3b8
AM
7886{"tsuspend.", XRCL(31,750,0,1), XRTRARB_MASK,PPCHTM, EXT, {0}},
7887{"tresume.", XRCL(31,750,1,1), XRTRARB_MASK,PPCHTM, EXT, {0}},
14b57c7c 7888{"tsr.", XRC(31,750,1), XRTLRARB_MASK,PPCHTM, 0, {L}},
5817ffd1 7889
aae7fcb8
PB
7890{"hashchk", X(31,754), XRC_MASK, POWER8, 0, {RB, DW, RA0}},
7891
14b57c7c 7892{"darn", X(31,755), XLRAND_MASK, POWER9, 0, {RT, LRAND}},
a680de9a 7893
14b57c7c
AM
7894{"dcba", X(31,758), XRT_MASK, PPC405|PPC7450|BOOKE|PPCA2|PPC476, 0, {RA0, RB}},
7895{"dcbal", XOPL(31,758,1), XRT_MASK, E500MC, 0, {RA0, RB}},
252b5132 7896
14b57c7c 7897{"stfdux", X(31,759), X_MASK, COM, PPCEFS, {FRS, RAS, RB}},
252b5132 7898
14b57c7c
AM
7899{"srliq", XRC(31,760,0), X_MASK, M601, 0, {RA, RS, SH}},
7900{"srliq.", XRC(31,760,1), X_MASK, M601, 0, {RA, RS, SH}},
252b5132 7901
ac8f0f72 7902{"lvsm", X(31,773), X_MASK, E6500, 0, {VD, RA0, RB}},
a680de9a 7903
fd486b63 7904{"copy", XOPL(31,774,1), XRT_MASK, POWER9, 0, {RA0, RB}},
a680de9a 7905
ac8f0f72 7906{"stvepxl", X(31,775), X_MASK, E6500, 0, {VS, RA0, RB}},
14b57c7c
AM
7907{"lvlxl", X(31,775), X_MASK, CELL, 0, {VD, RA0, RB}},
7908{"ldfcmux", APU(31,775,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
ede602d7 7909
14b57c7c
AM
7910{"dozo", XO(31,264,1,0), XO_MASK, M601, 0, {RT, RA, RB}},
7911{"dozo.", XO(31,264,1,1), XO_MASK, M601, 0, {RT, RA, RB}},
252b5132 7912
14b57c7c
AM
7913{"addo", XO(31,266,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7914{"caxo", XO(31,266,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
7915{"addo.", XO(31,266,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7916{"caxo.", XO(31,266,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
252b5132 7917
14b57c7c
AM
7918{"modsd", X(31,777), X_MASK, POWER9, 0, {RT, RA, RB}},
7919{"modsw", X(31,779), X_MASK, POWER9, 0, {RT, RA, RB}},
a680de9a 7920
14b57c7c
AM
7921{"lxvw4x", X(31,780), XX1_MASK, PPCVSX, 0, {XT6, RA0, RB}},
7922{"lxsibzx", X(31,781), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
066be9f7 7923
14b57c7c 7924{"tabortwc.", XRC(31,782,1), X_MASK, PPCHTM, 0, {TO, RA, RB}},
5817ffd1 7925
14b57c7c 7926{"tlbivax", X(31,786), XRT_MASK, BOOKE|PPCA2|PPC476, 0, {RA0, RB}},
252b5132 7927
14b57c7c 7928{"lwzcix", X(31,789), X_MASK, POWER6, 0, {RT, RA0, RB}},
252b5132 7929
14b57c7c 7930{"lhbrx", X(31,790), X_MASK, COM, 0, {RT, RA0, RB}},
252b5132 7931
73f07bff 7932{"lfdpx", X(31,791), X_MASK|Q_MASK, POWER6, POWER7, {FRTp, RA0, RB}},
14b57c7c 7933{"lfqx", X(31,791), X_MASK, POWER2, 0, {FRT, RA, RB}},
418c1742 7934
14b57c7c
AM
7935{"sraw", XRC(31,792,0), X_MASK, PPCCOM, 0, {RA, RS, RB}},
7936{"sra", XRC(31,792,0), X_MASK, PWRCOM, 0, {RA, RS, RB}},
7937{"sraw.", XRC(31,792,1), X_MASK, PPCCOM, 0, {RA, RS, RB}},
7938{"sra.", XRC(31,792,1), X_MASK, PWRCOM, 0, {RA, RS, RB}},
fdd12ef3 7939
14b57c7c
AM
7940{"srad", XRC(31,794,0), X_MASK, PPC64, 0, {RA, RS, RB}},
7941{"srad.", XRC(31,794,1), X_MASK, PPC64, 0, {RA, RS, RB}},
252b5132 7942
74081948 7943{"evlddepx", VX (31, 1598), VX_MASK, PPCSPE, 0, {RT, RA, RB}},
14b57c7c 7944{"lfddx", X(31,803), X_MASK, E500MC, 0, {FRT, RA, RB}},
19a6653c 7945
ac8f0f72
AM
7946{"lvtrxl", X(31,805), X_MASK, E6500, 0, {VD, RA0, RB}},
7947{"stvepx", X(31,807), X_MASK, E6500, 0, {VS, RA0, RB}},
14b57c7c 7948{"lvrxl", X(31,807), X_MASK, CELL, 0, {VD, RA0, RB}},
252b5132 7949
14b57c7c
AM
7950{"lxvh8x", X(31,812), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
7951{"lxsihzx", X(31,813), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
a680de9a 7952
14b57c7c 7953{"tabortdc.", XRC(31,814,1), X_MASK, PPCHTM, 0, {TO, RA, RB}},
5817ffd1 7954
14b57c7c 7955{"rac", X(31,818), X_MASK, M601, 0, {RT, RA, RB}},
252b5132 7956
14b57c7c 7957{"erativax", X(31,819), X_MASK, PPCA2, 0, {RS, RA0, RB}},
e0d602ec 7958
14b57c7c 7959{"lhzcix", X(31,821), X_MASK, POWER6, 0, {RT, RA0, RB}},
252b5132 7960
14b57c7c 7961{"dss", XDSS(31,822,0), XDSS_MASK, PPCVEC, 0, {STRM}},
1ff6a3b8 7962{"dssall", XDSS(31,822,1), XDSS_MASK, PPCVEC, 0, {0}},
252b5132 7963
14b57c7c 7964{"lfqux", X(31,823), X_MASK, POWER2, 0, {FRT, RA, RB}},
fdd12ef3 7965
14b57c7c
AM
7966{"srawi", XRC(31,824,0), X_MASK, PPCCOM, 0, {RA, RS, SH}},
7967{"srai", XRC(31,824,0), X_MASK, PWRCOM, 0, {RA, RS, SH}},
7968{"srawi.", XRC(31,824,1), X_MASK, PPCCOM, 0, {RA, RS, SH}},
7969{"srai.", XRC(31,824,1), X_MASK, PWRCOM, 0, {RA, RS, SH}},
702f0fb4 7970
14b57c7c
AM
7971{"sradi", XS(31,413,0), XS_MASK, PPC64, 0, {RA, RS, SH6}},
7972{"sradi.", XS(31,413,1), XS_MASK, PPC64, 0, {RA, RS, SH6}},
e0c21649 7973
ac8f0f72 7974{"lvtlxl", X(31,837), X_MASK, E6500, 0, {VD, RA0, RB}},
aea77599 7975
fd486b63 7976{"cpabort", X(31,838), XRTRARB_MASK,POWER9, 0, {0}},
a680de9a 7977
14b57c7c
AM
7978{"divo", XO(31,331,1,0), XO_MASK, M601, 0, {RT, RA, RB}},
7979{"divo.", XO(31,331,1,1), XO_MASK, M601, 0, {RT, RA, RB}},
252b5132 7980
14b57c7c 7981{"lxvd2x", X(31,844), XX1_MASK, PPCVSX, 0, {XT6, RA0, RB}},
a680de9a 7982{"lxvx", X(31,844), XX1_MASK, POWER8, POWER9|PPCVSX3, {XT6, RA0, RB}},
9b4e5766 7983
14b57c7c 7984{"tabortwci.", XRC(31,846,1), X_MASK, PPCHTM, 0, {TO, RA, HTM_SI}},
5817ffd1 7985
14b57c7c 7986{"tlbsrx.", XRC(31,850,1), XRT_MASK, PPCA2, 0, {RA0, RB}},
e0d602ec 7987
1224c05d
PB
7988{"slbiag", X(31,850), XRLARB_MASK, POWER10, 0, {RS, A_L}},
7989{"slbiag", X(31,850), XRARB_MASK, POWER9, POWER10, {RS}},
7990
14b57c7c 7991{"slbmfev", X(31,851), XRLA_MASK, POWER9, 0, {RT, RB, A_L}},
a680de9a 7992{"slbmfev", X(31,851), XRA_MASK, PPC64, POWER9, {RT, RB}},
252b5132 7993
14b57c7c 7994{"lbzcix", X(31,853), X_MASK, POWER6, 0, {RT, RA0, RB}},
418c1742 7995
9fe54b1c 7996{"eieio", X(31,854), 0xffffffff, PPC, BOOKE|PPCA2|PPC476, {0}},
14b57c7c
AM
7997{"mbar", X(31,854), X_MASK, BOOKE|PPCA2|PPC476, 0, {MO}},
7998{"eieio", XMBAR(31,854,1),0xffffffff, E500, 0, {0}},
7999{"eieio", X(31,854), 0xffffffff, PPCA2|PPC476, 0, {0}},
418c1742 8000
14b57c7c 8001{"lfiwax", X(31,855), X_MASK, POWER6|PPCA2|PPC476, 0, {FRT, RA0, RB}},
418c1742 8002
ac8f0f72 8003{"lvswxl", X(31,869), X_MASK, E6500, 0, {VD, RA0, RB}},
aea77599 8004
14b57c7c
AM
8005{"abso", XO(31,360,1,0), XORB_MASK, M601, 0, {RT, RA}},
8006{"abso.", XO(31,360,1,1), XORB_MASK, M601, 0, {RT, RA}},
702f0fb4 8007
14b57c7c
AM
8008{"divso", XO(31,363,1,0), XO_MASK, M601, 0, {RT, RA, RB}},
8009{"divso.", XO(31,363,1,1), XO_MASK, M601, 0, {RT, RA, RB}},
252b5132 8010
14b57c7c 8011{"lxvb16x", X(31,876), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
a680de9a 8012
14b57c7c 8013{"tabortdci.", XRC(31,878,1), X_MASK, PPCHTM, 0, {TO, RA, HTM_SI}},
5817ffd1 8014
14b57c7c 8015{"rmieg", X(31,882), XRTRA_MASK, POWER9, 0, {RB}},
a680de9a 8016
14b57c7c 8017{"ldcix", X(31,885), X_MASK, POWER6, 0, {RT, RA0, RB}},
252b5132 8018
14b57c7c 8019{"msgsync", X(31,886), 0xffffffff, POWER9, 0, {0}},
a680de9a 8020
14b57c7c 8021{"lfiwzx", X(31,887), X_MASK, POWER7|PPCA2, 0, {FRT, RA0, RB}},
066be9f7 8022
14b57c7c
AM
8023{"extswsli", XS(31,445,0), XS_MASK, POWER9, 0, {RA, RS, SH6}},
8024{"extswsli.", XS(31,445,1), XS_MASK, POWER9, 0, {RA, RS, SH6}},
a680de9a 8025
afef4fe9
PB
8026{"paste.", XRC(31,902,1), XLRT_MASK, POWER10, 0, {RA0, RB, L1OPT}},
8027{"paste.", XRCL(31,902,1,1),XRT_MASK, POWER9, POWER10, {RA0, RB}},
a680de9a 8028
14b57c7c
AM
8029{"stvlxl", X(31,903), X_MASK, CELL, 0, {VS, RA0, RB}},
8030{"stdfcmux", APU(31,903,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
252b5132 8031
14b57c7c
AM
8032{"divdeuo", XO(31,393,1,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
8033{"divdeuo.", XO(31,393,1,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
8034{"divweuo", XO(31,395,1,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
8035{"divweuo.", XO(31,395,1,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
066be9f7 8036
14b57c7c
AM
8037{"stxvw4x", X(31,908), XX1_MASK, PPCVSX, 0, {XS6, RA0, RB}},
8038{"stxsibx", X(31,909), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
066be9f7 8039
14b57c7c 8040{"tabort.", XRC(31,910,1), XRTRB_MASK, PPCHTM, 0, {RA}},
5817ffd1 8041
14b57c7c
AM
8042{"tlbsx", XRC(31,914,0), X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RTO, RA0, RB}},
8043{"tlbsx.", XRC(31,914,1), X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RTO, RA0, RB}},
252b5132 8044
14b57c7c 8045{"slbmfee", X(31,915), XRLA_MASK, POWER9, 0, {RT, RB, A_L}},
a680de9a 8046{"slbmfee", X(31,915), XRA_MASK, PPC64, POWER9, {RT, RB}},
702f0fb4 8047
14b57c7c 8048{"stwcix", X(31,917), X_MASK, POWER6, 0, {RS, RA0, RB}},
f5c120c5 8049
14b57c7c 8050{"sthbrx", X(31,918), X_MASK, COM, 0, {RS, RA0, RB}},
252b5132 8051
73f07bff 8052{"stfdpx", X(31,919), X_MASK|Q_MASK, POWER6, POWER7, {FRSp, RA0, RB}},
14b57c7c 8053{"stfqx", X(31,919), X_MASK, POWER2, 0, {FRS, RA0, RB}},
6ba045b1 8054
14b57c7c
AM
8055{"sraq", XRC(31,920,0), X_MASK, M601, 0, {RA, RS, RB}},
8056{"sraq.", XRC(31,920,1), X_MASK, M601, 0, {RA, RS, RB}},
702f0fb4 8057
14b57c7c
AM
8058{"srea", XRC(31,921,0), X_MASK, M601, 0, {RA, RS, RB}},
8059{"srea.", XRC(31,921,1), X_MASK, M601, 0, {RA, RS, RB}},
252b5132 8060
14b57c7c
AM
8061{"extsh", XRC(31,922,0), XRB_MASK, PPCCOM, 0, {RA, RS}},
8062{"exts", XRC(31,922,0), XRB_MASK, PWRCOM, 0, {RA, RS}},
8063{"extsh.", XRC(31,922,1), XRB_MASK, PPCCOM, 0, {RA, RS}},
8064{"exts.", XRC(31,922,1), XRB_MASK, PWRCOM, 0, {RA, RS}},
702f0fb4 8065
74081948 8066{"evstddepx", VX (31, 1854), VX_MASK, PPCSPE, 0, {RT, RA, RB}},
14b57c7c 8067{"stfddx", X(31,931), X_MASK, E500MC, 0, {FRS, RA, RB}},
19a6653c 8068
ac8f0f72 8069{"stvfrxl", X(31,933), X_MASK, E6500, 0, {VS, RA0, RB}},
aea77599 8070
1ff6a3b8
AM
8071{"wclrone", XOPL2(31,934,2),XRT_MASK, PPCA2, EXT, {RA0, RB}},
8072{"wclrall", X(31,934), XRARB_MASK, PPCA2, EXT, {L2}},
a5721ba2 8073{"wclr", X(31,934), X_MASK, PPCA2, 0, {L2, RA0, RB}},
85d4ac0b 8074
14b57c7c 8075{"stvrxl", X(31,935), X_MASK, CELL, 0, {VS, RA0, RB}},
6ba045b1 8076
14b57c7c
AM
8077{"divdeo", XO(31,425,1,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
8078{"divdeo.", XO(31,425,1,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
8079{"divweo", XO(31,427,1,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
8080{"divweo.", XO(31,427,1,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
066be9f7 8081
14b57c7c
AM
8082{"stxvh8x", X(31,940), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
8083{"stxsihx", X(31,941), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
a680de9a 8084
14b57c7c 8085{"treclaim.", XRC(31,942,1), XRTRB_MASK, PPCHTM, 0, {RA}},
5817ffd1 8086
1ff6a3b8
AM
8087{"tlbrehi", XTLB(31,946,0), XTLB_MASK, PPC403, PPCA2|EXT, {RT, RA}},
8088{"tlbrelo", XTLB(31,946,1), XTLB_MASK, PPC403, PPCA2|EXT, {RT, RA}},
14b57c7c 8089{"tlbre", X(31,946), X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RSO, RAOPT, SHO}},
702f0fb4 8090
14b57c7c 8091{"sthcix", X(31,949), X_MASK, POWER6, 0, {RS, RA0, RB}},
252b5132 8092
14b57c7c
AM
8093{"icswepx", XRC(31,950,0), X_MASK, PPCA2, 0, {RS, RA, RB}},
8094{"icswepx.", XRC(31,950,1), X_MASK, PPCA2, 0, {RS, RA, RB}},
51b5d4a8 8095
14b57c7c 8096{"stfqux", X(31,951), X_MASK, POWER2, 0, {FRS, RA, RB}},
252b5132 8097
14b57c7c
AM
8098{"sraiq", XRC(31,952,0), X_MASK, M601, 0, {RA, RS, SH}},
8099{"sraiq.", XRC(31,952,1), X_MASK, M601, 0, {RA, RS, SH}},
252b5132 8100
14b57c7c
AM
8101{"extsb", XRC(31,954,0), XRB_MASK, PPC, 0, {RA, RS}},
8102{"extsb.", XRC(31,954,1), XRB_MASK, PPC, 0, {RA, RS}},
252b5132 8103
ac8f0f72 8104{"stvflxl", X(31,965), X_MASK, E6500, 0, {VS, RA0, RB}},
aea77599 8105
62adc510 8106{"iccci", X(31,966), XRT_MASK, PPC403|PPC440|PPC476|TITAN|PPCA2, 0, {RAOPT, RBOPT}},
14b57c7c 8107{"ici", X(31,966), XRARB_MASK, PPCA2|PPC476, 0, {CT}},
43e65147 8108
14b57c7c
AM
8109{"divduo", XO(31,457,1,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
8110{"divduo.", XO(31,457,1,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
43e65147 8111
14b57c7c
AM
8112{"divwuo", XO(31,459,1,0), XO_MASK, PPC, 0, {RT, RA, RB}},
8113{"divwuo.", XO(31,459,1,1), XO_MASK, PPC, 0, {RT, RA, RB}},
252b5132 8114
14b57c7c 8115{"stxvd2x", X(31,972), XX1_MASK, PPCVSX, 0, {XS6, RA0, RB}},
a680de9a 8116{"stxvx", X(31,972), XX1_MASK, POWER8, POWER9|PPCVSX3, {XS6, RA0, RB}},
9b4e5766 8117
9fe54b1c 8118{"tlbld", X(31,978), XRTRA_MASK, PPC, PPC403|BOOKE|PPCA2|PPC476, {RB}},
1ff6a3b8
AM
8119{"tlbwehi", XTLB(31,978,0), XTLB_MASK, PPC403, EXT, {RT, RA}},
8120{"tlbwelo", XTLB(31,978,1), XTLB_MASK, PPC403, EXT, {RT, RA}},
14b57c7c 8121{"tlbwe", X(31,978), X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RSO, RAOPT, SHO}},
418c1742 8122
14b57c7c 8123{"slbfee.", XRC(31,979,1), XRA_MASK, POWER6, 0, {RT, RB}},
c4e676f1 8124
14b57c7c 8125{"stbcix", X(31,981), X_MASK, POWER6, 0, {RS, RA0, RB}},
252b5132 8126
14b57c7c 8127{"icbi", X(31,982), XRT_MASK, PPC, 0, {RA0, RB}},
252b5132 8128
14b57c7c 8129{"stfiwx", X(31,983), X_MASK, PPC, PPCEFS, {FRS, RA0, RB}},
702f0fb4 8130
14b57c7c
AM
8131{"extsw", XRC(31,986,0), XRB_MASK, PPC64, 0, {RA, RS}},
8132{"extsw.", XRC(31,986,1), XRB_MASK, PPC64, 0, {RA, RS}},
252b5132 8133
14b57c7c 8134{"icbiep", XRT(31,991,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}},
19a6653c 8135
ac8f0f72 8136{"stvswxl", X(31,997), X_MASK, E6500, 0, {VS, RA0, RB}},
aea77599 8137
14b57c7c 8138{"icread", X(31,998), XRT_MASK, PPC403|PPC440|PPC476|TITAN, 0, {RA0, RB}},
252b5132 8139
14b57c7c
AM
8140{"nabso", XO(31,488,1,0), XORB_MASK, M601, 0, {RT, RA}},
8141{"nabso.", XO(31,488,1,1), XORB_MASK, M601, 0, {RT, RA}},
252b5132 8142
14b57c7c
AM
8143{"divdo", XO(31,489,1,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
8144{"divdo.", XO(31,489,1,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
43e65147 8145
14b57c7c
AM
8146{"divwo", XO(31,491,1,0), XO_MASK, PPC, 0, {RT, RA, RB}},
8147{"divwo.", XO(31,491,1,1), XO_MASK, PPC, 0, {RT, RA, RB}},
418c1742 8148
14b57c7c 8149{"stxvb16x", X(31,1004), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
a680de9a 8150
14b57c7c 8151{"trechkpt.", XRC(31,1006,1), XRTRARB_MASK,PPCHTM, 0, {0}},
702f0fb4 8152
14b57c7c 8153{"tlbli", X(31,1010), XRTRA_MASK, PPC, TITAN, {RB}},
252b5132 8154
14b57c7c 8155{"stdcix", X(31,1013), X_MASK, POWER6, 0, {RS, RA0, RB}},
418c1742 8156
14b57c7c
AM
8157{"dcbz", X(31,1014), XRT_MASK, PPC, 0, {RA0, RB}},
8158{"dclz", X(31,1014), XRT_MASK, PPC, 0, {RA0, RB}},
14b57c7c 8159{"dcbzl", XOPL(31,1014,1), XRT_MASK, POWER4|E500MC, PPC476, {RA0, RB}},
252b5132 8160
1ff6a3b8 8161{"dcbzep", XRT(31,1023,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}},
252b5132 8162
14b57c7c
AM
8163{"lwz", OP(32), OP_MASK, PPCCOM, PPCVLE, {RT, D, RA0}},
8164{"l", OP(32), OP_MASK, PWRCOM, PPCVLE, {RT, D, RA0}},
252b5132 8165
14b57c7c
AM
8166{"lwzu", OP(33), OP_MASK, PPCCOM, PPCVLE, {RT, D, RAL}},
8167{"lu", OP(33), OP_MASK, PWRCOM, PPCVLE, {RT, D, RA0}},
252b5132 8168
14b57c7c 8169{"lbz", OP(34), OP_MASK, COM, PPCVLE, {RT, D, RA0}},
252b5132 8170
14b57c7c 8171{"lbzu", OP(35), OP_MASK, COM, PPCVLE, {RT, D, RAL}},
252b5132 8172
14b57c7c
AM
8173{"stw", OP(36), OP_MASK, PPCCOM, PPCVLE, {RS, D, RA0}},
8174{"st", OP(36), OP_MASK, PWRCOM, PPCVLE, {RS, D, RA0}},
252b5132 8175
14b57c7c
AM
8176{"stwu", OP(37), OP_MASK, PPCCOM, PPCVLE, {RS, D, RAS}},
8177{"stu", OP(37), OP_MASK, PWRCOM, PPCVLE, {RS, D, RA0}},
252b5132 8178
14b57c7c 8179{"stb", OP(38), OP_MASK, COM, PPCVLE, {RS, D, RA0}},
252b5132 8180
14b57c7c 8181{"stbu", OP(39), OP_MASK, COM, PPCVLE, {RS, D, RAS}},
252b5132 8182
14b57c7c 8183{"lhz", OP(40), OP_MASK, COM, PPCVLE, {RT, D, RA0}},
252b5132 8184
14b57c7c 8185{"lhzu", OP(41), OP_MASK, COM, PPCVLE, {RT, D, RAL}},
252b5132 8186
14b57c7c 8187{"lha", OP(42), OP_MASK, COM, PPCVLE, {RT, D, RA0}},
252b5132 8188
14b57c7c 8189{"lhau", OP(43), OP_MASK, COM, PPCVLE, {RT, D, RAL}},
252b5132 8190
14b57c7c 8191{"sth", OP(44), OP_MASK, COM, PPCVLE, {RS, D, RA0}},
252b5132 8192
14b57c7c 8193{"sthu", OP(45), OP_MASK, COM, PPCVLE, {RS, D, RAS}},
252b5132 8194
14b57c7c
AM
8195{"lmw", OP(46), OP_MASK, PPCCOM, PPCVLE, {RT, D, RAM}},
8196{"lm", OP(46), OP_MASK, PWRCOM, PPCVLE, {RT, D, RA0}},
252b5132 8197
14b57c7c
AM
8198{"stmw", OP(47), OP_MASK, PPCCOM, PPCVLE, {RS, D, RA0}},
8199{"stm", OP(47), OP_MASK, PWRCOM, PPCVLE, {RS, D, RA0}},
252b5132 8200
14b57c7c 8201{"lfs", OP(48), OP_MASK, COM, PPCEFS|PPCVLE, {FRT, D, RA0}},
252b5132 8202
14b57c7c 8203{"lfsu", OP(49), OP_MASK, COM, PPCEFS|PPCVLE, {FRT, D, RAS}},
252b5132 8204
14b57c7c 8205{"lfd", OP(50), OP_MASK, COM, PPCEFS|PPCVLE, {FRT, D, RA0}},
252b5132 8206
14b57c7c 8207{"lfdu", OP(51), OP_MASK, COM, PPCEFS|PPCVLE, {FRT, D, RAS}},
252b5132 8208
14b57c7c 8209{"stfs", OP(52), OP_MASK, COM, PPCEFS|PPCVLE, {FRS, D, RA0}},
adadcc0c 8210
14b57c7c 8211{"stfsu", OP(53), OP_MASK, COM, PPCEFS|PPCVLE, {FRS, D, RAS}},
252b5132 8212
14b57c7c 8213{"stfd", OP(54), OP_MASK, COM, PPCEFS|PPCVLE, {FRS, D, RA0}},
c3d65c1c 8214
14b57c7c 8215{"stfdu", OP(55), OP_MASK, COM, PPCEFS|PPCVLE, {FRS, D, RAS}},
252b5132 8216
73f07bff 8217{"lq", OP(56), OP_MASK|Q_MASK, POWER4, PPC476|PPCVLE, {RTQ, DQ, RAQ}},
14b57c7c
AM
8218{"psq_l", OP(56), OP_MASK, PPCPS, PPCVLE, {FRT,PSD,RA,PSW,PSQ}},
8219{"lfq", OP(56), OP_MASK, POWER2, PPCVLE, {FRT, D, RA0}},
418c1742 8220
14b57c7c
AM
8221{"lxsd", DSO(57,2), DS_MASK, PPCVSX3, PPCVLE, {VD, DS, RA0}},
8222{"lxssp", DSO(57,3), DS_MASK, PPCVSX3, PPCVLE, {VD, DS, RA0}},
73f07bff 8223{"lfdp", OP(57), OP_MASK|Q_MASK, POWER6, POWER7|PPCVLE, {FRTp, DS, RA0}},
14b57c7c
AM
8224{"psq_lu", OP(57), OP_MASK, PPCPS, PPCVLE, {FRT,PSD,RA,PSW,PSQ}},
8225{"lfqu", OP(57), OP_MASK, POWER2, PPCVLE, {FRT, D, RA0}},
802a735e 8226
14b57c7c
AM
8227{"ld", DSO(58,0), DS_MASK, PPC64, PPCVLE, {RT, DS, RA0}},
8228{"ldu", DSO(58,1), DS_MASK, PPC64, PPCVLE, {RT, DS, RAL}},
8229{"lwa", DSO(58,2), DS_MASK, PPC64, PPCVLE, {RT, DS, RA0}},
702f0fb4 8230
14b57c7c
AM
8231{"dadd", XRC(59,2,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
8232{"dadd.", XRC(59,2,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
252b5132 8233
14b57c7c
AM
8234{"dqua", ZRC(59,3,0), Z2_MASK, POWER6, PPCVLE, {FRT,FRA,FRB,RMC}},
8235{"dqua.", ZRC(59,3,1), Z2_MASK, POWER6, PPCVLE, {FRT,FRA,FRB,RMC}},
252b5132 8236
aa3c112f
AM
8237{"xvi8ger4pp", XX3(59,2), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
8238{"xvi8ger4", XX3(59,3), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
8239
14b57c7c
AM
8240{"fdivs", A(59,18,0), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
8241{"fdivs.", A(59,18,1), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
252b5132 8242
14b57c7c
AM
8243{"fsubs", A(59,20,0), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
8244{"fsubs.", A(59,20,1), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
252b5132 8245
14b57c7c
AM
8246{"fadds", A(59,21,0), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
8247{"fadds.", A(59,21,1), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
252b5132 8248
14b57c7c
AM
8249{"fsqrts", A(59,22,0), AFRAFRC_MASK, PPC, TITAN|PPCVLE, {FRT, FRB}},
8250{"fsqrts.", A(59,22,1), AFRAFRC_MASK, PPC, TITAN|PPCVLE, {FRT, FRB}},
252b5132 8251
14b57c7c
AM
8252{"fres", A(59,24,0), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
8253{"fres", A(59,24,0), AFRALFRC_MASK, PPC, POWER7|PPCVLE, {FRT, FRB, A_L}},
8254{"fres.", A(59,24,1), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
8255{"fres.", A(59,24,1), AFRALFRC_MASK, PPC, POWER7|PPCVLE, {FRT, FRB, A_L}},
1ed8e1e4 8256
14b57c7c
AM
8257{"fmuls", A(59,25,0), AFRB_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC}},
8258{"fmuls.", A(59,25,1), AFRB_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC}},
252b5132 8259
14b57c7c
AM
8260{"frsqrtes", A(59,26,0), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
8261{"frsqrtes", A(59,26,0), AFRALFRC_MASK, POWER5, POWER7|PPCVLE, {FRT, FRB, A_L}},
8262{"frsqrtes.", A(59,26,1), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
8263{"frsqrtes.", A(59,26,1), AFRALFRC_MASK, POWER5, POWER7|PPCVLE, {FRT, FRB, A_L}},
252b5132 8264
14b57c7c
AM
8265{"fmsubs", A(59,28,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
8266{"fmsubs.", A(59,28,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
252b5132 8267
14b57c7c
AM
8268{"fmadds", A(59,29,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
8269{"fmadds.", A(59,29,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
252b5132 8270
14b57c7c
AM
8271{"fnmsubs", A(59,30,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
8272{"fnmsubs.", A(59,30,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
702f0fb4 8273
14b57c7c
AM
8274{"fnmadds", A(59,31,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
8275{"fnmadds.", A(59,31,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
702f0fb4 8276
14b57c7c
AM
8277{"dmul", XRC(59,34,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
8278{"dmul.", XRC(59,34,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
702f0fb4 8279
14b57c7c
AM
8280{"drrnd", ZRC(59,35,0), Z2_MASK, POWER6, PPCVLE, {FRT, FRA, FRB, RMC}},
8281{"drrnd.", ZRC(59,35,1), Z2_MASK, POWER6, PPCVLE, {FRT, FRA, FRB, RMC}},
702f0fb4 8282
14b57c7c
AM
8283{"dscli", ZRC(59,66,0), Z_MASK, POWER6, PPCVLE, {FRT, FRA, SH16}},
8284{"dscli.", ZRC(59,66,1), Z_MASK, POWER6, PPCVLE, {FRT, FRA, SH16}},
702f0fb4 8285
14b57c7c
AM
8286{"dquai", ZRC(59,67,0), Z2_MASK, POWER6, PPCVLE, {TE, FRT,FRB,RMC}},
8287{"dquai.", ZRC(59,67,1), Z2_MASK, POWER6, PPCVLE, {TE, FRT,FRB,RMC}},
702f0fb4 8288
aa3c112f
AM
8289{"xvf16ger2pp", XX3(59,18), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
8290{"xvf16ger2", XX3(59,19), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
8291
14b57c7c
AM
8292{"dscri", ZRC(59,98,0), Z_MASK, POWER6, PPCVLE, {FRT, FRA, SH16}},
8293{"dscri.", ZRC(59,98,1), Z_MASK, POWER6, PPCVLE, {FRT, FRA, SH16}},
702f0fb4 8294
14b57c7c
AM
8295{"drintx", ZRC(59,99,0), Z2_MASK, POWER6, PPCVLE, {R, FRT, FRB, RMC}},
8296{"drintx.", ZRC(59,99,1), Z2_MASK, POWER6, PPCVLE, {R, FRT, FRB, RMC}},
702f0fb4 8297
aa3c112f
AM
8298{"xvf32gerpp", XX3(59,26), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
8299{"xvf32ger", XX3(59,27), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
8300
14b57c7c 8301{"dcmpo", X(59,130), X_MASK, POWER6, PPCVLE, {BF, FRA, FRB}},
702f0fb4 8302
aa3c112f
AM
8303{"xvi4ger8pp", XX3(59,34), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
8304{"xvi4ger8", XX3(59,35), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
8305
14b57c7c 8306{"dtstex", X(59,162), X_MASK, POWER6, PPCVLE, {BF, FRA, FRB}},
aa3c112f
AM
8307
8308{"xvi16ger2spp", XX3(59,42), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
8309{"xvi16ger2s", XX3(59,43), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
8310
14b57c7c 8311{"dtstdc", Z(59,194), Z_MASK, POWER6, PPCVLE, {BF, FRA, DCM}},
aa3c112f
AM
8312
8313{"xvbf16ger2pp",XX3(59,50), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
8314{"xvbf16ger2", XX3(59,51), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
8315
14b57c7c
AM
8316{"dtstdg", Z(59,226), Z_MASK, POWER6, PPCVLE, {BF, FRA, DGM}},
8317
8318{"drintn", ZRC(59,227,0), Z2_MASK, POWER6, PPCVLE, {R, FRT, FRB, RMC}},
8319{"drintn.", ZRC(59,227,1), Z2_MASK, POWER6, PPCVLE, {R, FRT, FRB, RMC}},
8320
aa3c112f
AM
8321{"xvf64gerpp", XX3(59,58), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6ap, XB6a}},
8322{"xvf64ger", XX3(59,59), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6ap, XB6a}},
8323
14b57c7c
AM
8324{"dctdp", XRC(59,258,0), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
8325{"dctdp.", XRC(59,258,1), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
8326
8327{"dctfix", XRC(59,290,0), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
8328{"dctfix.", XRC(59,290,1), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
8329
8330{"ddedpd", XRC(59,322,0), X_MASK, POWER6, PPCVLE, {SP, FRT, FRB}},
8331{"ddedpd.", XRC(59,322,1), X_MASK, POWER6, PPCVLE, {SP, FRT, FRB}},
8332
aa3c112f
AM
8333{"xvi16ger2", XX3(59,75), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
8334
8335{"xvf16ger2np", XX3(59,82), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
8336
14b57c7c
AM
8337{"dxex", XRC(59,354,0), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
8338{"dxex.", XRC(59,354,1), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
8339
aa3c112f
AM
8340{"xvf32gernp", XX3(59,90), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
8341
8342{"xvi8ger4spp", XX3(59,99), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
8343
8344{"xvi16ger2pp", XX3(59,107), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
8345
8346{"xvbf16ger2np",XX3(59,114), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
8347
8348{"xvf64gernp", XX3(59,122), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6ap, XB6a}},
8349
14b57c7c
AM
8350{"dsub", XRC(59,514,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
8351{"dsub.", XRC(59,514,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
8352
8353{"ddiv", XRC(59,546,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
8354{"ddiv.", XRC(59,546,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
8355
aa3c112f
AM
8356{"xvf16ger2pn", XX3(59,146), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
8357
8358{"xvf32gerpn", XX3(59,154), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
8359
14b57c7c
AM
8360{"dcmpu", X(59,642), X_MASK, POWER6, PPCVLE, {BF, FRA, FRB}},
8361
8362{"dtstsf", X(59,674), X_MASK, POWER6, PPCVLE, {BF, FRA, FRB}},
8363{"dtstsfi", X(59,675), X_MASK|1<<22,POWER9, PPCVLE, {BF, UIM6, FRB}},
8364
aa3c112f
AM
8365{"xvbf16ger2pn",XX3(59,178), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
8366
8367{"xvf64gerpn", XX3(59,186), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6ap, XB6a}},
8368
14b57c7c
AM
8369{"drsp", XRC(59,770,0), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
8370{"drsp.", XRC(59,770,1), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
8371
8372{"dcffix", XRC(59,802,0), X_MASK|FRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
8373{"dcffix.", XRC(59,802,1), X_MASK|FRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
8374
8375{"denbcd", XRC(59,834,0), X_MASK, POWER6, PPCVLE, {S, FRT, FRB}},
8376{"denbcd.", XRC(59,834,1), X_MASK, POWER6, PPCVLE, {S, FRT, FRB}},
8377
aa3c112f
AM
8378{"xvf16ger2nn", XX3(59,210), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
8379
14b57c7c
AM
8380{"fcfids", XRC(59,846,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
8381{"fcfids.", XRC(59,846,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
8382
8383{"diex", XRC(59,866,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
8384{"diex.", XRC(59,866,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
8385
aa3c112f
AM
8386{"xvf32gernn", XX3(59,218), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
8387
8388{"xvbf16ger2nn",XX3(59,242), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6a, XB6a}},
8389
14b57c7c
AM
8390{"fcfidus", XRC(59,974,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
8391{"fcfidus.", XRC(59,974,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
8392
aa3c112f
AM
8393{"xvf64gernn", XX3(59,250), XX3_MASK|3<<21, POWER10, PPCVLE, {ACC, XA6ap, XB6a}},
8394
14b57c7c
AM
8395{"xsaddsp", XX3(60,0), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
8396{"xsmaddasp", XX3(60,1), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
8397{"xxsldwi", XX3(60,2), XX3SHW_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6, SHW}},
8398{"xscmpeqdp", XX3(60,3), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
8399{"xsrsqrtesp", XX2(60,10), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
8400{"xssqrtsp", XX2(60,11), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
8401{"xxsel", XX4(60,3), XX4_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6, XC6}},
8402{"xssubsp", XX3(60,8), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
8403{"xsmaddmsp", XX3(60,9), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
1ff6a3b8
AM
8404{"xxspltd", XX3(60,10), XX3DM_MASK, PPCVSX, PPCVLE|EXT, {XT6, XAB6, DMEX}},
8405{"xxmrghd", XX3(60,10), XX3_MASK, PPCVSX, PPCVLE|EXT, {XT6, XA6, XB6}},
8406{"xxswapd", XX3(60,10)|(2<<8), XX3_MASK, PPCVSX, PPCVLE|EXT, {XT6, XAB6}},
8407{"xxmrgld", XX3(60,10)|(3<<8), XX3_MASK, PPCVSX, PPCVLE|EXT, {XT6, XA6, XB6}},
14b57c7c
AM
8408{"xxpermdi", XX3(60,10), XX3DM_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6, DM}},
8409{"xscmpgtdp", XX3(60,11), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
8410{"xsresp", XX2(60,26), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
8411{"xsmulsp", XX3(60,16), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
8412{"xsmsubasp", XX3(60,17), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
8413{"xxmrghw", XX3(60,18), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8414{"xscmpgedp", XX3(60,19), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
8415{"xsdivsp", XX3(60,24), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
8416{"xsmsubmsp", XX3(60,25), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
8417{"xxperm", XX3(60,26), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
8418{"xsadddp", XX3(60,32), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8419{"xsmaddadp", XX3(60,33), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8420{"xscmpudp", XX3(60,35), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}},
8421{"xscvdpuxws", XX2(60,72), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8422{"xsrdpi", XX2(60,73), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8423{"xsrsqrtedp", XX2(60,74), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8424{"xssqrtdp", XX2(60,75), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8425{"xssubdp", XX3(60,40), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8426{"xsmaddmdp", XX3(60,41), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8427{"xscmpodp", XX3(60,43), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}},
8428{"xscvdpsxws", XX2(60,88), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8429{"xsrdpiz", XX2(60,89), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8430{"xsredp", XX2(60,90), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8431{"xsmuldp", XX3(60,48), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8432{"xsmsubadp", XX3(60,49), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8433{"xxmrglw", XX3(60,50), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8434{"xsrdpip", XX2(60,105), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8435{"xstsqrtdp", XX2(60,106), XX2BF_MASK, PPCVSX, PPCVLE, {BF, XB6}},
8436{"xsrdpic", XX2(60,107), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8437{"xsdivdp", XX3(60,56), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8438{"xsmsubmdp", XX3(60,57), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8439{"xxpermr", XX3(60,58), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
8440{"xscmpexpdp", XX3(60,59), XX3BF_MASK, PPCVSX3, PPCVLE, {BF, XA6, XB6}},
8441{"xsrdpim", XX2(60,121), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8442{"xstdivdp", XX3(60,61), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}},
8443{"xvaddsp", XX3(60,64), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8444{"xvmaddasp", XX3(60,65), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8445{"xvcmpeqsp", XX3RC(60,67,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8446{"xvcmpeqsp.", XX3RC(60,67,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8447{"xvcvspuxws", XX2(60,136), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8448{"xvrspi", XX2(60,137), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8449{"xvrsqrtesp", XX2(60,138), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8450{"xvsqrtsp", XX2(60,139), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8451{"xvsubsp", XX3(60,72), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8452{"xvmaddmsp", XX3(60,73), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8453{"xvcmpgtsp", XX3RC(60,75,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8454{"xvcmpgtsp.", XX3RC(60,75,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8455{"xvcvspsxws", XX2(60,152), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8456{"xvrspiz", XX2(60,153), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8457{"xvresp", XX2(60,154), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8458{"xvmulsp", XX3(60,80), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8459{"xvmsubasp", XX3(60,81), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8460{"xxspltw", XX2(60,164), XX2UIM_MASK, PPCVSX, PPCVLE, {XT6, XB6, UIM}},
8461{"xxextractuw", XX2(60,165), XX2UIM4_MASK, PPCVSX3, PPCVLE, {XT6, XB6, UIMM4}},
8462{"xvcmpgesp", XX3RC(60,83,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8463{"xvcmpgesp.", XX3RC(60,83,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8464{"xvcvuxwsp", XX2(60,168), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8465{"xvrspip", XX2(60,169), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8466{"xvtsqrtsp", XX2(60,170), XX2BF_MASK, PPCVSX, PPCVLE, {BF, XB6}},
8467{"xvrspic", XX2(60,171), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8468{"xvdivsp", XX3(60,88), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8469{"xvmsubmsp", XX3(60,89), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8470{"xxspltib", X(60,360), XX1_MASK|3<<19, PPCVSX3, PPCVLE, {XT6, IMM8}},
6edbfd3b 8471{"lxvkq", XVA(60,360,31), XVA_MASK&~1, POWER10, PPCVLE, {XT6, UIM5}},
14b57c7c
AM
8472{"xxinsertw", XX2(60,181), XX2UIM4_MASK, PPCVSX3, PPCVLE, {XT6, XB6, UIMM4}},
8473{"xvcvsxwsp", XX2(60,184), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8474{"xvrspim", XX2(60,185), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8475{"xvtdivsp", XX3(60,93), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}},
8476{"xvadddp", XX3(60,96), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8477{"xvmaddadp", XX3(60,97), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8478{"xvcmpeqdp", XX3RC(60,99,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8479{"xvcmpeqdp.", XX3RC(60,99,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8480{"xvcvdpuxws", XX2(60,200), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8481{"xvrdpi", XX2(60,201), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8482{"xvrsqrtedp", XX2(60,202), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8483{"xvsqrtdp", XX2(60,203), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8484{"xvsubdp", XX3(60,104), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8485{"xvmaddmdp", XX3(60,105), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8486{"xvcmpgtdp", XX3RC(60,107,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8487{"xvcmpgtdp.", XX3RC(60,107,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8488{"xvcvdpsxws", XX2(60,216), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8489{"xvrdpiz", XX2(60,217), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8490{"xvredp", XX2(60,218), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8491{"xvmuldp", XX3(60,112), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8492{"xvmsubadp", XX3(60,113), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8493{"xvcmpgedp", XX3RC(60,115,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8494{"xvcmpgedp.", XX3RC(60,115,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8495{"xvcvuxwdp", XX2(60,232), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8496{"xvrdpip", XX2(60,233), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8497{"xvtsqrtdp", XX2(60,234), XX2BF_MASK, PPCVSX, PPCVLE, {BF, XB6}},
8498{"xvrdpic", XX2(60,235), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8499{"xvdivdp", XX3(60,120), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8500{"xvmsubmdp", XX3(60,121), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8501{"xvcvsxwdp", XX2(60,248), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8502{"xvrdpim", XX2(60,249), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8503{"xvtdivdp", XX3(60,125), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}},
8504{"xsmaxcdp", XX3(60,128), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
8505{"xsnmaddasp", XX3(60,129), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
8506{"xxland", XX3(60,130), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8507{"xscvdpsp", XX2(60,265), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8508{"xscvdpspn", XX2(60,267), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
8509{"xsmincdp", XX3(60,136), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
8510{"xsnmaddmsp", XX3(60,137), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
8511{"xxlandc", XX3(60,138), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8512{"xsrsp", XX2(60,281), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
8513{"xsmaxjdp", XX3(60,144), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
8514{"xsnmsubasp", XX3(60,145), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
1ff6a3b8 8515{"xxmr", XX3(60,146), XX3_MASK, PPCVSX, PPCVLE|EXT, {XT6, XAB6}},
14b57c7c
AM
8516{"xxlor", XX3(60,146), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8517{"xscvuxdsp", XX2(60,296), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
8518{"xststdcsp", XX2(60,298), XX2BFD_MASK, PPCVSX3, PPCVLE, {BF, XB6, DCMX}},
8519{"xsminjdp", XX3(60,152), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
8520{"xsnmsubmsp", XX3(60,153), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
8521{"xxlxor", XX3(60,154), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8522{"xscvsxdsp", XX2(60,312), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
8523{"xsmaxdp", XX3(60,160), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8524{"xsnmaddadp", XX3(60,161), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
1ff6a3b8 8525{"xxlnot", XX3(60,162), XX3_MASK, PPCVSX, PPCVLE|EXT, {XT6, XAB6}},
14b57c7c
AM
8526{"xxlnor", XX3(60,162), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8527{"xscvdpuxds", XX2(60,328), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8528{"xscvspdp", XX2(60,329), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8529{"xscvspdpn", XX2(60,331), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
8530{"xsmindp", XX3(60,168), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8531{"xsnmaddmdp", XX3(60,169), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8532{"xxlorc", XX3(60,170), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
8533{"xscvdpsxds", XX2(60,344), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8534{"xsabsdp", XX2(60,345), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8535{"xsxexpdp", XX2VA(60,347,0),XX2_MASK|1, PPCVSX3, PPCVLE, {RT, XB6}},
8536{"xsxsigdp", XX2VA(60,347,1),XX2_MASK|1, PPCVSX3, PPCVLE, {RT, XB6}},
8537{"xscvhpdp", XX2VA(60,347,16),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
8538{"xscvdphp", XX2VA(60,347,17),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
8539{"xscpsgndp", XX3(60,176), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8540{"xsnmsubadp", XX3(60,177), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8541{"xxlnand", XX3(60,178), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
8542{"xscvuxddp", XX2(60,360), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8543{"xsnabsdp", XX2(60,361), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8544{"xststdcdp", XX2(60,362), XX2BFD_MASK, PPCVSX3, PPCVLE, {BF, XB6, DCMX}},
8545{"xsnmsubmdp", XX3(60,185), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8546{"xxleqv", XX3(60,186), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
8547{"xscvsxddp", XX2(60,376), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8548{"xsnegdp", XX2(60,377), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8549{"xvmaxsp", XX3(60,192), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8550{"xvnmaddasp", XX3(60,193), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8551{"xvcvspuxds", XX2(60,392), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8552{"xvcvdpsp", XX2(60,393), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8553{"xvminsp", XX3(60,200), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8554{"xvnmaddmsp", XX3(60,201), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8555{"xvcvspsxds", XX2(60,408), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8556{"xvabssp", XX2(60,409), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
1ff6a3b8 8557{"xvmovsp", XX3(60,208), XX3_MASK, PPCVSX, PPCVLE|EXT, {XT6, XAB6}},
14b57c7c
AM
8558{"xvcpsgnsp", XX3(60,208), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8559{"xvnmsubasp", XX3(60,209), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8560{"xvcvuxdsp", XX2(60,424), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8561{"xvnabssp", XX2(60,425), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8562{"xvtstdcsp", XX2(60,426), XX2DCMXS_MASK, PPCVSX3, PPCVLE, {XT6, XB6, DCMXS}},
8563{"xviexpsp", XX3(60,216), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
8564{"xvnmsubmsp", XX3(60,217), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8565{"xvcvsxdsp", XX2(60,440), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8566{"xvnegsp", XX2(60,441), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8567{"xvmaxdp", XX3(60,224), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8568{"xvnmaddadp", XX3(60,225), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8569{"xvcvdpuxds", XX2(60,456), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8570{"xvcvspdp", XX2(60,457), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
d7e97a76
AM
8571{"xxgenpcvbm", X(60,916), XX1_MASK, POWER10, PPCVLE, {XT6, VB, UIMM}},
8572{"xxgenpcvhm", X(60,917), XX1_MASK, POWER10, PPCVLE, {XT6, VB, UIMM}},
14b57c7c
AM
8573{"xsiexpdp", X(60,918), XX1_MASK, PPCVSX3, PPCVLE, {XT6, RA, RB}},
8574{"xvmindp", XX3(60,232), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8575{"xvnmaddmdp", XX3(60,233), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8576{"xvcvdpsxds", XX2(60,472), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8577{"xvabsdp", XX2(60,473), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
d7e97a76
AM
8578{"xxgenpcvwm", X(60,948), XX1_MASK, POWER10, PPCVLE, {XT6, VB, UIMM}},
8579{"xxgenpcvdm", X(60,949), XX1_MASK, POWER10, PPCVLE, {XT6, VB, UIMM}},
14b57c7c
AM
8580{"xvxexpdp", XX2VA(60,475,0),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
8581{"xvxsigdp", XX2VA(60,475,1),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
18a8a00e 8582{"xvtlsbb", XX2VA(60,475,2),XX2BF_MASK, POWER10, PPCVLE, {BF, XB6}},
14b57c7c
AM
8583{"xxbrh", XX2VA(60,475,7),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
8584{"xvxexpsp", XX2VA(60,475,8),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
8585{"xvxsigsp", XX2VA(60,475,9),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
8586{"xxbrw", XX2VA(60,475,15),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
f5fc30d0 8587{"xvcvbf16spn", XX2VA(60,475,16),XX2_MASK, PPCVSX4, PPCVLE, {XT6, XB6}},
aa3c112f 8588{"xvcvspbf16", XX2VA(60,475,17),XX2_MASK, PPCVSX4, PPCVLE, {XT6, XB6}},
14b57c7c
AM
8589{"xxbrd", XX2VA(60,475,23),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
8590{"xvcvhpsp", XX2VA(60,475,24),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
8591{"xvcvsphp", XX2VA(60,475,25),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
8592{"xxbrq", XX2VA(60,475,31),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
1ff6a3b8 8593{"xvmovdp", XX3(60,240), XX3_MASK, PPCVSX, PPCVLE|EXT, {XT6, XAB6}},
14b57c7c
AM
8594{"xvcpsgndp", XX3(60,240), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8595{"xvnmsubadp", XX3(60,241), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8596{"xvcvuxddp", XX2(60,488), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8597{"xvnabsdp", XX2(60,489), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8598{"xvtstdcdp", XX2(60,490), XX2DCMXS_MASK, PPCVSX3, PPCVLE, {XT6, XB6, DCMXS}},
8599{"xviexpdp", XX3(60,248), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
8600{"xvnmsubmdp", XX3(60,249), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
8601{"xvcvsxddp", XX2(60,504), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8602{"xvnegdp", XX2(60,505), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
8603
8604{"psq_st", OP(60), OP_MASK, PPCPS, PPCVLE, {FRS,PSD,RA,PSW,PSQ}},
8605{"stfq", OP(60), OP_MASK, POWER2, PPCVLE, {FRS, D, RA}},
8606
8607{"lxv", DQX(61,1), DQX_MASK, PPCVSX3, PPCVLE, {XTQ6, DQ, RA0}},
8608{"stxv", DQX(61,5), DQX_MASK, PPCVSX3, PPCVLE, {XSQ6, DQ, RA0}},
8609{"stxsd", DSO(61,2), DS_MASK, PPCVSX3, PPCVLE, {VS, DS, RA0}},
8610{"stxssp", DSO(61,3), DS_MASK, PPCVSX3, PPCVLE, {VS, DS, RA0}},
73f07bff 8611{"stfdp", OP(61), OP_MASK|Q_MASK, POWER6, POWER7|PPCVLE, {FRSp, DS, RA0}},
14b57c7c
AM
8612{"psq_stu", OP(61), OP_MASK, PPCPS, PPCVLE, {FRS,PSD,RA,PSW,PSQ}},
8613{"stfqu", OP(61), OP_MASK, POWER2, PPCVLE, {FRS, D, RA}},
8614
8615{"std", DSO(62,0), DS_MASK, PPC64, PPCVLE, {RS, DS, RA0}},
8616{"stdu", DSO(62,1), DS_MASK, PPC64, PPCVLE, {RS, DS, RAS}},
73f07bff 8617{"stq", DSO(62,2), DS_MASK|Q_MASK, POWER4, PPC476|PPCVLE, {RSQ, DS, RA0}},
14b57c7c
AM
8618
8619{"fcmpu", X(63,0), XBF_MASK, COM, PPCEFS|PPCVLE, {BF, FRA, FRB}},
8620
73f07bff
AM
8621{"daddq", XRC(63,2,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
8622{"daddq.", XRC(63,2,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
14b57c7c 8623
73f07bff
AM
8624{"dquaq", ZRC(63,3,0), Z2_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp, RMC}},
8625{"dquaq.", ZRC(63,3,1), Z2_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp, RMC}},
14b57c7c
AM
8626
8627{"xsaddqp", XRC(63,4,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
8628{"xsaddqpo", XRC(63,4,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
8629
8630{"xsrqpi", ZRC(63,5,0), Z2_MASK, PPCVSX3, PPCVLE, {R, VD, VB, RMC}},
8631{"xsrqpix", ZRC(63,5,1), Z2_MASK, PPCVSX3, PPCVLE, {R, VD, VB, RMC}},
8632
8633{"fcpsgn", XRC(63,8,0), X_MASK, POWER6|PPCA2|PPC476, PPCVLE, {FRT, FRA, FRB}},
8634{"fcpsgn.", XRC(63,8,1), X_MASK, POWER6|PPCA2|PPC476, PPCVLE, {FRT, FRA, FRB}},
8635
8636{"frsp", XRC(63,12,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
8637{"frsp.", XRC(63,12,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
8638
8639{"fctiw", XRC(63,14,0), XRA_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRB}},
8640{"fcir", XRC(63,14,0), XRA_MASK, PWR2COM, PPCVLE, {FRT, FRB}},
8641{"fctiw.", XRC(63,14,1), XRA_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRB}},
8642{"fcir.", XRC(63,14,1), XRA_MASK, PWR2COM, PPCVLE, {FRT, FRB}},
8643
8644{"fctiwz", XRC(63,15,0), XRA_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRB}},
8645{"fcirz", XRC(63,15,0), XRA_MASK, PWR2COM, PPCVLE, {FRT, FRB}},
8646{"fctiwz.", XRC(63,15,1), XRA_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRB}},
8647{"fcirz.", XRC(63,15,1), XRA_MASK, PWR2COM, PPCVLE, {FRT, FRB}},
8648
8649{"fdiv", A(63,18,0), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
8650{"fd", A(63,18,0), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
8651{"fdiv.", A(63,18,1), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
8652{"fd.", A(63,18,1), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
8653
8654{"fsub", A(63,20,0), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
8655{"fs", A(63,20,0), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
8656{"fsub.", A(63,20,1), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
8657{"fs.", A(63,20,1), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
8658
8659{"fadd", A(63,21,0), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
8660{"fa", A(63,21,0), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
8661{"fadd.", A(63,21,1), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
8662{"fa.", A(63,21,1), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
8663
8664{"fsqrt", A(63,22,0), AFRAFRC_MASK, PPCPWR2, TITAN|PPCVLE, {FRT, FRB}},
8665{"fsqrt.", A(63,22,1), AFRAFRC_MASK, PPCPWR2, TITAN|PPCVLE, {FRT, FRB}},
8666
8667{"fsel", A(63,23,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
8668{"fsel.", A(63,23,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
8669
8670{"fre", A(63,24,0), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
8671{"fre", A(63,24,0), AFRALFRC_MASK, POWER5, POWER7|PPCVLE, {FRT, FRB, A_L}},
8672{"fre.", A(63,24,1), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
8673{"fre.", A(63,24,1), AFRALFRC_MASK, POWER5, POWER7|PPCVLE, {FRT, FRB, A_L}},
1ed8e1e4 8674
14b57c7c
AM
8675{"fmul", A(63,25,0), AFRB_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC}},
8676{"fm", A(63,25,0), AFRB_MASK, PWRCOM, PPCVLE|PPCVLE, {FRT, FRA, FRC}},
8677{"fmul.", A(63,25,1), AFRB_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC}},
8678{"fm.", A(63,25,1), AFRB_MASK, PWRCOM, PPCVLE|PPCVLE, {FRT, FRA, FRC}},
252b5132 8679
14b57c7c
AM
8680{"frsqrte", A(63,26,0), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
8681{"frsqrte", A(63,26,0), AFRALFRC_MASK, PPC, POWER7|PPCVLE, {FRT, FRB, A_L}},
8682{"frsqrte.", A(63,26,1), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
8683{"frsqrte.", A(63,26,1), AFRALFRC_MASK, PPC, POWER7|PPCVLE, {FRT, FRB, A_L}},
252b5132 8684
14b57c7c
AM
8685{"fmsub", A(63,28,0), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
8686{"fms", A(63,28,0), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
8687{"fmsub.", A(63,28,1), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
8688{"fms.", A(63,28,1), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
252b5132 8689
14b57c7c
AM
8690{"fmadd", A(63,29,0), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
8691{"fma", A(63,29,0), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
8692{"fmadd.", A(63,29,1), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
8693{"fma.", A(63,29,1), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
252b5132 8694
14b57c7c
AM
8695{"fnmsub", A(63,30,0), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
8696{"fnms", A(63,30,0), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
8697{"fnmsub.", A(63,30,1), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
8698{"fnms.", A(63,30,1), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
252b5132 8699
14b57c7c
AM
8700{"fnmadd", A(63,31,0), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
8701{"fnma", A(63,31,0), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
8702{"fnmadd.", A(63,31,1), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
8703{"fnma.", A(63,31,1), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
252b5132 8704
14b57c7c 8705{"fcmpo", X(63,32), XBF_MASK, COM, PPCEFS|PPCVLE, {BF, FRA, FRB}},
252b5132 8706
73f07bff
AM
8707{"dmulq", XRC(63,34,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
8708{"dmulq.", XRC(63,34,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
702f0fb4 8709
73f07bff
AM
8710{"drrndq", ZRC(63,35,0), Z2_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRA, FRBp, RMC}},
8711{"drrndq.", ZRC(63,35,1), Z2_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRA, FRBp, RMC}},
702f0fb4 8712
14b57c7c
AM
8713{"xsmulqp", XRC(63,36,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
8714{"xsmulqpo", XRC(63,36,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 8715
14b57c7c 8716{"xsrqpxp", Z(63,37), Z2_MASK, PPCVSX3, PPCVLE, {R, VD, VB, RMC}},
a680de9a 8717
96a86c01
AM
8718{"mtfsb1", XRC(63,38,0), XRARB_MASK, COM, PPCVLE, {BTF}},
8719{"mtfsb1.", XRC(63,38,1), XRARB_MASK, COM, PPCVLE, {BTF}},
252b5132 8720
14b57c7c
AM
8721{"fneg", XRC(63,40,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
8722{"fneg.", XRC(63,40,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
252b5132 8723
14b57c7c 8724{"mcrfs", X(63,64), XRB_MASK|(3<<21)|(3<<16), COM, PPCVLE, {BF, BFA}},
252b5132 8725
73f07bff
AM
8726{"dscliq", ZRC(63,66,0), Z_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, SH16}},
8727{"dscliq.", ZRC(63,66,1), Z_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, SH16}},
702f0fb4 8728
73f07bff
AM
8729{"dquaiq", ZRC(63,67,0), Z2_MASK|Q_MASK, POWER6, PPCVLE, {TE, FRTp, FRBp, RMC}},
8730{"dquaiq.", ZRC(63,67,1), Z2_MASK|Q_MASK, POWER6, PPCVLE, {TE, FRTp, FRBp, RMC}},
702f0fb4 8731
3b646889
AM
8732{"xscmpeqqp", X(63,68), X_MASK, POWER10, PPCVLE, {VD, VA, VB}},
8733
96a86c01
AM
8734{"mtfsb0", XRC(63,70,0), XRARB_MASK, COM, PPCVLE, {BTF}},
8735{"mtfsb0.", XRC(63,70,1), XRARB_MASK, COM, PPCVLE, {BTF}},
252b5132 8736
14b57c7c
AM
8737{"fmr", XRC(63,72,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
8738{"fmr.", XRC(63,72,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
252b5132 8739
73f07bff
AM
8740{"dscriq", ZRC(63,98,0), Z_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, SH16}},
8741{"dscriq.", ZRC(63,98,1), Z_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, SH16}},
702f0fb4 8742
73f07bff
AM
8743{"drintxq", ZRC(63,99,0), Z2_MASK|Q_MASK, POWER6, PPCVLE, {R, FRTp, FRBp, RMC}},
8744{"drintxq.", ZRC(63,99,1), Z2_MASK|Q_MASK, POWER6, PPCVLE, {R, FRTp, FRBp, RMC}},
702f0fb4 8745
14b57c7c 8746{"xscpsgnqp", X(63,100), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 8747
14b57c7c 8748{"ftdiv", X(63,128), XBF_MASK, POWER7, PPCVLE, {BF, FRA, FRB}},
066be9f7 8749
14b57c7c 8750{"dcmpoq", X(63,130), X_MASK, POWER6, PPCVLE, {BF, FRAp, FRBp}},
702f0fb4 8751
14b57c7c 8752{"xscmpoqp", X(63,132), XBF_MASK, PPCVSX3, PPCVLE, {BF, VA, VB}},
a680de9a 8753
14b57c7c
AM
8754{"mtfsfi", XRC(63,134,0), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCVLE, {BFF, U, W}},
8755{"mtfsfi", XRC(63,134,0), XRA_MASK|(3<<21)|(1<<11), COM, POWER6|PPCA2|PPC476|PPCVLE, {BFF, U}},
8756{"mtfsfi.", XRC(63,134,1), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCVLE, {BFF, U, W}},
8757{"mtfsfi.", XRC(63,134,1), XRA_MASK|(3<<21)|(1<<11), COM, POWER6|PPCA2|PPC476|PPCVLE, {BFF, U}},
252b5132 8758
14b57c7c
AM
8759{"fnabs", XRC(63,136,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
8760{"fnabs.", XRC(63,136,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
252b5132 8761
14b57c7c
AM
8762{"fctiwu", XRC(63,142,0), XRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
8763{"fctiwu.", XRC(63,142,1), XRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
8764{"fctiwuz", XRC(63,143,0), XRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
8765{"fctiwuz.", XRC(63,143,1), XRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
066be9f7 8766
14b57c7c 8767{"ftsqrt", X(63,160), XBF_MASK|FRA_MASK, POWER7, PPCVLE, {BF, FRB}},
066be9f7 8768
14b57c7c 8769{"dtstexq", X(63,162), X_MASK, POWER6, PPCVLE, {BF, FRAp, FRBp}},
a680de9a 8770
14b57c7c 8771{"xscmpexpqp", X(63,164), XBF_MASK, PPCVSX3, PPCVLE, {BF, VA, VB}},
a680de9a 8772
14b57c7c 8773{"dtstdcq", Z(63,194), Z_MASK, POWER6, PPCVLE, {BF, FRAp, DCM}},
3b646889
AM
8774
8775{"xscmpgeqp", X(63,196), X_MASK, POWER10, PPCVLE, {VD, VA, VB}},
8776
14b57c7c 8777{"dtstdgq", Z(63,226), Z_MASK, POWER6, PPCVLE, {BF, FRAp, DGM}},
702f0fb4 8778
73f07bff
AM
8779{"drintnq", ZRC(63,227,0), Z2_MASK|Q_MASK, POWER6, PPCVLE, {R, FRTp, FRBp, RMC}},
8780{"drintnq.", ZRC(63,227,1), Z2_MASK|Q_MASK, POWER6, PPCVLE, {R, FRTp, FRBp, RMC}},
702f0fb4 8781
3b646889
AM
8782{"xscmpgtqp", X(63,228), X_MASK, POWER10, PPCVLE, {VD, VA, VB}},
8783
73f07bff
AM
8784{"dctqpq", XRC(63,258,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRB}},
8785{"dctqpq.", XRC(63,258,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRB}},
702f0fb4 8786
14b57c7c
AM
8787{"fabs", XRC(63,264,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
8788{"fabs.", XRC(63,264,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
252b5132 8789
14b57c7c
AM
8790{"dctfixq", XRC(63,290,0), X_MASK, POWER6, PPCVLE, {FRT, FRBp}},
8791{"dctfixq.", XRC(63,290,1), X_MASK, POWER6, PPCVLE, {FRT, FRBp}},
702f0fb4 8792
73f07bff
AM
8793{"ddedpdq", XRC(63,322,0), X_MASK|Q_MASK, POWER6, PPCVLE, {SP, FRTp, FRBp}},
8794{"ddedpdq.", XRC(63,322,1), X_MASK|Q_MASK, POWER6, PPCVLE, {SP, FRTp, FRBp}},
702f0fb4 8795
14b57c7c
AM
8796{"dxexq", XRC(63,354,0), X_MASK, POWER6, PPCVLE, {FRT, FRBp}},
8797{"dxexq.", XRC(63,354,1), X_MASK, POWER6, PPCVLE, {FRT, FRBp}},
702f0fb4 8798
14b57c7c
AM
8799{"xsmaddqp", XRC(63,388,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
8800{"xsmaddqpo", XRC(63,388,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 8801
14b57c7c
AM
8802{"frin", XRC(63,392,0), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
8803{"frin.", XRC(63,392,1), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
a680de9a 8804
14b57c7c
AM
8805{"xsmsubqp", XRC(63,420,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
8806{"xsmsubqpo", XRC(63,420,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 8807
14b57c7c
AM
8808{"friz", XRC(63,424,0), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
8809{"friz.", XRC(63,424,1), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
a680de9a 8810
14b57c7c
AM
8811{"xsnmaddqp", XRC(63,452,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
8812{"xsnmaddqpo", XRC(63,452,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 8813
14b57c7c
AM
8814{"frip", XRC(63,456,0), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
8815{"frip.", XRC(63,456,1), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
a680de9a 8816
14b57c7c
AM
8817{"xsnmsubqp", XRC(63,484,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
8818{"xsnmsubqpo", XRC(63,484,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 8819
14b57c7c
AM
8820{"frim", XRC(63,488,0), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
8821{"frim.", XRC(63,488,1), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
ce7a772b 8822
73f07bff
AM
8823{"dsubq", XRC(63,514,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
8824{"dsubq.", XRC(63,514,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
702f0fb4 8825
14b57c7c
AM
8826{"xssubqp", XRC(63,516,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
8827{"xssubqpo", XRC(63,516,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 8828
73f07bff
AM
8829{"ddivq", XRC(63,546,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
8830{"ddivq.", XRC(63,546,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
702f0fb4 8831
14b57c7c
AM
8832{"xsdivqp", XRC(63,548,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
8833{"xsdivqpo", XRC(63,548,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 8834
14b57c7c
AM
8835{"mffs", XRC(63,583,0), XRARB_MASK, COM, PPCEFS|PPCVLE, {FRT}},
8836{"mffs.", XRC(63,583,1), XRARB_MASK, COM, PPCEFS|PPCVLE, {FRT}},
252b5132 8837
6fd3a02d
PB
8838{"mffsce", XMMF(63,583,0,1), XMMF_MASK|RB_MASK, POWER9, PPCVLE, {FRT}},
8839{"mffscdrn", XMMF(63,583,2,4), XMMF_MASK, POWER9, PPCVLE, {FRT, FRB}},
8840{"mffscdrni", XMMF(63,583,2,5), XMMF_MASK|(3<<14), POWER9, PPCVLE, {FRT, DRM}},
8841{"mffscrn", XMMF(63,583,2,6), XMMF_MASK, POWER9, PPCVLE, {FRT, FRB}},
8842{"mffscrni", XMMF(63,583,2,7), XMMF_MASK|(7<<13), POWER9, PPCVLE, {FRT, RM}},
8843{"mffsl", XMMF(63,583,3,0), XMMF_MASK|RB_MASK, POWER9, PPCVLE, {FRT}},
8844
14b57c7c 8845{"dcmpuq", X(63,642), X_MASK, POWER6, PPCVLE, {BF, FRAp, FRBp}},
702f0fb4 8846
14b57c7c 8847{"xscmpuqp", X(63,644), XBF_MASK, PPCVSX3, PPCVLE, {BF, VA, VB}},
a680de9a 8848
14b57c7c
AM
8849{"dtstsfq", X(63,674), X_MASK, POWER6, PPCVLE, {BF, FRA, FRBp}},
8850{"dtstsfiq", X(63,675), X_MASK|1<<22,POWER9, PPCVLE, {BF, UIM6, FRBp}},
a680de9a 8851
3b646889
AM
8852{"xsmaxcqp", X(63,676), X_MASK, POWER10, PPCVLE, {VD, VA, VB}},
8853
14b57c7c 8854{"xststdcqp", X(63,708), X_MASK, PPCVSX3, PPCVLE, {BF, VB, DCMX}},
702f0fb4 8855
14b57c7c
AM
8856{"mtfsf", XFL(63,711,0), XFL_MASK, POWER6|PPCA2|PPC476, PPCVLE, {FLM, FRB, XFL_L, W}},
8857{"mtfsf", XFL(63,711,0), XFL_MASK, COM, POWER6|PPCA2|PPC476|PPCEFS|PPCVLE, {FLM, FRB}},
8858{"mtfsf.", XFL(63,711,1), XFL_MASK, POWER6|PPCA2|PPC476, PPCVLE, {FLM, FRB, XFL_L, W}},
8859{"mtfsf.", XFL(63,711,1), XFL_MASK, COM, POWER6|PPCA2|PPC476|PPCEFS|PPCVLE, {FLM, FRB}},
252b5132 8860
3b646889
AM
8861{"xsmincqp", X(63,740), X_MASK, POWER10, PPCVLE, {VD, VA, VB}},
8862
73f07bff
AM
8863{"drdpq", XRC(63,770,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRBp}},
8864{"drdpq.", XRC(63,770,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRBp}},
702f0fb4 8865
73f07bff
AM
8866{"dcffixq", XRC(63,802,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRB}},
8867{"dcffixq.", XRC(63,802,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRB}},
702f0fb4 8868
14b57c7c
AM
8869{"xsabsqp", XVA(63,804,0), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
8870{"xsxexpqp", XVA(63,804,2), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
8871{"xsnabsqp", XVA(63,804,8), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
8872{"xsnegqp", XVA(63,804,16), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
8873{"xsxsigqp", XVA(63,804,18), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
8874{"xssqrtqp", XVARC(63,804,27,0), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
8875{"xssqrtqpo", XVARC(63,804,27,1), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
a680de9a 8876
14b57c7c
AM
8877{"fctid", XRC(63,814,0), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
8878{"fctid", XRC(63,814,0), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
8879{"fctid.", XRC(63,814,1), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
8880{"fctid.", XRC(63,814,1), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
252b5132 8881
14b57c7c
AM
8882{"fctidz", XRC(63,815,0), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
8883{"fctidz", XRC(63,815,0), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
8884{"fctidz.", XRC(63,815,1), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
8885{"fctidz.", XRC(63,815,1), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
252b5132 8886
73f07bff
AM
8887{"denbcdq", XRC(63,834,0), X_MASK|Q_MASK, POWER6, PPCVLE, {S, FRTp, FRBp}},
8888{"denbcdq.", XRC(63,834,1), X_MASK|Q_MASK, POWER6, PPCVLE, {S, FRTp, FRBp}},
702f0fb4 8889
c7d7aea2 8890{"xscvqpuqz", XVA(63,836,0), XVA_MASK, POWER10, PPCVLE, {VD, VB}},
14b57c7c
AM
8891{"xscvqpuwz", XVA(63,836,1), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
8892{"xscvudqp", XVA(63,836,2), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
c7d7aea2
AM
8893{"xscvuqqp", XVA(63,836,3), XVA_MASK, POWER10, PPCVLE, {VD, VB}},
8894{"xscvqpsqz", XVA(63,836,8), XVA_MASK, POWER10, PPCVLE, {VD, VB}},
14b57c7c
AM
8895{"xscvqpswz", XVA(63,836,9), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
8896{"xscvsdqp", XVA(63,836,10), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
c7d7aea2 8897{"xscvsqqp", XVA(63,836,11), XVA_MASK, POWER10, PPCVLE, {VD, VB}},
14b57c7c
AM
8898{"xscvqpudz", XVA(63,836,17), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
8899{"xscvqpdp", XVARC(63,836,20,0), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
8900{"xscvqpdpo", XVARC(63,836,20,1), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
8901{"xscvdpqp", XVA(63,836,22), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
8902{"xscvqpsdz", XVA(63,836,25), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
a680de9a 8903
14b57c7c 8904{"fmrgow", X(63,838), X_MASK, PPCVSX2, PPCVLE, {FRT, FRA, FRB}},
c0637f3a 8905
14b57c7c
AM
8906{"fcfid", XRC(63,846,0), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
8907{"fcfid", XRC(63,846,0), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
8908{"fcfid.", XRC(63,846,1), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
8909{"fcfid.", XRC(63,846,1), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
252b5132 8910
73f07bff
AM
8911{"diexq", XRC(63,866,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRA, FRBp}},
8912{"diexq.", XRC(63,866,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRA, FRBp}},
702f0fb4 8913
14b57c7c 8914{"xsiexpqp", X(63,868), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 8915
14b57c7c
AM
8916{"fctidu", XRC(63,942,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
8917{"fctidu.", XRC(63,942,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
066be9f7 8918
14b57c7c
AM
8919{"fctiduz", XRC(63,943,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
8920{"fctiduz.", XRC(63,943,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
066be9f7 8921
14b57c7c 8922{"fmrgew", X(63,966), X_MASK, PPCVSX2, PPCVLE, {FRT, FRA, FRB}},
c0637f3a 8923
14b57c7c
AM
8924{"fcfidu", XRC(63,974,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
8925{"fcfidu.", XRC(63,974,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
c7d7aea2
AM
8926
8927{"dcffixqq", XVA(63,994,0), XVA_MASK, POWER10, PPCVLE, {FRTp, VB}},
8928{"dctfixqq", XVA(63,994,1), XVA_MASK, POWER10, PPCVLE, {VD, FRBp}},
252b5132
RH
8929};
8930
2ceb7719 8931const unsigned int powerpc_num_opcodes =
252b5132
RH
8932 sizeof (powerpc_opcodes) / sizeof (powerpc_opcodes[0]);
8933\f
dd7efa79
PB
8934/* The opcode table for 8-byte prefix instructions.
8935
8936 The format of this opcode table is the same as the main opcode table. */
8937
8938const struct powerpc_opcode prefix_opcodes[] = {
7c1f4227 8939{"pnop", PMRR, PREFIX_MASK, POWER10, 0, {0}},
1ff6a3b8 8940{"pli", PMLS|OP(14), P_DRAPCREL_MASK, POWER10, EXT, {RT, SI34}},
7c1f4227 8941{"paddi", PMLS|OP(14), P_D_MASK, POWER10, 0, {RT, RA0, SI34, PCREL0}},
1ff6a3b8
AM
8942{"psubi", PMLS|OP(14), P_D_MASK, POWER10, EXT, {RT, RA0, NSI34, PCREL0}},
8943{"pla", PMLS|OP(14), P_D_MASK, POWER10, EXT, {RT, D34, PRA0, PCREL}},
6edbfd3b
AM
8944{"xxsplti32dx", P8RR|VSOP(32,0), P_VSI_MASK, POWER10, 0, {XTS, IX, IMM32}},
8945{"xxspltidp", P8RR|VSOP(32,2), P_VS_MASK, POWER10, 0, {XTS, IMM32}},
8946{"xxspltiw", P8RR|VSOP(32,3), P_VS_MASK, POWER10, 0, {XTS, IMM32}},
7c1f4227 8947{"plwz", PMLS|OP(32), P_D_MASK, POWER10, 0, {RT, D34, PRA0, PCREL}},
6edbfd3b
AM
8948{"xxblendvb", P8RR|XX4(33,0), P_XX4_MASK, POWER10, 0, {XT6, XA6, XB6, XC6}},
8949{"xxblendvh", P8RR|XX4(33,1), P_XX4_MASK, POWER10, 0, {XT6, XA6, XB6, XC6}},
8950{"xxblendvw", P8RR|XX4(33,2), P_XX4_MASK, POWER10, 0, {XT6, XA6, XB6, XC6}},
8951{"xxblendvd", P8RR|XX4(33,3), P_XX4_MASK, POWER10, 0, {XT6, XA6, XB6, XC6}},
8952{"xxpermx", P8RR|XX4(34,0), P_UXX4_MASK, POWER10, 0, {XT6, XA6, XB6, XC6, UIM3}},
ec40e91c 8953{"xxeval", P8RR|XX4(34,1), P_U8XX4_MASK, POWER10, 0, {XT6, XA6, XB6, XC6, UIM8}},
7c1f4227
AM
8954{"plbz", PMLS|OP(34), P_D_MASK, POWER10, 0, {RT, D34, PRA0, PCREL}},
8955{"pstw", PMLS|OP(36), P_D_MASK, POWER10, 0, {RS, D34, PRA0, PCREL}},
8956{"pstb", PMLS|OP(38), P_D_MASK, POWER10, 0, {RS, D34, PRA0, PCREL}},
8957{"plhz", PMLS|OP(40), P_D_MASK, POWER10, 0, {RT, D34, PRA0, PCREL}},
8958{"plwa", P8LS|OP(41), P_D_MASK, POWER10, 0, {RT, D34, PRA0, PCREL}},
8959{"plxsd", P8LS|OP(42), P_D_MASK, POWER10, 0, {VD, D34, PRA0, PCREL}},
8960{"plha", PMLS|OP(42), P_D_MASK, POWER10, 0, {RT, D34, PRA0, PCREL}},
8961{"plxssp", P8LS|OP(43), P_D_MASK, POWER10, 0, {VD, D34, PRA0, PCREL}},
8962{"psth", PMLS|OP(44), P_D_MASK, POWER10, 0, {RS, D34, PRA0, PCREL}},
8963{"pstxsd", P8LS|OP(46), P_D_MASK, POWER10, 0, {VS, D34, PRA0, PCREL}},
8964{"pstxssp", P8LS|OP(47), P_D_MASK, POWER10, 0, {VS, D34, PRA0, PCREL}},
8965{"plfs", PMLS|OP(48), P_D_MASK, POWER10, 0, {FRT, D34, PRA0, PCREL}},
8966{"plxv", P8LS|OP(50), P_D_MASK&~OP(1), POWER10, 0, {XTOP, D34, PRA0, PCREL}},
8967{"plfd", PMLS|OP(50), P_D_MASK, POWER10, 0, {FRT, D34, PRA0, PCREL}},
8968{"pstfs", PMLS|OP(52), P_D_MASK, POWER10, 0, {FRS, D34, PRA0, PCREL}},
8969{"pstxv", P8LS|OP(54), P_D_MASK&~OP(1), POWER10, 0, {XTOP, D34, PRA0, PCREL}},
8970{"pstfd", PMLS|OP(54), P_D_MASK, POWER10, 0, {FRS, D34, PRA0, PCREL}},
8971{"plq", P8LS|OP(56), P_D_MASK, POWER10, 0, {RTQ, D34, PRAQ, PCREL}},
8972{"pld", P8LS|OP(57), P_D_MASK, POWER10, 0, {RT, D34, PRA0, PCREL}},
94ba9882 8973{"plxvp", P8LS|OP(58), P_D_MASK, POWER10, 0, {XTP, D34, PRA0, PCREL}},
aa3c112f
AM
8974{"pmxvi8ger4pp", PMMIRR|XX3(59,2), P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
8975{"pmxvi8ger4", PMMIRR|XX3(59,3), P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
8976{"pmxvf16ger2pp", PMMIRR|XX3(59,18), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
8977{"pmxvf16ger2", PMMIRR|XX3(59,19), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
8978{"pmxvf32gerpp", PMMIRR|XX3(59,26), P_GER_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
8979{"pmxvf32ger", PMMIRR|XX3(59,27), P_GER_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
8980{"pmxvi4ger8pp", PMMIRR|XX3(59,34), P_GER8_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK8}},
8981{"pmxvi4ger8", PMMIRR|XX3(59,35), P_GER8_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK8}},
8982{"pmxvi16ger2spp",PMMIRR|XX3(59,42), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
8983{"pmxvi16ger2s", PMMIRR|XX3(59,43), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
8984{"pmxvbf16ger2pp",PMMIRR|XX3(59,50), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
8985{"pmxvbf16ger2", PMMIRR|XX3(59,51), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
8986{"pmxvf64gerpp", PMMIRR|XX3(59,58), P_GER64_MASK, POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
8987{"pmxvf64ger", PMMIRR|XX3(59,59), P_GER64_MASK, POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
8988{"pmxvi16ger2", PMMIRR|XX3(59,75), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
8989{"pmxvf16ger2np", PMMIRR|XX3(59,82), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
8990{"pmxvf32gernp", PMMIRR|XX3(59,90), P_GER_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
8991{"pmxvi8ger4spp", PMMIRR|XX3(59,99), P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
8992{"pmxvi16ger2pp", PMMIRR|XX3(59,107), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
8993{"pmxvbf16ger2np",PMMIRR|XX3(59,114), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
8994{"pmxvf64gernp", PMMIRR|XX3(59,122), P_GER64_MASK, POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
8995{"pmxvf16ger2pn", PMMIRR|XX3(59,146), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
8996{"pmxvf32gerpn", PMMIRR|XX3(59,154), P_GER_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
8997{"pmxvbf16ger2pn",PMMIRR|XX3(59,178), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
8998{"pmxvf64gerpn", PMMIRR|XX3(59,186), P_GER64_MASK, POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
8999{"pmxvf16ger2nn", PMMIRR|XX3(59,210), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9000{"pmxvf32gernn", PMMIRR|XX3(59,218), P_GER_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
9001{"pmxvbf16ger2nn",PMMIRR|XX3(59,242), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9002{"pmxvf64gernn", PMMIRR|XX3(59,250), P_GER64_MASK, POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
7c1f4227
AM
9003{"pstq", P8LS|OP(60), P_D_MASK, POWER10, 0, {RSQ, D34, PRA0, PCREL}},
9004{"pstd", P8LS|OP(61), P_D_MASK, POWER10, 0, {RS, D34, PRA0, PCREL}},
94ba9882 9005{"pstxvp", P8LS|OP(62), P_D_MASK, POWER10, 0, {XTP, D34, PRA0, PCREL}},
dd7efa79
PB
9006};
9007
9008const unsigned int prefix_num_opcodes =
9009 sizeof (prefix_opcodes) / sizeof (prefix_opcodes[0]);
9010\f
b9c361e0
JL
9011/* The VLE opcode table.
9012
9013 The format of this opcode table is the same as the main opcode table. */
9014
9015const struct powerpc_opcode vle_opcodes[] = {
14b57c7c
AM
9016{"se_illegal", C(0), C_MASK, PPCVLE, 0, {}},
9017{"se_isync", C(1), C_MASK, PPCVLE, 0, {}},
9018{"se_sc", C(2), C_MASK, PPCVLE, 0, {}},
9019{"se_blr", C_LK(2,0), C_LK_MASK, PPCVLE, 0, {}},
9020{"se_blrl", C_LK(2,1), C_LK_MASK, PPCVLE, 0, {}},
9021{"se_bctr", C_LK(3,0), C_LK_MASK, PPCVLE, 0, {}},
9022{"se_bctrl", C_LK(3,1), C_LK_MASK, PPCVLE, 0, {}},
9023{"se_rfi", C(8), C_MASK, PPCVLE, 0, {}},
9024{"se_rfci", C(9), C_MASK, PPCVLE, 0, {}},
9025{"se_rfdi", C(10), C_MASK, PPCVLE, 0, {}},
9026{"se_rfmci", C(11), C_MASK, PPCRFMCI|PPCVLE, 0, {}},
a8cc8a54 9027{"se_rfgi", C(12), C_MASK, PPCVLE, 0, {}},
14b57c7c
AM
9028{"se_not", SE_R(0,2), SE_R_MASK, PPCVLE, 0, {RX}},
9029{"se_neg", SE_R(0,3), SE_R_MASK, PPCVLE, 0, {RX}},
9030{"se_mflr", SE_R(0,8), SE_R_MASK, PPCVLE, 0, {RX}},
9031{"se_mtlr", SE_R(0,9), SE_R_MASK, PPCVLE, 0, {RX}},
9032{"se_mfctr", SE_R(0,10), SE_R_MASK, PPCVLE, 0, {RX}},
9033{"se_mtctr", SE_R(0,11), SE_R_MASK, PPCVLE, 0, {RX}},
9034{"se_extzb", SE_R(0,12), SE_R_MASK, PPCVLE, 0, {RX}},
9035{"se_extsb", SE_R(0,13), SE_R_MASK, PPCVLE, 0, {RX}},
9036{"se_extzh", SE_R(0,14), SE_R_MASK, PPCVLE, 0, {RX}},
9037{"se_extsh", SE_R(0,15), SE_R_MASK, PPCVLE, 0, {RX}},
9038{"se_mr", SE_RR(0,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
9039{"se_mtar", SE_RR(0,2), SE_RR_MASK, PPCVLE, 0, {ARX, RY}},
9040{"se_mfar", SE_RR(0,3), SE_RR_MASK, PPCVLE, 0, {RX, ARY}},
9041{"se_add", SE_RR(1,0), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
9042{"se_mullw", SE_RR(1,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
9043{"se_sub", SE_RR(1,2), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
9044{"se_subf", SE_RR(1,3), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
9045{"se_cmp", SE_RR(3,0), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
9046{"se_cmpl", SE_RR(3,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
9047{"se_cmph", SE_RR(3,2), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
9048{"se_cmphl", SE_RR(3,3), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
9049
e3c2f928
AF
9050/* by major opcode */
9051{"zvaddih", VX(4, 0x200), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM}},
9052{"zvsubifh", VX(4, 0x201), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM}},
9053{"zvaddh", VX(4, 0x204), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9054{"zvsubfh", VX(4, 0x205), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9055{"zvaddsubfh", VX(4, 0x206), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9056{"zvsubfaddh", VX(4, 0x207), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9057{"zvaddhx", VX(4, 0x20C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9058{"zvsubfhx", VX(4, 0x20D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9059{"zvaddsubfhx", VX(4, 0x20E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9060{"zvsubfaddhx", VX(4, 0x20F), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9061{"zaddwus", VX(4, 0x210), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9062{"zsubfwus", VX(4, 0x211), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9063{"zaddwss", VX(4, 0x212), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9064{"zsubfwss", VX(4, 0x213), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9065{"zvaddhus", VX(4, 0x214), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9066{"zvsubfhus", VX(4, 0x215), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9067{"zvaddhss", VX(4, 0x216), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9068{"zvsubfhss", VX(4, 0x217), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9069{"zvaddsubfhss", VX(4, 0x21A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9070{"zvsubfaddhss", VX(4, 0x21B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9071{"zvaddhxss", VX(4, 0x21C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9072{"zvsubfhxss", VX(4, 0x21D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9073{"zvaddsubfhxss", VX(4, 0x21E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9074{"zvsubfaddhxss", VX(4, 0x21F), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9075{"zaddheuw", VX(4, 0x220), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9076{"zsubfheuw", VX(4, 0x221), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9077{"zaddhesw", VX(4, 0x222), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9078{"zsubfhesw", VX(4, 0x223), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9079{"zaddhouw", VX(4, 0x224), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9080{"zsubfhouw", VX(4, 0x225), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9081{"zaddhosw", VX(4, 0x226), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9082{"zsubfhosw", VX(4, 0x227), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9083{"zvmergehih", VX(4, 0x22C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9084{"zvmergeloh", VX(4, 0x22D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9085{"zvmergehiloh", VX(4, 0x22E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9086{"zvmergelohih", VX(4, 0x22F), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9087{"zvcmpgthu", VX(4, 0x230), VX_MASK, PPCLSP, 0, {CRFD, RA, RB}},
9088{"zvcmpgths", VX(4, 0x230), VX_MASK, PPCLSP, 0, {CRFD, RA, RB}},
9089{"zvcmplthu", VX(4, 0x231), VX_MASK, PPCLSP, 0, {CRFD, RA, RB}},
9090{"zvcmplths", VX(4, 0x231), VX_MASK, PPCLSP, 0, {CRFD, RA, RB}},
9091{"zvcmpeqh", VX(4, 0x232), VX_MASK, PPCLSP, 0, {CRFD, RA, RB}},
9092{"zpkswgshfrs", VX(4, 0x238), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9093{"zpkswgswfrs", VX(4, 0x239), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9094{"zvpkshgwshfrs", VX(4, 0x23A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9095{"zvpkswshfrs", VX(4, 0x23B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9096{"zvpkswuhs", VX(4, 0x23C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9097{"zvpkswshs", VX(4, 0x23D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9098{"zvpkuwuhs", VX(4, 0x23E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9099{"zvsplatih", VX_LSP(4, 0x23F), VX_LSP_MASK, PPCLSP, 0, {RD, SIMM}},
9100{"zvsplatfih", VX_LSP(4, 0xA3F), VX_LSP_MASK, PPCLSP, 0, {RD, SIMM}},
9101{"zcntlsw", VX_LSP(4, 0x2A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
9102{"zvcntlzh", VX_LSP(4, 0x323F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
9103{"zvcntlsh", VX_LSP(4, 0x3A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
9104{"znegws", VX_LSP(4, 0x4A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
9105{"zvnegh", VX_LSP(4, 0x523F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
9106{"zvneghs", VX_LSP(4, 0x5A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
9107{"zvnegho", VX_LSP(4, 0x623F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
9108{"zvneghos", VX_LSP(4, 0x6A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
9109{"zrndwh", VX_LSP(4, 0x823F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
9110{"zrndwhss", VX_LSP(4, 0x8A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
9111{"zvabsh", VX_LSP(4, 0xA23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
9112{"zvabshs", VX_LSP(4, 0xAA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
9113{"zabsw", VX_LSP(4, 0xB23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
9114{"zabsws", VX_LSP(4, 0xBA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
9115{"zsatswuw", VX_LSP(4, 0xC23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
9116{"zsatuwsw", VX_LSP(4, 0xCA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
9117{"zsatswuh", VX_LSP(4, 0xD23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
9118{"zsatswsh", VX_LSP(4, 0xDA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
9119{"zvsatshuh", VX_LSP(4, 0xE23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
9120{"zvsatuhsh", VX_LSP(4, 0xEA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
9121{"zsatuwuh", VX_LSP(4, 0xF23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
9122{"zsatuwsh", VX_LSP(4, 0xFA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
9123{"zsatsduw", VX(4, 0x260), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9124{"zsatsdsw", VX(4, 0x261), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9125{"zsatuduw", VX(4, 0x262), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9126{"zvselh", VX(4, 0x264), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9127{"zxtrw", VX(4, 0x264), VX_LSP_OFF_MASK, PPCLSP, 0, {RD, RA, RB, VX_OFF}},
9128{"zbrminc", VX(4, 0x268), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9129{"zcircinc", VX(4, 0x269), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9130{"zdivwsf", VX(4, 0x26B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9131{"zvsrhu", VX(4, 0x270), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9132{"zvsrhs", VX(4, 0x271), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9133{"zvsrhiu", VX(4, 0x272), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
9134{"zvsrhis", VX(4, 0x273), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
9135{"zvslh", VX(4, 0x274), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9136{"zvrlh", VX(4, 0x275), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9137{"zvslhi", VX(4, 0x276), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
9138{"zvrlhi", VX(4, 0x277), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
9139{"zvslhus", VX(4, 0x278), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9140{"zvslhss", VX(4, 0x279), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9141{"zvslhius", VX(4, 0x27A), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
9142{"zvslhiss", VX(4, 0x27B), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
9143{"zslwus", VX(4, 0x27C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9144{"zslwss", VX(4, 0x27D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9145{"zslwius", VX(4, 0x27E), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM}},
9146{"zslwiss", VX(4, 0x27F), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM}},
9147{"zaddwgui", VX(4, 0x460), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9148{"zsubfwgui", VX(4, 0x461), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9149{"zaddd", VX(4, 0x462), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9150{"zsubfd", VX(4, 0x463), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9151{"zvaddsubfw", VX(4, 0x464), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9152{"zvsubfaddw", VX(4, 0x465), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9153{"zvaddw", VX(4, 0x466), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9154{"zvsubfw", VX(4, 0x467), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9155{"zaddwgsi", VX(4, 0x468), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9156{"zsubfwgsi", VX(4, 0x469), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9157{"zadddss", VX(4, 0x46A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9158{"zsubfdss", VX(4, 0x46B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9159{"zvaddsubfwss", VX(4, 0x46C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9160{"zvsubfaddwss", VX(4, 0x46D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9161{"zvaddwss", VX(4, 0x46E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9162{"zvsubfwss", VX(4, 0x46F), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9163{"zaddwgsf", VX(4, 0x470), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9164{"zsubfwgsf", VX(4, 0x471), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9165{"zadddus", VX(4, 0x472), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9166{"zsubfdus", VX(4, 0x473), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9167{"zvaddwus", VX(4, 0x476), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9168{"zvsubfwus", VX(4, 0x477), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9169{"zvunpkhgwsf", VX_LSP(4, 0x478), VX_LSP_MASK, PPCLSP, 0, {RD_EVEN, RA}},
9170{"zvunpkhsf", VX_LSP(4, 0xC78), VX_LSP_MASK, PPCLSP, 0, {RD_EVEN, RA}},
9171{"zvunpkhui", VX_LSP(4, 0x1478), VX_LSP_MASK, PPCLSP, 0, {RD_EVEN, RA}},
9172{"zvunpkhsi", VX_LSP(4, 0x1C78), VX_LSP_MASK, PPCLSP, 0, {RD_EVEN, RA}},
9173{"zunpkwgsf", VX_LSP(4, 0x2478), VX_LSP_MASK, PPCLSP, 0, {RD_EVEN, RA}},
9174{"zvdotphgwasmf", VX(4, 0x488), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9175{"zvdotphgwasmfr", VX(4, 0x489), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9176{"zvdotphgwasmfaa", VX(4, 0x48A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9177{"zvdotphgwasmfraa", VX(4, 0x48B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9178{"zvdotphgwasmfan", VX(4, 0x48C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9179{"zvdotphgwasmfran", VX(4, 0x48D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9180{"zvmhulgwsmf", VX(4, 0x490), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9181{"zvmhulgwsmfr", VX(4, 0x491), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9182{"zvmhulgwsmfaa", VX(4, 0x492), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9183{"zvmhulgwsmfraa", VX(4, 0x493), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9184{"zvmhulgwsmfan", VX(4, 0x494), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9185{"zvmhulgwsmfran", VX(4, 0x495), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9186{"zvmhulgwsmfanp", VX(4, 0x496), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9187{"zvmhulgwsmfranp", VX(4, 0x497), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9188{"zmhegwsmf", VX(4, 0x498), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9189{"zmhegwsmfr", VX(4, 0x499), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9190{"zmhegwsmfaa", VX(4, 0x49A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9191{"zmhegwsmfraa", VX(4, 0x49B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9192{"zmhegwsmfan", VX(4, 0x49C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9193{"zmhegwsmfran", VX(4, 0x49D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9194{"zvdotphxgwasmf", VX(4, 0x4A8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9195{"zvdotphxgwasmfr", VX(4, 0x4A9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9196{"zvdotphxgwasmfaa", VX(4, 0x4AA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9197{"zvdotphxgwasmfraa", VX(4, 0x4AB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9198{"zvdotphxgwasmfan", VX(4, 0x4AC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9199{"zvdotphxgwasmfran", VX(4, 0x4AD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9200{"zvmhllgwsmf", VX(4, 0x4B0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9201{"zvmhllgwsmfr", VX(4, 0x4B1), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9202{"zvmhllgwsmfaa", VX(4, 0x4B2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9203{"zvmhllgwsmfraa", VX(4, 0x4B3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9204{"zvmhllgwsmfan", VX(4, 0x4B4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9205{"zvmhllgwsmfran", VX(4, 0x4B5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9206{"zvmhllgwsmfanp", VX(4, 0x4B6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9207{"zvmhllgwsmfranp", VX(4, 0x4B7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9208{"zmheogwsmf", VX(4, 0x4B8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9209{"zmheogwsmfr", VX(4, 0x4B9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9210{"zmheogwsmfaa", VX(4, 0x4BA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9211{"zmheogwsmfraa", VX(4, 0x4BB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9212{"zmheogwsmfan", VX(4, 0x4BC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9213{"zmheogwsmfran", VX(4, 0x4BD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9214{"zvdotphgwssmf", VX(4, 0x4C8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9215{"zvdotphgwssmfr", VX(4, 0x4C9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9216{"zvdotphgwssmfaa", VX(4, 0x4CA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9217{"zvdotphgwssmfraa", VX(4, 0x4CB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9218{"zvdotphgwssmfan", VX(4, 0x4CC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9219{"zvdotphgwssmfran", VX(4, 0x4CD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9220{"zvmhuugwsmf", VX(4, 0x4D0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9221{"zvmhuugwsmfr", VX(4, 0x4D1), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9222{"zvmhuugwsmfaa", VX(4, 0x4D2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9223{"zvmhuugwsmfraa", VX(4, 0x4D3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9224{"zvmhuugwsmfan", VX(4, 0x4D4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9225{"zvmhuugwsmfran", VX(4, 0x4D5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9226{"zvmhuugwsmfanp", VX(4, 0x4D6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9227{"zvmhuugwsmfranp", VX(4, 0x4D7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9228{"zmhogwsmf", VX(4, 0x4D8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9229{"zmhogwsmfr", VX(4, 0x4D9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9230{"zmhogwsmfaa", VX(4, 0x4DA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9231{"zmhogwsmfraa", VX(4, 0x4DB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9232{"zmhogwsmfan", VX(4, 0x4DC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9233{"zmhogwsmfran", VX(4, 0x4DD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9234{"zvmhxlgwsmf", VX(4, 0x4F0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9235{"zvmhxlgwsmfr", VX(4, 0x4F1), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9236{"zvmhxlgwsmfaa", VX(4, 0x4F2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9237{"zvmhxlgwsmfraa", VX(4, 0x4F3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9238{"zvmhxlgwsmfan", VX(4, 0x4F4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9239{"zvmhxlgwsmfran", VX(4, 0x4F5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9240{"zvmhxlgwsmfanp", VX(4, 0x4F6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9241{"zvmhxlgwsmfranp", VX(4, 0x4F7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9242{"zmhegui", VX(4, 0x500), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9243{"zvdotphgaui", VX(4, 0x501), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9244{"zmheguiaa", VX(4, 0x502), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9245{"zvdotphgauiaa", VX(4, 0x503), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9246{"zmheguian", VX(4, 0x504), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9247{"zvdotphgauian", VX(4, 0x505), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9248{"zmhegsi", VX(4, 0x508), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9249{"zvdotphgasi", VX(4, 0x509), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9250{"zmhegsiaa", VX(4, 0x50A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9251{"zvdotphgasiaa", VX(4, 0x50B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9252{"zmhegsian", VX(4, 0x50C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9253{"zvdotphgasian", VX(4, 0x50D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9254{"zmhegsui", VX(4, 0x510), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9255{"zvdotphgasui", VX(4, 0x511), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9256{"zmhegsuiaa", VX(4, 0x512), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9257{"zvdotphgasuiaa", VX(4, 0x513), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9258{"zmhegsuian", VX(4, 0x514), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9259{"zvdotphgasuian", VX(4, 0x515), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9260{"zmhegsmf", VX(4, 0x518), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9261{"zvdotphgasmf", VX(4, 0x519), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9262{"zmhegsmfaa", VX(4, 0x51A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9263{"zvdotphgasmfaa", VX(4, 0x51B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9264{"zmhegsmfan", VX(4, 0x51C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9265{"zvdotphgasmfan", VX(4, 0x51D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9266{"zmheogui", VX(4, 0x520), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9267{"zvdotphxgaui", VX(4, 0x521), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9268{"zmheoguiaa", VX(4, 0x522), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9269{"zvdotphxgauiaa", VX(4, 0x523), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9270{"zmheoguian", VX(4, 0x524), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9271{"zvdotphxgauian", VX(4, 0x525), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9272{"zmheogsi", VX(4, 0x528), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9273{"zvdotphxgasi", VX(4, 0x529), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9274{"zmheogsiaa", VX(4, 0x52A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9275{"zvdotphxgasiaa", VX(4, 0x52B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9276{"zmheogsian", VX(4, 0x52C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9277{"zvdotphxgasian", VX(4, 0x52D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9278{"zmheogsui", VX(4, 0x530), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9279{"zvdotphxgasui", VX(4, 0x531), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9280{"zmheogsuiaa", VX(4, 0x532), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9281{"zvdotphxgasuiaa", VX(4, 0x533), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9282{"zmheogsuian", VX(4, 0x534), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9283{"zvdotphxgasuian", VX(4, 0x535), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9284{"zmheogsmf", VX(4, 0x538), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9285{"zvdotphxgasmf", VX(4, 0x539), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9286{"zmheogsmfaa", VX(4, 0x53A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9287{"zvdotphxgasmfaa", VX(4, 0x53B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9288{"zmheogsmfan", VX(4, 0x53C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9289{"zvdotphxgasmfan", VX(4, 0x53D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9290{"zmhogui", VX(4, 0x540), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9291{"zvdotphgsui", VX(4, 0x541), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9292{"zmhoguiaa", VX(4, 0x542), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9293{"zvdotphgsuiaa", VX(4, 0x543), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9294{"zmhoguian", VX(4, 0x544), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9295{"zvdotphgsuian", VX(4, 0x545), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9296{"zmhogsi", VX(4, 0x548), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9297{"zvdotphgssi", VX(4, 0x549), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9298{"zmhogsiaa", VX(4, 0x54A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9299{"zvdotphgssiaa", VX(4, 0x54B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9300{"zmhogsian", VX(4, 0x54C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9301{"zvdotphgssian", VX(4, 0x54D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9302{"zmhogsui", VX(4, 0x550), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9303{"zvdotphgssui", VX(4, 0x551), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9304{"zmhogsuiaa", VX(4, 0x552), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9305{"zvdotphgssuiaa", VX(4, 0x553), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9306{"zmhogsuian", VX(4, 0x554), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9307{"zvdotphgssuian", VX(4, 0x555), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9308{"zmhogsmf", VX(4, 0x558), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9309{"zvdotphgssmf", VX(4, 0x559), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9310{"zmhogsmfaa", VX(4, 0x55A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9311{"zvdotphgssmfaa", VX(4, 0x55B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9312{"zmhogsmfan", VX(4, 0x55C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9313{"zvdotphgssmfan", VX(4, 0x55D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9314{"zmwgui", VX(4, 0x560), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9315{"zmwguiaa", VX(4, 0x562), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9316{"zmwguiaas", VX(4, 0x563), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9317{"zmwguian", VX(4, 0x564), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9318{"zmwguians", VX(4, 0x565), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9319{"zmwgsi", VX(4, 0x568), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9320{"zmwgsiaa", VX(4, 0x56A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9321{"zmwgsiaas", VX(4, 0x56B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9322{"zmwgsian", VX(4, 0x56C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9323{"zmwgsians", VX(4, 0x56D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9324{"zmwgsui", VX(4, 0x570), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9325{"zmwgsuiaa", VX(4, 0x572), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9326{"zmwgsuiaas", VX(4, 0x573), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9327{"zmwgsuian", VX(4, 0x574), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9328{"zmwgsuians", VX(4, 0x575), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9329{"zmwgsmf", VX(4, 0x578), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9330{"zmwgsmfr", VX(4, 0x579), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9331{"zmwgsmfaa", VX(4, 0x57A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9332{"zmwgsmfraa", VX(4, 0x57B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9333{"zmwgsmfan", VX(4, 0x57C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9334{"zmwgsmfran", VX(4, 0x57D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9335{"zvmhului", VX(4, 0x580), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9336{"zvmhuluiaa", VX(4, 0x582), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9337{"zvmhuluiaas", VX(4, 0x583), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9338{"zvmhuluian", VX(4, 0x584), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9339{"zvmhuluians", VX(4, 0x585), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9340{"zvmhuluianp", VX(4, 0x586), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9341{"zvmhuluianps", VX(4, 0x587), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9342{"zvmhulsi", VX(4, 0x588), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9343{"zvmhulsiaa", VX(4, 0x58A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9344{"zvmhulsiaas", VX(4, 0x58B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9345{"zvmhulsian", VX(4, 0x58C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9346{"zvmhulsians", VX(4, 0x58D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9347{"zvmhulsianp", VX(4, 0x58E), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9348{"zvmhulsianps", VX(4, 0x58F), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9349{"zvmhulsui", VX(4, 0x590), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9350{"zvmhulsuiaa", VX(4, 0x592), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9351{"zvmhulsuiaas", VX(4, 0x593), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9352{"zvmhulsuian", VX(4, 0x594), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9353{"zvmhulsuians", VX(4, 0x595), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9354{"zvmhulsuianp", VX(4, 0x596), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9355{"zvmhulsuianps", VX(4, 0x597), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9356{"zvmhulsf", VX(4, 0x598), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9357{"zvmhulsfr", VX(4, 0x599), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9358{"zvmhulsfaas", VX(4, 0x59A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9359{"zvmhulsfraas", VX(4, 0x59B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9360{"zvmhulsfans", VX(4, 0x59C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9361{"zvmhulsfrans", VX(4, 0x59D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9362{"zvmhulsfanps", VX(4, 0x59E), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9363{"zvmhulsfranps", VX(4, 0x59F), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9364{"zvmhllui", VX(4, 0x5A0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9365{"zvmhlluiaa", VX(4, 0x5A2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9366{"zvmhlluiaas", VX(4, 0x5A3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9367{"zvmhlluian", VX(4, 0x5A4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9368{"zvmhlluians", VX(4, 0x5A5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9369{"zvmhlluianp", VX(4, 0x5A6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9370{"zvmhlluianps", VX(4, 0x5A7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9371{"zvmhllsi", VX(4, 0x5A8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9372{"zvmhllsiaa", VX(4, 0x5AA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9373{"zvmhllsiaas", VX(4, 0x5AB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9374{"zvmhllsian", VX(4, 0x5AC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9375{"zvmhllsians", VX(4, 0x5AD), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9376{"zvmhllsianp", VX(4, 0x5AE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9377{"zvmhllsianps", VX(4, 0x5AF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9378{"zvmhllsui", VX(4, 0x5B0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9379{"zvmhllsuiaa", VX(4, 0x5B2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9380{"zvmhllsuiaas", VX(4, 0x5B3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9381{"zvmhllsuian", VX(4, 0x5B4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9382{"zvmhllsuians", VX(4, 0x5B5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9383{"zvmhllsuianp", VX(4, 0x5B6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9384{"zvmhllsuianps", VX(4, 0x5B7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9385{"zvmhllsf", VX(4, 0x5B8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9386{"zvmhllsfr", VX(4, 0x5B9), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9387{"zvmhllsfaas", VX(4, 0x5BA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9388{"zvmhllsfraas", VX(4, 0x5BB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9389{"zvmhllsfans", VX(4, 0x5BC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9390{"zvmhllsfrans", VX(4, 0x5BD), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9391{"zvmhllsfanps", VX(4, 0x5BE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9392{"zvmhllsfranps", VX(4, 0x5BF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9393{"zvmhuuui", VX(4, 0x5C0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9394{"zvmhuuuiaa", VX(4, 0x5C2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9395{"zvmhuuuiaas", VX(4, 0x5C3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9396{"zvmhuuuian", VX(4, 0x5C4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9397{"zvmhuuuians", VX(4, 0x5C5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9398{"zvmhuuuianp", VX(4, 0x5C6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9399{"zvmhuuuianps", VX(4, 0x5C7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9400{"zvmhuusi", VX(4, 0x5C8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9401{"zvmhuusiaa", VX(4, 0x5CA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9402{"zvmhuusiaas", VX(4, 0x5CB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9403{"zvmhuusian", VX(4, 0x5CC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9404{"zvmhuusians", VX(4, 0x5CD), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9405{"zvmhuusianp", VX(4, 0x5CE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9406{"zvmhuusianps", VX(4, 0x5CF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9407{"zvmhuusui", VX(4, 0x5D0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9408{"zvmhuusuiaa", VX(4, 0x5D2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9409{"zvmhuusuiaas", VX(4, 0x5D3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9410{"zvmhuusuian", VX(4, 0x5D4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9411{"zvmhuusuians", VX(4, 0x5D5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9412{"zvmhuusuianp", VX(4, 0x5D6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9413{"zvmhuusuianps", VX(4, 0x5D7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9414{"zvmhuusf", VX(4, 0x5D8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9415{"zvmhuusfr", VX(4, 0x5D9), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9416{"zvmhuusfaas", VX(4, 0x5DA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9417{"zvmhuusfraas", VX(4, 0x5DB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9418{"zvmhuusfans", VX(4, 0x5DC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9419{"zvmhuusfrans", VX(4, 0x5DD), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9420{"zvmhuusfanps", VX(4, 0x5DE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9421{"zvmhuusfranps", VX(4, 0x5DF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9422{"zvmhxlui", VX(4, 0x5E0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9423{"zvmhxluiaa", VX(4, 0x5E2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9424{"zvmhxluiaas", VX(4, 0x5E3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9425{"zvmhxluian", VX(4, 0x5E4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9426{"zvmhxluians", VX(4, 0x5E5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9427{"zvmhxluianp", VX(4, 0x5E6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9428{"zvmhxluianps", VX(4, 0x5E7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9429{"zvmhxlsi", VX(4, 0x5E8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9430{"zvmhxlsiaa", VX(4, 0x5EA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9431{"zvmhxlsiaas", VX(4, 0x5EB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9432{"zvmhxlsian", VX(4, 0x5EC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9433{"zvmhxlsians", VX(4, 0x5ED), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9434{"zvmhxlsianp", VX(4, 0x5EE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9435{"zvmhxlsianps", VX(4, 0x5EF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9436{"zvmhxlsui", VX(4, 0x5F0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9437{"zvmhxlsuiaa", VX(4, 0x5F2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9438{"zvmhxlsuiaas", VX(4, 0x5F3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9439{"zvmhxlsuian", VX(4, 0x5F4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9440{"zvmhxlsuians", VX(4, 0x5F5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9441{"zvmhxlsuianp", VX(4, 0x5F6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9442{"zvmhxlsuianps", VX(4, 0x5F7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9443{"zvmhxlsf", VX(4, 0x5F8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9444{"zvmhxlsfr", VX(4, 0x5F9), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9445{"zvmhxlsfaas", VX(4, 0x5FA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9446{"zvmhxlsfraas", VX(4, 0x5FB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9447{"zvmhxlsfans", VX(4, 0x5FC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9448{"zvmhxlsfrans", VX(4, 0x5FD), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9449{"zvmhxlsfanps", VX(4, 0x5FE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9450{"zvmhxlsfranps", VX(4, 0x5FF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9451{"zmheui", VX(4, 0x600), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9452{"zmheuiaa", VX(4, 0x602), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9453{"zmheuiaas", VX(4, 0x603), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9454{"zmheuian", VX(4, 0x604), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9455{"zmheuians", VX(4, 0x605), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9456{"zmhesi", VX(4, 0x608), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9457{"zmhesiaa", VX(4, 0x60A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9458{"zmhesiaas", VX(4, 0x60B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9459{"zmhesian", VX(4, 0x60C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9460{"zmhesians", VX(4, 0x60D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9461{"zmhesui", VX(4, 0x610), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9462{"zmhesuiaa", VX(4, 0x612), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9463{"zmhesuiaas", VX(4, 0x613), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9464{"zmhesuian", VX(4, 0x614), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9465{"zmhesuians", VX(4, 0x615), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9466{"zmhesf", VX(4, 0x618), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9467{"zmhesfr", VX(4, 0x619), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9468{"zmhesfaas", VX(4, 0x61A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9469{"zmhesfraas", VX(4, 0x61B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9470{"zmhesfans", VX(4, 0x61C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9471{"zmhesfrans", VX(4, 0x61D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9472{"zmheoui", VX(4, 0x620), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9473{"zmheouiaa", VX(4, 0x622), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9474{"zmheouiaas", VX(4, 0x623), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9475{"zmheouian", VX(4, 0x624), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9476{"zmheouians", VX(4, 0x625), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9477{"zmheosi", VX(4, 0x628), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9478{"zmheosiaa", VX(4, 0x62A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9479{"zmheosiaas", VX(4, 0x62B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9480{"zmheosian", VX(4, 0x62C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9481{"zmheosians", VX(4, 0x62D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9482{"zmheosui", VX(4, 0x630), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9483{"zmheosuiaa", VX(4, 0x632), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9484{"zmheosuiaas", VX(4, 0x633), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9485{"zmheosuian", VX(4, 0x634), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9486{"zmheosuians", VX(4, 0x635), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9487{"zmheosf", VX(4, 0x638), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9488{"zmheosfr", VX(4, 0x639), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9489{"zmheosfaas", VX(4, 0x63A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9490{"zmheosfraas", VX(4, 0x63B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9491{"zmheosfans", VX(4, 0x63C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9492{"zmheosfrans", VX(4, 0x63D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9493{"zmhoui", VX(4, 0x640), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9494{"zmhouiaa", VX(4, 0x642), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9495{"zmhouiaas", VX(4, 0x643), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9496{"zmhouian", VX(4, 0x644), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9497{"zmhouians", VX(4, 0x645), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9498{"zmhosi", VX(4, 0x648), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9499{"zmhosiaa", VX(4, 0x64A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9500{"zmhosiaas", VX(4, 0x64B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9501{"zmhosian", VX(4, 0x64C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9502{"zmhosians", VX(4, 0x64D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9503{"zmhosui", VX(4, 0x650), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9504{"zmhosuiaa", VX(4, 0x652), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9505{"zmhosuiaas", VX(4, 0x653), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9506{"zmhosuian", VX(4, 0x654), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9507{"zmhosuians", VX(4, 0x655), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9508{"zmhosf", VX(4, 0x658), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9509{"zmhosfr", VX(4, 0x659), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9510{"zmhosfaas", VX(4, 0x65A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9511{"zmhosfraas", VX(4, 0x65B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9512{"zmhosfans", VX(4, 0x65C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9513{"zmhosfrans", VX(4, 0x65D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9514{"zvmhuih", VX(4, 0x660), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9515{"zvmhuihs", VX(4, 0x661), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9516{"zvmhuiaah", VX(4, 0x662), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9517{"zvmhuiaahs", VX(4, 0x663), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9518{"zvmhuianh", VX(4, 0x664), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9519{"zvmhuianhs", VX(4, 0x665), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9520{"zvmhsihs", VX(4, 0x669), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9521{"zvmhsiaahs", VX(4, 0x66B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9522{"zvmhsianhs", VX(4, 0x66D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9523{"zvmhsuihs", VX(4, 0x671), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9524{"zvmhsuiaahs", VX(4, 0x673), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9525{"zvmhsuianhs", VX(4, 0x675), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9526{"zvmhsfh", VX(4, 0x678), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9527{"zvmhsfrh", VX(4, 0x679), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9528{"zvmhsfaahs", VX(4, 0x67A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9529{"zvmhsfraahs", VX(4, 0x67B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9530{"zvmhsfanhs", VX(4, 0x67C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9531{"zvmhsfranhs", VX(4, 0x67D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9532{"zvdotphaui", VX(4, 0x680), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9533{"zvdotphauis", VX(4, 0x681), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9534{"zvdotphauiaa", VX(4, 0x682), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9535{"zvdotphauiaas", VX(4, 0x683), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9536{"zvdotphauian", VX(4, 0x684), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9537{"zvdotphauians", VX(4, 0x685), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9538{"zvdotphasi", VX(4, 0x688), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9539{"zvdotphasis", VX(4, 0x689), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9540{"zvdotphasiaa", VX(4, 0x68A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9541{"zvdotphasiaas", VX(4, 0x68B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9542{"zvdotphasian", VX(4, 0x68C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9543{"zvdotphasians", VX(4, 0x68D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9544{"zvdotphasui", VX(4, 0x690), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9545{"zvdotphasuis", VX(4, 0x691), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9546{"zvdotphasuiaa", VX(4, 0x692), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9547{"zvdotphasuiaas", VX(4, 0x693), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9548{"zvdotphasuian", VX(4, 0x694), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9549{"zvdotphasuians", VX(4, 0x695), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9550{"zvdotphasfs", VX(4, 0x698), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9551{"zvdotphasfrs", VX(4, 0x699), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9552{"zvdotphasfaas", VX(4, 0x69A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9553{"zvdotphasfraas", VX(4, 0x69B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9554{"zvdotphasfans", VX(4, 0x69C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9555{"zvdotphasfrans", VX(4, 0x69D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9556{"zvdotphxaui", VX(4, 0x6A0), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9557{"zvdotphxauis", VX(4, 0x6A1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9558{"zvdotphxauiaa", VX(4, 0x6A2), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9559{"zvdotphxauiaas", VX(4, 0x6A3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9560{"zvdotphxauian", VX(4, 0x6A4), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9561{"zvdotphxauians", VX(4, 0x6A5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9562{"zvdotphxasi", VX(4, 0x6A8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9563{"zvdotphxasis", VX(4, 0x6A9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9564{"zvdotphxasiaa", VX(4, 0x6AA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9565{"zvdotphxasiaas", VX(4, 0x6AB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9566{"zvdotphxasian", VX(4, 0x6AC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9567{"zvdotphxasians", VX(4, 0x6AD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9568{"zvdotphxasui", VX(4, 0x6B0), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9569{"zvdotphxasuis", VX(4, 0x6B1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9570{"zvdotphxasuiaa", VX(4, 0x6B2), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9571{"zvdotphxasuiaas", VX(4, 0x6B3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9572{"zvdotphxasuian", VX(4, 0x6B4), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9573{"zvdotphxasuians", VX(4, 0x6B5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9574{"zvdotphxasfs", VX(4, 0x6B8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9575{"zvdotphxasfrs", VX(4, 0x6B9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9576{"zvdotphxasfaas", VX(4, 0x6BA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9577{"zvdotphxasfraas", VX(4, 0x6BB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9578{"zvdotphxasfans", VX(4, 0x6BC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9579{"zvdotphxasfrans", VX(4, 0x6BD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9580{"zvdotphsui", VX(4, 0x6C0), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9581{"zvdotphsuis", VX(4, 0x6C1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9582{"zvdotphsuiaa", VX(4, 0x6C2), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9583{"zvdotphsuiaas", VX(4, 0x6C3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9584{"zvdotphsuian", VX(4, 0x6C4), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9585{"zvdotphsuians", VX(4, 0x6C5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9586{"zvdotphssi", VX(4, 0x6C8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9587{"zvdotphssis", VX(4, 0x6C9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9588{"zvdotphssiaa", VX(4, 0x6CA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9589{"zvdotphssiaas", VX(4, 0x6CB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9590{"zvdotphssian", VX(4, 0x6CC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9591{"zvdotphssians", VX(4, 0x6CD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9592{"zvdotphssui", VX(4, 0x6D0), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9593{"zvdotphssuis", VX(4, 0x6D1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9594{"zvdotphssuiaa", VX(4, 0x6D2), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9595{"zvdotphssuiaas", VX(4, 0x6D3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9596{"zvdotphssuian", VX(4, 0x6D4), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9597{"zvdotphssuians", VX(4, 0x6D5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9598{"zvdotphssfs", VX(4, 0x6D8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9599{"zvdotphssfrs", VX(4, 0x6D9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9600{"zvdotphssfaas", VX(4, 0x6DA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9601{"zvdotphssfraas", VX(4, 0x6DB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9602{"zvdotphssfans", VX(4, 0x6DC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9603{"zvdotphssfrans", VX(4, 0x6DD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9604{"zmwluis", VX(4, 0x6E1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9605{"zmwluiaa", VX(4, 0x6E2), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9606{"zmwluiaas", VX(4, 0x6E3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9607{"zmwluian", VX(4, 0x6E4), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9608{"zmwluians", VX(4, 0x6E5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9609{"zmwlsis", VX(4, 0x6E9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9610{"zmwlsiaas", VX(4, 0x6EB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9611{"zmwlsians", VX(4, 0x6ED), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9612{"zmwlsuis", VX(4, 0x6F1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9613{"zmwlsuiaas", VX(4, 0x6F3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9614{"zmwlsuians", VX(4, 0x6F5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9615{"zmwsf", VX(4, 0x6F8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9616{"zmwsfr", VX(4, 0x6F9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9617{"zmwsfaas", VX(4, 0x6FA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9618{"zmwsfraas", VX(4, 0x6FB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9619{"zmwsfans", VX(4, 0x6FC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9620{"zmwsfrans", VX(4, 0x6FD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9621{"zlddx", VX(4, 0x300), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9622{"zldd", VX(4, 0x301), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8, RA}},
9623{"zldwx", VX(4, 0x302), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9624{"zldw", VX(4, 0x303), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8, RA}},
9625{"zldhx", VX(4, 0x304), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9626{"zldh", VX(4, 0x305), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8, RA}},
9627{"zlwgsfdx", VX(4, 0x308), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9628{"zlwgsfd", VX(4, 0x309), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
9629{"zlwwosdx", VX(4, 0x30A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9630{"zlwwosd", VX(4, 0x30B), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
9631{"zlwhsplatwdx", VX(4, 0x30C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9632{"zlwhsplatwd", VX(4, 0x30D), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
9633{"zlwhsplatdx", VX(4, 0x30E), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9634{"zlwhsplatd", VX(4, 0x30F), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
9635{"zlwhgwsfdx", VX(4, 0x310), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9636{"zlwhgwsfd", VX(4, 0x311), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
9637{"zlwhedx", VX(4, 0x312), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9638{"zlwhed", VX(4, 0x313), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
9639{"zlwhosdx", VX(4, 0x314), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9640{"zlwhosd", VX(4, 0x315), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
9641{"zlwhoudx", VX(4, 0x316), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9642{"zlwhoud", VX(4, 0x317), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
9643{"zlwhx", VX(4, 0x318), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9644{"zlwh", VX(4, 0x319), VX_MASK, PPCLSP, 0, {RD, EVUIMM_4, RA}},
9645{"zlwwx", VX(4, 0x31A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9646{"zlww", VX(4, 0x31B), VX_MASK, PPCLSP, 0, {RD, EVUIMM_4, RA}},
9647{"zlhgwsfx", VX(4, 0x31C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9648{"zlhgwsf", VX(4, 0x31D), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2, RA}},
9649{"zlhhsplatx", VX(4, 0x31E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9650{"zlhhsplat", VX(4, 0x31F), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2, RA}},
9651{"zstddx", VX(4, 0x320), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
9652{"zstdd", VX(4, 0x321), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_8, RA}},
9653{"zstdwx", VX(4, 0x322), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
9654{"zstdw", VX(4, 0x323), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_8, RA}},
9655{"zstdhx", VX(4, 0x324), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
9656{"zstdh", VX(4, 0x325), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_8, RA}},
9657{"zstwhedx", VX(4, 0x328), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
9658{"zstwhed", VX(4, 0x329), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_4, RA}},
9659{"zstwhodx", VX(4, 0x32A), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
9660{"zstwhod", VX(4, 0x32B), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_4, RA}},
9661{"zlhhex", VX(4, 0x330), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9662{"zlhhe", VX(4, 0x331), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2, RA}},
9663{"zlhhosx", VX(4, 0x332), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9664{"zlhhos", VX(4, 0x333), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2, RA}},
9665{"zlhhoux", VX(4, 0x334), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9666{"zlhhou", VX(4, 0x335), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2, RA}},
9667{"zsthex", VX(4, 0x338), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
9668{"zsthe", VX(4, 0x339), VX_MASK, PPCLSP, 0, {RS, EVUIMM_2, RA}},
9669{"zsthox", VX(4, 0x33A), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
9670{"zstho", VX(4, 0x33B), VX_MASK, PPCLSP, 0, {RS, EVUIMM_2, RA}},
9671{"zstwhx", VX(4, 0x33C), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
9672{"zstwh", VX(4, 0x33D), VX_MASK, PPCLSP, 0, {RS, EVUIMM_4, RA}},
9673{"zstwwx", VX(4, 0x33E), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
9674{"zstww", VX(4, 0x33F), VX_MASK, PPCLSP, 0, {RS, EVUIMM_4, RA}},
9675{"zlddmx", VX(4, 0x340), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9676{"zlddu", VX(4, 0x341), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8_EX0, RA}},
9677{"zldwmx", VX(4, 0x342), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9678{"zldwu", VX(4, 0x343), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8_EX0, RA}},
9679{"zldhmx", VX(4, 0x344), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9680{"zldhu", VX(4, 0x345), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8_EX0, RA}},
9681{"zlwgsfdmx", VX(4, 0x348), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9682{"zlwgsfdu", VX(4, 0x349), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
9683{"zlwwosdmx", VX(4, 0x34A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9684{"zlwwosdu", VX(4, 0x34B), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
9685{"zlwhsplatwdmx", VX(4, 0x34C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9686{"zlwhsplatwdu", VX(4, 0x34D), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
9687{"zlwhsplatdmx", VX(4, 0x34E), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9688{"zlwhsplatdu", VX(4, 0x34F), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
9689{"zlwhgwsfdmx", VX(4, 0x350), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9690{"zlwhgwsfdu", VX(4, 0x351), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
9691{"zlwhedmx", VX(4, 0x352), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9692{"zlwhedu", VX(4, 0x353), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
9693{"zlwhosdmx", VX(4, 0x354), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9694{"zlwhosdu", VX(4, 0x355), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
9695{"zlwhoudmx", VX(4, 0x356), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
9696{"zlwhoudu", VX(4, 0x357), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
9697{"zlwhmx", VX(4, 0x358), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9698{"zlwhu", VX(4, 0x359), VX_MASK, PPCLSP, 0, {RD, EVUIMM_4_EX0, RA}},
9699{"zlwwmx", VX(4, 0x35A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9700{"zlwwu", VX(4, 0x35B), VX_MASK, PPCLSP, 0, {RD, EVUIMM_4_EX0, RA}},
9701{"zlhgwsfmx", VX(4, 0x35C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9702{"zlhgwsfu", VX(4, 0x35D), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2_EX0, RA}},
9703{"zlhhsplatmx", VX(4, 0x35E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9704{"zlhhsplatu", VX(4, 0x35F), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2_EX0, RA}},
9705{"zstddmx", VX(4, 0x360), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
9706{"zstddu", VX(4, 0x361), VX_MASK, PPCLSP, 0, {RS, EVUIMM_8_EX0, RA}},
9707{"zstdwmx", VX(4, 0x362), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
9708{"zstdwu", VX(4, 0x363), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_8_EX0, RA}},
9709{"zstdhmx", VX(4, 0x364), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
9710{"zstdhu", VX(4, 0x365), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_8_EX0, RA}},
9711{"zstwhedmx", VX(4, 0x368), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
9712{"zstwhedu", VX(4, 0x369), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_4_EX0, RA}},
9713{"zstwhodmx", VX(4, 0x36A), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
9714{"zstwhodu", VX(4, 0x36B), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_4_EX0, RA}},
9715{"zlhhemx", VX(4, 0x370), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9716{"zlhheu", VX(4, 0x371), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2_EX0, RA}},
9717{"zlhhosmx", VX(4, 0x372), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9718{"zlhhosu", VX(4, 0x373), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2_EX0, RA}},
9719{"zlhhoumx", VX(4, 0x374), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
9720{"zlhhouu", VX(4, 0x375), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2_EX0, RA}},
9721{"zsthemx", VX(4, 0x378), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
9722{"zstheu", VX(4, 0x379), VX_MASK, PPCLSP, 0, {RS, EVUIMM_2_EX0, RA}},
9723{"zsthomx", VX(4, 0x37A), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
9724{"zsthou", VX(4, 0x37B), VX_MASK, PPCLSP, 0, {RS, EVUIMM_2_EX0, RA}},
9725{"zstwhmx", VX(4, 0x37C), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
9726{"zstwhu", VX(4, 0x37D), VX_MASK, PPCLSP, 0, {RS, EVUIMM_4_EX0, RA}},
9727{"zstwwmx", VX(4, 0x37E), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
9728{"zstwwu", VX(4, 0x37F), VX_MASK, PPCLSP, 0, {RS, EVUIMM_4_EX0, RA}},
9729
14b57c7c 9730{"e_cmpi", SCI8BF(6,0,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
dfdaec14 9731{"e_cmpwi", SCI8BF(6,0,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
14b57c7c 9732{"e_cmpli", SCI8BF(6,1,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
dfdaec14 9733{"e_cmplwi", SCI8BF(6,1,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
14b57c7c
AM
9734{"e_addi", SCI8(6,16), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
9735{"e_subi", SCI8(6,16), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8N}},
9736{"e_addi.", SCI8(6,17), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
9737{"e_addic", SCI8(6,18), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
1ff6a3b8 9738{"e_subic", SCI8(6,18), SCI8_MASK, PPCVLE, EXT, {RT, RA, SCLSCI8N}},
14b57c7c 9739{"e_addic.", SCI8(6,19), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
1ff6a3b8 9740{"e_subic.", SCI8(6,19), SCI8_MASK, PPCVLE, EXT, {RT, RA, SCLSCI8N}},
14b57c7c
AM
9741{"e_mulli", SCI8(6,20), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
9742{"e_subfic", SCI8(6,22), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
9743{"e_subfic.", SCI8(6,23), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
9744{"e_andi", SCI8(6,24), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
9745{"e_andi.", SCI8(6,25), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
1ff6a3b8 9746{"e_nop", SCI8(6,26), 0xffffffff, PPCVLE, EXT, {0}},
14b57c7c
AM
9747{"e_ori", SCI8(6,26), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
9748{"e_ori.", SCI8(6,27), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
9749{"e_xori", SCI8(6,28), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
9750{"e_xori.", SCI8(6,29), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
9751{"e_lbzu", OPVUP(6,0), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
9752{"e_lhau", OPVUP(6,3), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
9753{"e_lhzu", OPVUP(6,1), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
9754{"e_lmw", OPVUP(6,8), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
9755{"e_lwzu", OPVUP(6,2), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
9756{"e_stbu", OPVUP(6,4), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
9757{"e_sthu", OPVUP(6,5), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
9758{"e_stwu", OPVUP(6,6), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
9759{"e_stmw", OPVUP(6,9), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
d2e6c9a3 9760{"e_lmvgprw", OPVUPRT(6,16,0),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
dfdaec14
AJ
9761{"e_ldmvgprw", OPVUPRT(6,16,0),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
9762{"e_stmvgprw", OPVUPRT(6,17,0),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
d2e6c9a3 9763{"e_lmvsprw", OPVUPRT(6,16,1),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
dfdaec14
AJ
9764{"e_ldmvsprw", OPVUPRT(6,16,1),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
9765{"e_stmvsprw", OPVUPRT(6,17,1),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
d2e6c9a3 9766{"e_lmvsrrw", OPVUPRT(6,16,4),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
dfdaec14
AJ
9767{"e_ldmvsrrw", OPVUPRT(6,16,4),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
9768{"e_stmvsrrw", OPVUPRT(6,17,4),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
d2e6c9a3 9769{"e_lmvcsrrw", OPVUPRT(6,16,5),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
dfdaec14
AJ
9770{"e_ldmvcsrrw", OPVUPRT(6,16,5),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
9771{"e_stmvcsrrw", OPVUPRT(6,17,5),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
d2e6c9a3 9772{"e_lmvdsrrw", OPVUPRT(6,16,6),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
dfdaec14
AJ
9773{"e_ldmvdsrrw", OPVUPRT(6,16,6),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
9774{"e_stmvdsrrw", OPVUPRT(6,17,6),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
d2e6c9a3
AF
9775{"e_lmvmcsrrw", OPVUPRT(6,16,7),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
9776{"e_stmvmcsrrw", OPVUPRT(6,17,7),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
14b57c7c 9777{"e_add16i", OP(7), OP_MASK, PPCVLE, 0, {RT, RA, SI}},
1ff6a3b8
AM
9778{"e_la", OP(7), OP_MASK, PPCVLE, EXT, {RT, D, RA0}},
9779{"e_sub16i", OP(7), OP_MASK, PPCVLE, EXT, {RT, RA, NSI}},
14b57c7c
AM
9780
9781{"se_addi", SE_IM5(8,0), SE_IM5_MASK, PPCVLE, 0, {RX, OIMM5}},
9782{"se_cmpli", SE_IM5(8,1), SE_IM5_MASK, PPCVLE, 0, {RX, OIMM5}},
9783{"se_subi", SE_IM5(9,0), SE_IM5_MASK, PPCVLE, 0, {RX, OIMM5}},
9784{"se_subi.", SE_IM5(9,1), SE_IM5_MASK, PPCVLE, 0, {RX, OIMM5}},
9785{"se_cmpi", SE_IM5(10,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
9786{"se_bmaski", SE_IM5(11,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
9787{"se_andi", SE_IM5(11,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
9788
9789{"e_lbz", OP(12), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
9790{"e_stb", OP(13), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
9791{"e_lha", OP(14), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
9792
9793{"se_srw", SE_RR(16,0), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
9794{"se_sraw", SE_RR(16,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
9795{"se_slw", SE_RR(16,2), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
1ff6a3b8 9796{"se_nop", SE_RR(17,0), 0xffff, PPCVLE, EXT, {0}},
14b57c7c
AM
9797{"se_or", SE_RR(17,0), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
9798{"se_andc", SE_RR(17,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
9799{"se_and", SE_RR(17,2), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
9800{"se_and.", SE_RR(17,3), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
9801{"se_li", IM7(9), IM7_MASK, PPCVLE, 0, {RX, UI7}},
9802
9803{"e_lwz", OP(20), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
9804{"e_stw", OP(21), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
9805{"e_lhz", OP(22), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
9806{"e_sth", OP(23), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
9807
9808{"se_bclri", SE_IM5(24,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
9809{"se_bgeni", SE_IM5(24,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
9810{"se_bseti", SE_IM5(25,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
9811{"se_btsti", SE_IM5(25,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
9812{"se_srwi", SE_IM5(26,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
9813{"se_srawi", SE_IM5(26,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
9814{"se_slwi", SE_IM5(27,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
9815
9816{"e_lis", I16L(28,28), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}},
9817{"e_and2is.", I16L(28,29), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}},
9818{"e_or2is", I16L(28,26), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}},
9819{"e_and2i.", I16L(28,25), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}},
9820{"e_or2i", I16L(28,24), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}},
9821{"e_cmphl16i", IA16(28,23), IA16_MASK, PPCVLE, 0, {RA, VLEUIMM}},
9822{"e_cmph16i", IA16(28,22), IA16_MASK, PPCVLE, 0, {RA, VLESIMM}},
9823{"e_cmpl16i", I16A(28,21), I16A_MASK, PPCVLE, 0, {RA, VLEUIMM}},
14b57c7c
AM
9824{"e_mull2i", I16A(28,20), I16A_MASK, PPCVLE, 0, {RA, VLESIMM}},
9825{"e_cmp16i", IA16(28,19), IA16_MASK, PPCVLE, 0, {RA, VLESIMM}},
1ff6a3b8 9826{"e_sub2is", I16A(28,18), I16A_MASK, PPCVLE, EXT, {RA, VLENSIMM}},
14b57c7c 9827{"e_add2is", I16A(28,18), I16A_MASK, PPCVLE, 0, {RA, VLESIMM}},
1ff6a3b8 9828{"e_sub2i.", I16A(28,17), I16A_MASK, PPCVLE, EXT, {RA, VLENSIMM}},
14b57c7c
AM
9829{"e_add2i.", I16A(28,17), I16A_MASK, PPCVLE, 0, {RA, VLESIMM}},
9830{"e_li", LI20(28,0), LI20_MASK, PPCVLE, 0, {RT, IMM20}},
9831{"e_rlwimi", M(29,0), M_MASK, PPCVLE, 0, {RA, RS, SH, MB, ME}},
9832{"e_rlwinm", M(29,1), M_MASK, PPCVLE, 0, {RA, RT, SH, MBE, ME}},
9833{"e_b", BD24(30,0,0), BD24_MASK, PPCVLE, 0, {B24}},
9834{"e_bl", BD24(30,0,1), BD24_MASK, PPCVLE, 0, {B24}},
1ff6a3b8
AM
9835{"e_bdnz", EBD15(30,8,BO32DNZ,0), EBD15_MASK, PPCVLE, EXT, {B15}},
9836{"e_bdnzl", EBD15(30,8,BO32DNZ,1), EBD15_MASK, PPCVLE, EXT, {B15}},
9837{"e_bdz", EBD15(30,8,BO32DZ,0), EBD15_MASK, PPCVLE, EXT, {B15}},
9838{"e_bdzl", EBD15(30,8,BO32DZ,1), EBD15_MASK, PPCVLE, EXT, {B15}},
9839{"e_bge", EBD15BI(30,8,BO32F,CBLT,0), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
9840{"e_bgel", EBD15BI(30,8,BO32F,CBLT,1), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
9841{"e_bnl", EBD15BI(30,8,BO32F,CBLT,0), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
9842{"e_bnll", EBD15BI(30,8,BO32F,CBLT,1), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
9843{"e_blt", EBD15BI(30,8,BO32T,CBLT,0), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
9844{"e_bltl", EBD15BI(30,8,BO32T,CBLT,1), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
9845{"e_bgt", EBD15BI(30,8,BO32T,CBGT,0), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
9846{"e_bgtl", EBD15BI(30,8,BO32T,CBGT,1), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
9847{"e_ble", EBD15BI(30,8,BO32F,CBGT,0), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
9848{"e_blel", EBD15BI(30,8,BO32F,CBGT,1), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
9849{"e_bng", EBD15BI(30,8,BO32F,CBGT,0), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
9850{"e_bngl", EBD15BI(30,8,BO32F,CBGT,1), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
9851{"e_bne", EBD15BI(30,8,BO32F,CBEQ,0), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
9852{"e_bnel", EBD15BI(30,8,BO32F,CBEQ,1), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
9853{"e_beq", EBD15BI(30,8,BO32T,CBEQ,0), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
9854{"e_beql", EBD15BI(30,8,BO32T,CBEQ,1), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
9855{"e_bso", EBD15BI(30,8,BO32T,CBSO,0), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
9856{"e_bsol", EBD15BI(30,8,BO32T,CBSO,1), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
9857{"e_bun", EBD15BI(30,8,BO32T,CBSO,0), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
9858{"e_bunl", EBD15BI(30,8,BO32T,CBSO,1), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
9859{"e_bns", EBD15BI(30,8,BO32F,CBSO,0), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
9860{"e_bnsl", EBD15BI(30,8,BO32F,CBSO,1), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
9861{"e_bnu", EBD15BI(30,8,BO32F,CBSO,0), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
9862{"e_bnul", EBD15BI(30,8,BO32F,CBSO,1), EBD15BI_MASK, PPCVLE, EXT, {CRS,B15}},
14b57c7c
AM
9863{"e_bc", BD15(30,8,0), BD15_MASK, PPCVLE, 0, {BO32, BI32, B15}},
9864{"e_bcl", BD15(30,8,1), BD15_MASK, PPCVLE, 0, {BO32, BI32, B15}},
9865
1ff6a3b8
AM
9866{"e_bf", EBD15(30,8,BO32F,0), EBD15_MASK, PPCVLE, EXT, {BI32,B15}},
9867{"e_bfl", EBD15(30,8,BO32F,1), EBD15_MASK, PPCVLE, EXT, {BI32,B15}},
9868{"e_bt", EBD15(30,8,BO32T,0), EBD15_MASK, PPCVLE, EXT, {BI32,B15}},
9869{"e_btl", EBD15(30,8,BO32T,1), EBD15_MASK, PPCVLE, EXT, {BI32,B15}},
14b57c7c
AM
9870
9871{"e_cmph", X(31,14), X_MASK, PPCVLE, 0, {CRD, RA, RB}},
a8cc8a54 9872{"e_sc", X(31,36), XRTRA_MASK, PPCVLE, 0, {ELEV}},
14b57c7c
AM
9873{"e_cmphl", X(31,46), X_MASK, PPCVLE, 0, {CRD, RA, RB}},
9874{"e_crandc", XL(31,129), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
9875{"e_crnand", XL(31,225), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
1ff6a3b8 9876{"e_crnot", XL(31,33), XL_MASK, PPCVLE, EXT, {BT, BAB}},
14b57c7c 9877{"e_crnor", XL(31,33), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
1ff6a3b8 9878{"e_crclr", XL(31,193), XL_MASK, PPCVLE, EXT, {BTAB}},
14b57c7c
AM
9879{"e_crxor", XL(31,193), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
9880{"e_mcrf", XL(31,16), XL_MASK, PPCVLE, 0, {CRD, CR}},
9881{"e_slwi", EX(31,112), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
9882{"e_slwi.", EX(31,113), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
9883
9884{"e_crand", XL(31,257), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
9885
9886{"e_rlw", EX(31,560), EX_MASK, PPCVLE, 0, {RA, RS, RB}},
9887{"e_rlw.", EX(31,561), EX_MASK, PPCVLE, 0, {RA, RS, RB}},
9888
1ff6a3b8 9889{"e_crset", XL(31,289), XL_MASK, PPCVLE, EXT, {BTAB}},
14b57c7c
AM
9890{"e_creqv", XL(31,289), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
9891
9892{"e_rlwi", EX(31,624), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
9893{"e_rlwi.", EX(31,625), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
9894
9895{"e_crorc", XL(31,417), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
9896
1ff6a3b8 9897{"e_crmove", XL(31,449), XL_MASK, PPCVLE, EXT, {BT, BAB}},
14b57c7c
AM
9898{"e_cror", XL(31,449), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
9899
1ff6a3b8 9900{"mtmas1", XSPR(31,467,625), XSPR_MASK, PPCVLE, EXT, {RS}},
14b57c7c
AM
9901
9902{"e_srwi", EX(31,1136), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
9903{"e_srwi.", EX(31,1137), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
9904
9905{"se_lbz", SD4(8), SD4_MASK, PPCVLE, 0, {RZ, SE_SD, RX}},
9906
9907{"se_stb", SD4(9), SD4_MASK, PPCVLE, 0, {RZ, SE_SD, RX}},
9908
9909{"se_lhz", SD4(10), SD4_MASK, PPCVLE, 0, {RZ, SE_SDH, RX}},
9910
9911{"se_sth", SD4(11), SD4_MASK, PPCVLE, 0, {RZ, SE_SDH, RX}},
9912
9913{"se_lwz", SD4(12), SD4_MASK, PPCVLE, 0, {RZ, SE_SDW, RX}},
9914
9915{"se_stw", SD4(13), SD4_MASK, PPCVLE, 0, {RZ, SE_SDW, RX}},
9916
1ff6a3b8
AM
9917{"se_bge", EBD8IO(28,0,0), EBD8IO3_MASK, PPCVLE, EXT, {B8}},
9918{"se_bnl", EBD8IO(28,0,0), EBD8IO3_MASK, PPCVLE, EXT, {B8}},
9919{"se_ble", EBD8IO(28,0,1), EBD8IO3_MASK, PPCVLE, EXT, {B8}},
9920{"se_bng", EBD8IO(28,0,1), EBD8IO3_MASK, PPCVLE, EXT, {B8}},
9921{"se_bne", EBD8IO(28,0,2), EBD8IO3_MASK, PPCVLE, EXT, {B8}},
9922{"se_bns", EBD8IO(28,0,3), EBD8IO3_MASK, PPCVLE, EXT, {B8}},
9923{"se_bnu", EBD8IO(28,0,3), EBD8IO3_MASK, PPCVLE, EXT, {B8}},
9924{"se_bf", EBD8IO(28,0,0), EBD8IO2_MASK, PPCVLE, EXT, {BI16, B8}},
9925{"se_blt", EBD8IO(28,1,0), EBD8IO3_MASK, PPCVLE, EXT, {B8}},
9926{"se_bgt", EBD8IO(28,1,1), EBD8IO3_MASK, PPCVLE, EXT, {B8}},
9927{"se_beq", EBD8IO(28,1,2), EBD8IO3_MASK, PPCVLE, EXT, {B8}},
9928{"se_bso", EBD8IO(28,1,3), EBD8IO3_MASK, PPCVLE, EXT, {B8}},
9929{"se_bun", EBD8IO(28,1,3), EBD8IO3_MASK, PPCVLE, EXT, {B8}},
9930{"se_bt", EBD8IO(28,1,0), EBD8IO2_MASK, PPCVLE, EXT, {BI16, B8}},
14b57c7c
AM
9931{"se_bc", BD8IO(28), BD8IO_MASK, PPCVLE, 0, {BO16, BI16, B8}},
9932{"se_b", BD8(58,0,0), BD8_MASK, PPCVLE, 0, {B8}},
9933{"se_bl", BD8(58,0,1), BD8_MASK, PPCVLE, 0, {B8}},
b9c361e0
JL
9934};
9935
2ceb7719 9936const unsigned int vle_num_opcodes =
b9c361e0
JL
9937 sizeof (vle_opcodes) / sizeof (vle_opcodes[0]);
9938\f
252b5132
RH
9939/* The macro table. This is only used by the assembler. */
9940
9941/* The expressions of the form (-x ! 31) & (x | 31) have the value 0
9942 when x=0; 32-x when x is between 1 and 31; are negative if x is
9943 negative; and are 32 or more otherwise. This is what you want
9944 when, for instance, you are emulating a right shift by a
9945 rotate-left-and-mask, because the underlying instructions support
9946 shifts of size 0 but not shifts of size 32. By comparison, when
9947 extracting x bits from some word you want to use just 32-x, because
9948 the underlying instructions don't support extracting 0 bits but do
9949 support extracting the whole word (32 bits in this case). */
9950
9951const struct powerpc_macro powerpc_macros[] = {
de866fcc
AM
9952{"extldi", 4, PPC64, "rldicr %0,%1,%3,(%2)-1"},
9953{"extldi.", 4, PPC64, "rldicr. %0,%1,%3,(%2)-1"},
bdc7fcfe
AM
9954{"extrdi", 4, PPC64, "rldicl %0,%1,((%2)+(%3))&((%2)+(%3)<>64),64-(%2)"},
9955{"extrdi.", 4, PPC64, "rldicl. %0,%1,((%2)+(%3))&((%2)+(%3)<>64),64-(%2)"},
de866fcc
AM
9956{"insrdi", 4, PPC64, "rldimi %0,%1,64-((%2)+(%3)),%3"},
9957{"insrdi.", 4, PPC64, "rldimi. %0,%1,64-((%2)+(%3)),%3"},
9958{"rotrdi", 3, PPC64, "rldicl %0,%1,(-(%2)!63)&((%2)|63),0"},
9959{"rotrdi.", 3, PPC64, "rldicl. %0,%1,(-(%2)!63)&((%2)|63),0"},
9960{"sldi", 3, PPC64, "rldicr %0,%1,%2,63-(%2)"},
9961{"sldi.", 3, PPC64, "rldicr. %0,%1,%2,63-(%2)"},
9962{"srdi", 3, PPC64, "rldicl %0,%1,(-(%2)!63)&((%2)|63),%2"},
9963{"srdi.", 3, PPC64, "rldicl. %0,%1,(-(%2)!63)&((%2)|63),%2"},
9964{"clrrdi", 3, PPC64, "rldicr %0,%1,0,63-(%2)"},
9965{"clrrdi.", 3, PPC64, "rldicr. %0,%1,0,63-(%2)"},
9966{"clrlsldi", 4, PPC64, "rldic %0,%1,%3,(%2)-(%3)"},
14b57c7c 9967{"clrlsldi.",4, PPC64, "rldic. %0,%1,%3,(%2)-(%3)"},
de866fcc
AM
9968
9969{"extlwi", 4, PPCCOM, "rlwinm %0,%1,%3,0,(%2)-1"},
9970{"extlwi.", 4, PPCCOM, "rlwinm. %0,%1,%3,0,(%2)-1"},
9971{"extrwi", 4, PPCCOM, "rlwinm %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"},
9972{"extrwi.", 4, PPCCOM, "rlwinm. %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"},
9973{"inslwi", 4, PPCCOM, "rlwimi %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"},
9974{"inslwi.", 4, PPCCOM, "rlwimi. %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"},
9975{"insrwi", 4, PPCCOM, "rlwimi %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"},
9976{"insrwi.", 4, PPCCOM, "rlwimi. %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"},
9977{"rotrwi", 3, PPCCOM, "rlwinm %0,%1,(-(%2)!31)&((%2)|31),0,31"},
9978{"rotrwi.", 3, PPCCOM, "rlwinm. %0,%1,(-(%2)!31)&((%2)|31),0,31"},
9979{"slwi", 3, PPCCOM, "rlwinm %0,%1,%2,0,31-(%2)"},
9980{"sli", 3, PWRCOM, "rlinm %0,%1,%2,0,31-(%2)"},
9981{"slwi.", 3, PPCCOM, "rlwinm. %0,%1,%2,0,31-(%2)"},
9982{"sli.", 3, PWRCOM, "rlinm. %0,%1,%2,0,31-(%2)"},
9983{"srwi", 3, PPCCOM, "rlwinm %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
9984{"sri", 3, PWRCOM, "rlinm %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
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{"clrrwi", 3, PPCCOM, "rlwinm %0,%1,0,0,31-(%2)"},
9988{"clrrwi.", 3, PPCCOM, "rlwinm. %0,%1,0,0,31-(%2)"},
9989{"clrlslwi", 4, PPCCOM, "rlwinm %0,%1,%3,(%2)-(%3),31-(%3)"},
9990{"clrlslwi.",4, PPCCOM, "rlwinm. %0,%1,%3,(%2)-(%3),31-(%3)"},
a4ebc835
AM
9991
9992{"e_extlwi", 4, PPCVLE, "e_rlwinm %0,%1,%3,0,(%2)-1"},
9993{"e_extrwi", 4, PPCVLE, "e_rlwinm %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"},
9994{"e_inslwi", 4, PPCVLE, "e_rlwimi %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"},
9995{"e_insrwi", 4, PPCVLE, "e_rlwimi %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"},
9996{"e_rotlwi", 3, PPCVLE, "e_rlwinm %0,%1,%2,0,31"},
9997{"e_rotrwi", 3, PPCVLE, "e_rlwinm %0,%1,(-(%2)!31)&((%2)|31),0,31"},
9998{"e_slwi", 3, PPCVLE, "e_rlwinm %0,%1,%2,0,31-(%2)"},
9999{"e_srwi", 3, PPCVLE, "e_rlwinm %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
10000{"e_clrlwi", 3, PPCVLE, "e_rlwinm %0,%1,0,%2,31"},
10001{"e_clrrwi", 3, PPCVLE, "e_rlwinm %0,%1,0,0,31-(%2)"},
10002{"e_clrlslwi",4, PPCVLE, "e_rlwinm %0,%1,%3,(%2)-(%3),31-(%3)"},
74081948
AF
10003
10004/* old SPE instructions have new names with the same opcodes */
10005{"evsadd", 3, PPCSPE|PPCVLE, "efsadd %0,%1,%2"},
10006{"evssub", 3, PPCSPE|PPCVLE, "efssub %0,%1,%2"},
10007{"evsabs", 2, PPCSPE|PPCVLE, "efsabs %0,%1"},
10008{"evsnabs", 2, PPCSPE|PPCVLE, "efsnabs %0,%1"},
10009{"evsneg", 2, PPCSPE|PPCVLE, "efsneg %0,%1"},
10010{"evsmul", 3, PPCSPE|PPCVLE, "efsmul %0,%1,%2"},
10011{"evsdiv", 3, PPCSPE|PPCVLE, "efsdiv %0,%1,%2"},
10012{"evscmpgt", 3, PPCSPE|PPCVLE, "efscmpgt %0,%1,%2"},
10013{"evsgmplt", 3, PPCSPE|PPCVLE, "efscmplt %0,%1,%2"},
10014{"evsgmpeq", 3, PPCSPE|PPCVLE, "efscmpeq %0,%1,%2"},
10015{"evscfui", 2, PPCSPE|PPCVLE, "efscfui %0,%1"},
10016{"evscfsi", 2, PPCSPE|PPCVLE, "efscfsi %0,%1"},
10017{"evscfuf", 2, PPCSPE|PPCVLE, "efscfuf %0,%1"},
10018{"evscfsf", 2, PPCSPE|PPCVLE, "efscfsf %0,%1"},
10019{"evsctui", 2, PPCSPE|PPCVLE, "efsctui %0,%1"},
10020{"evsctsi", 2, PPCSPE|PPCVLE, "efsctsi %0,%1"},
10021{"evsctuf", 2, PPCSPE|PPCVLE, "efsctuf %0,%1"},
10022{"evsctsf", 2, PPCSPE|PPCVLE, "efsctsf %0,%1"},
10023{"evsctuiz", 2, PPCSPE|PPCVLE, "efsctuiz %0,%1"},
10024{"evsctsiz", 2, PPCSPE|PPCVLE, "efsctsiz %0,%1"},
10025{"evststgt", 3, PPCSPE|PPCVLE, "efststgt %0,%1,%2"},
10026{"evststlt", 3, PPCSPE|PPCVLE, "efststlt %0,%1,%2"},
10027{"evststeq", 3, PPCSPE|PPCVLE, "efststeq %0,%1,%2"},
10028
10029/* SPE2 instructions which just are mapped to SPE2 */
10030{"evdotphsssi", 3, PPCSPE2, "evdotphssmi %0,%1,%2"},
10031{"evdotphsssia", 3, PPCSPE2, "evdotphssmia %0,%1,%2"},
10032{"evdotpwsssi", 3, PPCSPE2, "evdotpwssmi %0,%1,%2"},
10033{"evdotpwsssia", 3, PPCSPE2, "evdotpwssmia %0,%1,%2"}
252b5132
RH
10034};
10035
10036const int powerpc_num_macros =
10037 sizeof (powerpc_macros) / sizeof (powerpc_macros[0]);
74081948
AF
10038
10039/* SPE v2 instruction set from SPE2PIM Rev. 2 08/2011 */
10040const struct powerpc_opcode spe2_opcodes[] = {
10041{"evdotpwcssi", VX (4, 128), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10042{"evdotpwcsmi", VX (4, 129), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10043{"evdotpwcssfr", VX (4, 130), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10044{"evdotpwcssf", VX (4, 131), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10045{"evdotpwgasmf", VX (4, 136), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10046{"evdotpwxgasmf", VX (4, 137), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10047{"evdotpwgasmfr", VX (4, 138), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10048{"evdotpwxgasmfr", VX (4, 139), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10049{"evdotpwgssmf", VX (4, 140), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10050{"evdotpwxgssmf", VX (4, 141), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10051{"evdotpwgssmfr", VX (4, 142), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10052{"evdotpwxgssmfr", VX (4, 143), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10053{"evdotpwcssiaaw3", VX (4, 144), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10054{"evdotpwcsmiaaw3", VX (4, 145), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10055{"evdotpwcssfraaw3", VX (4, 146), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10056{"evdotpwcssfaaw3", VX (4, 147), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10057{"evdotpwgasmfaa3", VX (4, 152), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10058{"evdotpwxgasmfaa3", VX (4, 153), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10059{"evdotpwgasmfraa3", VX (4, 154), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10060{"evdotpwxgasmfraa3", VX (4, 155), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10061{"evdotpwgssmfaa3", VX (4, 156), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10062{"evdotpwxgssmfaa3", VX (4, 157), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10063{"evdotpwgssmfraa3", VX (4, 158), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10064{"evdotpwxgssmfraa3", VX (4, 159), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10065{"evdotpwcssia", VX (4, 160), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10066{"evdotpwcsmia", VX (4, 161), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10067{"evdotpwcssfra", VX (4, 162), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10068{"evdotpwcssfa", VX (4, 163), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10069{"evdotpwgasmfa", VX (4, 168), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10070{"evdotpwxgasmfa", VX (4, 169), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10071{"evdotpwgasmfra", VX (4, 170), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10072{"evdotpwxgasmfra", VX (4, 171), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10073{"evdotpwgssmfa", VX (4, 172), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10074{"evdotpwxgssmfa", VX (4, 173), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10075{"evdotpwgssmfra", VX (4, 174), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10076{"evdotpwxgssmfra", VX (4, 175), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10077{"evdotpwcssiaaw", VX (4, 176), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10078{"evdotpwcsmiaaw", VX (4, 177), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10079{"evdotpwcssfraaw", VX (4, 178), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10080{"evdotpwcssfaaw", VX (4, 179), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10081{"evdotpwgasmfaa", VX (4, 184), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10082{"evdotpwxgasmfaa", VX (4, 185), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10083{"evdotpwgasmfraa", VX (4, 186), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10084{"evdotpwxgasmfraa", VX (4, 187), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10085{"evdotpwgssmfaa", VX (4, 188), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10086{"evdotpwxgssmfaa", VX (4, 189), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10087{"evdotpwgssmfraa", VX (4, 190), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10088{"evdotpwxgssmfraa", VX (4, 191), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10089{"evdotphihcssi", VX (4, 256), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10090{"evdotplohcssi", VX (4, 257), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10091{"evdotphihcssf", VX (4, 258), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10092{"evdotplohcssf", VX (4, 259), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10093{"evdotphihcsmi", VX (4, 264), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10094{"evdotplohcsmi", VX (4, 265), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10095{"evdotphihcssfr", VX (4, 266), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10096{"evdotplohcssfr", VX (4, 267), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10097{"evdotphihcssiaaw3", VX (4, 272), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10098{"evdotplohcssiaaw3", VX (4, 273), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10099{"evdotphihcssfaaw3", VX (4, 274), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10100{"evdotplohcssfaaw3", VX (4, 275), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10101{"evdotphihcsmiaaw3", VX (4, 280), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10102{"evdotplohcsmiaaw3", VX (4, 281), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10103{"evdotphihcssfraaw3", VX (4, 282), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10104{"evdotplohcssfraaw3", VX (4, 283), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10105{"evdotphihcssia", VX (4, 288), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10106{"evdotplohcssia", VX (4, 289), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10107{"evdotphihcssfa", VX (4, 290), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10108{"evdotplohcssfa", VX (4, 291), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10109{"evdotphihcsmia", VX (4, 296), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10110{"evdotplohcsmia", VX (4, 297), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10111{"evdotphihcssfra", VX (4, 298), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10112{"evdotplohcssfra", VX (4, 299), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10113{"evdotphihcssiaaw", VX (4, 304), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10114{"evdotplohcssiaaw", VX (4, 305), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10115{"evdotphihcssfaaw", VX (4, 306), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10116{"evdotplohcssfaaw", VX (4, 307), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10117{"evdotphihcsmiaaw", VX (4, 312), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10118{"evdotplohcsmiaaw", VX (4, 313), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10119{"evdotphihcssfraaw", VX (4, 314), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10120{"evdotplohcssfraaw", VX (4, 315), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10121{"evdotphausi", VX (4, 320), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10122{"evdotphassi", VX (4, 321), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10123{"evdotphasusi", VX (4, 322), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10124{"evdotphassf", VX (4, 323), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10125{"evdotphsssf", VX (4, 327), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10126{"evdotphaumi", VX (4, 328), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10127{"evdotphasmi", VX (4, 329), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10128{"evdotphasumi", VX (4, 330), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10129{"evdotphassfr", VX (4, 331), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10130{"evdotphssmi", VX (4, 333), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10131{"evdotphsssfr", VX (4, 335), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10132{"evdotphausiaaw3", VX (4, 336), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10133{"evdotphassiaaw3", VX (4, 337), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10134{"evdotphasusiaaw3", VX (4, 338), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10135{"evdotphassfaaw3", VX (4, 339), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10136{"evdotphsssiaaw3", VX (4, 341), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10137{"evdotphsssfaaw3", VX (4, 343), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10138{"evdotphaumiaaw3", VX (4, 344), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10139{"evdotphasmiaaw3", VX (4, 345), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10140{"evdotphasumiaaw3", VX (4, 346), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10141{"evdotphassfraaw3", VX (4, 347), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10142{"evdotphssmiaaw3", VX (4, 349), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10143{"evdotphsssfraaw3", VX (4, 351), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10144{"evdotphausia", VX (4, 352), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10145{"evdotphassia", VX (4, 353), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10146{"evdotphasusia", VX (4, 354), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10147{"evdotphassfa", VX (4, 355), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10148{"evdotphsssfa", VX (4, 359), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10149{"evdotphaumia", VX (4, 360), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10150{"evdotphasmia", VX (4, 361), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10151{"evdotphasumia", VX (4, 362), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10152{"evdotphassfra", VX (4, 363), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10153{"evdotphssmia", VX (4, 365), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10154{"evdotphsssfra", VX (4, 367), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10155{"evdotphausiaaw", VX (4, 368), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10156{"evdotphassiaaw", VX (4, 369), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10157{"evdotphasusiaaw", VX (4, 370), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10158{"evdotphassfaaw", VX (4, 371), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10159{"evdotphsssiaaw", VX (4, 373), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10160{"evdotphsssfaaw", VX (4, 375), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10161{"evdotphaumiaaw", VX (4, 376), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10162{"evdotphasmiaaw", VX (4, 377), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10163{"evdotphasumiaaw", VX (4, 378), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10164{"evdotphassfraaw", VX (4, 379), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10165{"evdotphssmiaaw", VX (4, 381), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10166{"evdotphsssfraaw", VX (4, 383), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10167{"evdotp4hgaumi", VX (4, 384), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10168{"evdotp4hgasmi", VX (4, 385), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10169{"evdotp4hgasumi", VX (4, 386), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10170{"evdotp4hgasmf", VX (4, 387), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10171{"evdotp4hgssmi", VX (4, 388), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10172{"evdotp4hgssmf", VX (4, 389), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10173{"evdotp4hxgasmi", VX (4, 390), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10174{"evdotp4hxgasmf", VX (4, 391), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10175{"evdotpbaumi", VX (4, 392), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10176{"evdotpbasmi", VX (4, 393), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10177{"evdotpbasumi", VX (4, 394), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10178{"evdotp4hxgssmi", VX (4, 398), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10179{"evdotp4hxgssmf", VX (4, 399), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10180{"evdotp4hgaumiaa3", VX (4, 400), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10181{"evdotp4hgasmiaa3", VX (4, 401), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10182{"evdotp4hgasumiaa3", VX (4, 402), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10183{"evdotp4hgasmfaa3", VX (4, 403), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10184{"evdotp4hgssmiaa3", VX (4, 404), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10185{"evdotp4hgssmfaa3", VX (4, 405), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10186{"evdotp4hxgasmiaa3", VX (4, 406), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10187{"evdotp4hxgasmfaa3", VX (4, 407), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10188{"evdotpbaumiaaw3", VX (4, 408), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10189{"evdotpbasmiaaw3", VX (4, 409), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10190{"evdotpbasumiaaw3", VX (4, 410), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10191{"evdotp4hxgssmiaa3", VX (4, 414), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10192{"evdotp4hxgssmfaa3", VX (4, 415), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10193{"evdotp4hgaumia", VX (4, 416), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10194{"evdotp4hgasmia", VX (4, 417), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10195{"evdotp4hgasumia", VX (4, 418), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10196{"evdotp4hgasmfa", VX (4, 419), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10197{"evdotp4hgssmia", VX (4, 420), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10198{"evdotp4hgssmfa", VX (4, 421), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10199{"evdotp4hxgasmia", VX (4, 422), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10200{"evdotp4hxgasmfa", VX (4, 423), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10201{"evdotpbaumia", VX (4, 424), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10202{"evdotpbasmia", VX (4, 425), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10203{"evdotpbasumia", VX (4, 426), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10204{"evdotp4hxgssmia", VX (4, 430), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10205{"evdotp4hxgssmfa", VX (4, 431), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10206{"evdotp4hgaumiaa", VX (4, 432), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10207{"evdotp4hgasmiaa", VX (4, 433), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10208{"evdotp4hgasumiaa", VX (4, 434), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10209{"evdotp4hgasmfaa", VX (4, 435), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10210{"evdotp4hgssmiaa", VX (4, 436), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10211{"evdotp4hgssmfaa", VX (4, 437), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10212{"evdotp4hxgasmiaa", VX (4, 438), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10213{"evdotp4hxgasmfaa", VX (4, 439), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10214{"evdotpbaumiaaw", VX (4, 440), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10215{"evdotpbasmiaaw", VX (4, 441), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10216{"evdotpbasumiaaw", VX (4, 442), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10217{"evdotp4hxgssmiaa", VX (4, 446), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10218{"evdotp4hxgssmfaa", VX (4, 447), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10219{"evdotpwausi", VX (4, 448), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10220{"evdotpwassi", VX (4, 449), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10221{"evdotpwasusi", VX (4, 450), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10222{"evdotpwaumi", VX (4, 456), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10223{"evdotpwasmi", VX (4, 457), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10224{"evdotpwasumi", VX (4, 458), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10225{"evdotpwssmi", VX (4, 461), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10226{"evdotpwausiaa3", VX (4, 464), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10227{"evdotpwassiaa3", VX (4, 465), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10228{"evdotpwasusiaa3", VX (4, 466), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10229{"evdotpwsssiaa3", VX (4, 469), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10230{"evdotpwaumiaa3", VX (4, 472), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10231{"evdotpwasmiaa3", VX (4, 473), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10232{"evdotpwasumiaa3", VX (4, 474), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10233{"evdotpwssmiaa3", VX (4, 477), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10234{"evdotpwausia", VX (4, 480), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10235{"evdotpwassia", VX (4, 481), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10236{"evdotpwasusia", VX (4, 482), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10237{"evdotpwaumia", VX (4, 488), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10238{"evdotpwasmia", VX (4, 489), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10239{"evdotpwasumia", VX (4, 490), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10240{"evdotpwssmia", VX (4, 493), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10241{"evdotpwausiaa", VX (4, 496), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10242{"evdotpwassiaa", VX (4, 497), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10243{"evdotpwasusiaa", VX (4, 498), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10244{"evdotpwsssiaa", VX (4, 501), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10245{"evdotpwaumiaa", VX (4, 504), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10246{"evdotpwasmiaa", VX (4, 505), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10247{"evdotpwasumiaa", VX (4, 506), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10248{"evdotpwssmiaa", VX (4, 509), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10249{"evaddib", VX (4, 515), VX_MASK, PPCSPE2, 0, {RD, RB, UIMM}},
10250{"evaddih", VX (4, 513), VX_MASK, PPCSPE2, 0, {RD, RB, UIMM}},
10251{"evsubifh", VX (4, 517), VX_MASK, PPCSPE2, 0, {RD, UIMM, RB}},
10252{"evsubifb", VX (4, 519), VX_MASK, PPCSPE2, 0, {RD, UIMM, RB}},
10253{"evabsb", VX_RB_CONST(4, 520, 2), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10254{"evabsh", VX_RB_CONST(4, 520, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10255{"evabsd", VX_RB_CONST(4, 520, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10256{"evabss", VX_RB_CONST(4, 520, 8), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10257{"evabsbs", VX_RB_CONST(4, 520, 10), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10258{"evabshs", VX_RB_CONST(4, 520, 12), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10259{"evabsds", VX_RB_CONST(4, 520, 14), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10260{"evnegwo", VX_RB_CONST(4, 521, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10261{"evnegb", VX_RB_CONST(4, 521, 2), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10262{"evnegbo", VX_RB_CONST(4, 521, 3), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10263{"evnegh", VX_RB_CONST(4, 521, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10264{"evnegho", VX_RB_CONST(4, 521, 5), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10265{"evnegd", VX_RB_CONST(4, 521, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10266{"evnegs", VX_RB_CONST(4, 521, 8), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10267{"evnegwos", VX_RB_CONST(4, 521, 9), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10268{"evnegbs", VX_RB_CONST(4, 521, 10), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10269{"evnegbos", VX_RB_CONST(4, 521, 11), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10270{"evneghs", VX_RB_CONST(4, 521, 12), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10271{"evneghos", VX_RB_CONST(4, 521, 13), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10272{"evnegds", VX_RB_CONST(4, 521, 14), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10273{"evextzb", VX_RB_CONST(4, 522, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10274{"evextsbh", VX_RB_CONST(4, 522, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10275{"evextsw", VX_RB_CONST(4, 523, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10276{"evrndwh", VX_RB_CONST(4, 524, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10277{"evrndhb", VX_RB_CONST(4, 524, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10278{"evrnddw", VX_RB_CONST(4, 524, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10279{"evrndwhus", VX_RB_CONST(4, 524, 8), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10280{"evrndwhss", VX_RB_CONST(4, 524, 9), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10281{"evrndhbus", VX_RB_CONST(4, 524, 12), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10282{"evrndhbss", VX_RB_CONST(4, 524, 13), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10283{"evrnddwus", VX_RB_CONST(4, 524, 14), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10284{"evrnddwss", VX_RB_CONST(4, 524, 15), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10285{"evrndwnh", VX_RB_CONST(4, 524, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10286{"evrndhnb", VX_RB_CONST(4, 524, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10287{"evrnddnw", VX_RB_CONST(4, 524, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10288{"evrndwnhus", VX_RB_CONST(4, 524, 24), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10289{"evrndwnhss", VX_RB_CONST(4, 524, 25), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10290{"evrndhnbus", VX_RB_CONST(4, 524, 28), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10291{"evrndhnbss", VX_RB_CONST(4, 524, 29), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10292{"evrnddnwus", VX_RB_CONST(4, 524, 30), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10293{"evrnddnwss", VX_RB_CONST(4, 524, 31), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10294{"evcntlzh", VX_RB_CONST(4, 525, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10295{"evcntlsh", VX_RB_CONST(4, 526, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10296{"evpopcntb", VX_RB_CONST(4, 526, 26), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10297{"circinc", VX (4, 528), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10298{"evunpkhibui", VX_RB_CONST(4, 540, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10299{"evunpkhibsi", VX_RB_CONST(4, 540, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10300{"evunpkhihui", VX_RB_CONST(4, 540, 2), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10301{"evunpkhihsi", VX_RB_CONST(4, 540, 3), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10302{"evunpklobui", VX_RB_CONST(4, 540, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10303{"evunpklobsi", VX_RB_CONST(4, 540, 5), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10304{"evunpklohui", VX_RB_CONST(4, 540, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10305{"evunpklohsi", VX_RB_CONST(4, 540, 7), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10306{"evunpklohf", VX_RB_CONST(4, 540, 8), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10307{"evunpkhihf", VX_RB_CONST(4, 540, 9), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10308{"evunpklowgsf", VX_RB_CONST(4, 540, 12), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10309{"evunpkhiwgsf", VX_RB_CONST(4, 540, 13), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10310{"evsatsduw", VX_RB_CONST(4, 540, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10311{"evsatsdsw", VX_RB_CONST(4, 540, 17), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10312{"evsatshub", VX_RB_CONST(4, 540, 18), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10313{"evsatshsb", VX_RB_CONST(4, 540, 19), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10314{"evsatuwuh", VX_RB_CONST(4, 540, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10315{"evsatswsh", VX_RB_CONST(4, 540, 21), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10316{"evsatswuh", VX_RB_CONST(4, 540, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10317{"evsatuhub", VX_RB_CONST(4, 540, 23), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10318{"evsatuduw", VX_RB_CONST(4, 540, 24), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10319{"evsatuwsw", VX_RB_CONST(4, 540, 25), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10320{"evsatshuh", VX_RB_CONST(4, 540, 26), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10321{"evsatuhsh", VX_RB_CONST(4, 540, 27), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10322{"evsatswuw", VX_RB_CONST(4, 540, 28), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10323{"evsatswgsdf", VX_RB_CONST(4, 540, 29), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10324{"evsatsbub", VX_RB_CONST(4, 540, 30), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10325{"evsatubsb", VX_RB_CONST(4, 540, 31), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10326{"evmaxhpuw", VX_RB_CONST(4, 541, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10327{"evmaxhpsw", VX_RB_CONST(4, 541, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10328{"evmaxbpuh", VX_RB_CONST(4, 541, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10329{"evmaxbpsh", VX_RB_CONST(4, 541, 5), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10330{"evmaxwpud", VX_RB_CONST(4, 541, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10331{"evmaxwpsd", VX_RB_CONST(4, 541, 7), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10332{"evminhpuw", VX_RB_CONST(4, 541, 8), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10333{"evminhpsw", VX_RB_CONST(4, 541, 9), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10334{"evminbpuh", VX_RB_CONST(4, 541, 12), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10335{"evminbpsh", VX_RB_CONST(4, 541, 13), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10336{"evminwpud", VX_RB_CONST(4, 541, 14), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10337{"evminwpsd", VX_RB_CONST(4, 541, 15), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10338{"evmaxmagws", VX (4, 543), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10339{"evsl", VX (4, 549), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10340{"evsli", VX (4, 551), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM}},
10341{"evsplatie", VX_RB_CONST (4, 553, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
10342{"evsplatib", VX_RB_CONST (4, 553, 2), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
10343{"evsplatibe", VX_RB_CONST (4, 553, 3), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
10344{"evsplatih", VX_RB_CONST (4, 553, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
10345{"evsplatihe", VX_RB_CONST (4, 553, 5), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
10346{"evsplatid", VX_RB_CONST (4, 553, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
10347{"evsplatia", VX_RB_CONST (4, 553, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
10348{"evsplatiea", VX_RB_CONST (4, 553, 17), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
10349{"evsplatiba", VX_RB_CONST (4, 553, 18), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
10350{"evsplatibea", VX_RB_CONST (4, 553, 19), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
10351{"evsplatiha", VX_RB_CONST (4, 553, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
10352{"evsplatihea", VX_RB_CONST (4, 553, 21), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
10353{"evsplatida", VX_RB_CONST (4, 553, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
10354{"evsplatfio", VX_RB_CONST (4, 555, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
10355{"evsplatfib", VX_RB_CONST (4, 555, 2), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
10356{"evsplatfibo", VX_RB_CONST (4, 555, 3), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
10357{"evsplatfih", VX_RB_CONST (4, 555, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
10358{"evsplatfiho", VX_RB_CONST (4, 555, 5), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
10359{"evsplatfid", VX_RB_CONST (4, 555, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
10360{"evsplatfia", VX_RB_CONST (4, 555, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
10361{"evsplatfioa", VX_RB_CONST (4, 555, 17), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
10362{"evsplatfiba", VX_RB_CONST (4, 555, 18), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
10363{"evsplatfiboa", VX_RB_CONST (4, 555, 19), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
10364{"evsplatfiha", VX_RB_CONST (4, 555, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
10365{"evsplatfihoa", VX_RB_CONST (4, 555, 21), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
10366{"evsplatfida", VX_RB_CONST (4, 555, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
10367{"evcmpgtdu", VX_SPE_CRFD (4, 560, 1), VX_SPE_CRFD_MASK, PPCSPE2, 0, {CRFD, RA, RB}},
10368{"evcmpgtds", VX_SPE_CRFD (4, 561, 1), VX_SPE_CRFD_MASK, PPCSPE2, 0, {CRFD, RA, RB}},
10369{"evcmpltdu", VX_SPE_CRFD (4, 562, 1), VX_SPE_CRFD_MASK, PPCSPE2, 0, {CRFD, RA, RB}},
10370{"evcmpltds", VX_SPE_CRFD (4, 563, 1), VX_SPE_CRFD_MASK, PPCSPE2, 0, {CRFD, RA, RB}},
10371{"evcmpeqd", VX_SPE_CRFD (4, 564, 1), VX_SPE_CRFD_MASK, PPCSPE2, 0, {CRFD, RA, RB}},
10372{"evswapbhilo", VX (4, 568), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10373{"evswapblohi", VX (4, 569), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10374{"evswaphhilo", VX (4, 570), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10375{"evswaphlohi", VX (4, 571), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10376{"evswaphe", VX (4, 572), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10377{"evswaphhi", VX (4, 573), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10378{"evswaphlo", VX (4, 574), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10379{"evswapho", VX (4, 575), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10380{"evinsb", VX (4, 584), VX_MASK_DDD, PPCSPE2, 0, {RD, RA, DDD, BBB}},
10381{"evxtrb", VX (4, 586), VX_MASK_DDD, PPCSPE2, 0, {RD, RA, DDD, BBB}},
10382{"evsplath", VX_SPE2_HH (4, 588, 0, 0), VX_SPE2_HH_MASK, PPCSPE2, 0, {RD, RA, HH}},
10383{"evsplatb", VX_SPE2_SPLATB (4, 588, 2), VX_SPE2_SPLATB_MASK, PPCSPE2, 0, {RD, RA, BBB}},
10384{"evinsh", VX_SPE2_DDHH (4, 589, 0), VX_SPE2_DDHH_MASK, PPCSPE2, 0, {RD, RA, DD, HH}},
10385{"evclrbe", VX_SPE2_CLR (4, 590, 0), VX_SPE2_CLR_MASK, PPCSPE2, 0, {RD, RA, MMMM}},
10386{"evclrbo", VX_SPE2_CLR (4, 590, 1), VX_SPE2_CLR_MASK, PPCSPE2, 0, {RD, RA, MMMM}},
10387{"evclrh", VX_SPE2_CLR (4, 591, 1), VX_SPE2_CLR_MASK, PPCSPE2, 0, {RD, RA, MMMM}},
10388{"evxtrh", VX_SPE2_DDHH (4, 591, 0), VX_SPE2_DDHH_MASK, PPCSPE2, 0, {RD, RA, DD, HH}},
10389{"evselbitm0", VX (4, 592), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10390{"evselbitm1", VX (4, 593), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10391{"evselbit", VX (4, 594), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10392{"evperm", VX (4, 596), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10393{"evperm2", VX (4, 597), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10394{"evperm3", VX (4, 598), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10395{"evxtrd", VX (4, 600), VX_OFF_SPE2_MASK, PPCSPE2, 0, {RD, RA, RB, VX_OFF_SPE2}},
10396{"evsrbu", VX (4, 608), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10397{"evsrbs", VX (4, 609), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10398{"evsrbiu", VX (4, 610), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
10399{"evsrbis", VX (4, 611), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
10400{"evslb", VX (4, 612), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10401{"evrlb", VX (4, 613), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10402{"evslbi", VX (4, 614), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
10403{"evrlbi", VX (4, 615), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
10404{"evsrhu", VX (4, 616), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10405{"evsrhs", VX (4, 617), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10406{"evsrhiu", VX (4, 618), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
10407{"evsrhis", VX (4, 619), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
10408{"evslh", VX (4, 620), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10409{"evrlh", VX (4, 621), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10410{"evslhi", VX (4, 622), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
10411{"evrlhi", VX (4, 623), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
10412{"evsru", VX (4, 624), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10413{"evsrs", VX (4, 625), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10414{"evsriu", VX (4, 626), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM}},
10415{"evsris", VX (4, 627), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM}},
10416{"evlvsl", VX (4, 628), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10417{"evlvsr", VX (4, 629), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10418{"evsroiu", VX_SPE2_OCTET (4, 631, 0), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
10419{"evsrois", VX_SPE2_OCTET (4, 631, 1), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
10420{"evsloi", VX_SPE2_OCTET (4, 631, 2), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
10421{"evldbx", VX (4, 774), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10422{"evldb", VX (4, 775), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_8, RA}},
10423{"evlhhsplathx", VX (4, 778), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10424{"evlhhsplath", VX (4, 779), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_2, RA}},
10425{"evlwbsplatwx", VX (4, 786), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10426{"evlwbsplatw", VX (4, 787), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4, RA}},
10427{"evlwhsplatwx", VX (4, 794), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10428{"evlwhsplatw", VX (4, 795), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4, RA}},
10429{"evlbbsplatbx", VX (4, 798), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10430{"evlbbsplatb", VX (4, 799), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_1, RA}},
10431{"evstdbx", VX (4, 806), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
10432{"evstdb", VX (4, 807), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_8, RA}},
10433{"evlwbex", VX (4, 810), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10434{"evlwbe", VX (4, 811), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4, RA}},
10435{"evlwboux", VX (4, 812), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10436{"evlwbou", VX (4, 813), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4, RA}},
10437{"evlwbosx", VX (4, 814), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10438{"evlwbos", VX (4, 815), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4, RA}},
10439{"evstwbex", VX (4, 818), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
10440{"evstwbe", VX (4, 819), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4, RA}},
10441{"evstwbox", VX (4, 822), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
10442{"evstwbo", VX (4, 823), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4, RA}},
10443{"evstwbx", VX (4, 826), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
10444{"evstwb", VX (4, 827), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4, RA}},
10445{"evsthbx", VX (4, 830), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
10446{"evsthb", VX (4, 831), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_2, RA}},
10447{"evlddmx", VX (4, 832), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10448{"evlddu", VX (4, 833), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
10449{"evldwmx", VX (4, 834), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10450{"evldwu", VX (4, 835), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
10451{"evldhmx", VX (4, 836), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10452{"evldhu", VX (4, 837), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
10453{"evldbmx", VX (4, 838), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10454{"evldbu", VX (4, 839), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
10455{"evlhhesplatmx", VX (4, 840), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10456{"evlhhesplatu", VX (4, 841), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
10457{"evlhhsplathmx", VX (4, 842), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10458{"evlhhsplathu", VX (4, 843), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
10459{"evlhhousplatmx", VX (4, 844), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10460{"evlhhousplatu", VX (4, 845), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
10461{"evlhhossplatmx", VX (4, 846), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10462{"evlhhossplatu", VX (4, 847), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
10463{"evlwhemx", VX (4, 848), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10464{"evlwheu", VX (4, 849), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
10465{"evlwbsplatwmx", VX (4, 850), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10466{"evlwbsplatwu", VX (4, 851), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
10467{"evlwhoumx", VX (4, 852), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10468{"evlwhouu", VX (4, 853), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
10469{"evlwhosmx", VX (4, 854), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10470{"evlwhosu", VX (4, 855), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
10471{"evlwwsplatmx", VX (4, 856), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10472{"evlwwsplatu", VX (4, 857), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
10473{"evlwhsplatwmx", VX (4, 858), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10474{"evlwhsplatwu", VX (4, 859), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
10475{"evlwhsplatmx", VX (4, 860), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10476{"evlwhsplatu", VX (4, 861), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
10477{"evlbbsplatbmx", VX (4, 862), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10478{"evlbbsplatbu", VX (4, 863), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_1_EX0, RA}},
10479{"evstddmx", VX (4, 864), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
10480{"evstddu", VX (4, 865), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
10481{"evstdwmx", VX (4, 866), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
10482{"evstdwu", VX (4, 867), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
10483{"evstdhmx", VX (4, 868), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
10484{"evstdhu", VX (4, 869), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
10485{"evstdbmx", VX (4, 870), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
10486{"evstdbu", VX (4, 871), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
10487{"evlwbemx", VX (4, 874), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10488{"evlwbeu", VX (4, 875), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
10489{"evlwboumx", VX (4, 876), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10490{"evlwbouu", VX (4, 877), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
10491{"evlwbosmx", VX (4, 878), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10492{"evlwbosu", VX (4, 879), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
10493{"evstwhemx", VX (4, 880), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
10494{"evstwheu", VX (4, 881), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
10495{"evstwbemx", VX (4, 882), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
10496{"evstwbeu", VX (4, 883), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
10497{"evstwhomx", VX (4, 884), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
10498{"evstwhou", VX (4, 885), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
10499{"evstwbomx", VX (4, 886), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
10500{"evstwbou", VX (4, 887), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
10501{"evstwwemx", VX (4, 888), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
10502{"evstwweu", VX (4, 889), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
10503{"evstwbmx", VX (4, 890), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
10504{"evstwbu", VX (4, 891), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
10505{"evstwwomx", VX (4, 892), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
10506{"evstwwou", VX (4, 893), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
10507{"evsthbmx", VX (4, 894), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
10508{"evsthbu", VX (4, 895), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_2_EX0, RA}},
10509{"evmhusi", VX (4, 1024), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10510{"evmhssi", VX (4, 1025), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10511{"evmhsusi", VX (4, 1026), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10512{"evmhssf", VX (4, 1028), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10513{"evmhumi", VX (4, 1029), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10514{"evmhssfr", VX (4, 1030), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10515{"evmhesumi", VX (4, 1034), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10516{"evmhosumi", VX (4, 1038), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10517{"evmbeumi", VX (4, 1048), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10518{"evmbesmi", VX (4, 1049), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10519{"evmbesumi", VX (4, 1050), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10520{"evmboumi", VX (4, 1052), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10521{"evmbosmi", VX (4, 1053), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10522{"evmbosumi", VX (4, 1054), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10523{"evmhesumia", VX (4, 1066), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10524{"evmhosumia", VX (4, 1070), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10525{"evmbeumia", VX (4, 1080), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10526{"evmbesmia", VX (4, 1081), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10527{"evmbesumia", VX (4, 1082), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10528{"evmboumia", VX (4, 1084), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10529{"evmbosmia", VX (4, 1085), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10530{"evmbosumia", VX (4, 1086), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10531{"evmwusiw", VX (4, 1088), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10532{"evmwssiw", VX (4, 1089), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10533{"evmwhssfr", VX (4, 1094), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10534{"evmwehgsmfr", VX (4, 1110), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10535{"evmwehgsmf", VX (4, 1111), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10536{"evmwohgsmfr", VX (4, 1118), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10537{"evmwohgsmf", VX (4, 1119), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10538{"evmwhssfra", VX (4, 1126), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10539{"evmwehgsmfra", VX (4, 1142), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10540{"evmwehgsmfa", VX (4, 1143), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10541{"evmwohgsmfra", VX (4, 1150), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10542{"evmwohgsmfa", VX (4, 1151), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10543{"evaddusiaa", VX_RB_CONST(4, 1152, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10544{"evaddssiaa", VX_RB_CONST(4, 1153, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10545{"evsubfusiaa", VX_RB_CONST(4, 1154, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10546{"evsubfssiaa", VX_RB_CONST(4, 1155, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10547{"evaddsmiaa", VX_RB_CONST(4, 1156, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10548{"evsubfsmiaa", VX_RB_CONST(4, 1158, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10549{"evaddh", VX (4, 1160), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10550{"evaddhss", VX (4, 1161), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10551{"evsubfh", VX (4, 1162), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10552{"evsubfhss", VX (4, 1163), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10553{"evaddhx", VX (4, 1164), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10554{"evaddhxss", VX (4, 1165), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10555{"evsubfhx", VX (4, 1166), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10556{"evsubfhxss", VX (4, 1167), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10557{"evaddd", VX (4, 1168), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10558{"evadddss", VX (4, 1169), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10559{"evsubfd", VX (4, 1170), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10560{"evsubfdss", VX (4, 1171), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10561{"evaddb", VX (4, 1172), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10562{"evaddbss", VX (4, 1173), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10563{"evsubfb", VX (4, 1174), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10564{"evsubfbss", VX (4, 1175), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10565{"evaddsubfh", VX (4, 1176), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10566{"evaddsubfhss", VX (4, 1177), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10567{"evsubfaddh", VX (4, 1178), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10568{"evsubfaddhss", VX (4, 1179), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10569{"evaddsubfhx", VX (4, 1180), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10570{"evaddsubfhxss", VX (4, 1181), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10571{"evsubfaddhx", VX (4, 1182), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10572{"evsubfaddhxss", VX (4, 1183), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10573{"evadddus", VX (4, 1184), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10574{"evaddbus", VX (4, 1185), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10575{"evsubfdus", VX (4, 1186), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10576{"evsubfbus", VX (4, 1187), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10577{"evaddwus", VX (4, 1188), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10578{"evaddwxus", VX (4, 1189), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10579{"evsubfwus", VX (4, 1190), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10580{"evsubfwxus", VX (4, 1191), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10581{"evadd2subf2h", VX (4, 1192), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10582{"evadd2subf2hss", VX (4, 1193), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10583{"evsubf2add2h", VX (4, 1194), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10584{"evsubf2add2hss", VX (4, 1195), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10585{"evaddhus", VX (4, 1196), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10586{"evaddhxus", VX (4, 1197), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10587{"evsubfhus", VX (4, 1198), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10588{"evsubfhxus", VX (4, 1199), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10589{"evaddwss", VX (4, 1201), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10590{"evsubfwss", VX (4, 1203), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10591{"evaddwx", VX (4, 1204), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10592{"evaddwxss", VX (4, 1205), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10593{"evsubfwx", VX (4, 1206), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10594{"evsubfwxss", VX (4, 1207), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10595{"evaddsubfw", VX (4, 1208), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10596{"evaddsubfwss", VX (4, 1209), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10597{"evsubfaddw", VX (4, 1210), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10598{"evsubfaddwss", VX (4, 1211), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10599{"evaddsubfwx", VX (4, 1212), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10600{"evaddsubfwxss", VX (4, 1213), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10601{"evsubfaddwx", VX (4, 1214), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10602{"evsubfaddwxss", VX (4, 1215), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10603{"evmar", VX_SPE2_EVMAR (4, 1220), VX_SPE2_EVMAR_MASK, PPCSPE2, 0, {RD}},
10604{"evsumwu", VX_RB_CONST(4, 1221, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10605{"evsumws", VX_RB_CONST(4, 1221, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10606{"evsum4bu", VX_RB_CONST(4, 1221, 2), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10607{"evsum4bs", VX_RB_CONST(4, 1221, 3), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10608{"evsum2hu", VX_RB_CONST(4, 1221, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10609{"evsum2hs", VX_RB_CONST(4, 1221, 5), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10610{"evdiff2his", VX_RB_CONST(4, 1221, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10611{"evsum2his", VX_RB_CONST(4, 1221, 7), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10612{"evsumwua", VX_RB_CONST(4, 1221, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10613{"evsumwsa", VX_RB_CONST(4, 1221, 17), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10614{"evsum4bua", VX_RB_CONST(4, 1221, 18), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10615{"evsum4bsa", VX_RB_CONST(4, 1221, 19), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10616{"evsum2hua", VX_RB_CONST(4, 1221, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10617{"evsum2hsa", VX_RB_CONST(4, 1221, 21), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10618{"evdiff2hisa", VX_RB_CONST(4, 1221, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10619{"evsum2hisa", VX_RB_CONST(4, 1221, 23), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10620{"evsumwuaa", VX_RB_CONST(4, 1221, 24), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10621{"evsumwsaa", VX_RB_CONST(4, 1221, 25), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10622{"evsum4buaaw", VX_RB_CONST(4, 1221, 26), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10623{"evsum4bsaaw", VX_RB_CONST(4, 1221, 27), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10624{"evsum2huaaw", VX_RB_CONST(4, 1221, 28), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10625{"evsum2hsaaw", VX_RB_CONST(4, 1221, 29), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10626{"evdiff2hisaaw", VX_RB_CONST(4, 1221, 30), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10627{"evsum2hisaaw", VX_RB_CONST(4, 1221, 31), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
10628{"evdivwsf", VX (4, 1228), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10629{"evdivwuf", VX (4, 1229), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10630{"evdivs", VX (4, 1230), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10631{"evdivu", VX (4, 1231), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10632{"evaddwegsi", VX (4, 1232), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10633{"evaddwegsf", VX (4, 1233), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10634{"evsubfwegsi", VX (4, 1234), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10635{"evsubfwegsf", VX (4, 1235), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10636{"evaddwogsi", VX (4, 1236), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10637{"evaddwogsf", VX (4, 1237), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10638{"evsubfwogsi", VX (4, 1238), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10639{"evsubfwogsf", VX (4, 1239), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10640{"evaddhhiuw", VX (4, 1240), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10641{"evaddhhisw", VX (4, 1241), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10642{"evsubfhhiuw", VX (4, 1242), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10643{"evsubfhhisw", VX (4, 1243), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10644{"evaddhlouw", VX (4, 1244), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10645{"evaddhlosw", VX (4, 1245), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10646{"evsubfhlouw", VX (4, 1246), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10647{"evsubfhlosw", VX (4, 1247), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10648{"evmhesusiaaw", VX (4, 1282), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10649{"evmhosusiaaw", VX (4, 1286), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10650{"evmhesumiaaw", VX (4, 1290), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10651{"evmhosumiaaw", VX (4, 1294), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10652{"evmbeusiaah", VX (4, 1296), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10653{"evmbessiaah", VX (4, 1297), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10654{"evmbesusiaah", VX (4, 1298), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10655{"evmbousiaah", VX (4, 1300), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10656{"evmbossiaah", VX (4, 1301), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10657{"evmbosusiaah", VX (4, 1302), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10658{"evmbeumiaah", VX (4, 1304), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10659{"evmbesmiaah", VX (4, 1305), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10660{"evmbesumiaah", VX (4, 1306), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10661{"evmboumiaah", VX (4, 1308), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10662{"evmbosmiaah", VX (4, 1309), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10663{"evmbosumiaah", VX (4, 1310), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10664{"evmwlusiaaw3", VX (4, 1346), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10665{"evmwlssiaaw3", VX (4, 1347), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10666{"evmwhssfraaw3", VX (4, 1348), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10667{"evmwhssfaaw3", VX (4, 1349), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10668{"evmwhssfraaw", VX (4, 1350), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10669{"evmwhssfaaw", VX (4, 1351), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10670{"evmwlumiaaw3", VX (4, 1354), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10671{"evmwlsmiaaw3", VX (4, 1355), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10672{"evmwusiaa", VX (4, 1360), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10673{"evmwssiaa", VX (4, 1361), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10674{"evmwehgsmfraa", VX (4, 1366), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10675{"evmwehgsmfaa", VX (4, 1367), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10676{"evmwohgsmfraa", VX (4, 1374), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10677{"evmwohgsmfaa", VX (4, 1375), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10678{"evmhesusianw", VX (4, 1410), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10679{"evmhosusianw", VX (4, 1414), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10680{"evmhesumianw", VX (4, 1418), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10681{"evmhosumianw", VX (4, 1422), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10682{"evmbeusianh", VX (4, 1424), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10683{"evmbessianh", VX (4, 1425), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10684{"evmbesusianh", VX (4, 1426), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10685{"evmbousianh", VX (4, 1428), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10686{"evmbossianh", VX (4, 1429), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10687{"evmbosusianh", VX (4, 1430), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10688{"evmbeumianh", VX (4, 1432), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10689{"evmbesmianh", VX (4, 1433), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10690{"evmbesumianh", VX (4, 1434), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10691{"evmboumianh", VX (4, 1436), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10692{"evmbosmianh", VX (4, 1437), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10693{"evmbosumianh", VX (4, 1438), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10694{"evmwlusianw3", VX (4, 1474), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10695{"evmwlssianw3", VX (4, 1475), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10696{"evmwhssfranw3", VX (4, 1476), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10697{"evmwhssfanw3", VX (4, 1477), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10698{"evmwhssfranw", VX (4, 1478), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10699{"evmwhssfanw", VX (4, 1479), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10700{"evmwlumianw3", VX (4, 1482), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10701{"evmwlsmianw3", VX (4, 1483), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10702{"evmwusian", VX (4, 1488), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10703{"evmwssian", VX (4, 1489), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10704{"evmwehgsmfran", VX (4, 1494), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10705{"evmwehgsmfan", VX (4, 1495), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10706{"evmwohgsmfran", VX (4, 1502), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10707{"evmwohgsmfan", VX (4, 1503), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10708{"evseteqb", VX (4, 1536), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10709{"evseteqb.", VX (4, 1537), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10710{"evseteqh", VX (4, 1538), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10711{"evseteqh.", VX (4, 1539), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10712{"evseteqw", VX (4, 1540), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10713{"evseteqw.", VX (4, 1541), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10714{"evsetgthu", VX (4, 1544), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10715{"evsetgthu.", VX (4, 1545), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10716{"evsetgths", VX (4, 1546), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10717{"evsetgths.", VX (4, 1547), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10718{"evsetgtwu", VX (4, 1548), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10719{"evsetgtwu.", VX (4, 1549), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10720{"evsetgtws", VX (4, 1550), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10721{"evsetgtws.", VX (4, 1551), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10722{"evsetgtbu", VX (4, 1552), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10723{"evsetgtbu.", VX (4, 1553), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10724{"evsetgtbs", VX (4, 1554), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10725{"evsetgtbs.", VX (4, 1555), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10726{"evsetltbu", VX (4, 1556), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10727{"evsetltbu.", VX (4, 1557), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10728{"evsetltbs", VX (4, 1558), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10729{"evsetltbs.", VX (4, 1559), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10730{"evsetlthu", VX (4, 1560), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10731{"evsetlthu.", VX (4, 1561), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10732{"evsetlths", VX (4, 1562), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10733{"evsetlths.", VX (4, 1563), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10734{"evsetltwu", VX (4, 1564), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10735{"evsetltwu.", VX (4, 1565), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10736{"evsetltws", VX (4, 1566), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10737{"evsetltws.", VX (4, 1567), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10738{"evsaduw", VX (4, 1568), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10739{"evsadsw", VX (4, 1569), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10740{"evsad4ub", VX (4, 1570), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10741{"evsad4sb", VX (4, 1571), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10742{"evsad2uh", VX (4, 1572), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10743{"evsad2sh", VX (4, 1573), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10744{"evsaduwa", VX (4, 1576), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10745{"evsadswa", VX (4, 1577), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10746{"evsad4uba", VX (4, 1578), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10747{"evsad4sba", VX (4, 1579), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10748{"evsad2uha", VX (4, 1580), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10749{"evsad2sha", VX (4, 1581), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10750{"evabsdifuw", VX (4, 1584), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10751{"evabsdifsw", VX (4, 1585), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10752{"evabsdifub", VX (4, 1586), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10753{"evabsdifsb", VX (4, 1587), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10754{"evabsdifuh", VX (4, 1588), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10755{"evabsdifsh", VX (4, 1589), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10756{"evsaduwaa", VX (4, 1592), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10757{"evsadswaa", VX (4, 1593), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10758{"evsad4ubaaw", VX (4, 1594), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10759{"evsad4sbaaw", VX (4, 1595), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10760{"evsad2uhaaw", VX (4, 1596), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10761{"evsad2shaaw", VX (4, 1597), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10762{"evpkshubs", VX (4, 1600), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10763{"evpkshsbs", VX (4, 1601), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10764{"evpkswuhs", VX (4, 1602), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10765{"evpkswshs", VX (4, 1603), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10766{"evpkuhubs", VX (4, 1604), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10767{"evpkuwuhs", VX (4, 1605), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10768{"evpkswshilvs", VX (4, 1606), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10769{"evpkswgshefrs", VX (4, 1607), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10770{"evpkswshfrs", VX (4, 1608), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10771{"evpkswshilvfrs", VX (4, 1609), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10772{"evpksdswfrs", VX (4, 1610), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10773{"evpksdshefrs", VX (4, 1611), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10774{"evpkuduws", VX (4, 1612), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10775{"evpksdsws", VX (4, 1613), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10776{"evpkswgswfrs", VX (4, 1614), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10777{"evilveh", VX (4, 1616), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10778{"evilveoh", VX (4, 1617), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10779{"evilvhih", VX (4, 1618), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10780{"evilvhiloh", VX (4, 1619), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10781{"evilvloh", VX (4, 1620), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10782{"evilvlohih", VX (4, 1621), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10783{"evilvoeh", VX (4, 1622), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10784{"evilvoh", VX (4, 1623), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10785{"evdlveb", VX (4, 1624), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10786{"evdlveh", VX (4, 1625), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10787{"evdlveob", VX (4, 1626), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10788{"evdlveoh", VX (4, 1627), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10789{"evdlvob", VX (4, 1628), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10790{"evdlvoh", VX (4, 1629), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10791{"evdlvoeb", VX (4, 1630), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10792{"evdlvoeh", VX (4, 1631), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10793{"evmaxbu", VX (4, 1632), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10794{"evmaxbs", VX (4, 1633), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10795{"evmaxhu", VX (4, 1634), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10796{"evmaxhs", VX (4, 1635), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10797{"evmaxwu", VX (4, 1636), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10798{"evmaxws", VX (4, 1637), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10799{"evmaxdu", VX (4, 1638), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10800{"evmaxds", VX (4, 1639), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10801{"evminbu", VX (4, 1640), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10802{"evminbs", VX (4, 1641), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10803{"evminhu", VX (4, 1642), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10804{"evminhs", VX (4, 1643), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10805{"evminwu", VX (4, 1644), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10806{"evminws", VX (4, 1645), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10807{"evmindu", VX (4, 1646), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10808{"evminds", VX (4, 1647), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10809{"evavgwu", VX (4, 1648), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10810{"evavgws", VX (4, 1649), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10811{"evavgbu", VX (4, 1650), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10812{"evavgbs", VX (4, 1651), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10813{"evavghu", VX (4, 1652), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10814{"evavghs", VX (4, 1653), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10815{"evavgdu", VX (4, 1654), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10816{"evavgds", VX (4, 1655), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10817{"evavgwur", VX (4, 1656), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10818{"evavgwsr", VX (4, 1657), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10819{"evavgbur", VX (4, 1658), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10820{"evavgbsr", VX (4, 1659), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10821{"evavghur", VX (4, 1660), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10822{"evavghsr", VX (4, 1661), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10823{"evavgdur", VX (4, 1662), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10824{"evavgdsr", VX (4, 1663), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
10825};
10826
2ceb7719 10827const unsigned int spe2_num_opcodes =
74081948 10828 sizeof (spe2_opcodes) / sizeof (spe2_opcodes[0]);