Power10 VSX 32-byte storage access
[deliverable/binutils-gdb.git] / opcodes / ppc-opc.c
CommitLineData
252b5132 1/* ppc-opc.c -- PowerPC opcode list
b3adc24a 2 Copyright (C) 1994-2020 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
b80c7270
AM
561/* The D field in a DX form instruction when the field is split
562 into separate D0, D1 and D2 fields. */
989993d8 563
0f873fd5
PB
564static uint64_t
565insert_dxd (uint64_t insn,
566 int64_t value,
b80c7270
AM
567 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
568 const char **errmsg ATTRIBUTE_UNUSED)
569{
570 return insn | (value & 0xffc1) | ((value & 0x3e) << 15);
571}
e43de63c 572
0f873fd5
PB
573static int64_t
574extract_dxd (uint64_t insn,
b80c7270
AM
575 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
576 int *invalid ATTRIBUTE_UNUSED)
577{
0f873fd5 578 uint64_t dxd = (insn & 0xffc1) | ((insn >> 15) & 0x3e);
b80c7270
AM
579 return (dxd ^ 0x8000) - 0x8000;
580}
252b5132 581
0f873fd5
PB
582static uint64_t
583insert_dxdn (uint64_t insn,
584 int64_t value,
b80c7270
AM
585 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
586 const char **errmsg ATTRIBUTE_UNUSED)
587{
588 return insert_dxd (insn, -value, dialect, errmsg);
589}
252b5132 590
0f873fd5
PB
591static int64_t
592extract_dxdn (uint64_t insn,
b80c7270 593 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
9cf7e568 594 int *invalid)
b80c7270
AM
595{
596 return -extract_dxd (insn, dialect, invalid);
597}
fdd12ef3 598
8acf1435
PB
599/* The D field in a 64-bit D form prefix instruction when the field is split
600 into separate D0 and D1 fields. */
601
602static uint64_t
603insert_d34 (uint64_t insn,
604 int64_t value,
605 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
606 const char **errmsg ATTRIBUTE_UNUSED)
607{
608 return insn | ((value & 0x3ffff0000ULL) << 16) | (value & 0xffff);
609}
610
611static int64_t
612extract_d34 (uint64_t insn,
613 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
614 int *invalid ATTRIBUTE_UNUSED)
615{
616 int64_t mask = 1ULL << 33;
617 int64_t value = ((insn >> 16) & 0x3ffff0000ULL) | (insn & 0xffff);
618 value = (value ^ mask) - mask;
619 return value;
620}
621
622/* The NSI34 field in an 8-byte D form prefix instruction. This is the same
623 as the SI34 field, only negated. The extraction function always marks it
624 as invalid, since we never want to recognize an instruction which uses
625 a field of this type. */
626
627static uint64_t
628insert_nsi34 (uint64_t insn,
629 int64_t value,
630 ppc_cpu_t dialect,
631 const char **errmsg)
632{
633 return insert_d34 (insn, -value, dialect, errmsg);
634}
635
636static int64_t
637extract_nsi34 (uint64_t insn,
638 ppc_cpu_t dialect,
639 int *invalid)
640{
641 int64_t value = extract_d34 (insn, dialect, invalid);
642 *invalid = 1;
643 return -value;
644}
645
646/* The R field in an 8-byte prefix instruction when there are restrictions
647 between R's value and the RA value (ie, they cannot both be non zero). */
648
649static uint64_t
650insert_pcrel (uint64_t insn,
651 int64_t value,
652 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
653 const char **errmsg)
654{
655 value &= 0x1;
656 int64_t ra = (insn >> 16) & 0x1f;
657 if (ra != 0 && value != 0)
658 *errmsg = _("invalid R operand");
659
660 return insn | (value << 52);
661}
662
663static int64_t
664extract_pcrel (uint64_t insn,
665 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
666 int *invalid)
667{
668 /* If called with *invalid < 0 to return the value for missing
669 operands, *invalid will be the negative count of missing operands
670 including this one. Return a default value of 1 if the PRA0/PRAQ
671 operand was also omitted (ie. *invalid is -2). Return a default
672 value of 0 if the PRA0/PRAQ operand was not omitted
673 (ie. *invalid is -1). */
674 if (*invalid < 0)
675 return ~ *invalid & 1;
676
677 int64_t ra = (insn >> 16) & 0x1f;
678 int64_t pcrel = (insn >> 52) & 0x1;
679 if (ra != 0 && pcrel != 0)
680 *invalid = 1;
681
682 return pcrel;
683}
684
685/* Variant of extract_pcrel that sets invalid for R bit set. The idea
686 is to disassemble "paddi rt,0,offset,1" as "pla rt,offset". */
687
688static int64_t
689extract_pcrel0 (uint64_t insn,
690 ppc_cpu_t dialect,
691 int *invalid)
692{
693 int64_t pcrel = extract_pcrel (insn, dialect, invalid);
694 if (pcrel)
695 *invalid = 1;
696 return pcrel;
697}
698
b80c7270 699/* FXM mask in mfcr and mtcrf instructions. */
adadcc0c 700
0f873fd5
PB
701static uint64_t
702insert_fxm (uint64_t insn,
703 int64_t value,
b80c7270
AM
704 ppc_cpu_t dialect,
705 const char **errmsg)
706{
707 /* If we're handling the mfocrf and mtocrf insns ensure that exactly
708 one bit of the mask field is set. */
709 if ((insn & (1 << 20)) != 0)
710 {
711 if (value == 0 || (value & -value) != value)
712 {
713 *errmsg = _("invalid mask field");
714 value = 0;
715 }
716 }
252b5132 717
b80c7270
AM
718 /* If only one bit of the FXM field is set, we can use the new form
719 of the instruction, which is faster. Unlike the Power4 branch hint
720 encoding, this is not backward compatible. Do not generate the
721 new form unless -mpower4 has been given, or -many and the two
722 operand form of mfcr was used. */
723 else if (value > 0
724 && (value & -value) == value
725 && ((dialect & PPC_OPCODE_POWER4) != 0
726 || ((dialect & PPC_OPCODE_ANY) != 0
727 && (insn & (0x3ff << 1)) == 19 << 1)))
728 insn |= 1 << 20;
252b5132 729
b80c7270
AM
730 /* Any other value on mfcr is an error. */
731 else if ((insn & (0x3ff << 1)) == 19 << 1)
732 {
733 /* A value of -1 means we used the one operand form of
734 mfcr which is valid. */
735 if (value != -1)
736 *errmsg = _("invalid mfcr mask");
737 value = 0;
738 }
252b5132 739
b80c7270
AM
740 return insn | ((value & 0xff) << 12);
741}
1f6c9eb0 742
0f873fd5
PB
743static int64_t
744extract_fxm (uint64_t insn,
b80c7270
AM
745 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
746 int *invalid)
747{
9cf7e568
AM
748 /* Return a value of -1 for a missing optional operand, which is
749 used as a flag by insert_fxm. */
750 if (*invalid < 0)
751 return -1;
252b5132 752
9cf7e568 753 int64_t mask = (insn >> 12) & 0xff;
b80c7270
AM
754 /* Is this a Power4 insn? */
755 if ((insn & (1 << 20)) != 0)
756 {
757 /* Exactly one bit of MASK should be set. */
758 if (mask == 0 || (mask & -mask) != mask)
759 *invalid = 1;
760 }
252b5132 761
b80c7270
AM
762 /* Check that non-power4 form of mfcr has a zero MASK. */
763 else if ((insn & (0x3ff << 1)) == 19 << 1)
764 {
765 if (mask != 0)
766 *invalid = 1;
767 else
768 mask = -1;
769 }
989993d8 770
b80c7270
AM
771 return mask;
772}
cee62821 773
afef4fe9
PB
774/* L field in the paste. instruction. */
775
776static uint64_t
777insert_l1opt (uint64_t insn,
778 int64_t value,
779 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
780 const char **errmsg ATTRIBUTE_UNUSED)
781{
782 return insn | ((value & 1) << 21);
783}
784
785static int64_t
786extract_l1opt (uint64_t insn,
787 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
788 int *invalid)
789{
790 /* Return a value of 1 for a missing optional operand. */
791 if (*invalid < 0)
792 return 1;
793
794 return (insn >> 21) & 1;
795}
796
0f873fd5
PB
797static uint64_t
798insert_li20 (uint64_t insn,
799 int64_t value,
b80c7270
AM
800 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
801 const char **errmsg ATTRIBUTE_UNUSED)
802{
803 return (insn
804 | ((value & 0xf0000) >> 5)
805 | ((value & 0x0f800) << 5)
806 | (value & 0x7ff));
807}
a680de9a 808
0f873fd5
PB
809static int64_t
810extract_li20 (uint64_t insn,
b80c7270
AM
811 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
812 int *invalid ATTRIBUTE_UNUSED)
813{
f143cb5f
AM
814 return ((((insn << 5) & 0xf0000)
815 | ((insn >> 5) & 0xf800)
816 | (insn & 0x7ff)) ^ 0x80000) - 0x80000;
b80c7270 817}
e3c2f928 818
b80c7270
AM
819/* The 2-bit L field in a SYNC or WC field in a WAIT instruction.
820 For SYNC, some L values are reserved:
821 * Value 3 is reserved on newer server cpus.
822 * Values 2 and 3 are reserved on all other cpus. */
adadcc0c 823
0f873fd5
PB
824static uint64_t
825insert_ls (uint64_t insn,
826 int64_t value,
b80c7270
AM
827 ppc_cpu_t dialect,
828 const char **errmsg)
829{
830 /* For SYNC, some L values are illegal. */
831 if (((insn >> 1) & 0x3ff) == 598)
832 {
0f873fd5 833 int64_t max_lvalue = (dialect & PPC_OPCODE_POWER4) ? 2 : 1;
b80c7270 834 if (value > max_lvalue)
71553718 835 *errmsg = _("illegal L operand value");
b80c7270 836 }
1f6c9eb0 837
b80c7270
AM
838 return insn | ((value & 0x3) << 21);
839}
b9c361e0 840
0f873fd5
PB
841static int64_t
842extract_ls (uint64_t insn,
b80c7270
AM
843 ppc_cpu_t dialect,
844 int *invalid)
845{
9cf7e568
AM
846 /* Missing optional operands have a value of zero. */
847 if (*invalid < 0)
848 return 0;
b9c361e0 849
9cf7e568 850 uint64_t lvalue = (insn >> 21) & 3;
b80c7270
AM
851 if (((insn >> 1) & 0x3ff) == 598)
852 {
0f873fd5 853 uint64_t max_lvalue = (dialect & PPC_OPCODE_POWER4) ? 2 : 1;
b80c7270
AM
854 if (lvalue > max_lvalue)
855 *invalid = 1;
856 }
857 return lvalue;
858}
b9c361e0 859
b80c7270
AM
860/* The 4-bit E field in a sync instruction that accepts 2 operands.
861 If ESYNC is non-zero, then the L field must be either 0 or 1 and
862 the complement of ESYNC-bit2. */
b9c361e0 863
0f873fd5
PB
864static uint64_t
865insert_esync (uint64_t insn,
866 int64_t value,
9cf7e568 867 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
b80c7270
AM
868 const char **errmsg)
869{
0f873fd5 870 uint64_t ls = (insn >> 21) & 0x03;
b9c361e0 871
9cf7e568
AM
872 if (value != 0
873 && ((~value >> 1) & 0x1) != ls)
b80c7270 874 *errmsg = _("incompatible L operand value");
b9c361e0 875
b80c7270
AM
876 return insn | ((value & 0xf) << 16);
877}
b9c361e0 878
0f873fd5
PB
879static int64_t
880extract_esync (uint64_t insn,
9cf7e568 881 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
b80c7270
AM
882 int *invalid)
883{
8acf1435 884 /* Missing optional operands have a value of zero. */
9cf7e568
AM
885 if (*invalid < 0)
886 return 0;
b9c361e0 887
9cf7e568
AM
888 uint64_t ls = (insn >> 21) & 0x3;
889 uint64_t value = (insn >> 16) & 0xf;
890 if (value != 0
891 && ((~value >> 1) & 0x1) != ls)
b80c7270 892 *invalid = 1;
9cf7e568 893 return value;
b80c7270 894}
e3c2f928 895
b80c7270
AM
896/* The MB and ME fields in an M form instruction expressed as a single
897 operand which is itself a bitmask. The extraction function always
898 marks it as invalid, since we never want to recognize an
899 instruction which uses a field of this type. */
5817ffd1 900
0f873fd5
PB
901static uint64_t
902insert_mbe (uint64_t insn,
903 int64_t value,
b80c7270
AM
904 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
905 const char **errmsg)
906{
0f873fd5
PB
907 uint64_t uval, mask;
908 long mb, me, mx, count, last;
252b5132 909
b80c7270 910 uval = value;
1f6c9eb0 911
b80c7270
AM
912 if (uval == 0)
913 {
914 *errmsg = _("illegal bitmask");
915 return insn;
916 }
252b5132 917
b80c7270
AM
918 mb = 0;
919 me = 32;
920 if ((uval & 1) != 0)
921 last = 1;
922 else
923 last = 0;
924 count = 0;
252b5132 925
b80c7270
AM
926 /* mb: location of last 0->1 transition */
927 /* me: location of last 1->0 transition */
928 /* count: # transitions */
b9c361e0 929
0f873fd5 930 for (mx = 0, mask = (uint64_t) 1 << 31; mx < 32; ++mx, mask >>= 1)
b80c7270
AM
931 {
932 if ((uval & mask) && !last)
933 {
934 ++count;
935 mb = mx;
936 last = 1;
937 }
938 else if (!(uval & mask) && last)
939 {
940 ++count;
941 me = mx;
942 last = 0;
943 }
944 }
945 if (me == 0)
946 me = 32;
252b5132 947
b80c7270
AM
948 if (count != 2 && (count != 0 || ! last))
949 *errmsg = _("illegal bitmask");
252b5132 950
b80c7270
AM
951 return insn | (mb << 6) | ((me - 1) << 1);
952}
252b5132 953
0f873fd5
PB
954static int64_t
955extract_mbe (uint64_t insn,
b80c7270
AM
956 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
957 int *invalid)
958{
0f873fd5
PB
959 int64_t ret;
960 long mb, me;
961 long i;
252b5132 962
b80c7270 963 *invalid = 1;
f5c120c5 964
b80c7270
AM
965 mb = (insn >> 6) & 0x1f;
966 me = (insn >> 1) & 0x1f;
967 if (mb < me + 1)
968 {
969 ret = 0;
970 for (i = mb; i <= me; i++)
0f873fd5 971 ret |= (uint64_t) 1 << (31 - i);
b80c7270
AM
972 }
973 else if (mb == me + 1)
974 ret = ~0;
975 else /* (mb > me + 1) */
976 {
977 ret = ~0;
978 for (i = me + 1; i < mb; i++)
0f873fd5 979 ret &= ~((uint64_t) 1 << (31 - i));
b80c7270
AM
980 }
981 return ret;
982}
aea77599 983
b80c7270
AM
984/* The MB or ME field in an MD or MDS form instruction. The high bit
985 is wrapped to the low end. */
252b5132 986
0f873fd5
PB
987static uint64_t
988insert_mb6 (uint64_t insn,
989 int64_t value,
b80c7270
AM
990 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
991 const char **errmsg ATTRIBUTE_UNUSED)
992{
993 return insn | ((value & 0x1f) << 6) | (value & 0x20);
994}
252b5132 995
0f873fd5
PB
996static int64_t
997extract_mb6 (uint64_t insn,
b80c7270
AM
998 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
999 int *invalid ATTRIBUTE_UNUSED)
1000{
1001 return ((insn >> 6) & 0x1f) | (insn & 0x20);
1002}
252b5132 1003
b80c7270
AM
1004/* The NB field in an X form instruction. The value 32 is stored as
1005 0. */
786e2c0f 1006
0f873fd5
PB
1007static int64_t
1008extract_nb (uint64_t insn,
b80c7270
AM
1009 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1010 int *invalid ATTRIBUTE_UNUSED)
1011{
0f873fd5 1012 int64_t ret;
a47622ac 1013
b80c7270
AM
1014 ret = (insn >> 11) & 0x1f;
1015 if (ret == 0)
1016 ret = 32;
1017 return ret;
1018}
b9c361e0 1019
b80c7270
AM
1020/* The NB field in an lswi instruction, which has special value
1021 restrictions. The value 32 is stored as 0. */
b9c361e0 1022
0f873fd5
PB
1023static uint64_t
1024insert_nbi (uint64_t insn,
1025 int64_t value,
b80c7270
AM
1026 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1027 const char **errmsg ATTRIBUTE_UNUSED)
1028{
0f873fd5
PB
1029 int64_t rtvalue = (insn >> 21) & 0x1f;
1030 int64_t ravalue = (insn >> 16) & 0x1f;
b9c361e0 1031
b80c7270
AM
1032 if (value == 0)
1033 value = 32;
1034 if (rtvalue + (value + 3) / 4 > (rtvalue > ravalue ? ravalue + 32
1035 : ravalue))
1036 *errmsg = _("address register in load range");
1037 return insn | ((value & 0x1f) << 11);
1038}
786e2c0f 1039
b80c7270
AM
1040/* The NSI field in a D form instruction. This is the same as the SI
1041 field, only negated. The extraction function always marks it as
1042 invalid, since we never want to recognize an instruction which uses
1043 a field of this type. */
786e2c0f 1044
0f873fd5
PB
1045static uint64_t
1046insert_nsi (uint64_t insn,
1047 int64_t value,
b80c7270
AM
1048 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1049 const char **errmsg ATTRIBUTE_UNUSED)
1050{
1051 return insn | (-value & 0xffff);
1052}
786e2c0f 1053
0f873fd5
PB
1054static int64_t
1055extract_nsi (uint64_t insn,
b80c7270
AM
1056 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1057 int *invalid)
1058{
1059 *invalid = 1;
1060 return -(((insn & 0xffff) ^ 0x8000) - 0x8000);
1061}
786e2c0f 1062
b80c7270
AM
1063/* The RA field in a D or X form instruction which is an updating
1064 load, which means that the RA field may not be zero and may not
1065 equal the RT field. */
786e2c0f 1066
0f873fd5
PB
1067static uint64_t
1068insert_ral (uint64_t insn,
1069 int64_t value,
b80c7270
AM
1070 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1071 const char **errmsg)
1072{
1073 if (value == 0
0f873fd5 1074 || (uint64_t) value == ((insn >> 21) & 0x1f))
b80c7270
AM
1075 *errmsg = "invalid register operand when updating";
1076 return insn | ((value & 0x1f) << 16);
1077}
786e2c0f 1078
0f873fd5
PB
1079static int64_t
1080extract_ral (uint64_t insn,
b80c7270
AM
1081 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1082 int *invalid)
1083{
0f873fd5
PB
1084 int64_t rtvalue = (insn >> 21) & 0x1f;
1085 int64_t ravalue = (insn >> 16) & 0x1f;
fb048c26 1086
b80c7270
AM
1087 if (rtvalue == ravalue || ravalue == 0)
1088 *invalid = 1;
1089 return ravalue;
1090}
a680de9a 1091
b80c7270
AM
1092/* The RA field in an lmw instruction, which has special value
1093 restrictions. */
c0637f3a 1094
0f873fd5
PB
1095static uint64_t
1096insert_ram (uint64_t insn,
1097 int64_t value,
b80c7270
AM
1098 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1099 const char **errmsg)
1100{
0f873fd5 1101 if ((uint64_t) value >= ((insn >> 21) & 0x1f))
b80c7270
AM
1102 *errmsg = _("index register in load range");
1103 return insn | ((value & 0x1f) << 16);
1104}
c0637f3a 1105
0f873fd5
PB
1106static int64_t
1107extract_ram (uint64_t insn,
b80c7270
AM
1108 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1109 int *invalid)
1110{
0f873fd5
PB
1111 uint64_t rtvalue = (insn >> 21) & 0x1f;
1112 uint64_t ravalue = (insn >> 16) & 0x1f;
ff3a6ee3 1113
b80c7270
AM
1114 if (ravalue >= rtvalue)
1115 *invalid = 1;
1116 return ravalue;
1117}
23976049 1118
b80c7270
AM
1119/* The RA field in the DQ form lq or an lswx instruction, which have special
1120 value restrictions. */
e3c2f928 1121
0f873fd5
PB
1122static uint64_t
1123insert_raq (uint64_t insn,
1124 int64_t value,
b80c7270
AM
1125 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1126 const char **errmsg)
1127{
0f873fd5 1128 int64_t rtvalue = (insn >> 21) & 0x1f;
23976049 1129
b80c7270
AM
1130 if (value == rtvalue)
1131 *errmsg = _("source and target register operands must be different");
1132 return insn | ((value & 0x1f) << 16);
1133}
e3c2f928 1134
0f873fd5
PB
1135static int64_t
1136extract_raq (uint64_t insn,
b80c7270
AM
1137 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1138 int *invalid)
1139{
8acf1435 1140 /* Missing optional operands have a value of zero. */
9cf7e568
AM
1141 if (*invalid < 0)
1142 return 0;
1143
0f873fd5
PB
1144 uint64_t rtvalue = (insn >> 21) & 0x1f;
1145 uint64_t ravalue = (insn >> 16) & 0x1f;
b80c7270
AM
1146 if (ravalue == rtvalue)
1147 *invalid = 1;
1148 return ravalue;
1149}
e3c2f928 1150
b80c7270
AM
1151/* The RA field in a D or X form instruction which is an updating
1152 store or an updating floating point load, which means that the RA
1153 field may not be zero. */
ff3a6ee3 1154
0f873fd5
PB
1155static uint64_t
1156insert_ras (uint64_t insn,
1157 int64_t value,
b80c7270
AM
1158 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1159 const char **errmsg)
1160{
1161 if (value == 0)
1162 *errmsg = _("invalid register operand when updating");
1163 return insn | ((value & 0x1f) << 16);
1164}
c3d65c1c 1165
0f873fd5
PB
1166static int64_t
1167extract_ras (uint64_t insn,
b80c7270
AM
1168 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1169 int *invalid)
1170{
0f873fd5 1171 uint64_t ravalue = (insn >> 16) & 0x1f;
c3d65c1c 1172
b80c7270
AM
1173 if (ravalue == 0)
1174 *invalid = 1;
1175 return ravalue;
1176}
c3d65c1c 1177
98553ad3
PB
1178/* The RS and RB fields in an X form instruction when they must be the same.
1179 This is used for extended mnemonics like mr. The extraction function
1180 enforces that the fields are the same. */
c3d65c1c 1181
0f873fd5 1182static uint64_t
98553ad3
PB
1183insert_rsb (uint64_t insn,
1184 int64_t value,
b80c7270
AM
1185 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1186 const char **errmsg ATTRIBUTE_UNUSED)
1187{
98553ad3
PB
1188 value &= 0x1f;
1189 return insn | (value << 21) | (value << 11);
b80c7270 1190}
5ae2e65e 1191
0f873fd5 1192static int64_t
98553ad3 1193extract_rsb (uint64_t insn,
b80c7270
AM
1194 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1195 int *invalid)
1196{
98553ad3
PB
1197 int64_t rs = (insn >> 21) & 0x1f;
1198 int64_t rb = (insn >> 11) & 0x1f;
1199
1200 if (rs != rb)
b80c7270 1201 *invalid = 1;
98553ad3 1202 return rs;
b80c7270 1203}
702f0fb4 1204
b80c7270
AM
1205/* The RB field in an lswx instruction, which has special value
1206 restrictions. */
702f0fb4 1207
0f873fd5
PB
1208static uint64_t
1209insert_rbx (uint64_t insn,
1210 int64_t value,
b80c7270
AM
1211 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1212 const char **errmsg)
1213{
0f873fd5 1214 int64_t rtvalue = (insn >> 21) & 0x1f;
a680de9a 1215
b80c7270
AM
1216 if (value == rtvalue)
1217 *errmsg = _("source and target register operands must be different");
1218 return insn | ((value & 0x1f) << 11);
1219}
a680de9a 1220
0f873fd5
PB
1221static int64_t
1222extract_rbx (uint64_t insn,
b80c7270
AM
1223 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1224 int *invalid)
1225{
0f873fd5
PB
1226 uint64_t rtvalue = (insn >> 21) & 0x1f;
1227 uint64_t rbvalue = (insn >> 11) & 0x1f;
702f0fb4 1228
b80c7270
AM
1229 if (rbvalue == rtvalue)
1230 *invalid = 1;
1231 return rbvalue;
1232}
702f0fb4 1233
b80c7270 1234/* The SCI8 field is made up of SCL and {U,N}I8 fields. */
0f873fd5
PB
1235static uint64_t
1236insert_sci8 (uint64_t insn,
1237 int64_t value,
b80c7270
AM
1238 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1239 const char **errmsg)
1240{
0f873fd5
PB
1241 uint64_t fill_scale = 0;
1242 uint64_t ui8 = value;
c0637f3a 1243
b80c7270
AM
1244 if ((ui8 & 0xffffff00) == 0)
1245 ;
1246 else if ((ui8 & 0xffffff00) == 0xffffff00)
1247 fill_scale = 0x400;
1248 else if ((ui8 & 0xffff00ff) == 0)
1249 {
1250 fill_scale = 1 << 8;
1251 ui8 >>= 8;
1252 }
1253 else if ((ui8 & 0xffff00ff) == 0xffff00ff)
1254 {
1255 fill_scale = 0x400 | (1 << 8);
1256 ui8 >>= 8;
1257 }
1258 else if ((ui8 & 0xff00ffff) == 0)
1259 {
1260 fill_scale = 2 << 8;
1261 ui8 >>= 16;
1262 }
1263 else if ((ui8 & 0xff00ffff) == 0xff00ffff)
1264 {
1265 fill_scale = 0x400 | (2 << 8);
1266 ui8 >>= 16;
1267 }
1268 else if ((ui8 & 0x00ffffff) == 0)
1269 {
1270 fill_scale = 3 << 8;
1271 ui8 >>= 24;
1272 }
1273 else if ((ui8 & 0x00ffffff) == 0x00ffffff)
1274 {
1275 fill_scale = 0x400 | (3 << 8);
1276 ui8 >>= 24;
1277 }
1278 else
1279 {
1280 *errmsg = _("illegal immediate value");
1281 ui8 = 0;
1282 }
702f0fb4 1283
b80c7270
AM
1284 return insn | fill_scale | (ui8 & 0xff);
1285}
ea192fa3 1286
0f873fd5
PB
1287static int64_t
1288extract_sci8 (uint64_t insn,
b80c7270
AM
1289 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1290 int *invalid ATTRIBUTE_UNUSED)
1291{
0f873fd5
PB
1292 int64_t fill = insn & 0x400;
1293 int64_t scale_factor = (insn & 0x300) >> 5;
1294 int64_t value = (insn & 0xff) << scale_factor;
081ba1b3 1295
b80c7270 1296 if (fill != 0)
0f873fd5 1297 value |= ~((int64_t) 0xff << scale_factor);
b80c7270
AM
1298 return value;
1299}
081ba1b3 1300
0f873fd5
PB
1301static uint64_t
1302insert_sci8n (uint64_t insn,
1303 int64_t value,
b80c7270
AM
1304 ppc_cpu_t dialect,
1305 const char **errmsg)
1306{
1307 return insert_sci8 (insn, -value, dialect, errmsg);
1308}
081ba1b3 1309
0f873fd5
PB
1310static int64_t
1311extract_sci8n (uint64_t insn,
b80c7270
AM
1312 ppc_cpu_t dialect,
1313 int *invalid)
1314{
1315 return -extract_sci8 (insn, dialect, invalid);
1316}
081ba1b3 1317
0f873fd5
PB
1318static uint64_t
1319insert_oimm (uint64_t insn,
1320 int64_t value,
b80c7270
AM
1321 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1322 const char **errmsg ATTRIBUTE_UNUSED)
1323{
1324 return insn | (((value - 1) & 0x1f) << 4);
1325}
b9c361e0 1326
0f873fd5
PB
1327static int64_t
1328extract_oimm (uint64_t insn,
b80c7270
AM
1329 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1330 int *invalid ATTRIBUTE_UNUSED)
1331{
1332 return ((insn >> 4) & 0x1f) + 1;
1333}
b9c361e0 1334
b80c7270 1335/* The SH field in an MD form instruction. This is split. */
b9c361e0 1336
0f873fd5
PB
1337static uint64_t
1338insert_sh6 (uint64_t insn,
1339 int64_t value,
b80c7270
AM
1340 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1341 const char **errmsg ATTRIBUTE_UNUSED)
1342{
71553718 1343 return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
b80c7270 1344}
9b4e5766 1345
0f873fd5
PB
1346static int64_t
1347extract_sh6 (uint64_t insn,
b80c7270
AM
1348 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1349 int *invalid ATTRIBUTE_UNUSED)
1350{
71553718 1351 return ((insn >> 11) & 0x1f) | ((insn << 4) & 0x20);
b80c7270 1352}
a680de9a 1353
b80c7270
AM
1354/* The SPR field in an XFX form instruction. This is flipped--the
1355 lower 5 bits are stored in the upper 5 and vice- versa. */
9b4e5766 1356
0f873fd5
PB
1357static uint64_t
1358insert_spr (uint64_t insn,
1359 int64_t value,
b80c7270
AM
1360 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1361 const char **errmsg ATTRIBUTE_UNUSED)
1362{
1363 return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
1364}
9b4e5766 1365
0f873fd5
PB
1366static int64_t
1367extract_spr (uint64_t insn,
b80c7270
AM
1368 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1369 int *invalid ATTRIBUTE_UNUSED)
1370{
1371 return ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
1372}
9b4e5766 1373
fa758a70
AC
1374/* Some dialects have 8 [DI]BAT registers instead of the standard 4. */
1375#define ALLOW8_BAT (PPC_OPCODE_750)
1376
16065af1
AM
1377static uint64_t
1378insert_sprbat (uint64_t insn,
1379 int64_t value,
fa758a70
AC
1380 ppc_cpu_t dialect,
1381 const char **errmsg)
1382{
71553718
AM
1383 if ((uint64_t) value > 7
1384 || ((uint64_t) value > 3 && (dialect & ALLOW8_BAT) == 0))
fa758a70
AC
1385 *errmsg = _("invalid bat number");
1386
1387 /* If this is [di]bat4..7 then use spr 560..575, otherwise 528..543. */
71553718 1388 if ((uint64_t) value > 3)
fa758a70
AC
1389 value = ((value & 3) << 6) | 1;
1390 else
1391 value = value << 6;
1392
1393 return insn | (value << 11);
1394}
1395
16065af1
AM
1396static int64_t
1397extract_sprbat (uint64_t insn,
fa758a70
AC
1398 ppc_cpu_t dialect,
1399 int *invalid)
1400{
16065af1 1401 uint64_t val = (insn >> 17) & 0x3;
fa758a70
AC
1402
1403 val = val + ((insn >> 9) & 0x4);
1404 if (val > 3 && (dialect & ALLOW8_BAT) == 0)
1405 *invalid = 1;
1406 return val;
1407}
1408
b80c7270
AM
1409/* Some dialects have 8 SPRG registers instead of the standard 4. */
1410#define ALLOW8_SPRG (PPC_OPCODE_BOOKE | PPC_OPCODE_405)
066be9f7 1411
0f873fd5
PB
1412static uint64_t
1413insert_sprg (uint64_t insn,
1414 int64_t value,
b80c7270
AM
1415 ppc_cpu_t dialect,
1416 const char **errmsg)
1417{
71553718
AM
1418 if ((uint64_t) value > 7
1419 || ((uint64_t) value > 3 && (dialect & ALLOW8_SPRG) == 0))
b80c7270 1420 *errmsg = _("invalid sprg number");
066be9f7 1421
b80c7270
AM
1422 /* If this is mfsprg4..7 then use spr 260..263 which can be read in
1423 user mode. Anything else must use spr 272..279. */
71553718 1424 if ((uint64_t) value <= 3 || (insn & 0x100) != 0)
b80c7270 1425 value |= 0x10;
066be9f7 1426
b80c7270
AM
1427 return insn | ((value & 0x17) << 16);
1428}
e0d602ec 1429
0f873fd5
PB
1430static int64_t
1431extract_sprg (uint64_t insn,
b80c7270
AM
1432 ppc_cpu_t dialect,
1433 int *invalid)
1434{
0f873fd5 1435 uint64_t val = (insn >> 16) & 0x1f;
4bc0608a 1436
b80c7270
AM
1437 /* mfsprg can use 260..263 and 272..279. mtsprg only uses spr 272..279
1438 If not BOOKE, 405 or VLE, then both use only 272..275. */
1439 if ((val - 0x10 > 3 && (dialect & ALLOW8_SPRG) == 0)
1440 || (val - 0x10 > 7 && (insn & 0x100) != 0)
1441 || val <= 3
1442 || (val & 8) != 0)
1443 *invalid = 1;
1444 return val & 7;
1445}
a680de9a 1446
b80c7270
AM
1447/* The TBR field in an XFX instruction. This is just like SPR, but it
1448 is optional. */
e3c2f928 1449
0f873fd5
PB
1450static uint64_t
1451insert_tbr (uint64_t insn,
1452 int64_t value,
b80c7270
AM
1453 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1454 const char **errmsg)
1455{
1456 if (value != 268 && value != 269)
1457 *errmsg = _("invalid tbr number");
1458 return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
1459}
252b5132 1460
0f873fd5
PB
1461static int64_t
1462extract_tbr (uint64_t insn,
b80c7270
AM
1463 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1464 int *invalid)
1465{
8acf1435 1466 /* Missing optional operands have a value of 268. */
9cf7e568
AM
1467 if (*invalid < 0)
1468 return 268;
1469
0f873fd5 1470 int64_t ret = ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
b80c7270
AM
1471 if (ret != 268 && ret != 269)
1472 *invalid = 1;
1473 return ret;
1474}
252b5132 1475
b80c7270 1476/* The XT and XS fields in an XX1 or XX3 form instruction. This is split. */
b9c361e0 1477
0f873fd5
PB
1478static uint64_t
1479insert_xt6 (uint64_t insn,
1480 int64_t value,
b9c361e0
JL
1481 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1482 const char **errmsg ATTRIBUTE_UNUSED)
1483{
b80c7270 1484 return insn | ((value & 0x1f) << 21) | ((value & 0x20) >> 5);
b9c361e0
JL
1485}
1486
0f873fd5
PB
1487static int64_t
1488extract_xt6 (uint64_t insn,
b9c361e0
JL
1489 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1490 int *invalid ATTRIBUTE_UNUSED)
43e65147 1491{
b80c7270 1492 return ((insn << 5) & 0x20) | ((insn >> 21) & 0x1f);
b9c361e0
JL
1493}
1494
b80c7270 1495/* The XT and XS fields in an DQ form VSX instruction. This is split. */
0f873fd5
PB
1496static uint64_t
1497insert_xtq6 (uint64_t insn,
1498 int64_t value,
b80c7270
AM
1499 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1500 const char **errmsg ATTRIBUTE_UNUSED)
1501{
1502 return insn | ((value & 0x1f) << 21) | ((value & 0x20) >> 2);
1503}
1504
0f873fd5
PB
1505static int64_t
1506extract_xtq6 (uint64_t insn,
b80c7270
AM
1507 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1508 int *invalid ATTRIBUTE_UNUSED)
1509{
1510 return ((insn << 2) & 0x20) | ((insn >> 21) & 0x1f);
1511}
1512
1513/* The XA field in an XX3 form instruction. This is split. */
1514
0f873fd5
PB
1515static uint64_t
1516insert_xa6 (uint64_t insn,
1517 int64_t value,
b9c361e0
JL
1518 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1519 const char **errmsg ATTRIBUTE_UNUSED)
1520{
b80c7270 1521 return insn | ((value & 0x1f) << 16) | ((value & 0x20) >> 3);
b9c361e0
JL
1522}
1523
0f873fd5
PB
1524static int64_t
1525extract_xa6 (uint64_t insn,
b9c361e0
JL
1526 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1527 int *invalid ATTRIBUTE_UNUSED)
1528{
b80c7270 1529 return ((insn << 3) & 0x20) | ((insn >> 16) & 0x1f);
b9c361e0
JL
1530}
1531
b80c7270
AM
1532/* The XB field in an XX3 form instruction. This is split. */
1533
0f873fd5
PB
1534static uint64_t
1535insert_xb6 (uint64_t insn,
1536 int64_t value,
b80c7270
AM
1537 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1538 const char **errmsg ATTRIBUTE_UNUSED)
b9c361e0 1539{
b80c7270 1540 return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
b9c361e0
JL
1541}
1542
0f873fd5
PB
1543static int64_t
1544extract_xb6 (uint64_t insn,
b80c7270
AM
1545 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1546 int *invalid ATTRIBUTE_UNUSED)
b9c361e0 1547{
b80c7270 1548 return ((insn << 4) & 0x20) | ((insn >> 11) & 0x1f);
b9c361e0
JL
1549}
1550
98553ad3
PB
1551/* The XA and XB fields in an XX3 form instruction when they must be the same.
1552 This is used for extended mnemonics like xvmovdp. The extraction function
1553 enforces that the fields are the same. */
b80c7270 1554
0f873fd5 1555static uint64_t
98553ad3
PB
1556insert_xab6 (uint64_t insn,
1557 int64_t value,
1558 ppc_cpu_t dialect,
1559 const char **errmsg)
b9c361e0 1560{
98553ad3
PB
1561 return insert_xa6 (insn, value, dialect, errmsg)
1562 | insert_xb6 (insn, value, dialect, errmsg);
b9c361e0
JL
1563}
1564
0f873fd5 1565static int64_t
98553ad3
PB
1566extract_xab6 (uint64_t insn,
1567 ppc_cpu_t dialect,
b80c7270 1568 int *invalid)
b9c361e0 1569{
98553ad3
PB
1570 int64_t xa6 = extract_xa6 (insn, dialect, invalid);
1571 int64_t xb6 = extract_xb6 (insn, dialect, invalid);
1572
1573 if (xa6 != xb6)
b80c7270 1574 *invalid = 1;
98553ad3 1575 return xa6;
b9c361e0
JL
1576}
1577
b80c7270 1578/* The XC field in an XX4 form instruction. This is split. */
252b5132 1579
0f873fd5
PB
1580static uint64_t
1581insert_xc6 (uint64_t insn,
1582 int64_t value,
fa452fa6 1583 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1584 const char **errmsg ATTRIBUTE_UNUSED)
252b5132 1585{
b80c7270 1586 return insn | ((value & 0x1f) << 6) | ((value & 0x20) >> 2);
252b5132
RH
1587}
1588
0f873fd5
PB
1589static int64_t
1590extract_xc6 (uint64_t insn,
fa452fa6 1591 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
b80c7270 1592 int *invalid ATTRIBUTE_UNUSED)
252b5132 1593{
b80c7270
AM
1594 return ((insn << 2) & 0x20) | ((insn >> 6) & 0x1f);
1595}
1596
94ba9882
AM
1597/* The split XTp field in a vector paired insn. */
1598
1599static uint64_t
1600insert_xtp (uint64_t insn,
1601 int64_t value,
1602 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1603 const char **errmsg ATTRIBUTE_UNUSED)
1604{
1605 return insn | ((value & 0x1e) << 21) | ((value & 0x20) << (21 - 5));
1606}
1607
1608static int64_t
1609extract_xtp (uint64_t insn,
1610 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1611 int *invalid ATTRIBUTE_UNUSED)
1612{
1613 return ((insn >> (21 - 5)) & 0x20) | ((insn >> 21) & 0x1e);
1614}
1615
0f873fd5
PB
1616static uint64_t
1617insert_dm (uint64_t insn,
1618 int64_t value,
b80c7270
AM
1619 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1620 const char **errmsg)
1621{
1622 if (value != 0 && value != 1)
1623 *errmsg = _("invalid constant");
1624 return insn | (((value) ? 3 : 0) << 8);
1625}
1626
0f873fd5
PB
1627static int64_t
1628extract_dm (uint64_t insn,
b80c7270
AM
1629 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1630 int *invalid)
1631{
0f873fd5 1632 int64_t value = (insn >> 8) & 3;
b80c7270 1633 if (value != 0 && value != 3)
252b5132 1634 *invalid = 1;
b80c7270 1635 return (value) ? 1 : 0;
252b5132
RH
1636}
1637
b80c7270 1638/* The VLESIMM field in an I16A form instruction. This is split. */
252b5132 1639
0f873fd5
PB
1640static uint64_t
1641insert_vlesi (uint64_t insn,
1642 int64_t value,
b80c7270
AM
1643 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1644 const char **errmsg ATTRIBUTE_UNUSED)
252b5132 1645{
b80c7270 1646 return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
252b5132
RH
1647}
1648
0f873fd5
PB
1649static int64_t
1650extract_vlesi (uint64_t insn,
b80c7270
AM
1651 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1652 int *invalid ATTRIBUTE_UNUSED)
252b5132 1653{
0f873fd5 1654 int64_t value = ((insn >> 10) & 0xf800) | (insn & 0x7ff);
b80c7270
AM
1655 value = (value ^ 0x8000) - 0x8000;
1656 return value;
252b5132
RH
1657}
1658
0f873fd5
PB
1659static uint64_t
1660insert_vlensi (uint64_t insn,
1661 int64_t value,
b80c7270
AM
1662 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1663 const char **errmsg ATTRIBUTE_UNUSED)
252b5132 1664{
b80c7270
AM
1665 value = -value;
1666 return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
252b5132 1667}
0f873fd5
PB
1668static int64_t
1669extract_vlensi (uint64_t insn,
b80c7270 1670 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
9cf7e568 1671 int *invalid)
252b5132 1672{
0f873fd5 1673 int64_t value = ((insn >> 10) & 0xf800) | (insn & 0x7ff);
b80c7270
AM
1674 value = (value ^ 0x8000) - 0x8000;
1675 /* Don't use for disassembly. */
1676 *invalid = 1;
1677 return -value;
252b5132
RH
1678}
1679
b80c7270 1680/* The VLEUIMM field in an I16A form instruction. This is split. */
252b5132 1681
0f873fd5
PB
1682static uint64_t
1683insert_vleui (uint64_t insn,
1684 int64_t value,
b80c7270
AM
1685 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1686 const char **errmsg ATTRIBUTE_UNUSED)
252b5132 1687{
b80c7270 1688 return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
252b5132
RH
1689}
1690
0f873fd5
PB
1691static int64_t
1692extract_vleui (uint64_t insn,
b80c7270
AM
1693 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1694 int *invalid ATTRIBUTE_UNUSED)
252b5132 1695{
b80c7270
AM
1696 return ((insn >> 10) & 0xf800) | (insn & 0x7ff);
1697}
8427c424 1698
b80c7270
AM
1699/* The VLEUIMML field in an I16L form instruction. This is split. */
1700
0f873fd5
PB
1701static uint64_t
1702insert_vleil (uint64_t insn,
1703 int64_t value,
b80c7270
AM
1704 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1705 const char **errmsg ATTRIBUTE_UNUSED)
1706{
1707 return insn | ((value & 0xf800) << 5) | (value & 0x7ff);
252b5132
RH
1708}
1709
0f873fd5
PB
1710static int64_t
1711extract_vleil (uint64_t insn,
b80c7270
AM
1712 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1713 int *invalid ATTRIBUTE_UNUSED)
252b5132 1714{
b80c7270 1715 return ((insn >> 5) & 0xf800) | (insn & 0x7ff);
8ebac3aa 1716}
ba4e851b 1717
0f873fd5
PB
1718static uint64_t
1719insert_evuimm1_ex0 (uint64_t insn,
1720 int64_t value,
74081948
AF
1721 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1722 const char **errmsg)
1723{
71553718
AM
1724 if (value <= 0 || value > 0x1f)
1725 *errmsg = _("UIMM = 00000 is illegal");
1726 return insn | ((value & 0x1f) << 11);
74081948
AF
1727}
1728
0f873fd5
PB
1729static int64_t
1730extract_evuimm1_ex0 (uint64_t insn,
74081948
AF
1731 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1732 int *invalid)
1733{
0f873fd5 1734 int64_t value = ((insn >> 11) & 0x1f);
74081948
AF
1735 if (value == 0)
1736 *invalid = 1;
1737
1738 return value;
1739}
1740
0f873fd5
PB
1741static uint64_t
1742insert_evuimm2_ex0 (uint64_t insn,
1743 int64_t value,
b80c7270
AM
1744 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1745 const char **errmsg)
8ebac3aa 1746{
71553718
AM
1747 if (value <= 0 || value > 0x3e)
1748 *errmsg = _("UIMM = 00000 is illegal");
1749 return insn | ((value & 0x3e) << 10);
252b5132
RH
1750}
1751
0f873fd5
PB
1752static int64_t
1753extract_evuimm2_ex0 (uint64_t insn,
b80c7270
AM
1754 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1755 int *invalid)
8ebac3aa 1756{
0f873fd5 1757 int64_t value = ((insn >> 10) & 0x3e);
b80c7270
AM
1758 if (value == 0)
1759 *invalid = 1;
8ebac3aa 1760
b80c7270 1761 return value;
8ebac3aa
AM
1762}
1763
0f873fd5
PB
1764static uint64_t
1765insert_evuimm4_ex0 (uint64_t insn,
1766 int64_t value,
b80c7270
AM
1767 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1768 const char **errmsg)
252b5132 1769{
71553718
AM
1770 if (value <= 0 || value > 0x7c)
1771 *errmsg = _("UIMM = 00000 is illegal");
1772 return insn | ((value & 0x7c) << 9);
252b5132
RH
1773}
1774
0f873fd5
PB
1775static int64_t
1776extract_evuimm4_ex0 (uint64_t insn,
b80c7270
AM
1777 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1778 int *invalid)
252b5132 1779{
0f873fd5 1780 int64_t value = ((insn >> 9) & 0x7c);
b80c7270 1781 if (value == 0)
252b5132 1782 *invalid = 1;
b80c7270 1783
252b5132
RH
1784 return value;
1785}
1786
0f873fd5
PB
1787static uint64_t
1788insert_evuimm8_ex0 (uint64_t insn,
1789 int64_t value,
b80c7270
AM
1790 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1791 const char **errmsg)
1792{
71553718
AM
1793 if (value <= 0 || value > 0xf8)
1794 *errmsg = _("UIMM = 00000 is illegal");
1795 return insn | ((value & 0xf8) << 8);
252b5132
RH
1796}
1797
0f873fd5
PB
1798static int64_t
1799extract_evuimm8_ex0 (uint64_t insn,
b80c7270
AM
1800 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1801 int *invalid)
252b5132 1802{
0f873fd5 1803 int64_t value = ((insn >> 8) & 0xf8);
b80c7270 1804 if (value == 0)
252b5132 1805 *invalid = 1;
252b5132 1806
b80c7270
AM
1807 return value;
1808}
a680de9a 1809
0f873fd5
PB
1810static uint64_t
1811insert_evuimm_lt8 (uint64_t insn,
1812 int64_t value,
74081948
AF
1813 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1814 const char **errmsg)
1815{
71553718
AM
1816 if (value < 0 || value > 7)
1817 *errmsg = _("UIMM values >7 are illegal");
1818 return insn | ((value & 0x7) << 11);
74081948
AF
1819}
1820
0f873fd5
PB
1821static int64_t
1822extract_evuimm_lt8 (uint64_t insn,
74081948
AF
1823 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1824 int *invalid)
1825{
0f873fd5 1826 int64_t value = ((insn >> 11) & 0x1f);
74081948
AF
1827 if (value > 7)
1828 *invalid = 1;
1829
1830 return value;
1831}
1832
0f873fd5
PB
1833static uint64_t
1834insert_evuimm_lt16 (uint64_t insn,
1835 int64_t value,
b80c7270
AM
1836 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1837 const char **errmsg)
a680de9a 1838{
71553718
AM
1839 if (value < 0 || value > 15)
1840 *errmsg = _("UIMM values >15 are illegal");
1841 return insn | ((value & 0xf) << 11);
a680de9a
PB
1842}
1843
0f873fd5
PB
1844static int64_t
1845extract_evuimm_lt16 (uint64_t insn,
b80c7270
AM
1846 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1847 int *invalid)
a680de9a 1848{
0f873fd5 1849 int64_t value = ((insn >> 11) & 0x1f);
b80c7270
AM
1850 if (value > 15)
1851 *invalid = 1;
a680de9a 1852
b80c7270
AM
1853 return value;
1854}
a680de9a 1855
0f873fd5
PB
1856static uint64_t
1857insert_rD_rS_even (uint64_t insn,
1858 int64_t value,
b80c7270
AM
1859 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1860 const char **errmsg)
a680de9a 1861{
71553718
AM
1862 if ((value & 0x1) != 0)
1863 *errmsg = _("GPR odd is illegal");
1864 return insn | ((value & 0x1e) << 21);
a680de9a
PB
1865}
1866
0f873fd5
PB
1867static int64_t
1868extract_rD_rS_even (uint64_t insn,
b80c7270
AM
1869 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1870 int *invalid)
a680de9a 1871{
0f873fd5 1872 int64_t value = ((insn >> 21) & 0x1f);
b80c7270
AM
1873 if ((value & 0x1) != 0)
1874 *invalid = 1;
1875
1876 return value;
a680de9a
PB
1877}
1878
0f873fd5
PB
1879static uint64_t
1880insert_off_lsp (uint64_t insn,
1881 int64_t value,
b80c7270
AM
1882 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1883 const char **errmsg)
a680de9a 1884{
71553718
AM
1885 if (value <= 0 || value > 0x3)
1886 *errmsg = _("invalid offset");
1887 return insn | (value & 0x3);
a680de9a
PB
1888}
1889
0f873fd5
PB
1890static int64_t
1891extract_off_lsp (uint64_t insn,
b80c7270
AM
1892 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1893 int *invalid)
a680de9a 1894{
0f873fd5 1895 int64_t value = (insn & 0x3);
b80c7270
AM
1896 if (value == 0)
1897 *invalid = 1;
1898
1899 return value;
a680de9a 1900}
74081948 1901
0f873fd5
PB
1902static uint64_t
1903insert_off_spe2 (uint64_t insn,
1904 int64_t value,
74081948
AF
1905 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1906 const char **errmsg)
1907{
71553718
AM
1908 if (value <= 0 || value > 0x7)
1909 *errmsg = _("invalid offset");
1910 return insn | (value & 0x7);
74081948
AF
1911}
1912
0f873fd5
PB
1913static int64_t
1914extract_off_spe2 (uint64_t insn,
74081948
AF
1915 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1916 int *invalid)
1917{
0f873fd5 1918 int64_t value = (insn & 0x7);
74081948
AF
1919 if (value == 0)
1920 *invalid = 1;
1921
1922 return value;
1923}
1924
0f873fd5
PB
1925static uint64_t
1926insert_Ddd (uint64_t insn,
1927 int64_t value,
74081948
AF
1928 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1929 const char **errmsg)
1930{
71553718
AM
1931 if (value < 0 || value > 0x7)
1932 *errmsg = _("invalid Ddd value");
1933 return insn | ((value & 0x3) << 11) | ((value & 0x4) >> 2);
74081948
AF
1934}
1935
0f873fd5
PB
1936static int64_t
1937extract_Ddd (uint64_t insn,
74081948
AF
1938 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1939 int *invalid ATTRIBUTE_UNUSED)
1940{
1941 return ((insn >> 11) & 0x3) | ((insn << 2) & 0x4);
1942}
9cf7e568
AM
1943
1944static uint64_t
1945insert_sxl (uint64_t insn,
1946 int64_t value,
1947 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1948 const char **errmsg ATTRIBUTE_UNUSED)
1949{
1950 return insn | ((value & 0x1) << 11);
1951}
1952
1953static int64_t
1954extract_sxl (uint64_t insn,
1955 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1956 int *invalid)
1957{
8acf1435 1958 /* Missing optional operands have a value of one. */
9cf7e568
AM
1959 if (*invalid < 0)
1960 return 1;
1961 return (insn >> 11) & 0x1;
1962}
b80c7270
AM
1963\f
1964/* The operands table.
a680de9a 1965
b80c7270 1966 The fields are bitm, shift, insert, extract, flags.
2fbfdc41 1967
b80c7270
AM
1968 We used to put parens around the various additions, like the one
1969 for BA just below. However, that caused trouble with feeble
1970 compilers with a limit on depth of a parenthesized expression, like
1971 (reportedly) the compiler in Microsoft Developer Studio 5. So we
1972 omit the parens, since the macros are never used in a context where
1973 the addition will be ambiguous. */
1974
1975const struct powerpc_operand powerpc_operands[] =
c168870a 1976{
b80c7270
AM
1977 /* The zero index is used to indicate the end of the list of
1978 operands. */
1979#define UNUSED 0
1980 { 0, 0, NULL, NULL, 0 },
1981
1982 /* The BA field in an XL form instruction. */
1983#define BA UNUSED + 1
1984 /* The BI field in a B form or XL form instruction. */
1985#define BI BA
1986#define BI_MASK (0x1f << 16)
1987 { 0x1f, 16, NULL, NULL, PPC_OPERAND_CR_BIT },
1988
98553ad3
PB
1989 /* The BT, BA and BB fields in a XL form instruction when they must all
1990 be the same. */
1991#define BTAB BA + 1
1992 { 0x1f, 21, insert_btab, extract_btab, PPC_OPERAND_CR_BIT },
b80c7270
AM
1993
1994 /* The BB field in an XL form instruction. */
98553ad3 1995#define BB BTAB + 1
b80c7270
AM
1996#define BB_MASK (0x1f << 11)
1997 { 0x1f, 11, NULL, NULL, PPC_OPERAND_CR_BIT },
1998
98553ad3
PB
1999 /* The BA and BB fields in a XL form instruction when they must be
2000 the same. */
2001#define BAB BB + 1
2002 { 0x1f, 16, insert_bab, extract_bab, PPC_OPERAND_CR_BIT },
2003
2004 /* The VRA and VRB fields in a VX form instruction when they must be the same.
2005 This is used for extended mnemonics like vmr. */
2006#define VAB BAB + 1
2007 { 0x1f, 16, insert_bab, extract_bab, PPC_OPERAND_VR },
2008
2009 /* The RA and RB fields in a VX form instruction when they must be the same.
2010 This is used for extended mnemonics like evmr. */
2011#define RAB VAB + 1
2012 { 0x1f, 16, insert_bab, extract_bab, PPC_OPERAND_GPR },
b80c7270
AM
2013
2014 /* The BD field in a B form instruction. The lower two bits are
2015 forced to zero. */
98553ad3 2016#define BD RAB + 1
b80c7270
AM
2017 { 0xfffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
2018
2019 /* The BD field in a B form instruction when absolute addressing is
2020 used. */
2021#define BDA BD + 1
2022 { 0xfffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
2023
2024 /* The BD field in a B form instruction when the - modifier is used.
2025 This sets the y bit of the BO field appropriately. */
2026#define BDM BDA + 1
2027 { 0xfffc, 0, insert_bdm, extract_bdm,
2028 PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
2029
2030 /* The BD field in a B form instruction when the - modifier is used
2031 and absolute address is used. */
2032#define BDMA BDM + 1
2033 { 0xfffc, 0, insert_bdm, extract_bdm,
2034 PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
2035
2036 /* The BD field in a B form instruction when the + modifier is used.
2037 This sets the y bit of the BO field appropriately. */
2038#define BDP BDMA + 1
2039 { 0xfffc, 0, insert_bdp, extract_bdp,
2040 PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
2041
2042 /* The BD field in a B form instruction when the + modifier is used
2043 and absolute addressing is used. */
2044#define BDPA BDP + 1
2045 { 0xfffc, 0, insert_bdp, extract_bdp,
2046 PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
2047
2048 /* The BF field in an X or XL form instruction. */
2049#define BF BDPA + 1
2050 /* The CRFD field in an X form instruction. */
2051#define CRFD BF
2052 /* The CRD field in an XL form instruction. */
2053#define CRD BF
2054 { 0x7, 23, NULL, NULL, PPC_OPERAND_CR_REG },
2055
2056 /* The BF field in an X or XL form instruction. */
2057#define BFF BF + 1
2058 { 0x7, 23, NULL, NULL, 0 },
2059
2060 /* An optional BF field. This is used for comparison instructions,
2061 in which an omitted BF field is taken as zero. */
2062#define OBF BFF + 1
2063 { 0x7, 23, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
2064
2065 /* The BFA field in an X or XL form instruction. */
2066#define BFA OBF + 1
2067 { 0x7, 18, NULL, NULL, PPC_OPERAND_CR_REG },
2068
2069 /* The BO field in a B form instruction. Certain values are
2070 illegal. */
2071#define BO BFA + 1
2072#define BO_MASK (0x1f << 21)
2073 { 0x1f, 21, insert_bo, extract_bo, 0 },
2074
aae9718e
PB
2075 /* The BO field in a B form instruction when the - modifier is used. */
2076#define BOM BO + 1
2077 { 0x1f, 21, insert_bom, extract_bom, 0 },
2078
2079 /* The BO field in a B form instruction when the + modifier is used. */
2080#define BOP BOM + 1
2081 { 0x1f, 21, insert_bop, extract_bop, 0 },
b80c7270
AM
2082
2083 /* The RM field in an X form instruction. */
aae9718e 2084#define RM BOP + 1
74081948 2085#define DD RM
b80c7270
AM
2086 { 0x3, 11, NULL, NULL, 0 },
2087
2088#define BH RM + 1
2089 { 0x3, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
2090
2091 /* The BT field in an X or XL form instruction. */
2092#define BT BH + 1
2093 { 0x1f, 21, NULL, NULL, PPC_OPERAND_CR_BIT },
2094
96a86c01
AM
2095 /* The BT field in a mtfsb0 or mtfsb1 instruction. */
2096#define BTF BT + 1
2097 { 0x1f, 21, NULL, NULL, PPC_OPERAND_CR_BIT | PPC_OPERAND_CR_REG },
2098
b80c7270 2099 /* The BI16 field in a BD8 form instruction. */
96a86c01 2100#define BI16 BTF + 1
b80c7270
AM
2101 { 0x3, 8, NULL, NULL, PPC_OPERAND_CR_BIT },
2102
2103 /* The BI32 field in a BD15 form instruction. */
2104#define BI32 BI16 + 1
2105 { 0xf, 16, NULL, NULL, PPC_OPERAND_CR_BIT },
98e69875 2106
b80c7270
AM
2107 /* The BO32 field in a BD15 form instruction. */
2108#define BO32 BI32 + 1
2109 { 0x3, 20, NULL, NULL, 0 },
c168870a 2110
b80c7270
AM
2111 /* The B8 field in a BD8 form instruction. */
2112#define B8 BO32 + 1
2113 { 0x1fe, -1, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
c168870a 2114
b80c7270
AM
2115 /* The B15 field in a BD15 form instruction. The lowest bit is
2116 forced to zero. */
2117#define B15 B8 + 1
2118 { 0xfffe, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
c168870a 2119
b80c7270
AM
2120 /* The B24 field in a BD24 form instruction. The lowest bit is
2121 forced to zero. */
2122#define B24 B15 + 1
2123 { 0x1fffffe, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
c168870a 2124
b80c7270
AM
2125 /* The condition register number portion of the BI field in a B form
2126 or XL form instruction. This is used for the extended
2127 conditional branch mnemonics, which set the lower two bits of the
2128 BI field. This field is optional. */
2129#define CR B24 + 1
2130 { 0x7, 18, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
c168870a 2131
b80c7270
AM
2132 /* The CRB field in an X form instruction. */
2133#define CRB CR + 1
2134 /* The MB field in an M form instruction. */
2135#define MB CRB
2136#define MB_MASK (0x1f << 6)
2137 { 0x1f, 6, NULL, NULL, 0 },
c168870a 2138
b80c7270
AM
2139 /* The CRD32 field in an XL form instruction. */
2140#define CRD32 CRB + 1
2141 { 0x3, 21, NULL, NULL, PPC_OPERAND_CR_REG },
c168870a 2142
b80c7270
AM
2143 /* The CRFS field in an X form instruction. */
2144#define CRFS CRD32 + 1
2145 { 0x7, 0, NULL, NULL, PPC_OPERAND_CR_REG },
b9c361e0 2146
b80c7270
AM
2147#define CRS CRFS + 1
2148 { 0x3, 18, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
b9c361e0 2149
b80c7270
AM
2150 /* The CT field in an X form instruction. */
2151#define CT CRS + 1
2152 /* The MO field in an mbar instruction. */
2153#define MO CT
2154 { 0x1f, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
b9c361e0 2155
b80c7270
AM
2156 /* The D field in a D form instruction. This is a displacement off
2157 a register, and implies that the next operand is a register in
2158 parentheses. */
2159#define D CT + 1
2160 { 0xffff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
aea77599 2161
b80c7270
AM
2162 /* The D8 field in a D form instruction. This is a displacement off
2163 a register, and implies that the next operand is a register in
2164 parentheses. */
2165#define D8 D + 1
2166 { 0xff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
7b934113 2167
b80c7270
AM
2168 /* The DCMX field in an X form instruction. */
2169#define DCMX D8 + 1
2170 { 0x7f, 16, NULL, NULL, 0 },
7b934113 2171
b80c7270
AM
2172 /* The split DCMX field in an X form instruction. */
2173#define DCMXS DCMX + 1
2174 { 0x7f, PPC_OPSHIFT_INV, insert_dcmxs, extract_dcmxs, 0 },
73f07bff 2175
b80c7270
AM
2176 /* The DQ field in a DQ form instruction. This is like D, but the
2177 lower four bits are forced to zero. */
2178#define DQ DCMXS + 1
2179 { 0xfff0, 0, NULL, NULL,
2180 PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DQ },
73f07bff 2181
b80c7270
AM
2182 /* The DS field in a DS form instruction. This is like D, but the
2183 lower two bits are forced to zero. */
2184#define DS DQ + 1
2185 { 0xfffc, 0, NULL, NULL,
2186 PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DS },
7b934113 2187
8acf1435
PB
2188 /* The D field in an 8-byte D form prefix instruction. This is a displacement
2189 off a register, and implies that the next operand is a register in
2190 parentheses. */
2191#define D34 DS + 1
0e62b37a 2192 { UINT64_C(0x3ffffffff), PPC_OPSHIFT_INV, insert_d34, extract_d34,
8acf1435
PB
2193 PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
2194
2195 /* The SI field in an 8-byte D form prefix instruction. */
2196#define SI34 D34 + 1
0e62b37a 2197 { UINT64_C(0x3ffffffff), PPC_OPSHIFT_INV, insert_d34, extract_d34, PPC_OPERAND_SIGNED },
8acf1435
PB
2198
2199 /* The NSI field in an 8-byte D form prefix instruction. This is the
2200 same as the SI34 field, only negated. */
2201#define NSI34 SI34 + 1
0e62b37a 2202 { UINT64_C(0x3ffffffff), PPC_OPSHIFT_INV, insert_nsi34, extract_nsi34,
8acf1435
PB
2203 PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
2204
b80c7270
AM
2205 /* The DUIS or BHRBE fields in a XFX form instruction, 10 bits
2206 unsigned imediate */
8acf1435 2207#define DUIS NSI34 + 1
b80c7270
AM
2208#define BHRBE DUIS
2209 { 0x3ff, 11, NULL, NULL, 0 },
aea77599 2210
b80c7270
AM
2211 /* The split D field in a DX form instruction. */
2212#define DXD DUIS + 1
2213 { 0xffff, PPC_OPSHIFT_INV, insert_dxd, extract_dxd,
2214 PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT},
7b934113 2215
b80c7270
AM
2216 /* The split ND field in a DX form instruction.
2217 This is the same as the DX field, only negated. */
2218#define NDXD DXD + 1
2219 { 0xffff, PPC_OPSHIFT_INV, insert_dxdn, extract_dxdn,
2220 PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT},
7b934113 2221
b80c7270
AM
2222 /* The E field in a wrteei instruction. */
2223 /* And the W bit in the pair singles instructions. */
2224 /* And the ST field in a VX form instruction. */
2225#define E NDXD + 1
2226#define PSW E
2227#define ST E
2228 { 0x1, 15, NULL, NULL, 0 },
aea77599 2229
b80c7270
AM
2230 /* The FL1 field in a POWER SC form instruction. */
2231#define FL1 E + 1
2232 /* The U field in an X form instruction. */
2233#define U FL1
2234 { 0xf, 12, NULL, NULL, 0 },
73f07bff 2235
b80c7270
AM
2236 /* The FL2 field in a POWER SC form instruction. */
2237#define FL2 FL1 + 1
2238 { 0x7, 2, NULL, NULL, 0 },
73f07bff 2239
b80c7270
AM
2240 /* The FLM field in an XFL form instruction. */
2241#define FLM FL2 + 1
2242 { 0xff, 17, NULL, NULL, 0 },
73f07bff 2243
b80c7270
AM
2244 /* The FRA field in an X or A form instruction. */
2245#define FRA FLM + 1
2246#define FRA_MASK (0x1f << 16)
2247 { 0x1f, 16, NULL, NULL, PPC_OPERAND_FPR },
252b5132 2248
b80c7270
AM
2249 /* The FRAp field of DFP instructions. */
2250#define FRAp FRA + 1
2251 { 0x1e, 16, NULL, NULL, PPC_OPERAND_FPR },
252b5132 2252
b80c7270
AM
2253 /* The FRB field in an X or A form instruction. */
2254#define FRB FRAp + 1
2255#define FRB_MASK (0x1f << 11)
2256 { 0x1f, 11, NULL, NULL, PPC_OPERAND_FPR },
2257
2258 /* The FRBp field of DFP instructions. */
2259#define FRBp FRB + 1
2260 { 0x1e, 11, NULL, NULL, PPC_OPERAND_FPR },
252b5132 2261
b80c7270
AM
2262 /* The FRC field in an A form instruction. */
2263#define FRC FRBp + 1
2264#define FRC_MASK (0x1f << 6)
2265 { 0x1f, 6, NULL, NULL, PPC_OPERAND_FPR },
252b5132 2266
b80c7270
AM
2267 /* The FRS field in an X form instruction or the FRT field in a D, X
2268 or A form instruction. */
2269#define FRS FRC + 1
2270#define FRT FRS
2271 { 0x1f, 21, NULL, NULL, PPC_OPERAND_FPR },
252b5132 2272
b80c7270
AM
2273 /* The FRSp field of stfdp or the FRTp field of lfdp and DFP
2274 instructions. */
2275#define FRSp FRS + 1
2276#define FRTp FRSp
2277 { 0x1e, 21, NULL, NULL, PPC_OPERAND_FPR },
252b5132 2278
b80c7270
AM
2279 /* The FXM field in an XFX instruction. */
2280#define FXM FRSp + 1
2281 { 0xff, 12, insert_fxm, extract_fxm, 0 },
252b5132 2282
b80c7270
AM
2283 /* Power4 version for mfcr. */
2284#define FXM4 FXM + 1
9cf7e568 2285 { 0xff, 12, insert_fxm, extract_fxm, PPC_OPERAND_OPTIONAL },
252b5132 2286
b80c7270 2287 /* The IMM20 field in an LI instruction. */
9cf7e568 2288#define IMM20 FXM4 + 1
b80c7270 2289 { 0xfffff, PPC_OPSHIFT_INV, insert_li20, extract_li20, PPC_OPERAND_SIGNED},
252b5132 2290
b80c7270
AM
2291 /* The L field in a D or X form instruction. */
2292#define L IMM20 + 1
2293 { 0x1, 21, NULL, NULL, 0 },
252b5132 2294
b80c7270
AM
2295 /* The optional L field in tlbie and tlbiel instructions. */
2296#define LOPT L + 1
2297 /* The R field in a HTM X form instruction. */
2298#define HTM_R LOPT
2299 { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
252b5132 2300
afef4fe9
PB
2301 /* The optional L field in the paste. instruction. This is similar to LOPT
2302 above, but with a default value of 1. */
2303#define L1OPT LOPT + 1
2304 { 0x1, 21, insert_l1opt, extract_l1opt, PPC_OPERAND_OPTIONAL },
2305
b80c7270 2306 /* The optional (for 32-bit) L field in cmp[l][i] instructions. */
afef4fe9 2307#define L32OPT L1OPT + 1
b80c7270 2308 { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL32 },
252b5132 2309
b80c7270
AM
2310 /* The L field in dcbf instruction. */
2311#define L2OPT L32OPT + 1
2312 { 0x3, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
252b5132 2313
b80c7270
AM
2314 /* The LEV field in a POWER SVC / POWER9 SCV form instruction. */
2315#define SVC_LEV L2OPT + 1
2316 { 0x7f, 5, NULL, NULL, 0 },
252b5132 2317
b80c7270
AM
2318 /* The LEV field in an SC form instruction. */
2319#define LEV SVC_LEV + 1
2320 { 0x7f, 5, NULL, NULL, PPC_OPERAND_OPTIONAL },
252b5132 2321
b80c7270
AM
2322 /* The LI field in an I form instruction. The lower two bits are
2323 forced to zero. */
2324#define LI LEV + 1
2325 { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
252b5132 2326
b80c7270
AM
2327 /* The LI field in an I form instruction when used as an absolute
2328 address. */
2329#define LIA LI + 1
2330 { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
252b5132 2331
b80c7270
AM
2332 /* The LS or WC field in an X (sync or wait) form instruction. */
2333#define LS LIA + 1
2334#define WC LS
2335 { 0x3, 21, insert_ls, extract_ls, PPC_OPERAND_OPTIONAL },
252b5132 2336
b80c7270
AM
2337 /* The ME field in an M form instruction. */
2338#define ME LS + 1
2339#define ME_MASK (0x1f << 1)
2340 { 0x1f, 1, NULL, NULL, 0 },
989993d8 2341
b80c7270
AM
2342 /* The MB and ME fields in an M form instruction expressed a single
2343 operand which is a bitmask indicating which bits to select. This
2344 is a two operand form using PPC_OPERAND_NEXT. See the
2345 description in opcode/ppc.h for what this means. */
2346#define MBE ME + 1
2347 { 0x1f, 6, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_NEXT },
2348 { -1, 0, insert_mbe, extract_mbe, 0 },
989993d8 2349
b80c7270
AM
2350 /* The MB or ME field in an MD or MDS form instruction. The high
2351 bit is wrapped to the low end. */
2352#define MB6 MBE + 2
2353#define ME6 MB6
2354#define MB6_MASK (0x3f << 5)
2355 { 0x3f, 5, insert_mb6, extract_mb6, 0 },
989993d8 2356
b80c7270
AM
2357 /* The NB field in an X form instruction. The value 32 is stored as
2358 0. */
2359#define NB MB6 + 1
2360 { 0x1f, 11, NULL, extract_nb, PPC_OPERAND_PLUS1 },
252b5132 2361
b80c7270
AM
2362 /* The NBI field in an lswi instruction, which has special value
2363 restrictions. The value 32 is stored as 0. */
2364#define NBI NB + 1
2365 { 0x1f, 11, insert_nbi, extract_nb, PPC_OPERAND_PLUS1 },
252b5132 2366
b80c7270
AM
2367 /* The NSI field in a D form instruction. This is the same as the
2368 SI field, only negated. */
2369#define NSI NBI + 1
2370 { 0xffff, 0, insert_nsi, extract_nsi,
2371 PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
252b5132 2372
b80c7270
AM
2373 /* The NSI field in a D form instruction when we accept a wide range
2374 of positive values. */
2375#define NSISIGNOPT NSI + 1
2376 { 0xffff, 0, insert_nsi, extract_nsi,
2377 PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
252b5132 2378
b80c7270
AM
2379 /* The RA field in an D, DS, DQ, X, XO, M, or MDS form instruction. */
2380#define RA NSISIGNOPT + 1
2381#define RA_MASK (0x1f << 16)
2382 { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR },
252b5132 2383
b80c7270
AM
2384 /* As above, but 0 in the RA field means zero, not r0. */
2385#define RA0 RA + 1
2386 { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR_0 },
73f07bff 2387
8acf1435
PB
2388 /* Similar to above, but optional. */
2389#define PRA0 RA0 + 1
2390 { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR_0 | PPC_OPERAND_OPTIONAL },
2391
b80c7270
AM
2392 /* The RA field in the DQ form lq or an lswx instruction, which have
2393 special value restrictions. */
8acf1435 2394#define RAQ PRA0 + 1
b80c7270
AM
2395#define RAX RAQ
2396 { 0x1f, 16, insert_raq, extract_raq, PPC_OPERAND_GPR_0 },
73f07bff 2397
8acf1435
PB
2398 /* Similar to above, but optional. */
2399#define PRAQ RAQ + 1
2400 { 0x1f, 16, insert_raq, extract_raq,
2401 PPC_OPERAND_GPR_0 | PPC_OPERAND_OPTIONAL },
2402
2403 /* The R field in an 8-byte D, DS, DQ or X form prefix instruction. */
2404#define PCREL PRAQ + 1
2405#define PCREL_MASK (1ULL << 52)
2406 { 0x1, 52, insert_pcrel, extract_pcrel, PPC_OPERAND_OPTIONAL },
2407
2408#define PCREL0 PCREL + 1
2409 { 0x1, 52, insert_pcrel, extract_pcrel0, PPC_OPERAND_OPTIONAL },
2410
b80c7270
AM
2411 /* The RA field in a D or X form instruction which is an updating
2412 load, which means that the RA field may not be zero and may not
2413 equal the RT field. */
8acf1435 2414#define RAL PCREL0 + 1
b80c7270 2415 { 0x1f, 16, insert_ral, extract_ral, PPC_OPERAND_GPR_0 },
252b5132 2416
b80c7270
AM
2417 /* The RA field in an lmw instruction, which has special value
2418 restrictions. */
2419#define RAM RAL + 1
2420 { 0x1f, 16, insert_ram, extract_ram, PPC_OPERAND_GPR_0 },
252b5132 2421
b80c7270
AM
2422 /* The RA field in a D or X form instruction which is an updating
2423 store or an updating floating point load, which means that the RA
2424 field may not be zero. */
2425#define RAS RAM + 1
2426 { 0x1f, 16, insert_ras, extract_ras, PPC_OPERAND_GPR_0 },
73f07bff 2427
b80c7270
AM
2428 /* The RA field of the tlbwe, dccci and iccci instructions,
2429 which are optional. */
2430#define RAOPT RAS + 1
2431 { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
73f07bff 2432
b80c7270
AM
2433 /* The RB field in an X, XO, M, or MDS form instruction. */
2434#define RB RAOPT + 1
2435#define RB_MASK (0x1f << 11)
2436 { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR },
adadcc0c 2437
98553ad3
PB
2438 /* The RS and RB fields in an X form instruction when they must be the same.
2439 This is used for extended mnemonics like mr. */
2440#define RSB RB + 1
2441 { 0x1f, 11, insert_rsb, extract_rsb, PPC_OPERAND_GPR },
adadcc0c 2442
b80c7270
AM
2443 /* The RB field in an lswx instruction, which has special value
2444 restrictions. */
98553ad3 2445#define RBX RSB + 1
b80c7270 2446 { 0x1f, 11, insert_rbx, extract_rbx, PPC_OPERAND_GPR },
adadcc0c 2447
b80c7270
AM
2448 /* The RB field of the dccci and iccci instructions, which are optional. */
2449#define RBOPT RBX + 1
2450 { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
73f07bff 2451
b80c7270
AM
2452 /* The RC register field in an maddld, maddhd or maddhdu instruction. */
2453#define RC RBOPT + 1
2454 { 0x1f, 6, NULL, NULL, PPC_OPERAND_GPR },
73f07bff 2455
b80c7270
AM
2456 /* The RS field in a D, DS, X, XFX, XS, M, MD or MDS form
2457 instruction or the RT field in a D, DS, X, XFX or XO form
2458 instruction. */
2459#define RS RC + 1
2460#define RT RS
2461#define RT_MASK (0x1f << 21)
2462#define RD RS
2463 { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR },
252b5132 2464
b80c7270
AM
2465#define RD_EVEN RS + 1
2466#define RS_EVEN RD_EVEN
2467 { 0x1f, 21, insert_rD_rS_even, extract_rD_rS_even, PPC_OPERAND_GPR },
252b5132 2468
b80c7270
AM
2469 /* The RS and RT fields of the DS form stq and DQ form lq instructions,
2470 which have special value restrictions. */
2471#define RSQ RS_EVEN + 1
2472#define RTQ RSQ
2473#define Q_MASK (1 << 21)
2474 { 0x1e, 21, NULL, NULL, PPC_OPERAND_GPR },
73f07bff 2475
b80c7270
AM
2476 /* The RS field of the tlbwe instruction, which is optional. */
2477#define RSO RSQ + 1
2478#define RTO RSO
2479 { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
73f07bff 2480
b80c7270
AM
2481 /* The RX field of the SE_RR form instruction. */
2482#define RX RSO + 1
2483 { 0x1f, PPC_OPSHIFT_INV, insert_rx, extract_rx, PPC_OPERAND_GPR },
252b5132 2484
b80c7270
AM
2485 /* The ARX field of the SE_RR form instruction. */
2486#define ARX RX + 1
2487 { 0x1f, PPC_OPSHIFT_INV, insert_arx, extract_arx, PPC_OPERAND_GPR },
252b5132 2488
b80c7270
AM
2489 /* The RY field of the SE_RR form instruction. */
2490#define RY ARX + 1
2491#define RZ RY
2492 { 0x1f, PPC_OPSHIFT_INV, insert_ry, extract_ry, PPC_OPERAND_GPR },
252b5132 2493
b80c7270
AM
2494 /* The ARY field of the SE_RR form instruction. */
2495#define ARY RY + 1
2496 { 0x1f, PPC_OPSHIFT_INV, insert_ary, extract_ary, PPC_OPERAND_GPR },
989993d8 2497
b80c7270
AM
2498 /* The SCLSCI8 field in a D form instruction. */
2499#define SCLSCI8 ARY + 1
2500 { 0xffffffff, PPC_OPSHIFT_INV, insert_sci8, extract_sci8, 0 },
989993d8 2501
b80c7270
AM
2502 /* The SCLSCI8N field in a D form instruction. This is the same as the
2503 SCLSCI8 field, only negated. */
2504#define SCLSCI8N SCLSCI8 + 1
2505 { 0xffffffff, PPC_OPSHIFT_INV, insert_sci8n, extract_sci8n,
2506 PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
989993d8 2507
b80c7270
AM
2508 /* The SD field of the SD4 form instruction. */
2509#define SE_SD SCLSCI8N + 1
2510 { 0xf, 8, NULL, NULL, PPC_OPERAND_PARENS },
73f07bff 2511
b80c7270
AM
2512 /* The SD field of the SD4 form instruction, for halfword. */
2513#define SE_SDH SE_SD + 1
71553718 2514 { 0x1e, 7, NULL, NULL, PPC_OPERAND_PARENS },
73f07bff 2515
b80c7270
AM
2516 /* The SD field of the SD4 form instruction, for word. */
2517#define SE_SDW SE_SDH + 1
71553718 2518 { 0x3c, 6, NULL, NULL, PPC_OPERAND_PARENS },
b9c361e0 2519
b80c7270
AM
2520 /* The SH field in an X or M form instruction. */
2521#define SH SE_SDW + 1
2522#define SH_MASK (0x1f << 11)
2523 /* The other UIMM field in a EVX form instruction. */
2524#define EVUIMM SH
2525 /* The FC field in an atomic X form instruction. */
2526#define FC SH
2527 { 0x1f, 11, NULL, NULL, 0 },
b9c361e0 2528
74081948
AF
2529#define EVUIMM_LT8 SH + 1
2530 { 0x1f, 11, insert_evuimm_lt8, extract_evuimm_lt8, 0 },
2531
2532#define EVUIMM_LT16 EVUIMM_LT8 + 1
b80c7270 2533 { 0x1f, 11, insert_evuimm_lt16, extract_evuimm_lt16, 0 },
b9c361e0 2534
b80c7270
AM
2535 /* The SI field in a HTM X form instruction. */
2536#define HTM_SI EVUIMM_LT16 + 1
2537 { 0x1f, 11, NULL, NULL, PPC_OPERAND_SIGNED },
943d398f 2538
b80c7270
AM
2539 /* The SH field in an MD form instruction. This is split. */
2540#define SH6 HTM_SI + 1
2541#define SH6_MASK ((0x1f << 11) | (1 << 1))
2542 { 0x3f, PPC_OPSHIFT_INV, insert_sh6, extract_sh6, 0 },
b9c361e0 2543
b80c7270
AM
2544 /* The SH field of some variants of the tlbre and tlbwe
2545 instructions, and the ELEV field of the e_sc instruction. */
2546#define SHO SH6 + 1
2547#define ELEV SHO
2548 { 0x1f, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
b9c361e0 2549
b80c7270
AM
2550 /* The SI field in a D form instruction. */
2551#define SI SHO + 1
2552 { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED },
b9c361e0 2553
b80c7270
AM
2554 /* The SI field in a D form instruction when we accept a wide range
2555 of positive values. */
2556#define SISIGNOPT SI + 1
2557 { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
b9c361e0 2558
b80c7270
AM
2559 /* The SI8 field in a D form instruction. */
2560#define SI8 SISIGNOPT + 1
2561 { 0xff, 0, NULL, NULL, PPC_OPERAND_SIGNED },
b9c361e0 2562
b80c7270
AM
2563 /* The SPR field in an XFX form instruction. This is flipped--the
2564 lower 5 bits are stored in the upper 5 and vice- versa. */
2565#define SPR SI8 + 1
2566#define PMR SPR
2567#define TMR SPR
2568#define SPR_MASK (0x3ff << 11)
2569 { 0x3ff, 11, insert_spr, extract_spr, PPC_OPERAND_SPR },
b9c361e0 2570
b80c7270
AM
2571 /* The BAT index number in an XFX form m[ft]ibat[lu] instruction. */
2572#define SPRBAT SPR + 1
fa758a70
AC
2573#define SPRBAT_MASK (0xc1 << 11)
2574 { 0x7, PPC_OPSHIFT_INV, insert_sprbat, extract_sprbat, PPC_OPERAND_SPR },
2575
2576 /* The GQR index number in an XFX form m[ft]gqr instruction. */
2577#define SPRGQR SPRBAT + 1
2578#define SPRGQR_MASK (0x7 << 16)
2579 { 0x7, 16, NULL, NULL, PPC_OPERAND_GQR },
b9c361e0 2580
b80c7270 2581 /* The SPRG register number in an XFX form m[ft]sprg instruction. */
fa758a70 2582#define SPRG SPRGQR + 1
b80c7270 2583 { 0x1f, 16, insert_sprg, extract_sprg, PPC_OPERAND_SPR },
b9c361e0 2584
b80c7270
AM
2585 /* The SR field in an X form instruction. */
2586#define SR SPRG + 1
2587 /* The 4-bit UIMM field in a VX form instruction. */
2588#define UIMM4 SR
2589 { 0xf, 16, NULL, NULL, 0 },
b9c361e0 2590
b80c7270
AM
2591 /* The STRM field in an X AltiVec form instruction. */
2592#define STRM SR + 1
2593 /* The T field in a tlbilx form instruction. */
2594#define T STRM
2595 /* The L field in wclr instructions. */
2596#define L2 STRM
2597 { 0x3, 21, NULL, NULL, 0 },
252b5132 2598
b80c7270
AM
2599 /* The ESYNC field in an X (sync) form instruction. */
2600#define ESYNC STRM + 1
2601 { 0xf, 16, insert_esync, extract_esync, PPC_OPERAND_OPTIONAL },
252b5132 2602
b80c7270
AM
2603 /* The SV field in a POWER SC form instruction. */
2604#define SV ESYNC + 1
2605 { 0x3fff, 2, NULL, NULL, 0 },
252b5132 2606
b80c7270
AM
2607 /* The TBR field in an XFX form instruction. This is like the SPR
2608 field, but it is optional. */
2609#define TBR SV + 1
2610 { 0x3ff, 11, insert_tbr, extract_tbr,
9cf7e568 2611 PPC_OPERAND_SPR | PPC_OPERAND_OPTIONAL },
252b5132 2612
b80c7270 2613 /* The TO field in a D or X form instruction. */
9cf7e568 2614#define TO TBR + 1
b80c7270
AM
2615#define DUI TO
2616#define TO_MASK (0x1f << 21)
2617 { 0x1f, 21, NULL, NULL, 0 },
252b5132 2618
b80c7270
AM
2619 /* The UI field in a D form instruction. */
2620#define UI TO + 1
2621 { 0xffff, 0, NULL, NULL, 0 },
252b5132 2622
b80c7270
AM
2623#define UISIGNOPT UI + 1
2624 { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNOPT },
da99ee72 2625
b80c7270
AM
2626 /* The IMM field in an SE_IM5 instruction. */
2627#define UI5 UISIGNOPT + 1
2628 { 0x1f, 4, NULL, NULL, 0 },
da99ee72 2629
b80c7270
AM
2630 /* The OIMM field in an SE_OIM5 instruction. */
2631#define OIMM5 UI5 + 1
71553718 2632 { 0x1f, 4, insert_oimm, extract_oimm, PPC_OPERAND_PLUS1 },
da99ee72 2633
b80c7270
AM
2634 /* The UI7 field in an SE_LI instruction. */
2635#define UI7 OIMM5 + 1
2636 { 0x7f, 4, NULL, NULL, 0 },
da99ee72 2637
b80c7270
AM
2638 /* The VA field in a VA, VX or VXR form instruction. */
2639#define VA UI7 + 1
2640 { 0x1f, 16, NULL, NULL, PPC_OPERAND_VR },
da99ee72 2641
b80c7270
AM
2642 /* The VB field in a VA, VX or VXR form instruction. */
2643#define VB VA + 1
2644 { 0x1f, 11, NULL, NULL, PPC_OPERAND_VR },
da99ee72 2645
b80c7270
AM
2646 /* The VC field in a VA form instruction. */
2647#define VC VB + 1
2648 { 0x1f, 6, NULL, NULL, PPC_OPERAND_VR },
252b5132 2649
b80c7270
AM
2650 /* The VD or VS field in a VA, VX, VXR or X form instruction. */
2651#define VD VC + 1
2652#define VS VD
2653 { 0x1f, 21, NULL, NULL, PPC_OPERAND_VR },
252b5132 2654
b80c7270
AM
2655 /* The SIMM field in a VX form instruction, and TE in Z form. */
2656#define SIMM VD + 1
2657#define TE SIMM
2658 { 0x1f, 16, NULL, NULL, PPC_OPERAND_SIGNED},
252b5132 2659
b80c7270
AM
2660 /* The UIMM field in a VX form instruction. */
2661#define UIMM SIMM + 1
2662#define DCTL UIMM
2663 { 0x1f, 16, NULL, NULL, 0 },
9b4e5766 2664
b80c7270
AM
2665 /* The 3-bit UIMM field in a VX form instruction. */
2666#define UIMM3 UIMM + 1
2667 { 0x7, 16, NULL, NULL, 0 },
9b4e5766 2668
b80c7270
AM
2669 /* The 6-bit UIM field in a X form instruction. */
2670#define UIM6 UIMM3 + 1
2671 { 0x3f, 16, NULL, NULL, 0 },
9b4e5766 2672
b80c7270
AM
2673 /* The SIX field in a VX form instruction. */
2674#define SIX UIM6 + 1
74081948 2675#define MMMM SIX
b80c7270 2676 { 0xf, 11, NULL, NULL, 0 },
9b4e5766 2677
b80c7270
AM
2678 /* The PS field in a VX form instruction. */
2679#define PS SIX + 1
2680 { 0x1, 9, NULL, NULL, 0 },
a680de9a 2681
b80c7270
AM
2682 /* The SHB field in a VA form instruction. */
2683#define SHB PS + 1
2684 { 0xf, 6, NULL, NULL, 0 },
a680de9a 2685
b80c7270 2686 /* The other UIMM field in a half word EVX form instruction. */
74081948
AF
2687#define EVUIMM_1 SHB + 1
2688 { 0x1f, 11, NULL, NULL, PPC_OPERAND_PARENS },
2689
2690#define EVUIMM_1_EX0 EVUIMM_1 + 1
2691 { 0x1f, 11, insert_evuimm1_ex0, extract_evuimm1_ex0, PPC_OPERAND_PARENS },
2692
2693#define EVUIMM_2 EVUIMM_1_EX0 + 1
b80c7270 2694 { 0x3e, 10, NULL, NULL, PPC_OPERAND_PARENS },
9b4e5766 2695
b80c7270
AM
2696#define EVUIMM_2_EX0 EVUIMM_2 + 1
2697 { 0x3e, 10, insert_evuimm2_ex0, extract_evuimm2_ex0, PPC_OPERAND_PARENS },
9b4e5766 2698
b80c7270
AM
2699 /* The other UIMM field in a word EVX form instruction. */
2700#define EVUIMM_4 EVUIMM_2_EX0 + 1
2701 { 0x7c, 9, NULL, NULL, PPC_OPERAND_PARENS },
9b4e5766 2702
b80c7270
AM
2703#define EVUIMM_4_EX0 EVUIMM_4 + 1
2704 { 0x7c, 9, insert_evuimm4_ex0, extract_evuimm4_ex0, PPC_OPERAND_PARENS },
9b4e5766 2705
b80c7270
AM
2706 /* The other UIMM field in a double EVX form instruction. */
2707#define EVUIMM_8 EVUIMM_4_EX0 + 1
2708 { 0xf8, 8, NULL, NULL, PPC_OPERAND_PARENS },
9b4e5766 2709
b80c7270
AM
2710#define EVUIMM_8_EX0 EVUIMM_8 + 1
2711 { 0xf8, 8, insert_evuimm8_ex0, extract_evuimm8_ex0, PPC_OPERAND_PARENS },
9b4e5766 2712
b80c7270
AM
2713 /* The WS or DRM field in an X form instruction. */
2714#define WS EVUIMM_8_EX0 + 1
2715#define DRM WS
74081948
AF
2716 /* The NNN field in a VX form instruction for SPE2 */
2717#define NNN WS
b80c7270 2718 { 0x7, 11, NULL, NULL, 0 },
9b4e5766 2719
b80c7270
AM
2720 /* PowerPC paired singles extensions. */
2721 /* W bit in the pair singles instructions for x type instructions. */
2722#define PSWM WS + 1
2723 /* The BO16 field in a BD8 form instruction. */
2724#define BO16 PSWM
2725 { 0x1, 10, 0, 0, 0 },
9b4e5766 2726
b80c7270
AM
2727 /* IDX bits for quantization in the pair singles instructions. */
2728#define PSQ PSWM + 1
2729 { 0x7, 12, 0, 0, PPC_OPERAND_GQR },
066be9f7 2730
b80c7270
AM
2731 /* IDX bits for quantization in the pair singles x-type instructions. */
2732#define PSQM PSQ + 1
2733 { 0x7, 7, 0, 0, PPC_OPERAND_GQR },
066be9f7 2734
b80c7270
AM
2735 /* Smaller D field for quantization in the pair singles instructions. */
2736#define PSD PSQM + 1
2737 { 0xfff, 0, 0, 0, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
066be9f7 2738
b80c7270
AM
2739 /* The L field in an mtmsrd or A form instruction or R or W in an
2740 X form. */
2741#define A_L PSD + 1
2742#define W A_L
2743#define X_R A_L
2744 { 0x1, 16, NULL, NULL, PPC_OPERAND_OPTIONAL },
066be9f7 2745
b80c7270
AM
2746 /* The RMC or CY field in a Z23 form instruction. */
2747#define RMC A_L + 1
2748#define CY RMC
2749 { 0x3, 9, NULL, NULL, 0 },
066be9f7 2750
b80c7270
AM
2751#define R RMC + 1
2752 { 0x1, 16, NULL, NULL, 0 },
066be9f7 2753
b80c7270
AM
2754#define RIC R + 1
2755 { 0x3, 18, NULL, NULL, PPC_OPERAND_OPTIONAL },
7b934113 2756
b80c7270
AM
2757#define PRS RIC + 1
2758 { 0x1, 17, NULL, NULL, PPC_OPERAND_OPTIONAL },
b9c361e0 2759
b80c7270
AM
2760#define SP PRS + 1
2761 { 0x3, 19, NULL, NULL, 0 },
b9c361e0 2762
b80c7270
AM
2763#define S SP + 1
2764 { 0x1, 20, NULL, NULL, 0 },
b9c361e0 2765
b80c7270
AM
2766 /* The S field in a XL form instruction. */
2767#define SXL S + 1
9cf7e568 2768 { 0x1, 11, insert_sxl, extract_sxl, PPC_OPERAND_OPTIONAL },
b80c7270
AM
2769
2770 /* SH field starting at bit position 16. */
9cf7e568 2771#define SH16 SXL + 1
b80c7270
AM
2772 /* The DCM and DGM fields in a Z form instruction. */
2773#define DCM SH16
2774#define DGM DCM
2775 { 0x3f, 10, NULL, NULL, 0 },
2776
2777 /* The EH field in larx instruction. */
2778#define EH SH16 + 1
2779 { 0x1, 0, NULL, NULL, PPC_OPERAND_OPTIONAL },
b9c361e0 2780
b80c7270
AM
2781 /* The L field in an mtfsf or XFL form instruction. */
2782 /* The A field in a HTM X form instruction. */
2783#define XFL_L EH + 1
2784#define HTM_A XFL_L
2785 { 0x1, 25, NULL, NULL, PPC_OPERAND_OPTIONAL},
b9c361e0 2786
b80c7270
AM
2787 /* Xilinx APU related masks and macros */
2788#define FCRT XFL_L + 1
2789#define FCRT_MASK (0x1f << 21)
2790 { 0x1f, 21, 0, 0, PPC_OPERAND_FCR },
b9c361e0 2791
b80c7270
AM
2792 /* Xilinx FSL related masks and macros */
2793#define FSL FCRT + 1
2794#define FSL_MASK (0x1f << 11)
2795 { 0x1f, 11, 0, 0, PPC_OPERAND_FSL },
b9c361e0 2796
b80c7270
AM
2797 /* Xilinx UDI related masks and macros */
2798#define URT FSL + 1
2799 { 0x1f, 21, 0, 0, PPC_OPERAND_UDI },
b9c361e0 2800
b80c7270
AM
2801#define URA URT + 1
2802 { 0x1f, 16, 0, 0, PPC_OPERAND_UDI },
b9c361e0 2803
b80c7270
AM
2804#define URB URA + 1
2805 { 0x1f, 11, 0, 0, PPC_OPERAND_UDI },
b9c361e0 2806
b80c7270
AM
2807#define URC URB + 1
2808 { 0x1f, 6, 0, 0, PPC_OPERAND_UDI },
e3c2f928 2809
b80c7270
AM
2810 /* The VLESIMM field in a D form instruction. */
2811#define VLESIMM URC + 1
2812 { 0xffff, PPC_OPSHIFT_INV, insert_vlesi, extract_vlesi,
2813 PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
e3c2f928 2814
b80c7270
AM
2815 /* The VLENSIMM field in a D form instruction. */
2816#define VLENSIMM VLESIMM + 1
2817 { 0xffff, PPC_OPSHIFT_INV, insert_vlensi, extract_vlensi,
2818 PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
e3c2f928 2819
b80c7270
AM
2820 /* The VLEUIMM field in a D form instruction. */
2821#define VLEUIMM VLENSIMM + 1
2822 { 0xffff, PPC_OPSHIFT_INV, insert_vleui, extract_vleui, 0 },
e3c2f928 2823
b80c7270
AM
2824 /* The VLEUIMML field in a D form instruction. */
2825#define VLEUIMML VLEUIMM + 1
2826 { 0xffff, PPC_OPSHIFT_INV, insert_vleil, extract_vleil, 0 },
e3c2f928 2827
b80c7270
AM
2828 /* The XT and XS fields in an XX1 or XX3 form instruction. This is
2829 split. */
2830#define XS6 VLEUIMML + 1
2831#define XT6 XS6
2832 { 0x3f, PPC_OPSHIFT_INV, insert_xt6, extract_xt6, PPC_OPERAND_VSR },
e3c2f928 2833
b80c7270
AM
2834 /* The XT and XS fields in an DQ form VSX instruction. This is split. */
2835#define XSQ6 XT6 + 1
2836#define XTQ6 XSQ6
2837 { 0x3f, PPC_OPSHIFT_INV, insert_xtq6, extract_xtq6, PPC_OPERAND_VSR },
e3c2f928 2838
94ba9882
AM
2839 /* The split XTp field in a vector paired instruction. */
2840#define XTP XSQ6 + 1
2841 { 0x3e, PPC_OPSHIFT_INV, insert_xtp, extract_xtp, PPC_OPERAND_VSR },
2842
8acf1435 2843 /* The XT field in a plxv instruction. Runs into the OP field. */
94ba9882 2844#define XTOP XTP + 1
8acf1435
PB
2845 { 0x3f, 21, NULL, NULL, PPC_OPERAND_VSR },
2846
b80c7270 2847 /* The XA field in an XX3 form instruction. This is split. */
8acf1435 2848#define XA6 XTOP + 1
b80c7270 2849 { 0x3f, PPC_OPSHIFT_INV, insert_xa6, extract_xa6, PPC_OPERAND_VSR },
e3c2f928 2850
b80c7270
AM
2851 /* The XB field in an XX2 or XX3 form instruction. This is split. */
2852#define XB6 XA6 + 1
2853 { 0x3f, PPC_OPSHIFT_INV, insert_xb6, extract_xb6, PPC_OPERAND_VSR },
e3c2f928 2854
98553ad3
PB
2855 /* The XA and XB fields in an XX3 form instruction when they must be the same.
2856 This is used in extended mnemonics like xvmovdp. This is split. */
2857#define XAB6 XB6 + 1
2858 { 0x3f, PPC_OPSHIFT_INV, insert_xab6, extract_xab6, PPC_OPERAND_VSR },
e3c2f928 2859
b80c7270 2860 /* The XC field in an XX4 form instruction. This is split. */
98553ad3 2861#define XC6 XAB6 + 1
b80c7270 2862 { 0x3f, PPC_OPSHIFT_INV, insert_xc6, extract_xc6, PPC_OPERAND_VSR },
e3c2f928 2863
b80c7270
AM
2864 /* The DM or SHW field in an XX3 form instruction. */
2865#define DM XC6 + 1
2866#define SHW DM
2867 { 0x3, 8, NULL, NULL, 0 },
e3c2f928 2868
b80c7270
AM
2869 /* The DM field in an extended mnemonic XX3 form instruction. */
2870#define DMEX DM + 1
2871 { 0x3, 8, insert_dm, extract_dm, 0 },
e3c2f928 2872
b80c7270
AM
2873 /* The UIM field in an XX2 form instruction. */
2874#define UIM DMEX + 1
2875 /* The 2-bit UIMM field in a VX form instruction. */
2876#define UIMM2 UIM
2877 /* The 2-bit L field in a darn instruction. */
2878#define LRAND UIM
2879 { 0x3, 16, NULL, NULL, 0 },
e3c2f928 2880
b80c7270
AM
2881#define ERAT_T UIM + 1
2882 { 0x7, 21, NULL, NULL, 0 },
e3c2f928 2883
b80c7270
AM
2884#define IH ERAT_T + 1
2885 { 0x7, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
e3c2f928 2886
b80c7270
AM
2887 /* The 8-bit IMM8 field in a XX1 form instruction. */
2888#define IMM8 IH + 1
2889 { 0xff, 11, NULL, NULL, PPC_OPERAND_SIGNOPT },
e3c2f928 2890
b80c7270
AM
2891#define VX_OFF IMM8 + 1
2892 { 0x3, 0, insert_off_lsp, extract_off_lsp, 0 },
74081948
AF
2893
2894#define VX_OFF_SPE2 VX_OFF + 1
2895 { 0x7, 0, insert_off_spe2, extract_off_spe2, 0 },
2896
2897#define BBB VX_OFF_SPE2 + 1
2898 { 0x7, 13, NULL, NULL, 0 },
2899
2900#define DDD BBB + 1
2901#define VX_MASK_DDD (VX_MASK & ~0x1)
2902 { 0x7, PPC_OPSHIFT_INV, insert_Ddd, extract_Ddd, 0 },
2903
2904#define HH DDD + 1
2905 { 0x3, 13, NULL, NULL, 0 },
b80c7270
AM
2906};
2907
2908const unsigned int num_powerpc_operands = (sizeof (powerpc_operands)
2909 / sizeof (powerpc_operands[0]));
252b5132
RH
2910\f
2911/* Macros used to form opcodes. */
2912
2913/* The main opcode. */
0f873fd5 2914#define OP(x) ((((uint64_t)(x)) & 0x3f) << 26)
252b5132
RH
2915#define OP_MASK OP (0x3f)
2916
dd7efa79
PB
2917/* The prefix opcode. */
2918#define PREFIX_OP (1ULL << 58)
2919
2920/* The 2-bit prefix form. */
2921#define PREFIX_FORM(x) ((x & 3ULL) << 56)
2922
2923#define SUFFIX_MASK ((1ULL << 32) - 1)
2924#define PREFIX_MASK (SUFFIX_MASK << 32)
2925
8acf1435
PB
2926/* Prefix insn, eight byte load/store form 8LS. */
2927#define P8LS (PREFIX_OP | PREFIX_FORM (0))
2928
2929/* Prefix insn, modified load/store form MLS. */
2930#define PMLS (PREFIX_OP | PREFIX_FORM (2))
2931
dd7efa79
PB
2932/* Prefix insn, modified register to register form MRR. */
2933#define PMRR (PREFIX_OP | PREFIX_FORM (3))
2934
8acf1435
PB
2935/* An 8-byte D form prefix instruction. */
2936#define P_D_MASK (((-1ULL << 50) & ~PCREL_MASK) | OP_MASK)
2937
2938/* The same as P_D_MASK, but with the RA and PCREL fields specified. */
2939#define P_DRAPCREL_MASK (P_D_MASK | PCREL_MASK | RA_MASK)
2940
252b5132
RH
2941/* The main opcode combined with a trap code in the TO field of a D
2942 form instruction. Used for extended mnemonics for the trap
2943 instructions. */
0f873fd5 2944#define OPTO(x,to) (OP (x) | ((((uint64_t)(to)) & 0x1f) << 21))
252b5132
RH
2945#define OPTO_MASK (OP_MASK | TO_MASK)
2946
2947/* The main opcode combined with a comparison size bit in the L field
2948 of a D form or X form instruction. Used for extended mnemonics for
2949 the comparison instructions. */
0f873fd5 2950#define OPL(x,l) (OP (x) | ((((uint64_t)(l)) & 1) << 21))
252b5132
RH
2951#define OPL_MASK OPL (0x3f,1)
2952
b9c361e0
JL
2953/* The main opcode combined with an update code in D form instruction.
2954 Used for extended mnemonics for VLE memory instructions. */
0f873fd5 2955#define OPVUP(x,vup) (OP (x) | ((((uint64_t)(vup)) & 0xff) << 8))
b9c361e0
JL
2956#define OPVUP_MASK OPVUP (0x3f, 0xff)
2957
b80c7270
AM
2958/* The main opcode combined with an update code and the RT fields
2959 specified in D form instruction. Used for VLE volatile context
2960 save/restore instructions. */
2961#define OPVUPRT(x,vup,rt) \
2962 (OPVUP (x, vup) \
0f873fd5 2963 | ((((uint64_t)(rt)) & 0x1f) << 21))
dfdaec14
AJ
2964#define OPVUPRT_MASK OPVUPRT (0x3f, 0xff, 0x1f)
2965
252b5132 2966/* An A form instruction. */
b80c7270
AM
2967#define A(op, xop, rc) \
2968 (OP (op) \
0f873fd5
PB
2969 | ((((uint64_t)(xop)) & 0x1f) << 1) \
2970 | (((uint64_t)(rc)) & 1))
252b5132
RH
2971#define A_MASK A (0x3f, 0x1f, 1)
2972
2973/* An A_MASK with the FRB field fixed. */
2974#define AFRB_MASK (A_MASK | FRB_MASK)
2975
2976/* An A_MASK with the FRC field fixed. */
2977#define AFRC_MASK (A_MASK | FRC_MASK)
2978
2979/* An A_MASK with the FRA and FRC fields fixed. */
2980#define AFRAFRC_MASK (A_MASK | FRA_MASK | FRC_MASK)
2981
702f0fb4 2982/* An AFRAFRC_MASK, but with L bit clear. */
0f873fd5 2983#define AFRALFRC_MASK (AFRAFRC_MASK & ~((uint64_t) 1 << 16))
702f0fb4 2984
252b5132 2985/* A B form instruction. */
b80c7270
AM
2986#define B(op, aa, lk) \
2987 (OP (op) \
0f873fd5 2988 | ((((uint64_t)(aa)) & 1) << 1) \
b80c7270 2989 | ((lk) & 1))
252b5132
RH
2990#define B_MASK B (0x3f, 1, 1)
2991
b9c361e0 2992/* A BD8 form instruction. This is a 16-bit instruction. */
b80c7270 2993#define BD8(op, aa, lk) \
0f873fd5 2994 (((((uint64_t)(op)) & 0x3f) << 10) \
b80c7270
AM
2995 | (((aa) & 1) << 9) \
2996 | (((lk) & 1) << 8))
b9c361e0
JL
2997#define BD8_MASK BD8 (0x3f, 1, 1)
2998
2999/* Another BD8 form instruction. This is a 16-bit instruction. */
0f873fd5 3000#define BD8IO(op) ((((uint64_t)(op)) & 0x1f) << 11)
b9c361e0
JL
3001#define BD8IO_MASK BD8IO (0x1f)
3002
3003/* A BD8 form instruction for simplified mnemonics. */
3004#define EBD8IO(op, bo, bi) (BD8IO ((op)) | ((bo) << 10) | ((bi) << 8))
3005/* A mask that excludes BO32 and BI32. */
3006#define EBD8IO1_MASK 0xf800
3007/* A mask that includes BO32 and excludes BI32. */
3008#define EBD8IO2_MASK 0xfc00
3009/* A mask that include BO32 AND BI32. */
3010#define EBD8IO3_MASK 0xff00
3011
3012/* A BD15 form instruction. */
b80c7270
AM
3013#define BD15(op, aa, lk) \
3014 (OP (op) \
0f873fd5 3015 | ((((uint64_t)(aa)) & 0xf) << 22) \
b80c7270 3016 | ((lk) & 1))
b9c361e0
JL
3017#define BD15_MASK BD15 (0x3f, 0xf, 1)
3018
3019/* A BD15 form instruction for extended conditional branch mnemonics. */
b80c7270 3020#define EBD15(op, aa, bo, lk) \
2480b6fa 3021 (((op) & 0x3fu) << 26) \
b80c7270
AM
3022 | (((aa) & 0xf) << 22) \
3023 | (((bo) & 0x3) << 20) \
3024 | ((lk) & 1)
b9c361e0
JL
3025#define EBD15_MASK 0xfff00001
3026
b80c7270
AM
3027/* A BD15 form instruction for extended conditional branch mnemonics
3028 with BI. */
3029#define EBD15BI(op, aa, bo, bi, lk) \
2480b6fa 3030 ((((op) & 0x3fu) << 26) \
b80c7270
AM
3031 | (((aa) & 0xf) << 22) \
3032 | (((bo) & 0x3) << 20) \
3033 | (((bi) & 0x3) << 16) \
3034 | ((lk) & 1))
3035
b9c361e0
JL
3036#define EBD15BI_MASK 0xfff30001
3037
3038/* A BD24 form instruction. */
b80c7270
AM
3039#define BD24(op, aa, lk) \
3040 (OP (op) \
0f873fd5 3041 | ((((uint64_t)(aa)) & 1) << 25) \
b80c7270 3042 | ((lk) & 1))
b9c361e0
JL
3043#define BD24_MASK BD24 (0x3f, 1, 1)
3044
252b5132 3045/* A B form instruction setting the BO field. */
b80c7270
AM
3046#define BBO(op, bo, aa, lk) \
3047 (B ((op), (aa), (lk)) \
0f873fd5 3048 | ((((uint64_t)(bo)) & 0x1f) << 21))
252b5132
RH
3049#define BBO_MASK BBO (0x3f, 0x1f, 1, 1)
3050
3051/* A BBO_MASK with the y bit of the BO field removed. This permits
3052 matching a conditional branch regardless of the setting of the y
94efba12 3053 bit. Similarly for the 'at' bits used for power4 branch hints. */
0f873fd5
PB
3054#define Y_MASK (((uint64_t) 1) << 21)
3055#define AT1_MASK (((uint64_t) 3) << 21)
3056#define AT2_MASK (((uint64_t) 9) << 21)
802a735e
AM
3057#define BBOY_MASK (BBO_MASK &~ Y_MASK)
3058#define BBOAT_MASK (BBO_MASK &~ AT1_MASK)
252b5132
RH
3059
3060/* A B form instruction setting the BO field and the condition bits of
3061 the BI field. */
3062#define BBOCB(op, bo, cb, aa, lk) \
0f873fd5 3063 (BBO ((op), (bo), (aa), (lk)) | ((((uint64_t)(cb)) & 0x3) << 16))
252b5132
RH
3064#define BBOCB_MASK BBOCB (0x3f, 0x1f, 0x3, 1, 1)
3065
3066/* A BBOCB_MASK with the y bit of the BO field removed. */
3067#define BBOYCB_MASK (BBOCB_MASK &~ Y_MASK)
802a735e
AM
3068#define BBOATCB_MASK (BBOCB_MASK &~ AT1_MASK)
3069#define BBOAT2CB_MASK (BBOCB_MASK &~ AT2_MASK)
252b5132
RH
3070
3071/* A BBOYCB_MASK in which the BI field is fixed. */
3072#define BBOYBI_MASK (BBOYCB_MASK | BI_MASK)
802a735e 3073#define BBOATBI_MASK (BBOAT2CB_MASK | BI_MASK)
252b5132 3074
b9c361e0 3075/* A VLE C form instruction. */
0f873fd5 3076#define C_LK(x, lk) (((((uint64_t)(x)) & 0x7fff) << 1) | ((lk) & 1))
b9c361e0 3077#define C_LK_MASK C_LK(0x7fff, 1)
0f873fd5 3078#define C(x) ((((uint64_t)(x)) & 0xffff))
b9c361e0
JL
3079#define C_MASK C(0xffff)
3080
23976049 3081/* An Context form instruction. */
0f873fd5 3082#define CTX(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x7))
fdd12ef3 3083#define CTX_MASK CTX(0x3f, 0x7)
23976049
EZ
3084
3085/* An User Context form instruction. */
0f873fd5 3086#define UCTX(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f))
fdd12ef3 3087#define UCTX_MASK UCTX(0x3f, 0x1f)
23976049 3088
252b5132
RH
3089/* The main opcode mask with the RA field clear. */
3090#define DRA_MASK (OP_MASK | RA_MASK)
3091
a680de9a
PB
3092/* A DQ form VSX instruction. */
3093#define DQX(op, xop) (OP (op) | ((xop) & 0x7))
3094#define DQX_MASK DQX (0x3f, 7)
3095
94ba9882
AM
3096/* A DQ form VSX vector paired instruction. */
3097#define DQXP(op, xop) (OP (op) | ((xop) & 0xf))
3098#define DQXP_MASK DQXP (0x3f, 0xf)
3099
252b5132
RH
3100/* A DS form instruction. */
3101#define DSO(op, xop) (OP (op) | ((xop) & 0x3))
3102#define DS_MASK DSO (0x3f, 3)
3103
a680de9a 3104/* An DX form instruction. */
0f873fd5 3105#define DX(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1f) << 1))
a680de9a 3106#define DX_MASK DX (0x3f, 0x1f)
1437d063
PB
3107/* An DX form instruction with the D bits specified. */
3108#define NODX_MASK (DX_MASK | 0x1fffc1)
a680de9a 3109
23976049 3110/* An EVSEL form instruction. */
0f873fd5 3111#define EVSEL(op, xop) (OP (op) | (((uint64_t)(xop)) & 0xff) << 3)
23976049
EZ
3112#define EVSEL_MASK EVSEL(0x3f, 0xff)
3113
b9c361e0 3114/* An IA16 form instruction. */
0f873fd5 3115#define IA16(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f) << 11)
b9c361e0
JL
3116#define IA16_MASK IA16(0x3f, 0x1f)
3117
3118/* An I16A form instruction. */
0f873fd5 3119#define I16A(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f) << 11)
b9c361e0
JL
3120#define I16A_MASK I16A(0x3f, 0x1f)
3121
3122/* An I16L form instruction. */
0f873fd5 3123#define I16L(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f) << 11)
b9c361e0
JL
3124#define I16L_MASK I16L(0x3f, 0x1f)
3125
3126/* An IM7 form instruction. */
0f873fd5 3127#define IM7(op) ((((uint64_t)(op)) & 0x1f) << 11)
b9c361e0
JL
3128#define IM7_MASK IM7(0x1f)
3129
252b5132
RH
3130/* An M form instruction. */
3131#define M(op, rc) (OP (op) | ((rc) & 1))
3132#define M_MASK M (0x3f, 1)
3133
b9c361e0 3134/* An LI20 form instruction. */
0f873fd5 3135#define LI20(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1) << 15)
b9c361e0
JL
3136#define LI20_MASK LI20(0x3f, 0x1)
3137
252b5132 3138/* An M form instruction with the ME field specified. */
b80c7270
AM
3139#define MME(op, me, rc) \
3140 (M ((op), (rc)) \
0f873fd5 3141 | ((((uint64_t)(me)) & 0x1f) << 1))
252b5132
RH
3142
3143/* An M_MASK with the MB and ME fields fixed. */
3144#define MMBME_MASK (M_MASK | MB_MASK | ME_MASK)
3145
3146/* An M_MASK with the SH and ME fields fixed. */
3147#define MSHME_MASK (M_MASK | SH_MASK | ME_MASK)
3148
3149/* An MD form instruction. */
b80c7270
AM
3150#define MD(op, xop, rc) \
3151 (OP (op) \
0f873fd5 3152 | ((((uint64_t)(xop)) & 0x7) << 2) \
b80c7270 3153 | ((rc) & 1))
252b5132
RH
3154#define MD_MASK MD (0x3f, 0x7, 1)
3155
3156/* An MD_MASK with the MB field fixed. */
3157#define MDMB_MASK (MD_MASK | MB6_MASK)
3158
3159/* An MD_MASK with the SH field fixed. */
3160#define MDSH_MASK (MD_MASK | SH6_MASK)
3161
3162/* An MDS form instruction. */
b80c7270
AM
3163#define MDS(op, xop, rc) \
3164 (OP (op) \
0f873fd5 3165 | ((((uint64_t)(xop)) & 0xf) << 1) \
b80c7270 3166 | ((rc) & 1))
252b5132
RH
3167#define MDS_MASK MDS (0x3f, 0xf, 1)
3168
3169/* An MDS_MASK with the MB field fixed. */
3170#define MDSMB_MASK (MDS_MASK | MB6_MASK)
3171
3172/* An SC form instruction. */
b80c7270
AM
3173#define SC(op, sa, lk) \
3174 (OP (op) \
0f873fd5 3175 | ((((uint64_t)(sa)) & 1) << 1) \
b80c7270
AM
3176 | ((lk) & 1))
3177#define SC_MASK \
3178 (OP_MASK \
0f873fd5
PB
3179 | (((uint64_t) 0x3ff) << 16) \
3180 | (((uint64_t) 1) << 1) \
b80c7270 3181 | 1)
252b5132 3182
b9c361e0 3183/* An SCI8 form instruction. */
0f873fd5 3184#define SCI8(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1f) << 11))
b9c361e0
JL
3185#define SCI8_MASK SCI8(0x3f, 0x1f)
3186
3187/* An SCI8 form instruction. */
b80c7270
AM
3188#define SCI8BF(op, fop, xop) \
3189 (OP (op) \
0f873fd5 3190 | ((((uint64_t)(xop)) & 0x1f) << 11) \
b80c7270 3191 | (((fop) & 7) << 23))
b9c361e0
JL
3192#define SCI8BF_MASK SCI8BF(0x3f, 7, 0x1f)
3193
3194/* An SD4 form instruction. This is a 16-bit instruction. */
0f873fd5 3195#define SD4(op) ((((uint64_t)(op)) & 0xf) << 12)
b9c361e0
JL
3196#define SD4_MASK SD4(0xf)
3197
3198/* An SE_IM5 form instruction. This is a 16-bit instruction. */
b80c7270 3199#define SE_IM5(op, xop) \
0f873fd5 3200 (((((uint64_t)(op)) & 0x3f) << 10) \
b80c7270 3201 | (((xop) & 0x1) << 9))
b9c361e0
JL
3202#define SE_IM5_MASK SE_IM5(0x3f, 1)
3203
3204/* An SE_R form instruction. This is a 16-bit instruction. */
b80c7270 3205#define SE_R(op, xop) \
0f873fd5 3206 (((((uint64_t)(op)) & 0x3f) << 10) \
b80c7270 3207 | (((xop) & 0x3f) << 4))
b9c361e0
JL
3208#define SE_R_MASK SE_R(0x3f, 0x3f)
3209
3210/* An SE_RR form instruction. This is a 16-bit instruction. */
b80c7270 3211#define SE_RR(op, xop) \
0f873fd5 3212 (((((uint64_t)(op)) & 0x3f) << 10) \
b80c7270 3213 | (((xop) & 0x3) << 8))
b9c361e0
JL
3214#define SE_RR_MASK SE_RR(0x3f, 3)
3215
3216/* A VX form instruction. */
0f873fd5 3217#define VX(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x7ff))
786e2c0f 3218
112290ab 3219/* The mask for an VX form instruction. */
786e2c0f
C
3220#define VX_MASK VX(0x3f, 0x7ff)
3221
e3c2f928 3222/* A VX LSP form instruction. */
0f873fd5 3223#define VX_LSP(op, xop) (OP (op) | (((uint64_t)(xop)) & 0xffff))
e3c2f928
AF
3224
3225/* The mask for an VX LSP form instruction. */
3226#define VX_LSP_MASK VX_LSP(0x3f, 0xffff)
3227#define VX_LSP_OFF_MASK VX_LSP(0x3f, 0x7fc)
3228
74081948
AF
3229/* Additional format of VX SPE2 form instruction. */
3230#define VX_RA_CONST(op, xop, bits11_15) \
3231 (OP (op) \
0f873fd5
PB
3232 | (((uint64_t)(bits11_15) & 0x1f) << 16) \
3233 | (((uint64_t)(xop)) & 0x7ff))
74081948
AF
3234#define VX_RA_CONST_MASK VX_RA_CONST(0x3f, 0x7ff, 0x1f)
3235
3236#define VX_RB_CONST(op, xop, bits16_20) \
3237 (OP (op) \
0f873fd5
PB
3238 | (((uint64_t)(bits16_20) & 0x1f) << 11) \
3239 | (((uint64_t)(xop)) & 0x7ff))
74081948
AF
3240#define VX_RB_CONST_MASK VX_RB_CONST(0x3f, 0x7ff, 0x1f)
3241
3242#define VX_OFF_SPE2_MASK VX(0x3f, 0x7f8)
3243
3244#define VX_SPE_CRFD(op, xop, bits9_10) \
3245 (OP (op) \
0f873fd5
PB
3246 | (((uint64_t)(bits9_10) & 0x3) << 21) \
3247 | (((uint64_t)(xop)) & 0x7ff))
74081948
AF
3248#define VX_SPE_CRFD_MASK VX_SPE_CRFD(0x3f, 0x7ff, 0x3)
3249
3250#define VX_SPE2_CLR(op, xop, bit16) \
3251 (OP (op) \
0f873fd5
PB
3252 | (((uint64_t)(bit16) & 0x1) << 15) \
3253 | (((uint64_t)(xop)) & 0x7ff))
74081948
AF
3254#define VX_SPE2_CLR_MASK VX_SPE2_CLR(0x3f, 0x7ff, 0x1)
3255
3256#define VX_SPE2_SPLATB(op, xop, bits19_20) \
3257 (OP (op) \
0f873fd5
PB
3258 | (((uint64_t)(bits19_20) & 0x3) << 11) \
3259 | (((uint64_t)(xop)) & 0x7ff))
74081948
AF
3260#define VX_SPE2_SPLATB_MASK VX_SPE2_SPLATB(0x3f, 0x7ff, 0x3)
3261
3262#define VX_SPE2_OCTET(op, xop, bits16_17) \
3263 (OP (op) \
0f873fd5
PB
3264 | (((uint64_t)(bits16_17) & 0x3) << 14) \
3265 | (((uint64_t)(xop)) & 0x7ff))
74081948
AF
3266#define VX_SPE2_OCTET_MASK VX_SPE2_OCTET(0x3f, 0x7ff, 0x7)
3267
3268#define VX_SPE2_DDHH(op, xop, bit16) \
3269 (OP (op) \
0f873fd5
PB
3270 | (((uint64_t)(bit16) & 0x1) << 15) \
3271 | (((uint64_t)(xop)) & 0x7ff))
74081948
AF
3272#define VX_SPE2_DDHH_MASK VX_SPE2_DDHH(0x3f, 0x7ff, 0x1)
3273
3274#define VX_SPE2_HH(op, xop, bit16, bits19_20) \
3275 (OP (op) \
0f873fd5
PB
3276 | (((uint64_t)(bit16) & 0x1) << 15) \
3277 | (((uint64_t)(bits19_20) & 0x3) << 11) \
3278 | (((uint64_t)(xop)) & 0x7ff))
74081948
AF
3279#define VX_SPE2_HH_MASK VX_SPE2_HH(0x3f, 0x7ff, 0x1, 0x3)
3280
3281#define VX_SPE2_EVMAR(op, xop) \
3282 (OP (op) \
0f873fd5
PB
3283 | ((uint64_t)(0x1) << 11) \
3284 | (((uint64_t)(xop)) & 0x7ff))
74081948
AF
3285#define VX_SPE2_EVMAR_MASK \
3286 (VX_SPE2_EVMAR(0x3f, 0x7ff) \
0f873fd5 3287 | ((uint64_t)(0x1) << 11))
74081948 3288
fb048c26
PB
3289/* A VX_MASK with the VA field fixed. */
3290#define VXVA_MASK (VX_MASK | (0x1f << 16))
3291
3292/* A VX_MASK with the VB field fixed. */
3293#define VXVB_MASK (VX_MASK | (0x1f << 11))
3294
3295/* A VX_MASK with the VA and VB fields fixed. */
3296#define VXVAVB_MASK (VX_MASK | (0x1f << 16) | (0x1f << 11))
3297
3298/* A VX_MASK with the VD and VA fields fixed. */
3299#define VXVDVA_MASK (VX_MASK | (0x1f << 21) | (0x1f << 16))
3300
3301/* A VX_MASK with a UIMM4 field. */
3302#define VXUIMM4_MASK (VX_MASK | (0x1 << 20))
3303
3304/* A VX_MASK with a UIMM3 field. */
3305#define VXUIMM3_MASK (VX_MASK | (0x3 << 19))
3306
3307/* A VX_MASK with a UIMM2 field. */
3308#define VXUIMM2_MASK (VX_MASK | (0x7 << 18))
3309
c0637f3a
PB
3310/* A VX_MASK with a PS field. */
3311#define VXPS_MASK (VX_MASK & ~(0x1 << 9))
3312
a680de9a
PB
3313/* A VX_MASK with the VA field fixed with a PS field. */
3314#define VXVAPS_MASK ((VX_MASK | (0x1f << 16)) & ~(0x1 << 9))
3315
b9c361e0 3316/* A VA form instruction. */
0f873fd5 3317#define VXA(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x03f))
786e2c0f 3318
112290ab 3319/* The mask for an VA form instruction. */
2613489e 3320#define VXA_MASK VXA(0x3f, 0x3f)
786e2c0f 3321
382c72e9
PB
3322/* A VXA_MASK with a SHB field. */
3323#define VXASHB_MASK (VXA_MASK | (1 << 10))
3324
b9c361e0 3325/* A VXR form instruction. */
b80c7270
AM
3326#define VXR(op, xop, rc) \
3327 (OP (op) \
0f873fd5
PB
3328 | (((uint64_t)(rc) & 1) << 10) \
3329 | (((uint64_t)(xop)) & 0x3ff))
786e2c0f 3330
112290ab 3331/* The mask for a VXR form instruction. */
786e2c0f
C
3332#define VXR_MASK VXR(0x3f, 0x3ff, 1)
3333
a680de9a
PB
3334/* A VX form instruction with a VA tertiary opcode. */
3335#define VXVA(op, xop, vaop) (VX(op,xop) | (((vaop) & 0x1f) << 16))
3336
0f873fd5 3337#define VXASH(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1f) << 1))
6fd3a02d
PB
3338#define VXASH_MASK VXASH (0x3f, 0x1f)
3339
252b5132 3340/* An X form instruction. */
0f873fd5 3341#define X(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x3ff) << 1))
252b5132 3342
a680de9a
PB
3343/* A X form instruction for Quad-Precision FP Instructions. */
3344#define XVA(op, xop, vaop) (X(op,xop) | (((vaop) & 0x1f) << 16))
3345
b9c361e0 3346/* An EX form instruction. */
0f873fd5 3347#define EX(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x7ff))
b9c361e0
JL
3348
3349/* The mask for an EX form instruction. */
3350#define EX_MASK EX (0x3f, 0x7ff)
3351
066be9f7 3352/* An XX2 form instruction. */
0f873fd5 3353#define XX2(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1ff) << 2))
066be9f7 3354
a680de9a
PB
3355/* A XX2 form instruction with the VA bits specified. */
3356#define XX2VA(op, xop, vaop) (XX2(op,xop) | (((vaop) & 0x1f) << 16))
3357
9b4e5766 3358/* An XX3 form instruction. */
0f873fd5 3359#define XX3(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0xff) << 3))
9b4e5766 3360
066be9f7 3361/* An XX3 form instruction with the RC bit specified. */
b80c7270
AM
3362#define XX3RC(op, xop, rc) \
3363 (OP (op) \
0f873fd5
PB
3364 | (((uint64_t)(rc) & 1) << 10) \
3365 | ((((uint64_t)(xop)) & 0x7f) << 3))
066be9f7
PB
3366
3367/* An XX4 form instruction. */
0f873fd5 3368#define XX4(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x3) << 4))
9b4e5766 3369
702f0fb4 3370/* A Z form instruction. */
0f873fd5 3371#define Z(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1ff) << 1))
702f0fb4 3372
252b5132
RH
3373/* An X form instruction with the RC bit specified. */
3374#define XRC(op, xop, rc) (X ((op), (xop)) | ((rc) & 1))
3375
a680de9a
PB
3376/* A X form instruction for Quad-Precision FP Instructions with RC bit. */
3377#define XVARC(op, xop, vaop, rc) (XVA ((op), (xop), (vaop)) | ((rc) & 1))
3378
6fd3a02d 3379/* An X form instruction with the RA bits specified as two ops. */
b80c7270
AM
3380#define XMMF(op, xop, mop0, mop1) \
3381 (X ((op), (xop)) \
3382 | ((mop0) & 3) << 19 \
3383 | ((mop1) & 7) << 16)
6fd3a02d 3384
702f0fb4
PB
3385/* A Z form instruction with the RC bit specified. */
3386#define ZRC(op, xop, rc) (Z ((op), (xop)) | ((rc) & 1))
3387
252b5132
RH
3388/* The mask for an X form instruction. */
3389#define X_MASK XRC (0x3f, 0x3ff, 1)
3390
a680de9a
PB
3391/* The mask for an X form instruction with the BF bits specified. */
3392#define XBF_MASK (X_MASK | (3 << 21))
3393
b80c7270
AM
3394/* An X form wait instruction with everything filled in except the WC
3395 field. */
e0d602ec
BE
3396#define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK)
3397
9b4e5766
PB
3398/* The mask for an XX1 form instruction. */
3399#define XX1_MASK X (0x3f, 0x3ff)
3400
c0637f3a
PB
3401/* An XX1_MASK with the RB field fixed. */
3402#define XX1RB_MASK (XX1_MASK | RB_MASK)
3403
066be9f7
PB
3404/* The mask for an XX2 form instruction. */
3405#define XX2_MASK (XX2 (0x3f, 0x1ff) | (0x1f << 16))
3406
3407/* The mask for an XX2 form instruction with the UIM bits specified. */
3408#define XX2UIM_MASK (XX2 (0x3f, 0x1ff) | (7 << 18))
3409
a680de9a
PB
3410/* The mask for an XX2 form instruction with the 4 UIM bits specified. */
3411#define XX2UIM4_MASK (XX2 (0x3f, 0x1ff) | (1 << 20))
3412
066be9f7
PB
3413/* The mask for an XX2 form instruction with the BF bits specified. */
3414#define XX2BF_MASK (XX2_MASK | (3 << 21) | (1))
3415
b80c7270
AM
3416/* The mask for an XX2 form instruction with the BF and DCMX bits
3417 specified. */
a680de9a
PB
3418#define XX2BFD_MASK (XX2 (0x3f, 0x1ff) | 1)
3419
b80c7270
AM
3420/* The mask for an XX2 form instruction with a split DCMX bits
3421 specified. */
a680de9a
PB
3422#define XX2DCMXS_MASK XX2 (0x3f, 0x1ee)
3423
9b4e5766
PB
3424/* The mask for an XX3 form instruction. */
3425#define XX3_MASK XX3 (0x3f, 0xff)
3426
066be9f7
PB
3427/* The mask for an XX3 form instruction with the BF bits specified. */
3428#define XX3BF_MASK (XX3 (0x3f, 0xff) | (3 << 21) | (1))
3429
b80c7270
AM
3430/* The mask for an XX3 form instruction with the DM or SHW bits
3431 specified. */
9b4e5766 3432#define XX3DM_MASK (XX3 (0x3f, 0x1f) | (1 << 10))
066be9f7
PB
3433#define XX3SHW_MASK XX3DM_MASK
3434
3435/* The mask for an XX4 form instruction. */
3436#define XX4_MASK XX4 (0x3f, 0x3)
3437
b80c7270
AM
3438/* An X form wait instruction with everything filled in except the WC
3439 field. */
066be9f7 3440#define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK)
9b4e5766 3441
6fd3a02d
PB
3442/* The mask for an XMMF form instruction. */
3443#define XMMF_MASK (XMMF (0x3f, 0x3ff, 3, 7) | (1))
3444
702f0fb4
PB
3445/* The mask for a Z form instruction. */
3446#define Z_MASK ZRC (0x3f, 0x1ff, 1)
0bbdef92 3447#define Z2_MASK ZRC (0x3f, 0xff, 1)
702f0fb4 3448
a680de9a 3449/* An X_MASK with the RA/VA field fixed. */
252b5132 3450#define XRA_MASK (X_MASK | RA_MASK)
a680de9a 3451#define XVA_MASK XRA_MASK
252b5132 3452
a680de9a 3453/* An XRA_MASK with the A_L/W field clear. */
0f873fd5 3454#define XWRA_MASK (XRA_MASK & ~((uint64_t) 1 << 16))
a680de9a 3455#define XRLA_MASK XWRA_MASK
ea192fa3 3456
252b5132
RH
3457/* An X_MASK with the RB field fixed. */
3458#define XRB_MASK (X_MASK | RB_MASK)
3459
3460/* An X_MASK with the RT field fixed. */
3461#define XRT_MASK (X_MASK | RT_MASK)
3462
702f0fb4 3463/* An XRT_MASK mask with the L bits clear. */
0f873fd5 3464#define XLRT_MASK (XRT_MASK & ~((uint64_t) 0x3 << 21))
702f0fb4 3465
252b5132
RH
3466/* An X_MASK with the RA and RB fields fixed. */
3467#define XRARB_MASK (X_MASK | RA_MASK | RB_MASK)
3468
a680de9a
PB
3469/* An XBF_MASK with the RA and RB fields fixed. */
3470#define XBFRARB_MASK (XBF_MASK | RA_MASK | RB_MASK)
3471
112290ab 3472/* An XRARB_MASK, but with the L bit clear. */
0f873fd5 3473#define XRLARB_MASK (XRARB_MASK & ~((uint64_t) 1 << 16))
5ae2e65e 3474
a680de9a 3475/* An XRARB_MASK, but with the L bits in a darn instruction clear. */
0f873fd5 3476#define XLRAND_MASK (XRARB_MASK & ~((uint64_t) 3 << 16))
a680de9a 3477
252b5132
RH
3478/* An X_MASK with the RT and RA fields fixed. */
3479#define XRTRA_MASK (X_MASK | RT_MASK | RA_MASK)
3480
5817ffd1
PB
3481/* An X_MASK with the RT and RB fields fixed. */
3482#define XRTRB_MASK (X_MASK | RT_MASK | RB_MASK)
3483
98acc1c5 3484/* An XRTRA_MASK, but with L bit clear. */
0f873fd5 3485#define XRTLRA_MASK (XRTRA_MASK & ~((uint64_t) 1 << 21))
98acc1c5 3486
5817ffd1
PB
3487/* An X_MASK with the RT, RA and RB fields fixed. */
3488#define XRTRARB_MASK (X_MASK | RT_MASK | RA_MASK | RB_MASK)
3489
3490/* An XRTRARB_MASK, but with L bit clear. */
0f873fd5 3491#define XRTLRARB_MASK (XRTRARB_MASK & ~((uint64_t) 1 << 21))
5817ffd1
PB
3492
3493/* An XRTRARB_MASK, but with A bit clear. */
0f873fd5 3494#define XRTARARB_MASK (XRTRARB_MASK & ~((uint64_t) 1 << 25))
5817ffd1
PB
3495
3496/* An XRTRARB_MASK, but with BF bits clear. */
0f873fd5 3497#define XRTBFRARB_MASK (XRTRARB_MASK & ~((uint64_t) 7 << 23))
5817ffd1 3498
f3806e43 3499/* An X form instruction with the L bit specified. */
b80c7270
AM
3500#define XOPL(op, xop, l) \
3501 (X ((op), (xop)) \
0f873fd5 3502 | ((((uint64_t)(l)) & 1) << 21))
252b5132 3503
e0d602ec 3504/* An X form instruction with the L bits specified. */
b80c7270
AM
3505#define XOPL2(op, xop, l) \
3506 (X ((op), (xop)) \
0f873fd5 3507 | ((((uint64_t)(l)) & 3) << 21))
e0d602ec 3508
5817ffd1 3509/* An X form instruction with the L bit and RC bit specified. */
b80c7270
AM
3510#define XRCL(op, xop, l, rc) \
3511 (XRC ((op), (xop), (rc)) \
0f873fd5 3512 | ((((uint64_t)(l)) & 1) << 21))
5817ffd1 3513
19a6653c 3514/* An X form instruction with RT fields specified */
b80c7270
AM
3515#define XRT(op, xop, rt) \
3516 (X ((op), (xop)) \
0f873fd5 3517 | ((((uint64_t)(rt)) & 0x1f) << 21))
19a6653c
AM
3518
3519/* An X form instruction with RT and RA fields specified */
b80c7270
AM
3520#define XRTRA(op, xop, rt, ra) \
3521 (X ((op), (xop)) \
0f873fd5
PB
3522 | ((((uint64_t)(rt)) & 0x1f) << 21) \
3523 | ((((uint64_t)(ra)) & 0x1f) << 16))
19a6653c 3524
252b5132 3525/* The mask for an X form comparison instruction. */
0f873fd5 3526#define XCMP_MASK (X_MASK | (((uint64_t)1) << 22))
252b5132 3527
520ceea4
BE
3528/* The mask for an X form comparison instruction with the L field
3529 fixed. */
0f873fd5 3530#define XCMPL_MASK (XCMP_MASK | (((uint64_t)1) << 21))
252b5132
RH
3531
3532/* An X form trap instruction with the TO field specified. */
b80c7270
AM
3533#define XTO(op, xop, to) \
3534 (X ((op), (xop)) \
0f873fd5 3535 | ((((uint64_t)(to)) & 0x1f) << 21))
252b5132
RH
3536#define XTO_MASK (X_MASK | TO_MASK)
3537
e0c21649 3538/* An X form tlb instruction with the SH field specified. */
b80c7270
AM
3539#define XTLB(op, xop, sh) \
3540 (X ((op), (xop)) \
0f873fd5 3541 | ((((uint64_t)(sh)) & 0x1f) << 11))
e0c21649
GK
3542#define XTLB_MASK (X_MASK | SH_MASK)
3543
6ba045b1 3544/* An X form sync instruction. */
b80c7270
AM
3545#define XSYNC(op, xop, l) \
3546 (X ((op), (xop)) \
0f873fd5 3547 | ((((uint64_t)(l)) & 3) << 21))
6ba045b1 3548
b80c7270
AM
3549/* An X form sync instruction with everything filled in except the LS
3550 field. */
6ba045b1
AM
3551#define XSYNC_MASK (0xff9fffff)
3552
b80c7270
AM
3553/* An X form sync instruction with everything filled in except the L
3554 and E fields. */
aea77599
AM
3555#define XSYNCLE_MASK (0xff90ffff)
3556
702f0fb4 3557/* An X_MASK, but with the EH bit clear. */
0f873fd5 3558#define XEH_MASK (X_MASK & ~((uint64_t )1))
702f0fb4 3559
f5c120c5 3560/* An X form AltiVec dss instruction. */
0f873fd5 3561#define XDSS(op, xop, a) (X ((op), (xop)) | ((((uint64_t)(a)) & 1) << 25))
f5c120c5
MG
3562#define XDSS_MASK XDSS(0x3f, 0x3ff, 1)
3563
252b5132 3564/* An XFL form instruction. */
b80c7270
AM
3565#define XFL(op, xop, rc) \
3566 (OP (op) \
0f873fd5
PB
3567 | ((((uint64_t)(xop)) & 0x3ff) << 1) \
3568 | (((uint64_t)(rc)) & 1))
ea192fa3 3569#define XFL_MASK XFL (0x3f, 0x3ff, 1)
252b5132 3570
23976049 3571/* An X form isel instruction. */
0f873fd5 3572#define XISEL(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1f) << 1))
de866fcc 3573#define XISEL_MASK XISEL(0x3f, 0x1f)
23976049 3574
252b5132 3575/* An XL form instruction with the LK field set to 0. */
0f873fd5 3576#define XL(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x3ff) << 1))
252b5132
RH
3577
3578/* An XL form instruction which uses the LK field. */
3579#define XLLK(op, xop, lk) (XL ((op), (xop)) | ((lk) & 1))
3580
3581/* The mask for an XL form instruction. */
3582#define XL_MASK XLLK (0x3f, 0x3ff, 1)
3583
c0637f3a
PB
3584/* An XL_MASK with the RT, RA and RB fields fixed, but S bit clear. */
3585#define XLS_MASK ((XL_MASK | RT_MASK | RA_MASK | RB_MASK) & ~(1 << 11))
3586
252b5132
RH
3587/* An XL form instruction which explicitly sets the BO field. */
3588#define XLO(op, bo, xop, lk) \
0f873fd5 3589 (XLLK ((op), (xop), (lk)) | ((((uint64_t)(bo)) & 0x1f) << 21))
252b5132
RH
3590#define XLO_MASK (XL_MASK | BO_MASK)
3591
252b5132
RH
3592/* An XL form instruction which sets the BO field and the condition
3593 bits of the BI field. */
3594#define XLOCB(op, bo, cb, xop, lk) \
0f873fd5 3595 (XLO ((op), (bo), (xop), (lk)) | ((((uint64_t)(cb)) & 3) << 16))
252b5132
RH
3596#define XLOCB_MASK XLOCB (0x3f, 0x1f, 0x3, 0x3ff, 1)
3597
aae9718e 3598/* An XL_MASK or XLOCB_MASK with the BB field fixed. */
252b5132 3599#define XLBB_MASK (XL_MASK | BB_MASK)
252b5132
RH
3600#define XLBOCBBB_MASK (XLOCB_MASK | BB_MASK)
3601
d0618d1c 3602/* A mask for branch instructions using the BH field. */
66e85460 3603#define XLBH_MASK (XL_MASK | (BB_MASK & ~(3 << 11)))
d0618d1c 3604
252b5132
RH
3605/* An XL_MASK with the BO and BB fields fixed. */
3606#define XLBOBB_MASK (XL_MASK | BO_MASK | BB_MASK)
3607
3608/* An XL_MASK with the BO, BI and BB fields fixed. */
3609#define XLBOBIBB_MASK (XL_MASK | BO_MASK | BI_MASK | BB_MASK)
3610
e01d869a 3611/* An X form mbar instruction with MO field. */
b80c7270
AM
3612#define XMBAR(op, xop, mo) \
3613 (X ((op), (xop)) \
0f873fd5 3614 | ((((uint64_t)(mo)) & 1) << 21))
e01d869a 3615
252b5132 3616/* An XO form instruction. */
b80c7270
AM
3617#define XO(op, xop, oe, rc) \
3618 (OP (op) \
0f873fd5
PB
3619 | ((((uint64_t)(xop)) & 0x1ff) << 1) \
3620 | ((((uint64_t)(oe)) & 1) << 10) \
b80c7270 3621 | (((unsigned long)(rc)) & 1))
252b5132
RH
3622#define XO_MASK XO (0x3f, 0x1ff, 1, 1)
3623
3624/* An XO_MASK with the RB field fixed. */
3625#define XORB_MASK (XO_MASK | RB_MASK)
3626
c3d65c1c 3627/* An XOPS form instruction for paired singles. */
b80c7270
AM
3628#define XOPS(op, xop, rc) \
3629 (OP (op) \
0f873fd5
PB
3630 | ((((uint64_t)(xop)) & 0x3ff) << 1) \
3631 | (((uint64_t)(rc)) & 1))
c3d65c1c
BE
3632#define XOPS_MASK XOPS (0x3f, 0x3ff, 1)
3633
3634
252b5132 3635/* An XS form instruction. */
b80c7270
AM
3636#define XS(op, xop, rc) \
3637 (OP (op) \
0f873fd5
PB
3638 | ((((uint64_t)(xop)) & 0x1ff) << 2) \
3639 | (((uint64_t)(rc)) & 1))
252b5132
RH
3640#define XS_MASK XS (0x3f, 0x1ff, 1)
3641
3642/* A mask for the FXM version of an XFX form instruction. */
98e69875 3643#define XFXFXM_MASK (X_MASK | (1 << 11) | (1 << 20))
252b5132
RH
3644
3645/* An XFX form instruction with the FXM field filled in. */
b80c7270
AM
3646#define XFXM(op, xop, fxm, p4) \
3647 (X ((op), (xop)) \
0f873fd5
PB
3648 | ((((uint64_t)(fxm)) & 0xff) << 12) \
3649 | ((uint64_t)(p4) << 20))
252b5132
RH
3650
3651/* An XFX form instruction with the SPR field filled in. */
b80c7270
AM
3652#define XSPR(op, xop, spr) \
3653 (X ((op), (xop)) \
0f873fd5
PB
3654 | ((((uint64_t)(spr)) & 0x1f) << 16) \
3655 | ((((uint64_t)(spr)) & 0x3e0) << 6))
252b5132
RH
3656#define XSPR_MASK (X_MASK | SPR_MASK)
3657
3658/* An XFX form instruction with the SPR field filled in except for the
3659 SPRBAT field. */
3660#define XSPRBAT_MASK (XSPR_MASK &~ SPRBAT_MASK)
3661
fa758a70
AC
3662/* An XFX form instruction with the SPR field filled in except for the
3663 SPRGQR field. */
3664#define XSPRGQR_MASK (XSPR_MASK &~ SPRGQR_MASK)
3665
252b5132
RH
3666/* An XFX form instruction with the SPR field filled in except for the
3667 SPRG field. */
b84bf58a 3668#define XSPRG_MASK (XSPR_MASK & ~(0x1f << 16))
252b5132
RH
3669
3670/* An X form instruction with everything filled in except the E field. */
3671#define XE_MASK (0xffff7fff)
3672
23976049 3673/* An X form user context instruction. */
0f873fd5 3674#define XUC(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f))
23976049
EZ
3675#define XUC_MASK XUC(0x3f, 0x1f)
3676
c3d65c1c 3677/* An XW form instruction. */
b80c7270
AM
3678#define XW(op, xop, rc) \
3679 (OP (op) \
0f873fd5 3680 | ((((uint64_t)(xop)) & 0x3f) << 1) \
b80c7270 3681 | ((rc) & 1))
c3d65c1c
BE
3682/* The mask for a G form instruction. rc not supported at present. */
3683#define XW_MASK XW (0x3f, 0x3f, 0)
3684
081ba1b3 3685/* An APU form instruction. */
b80c7270
AM
3686#define APU(op, xop, rc) \
3687 (OP (op) \
0f873fd5 3688 | (((uint64_t)(xop)) & 0x3ff) << 1 \
b80c7270 3689 | ((rc) & 1))
081ba1b3
AM
3690
3691/* The mask for an APU form instruction. */
3692#define APU_MASK APU (0x3f, 0x3ff, 1)
3693#define APU_RT_MASK (APU_MASK | RT_MASK)
3694#define APU_RA_MASK (APU_MASK | RA_MASK)
3695
252b5132
RH
3696/* The BO encodings used in extended conditional branch mnemonics. */
3697#define BODNZF (0x0)
3698#define BODNZFP (0x1)
3699#define BODZF (0x2)
3700#define BODZFP (0x3)
252b5132
RH
3701#define BODNZT (0x8)
3702#define BODNZTP (0x9)
3703#define BODZT (0xa)
3704#define BODZTP (0xb)
802a735e
AM
3705
3706#define BOF (0x4)
3707#define BOFP (0x5)
94efba12
AM
3708#define BOFM4 (0x6)
3709#define BOFP4 (0x7)
252b5132
RH
3710#define BOT (0xc)
3711#define BOTP (0xd)
94efba12
AM
3712#define BOTM4 (0xe)
3713#define BOTP4 (0xf)
802a735e 3714
252b5132
RH
3715#define BODNZ (0x10)
3716#define BODNZP (0x11)
3717#define BODZ (0x12)
3718#define BODZP (0x13)
94efba12
AM
3719#define BODNZM4 (0x18)
3720#define BODNZP4 (0x19)
3721#define BODZM4 (0x1a)
3722#define BODZP4 (0x1b)
802a735e 3723
252b5132
RH
3724#define BOU (0x14)
3725
b9c361e0
JL
3726/* The BO16 encodings used in extended VLE conditional branch mnemonics. */
3727#define BO16F (0x0)
3728#define BO16T (0x1)
3729
3730/* The BO32 encodings used in extended VLE conditional branch mnemonics. */
3731#define BO32F (0x0)
3732#define BO32T (0x1)
3733#define BO32DNZ (0x2)
3734#define BO32DZ (0x3)
3735
252b5132
RH
3736/* The BI condition bit encodings used in extended conditional branch
3737 mnemonics. */
3738#define CBLT (0)
3739#define CBGT (1)
3740#define CBEQ (2)
3741#define CBSO (3)
3742
3743/* The TO encodings used in extended trap mnemonics. */
3744#define TOLGT (0x1)
3745#define TOLLT (0x2)
3746#define TOEQ (0x4)
3747#define TOLGE (0x5)
3748#define TOLNL (0x5)
3749#define TOLLE (0x6)
3750#define TOLNG (0x6)
3751#define TOGT (0x8)
3752#define TOGE (0xc)
3753#define TONL (0xc)
3754#define TOLT (0x10)
3755#define TOLE (0x14)
3756#define TONG (0x14)
3757#define TONE (0x18)
3758#define TOU (0x1f)
3759\f
3760/* Smaller names for the flags so each entry in the opcodes table will
3761 fit on a single line. */
3762#undef PPC
de866fcc 3763#define PPC PPC_OPCODE_PPC
661bd698 3764#define PPCCOM PPC_OPCODE_PPC | PPC_OPCODE_COMMON
661bd698 3765#define POWER4 PPC_OPCODE_POWER4
1ed8e1e4 3766#define POWER5 PPC_OPCODE_POWER5
702f0fb4 3767#define POWER6 PPC_OPCODE_POWER6
066be9f7 3768#define POWER7 PPC_OPCODE_POWER7
5817ffd1 3769#define POWER8 PPC_OPCODE_POWER8
a680de9a 3770#define POWER9 PPC_OPCODE_POWER9
7c1f4227 3771#define POWER10 PPC_OPCODE_POWER10
ede602d7 3772#define CELL PPC_OPCODE_CELL
bdc70b4a 3773#define PPC64 PPC_OPCODE_64 | PPC_OPCODE_64_BRIDGE
6b069ee7 3774#define NON32 (PPC_OPCODE_64 | PPC_OPCODE_POWER4 \
bdc70b4a 3775 | PPC_OPCODE_EFS | PPC_OPCODE_E500MC | PPC_OPCODE_TITAN)
418c1742 3776#define PPC403 PPC_OPCODE_403
081ba1b3 3777#define PPC405 PPC_OPCODE_405
7d5b217e 3778#define PPC440 PPC_OPCODE_440
c8187e15 3779#define PPC464 PPC440
9fe54b1c 3780#define PPC476 PPC_OPCODE_476
ef5a96d5 3781#define PPC750 PPC_OPCODE_750
fa758a70
AC
3782#define GEKKO PPC_OPCODE_750
3783#define BROADWAY PPC_OPCODE_750
ef5a96d5
AM
3784#define PPC7450 PPC_OPCODE_7450
3785#define PPC860 PPC_OPCODE_860
c3d65c1c 3786#define PPCPS PPC_OPCODE_PPCPS
a404d431 3787#define PPCVEC PPC_OPCODE_ALTIVEC
9a85b496
AM
3788#define PPCVEC2 (PPC_OPCODE_POWER8 | PPC_OPCODE_E6500)
3789#define PPCVEC3 PPC_OPCODE_POWER9
9b4e5766 3790#define PPCVSX PPC_OPCODE_VSX
9570835e
AM
3791#define PPCVSX2 PPC_OPCODE_POWER8
3792#define PPCVSX3 PPC_OPCODE_POWER9
de866fcc
AM
3793#define POWER PPC_OPCODE_POWER
3794#define POWER2 PPC_OPCODE_POWER | PPC_OPCODE_POWER2
81a0b7e2 3795#define PWR2COM PPC_OPCODE_POWER | PPC_OPCODE_POWER2 | PPC_OPCODE_COMMON
b80c7270
AM
3796#define PPCPWR2 (PPC_OPCODE_PPC | PPC_OPCODE_POWER | PPC_OPCODE_POWER2 \
3797 | PPC_OPCODE_COMMON)
de866fcc 3798#define COM PPC_OPCODE_POWER | PPC_OPCODE_PPC | PPC_OPCODE_COMMON
de866fcc 3799#define M601 PPC_OPCODE_POWER | PPC_OPCODE_601
661bd698 3800#define PWRCOM PPC_OPCODE_POWER | PPC_OPCODE_601 | PPC_OPCODE_COMMON
de866fcc 3801#define MFDEC1 PPC_OPCODE_POWER
b80c7270
AM
3802#define MFDEC2 (PPC_OPCODE_PPC | PPC_OPCODE_601 | PPC_OPCODE_BOOKE \
3803 | PPC_OPCODE_TITAN)
418c1742 3804#define BOOKE PPC_OPCODE_BOOKE
14b57c7c 3805#define NO371 PPC_OPCODE_BOOKE | PPC_OPCODE_PPCPS | PPC_OPCODE_EFS
36ae0db3 3806#define PPCE300 PPC_OPCODE_E300
14b57c7c 3807#define PPCSPE PPC_OPCODE_SPE
74081948 3808#define PPCSPE2 PPC_OPCODE_SPE2
14b57c7c
AM
3809#define PPCISEL PPC_OPCODE_ISEL
3810#define PPCEFS PPC_OPCODE_EFS
74081948 3811#define PPCEFS2 PPC_OPCODE_EFS2
de866fcc 3812#define PPCBRLK PPC_OPCODE_BRLOCK
23976049 3813#define PPCPMR PPC_OPCODE_PMR
aea77599 3814#define PPCTMR PPC_OPCODE_TMR
de866fcc 3815#define PPCCHLK PPC_OPCODE_CACHELCK
fa758a70 3816#define PPCRFMCI PPC_OPCODE_RFMCI
19a6653c 3817#define E500MC PPC_OPCODE_E500MC
634b50f2 3818#define PPCA2 PPC_OPCODE_A2
43e65147 3819#define TITAN PPC_OPCODE_TITAN
62adc510 3820#define MULHW PPC_OPCODE_405 | PPC_OPCODE_440 | PPC_OPCODE_476 | TITAN
e01d869a 3821#define E500 PPC_OPCODE_E500
aea77599 3822#define E6500 PPC_OPCODE_E6500
b9c361e0 3823#define PPCVLE PPC_OPCODE_VLE
ef85eab0 3824#define PPCHTM PPC_OPCODE_POWER8
dfdaec14 3825#define E200Z4 PPC_OPCODE_E200Z4
e3c2f928 3826#define PPCLSP PPC_OPCODE_LSP
4fff86c5
PB
3827/* The list of embedded processors that use the embedded operand ordering
3828 for the 3 operand dcbt and dcbtst instructions. */
3829#define DCBT_EO (PPC_OPCODE_E500 | PPC_OPCODE_E500MC | PPC_OPCODE_476 \
14b57c7c 3830 | PPC_OPCODE_A2)
4fff86c5
PB
3831
3832
252b5132
RH
3833\f
3834/* The opcode table.
3835
3836 The format of the opcode table is:
3837
8ebac3aa 3838 NAME OPCODE MASK FLAGS ANTI {OPERANDS}
252b5132
RH
3839
3840 NAME is the name of the instruction.
3841 OPCODE is the instruction opcode.
3842 MASK is the opcode mask; this is used to tell the disassembler
3843 which bits in the actual opcode must match OPCODE.
8ebac3aa
AM
3844 FLAGS are flags indicating which processors support the instruction.
3845 ANTI indicates which processors don't support the instruction.
252b5132
RH
3846 OPERANDS is the list of operands.
3847
3848 The disassembler reads the table in order and prints the first
3849 instruction which matches, so this table is sorted to put more
de866fcc
AM
3850 specific instructions before more general instructions.
3851
3852 This table must be sorted by major opcode. Please try to keep it
3853 vaguely sorted within major opcode too, except of course where
3854 constrained otherwise by disassembler operation. */
252b5132
RH
3855
3856const struct powerpc_opcode powerpc_opcodes[] = {
14b57c7c
AM
3857{"attn", X(0,256), X_MASK, POWER4|PPCA2, PPC476|PPCVLE, {0}},
3858{"tdlgti", OPTO(2,TOLGT), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3859{"tdllti", OPTO(2,TOLLT), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3860{"tdeqi", OPTO(2,TOEQ), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3861{"tdlgei", OPTO(2,TOLGE), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3862{"tdlnli", OPTO(2,TOLNL), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3863{"tdllei", OPTO(2,TOLLE), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3864{"tdlngi", OPTO(2,TOLNG), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3865{"tdgti", OPTO(2,TOGT), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3866{"tdgei", OPTO(2,TOGE), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3867{"tdnli", OPTO(2,TONL), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3868{"tdlti", OPTO(2,TOLT), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3869{"tdlei", OPTO(2,TOLE), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3870{"tdngi", OPTO(2,TONG), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3871{"tdnei", OPTO(2,TONE), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3872{"tdui", OPTO(2,TOU), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3873{"tdi", OP(2), OP_MASK, PPC64, PPCVLE, {TO, RA, SI}},
3874
3875{"twlgti", OPTO(3,TOLGT), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3876{"tlgti", OPTO(3,TOLGT), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3877{"twllti", OPTO(3,TOLLT), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3878{"tllti", OPTO(3,TOLLT), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3879{"tweqi", OPTO(3,TOEQ), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3880{"teqi", OPTO(3,TOEQ), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3881{"twlgei", OPTO(3,TOLGE), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3882{"tlgei", OPTO(3,TOLGE), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3883{"twlnli", OPTO(3,TOLNL), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3884{"tlnli", OPTO(3,TOLNL), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3885{"twllei", OPTO(3,TOLLE), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3886{"tllei", OPTO(3,TOLLE), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3887{"twlngi", OPTO(3,TOLNG), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3888{"tlngi", OPTO(3,TOLNG), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3889{"twgti", OPTO(3,TOGT), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3890{"tgti", OPTO(3,TOGT), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3891{"twgei", OPTO(3,TOGE), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3892{"tgei", OPTO(3,TOGE), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3893{"twnli", OPTO(3,TONL), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3894{"tnli", OPTO(3,TONL), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3895{"twlti", OPTO(3,TOLT), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3896{"tlti", OPTO(3,TOLT), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3897{"twlei", OPTO(3,TOLE), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3898{"tlei", OPTO(3,TOLE), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3899{"twngi", OPTO(3,TONG), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3900{"tngi", OPTO(3,TONG), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3901{"twnei", OPTO(3,TONE), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3902{"tnei", OPTO(3,TONE), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3903{"twui", OPTO(3,TOU), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3904{"tui", OPTO(3,TOU), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3905{"twi", OP(3), OP_MASK, PPCCOM, PPCVLE, {TO, RA, SI}},
3906{"ti", OP(3), OP_MASK, PWRCOM, PPCVLE, {TO, RA, SI}},
3907
3908{"ps_cmpu0", X (4, 0), XBF_MASK, PPCPS, 0, {BF, FRA, FRB}},
3909{"vaddubm", VX (4, 0), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3910{"vmul10cuq", VX (4, 1), VXVB_MASK, PPCVEC3, 0, {VD, VA}},
3911{"vmaxub", VX (4, 2), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3912{"vrlb", VX (4, 4), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3913{"vcmpequb", VXR(4, 6,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3914{"vcmpneb", VXR(4, 7,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
3915{"vmuloub", VX (4, 8), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3916{"vaddfp", VX (4, 10), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3917{"psq_lx", XW (4, 6,0), XW_MASK, PPCPS, 0, {FRT,RA,RB,PSWM,PSQM}},
3918{"vmrghb", VX (4, 12), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3919{"psq_stx", XW (4, 7,0), XW_MASK, PPCPS, 0, {FRS,RA,RB,PSWM,PSQM}},
3920{"vpkuhum", VX (4, 14), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3921{"mulhhwu", XRC(4, 8,0), X_MASK, MULHW, 0, {RT, RA, RB}},
3922{"mulhhwu.", XRC(4, 8,1), X_MASK, MULHW, 0, {RT, RA, RB}},
3923{"ps_sum0", A (4, 10,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3924{"ps_sum0.", A (4, 10,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3925{"ps_sum1", A (4, 11,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3926{"ps_sum1.", A (4, 11,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3927{"ps_muls0", A (4, 12,0), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
3928{"machhwu", XO (4, 12,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3929{"ps_muls0.", A (4, 12,1), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
3930{"machhwu.", XO (4, 12,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3931{"ps_muls1", A (4, 13,0), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
3932{"ps_muls1.", A (4, 13,1), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
3933{"ps_madds0", A (4, 14,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3934{"ps_madds0.", A (4, 14,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3935{"ps_madds1", A (4, 15,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3936{"ps_madds1.", A (4, 15,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3937{"vmhaddshs", VXA(4, 32), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3938{"vmhraddshs", VXA(4, 33), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3939{"vmladduhm", VXA(4, 34), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3940{"vmsumudm", VXA(4, 35), VXA_MASK, PPCVEC3, 0, {VD, VA, VB, VC}},
3941{"ps_div", A (4, 18,0), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3942{"vmsumubm", VXA(4, 36), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3943{"ps_div.", A (4, 18,1), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3944{"vmsummbm", VXA(4, 37), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3945{"vmsumuhm", VXA(4, 38), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3946{"vmsumuhs", VXA(4, 39), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3947{"ps_sub", A (4, 20,0), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3948{"vmsumshm", VXA(4, 40), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3949{"ps_sub.", A (4, 20,1), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3950{"vmsumshs", VXA(4, 41), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3951{"ps_add", A (4, 21,0), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3952{"vsel", VXA(4, 42), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3953{"ps_add.", A (4, 21,1), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3954{"vperm", VXA(4, 43), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3955{"vsldoi", VXA(4, 44), VXASHB_MASK, PPCVEC, 0, {VD, VA, VB, SHB}},
3956{"vpermxor", VXA(4, 45), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}},
3957{"ps_sel", A (4, 23,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3958{"vmaddfp", VXA(4, 46), VXA_MASK, PPCVEC, 0, {VD, VA, VC, VB}},
3959{"ps_sel.", A (4, 23,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3960{"vnmsubfp", VXA(4, 47), VXA_MASK, PPCVEC, 0, {VD, VA, VC, VB}},
3961{"ps_res", A (4, 24,0), AFRAFRC_MASK, PPCPS, 0, {FRT, FRB}},
3962{"maddhd", VXA(4, 48), VXA_MASK, POWER9, 0, {RT, RA, RB, RC}},
3963{"ps_res.", A (4, 24,1), AFRAFRC_MASK, PPCPS, 0, {FRT, FRB}},
3964{"maddhdu", VXA(4, 49), VXA_MASK, POWER9, 0, {RT, RA, RB, RC}},
3965{"ps_mul", A (4, 25,0), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
3966{"ps_mul.", A (4, 25,1), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
3967{"maddld", VXA(4, 51), VXA_MASK, POWER9, 0, {RT, RA, RB, RC}},
3968{"ps_rsqrte", A (4, 26,0), AFRAFRC_MASK, PPCPS, 0, {FRT, FRB}},
3969{"ps_rsqrte.", A (4, 26,1), AFRAFRC_MASK, PPCPS, 0, {FRT, FRB}},
3970{"ps_msub", A (4, 28,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3971{"ps_msub.", A (4, 28,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3972{"ps_madd", A (4, 29,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3973{"ps_madd.", A (4, 29,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3974{"vpermr", VXA(4, 59), VXA_MASK, PPCVEC3, 0, {VD, VA, VB, VC}},
3975{"ps_nmsub", A (4, 30,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3976{"vaddeuqm", VXA(4, 60), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}},
3977{"ps_nmsub.", A (4, 30,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3978{"vaddecuq", VXA(4, 61), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}},
3979{"ps_nmadd", A (4, 31,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3980{"vsubeuqm", VXA(4, 62), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}},
3981{"ps_nmadd.", A (4, 31,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3982{"vsubecuq", VXA(4, 63), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}},
3983{"ps_cmpo0", X (4, 32), XBF_MASK, PPCPS, 0, {BF, FRA, FRB}},
3984{"vadduhm", VX (4, 64), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3985{"vmul10ecuq", VX (4, 65), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
3986{"vmaxuh", VX (4, 66), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3987{"vrlh", VX (4, 68), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3988{"vcmpequh", VXR(4, 70,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3989{"vcmpneh", VXR(4, 71,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
3990{"vmulouh", VX (4, 72), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3991{"vsubfp", VX (4, 74), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3992{"psq_lux", XW (4, 38,0), XW_MASK, PPCPS, 0, {FRT,RA,RB,PSWM,PSQM}},
3993{"vmrghh", VX (4, 76), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3994{"psq_stux", XW (4, 39,0), XW_MASK, PPCPS, 0, {FRS,RA,RB,PSWM,PSQM}},
3995{"vpkuwum", VX (4, 78), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3996{"ps_neg", XRC(4, 40,0), XRA_MASK, PPCPS, 0, {FRT, FRB}},
3997{"mulhhw", XRC(4, 40,0), X_MASK, MULHW, 0, {RT, RA, RB}},
3998{"ps_neg.", XRC(4, 40,1), XRA_MASK, PPCPS, 0, {FRT, FRB}},
3999{"mulhhw.", XRC(4, 40,1), X_MASK, MULHW, 0, {RT, RA, RB}},
4000{"machhw", XO (4, 44,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4001{"machhw.", XO (4, 44,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4002{"nmachhw", XO (4, 46,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4003{"nmachhw.", XO (4, 46,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4004{"ps_cmpu1", X (4, 64), XBF_MASK, PPCPS, 0, {BF, FRA, FRB}},
4005{"vadduwm", VX (4, 128), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4006{"vmaxuw", VX (4, 130), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4007{"vrlw", VX (4, 132), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4008{"vrlwmi", VX (4, 133), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
4009{"vcmpequw", VXR(4, 134,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4010{"vcmpnew", VXR(4, 135,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
4011{"vmulouw", VX (4, 136), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4012{"vmuluwm", VX (4, 137), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
f4791f1a 4013{"vdivuw", VX (4, 139), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
4014{"vmrghw", VX (4, 140), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4015{"vpkuhus", VX (4, 142), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4016{"ps_mr", XRC(4, 72,0), XRA_MASK, PPCPS, 0, {FRT, FRB}},
4017{"ps_mr.", XRC(4, 72,1), XRA_MASK, PPCPS, 0, {FRT, FRB}},
4018{"machhwsu", XO (4, 76,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4019{"machhwsu.", XO (4, 76,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4020{"ps_cmpo1", X (4, 96), XBF_MASK, PPCPS, 0, {BF, FRA, FRB}},
4021{"vaddudm", VX (4, 192), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4022{"vmaxud", VX (4, 194), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4023{"vrld", VX (4, 196), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4024{"vrldmi", VX (4, 197), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
4025{"vcmpeqfp", VXR(4, 198,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4026{"vcmpequd", VXR(4, 199,0), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
f4791f1a 4027{"vdivud", VX (4, 203), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
4028{"vpkuwus", VX (4, 206), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4029{"machhws", XO (4, 108,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4030{"machhws.", XO (4, 108,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4031{"nmachhws", XO (4, 110,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4032{"nmachhws.", XO (4, 110,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4033{"vadduqm", VX (4, 256), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4034{"vmaxsb", VX (4, 258), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4035{"vslb", VX (4, 260), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4036{"vcmpnezb", VXR(4, 263,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
4037{"vmulosb", VX (4, 264), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4038{"vrefp", VX (4, 266), VXVA_MASK, PPCVEC, 0, {VD, VB}},
4039{"vmrglb", VX (4, 268), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4040{"vpkshus", VX (4, 270), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4041{"ps_nabs", XRC(4, 136,0), XRA_MASK, PPCPS, 0, {FRT, FRB}},
4042{"mulchwu", XRC(4, 136,0), X_MASK, MULHW, 0, {RT, RA, RB}},
4043{"ps_nabs.", XRC(4, 136,1), XRA_MASK, PPCPS, 0, {FRT, FRB}},
4044{"mulchwu.", XRC(4, 136,1), X_MASK, MULHW, 0, {RT, RA, RB}},
4045{"macchwu", XO (4, 140,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4046{"macchwu.", XO (4, 140,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4047{"vaddcuq", VX (4, 320), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4048{"vmaxsh", VX (4, 322), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4049{"vslh", VX (4, 324), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4050{"vcmpnezh", VXR(4, 327,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
4051{"vmulosh", VX (4, 328), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4052{"vrsqrtefp", VX (4, 330), VXVA_MASK, PPCVEC, 0, {VD, VB}},
4053{"vmrglh", VX (4, 332), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4054{"vpkswus", VX (4, 334), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4055{"mulchw", XRC(4, 168,0), X_MASK, MULHW, 0, {RT, RA, RB}},
4056{"mulchw.", XRC(4, 168,1), X_MASK, MULHW, 0, {RT, RA, RB}},
4057{"macchw", XO (4, 172,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4058{"macchw.", XO (4, 172,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4059{"nmacchw", XO (4, 174,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4060{"nmacchw.", XO (4, 174,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4061{"vaddcuw", VX (4, 384), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4062{"vmaxsw", VX (4, 386), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4063{"vslw", VX (4, 388), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4064{"vrlwnm", VX (4, 389), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
4065{"vcmpnezw", VXR(4, 391,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
4066{"vmulosw", VX (4, 392), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4067{"vexptefp", VX (4, 394), VXVA_MASK, PPCVEC, 0, {VD, VB}},
f4791f1a 4068{"vdivsw", VX (4, 395), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
4069{"vmrglw", VX (4, 396), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4070{"vpkshss", VX (4, 398), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4071{"macchwsu", XO (4, 204,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4072{"macchwsu.", XO (4, 204,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4073{"vmaxsd", VX (4, 450), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4074{"vsl", VX (4, 452), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4075{"vrldnm", VX (4, 453), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
4076{"vcmpgefp", VXR(4, 454,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
f4791f1a 4077{"vmulld", VX (4, 457), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c 4078{"vlogefp", VX (4, 458), VXVA_MASK, PPCVEC, 0, {VD, VB}},
f4791f1a 4079{"vdivsd", VX (4, 459), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
4080{"vpkswss", VX (4, 462), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4081{"macchws", XO (4, 236,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4082{"macchws.", XO (4, 236,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4083{"nmacchws", XO (4, 238,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4084{"nmacchws.", XO (4, 238,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4085{"evaddw", VX (4, 512), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4086{"vaddubs", VX (4, 512), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4087{"vmul10uq", VX (4, 513), VXVB_MASK, PPCVEC3, 0, {VD, VA}},
4088{"evaddiw", VX (4, 514), VX_MASK, PPCSPE, 0, {RS, RB, UIMM}},
4089{"vminub", VX (4, 514), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4090{"evsubfw", VX (4, 516), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4091{"evsubw", VX (4, 516), VX_MASK, PPCSPE, 0, {RS, RB, RA}},
4092{"vsrb", VX (4, 516), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4093{"evsubifw", VX (4, 518), VX_MASK, PPCSPE, 0, {RS, UIMM, RB}},
4094{"evsubiw", VX (4, 518), VX_MASK, PPCSPE, 0, {RS, RB, UIMM}},
4095{"vcmpgtub", VXR(4, 518,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4096{"evabs", VX (4, 520), VX_MASK, PPCSPE, 0, {RS, RA}},
4097{"vmuleub", VX (4, 520), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4098{"evneg", VX (4, 521), VX_MASK, PPCSPE, 0, {RS, RA}},
4099{"evextsb", VX (4, 522), VX_MASK, PPCSPE, 0, {RS, RA}},
4100{"vrfin", VX (4, 522), VXVA_MASK, PPCVEC, 0, {VD, VB}},
4101{"evextsh", VX (4, 523), VX_MASK, PPCSPE, 0, {RS, RA}},
4102{"evrndw", VX (4, 524), VX_MASK, PPCSPE, 0, {RS, RA}},
4103{"vspltb", VX (4, 524), VXUIMM4_MASK, PPCVEC, 0, {VD, VB, UIMM4}},
4104{"vextractub", VX (4, 525), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
4105{"evcntlzw", VX (4, 525), VX_MASK, PPCSPE, 0, {RS, RA}},
4106{"evcntlsw", VX (4, 526), VX_MASK, PPCSPE, 0, {RS, RA}},
4107{"vupkhsb", VX (4, 526), VXVA_MASK, PPCVEC, 0, {VD, VB}},
4108{"brinc", VX (4, 527), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4109{"ps_abs", XRC(4, 264,0), XRA_MASK, PPCPS, 0, {FRT, FRB}},
4110{"ps_abs.", XRC(4, 264,1), XRA_MASK, PPCPS, 0, {FRT, FRB}},
4111{"evand", VX (4, 529), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4112{"evandc", VX (4, 530), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4113{"evxor", VX (4, 534), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
98553ad3 4114{"evmr", VX (4, 535), VX_MASK, PPCSPE, 0, {RS, RAB}},
14b57c7c 4115{"evor", VX (4, 535), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
98553ad3 4116{"evnot", VX (4, 536), VX_MASK, PPCSPE, 0, {RS, RAB}},
14b57c7c 4117{"evnor", VX (4, 536), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
14b57c7c
AM
4118{"get", APU(4, 268,0), APU_RA_MASK, PPC405, 0, {RT, FSL}},
4119{"eveqv", VX (4, 537), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4120{"evorc", VX (4, 539), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4121{"evnand", VX (4, 542), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4122{"evsrwu", VX (4, 544), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4123{"evsrws", VX (4, 545), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4124{"evsrwiu", VX (4, 546), VX_MASK, PPCSPE, 0, {RS, RA, EVUIMM}},
4125{"evsrwis", VX (4, 547), VX_MASK, PPCSPE, 0, {RS, RA, EVUIMM}},
4126{"evslw", VX (4, 548), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4127{"evslwi", VX (4, 550), VX_MASK, PPCSPE, 0, {RS, RA, EVUIMM}},
4128{"evrlw", VX (4, 552), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4129{"evsplati", VX (4, 553), VX_MASK, PPCSPE, 0, {RS, SIMM}},
4130{"evrlwi", VX (4, 554), VX_MASK, PPCSPE, 0, {RS, RA, EVUIMM}},
4131{"evsplatfi", VX (4, 555), VX_MASK, PPCSPE, 0, {RS, SIMM}},
4132{"evmergehi", VX (4, 556), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4133{"evmergelo", VX (4, 557), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4134{"evmergehilo", VX (4, 558), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4135{"evmergelohi", VX (4, 559), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4136{"evcmpgtu", VX (4, 560), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
4137{"evcmpgts", VX (4, 561), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
4138{"evcmpltu", VX (4, 562), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
4139{"evcmplts", VX (4, 563), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
4140{"evcmpeq", VX (4, 564), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
4141{"cget", APU(4, 284,0), APU_RA_MASK, PPC405, 0, {RT, FSL}},
4142{"vadduhs", VX (4, 576), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4143{"vmul10euq", VX (4, 577), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
4144{"vminuh", VX (4, 578), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4145{"vsrh", VX (4, 580), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4146{"vcmpgtuh", VXR(4, 582,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4147{"vmuleuh", VX (4, 584), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4148{"vrfiz", VX (4, 586), VXVA_MASK, PPCVEC, 0, {VD, VB}},
4149{"vsplth", VX (4, 588), VXUIMM3_MASK, PPCVEC, 0, {VD, VB, UIMM3}},
4150{"vextractuh", VX (4, 589), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
4151{"vupkhsh", VX (4, 590), VXVA_MASK, PPCVEC, 0, {VD, VB}},
4152{"nget", APU(4, 300,0), APU_RA_MASK, PPC405, 0, {RT, FSL}},
4153{"evsel", EVSEL(4,79), EVSEL_MASK, PPCSPE, 0, {RS, RA, RB, CRFS}},
4154{"ncget", APU(4, 316,0), APU_RA_MASK, PPC405, 0, {RT, FSL}},
4155{"evfsadd", VX (4, 640), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4156{"vadduws", VX (4, 640), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4157{"evfssub", VX (4, 641), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
74081948 4158{"evfsmadd", VX (4, 642), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
14b57c7c 4159{"vminuw", VX (4, 642), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
74081948 4160{"evfsmsub", VX (4, 643), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
14b57c7c
AM
4161{"evfsabs", VX (4, 644), VX_MASK, PPCSPE, 0, {RS, RA}},
4162{"vsrw", VX (4, 644), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4163{"evfsnabs", VX (4, 645), VX_MASK, PPCSPE, 0, {RS, RA}},
4164{"evfsneg", VX (4, 646), VX_MASK, PPCSPE, 0, {RS, RA}},
4165{"vcmpgtuw", VXR(4, 646,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
74081948 4166{"evfssqrt", VX_RB_CONST(4, 647, 0), VX_RB_CONST_MASK, PPCEFS2, 0, {RD, RA}},
14b57c7c
AM
4167{"vmuleuw", VX (4, 648), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4168{"evfsmul", VX (4, 648), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
f4791f1a 4169{"vmulhuw", VX (4, 649), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c 4170{"evfsdiv", VX (4, 649), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
74081948 4171{"evfsnmadd", VX (4, 650), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
14b57c7c 4172{"vrfip", VX (4, 650), VXVA_MASK, PPCVEC, 0, {VD, VB}},
f4791f1a 4173{"vdiveuw", VX (4, 651), VX_MASK, POWER10, 0, {VD, VA, VB}},
74081948 4174{"evfsnmsub", VX (4, 651), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
14b57c7c
AM
4175{"evfscmpgt", VX (4, 652), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
4176{"vspltw", VX (4, 652), VXUIMM2_MASK, PPCVEC, 0, {VD, VB, UIMM2}},
4177{"vextractuw", VX (4, 653), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
4178{"evfscmplt", VX (4, 653), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
4179{"evfscmpeq", VX (4, 654), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
4180{"vupklsb", VX (4, 654), VXVA_MASK, PPCVEC, 0, {VD, VB}},
4181{"evfscfui", VX (4, 656), VX_MASK, PPCSPE, 0, {RS, RB}},
74081948 4182{"evfscfh", VX_RA_CONST(4, 657, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
14b57c7c
AM
4183{"evfscfsi", VX (4, 657), VX_MASK, PPCSPE, 0, {RS, RB}},
4184{"evfscfuf", VX (4, 658), VX_MASK, PPCSPE, 0, {RS, RB}},
4185{"evfscfsf", VX (4, 659), VX_MASK, PPCSPE, 0, {RS, RB}},
4186{"evfsctui", VX (4, 660), VX_MASK, PPCSPE, 0, {RS, RB}},
74081948 4187{"evfscth", VX_RA_CONST(4, 661, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
14b57c7c
AM
4188{"evfsctsi", VX (4, 661), VX_MASK, PPCSPE, 0, {RS, RB}},
4189{"evfsctuf", VX (4, 662), VX_MASK, PPCSPE, 0, {RS, RB}},
4190{"evfsctsf", VX (4, 663), VX_MASK, PPCSPE, 0, {RS, RB}},
4191{"evfsctuiz", VX (4, 664), VX_MASK, PPCSPE, 0, {RS, RB}},
4192{"put", APU(4, 332,0), APU_RT_MASK, PPC405, 0, {RA, FSL}},
4193{"evfsctsiz", VX (4, 666), VX_MASK, PPCSPE, 0, {RS, RB}},
4194{"evfststgt", VX (4, 668), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
4195{"evfststlt", VX (4, 669), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
4196{"evfststeq", VX (4, 670), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
74081948
AF
4197{"evfsmax", VX (4, 672), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4198{"evfsmin", VX (4, 673), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4199{"evfsaddsub", VX (4, 674), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4200{"evfssubadd", VX (4, 675), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4201{"evfssum", VX (4, 676), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4202{"evfsdiff", VX (4, 677), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4203{"evfssumdiff", VX (4, 678), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4204{"evfsdiffsum", VX (4, 679), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4205{"evfsaddx", VX (4, 680), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4206{"evfssubx", VX (4, 681), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4207{"evfsaddsubx", VX (4, 682), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4208{"evfssubaddx", VX (4, 683), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4209{"evfsmulx", VX (4, 684), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4210{"evfsmule", VX (4, 686), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4211{"evfsmulo", VX (4, 687), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4212{"efsmax", VX (4, 688), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4213{"efsmin", VX (4, 689), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
4214{"efdmax", VX (4, 696), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
14b57c7c 4215{"cput", APU(4, 348,0), APU_RT_MASK, PPC405, 0, {RA, FSL}},
74081948 4216{"efdmin", VX (4, 697), VX_MASK, PPCEFS2, 0, {RD, RA, RB}},
14b57c7c
AM
4217{"efsadd", VX (4, 704), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
4218{"efssub", VX (4, 705), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
74081948 4219{"efsmadd", VX (4, 706), VX_MASK, PPCEFS2, 0, {RS, RA, RB}},
14b57c7c 4220{"vminud", VX (4, 706), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
74081948 4221{"efsmsub", VX (4, 707), VX_MASK, PPCEFS2, 0, {RS, RA, RB}},
14b57c7c
AM
4222{"efsabs", VX (4, 708), VX_MASK, PPCEFS, 0, {RS, RA}},
4223{"vsr", VX (4, 708), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4224{"efsnabs", VX (4, 709), VX_MASK, PPCEFS, 0, {RS, RA}},
4225{"efsneg", VX (4, 710), VX_MASK, PPCEFS, 0, {RS, RA}},
4226{"vcmpgtfp", VXR(4, 710,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
74081948 4227{"efssqrt", VX_RB_CONST(4, 711, 0), VX_RB_CONST_MASK,PPCEFS2, 0, {RD, RA}},
14b57c7c
AM
4228{"vcmpgtud", VXR(4, 711,0), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
4229{"efsmul", VX (4, 712), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
f4791f1a 4230{"vmulhud", VX (4, 713), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c 4231{"efsdiv", VX (4, 713), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
74081948 4232{"efsnmadd", VX (4, 714), VX_MASK, PPCEFS2, 0, {RS, RA, RB}},
14b57c7c 4233{"vrfim", VX (4, 714), VXVA_MASK, PPCVEC, 0, {VD, VB}},
f4791f1a 4234{"vdiveud", VX (4, 715), VX_MASK, POWER10, 0, {VD, VA, VB}},
74081948 4235{"efsnmsub", VX (4, 715), VX_MASK, PPCEFS2, 0, {RS, RA, RB}},
14b57c7c
AM
4236{"efscmpgt", VX (4, 716), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
4237{"vextractd", VX (4, 717), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
4238{"efscmplt", VX (4, 717), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
4239{"efscmpeq", VX (4, 718), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
4240{"vupklsh", VX (4, 718), VXVA_MASK, PPCVEC, 0, {VD, VB}},
4241{"efscfd", VX (4, 719), VX_MASK, PPCEFS, 0, {RS, RB}},
4242{"efscfui", VX (4, 720), VX_MASK, PPCEFS, 0, {RS, RB}},
74081948 4243{"efscfh", VX_RA_CONST(4, 721, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
14b57c7c
AM
4244{"efscfsi", VX (4, 721), VX_MASK, PPCEFS, 0, {RS, RB}},
4245{"efscfuf", VX (4, 722), VX_MASK, PPCEFS, 0, {RS, RB}},
4246{"efscfsf", VX (4, 723), VX_MASK, PPCEFS, 0, {RS, RB}},
4247{"efsctui", VX (4, 724), VX_MASK, PPCEFS, 0, {RS, RB}},
74081948 4248{"efscth", VX_RA_CONST(4, 725, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
14b57c7c
AM
4249{"efsctsi", VX (4, 725), VX_MASK, PPCEFS, 0, {RS, RB}},
4250{"efsctuf", VX (4, 726), VX_MASK, PPCEFS, 0, {RS, RB}},
4251{"efsctsf", VX (4, 727), VX_MASK, PPCEFS, 0, {RS, RB}},
4252{"efsctuiz", VX (4, 728), VX_MASK, PPCEFS, 0, {RS, RB}},
4253{"nput", APU(4, 364,0), APU_RT_MASK, PPC405, 0, {RA, FSL}},
4254{"efsctsiz", VX (4, 730), VX_MASK, PPCEFS, 0, {RS, RB}},
4255{"efststgt", VX (4, 732), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
4256{"efststlt", VX (4, 733), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
4257{"efststeq", VX (4, 734), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
4258{"efdadd", VX (4, 736), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
4259{"efdsub", VX (4, 737), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
74081948
AF
4260{"efdmadd", VX (4, 738), VX_MASK, PPCEFS2, E500|E500MC, {RD, RA, RB}},
4261{"efdcfuid", VX (4, 738), VX_MASK, E500|E500MC,0, {RS, RB}},
4262{"efdmsub", VX (4, 739), VX_MASK, PPCEFS2, E500|E500MC, {RD, RA, RB}},
4263{"efdcfsid", VX (4, 739), VX_MASK, E500|E500MC,0, {RS, RB}},
14b57c7c
AM
4264{"efdabs", VX (4, 740), VX_MASK, PPCEFS, 0, {RS, RA}},
4265{"efdnabs", VX (4, 741), VX_MASK, PPCEFS, 0, {RS, RA}},
4266{"efdneg", VX (4, 742), VX_MASK, PPCEFS, 0, {RS, RA}},
74081948 4267{"efdsqrt", VX_RB_CONST(4, 743, 0), VX_RB_CONST_MASK, PPCEFS2, 0, {RD, RA}},
14b57c7c
AM
4268{"efdmul", VX (4, 744), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
4269{"efddiv", VX (4, 745), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
74081948
AF
4270{"efdnmadd", VX (4, 746), VX_MASK, PPCEFS2, E500|E500MC, {RD, RA, RB}},
4271{"efdctuidz", VX (4, 746), VX_MASK, E500|E500MC,0, {RS, RB}},
4272{"efdnmsub", VX (4, 747), VX_MASK, PPCEFS2, E500|E500MC, {RD, RA, RB}},
4273{"efdctsidz", VX (4, 747), VX_MASK, E500|E500MC,0, {RS, RB}},
14b57c7c
AM
4274{"efdcmpgt", VX (4, 748), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
4275{"efdcmplt", VX (4, 749), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
4276{"efdcmpeq", VX (4, 750), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
4277{"efdcfs", VX (4, 751), VX_MASK, PPCEFS, 0, {RS, RB}},
74081948
AF
4278{"efdcfui", VX_RA_CONST(4, 752, 0), VX_RA_CONST_MASK, PPCEFS, 0, {RS, RB}},
4279{"efdcfuid", VX_RA_CONST(4, 752, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC, {RS, RB}},
4280{"efdcfsi", VX_RA_CONST(4, 753, 0), VX_RA_CONST_MASK, PPCEFS, 0, {RS, RB}},
4281{"efdcfsid", VX_RA_CONST(4, 753, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC, {RS, RB}},
4282{"efdcfh", VX_RA_CONST(4, 753, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
14b57c7c
AM
4283{"efdcfuf", VX (4, 754), VX_MASK, PPCEFS, 0, {RS, RB}},
4284{"efdcfsf", VX (4, 755), VX_MASK, PPCEFS, 0, {RS, RB}},
4285{"efdctui", VX (4, 756), VX_MASK, PPCEFS, 0, {RS, RB}},
74081948 4286{"efdcth", VX_RA_CONST(4, 757, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
14b57c7c
AM
4287{"efdctsi", VX (4, 757), VX_MASK, PPCEFS, 0, {RS, RB}},
4288{"efdctuf", VX (4, 758), VX_MASK, PPCEFS, 0, {RS, RB}},
4289{"efdctsf", VX (4, 759), VX_MASK, PPCEFS, 0, {RS, RB}},
74081948
AF
4290{"efdctuiz", VX_RA_CONST(4, 760, 0), VX_RA_CONST_MASK, PPCEFS, 0, {RS, RB}},
4291{"efdctuidz", VX_RA_CONST(4, 760, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC, {RS, RB}},
14b57c7c 4292{"ncput", APU(4, 380,0), APU_RT_MASK, PPC405, 0, {RA, FSL}},
74081948
AF
4293{"efdctsiz", VX_RA_CONST(4, 762, 0), VX_RA_CONST_MASK, PPCEFS, 0, {RS, RB}},
4294{"efdctsidz", VX_RA_CONST(4, 762, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC, {RS, RB}},
14b57c7c
AM
4295{"efdtstgt", VX (4, 764), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
4296{"efdtstlt", VX (4, 765), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
4297{"efdtsteq", VX (4, 766), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
4298{"evlddx", VX (4, 768), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4299{"vaddsbs", VX (4, 768), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4300{"evldd", VX (4, 769), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
4301{"evldwx", VX (4, 770), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4302{"vminsb", VX (4, 770), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4303{"evldw", VX (4, 771), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
4304{"evldhx", VX (4, 772), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4305{"vsrab", VX (4, 772), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4306{"evldh", VX (4, 773), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
4307{"vcmpgtsb", VXR(4, 774,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4308{"evlhhesplatx",VX (4, 776), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4309{"vmulesb", VX (4, 776), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4310{"evlhhesplat", VX (4, 777), VX_MASK, PPCSPE, 0, {RS, EVUIMM_2, RA}},
4311{"vcfux", VX (4, 778), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
4312{"vcuxwfp", VX (4, 778), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
4313{"evlhhousplatx",VX(4, 780), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4314{"vspltisb", VX (4, 780), VXVB_MASK, PPCVEC, 0, {VD, SIMM}},
4315{"vinsertb", VX (4, 781), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
4316{"evlhhousplat",VX (4, 781), VX_MASK, PPCSPE, 0, {RS, EVUIMM_2, RA}},
4317{"evlhhossplatx",VX(4, 782), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4318{"vpkpx", VX (4, 782), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4319{"evlhhossplat",VX (4, 783), VX_MASK, PPCSPE, 0, {RS, EVUIMM_2, RA}},
4320{"mullhwu", XRC(4, 392,0), X_MASK, MULHW, 0, {RT, RA, RB}},
4321{"evlwhex", VX (4, 784), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4322{"mullhwu.", XRC(4, 392,1), X_MASK, MULHW, 0, {RT, RA, RB}},
4323{"evlwhe", VX (4, 785), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
4324{"evlwhoux", VX (4, 788), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4325{"evlwhou", VX (4, 789), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
4326{"evlwhosx", VX (4, 790), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4327{"evlwhos", VX (4, 791), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
4328{"maclhwu", XO (4, 396,0,0),XO_MASK, MULHW, 0, {RT, RA, RB}},
4329{"evlwwsplatx", VX (4, 792), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4330{"maclhwu.", XO (4, 396,0,1),XO_MASK, MULHW, 0, {RT, RA, RB}},
4331{"evlwwsplat", VX (4, 793), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
4332{"evlwhsplatx", VX (4, 796), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4333{"evlwhsplat", VX (4, 797), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
4334{"evstddx", VX (4, 800), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4335{"evstdd", VX (4, 801), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
4336{"evstdwx", VX (4, 802), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4337{"evstdw", VX (4, 803), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
4338{"evstdhx", VX (4, 804), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4339{"evstdh", VX (4, 805), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
4340{"evstwhex", VX (4, 816), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4341{"evstwhe", VX (4, 817), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
4342{"evstwhox", VX (4, 820), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4343{"evstwho", VX (4, 821), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
4344{"evstwwex", VX (4, 824), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4345{"evstwwe", VX (4, 825), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
4346{"evstwwox", VX (4, 828), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4347{"evstwwo", VX (4, 829), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
4348{"vaddshs", VX (4, 832), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4349{"bcdcpsgn.", VX (4, 833), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
4350{"vminsh", VX (4, 834), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4351{"vsrah", VX (4, 836), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4352{"vcmpgtsh", VXR(4, 838,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4353{"vmulesh", VX (4, 840), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4354{"vcfsx", VX (4, 842), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
4355{"vcsxwfp", VX (4, 842), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
4356{"vspltish", VX (4, 844), VXVB_MASK, PPCVEC, 0, {VD, SIMM}},
4357{"vinserth", VX (4, 845), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
4358{"vupkhpx", VX (4, 846), VXVA_MASK, PPCVEC, 0, {VD, VB}},
4359{"mullhw", XRC(4, 424,0), X_MASK, MULHW, 0, {RT, RA, RB}},
4360{"mullhw.", XRC(4, 424,1), X_MASK, MULHW, 0, {RT, RA, RB}},
4361{"maclhw", XO (4, 428,0,0),XO_MASK, MULHW, 0, {RT, RA, RB}},
4362{"maclhw.", XO (4, 428,0,1),XO_MASK, MULHW, 0, {RT, RA, RB}},
4363{"nmaclhw", XO (4, 430,0,0),XO_MASK, MULHW, 0, {RT, RA, RB}},
4364{"nmaclhw.", XO (4, 430,0,1),XO_MASK, MULHW, 0, {RT, RA, RB}},
4365{"vaddsws", VX (4, 896), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4366{"vminsw", VX (4, 898), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4367{"vsraw", VX (4, 900), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4368{"vcmpgtsw", VXR(4, 902,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4369{"vmulesw", VX (4, 904), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
f4791f1a 4370{"vmulhsw", VX (4, 905), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
4371{"vctuxs", VX (4, 906), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
4372{"vcfpuxws", VX (4, 906), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
f4791f1a 4373{"vdivesw", VX (4, 907), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
4374{"vspltisw", VX (4, 908), VXVB_MASK, PPCVEC, 0, {VD, SIMM}},
4375{"vinsertw", VX (4, 909), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
4376{"maclhwsu", XO (4, 460,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4377{"maclhwsu.", XO (4, 460,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4378{"vminsd", VX (4, 962), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4379{"vsrad", VX (4, 964), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4380{"vcmpbfp", VXR(4, 966,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4381{"vcmpgtsd", VXR(4, 967,0), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
f4791f1a 4382{"vmulhsd", VX (4, 969), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
4383{"vctsxs", VX (4, 970), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
4384{"vcfpsxws", VX (4, 970), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
f4791f1a 4385{"vdivesd", VX (4, 971), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
4386{"vinsertd", VX (4, 973), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
4387{"vupklpx", VX (4, 974), VXVA_MASK, PPCVEC, 0, {VD, VB}},
4388{"maclhws", XO (4, 492,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4389{"maclhws.", XO (4, 492,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4390{"nmaclhws", XO (4, 494,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4391{"nmaclhws.", XO (4, 494,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4392{"vsububm", VX (4,1024), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4393{"bcdadd.", VX (4,1025), VXPS_MASK, PPCVEC2, 0, {VD, VA, VB, PS}},
4394{"vavgub", VX (4,1026), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4395{"vabsdub", VX (4,1027), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4396{"evmhessf", VX (4,1027), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4397{"vand", VX (4,1028), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4398{"vcmpequb.", VXR(4, 6,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4399{"vcmpneb.", VXR(4, 7,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
62adc510
AM
4400{"udi0fcm.", APU(4, 515,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
4401{"udi0fcm", APU(4, 515,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
14b57c7c
AM
4402{"evmhossf", VX (4,1031), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4403{"vpmsumb", VX (4,1032), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4404{"evmheumi", VX (4,1032), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4405{"evmhesmi", VX (4,1033), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4406{"vmaxfp", VX (4,1034), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4407{"evmhesmf", VX (4,1035), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4408{"evmhoumi", VX (4,1036), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4409{"vslo", VX (4,1036), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4410{"evmhosmi", VX (4,1037), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4411{"evmhosmf", VX (4,1039), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4412{"machhwuo", XO (4, 12,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4413{"machhwuo.", XO (4, 12,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4414{"ps_merge00", XOPS(4,528,0), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
4415{"ps_merge00.", XOPS(4,528,1), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
4416{"evmhessfa", VX (4,1059), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4417{"evmhossfa", VX (4,1063), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4418{"evmheumia", VX (4,1064), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4419{"evmhesmia", VX (4,1065), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4420{"evmhesmfa", VX (4,1067), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4421{"evmhoumia", VX (4,1068), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4422{"evmhosmia", VX (4,1069), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4423{"evmhosmfa", VX (4,1071), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4424{"vsubuhm", VX (4,1088), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4425{"bcdsub.", VX (4,1089), VXPS_MASK, PPCVEC2, 0, {VD, VA, VB, PS}},
4426{"vavguh", VX (4,1090), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
74081948 4427{"evmwlssf", VX (4,1091), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c
AM
4428{"vabsduh", VX (4,1091), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4429{"vandc", VX (4,1092), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4430{"vcmpequh.", VXR(4, 70,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
62adc510
AM
4431{"udi1fcm.", APU(4, 547,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
4432{"udi1fcm", APU(4, 547,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
14b57c7c
AM
4433{"vcmpneh.", VXR(4, 71,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
4434{"evmwhssf", VX (4,1095), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4435{"vpmsumh", VX (4,1096), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4436{"evmwlumi", VX (4,1096), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4437{"vminfp", VX (4,1098), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
74081948 4438{"evmwlsmf", VX (4,1099), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c
AM
4439{"evmwhumi", VX (4,1100), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4440{"vsro", VX (4,1100), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4441{"evmwhsmi", VX (4,1101), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4442{"vpkudum", VX (4,1102), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4443{"evmwhsmf", VX (4,1103), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4444{"evmwssf", VX (4,1107), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4445{"machhwo", XO (4, 44,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4446{"evmwumi", VX (4,1112), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4447{"machhwo.", XO (4, 44,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4448{"evmwsmi", VX (4,1113), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4449{"evmwsmf", VX (4,1115), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4450{"nmachhwo", XO (4, 46,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4451{"nmachhwo.", XO (4, 46,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4452{"ps_merge01", XOPS(4,560,0), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
4453{"ps_merge01.", XOPS(4,560,1), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
74081948 4454{"evmwlssfa", VX (4,1123), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c
AM
4455{"evmwhssfa", VX (4,1127), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4456{"evmwlumia", VX (4,1128), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
74081948 4457{"evmwlsmfa", VX (4,1131), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c
AM
4458{"evmwhumia", VX (4,1132), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4459{"evmwhsmia", VX (4,1133), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4460{"evmwhsmfa", VX (4,1135), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4461{"evmwssfa", VX (4,1139), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4462{"evmwumia", VX (4,1144), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4463{"evmwsmia", VX (4,1145), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4464{"evmwsmfa", VX (4,1147), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4465{"vsubuwm", VX (4,1152), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4466{"bcdus.", VX (4,1153), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
4467{"vavguw", VX (4,1154), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4468{"vabsduw", VX (4,1155), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
98553ad3 4469{"vmr", VX (4,1156), VX_MASK, PPCVEC, 0, {VD, VAB}},
14b57c7c
AM
4470{"vor", VX (4,1156), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4471{"vcmpnew.", VXR(4, 135,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
4472{"vpmsumw", VX (4,1160), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4473{"vcmpequw.", VXR(4, 134,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
62adc510
AM
4474{"udi2fcm.", APU(4, 579,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
4475{"udi2fcm", APU(4, 579,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
14b57c7c
AM
4476{"machhwsuo", XO (4, 76,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4477{"machhwsuo.", XO (4, 76,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4478{"ps_merge10", XOPS(4,592,0), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
4479{"ps_merge10.", XOPS(4,592,1), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
4480{"vsubudm", VX (4,1216), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4481{"evaddusiaaw", VX (4,1216), VX_MASK, PPCSPE, 0, {RS, RA}},
4482{"bcds.", VX (4,1217), VXPS_MASK, PPCVEC3, 0, {VD, VA, VB, PS}},
4483{"evaddssiaaw", VX (4,1217), VX_MASK, PPCSPE, 0, {RS, RA}},
4484{"evsubfusiaaw",VX (4,1218), VX_MASK, PPCSPE, 0, {RS, RA}},
4485{"evsubfssiaaw",VX (4,1219), VX_MASK, PPCSPE, 0, {RS, RA}},
4486{"evmra", VX (4,1220), VX_MASK, PPCSPE, 0, {RS, RA}},
4487{"vxor", VX (4,1220), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4488{"evdivws", VX (4,1222), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4489{"vcmpeqfp.", VXR(4, 198,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
62adc510 4490{"udi3fcm.", APU(4, 611,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
14b57c7c 4491{"vcmpequd.", VXR(4, 199,1), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
62adc510 4492{"udi3fcm", APU(4, 611,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
14b57c7c
AM
4493{"evdivwu", VX (4,1223), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4494{"vpmsumd", VX (4,1224), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4495{"evaddumiaaw", VX (4,1224), VX_MASK, PPCSPE, 0, {RS, RA}},
4496{"evaddsmiaaw", VX (4,1225), VX_MASK, PPCSPE, 0, {RS, RA}},
4497{"evsubfumiaaw",VX (4,1226), VX_MASK, PPCSPE, 0, {RS, RA}},
4498{"evsubfsmiaaw",VX (4,1227), VX_MASK, PPCSPE, 0, {RS, RA}},
4499{"vpkudus", VX (4,1230), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4500{"machhwso", XO (4, 108,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4501{"machhwso.", XO (4, 108,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4502{"nmachhwso", XO (4, 110,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4503{"nmachhwso.", XO (4, 110,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4504{"ps_merge11", XOPS(4,624,0), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
4505{"ps_merge11.", XOPS(4,624,1), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
4506{"vsubuqm", VX (4,1280), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4507{"evmheusiaaw", VX (4,1280), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4508{"bcdtrunc.", VX (4,1281), VXPS_MASK, PPCVEC3, 0, {VD, VA, VB, PS}},
4509{"evmhessiaaw", VX (4,1281), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4510{"vavgsb", VX (4,1282), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4511{"evmhessfaaw", VX (4,1283), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4512{"evmhousiaaw", VX (4,1284), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
98553ad3 4513{"vnot", VX (4,1284), VX_MASK, PPCVEC, 0, {VD, VAB}},
14b57c7c
AM
4514{"vnor", VX (4,1284), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4515{"evmhossiaaw", VX (4,1285), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
62adc510
AM
4516{"udi4fcm.", APU(4, 643,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
4517{"udi4fcm", APU(4, 643,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
14b57c7c
AM
4518{"vcmpnezb.", VXR(4, 263,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
4519{"evmhossfaaw", VX (4,1287), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4520{"evmheumiaaw", VX (4,1288), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4521{"vcipher", VX (4,1288), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4522{"vcipherlast", VX (4,1289), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4523{"evmhesmiaaw", VX (4,1289), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4524{"evmhesmfaaw", VX (4,1291), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4525{"vgbbd", VX (4,1292), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
4526{"evmhoumiaaw", VX (4,1292), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4527{"evmhosmiaaw", VX (4,1293), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4528{"evmhosmfaaw", VX (4,1295), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4529{"macchwuo", XO (4, 140,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4530{"macchwuo.", XO (4, 140,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4531{"evmhegumiaa", VX (4,1320), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4532{"evmhegsmiaa", VX (4,1321), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4533{"evmhegsmfaa", VX (4,1323), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4534{"evmhogumiaa", VX (4,1324), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4535{"evmhogsmiaa", VX (4,1325), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4536{"evmhogsmfaa", VX (4,1327), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4537{"vsubcuq", VX (4,1344), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4538{"evmwlusiaaw", VX (4,1344), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4539{"bcdutrunc.", VX (4,1345), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
4540{"evmwlssiaaw", VX (4,1345), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4541{"vavgsh", VX (4,1346), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
74081948
AF
4542{"evmwlssfaaw", VX (4,1347), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
4543{"evmwhusiaa", VX (4,1348), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c 4544{"vorc", VX (4,1348), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
74081948 4545{"evmwhssmaa", VX (4,1349), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
62adc510
AM
4546{"udi5fcm.", APU(4, 675,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
4547{"udi5fcm", APU(4, 675,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
14b57c7c 4548{"vcmpnezh.", VXR(4, 327,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
74081948 4549{"evmwhssfaa", VX (4,1351), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c
AM
4550{"vncipher", VX (4,1352), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4551{"evmwlumiaaw", VX (4,1352), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4552{"vncipherlast",VX (4,1353), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4553{"evmwlsmiaaw", VX (4,1353), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
74081948
AF
4554{"evmwlsmfaaw", VX (4,1355), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
4555{"evmwhumiaa", VX (4,1356), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c 4556{"vbpermq", VX (4,1356), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
74081948 4557{"evmwhsmiaa", VX (4,1357), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c 4558{"vpksdus", VX (4,1358), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
74081948 4559{"evmwhsmfaa", VX (4,1359), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c
AM
4560{"evmwssfaa", VX (4,1363), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4561{"macchwo", XO (4, 172,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4562{"evmwumiaa", VX (4,1368), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4563{"macchwo.", XO (4, 172,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4564{"evmwsmiaa", VX (4,1369), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4565{"evmwsmfaa", VX (4,1371), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4566{"nmacchwo", XO (4, 174,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4567{"nmacchwo.", XO (4, 174,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
74081948
AF
4568{"evmwhgumiaa", VX (4,1380), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
4569{"evmwhgsmiaa", VX (4,1381), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
4570{"evmwhgssfaa", VX (4,1383), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
4571{"evmwhgsmfaa", VX (4,1391), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c
AM
4572{"evmheusianw", VX (4,1408), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4573{"vsubcuw", VX (4,1408), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4574{"evmhessianw", VX (4,1409), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4575{"bcdctsq.", VXVA(4,1409,0), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4576{"bcdcfsq.", VXVA(4,1409,2), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}},
4577{"bcdctz.", VXVA(4,1409,4), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}},
4578{"bcdctn.", VXVA(4,1409,5), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4579{"bcdcfz.", VXVA(4,1409,6), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}},
4580{"bcdcfn.", VXVA(4,1409,7), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}},
4581{"bcdsetsgn.", VXVA(4,1409,31), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}},
4582{"vavgsw", VX (4,1410), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4583{"evmhessfanw", VX (4,1411), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4584{"vnand", VX (4,1412), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4585{"evmhousianw", VX (4,1412), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4586{"evmhossianw", VX (4,1413), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
62adc510
AM
4587{"udi6fcm.", APU(4, 707,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
4588{"udi6fcm", APU(4, 707,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
14b57c7c
AM
4589{"vcmpnezw.", VXR(4, 391,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
4590{"evmhossfanw", VX (4,1415), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4591{"evmheumianw", VX (4,1416), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4592{"evmhesmianw", VX (4,1417), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4593{"evmhesmfanw", VX (4,1419), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4594{"evmhoumianw", VX (4,1420), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4595{"evmhosmianw", VX (4,1421), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4596{"evmhosmfanw", VX (4,1423), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4597{"macchwsuo", XO (4, 204,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4598{"macchwsuo.", XO (4, 204,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4599{"evmhegumian", VX (4,1448), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4600{"evmhegsmian", VX (4,1449), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4601{"evmhegsmfan", VX (4,1451), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4602{"evmhogumian", VX (4,1452), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4603{"evmhogsmian", VX (4,1453), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4604{"evmhogsmfan", VX (4,1455), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4605{"evmwlusianw", VX (4,1472), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4606{"bcdsr.", VX (4,1473), VXPS_MASK, PPCVEC3, 0, {VD, VA, VB, PS}},
4607{"evmwlssianw", VX (4,1473), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
74081948
AF
4608{"evmwlssfanw", VX (4,1475), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
4609{"evmwhusian", VX (4,1476), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c 4610{"vsld", VX (4,1476), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
74081948 4611{"evmwhssian", VX (4,1477), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c 4612{"vcmpgefp.", VXR(4, 454,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
62adc510
AM
4613{"udi7fcm.", APU(4, 739,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
4614{"udi7fcm", APU(4, 739,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
74081948 4615{"evmwhssfan", VX (4,1479), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c
AM
4616{"vsbox", VX (4,1480), VXVB_MASK, PPCVEC2, 0, {VD, VA}},
4617{"evmwlumianw", VX (4,1480), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4618{"evmwlsmianw", VX (4,1481), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
74081948
AF
4619{"evmwlsmfanw", VX (4,1483), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
4620{"evmwhumian", VX (4,1484), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c 4621{"vbpermd", VX (4,1484), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
74081948 4622{"evmwhsmian", VX (4,1485), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c 4623{"vpksdss", VX (4,1486), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
74081948 4624{"evmwhsmfan", VX (4,1487), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c
AM
4625{"evmwssfan", VX (4,1491), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4626{"macchwso", XO (4, 236,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4627{"evmwumian", VX (4,1496), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4628{"macchwso.", XO (4, 236,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4629{"evmwsmian", VX (4,1497), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4630{"evmwsmfan", VX (4,1499), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
74081948
AF
4631{"evmwhgumian", VX (4,1508), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
4632{"evmwhgsmian", VX (4,1509), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
4633{"evmwhgssfan", VX (4,1511), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
4634{"evmwhgsmfan", VX (4,1519), VX_MASK, PPCSPE, 0, {RD, RA, RB}},
14b57c7c
AM
4635{"nmacchwso", XO (4, 238,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4636{"nmacchwso.", XO (4, 238,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4637{"vsububs", VX (4,1536), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4638{"vclzlsbb", VXVA(4,1538,0), VXVA_MASK, PPCVEC3, 0, {RT, VB}},
4639{"vctzlsbb", VXVA(4,1538,1), VXVA_MASK, PPCVEC3, 0, {RT, VB}},
4640{"vnegw", VXVA(4,1538,6), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4641{"vnegd", VXVA(4,1538,7), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4642{"vprtybw", VXVA(4,1538,8), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4643{"vprtybd", VXVA(4,1538,9), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4644{"vprtybq", VXVA(4,1538,10), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4645{"vextsb2w", VXVA(4,1538,16), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4646{"vextsh2w", VXVA(4,1538,17), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4647{"vextsb2d", VXVA(4,1538,24), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4648{"vextsh2d", VXVA(4,1538,25), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4649{"vextsw2d", VXVA(4,1538,26), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4650{"vctzb", VXVA(4,1538,28), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4651{"vctzh", VXVA(4,1538,29), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4652{"vctzw", VXVA(4,1538,30), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4653{"vctzd", VXVA(4,1538,31), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4654{"mfvscr", VX (4,1540), VXVAVB_MASK, PPCVEC, 0, {VD}},
4655{"vcmpgtub.", VXR(4, 518,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
62adc510
AM
4656{"udi8fcm.", APU(4, 771,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
4657{"udi8fcm", APU(4, 771,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
14b57c7c
AM
4658{"vsum4ubs", VX (4,1544), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4659{"vextublx", VX (4,1549), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
4660{"vsubuhs", VX (4,1600), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4661{"mtvscr", VX (4,1604), VXVDVA_MASK, PPCVEC, 0, {VB}},
4662{"vcmpgtuh.", VXR(4, 582,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4663{"vsum4shs", VX (4,1608), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
62adc510
AM
4664{"udi9fcm.", APU(4, 804,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
4665{"udi9fcm", APU(4, 804,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
14b57c7c
AM
4666{"vextuhlx", VX (4,1613), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
4667{"vupkhsw", VX (4,1614), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
4668{"vsubuws", VX (4,1664), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4669{"vshasigmaw", VX (4,1666), VX_MASK, PPCVEC2, 0, {VD, VA, ST, SIX}},
4670{"veqv", VX (4,1668), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4671{"vcmpgtuw.", VXR(4, 646,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
62adc510
AM
4672{"udi10fcm.", APU(4, 835,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
4673{"udi10fcm", APU(4, 835,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
14b57c7c 4674{"vsum2sws", VX (4,1672), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
f4791f1a 4675{"vmoduw", VX (4,1675), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
4676{"vmrgow", VX (4,1676), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4677{"vextuwlx", VX (4,1677), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
4678{"vshasigmad", VX (4,1730), VX_MASK, PPCVEC2, 0, {VD, VA, ST, SIX}},
4679{"vsrd", VX (4,1732), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4680{"vcmpgtfp.", VXR(4, 710,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
62adc510 4681{"udi11fcm.", APU(4, 867,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
14b57c7c 4682{"vcmpgtud.", VXR(4, 711,1), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
62adc510 4683{"udi11fcm", APU(4, 867,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
f4791f1a 4684{"vmodud", VX (4,1739), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
4685{"vupklsw", VX (4,1742), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
4686{"vsubsbs", VX (4,1792), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4687{"vclzb", VX (4,1794), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
4688{"vpopcntb", VX (4,1795), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
4689{"vsrv", VX (4,1796), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
4690{"vcmpgtsb.", VXR(4, 774,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
62adc510
AM
4691{"udi12fcm.", APU(4, 899,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
4692{"udi12fcm", APU(4, 899,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
14b57c7c
AM
4693{"vsum4sbs", VX (4,1800), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4694{"vextubrx", VX (4,1805), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
4695{"maclhwuo", XO (4, 396,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4696{"maclhwuo.", XO (4, 396,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4697{"vsubshs", VX (4,1856), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4698{"vclzh", VX (4,1858), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
4699{"vpopcnth", VX (4,1859), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
4700{"vslv", VX (4,1860), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
4701{"vcmpgtsh.", VXR(4, 838,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4702{"vextuhrx", VX (4,1869), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
62adc510
AM
4703{"udi13fcm.", APU(4, 931,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
4704{"udi13fcm", APU(4, 931,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
14b57c7c
AM
4705{"maclhwo", XO (4, 428,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4706{"maclhwo.", XO (4, 428,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4707{"nmaclhwo", XO (4, 430,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4708{"nmaclhwo.", XO (4, 430,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4709{"vsubsws", VX (4,1920), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4710{"vclzw", VX (4,1922), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
4711{"vpopcntw", VX (4,1923), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
4712{"vcmpgtsw.", VXR(4, 902,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
62adc510
AM
4713{"udi14fcm.", APU(4, 963,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
4714{"udi14fcm", APU(4, 963,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
14b57c7c 4715{"vsumsws", VX (4,1928), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
f4791f1a 4716{"vmodsw", VX (4,1931), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
4717{"vmrgew", VX (4,1932), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4718{"vextuwrx", VX (4,1933), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
4719{"maclhwsuo", XO (4, 460,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4720{"maclhwsuo.", XO (4, 460,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4721{"vclzd", VX (4,1986), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
4722{"vpopcntd", VX (4,1987), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
4723{"vcmpbfp.", VXR(4, 966,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
62adc510 4724{"udi15fcm.", APU(4, 995,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
14b57c7c 4725{"vcmpgtsd.", VXR(4, 967,1), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
62adc510 4726{"udi15fcm", APU(4, 995,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
f4791f1a 4727{"vmodsd", VX (4,1995), VX_MASK, POWER10, 0, {VD, VA, VB}},
14b57c7c
AM
4728{"maclhwso", XO (4, 492,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4729{"maclhwso.", XO (4, 492,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4730{"nmaclhwso", XO (4, 494,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4731{"nmaclhwso.", XO (4, 494,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4732{"dcbz_l", X (4,1014), XRT_MASK, PPCPS, 0, {RA, RB}},
4733
94ba9882
AM
4734{"lxvp", DQXP(6,0), DQXP_MASK, POWER10, PPCVLE, {XTP, DQ, RA0}},
4735{"stxvp", DQXP(6,1), DQXP_MASK, POWER10, PPCVLE, {XTP, DQ, RA0}},
4736
14b57c7c
AM
4737{"mulli", OP(7), OP_MASK, PPCCOM, PPCVLE, {RT, RA, SI}},
4738{"muli", OP(7), OP_MASK, PWRCOM, PPCVLE, {RT, RA, SI}},
4739
4740{"subfic", OP(8), OP_MASK, PPCCOM, PPCVLE, {RT, RA, SI}},
4741{"sfi", OP(8), OP_MASK, PWRCOM, PPCVLE, {RT, RA, SI}},
4742
4743{"dozi", OP(9), OP_MASK, M601, PPCVLE, {RT, RA, SI}},
4744
4745{"cmplwi", OPL(10,0), OPL_MASK, PPCCOM, PPCVLE, {OBF, RA, UISIGNOPT}},
4746{"cmpldi", OPL(10,1), OPL_MASK, PPC64, PPCVLE, {OBF, RA, UISIGNOPT}},
a5721ba2 4747{"cmpli", OP(10), OP_MASK, PPC, PPCVLE, {BF, L32OPT, RA, UISIGNOPT}},
14b57c7c
AM
4748{"cmpli", OP(10), OP_MASK, PWRCOM, PPC|PPCVLE, {BF, RA, UISIGNOPT}},
4749
4750{"cmpwi", OPL(11,0), OPL_MASK, PPCCOM, PPCVLE, {OBF, RA, SI}},
4751{"cmpdi", OPL(11,1), OPL_MASK, PPC64, PPCVLE, {OBF, RA, SI}},
a5721ba2 4752{"cmpi", OP(11), OP_MASK, PPC, PPCVLE, {BF, L32OPT, RA, SI}},
14b57c7c
AM
4753{"cmpi", OP(11), OP_MASK, PWRCOM, PPC|PPCVLE, {BF, RA, SI}},
4754
4755{"addic", OP(12), OP_MASK, PPCCOM, PPCVLE, {RT, RA, SI}},
4756{"ai", OP(12), OP_MASK, PWRCOM, PPCVLE, {RT, RA, SI}},
4757{"subic", OP(12), OP_MASK, PPCCOM, PPCVLE, {RT, RA, NSI}},
4758
4759{"addic.", OP(13), OP_MASK, PPCCOM, PPCVLE, {RT, RA, SI}},
4760{"ai.", OP(13), OP_MASK, PWRCOM, PPCVLE, {RT, RA, SI}},
4761{"subic.", OP(13), OP_MASK, PPCCOM, PPCVLE, {RT, RA, NSI}},
4762
4763{"li", OP(14), DRA_MASK, PPCCOM, PPCVLE, {RT, SI}},
4764{"lil", OP(14), DRA_MASK, PWRCOM, PPCVLE, {RT, SI}},
4765{"addi", OP(14), OP_MASK, PPCCOM, PPCVLE, {RT, RA0, SI}},
4766{"cal", OP(14), OP_MASK, PWRCOM, PPCVLE, {RT, D, RA0}},
4767{"subi", OP(14), OP_MASK, PPCCOM, PPCVLE, {RT, RA0, NSI}},
4768{"la", OP(14), OP_MASK, PPCCOM, PPCVLE, {RT, D, RA0}},
4769
4770{"lis", OP(15), DRA_MASK, PPCCOM, PPCVLE, {RT, SISIGNOPT}},
4771{"liu", OP(15), DRA_MASK, PWRCOM, PPCVLE, {RT, SISIGNOPT}},
4772{"addis", OP(15), OP_MASK, PPCCOM, PPCVLE, {RT, RA0, SISIGNOPT}},
4773{"cau", OP(15), OP_MASK, PWRCOM, PPCVLE, {RT, RA0, SISIGNOPT}},
4774{"subis", OP(15), OP_MASK, PPCCOM, PPCVLE, {RT, RA0, NSISIGNOPT}},
4775
4776{"bdnz-", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDM}},
4777{"bdnz+", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDP}},
4778{"bdnz", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BD}},
4779{"bdn", BBO(16,BODNZ,0,0), BBOATBI_MASK, PWRCOM, PPCVLE, {BD}},
4780{"bdnzl-", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDM}},
4781{"bdnzl+", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDP}},
4782{"bdnzl", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BD}},
4783{"bdnl", BBO(16,BODNZ,0,1), BBOATBI_MASK, PWRCOM, PPCVLE, {BD}},
4784{"bdnza-", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDMA}},
4785{"bdnza+", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDPA}},
4786{"bdnza", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDA}},
4787{"bdna", BBO(16,BODNZ,1,0), BBOATBI_MASK, PWRCOM, PPCVLE, {BDA}},
4788{"bdnzla-", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDMA}},
4789{"bdnzla+", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDPA}},
4790{"bdnzla", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDA}},
4791{"bdnla", BBO(16,BODNZ,1,1), BBOATBI_MASK, PWRCOM, PPCVLE, {BDA}},
4792{"bdz-", BBO(16,BODZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDM}},
4793{"bdz+", BBO(16,BODZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDP}},
4794{"bdz", BBO(16,BODZ,0,0), BBOATBI_MASK, COM, PPCVLE, {BD}},
4795{"bdzl-", BBO(16,BODZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDM}},
4796{"bdzl+", BBO(16,BODZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDP}},
4797{"bdzl", BBO(16,BODZ,0,1), BBOATBI_MASK, COM, PPCVLE, {BD}},
4798{"bdza-", BBO(16,BODZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDMA}},
4799{"bdza+", BBO(16,BODZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDPA}},
4800{"bdza", BBO(16,BODZ,1,0), BBOATBI_MASK, COM, PPCVLE, {BDA}},
4801{"bdzla-", BBO(16,BODZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDMA}},
4802{"bdzla+", BBO(16,BODZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDPA}},
4803{"bdzla", BBO(16,BODZ,1,1), BBOATBI_MASK, COM, PPCVLE, {BDA}},
4804
4805{"bge-", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4806{"bge+", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4807{"bge", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4808{"bnl-", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4809{"bnl+", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4810{"bnl", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4811{"bgel-", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4812{"bgel+", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4813{"bgel", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4814{"bnll-", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4815{"bnll+", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4816{"bnll", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4817{"bgea-", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4818{"bgea+", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4819{"bgea", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4820{"bnla-", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4821{"bnla+", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4822{"bnla", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4823{"bgela-", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4824{"bgela+", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4825{"bgela", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4826{"bnlla-", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4827{"bnlla+", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4828{"bnlla", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4829{"ble-", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4830{"ble+", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4831{"ble", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4832{"bng-", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4833{"bng+", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4834{"bng", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4835{"blel-", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4836{"blel+", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4837{"blel", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4838{"bngl-", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4839{"bngl+", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4840{"bngl", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4841{"blea-", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4842{"blea+", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4843{"blea", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4844{"bnga-", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4845{"bnga+", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4846{"bnga", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4847{"blela-", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4848{"blela+", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4849{"blela", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4850{"bngla-", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4851{"bngla+", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4852{"bngla", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4853{"bne-", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4854{"bne+", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4855{"bne", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4856{"bnel-", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4857{"bnel+", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4858{"bnel", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4859{"bnea-", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4860{"bnea+", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4861{"bnea", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4862{"bnela-", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4863{"bnela+", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4864{"bnela", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4865{"bns-", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4866{"bns+", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4867{"bns", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4868{"bnu-", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4869{"bnu+", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4870{"bnu", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BD}},
4871{"bnsl-", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4872{"bnsl+", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4873{"bnsl", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4874{"bnul-", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4875{"bnul+", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4876{"bnul", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BD}},
4877{"bnsa-", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4878{"bnsa+", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4879{"bnsa", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4880{"bnua-", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4881{"bnua+", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4882{"bnua", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDA}},
4883{"bnsla-", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4884{"bnsla+", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4885{"bnsla", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4886{"bnula-", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4887{"bnula+", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4888{"bnula", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDA}},
4889
4890{"blt-", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4891{"blt+", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4892{"blt", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4893{"bltl-", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4894{"bltl+", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4895{"bltl", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4896{"blta-", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4897{"blta+", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4898{"blta", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4899{"bltla-", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4900{"bltla+", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4901{"bltla", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4902{"bgt-", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4903{"bgt+", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4904{"bgt", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4905{"bgtl-", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4906{"bgtl+", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4907{"bgtl", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4908{"bgta-", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4909{"bgta+", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4910{"bgta", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4911{"bgtla-", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4912{"bgtla+", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4913{"bgtla", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4914{"beq-", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4915{"beq+", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4916{"beq", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4917{"beql-", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4918{"beql+", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4919{"beql", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4920{"beqa-", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4921{"beqa+", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4922{"beqa", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4923{"beqla-", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4924{"beqla+", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4925{"beqla", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4926{"bso-", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4927{"bso+", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4928{"bso", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4929{"bun-", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4930{"bun+", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4931{"bun", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BD}},
4932{"bsol-", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4933{"bsol+", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4934{"bsol", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4935{"bunl-", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4936{"bunl+", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4937{"bunl", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BD}},
4938{"bsoa-", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4939{"bsoa+", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4940{"bsoa", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4941{"buna-", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4942{"buna+", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4943{"buna", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDA}},
4944{"bsola-", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4945{"bsola+", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4946{"bsola", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4947{"bunla-", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4948{"bunla+", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4949{"bunla", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDA}},
4950
4951{"bdnzf-", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}},
4952{"bdnzf+", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}},
4953{"bdnzf", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}},
4954{"bdnzfl-", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}},
4955{"bdnzfl+", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}},
4956{"bdnzfl", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}},
4957{"bdnzfa-", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}},
4958{"bdnzfa+", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}},
4959{"bdnzfa", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4960{"bdnzfla-", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}},
4961{"bdnzfla+", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}},
4962{"bdnzfla", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4963{"bdzf-", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}},
4964{"bdzf+", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}},
4965{"bdzf", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}},
4966{"bdzfl-", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}},
4967{"bdzfl+", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}},
4968{"bdzfl", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}},
4969{"bdzfa-", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}},
4970{"bdzfa+", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}},
4971{"bdzfa", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4972{"bdzfla-", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}},
4973{"bdzfla+", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}},
4974{"bdzfla", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4975
4976{"bf-", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDM}},
4977{"bf+", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDP}},
4978{"bf", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BD}},
4979{"bbf", BBO(16,BOF,0,0), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BD}},
4980{"bfl-", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDM}},
4981{"bfl+", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDP}},
4982{"bfl", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BD}},
4983{"bbfl", BBO(16,BOF,0,1), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BD}},
4984{"bfa-", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDMA}},
4985{"bfa+", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDPA}},
4986{"bfa", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4987{"bbfa", BBO(16,BOF,1,0), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BDA}},
4988{"bfla-", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDMA}},
4989{"bfla+", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDPA}},
4990{"bfla", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4991{"bbfla", BBO(16,BOF,1,1), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BDA}},
4992
4993{"bdnzt-", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}},
4994{"bdnzt+", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}},
4995{"bdnzt", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}},
4996{"bdnztl-", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}},
4997{"bdnztl+", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}},
4998{"bdnztl", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}},
4999{"bdnzta-", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}},
5000{"bdnzta+", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}},
5001{"bdnzta", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}},
5002{"bdnztla-", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}},
5003{"bdnztla+", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}},
5004{"bdnztla", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}},
5005{"bdzt-", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}},
5006{"bdzt+", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}},
5007{"bdzt", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}},
5008{"bdztl-", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}},
5009{"bdztl+", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}},
5010{"bdztl", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}},
5011{"bdzta-", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}},
5012{"bdzta+", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}},
5013{"bdzta", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}},
5014{"bdztla-", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}},
5015{"bdztla+", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}},
5016{"bdztla", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}},
5017
5018{"bt-", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDM}},
5019{"bt+", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDP}},
5020{"bt", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BD}},
5021{"bbt", BBO(16,BOT,0,0), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BD}},
5022{"btl-", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDM}},
5023{"btl+", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDP}},
5024{"btl", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BD}},
5025{"bbtl", BBO(16,BOT,0,1), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BD}},
5026{"bta-", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDMA}},
5027{"bta+", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDPA}},
5028{"bta", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDA}},
5029{"bbta", BBO(16,BOT,1,0), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BDA}},
5030{"btla-", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDMA}},
5031{"btla+", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDPA}},
5032{"btla", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDA}},
5033{"bbtla", BBO(16,BOT,1,1), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BDA}},
5034
aae9718e
PB
5035{"bc-", B(16,0,0), B_MASK, PPCCOM, PPCVLE, {BOM, BI, BDM}},
5036{"bc+", B(16,0,0), B_MASK, PPCCOM, PPCVLE, {BOP, BI, BDP}},
14b57c7c 5037{"bc", B(16,0,0), B_MASK, COM, PPCVLE, {BO, BI, BD}},
aae9718e
PB
5038{"bcl-", B(16,0,1), B_MASK, PPCCOM, PPCVLE, {BOM, BI, BDM}},
5039{"bcl+", B(16,0,1), B_MASK, PPCCOM, PPCVLE, {BOP, BI, BDP}},
14b57c7c 5040{"bcl", B(16,0,1), B_MASK, COM, PPCVLE, {BO, BI, BD}},
aae9718e
PB
5041{"bca-", B(16,1,0), B_MASK, PPCCOM, PPCVLE, {BOM, BI, BDMA}},
5042{"bca+", B(16,1,0), B_MASK, PPCCOM, PPCVLE, {BOP, BI, BDPA}},
14b57c7c 5043{"bca", B(16,1,0), B_MASK, COM, PPCVLE, {BO, BI, BDA}},
aae9718e
PB
5044{"bcla-", B(16,1,1), B_MASK, PPCCOM, PPCVLE, {BOM, BI, BDMA}},
5045{"bcla+", B(16,1,1), B_MASK, PPCCOM, PPCVLE, {BOP, BI, BDPA}},
14b57c7c
AM
5046{"bcla", B(16,1,1), B_MASK, COM, PPCVLE, {BO, BI, BDA}},
5047
5048{"svc", SC(17,0,0), SC_MASK, POWER, PPCVLE, {SVC_LEV, FL1, FL2}},
dce75bf9 5049{"scv", SC(17,0,1), SC_MASK, POWER9, PPCVLE, {SVC_LEV}},
14b57c7c
AM
5050{"svcl", SC(17,0,1), SC_MASK, POWER, PPCVLE, {SVC_LEV, FL1, FL2}},
5051{"sc", SC(17,1,0), SC_MASK, PPC, PPCVLE, {LEV}},
5052{"svca", SC(17,1,0), SC_MASK, PWRCOM, PPCVLE, {SV}},
5053{"svcla", SC(17,1,1), SC_MASK, POWER, PPCVLE, {SV}},
5054
5055{"b", B(18,0,0), B_MASK, COM, PPCVLE, {LI}},
5056{"bl", B(18,0,1), B_MASK, COM, PPCVLE, {LI}},
5057{"ba", B(18,1,0), B_MASK, COM, PPCVLE, {LIA}},
5058{"bla", B(18,1,1), B_MASK, COM, PPCVLE, {LIA}},
5059
5060{"mcrf", XL(19,0), XLBB_MASK|(3<<21)|(3<<16), COM, PPCVLE, {BF, BFA}},
5061
1437d063 5062{"lnia", DX(19,2), NODX_MASK, POWER9, PPCVLE, {RT}},
14b57c7c
AM
5063{"addpcis", DX(19,2), DX_MASK, POWER9, PPCVLE, {RT, DXD}},
5064{"subpcis", DX(19,2), DX_MASK, POWER9, PPCVLE, {RT, NDXD}},
5065
14b57c7c 5066{"bdnzlr-", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}},
14b57c7c 5067{"bdnzlr+", XLO(19,BODNZP,16,0), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}},
66e85460
AM
5068{"bdnzlr", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPCCOM, PPCVLE, {0}},
5069{"bdnzlrl-", XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}},
14b57c7c 5070{"bdnzlrl+", XLO(19,BODNZP,16,1), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}},
66e85460 5071{"bdnzlrl", XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPCCOM, PPCVLE, {0}},
14b57c7c 5072{"bdzlr-", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}},
14b57c7c 5073{"bdzlr+", XLO(19,BODZP,16,0), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}},
66e85460
AM
5074{"bdzlr", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPCCOM, PPCVLE, {0}},
5075{"bdzlrl-", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}},
14b57c7c 5076{"bdzlrl+", XLO(19,BODZP,16,1), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}},
66e85460 5077{"bdzlrl", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPCCOM, PPCVLE, {0}},
14b57c7c
AM
5078{"blr", XLO(19,BOU,16,0), XLBOBIBB_MASK, PPCCOM, PPCVLE, {0}},
5079{"br", XLO(19,BOU,16,0), XLBOBIBB_MASK, PWRCOM, PPCVLE, {0}},
5080{"blrl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PPCCOM, PPCVLE, {0}},
5081{"brl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PWRCOM, PPCVLE, {0}},
5082{"bdnzlr-", XLO(19,BODNZM4,16,0), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}},
5083{"bdnzlrl-", XLO(19,BODNZM4,16,1), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}},
5084{"bdnzlr+", XLO(19,BODNZP4,16,0), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}},
5085{"bdnzlrl+", XLO(19,BODNZP4,16,1), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}},
5086{"bdzlr-", XLO(19,BODZM4,16,0), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}},
5087{"bdzlrl-", XLO(19,BODZM4,16,1), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}},
5088{"bdzlr+", XLO(19,BODZP4,16,0), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}},
5089{"bdzlrl+", XLO(19,BODZP4,16,1), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}},
5090
14b57c7c 5091{"bgelr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5092{"bgelr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
5093{"bgelr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
14b57c7c 5094{"bger", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
14b57c7c 5095{"bnllr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5096{"bnllr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
5097{"bnllr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
14b57c7c 5098{"bnlr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
14b57c7c 5099{"bgelrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5100{"bgelrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
5101{"bgelrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
14b57c7c 5102{"bgerl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
14b57c7c 5103{"bnllrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5104{"bnllrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
5105{"bnllrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
14b57c7c 5106{"bnlrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
14b57c7c 5107{"blelr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5108{"blelr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
5109{"blelr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
14b57c7c 5110{"bler", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
14b57c7c 5111{"bnglr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5112{"bnglr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
5113{"bnglr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
14b57c7c 5114{"bngr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
14b57c7c 5115{"blelrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5116{"blelrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
5117{"blelrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
14b57c7c 5118{"blerl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
14b57c7c 5119{"bnglrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5120{"bnglrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
5121{"bnglrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
14b57c7c 5122{"bngrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
14b57c7c 5123{"bnelr-", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5124{"bnelr+", XLOCB(19,BOFP,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
5125{"bnelr", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
14b57c7c 5126{"bner", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
14b57c7c 5127{"bnelrl-", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5128{"bnelrl+", XLOCB(19,BOFP,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
5129{"bnelrl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
14b57c7c 5130{"bnerl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
14b57c7c 5131{"bnslr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5132{"bnslr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
5133{"bnslr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
14b57c7c 5134{"bnsr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
14b57c7c 5135{"bnulr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5136{"bnulr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
5137{"bnulr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
14b57c7c 5138{"bnslrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5139{"bnslrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
5140{"bnslrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
14b57c7c 5141{"bnsrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
14b57c7c 5142{"bnulrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
14b57c7c 5143{"bnulrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460 5144{"bnulrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
14b57c7c
AM
5145{"bgelr-", XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5146{"bnllr-", XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5147{"bgelrl-", XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5148{"bnllrl-", XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5149{"blelr-", XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5150{"bnglr-", XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5151{"blelrl-", XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5152{"bnglrl-", XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5153{"bnelr-", XLOCB(19,BOFM4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5154{"bnelrl-", XLOCB(19,BOFM4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5155{"bnslr-", XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5156{"bnulr-", XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5157{"bnslrl-", XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5158{"bnulrl-", XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5159{"bgelr+", XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5160{"bnllr+", XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5161{"bgelrl+", XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5162{"bnllrl+", XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5163{"blelr+", XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5164{"bnglr+", XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5165{"blelrl+", XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5166{"bnglrl+", XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5167{"bnelr+", XLOCB(19,BOFP4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5168{"bnelrl+", XLOCB(19,BOFP4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5169{"bnslr+", XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5170{"bnulr+", XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5171{"bnslrl+", XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5172{"bnulrl+", XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
14b57c7c 5173{"bltlr-", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5174{"bltlr+", XLOCB(19,BOTP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
5175{"bltlr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
14b57c7c 5176{"bltr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
14b57c7c 5177{"bltlrl-", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5178{"bltlrl+", XLOCB(19,BOTP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
5179{"bltlrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
14b57c7c 5180{"bltrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
14b57c7c 5181{"bgtlr-", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5182{"bgtlr+", XLOCB(19,BOTP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
5183{"bgtlr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
14b57c7c 5184{"bgtr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
14b57c7c 5185{"bgtlrl-", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5186{"bgtlrl+", XLOCB(19,BOTP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
5187{"bgtlrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
14b57c7c 5188{"bgtrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
14b57c7c 5189{"beqlr-", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5190{"beqlr+", XLOCB(19,BOTP,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
5191{"beqlr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
14b57c7c 5192{"beqr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
14b57c7c 5193{"beqlrl-", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5194{"beqlrl+", XLOCB(19,BOTP,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
5195{"beqlrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
14b57c7c 5196{"beqrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
14b57c7c 5197{"bsolr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5198{"bsolr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
5199{"bsolr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
14b57c7c 5200{"bsor", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
14b57c7c 5201{"bunlr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5202{"bunlr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
5203{"bunlr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
14b57c7c 5204{"bsolrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5205{"bsolrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
5206{"bsolrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
14b57c7c 5207{"bsorl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
14b57c7c 5208{"bunlrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
14b57c7c 5209{"bunlrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460 5210{"bunlrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
14b57c7c
AM
5211{"bltlr-", XLOCB(19,BOTM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5212{"bltlrl-", XLOCB(19,BOTM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5213{"bgtlr-", XLOCB(19,BOTM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5214{"bgtlrl-", XLOCB(19,BOTM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5215{"beqlr-", XLOCB(19,BOTM4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5216{"beqlrl-", XLOCB(19,BOTM4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5217{"bsolr-", XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5218{"bunlr-", XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5219{"bsolrl-", XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5220{"bunlrl-", XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5221{"bltlr+", XLOCB(19,BOTP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5222{"bltlrl+", XLOCB(19,BOTP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5223{"bgtlr+", XLOCB(19,BOTP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5224{"bgtlrl+", XLOCB(19,BOTP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5225{"beqlr+", XLOCB(19,BOTP4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5226{"beqlrl+", XLOCB(19,BOTP4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5227{"bsolr+", XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5228{"bunlr+", XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5229{"bsolrl+", XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5230{"bunlrl+", XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5231
14b57c7c 5232{"bdnzflr-", XLO(19,BODNZF,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
14b57c7c 5233{"bdnzflr+", XLO(19,BODNZFP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
66e85460
AM
5234{"bdnzflr", XLO(19,BODNZF,16,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
5235{"bdnzflrl-",XLO(19,BODNZF,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
14b57c7c 5236{"bdnzflrl+",XLO(19,BODNZFP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
66e85460 5237{"bdnzflrl", XLO(19,BODNZF,16,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
14b57c7c 5238{"bdzflr-", XLO(19,BODZF,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
14b57c7c 5239{"bdzflr+", XLO(19,BODZFP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
66e85460
AM
5240{"bdzflr", XLO(19,BODZF,16,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
5241{"bdzflrl-", XLO(19,BODZF,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
14b57c7c 5242{"bdzflrl+", XLO(19,BODZFP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
66e85460 5243{"bdzflrl", XLO(19,BODZF,16,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
14b57c7c 5244{"bflr-", XLO(19,BOF,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
66e85460
AM
5245{"bflr+", XLO(19,BOFP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
5246{"bflr", XLO(19,BOF,16,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
14b57c7c 5247{"bbfr", XLO(19,BOF,16,0), XLBOBB_MASK, PWRCOM, PPCVLE, {BI}},
14b57c7c 5248{"bflrl-", XLO(19,BOF,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
14b57c7c 5249{"bflrl+", XLO(19,BOFP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
66e85460
AM
5250{"bflrl", XLO(19,BOF,16,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
5251{"bbfrl", XLO(19,BOF,16,1), XLBOBB_MASK, PWRCOM, PPCVLE, {BI}},
14b57c7c
AM
5252{"bflr-", XLO(19,BOFM4,16,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
5253{"bflrl-", XLO(19,BOFM4,16,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
5254{"bflr+", XLO(19,BOFP4,16,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
5255{"bflrl+", XLO(19,BOFP4,16,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
14b57c7c 5256{"bdnztlr-", XLO(19,BODNZT,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
14b57c7c 5257{"bdnztlr+", XLO(19,BODNZTP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
66e85460
AM
5258{"bdnztlr", XLO(19,BODNZT,16,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
5259{"bdnztlrl-", XLO(19,BODNZT,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
14b57c7c 5260{"bdnztlrl+", XLO(19,BODNZTP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
66e85460 5261{"bdnztlrl", XLO(19,BODNZT,16,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
14b57c7c 5262{"bdztlr-", XLO(19,BODZT,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
14b57c7c 5263{"bdztlr+", XLO(19,BODZTP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
66e85460
AM
5264{"bdztlr", XLO(19,BODZT,16,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
5265{"bdztlrl-", XLO(19,BODZT,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
14b57c7c 5266{"bdztlrl+", XLO(19,BODZTP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
66e85460 5267{"bdztlrl", XLO(19,BODZT,16,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
14b57c7c 5268{"btlr-", XLO(19,BOT,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
66e85460
AM
5269{"btlr+", XLO(19,BOTP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
5270{"btlr", XLO(19,BOT,16,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
14b57c7c 5271{"bbtr", XLO(19,BOT,16,0), XLBOBB_MASK, PWRCOM, PPCVLE, {BI}},
14b57c7c 5272{"btlrl-", XLO(19,BOT,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
14b57c7c 5273{"btlrl+", XLO(19,BOTP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
66e85460
AM
5274{"btlrl", XLO(19,BOT,16,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
5275{"bbtrl", XLO(19,BOT,16,1), XLBOBB_MASK, PWRCOM, PPCVLE, {BI}},
14b57c7c
AM
5276{"btlr-", XLO(19,BOTM4,16,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
5277{"btlrl-", XLO(19,BOTM4,16,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
5278{"btlr+", XLO(19,BOTP4,16,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
5279{"btlrl+", XLO(19,BOTP4,16,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
5280
66e85460
AM
5281{"bclr-", XLLK(19,16,0), XLBH_MASK, PPCCOM, PPCVLE, {BOM, BI, BH}},
5282{"bclr+", XLLK(19,16,0), XLBH_MASK, PPCCOM, PPCVLE, {BOP, BI, BH}},
14b57c7c 5283{"bclr", XLLK(19,16,0), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}},
66e85460
AM
5284{"bcr", XLLK(19,16,0), XLBH_MASK, PWRCOM, PPCVLE, {BO, BI, BH}},
5285{"bclrl-", XLLK(19,16,1), XLBH_MASK, PPCCOM, PPCVLE, {BOM, BI, BH}},
5286{"bclrl+", XLLK(19,16,1), XLBH_MASK, PPCCOM, PPCVLE, {BOP, BI, BH}},
14b57c7c 5287{"bclrl", XLLK(19,16,1), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}},
66e85460 5288{"bcrl", XLLK(19,16,1), XLBH_MASK, PWRCOM, PPCVLE, {BO, BI, BH}},
14b57c7c
AM
5289
5290{"rfid", XL(19,18), 0xffffffff, PPC64, PPCVLE, {0}},
5291
98553ad3 5292{"crnot", XL(19,33), XL_MASK, PPCCOM, PPCVLE, {BT, BAB}},
14b57c7c
AM
5293{"crnor", XL(19,33), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
5294{"rfmci", X(19,38), 0xffffffff, PPCRFMCI|PPCA2|PPC476, PPCVLE, {0}},
5295
5296{"rfdi", XL(19,39), 0xffffffff, E500MC, PPCVLE, {0}},
5297{"rfi", XL(19,50), 0xffffffff, COM, PPCVLE, {0}},
5298{"rfci", XL(19,51), 0xffffffff, PPC403|BOOKE|PPCE300|PPCA2|PPC476, PPCVLE, {0}},
5299
dce75bf9 5300{"rfscv", XL(19,82), 0xffffffff, POWER9, PPCVLE, {0}},
14b57c7c
AM
5301{"rfsvc", XL(19,82), 0xffffffff, POWER, PPCVLE, {0}},
5302
5303{"rfgi", XL(19,102), 0xffffffff, E500MC|PPCA2, PPCVLE, {0}},
5304
5305{"crandc", XL(19,129), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
5306
5307{"rfebb", XL(19,146), XLS_MASK, POWER8, PPCVLE, {SXL}},
5308
5309{"isync", XL(19,150), 0xffffffff, PPCCOM, PPCVLE, {0}},
5310{"ics", XL(19,150), 0xffffffff, PWRCOM, PPCVLE, {0}},
5311
98553ad3 5312{"crclr", XL(19,193), XL_MASK, PPCCOM, PPCVLE, {BTAB}},
14b57c7c
AM
5313{"crxor", XL(19,193), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
5314
5315{"dnh", X(19,198), X_MASK, E500MC, PPCVLE, {DUI, DUIS}},
5316
5317{"crnand", XL(19,225), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
5318
5319{"crand", XL(19,257), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
5320
5321{"hrfid", XL(19,274), 0xffffffff, POWER5|CELL, PPC476|PPCVLE, {0}},
5322
98553ad3 5323{"crset", XL(19,289), XL_MASK, PPCCOM, PPCVLE, {BTAB}},
14b57c7c
AM
5324{"creqv", XL(19,289), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
5325
5326{"urfid", XL(19,306), 0xffffffff, POWER9, PPCVLE, {0}},
5327{"stop", XL(19,370), 0xffffffff, POWER9, PPCVLE, {0}},
5328
5329{"doze", XL(19,402), 0xffffffff, POWER6, POWER9|PPCVLE, {0}},
5330
5331{"crorc", XL(19,417), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
5332
5333{"nap", XL(19,434), 0xffffffff, POWER6, POWER9|PPCVLE, {0}},
5334
98553ad3 5335{"crmove", XL(19,449), XL_MASK, PPCCOM, PPCVLE, {BT, BAB}},
14b57c7c
AM
5336{"cror", XL(19,449), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
5337
5338{"sleep", XL(19,466), 0xffffffff, POWER6, POWER9|PPCVLE, {0}},
5339{"rvwinkle", XL(19,498), 0xffffffff, POWER6, POWER9|PPCVLE, {0}},
5340
5341{"bctr", XLO(19,BOU,528,0), XLBOBIBB_MASK, COM, PPCVLE, {0}},
5342{"bctrl", XLO(19,BOU,528,1), XLBOBIBB_MASK, COM, PPCVLE, {0}},
5343
14b57c7c 5344{"bgectr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
14b57c7c 5345{"bgectr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5346{"bgectr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
5347{"bnlctr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
14b57c7c 5348{"bnlctr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5349{"bnlctr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
5350{"bgectrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
14b57c7c 5351{"bgectrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5352{"bgectrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
5353{"bnlctrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
14b57c7c 5354{"bnlctrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5355{"bnlctrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
5356{"blectr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
14b57c7c 5357{"blectr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5358{"blectr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
5359{"bngctr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
14b57c7c 5360{"bngctr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5361{"bngctr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
5362{"blectrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
14b57c7c 5363{"blectrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5364{"blectrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
5365{"bngctrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
14b57c7c 5366{"bngctrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5367{"bngctrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
5368{"bnectr-", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
14b57c7c 5369{"bnectr+", XLOCB(19,BOFP,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5370{"bnectr", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
5371{"bnectrl-",XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
14b57c7c 5372{"bnectrl+",XLOCB(19,BOFP,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5373{"bnectrl", XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
5374{"bnsctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
14b57c7c 5375{"bnsctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5376{"bnsctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
5377{"bnuctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
14b57c7c 5378{"bnuctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5379{"bnuctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
5380{"bnsctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
14b57c7c 5381{"bnsctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5382{"bnsctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
5383{"bnuctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
14b57c7c 5384{"bnuctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460 5385{"bnuctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
14b57c7c
AM
5386{"bgectr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5387{"bnlctr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5388{"bgectrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5389{"bnlctrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5390{"blectr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5391{"bngctr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5392{"blectrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5393{"bngctrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5394{"bnectr-", XLOCB(19,BOFM4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5395{"bnectrl-",XLOCB(19,BOFM4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5396{"bnsctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5397{"bnuctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5398{"bnsctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5399{"bnuctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5400{"bgectr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5401{"bnlctr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5402{"bgectrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5403{"bnlctrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5404{"blectr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5405{"bngctr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5406{"blectrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5407{"bngctrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5408{"bnectr+", XLOCB(19,BOFP4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5409{"bnectrl+",XLOCB(19,BOFP4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5410{"bnsctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5411{"bnuctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5412{"bnsctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5413{"bnuctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
14b57c7c 5414{"bltctr-", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
14b57c7c 5415{"bltctr+", XLOCB(19,BOTP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5416{"bltctr", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
5417{"bltctrl-",XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
14b57c7c 5418{"bltctrl+",XLOCB(19,BOTP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5419{"bltctrl", XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
5420{"bgtctr-", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
14b57c7c 5421{"bgtctr+", XLOCB(19,BOTP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5422{"bgtctr", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
5423{"bgtctrl-",XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
14b57c7c 5424{"bgtctrl+",XLOCB(19,BOTP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5425{"bgtctrl", XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
5426{"beqctr-", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
14b57c7c 5427{"beqctr+", XLOCB(19,BOTP,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5428{"beqctr", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
5429{"beqctrl-",XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
14b57c7c 5430{"beqctrl+",XLOCB(19,BOTP,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5431{"beqctrl", XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
5432{"bsoctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
14b57c7c 5433{"bsoctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5434{"bsoctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
5435{"bunctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
14b57c7c 5436{"bunctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5437{"bunctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
5438{"bsoctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
14b57c7c 5439{"bsoctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460
AM
5440{"bsoctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
5441{"bunctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
14b57c7c 5442{"bunctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
66e85460 5443{"bunctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
14b57c7c
AM
5444{"bltctr-", XLOCB(19,BOTM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5445{"bltctrl-",XLOCB(19,BOTM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5446{"bgtctr-", XLOCB(19,BOTM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5447{"bgtctrl-",XLOCB(19,BOTM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5448{"beqctr-", XLOCB(19,BOTM4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5449{"beqctrl-",XLOCB(19,BOTM4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5450{"bsoctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5451{"bunctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5452{"bsoctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5453{"bunctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5454{"bltctr+", XLOCB(19,BOTP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5455{"bltctrl+",XLOCB(19,BOTP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5456{"bgtctr+", XLOCB(19,BOTP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5457{"bgtctrl+",XLOCB(19,BOTP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5458{"beqctr+", XLOCB(19,BOTP4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5459{"beqctrl+",XLOCB(19,BOTP4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5460{"bsoctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5461{"bunctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5462{"bsoctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5463{"bunctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
5464
14b57c7c 5465{"bfctr-", XLO(19,BOF,528,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
14b57c7c 5466{"bfctr+", XLO(19,BOFP,528,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
66e85460
AM
5467{"bfctr", XLO(19,BOF,528,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
5468{"bfctrl-", XLO(19,BOF,528,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
14b57c7c 5469{"bfctrl+", XLO(19,BOFP,528,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
66e85460 5470{"bfctrl", XLO(19,BOF,528,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
14b57c7c
AM
5471{"bfctr-", XLO(19,BOFM4,528,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
5472{"bfctrl-", XLO(19,BOFM4,528,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
5473{"bfctr+", XLO(19,BOFP4,528,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
5474{"bfctrl+", XLO(19,BOFP4,528,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
14b57c7c 5475{"btctr-", XLO(19,BOT,528,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
14b57c7c 5476{"btctr+", XLO(19,BOTP,528,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
66e85460
AM
5477{"btctr", XLO(19,BOT,528,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
5478{"btctrl-", XLO(19,BOT,528,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
14b57c7c 5479{"btctrl+", XLO(19,BOTP,528,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
66e85460 5480{"btctrl", XLO(19,BOT,528,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
14b57c7c
AM
5481{"btctr-", XLO(19,BOTM4,528,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
5482{"btctrl-", XLO(19,BOTM4,528,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
5483{"btctr+", XLO(19,BOTP4,528,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
5484{"btctrl+", XLO(19,BOTP4,528,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
5485
66e85460
AM
5486{"bcctr-", XLLK(19,528,0), XLBH_MASK, PPCCOM, PPCVLE, {BOM, BI, BH}},
5487{"bcctr+", XLLK(19,528,0), XLBH_MASK, PPCCOM, PPCVLE, {BOP, BI, BH}},
14b57c7c 5488{"bcctr", XLLK(19,528,0), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}},
66e85460
AM
5489{"bcc", XLLK(19,528,0), XLBH_MASK, PWRCOM, PPCVLE, {BO, BI, BH}},
5490{"bcctrl-", XLLK(19,528,1), XLBH_MASK, PPCCOM, PPCVLE, {BOM, BI, BH}},
5491{"bcctrl+", XLLK(19,528,1), XLBH_MASK, PPCCOM, PPCVLE, {BOP, BI, BH}},
14b57c7c 5492{"bcctrl", XLLK(19,528,1), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}},
66e85460 5493{"bccl", XLLK(19,528,1), XLBH_MASK, PWRCOM, PPCVLE, {BO, BI, BH}},
14b57c7c 5494
aae9718e
PB
5495{"bdnztar", XLO(19,BODNZ,560,0), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
5496{"bdnztarl", XLO(19,BODNZ,560,1), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
5497{"bdztar", XLO(19,BODZ,560,0), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
5498{"bdztarl", XLO(19,BODZ,560,1), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
5499{"btar", XLO(19,BOU,560,0), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
5500{"btarl", XLO(19,BOU,560,1), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
5501{"bdnztar-", XLO(19,BODNZM4,560,0), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
5502{"bdnztarl-", XLO(19,BODNZM4,560,1), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
5503{"bdnztar+", XLO(19,BODNZP4,560,0), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
5504{"bdnztarl+", XLO(19,BODNZP4,560,1), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
5505{"bdztar-", XLO(19,BODZM4,560,0), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
5506{"bdztarl-", XLO(19,BODZM4,560,1), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
5507{"bdztar+", XLO(19,BODZP4,560,0), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
5508{"bdztarl+", XLO(19,BODZP4,560,1), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
5509
5510{"bgetar", XLOCB(19,BOF,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5511{"bnltar", XLOCB(19,BOF,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5512{"bgetarl", XLOCB(19,BOF,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5513{"bnltarl", XLOCB(19,BOF,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5514{"bletar", XLOCB(19,BOF,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5515{"bngtar", XLOCB(19,BOF,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5516{"bletarl", XLOCB(19,BOF,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5517{"bngtarl", XLOCB(19,BOF,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5518{"bnetar", XLOCB(19,BOF,CBEQ,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5519{"bnetarl", XLOCB(19,BOF,CBEQ,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5520{"bnstar", XLOCB(19,BOF,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5521{"bnutar", XLOCB(19,BOF,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5522{"bnstarl", XLOCB(19,BOF,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5523{"bnutarl", XLOCB(19,BOF,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5524{"bgetar-", XLOCB(19,BOFM4,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5525{"bnltar-", XLOCB(19,BOFM4,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5526{"bgetarl-",XLOCB(19,BOFM4,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5527{"bnltarl-",XLOCB(19,BOFM4,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5528{"bletar-", XLOCB(19,BOFM4,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5529{"bngtar-", XLOCB(19,BOFM4,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5530{"bletarl-",XLOCB(19,BOFM4,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5531{"bngtarl-",XLOCB(19,BOFM4,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5532{"bnetar-", XLOCB(19,BOFM4,CBEQ,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5533{"bnetarl-",XLOCB(19,BOFM4,CBEQ,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5534{"bnstar-", XLOCB(19,BOFM4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5535{"bnutar-", XLOCB(19,BOFM4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5536{"bnstarl-",XLOCB(19,BOFM4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5537{"bnutarl-",XLOCB(19,BOFM4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5538{"bgetar+", XLOCB(19,BOFP4,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5539{"bnltar+", XLOCB(19,BOFP4,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5540{"bgetarl+",XLOCB(19,BOFP4,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5541{"bnltarl+",XLOCB(19,BOFP4,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5542{"bletar+", XLOCB(19,BOFP4,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5543{"bngtar+", XLOCB(19,BOFP4,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5544{"bletarl+",XLOCB(19,BOFP4,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5545{"bngtarl+",XLOCB(19,BOFP4,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5546{"bnetar+", XLOCB(19,BOFP4,CBEQ,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5547{"bnetarl+",XLOCB(19,BOFP4,CBEQ,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5548{"bnstar+", XLOCB(19,BOFP4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5549{"bnutar+", XLOCB(19,BOFP4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5550{"bnstarl+",XLOCB(19,BOFP4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5551{"bnutarl+",XLOCB(19,BOFP4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5552{"blttar", XLOCB(19,BOT,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5553{"blttarl", XLOCB(19,BOT,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5554{"bgttar", XLOCB(19,BOT,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5555{"bgttarl", XLOCB(19,BOT,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5556{"beqtar", XLOCB(19,BOT,CBEQ,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5557{"beqtarl", XLOCB(19,BOT,CBEQ,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5558{"bsotar", XLOCB(19,BOT,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5559{"buntar", XLOCB(19,BOT,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5560{"bsotarl", XLOCB(19,BOT,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5561{"buntarl", XLOCB(19,BOT,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5562{"blttar-", XLOCB(19,BOTM4,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5563{"blttarl-",XLOCB(19,BOTM4,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5564{"bgttar-", XLOCB(19,BOTM4,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5565{"bgttarl-",XLOCB(19,BOTM4,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5566{"beqtar-", XLOCB(19,BOTM4,CBEQ,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5567{"beqtarl-",XLOCB(19,BOTM4,CBEQ,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5568{"bsotar-", XLOCB(19,BOTM4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5569{"buntar-", XLOCB(19,BOTM4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5570{"bsotarl-",XLOCB(19,BOTM4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5571{"buntarl-",XLOCB(19,BOTM4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5572{"blttar+", XLOCB(19,BOTP4,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5573{"blttarl+",XLOCB(19,BOTP4,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5574{"bgttar+", XLOCB(19,BOTP4,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5575{"bgttarl+",XLOCB(19,BOTP4,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5576{"beqtar+", XLOCB(19,BOTP4,CBEQ,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5577{"beqtarl+",XLOCB(19,BOTP4,CBEQ,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5578{"bsotar+", XLOCB(19,BOTP4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5579{"buntar+", XLOCB(19,BOTP4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5580{"bsotarl+",XLOCB(19,BOTP4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5581{"buntarl+",XLOCB(19,BOTP4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
5582
5583{"bdnzftar", XLO(19,BODNZF,560,0), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
5584{"bdnzftarl", XLO(19,BODNZF,560,1), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
5585{"bdzftar", XLO(19,BODZF,560,0), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
5586{"bdzftarl", XLO(19,BODZF,560,1), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
5587
5588{"bftar", XLO(19,BOF,560,0), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
5589{"bftarl", XLO(19,BOF,560,1), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
5590{"bftar-", XLO(19,BOFM4,560,0), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
5591{"bftarl-", XLO(19,BOFM4,560,1), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
5592{"bftar+", XLO(19,BOFP4,560,0), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
5593{"bftarl+", XLO(19,BOFP4,560,1), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
5594
5595{"bdnzttar", XLO(19,BODNZT,560,0), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
5596{"bdnzttarl", XLO(19,BODNZT,560,1), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
5597{"bdzttar", XLO(19,BODZT,560,0), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
5598{"bdzttarl", XLO(19,BODZT,560,1), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
5599
5600{"bttar", XLO(19,BOT,560,0), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
5601{"bttarl", XLO(19,BOT,560,1), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
5602{"bttar-", XLO(19,BOTM4,560,0), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
5603{"bttarl-", XLO(19,BOTM4,560,1), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
5604{"bttar+", XLO(19,BOTP4,560,0), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
5605{"bttarl+", XLO(19,BOTP4,560,1), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
5606
66e85460
AM
5607{"bctar-", XLLK(19,560,0), XLBH_MASK, POWER8, PPCVLE, {BOM, BI, BH}},
5608{"bctar+", XLLK(19,560,0), XLBH_MASK, POWER8, PPCVLE, {BOP, BI, BH}},
14b57c7c 5609{"bctar", XLLK(19,560,0), XLBH_MASK, POWER8, PPCVLE, {BO, BI, BH}},
66e85460
AM
5610{"bctarl-", XLLK(19,560,1), XLBH_MASK, POWER8, PPCVLE, {BOM, BI, BH}},
5611{"bctarl+", XLLK(19,560,1), XLBH_MASK, POWER8, PPCVLE, {BOP, BI, BH}},
14b57c7c
AM
5612{"bctarl", XLLK(19,560,1), XLBH_MASK, POWER8, PPCVLE, {BO, BI, BH}},
5613
5614{"rlwimi", M(20,0), M_MASK, PPCCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
5615{"rlimi", M(20,0), M_MASK, PWRCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
5616
5617{"rlwimi.", M(20,1), M_MASK, PPCCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
5618{"rlimi.", M(20,1), M_MASK, PWRCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
5619
5620{"rotlwi", MME(21,31,0), MMBME_MASK, PPCCOM, PPCVLE, {RA, RS, SH}},
5621{"clrlwi", MME(21,31,0), MSHME_MASK, PPCCOM, PPCVLE, {RA, RS, MB}},
5622{"rlwinm", M(21,0), M_MASK, PPCCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
5623{"rlinm", M(21,0), M_MASK, PWRCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
5624{"rotlwi.", MME(21,31,1), MMBME_MASK, PPCCOM, PPCVLE, {RA, RS, SH}},
5625{"clrlwi.", MME(21,31,1), MSHME_MASK, PPCCOM, PPCVLE, {RA, RS, MB}},
5626{"rlwinm.", M(21,1), M_MASK, PPCCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
5627{"rlinm.", M(21,1), M_MASK, PWRCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
5628
5629{"rlmi", M(22,0), M_MASK, M601, PPCVLE, {RA, RS, RB, MBE, ME}},
5630{"rlmi.", M(22,1), M_MASK, M601, PPCVLE, {RA, RS, RB, MBE, ME}},
5631
5632{"rotlw", MME(23,31,0), MMBME_MASK, PPCCOM, PPCVLE, {RA, RS, RB}},
5633{"rlwnm", M(23,0), M_MASK, PPCCOM, PPCVLE, {RA, RS, RB, MBE, ME}},
5634{"rlnm", M(23,0), M_MASK, PWRCOM, PPCVLE, {RA, RS, RB, MBE, ME}},
5635{"rotlw.", MME(23,31,1), MMBME_MASK, PPCCOM, PPCVLE, {RA, RS, RB}},
5636{"rlwnm.", M(23,1), M_MASK, PPCCOM, PPCVLE, {RA, RS, RB, MBE, ME}},
5637{"rlnm.", M(23,1), M_MASK, PWRCOM, PPCVLE, {RA, RS, RB, MBE, ME}},
5638
5639{"nop", OP(24), 0xffffffff, PPCCOM, PPCVLE, {0}},
5640{"ori", OP(24), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
5641{"oril", OP(24), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
5642
5643{"oris", OP(25), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
5644{"oriu", OP(25), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
5645
5646{"xnop", OP(26), 0xffffffff, PPCCOM, PPCVLE, {0}},
5647{"xori", OP(26), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
5648{"xoril", OP(26), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
5649
5650{"xoris", OP(27), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
5651{"xoriu", OP(27), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
5652
5653{"andi.", OP(28), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
5654{"andil.", OP(28), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
5655
5656{"andis.", OP(29), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
5657{"andiu.", OP(29), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
5658
5659{"rotldi", MD(30,0,0), MDMB_MASK, PPC64, PPCVLE, {RA, RS, SH6}},
5660{"clrldi", MD(30,0,0), MDSH_MASK, PPC64, PPCVLE, {RA, RS, MB6}},
5661{"rldicl", MD(30,0,0), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
5662{"rotldi.", MD(30,0,1), MDMB_MASK, PPC64, PPCVLE, {RA, RS, SH6}},
5663{"clrldi.", MD(30,0,1), MDSH_MASK, PPC64, PPCVLE, {RA, RS, MB6}},
5664{"rldicl.", MD(30,0,1), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
5665
5666{"rldicr", MD(30,1,0), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, ME6}},
5667{"rldicr.", MD(30,1,1), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, ME6}},
5668
5669{"rldic", MD(30,2,0), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
5670{"rldic.", MD(30,2,1), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
5671
5672{"rldimi", MD(30,3,0), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
5673{"rldimi.", MD(30,3,1), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
5674
5675{"rotld", MDS(30,8,0), MDSMB_MASK, PPC64, PPCVLE, {RA, RS, RB}},
5676{"rldcl", MDS(30,8,0), MDS_MASK, PPC64, PPCVLE, {RA, RS, RB, MB6}},
5677{"rotld.", MDS(30,8,1), MDSMB_MASK, PPC64, PPCVLE, {RA, RS, RB}},
5678{"rldcl.", MDS(30,8,1), MDS_MASK, PPC64, PPCVLE, {RA, RS, RB, MB6}},
5679
5680{"rldcr", MDS(30,9,0), MDS_MASK, PPC64, PPCVLE, {RA, RS, RB, ME6}},
5681{"rldcr.", MDS(30,9,1), MDS_MASK, PPC64, PPCVLE, {RA, RS, RB, ME6}},
5682
5683{"cmpw", XOPL(31,0,0), XCMPL_MASK, PPCCOM, 0, {OBF, RA, RB}},
5684{"cmpd", XOPL(31,0,1), XCMPL_MASK, PPC64, 0, {OBF, RA, RB}},
a5721ba2 5685{"cmp", X(31,0), XCMP_MASK, PPC, 0, {BF, L32OPT, RA, RB}},
bdc70b4a 5686{"cmp", X(31,0), XCMPL_MASK, PWRCOM, PPC, {BF, RA, RB}},
1cb0a767 5687
14b57c7c
AM
5688{"twlgt", XTO(31,4,TOLGT), XTO_MASK, PPCCOM, 0, {RA, RB}},
5689{"tlgt", XTO(31,4,TOLGT), XTO_MASK, PWRCOM, 0, {RA, RB}},
5690{"twllt", XTO(31,4,TOLLT), XTO_MASK, PPCCOM, 0, {RA, RB}},
5691{"tllt", XTO(31,4,TOLLT), XTO_MASK, PWRCOM, 0, {RA, RB}},
5692{"tweq", XTO(31,4,TOEQ), XTO_MASK, PPCCOM, 0, {RA, RB}},
5693{"teq", XTO(31,4,TOEQ), XTO_MASK, PWRCOM, 0, {RA, RB}},
5694{"twlge", XTO(31,4,TOLGE), XTO_MASK, PPCCOM, 0, {RA, RB}},
5695{"tlge", XTO(31,4,TOLGE), XTO_MASK, PWRCOM, 0, {RA, RB}},
5696{"twlnl", XTO(31,4,TOLNL), XTO_MASK, PPCCOM, 0, {RA, RB}},
5697{"tlnl", XTO(31,4,TOLNL), XTO_MASK, PWRCOM, 0, {RA, RB}},
5698{"twlle", XTO(31,4,TOLLE), XTO_MASK, PPCCOM, 0, {RA, RB}},
5699{"tlle", XTO(31,4,TOLLE), XTO_MASK, PWRCOM, 0, {RA, RB}},
5700{"twlng", XTO(31,4,TOLNG), XTO_MASK, PPCCOM, 0, {RA, RB}},
5701{"tlng", XTO(31,4,TOLNG), XTO_MASK, PWRCOM, 0, {RA, RB}},
5702{"twgt", XTO(31,4,TOGT), XTO_MASK, PPCCOM, 0, {RA, RB}},
5703{"tgt", XTO(31,4,TOGT), XTO_MASK, PWRCOM, 0, {RA, RB}},
5704{"twge", XTO(31,4,TOGE), XTO_MASK, PPCCOM, 0, {RA, RB}},
5705{"tge", XTO(31,4,TOGE), XTO_MASK, PWRCOM, 0, {RA, RB}},
5706{"twnl", XTO(31,4,TONL), XTO_MASK, PPCCOM, 0, {RA, RB}},
5707{"tnl", XTO(31,4,TONL), XTO_MASK, PWRCOM, 0, {RA, RB}},
5708{"twlt", XTO(31,4,TOLT), XTO_MASK, PPCCOM, 0, {RA, RB}},
5709{"tlt", XTO(31,4,TOLT), XTO_MASK, PWRCOM, 0, {RA, RB}},
5710{"twle", XTO(31,4,TOLE), XTO_MASK, PPCCOM, 0, {RA, RB}},
5711{"tle", XTO(31,4,TOLE), XTO_MASK, PWRCOM, 0, {RA, RB}},
5712{"twng", XTO(31,4,TONG), XTO_MASK, PPCCOM, 0, {RA, RB}},
5713{"tng", XTO(31,4,TONG), XTO_MASK, PWRCOM, 0, {RA, RB}},
5714{"twne", XTO(31,4,TONE), XTO_MASK, PPCCOM, 0, {RA, RB}},
5715{"tne", XTO(31,4,TONE), XTO_MASK, PWRCOM, 0, {RA, RB}},
5716{"trap", XTO(31,4,TOU), 0xffffffff, PPCCOM, 0, {0}},
5717{"twu", XTO(31,4,TOU), XTO_MASK, PPCCOM, 0, {RA, RB}},
5718{"tu", XTO(31,4,TOU), XTO_MASK, PWRCOM, 0, {RA, RB}},
5719{"tw", X(31,4), X_MASK, PPCCOM, 0, {TO, RA, RB}},
5720{"t", X(31,4), X_MASK, PWRCOM, 0, {TO, RA, RB}},
5721
5722{"lvsl", X(31,6), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
5723{"lvebx", X(31,7), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
5724{"lbfcmx", APU(31,7,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
5725
5726{"subfc", XO(31,8,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5727{"sf", XO(31,8,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
5728{"subc", XO(31,8,0,0), XO_MASK, PPCCOM, 0, {RT, RB, RA}},
5729{"subfc.", XO(31,8,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5730{"sf.", XO(31,8,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
5731{"subc.", XO(31,8,0,1), XO_MASK, PPCCOM, 0, {RT, RB, RA}},
5732
5733{"mulhdu", XO(31,9,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
5734{"mulhdu.", XO(31,9,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
5735
5736{"addc", XO(31,10,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5737{"a", XO(31,10,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
5738{"addc.", XO(31,10,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5739{"a.", XO(31,10,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
5740
5741{"mulhwu", XO(31,11,0,0), XO_MASK, PPC, 0, {RT, RA, RB}},
5742{"mulhwu.", XO(31,11,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
5743
5744{"lxsiwzx", X(31,12), XX1_MASK, PPCVSX2, 0, {XT6, RA0, RB}},
5745
5746{"isellt", X(31,15), X_MASK, PPCISEL, 0, {RT, RA0, RB}},
5747
5748{"tlbilxlpid", XTO(31,18,0), XTO_MASK, E500MC|PPCA2, 0, {0}},
5749{"tlbilxpid", XTO(31,18,1), XTO_MASK, E500MC|PPCA2, 0, {0}},
5750{"tlbilxva", XTO(31,18,3), XTO_MASK, E500MC|PPCA2, 0, {RA0, RB}},
5751{"tlbilx", X(31,18), X_MASK, E500MC|PPCA2, 0, {T, RA0, RB}},
5752
5753{"mfcr", XFXM(31,19,0,0), XFXFXM_MASK, COM, 0, {RT, FXM4}},
5754{"mfocrf", XFXM(31,19,0,1), XFXFXM_MASK, COM, 0, {RT, FXM}},
5755
5756{"lwarx", X(31,20), XEH_MASK, PPC, 0, {RT, RA0, RB, EH}},
5757
5758{"ldx", X(31,21), X_MASK, PPC64, 0, {RT, RA0, RB}},
5759
5760{"icbt", X(31,22), X_MASK, BOOKE|PPCE300|PPCA2|PPC476, 0, {CT, RA0, RB}},
5761
5762{"lwzx", X(31,23), X_MASK, PPCCOM, 0, {RT, RA0, RB}},
5763{"lx", X(31,23), X_MASK, PWRCOM, 0, {RT, RA, RB}},
5764
5765{"slw", XRC(31,24,0), X_MASK, PPCCOM, 0, {RA, RS, RB}},
5766{"sl", XRC(31,24,0), X_MASK, PWRCOM, 0, {RA, RS, RB}},
5767{"slw.", XRC(31,24,1), X_MASK, PPCCOM, 0, {RA, RS, RB}},
5768{"sl.", XRC(31,24,1), X_MASK, PWRCOM, 0, {RA, RS, RB}},
5769
5770{"cntlzw", XRC(31,26,0), XRB_MASK, PPCCOM, 0, {RA, RS}},
5771{"cntlz", XRC(31,26,0), XRB_MASK, PWRCOM, 0, {RA, RS}},
5772{"cntlzw.", XRC(31,26,1), XRB_MASK, PPCCOM, 0, {RA, RS}},
5773{"cntlz.", XRC(31,26,1), XRB_MASK, PWRCOM, 0, {RA, RS}},
5774
5775{"sld", XRC(31,27,0), X_MASK, PPC64, 0, {RA, RS, RB}},
5776{"sld.", XRC(31,27,1), X_MASK, PPC64, 0, {RA, RS, RB}},
5777
5778{"and", XRC(31,28,0), X_MASK, COM, 0, {RA, RS, RB}},
5779{"and.", XRC(31,28,1), X_MASK, COM, 0, {RA, RS, RB}},
5780
5781{"maskg", XRC(31,29,0), X_MASK, M601, PPCA2, {RA, RS, RB}},
5782{"maskg.", XRC(31,29,1), X_MASK, M601, PPCA2, {RA, RS, RB}},
5783
5784{"ldepx", X(31,29), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
5785
5786{"waitasec", X(31,30), XRTRARB_MASK, POWER8, POWER9, {0}},
5787{"wait", X(31,30), XWC_MASK, POWER9, 0, {WC}},
5788
5789{"lwepx", X(31,31), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
5790
5791{"cmplw", XOPL(31,32,0), XCMPL_MASK, PPCCOM, 0, {OBF, RA, RB}},
5792{"cmpld", XOPL(31,32,1), XCMPL_MASK, PPC64, 0, {OBF, RA, RB}},
a5721ba2 5793{"cmpl", X(31,32), XCMP_MASK, PPC, 0, {BF, L32OPT, RA, RB}},
bdc70b4a 5794{"cmpl", X(31,32), XCMPL_MASK, PWRCOM, PPC, {BF, RA, RB}},
de866fcc 5795
14b57c7c
AM
5796{"lvsr", X(31,38), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
5797{"lvehx", X(31,39), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
5798{"lhfcmx", APU(31,39,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
de866fcc 5799
ac8f0f72 5800{"mviwsplt", X(31,46), X_MASK, E6500, 0, {VD, RA, RB}},
e67ed0e8 5801
14b57c7c 5802{"iselgt", X(31,47), X_MASK, PPCISEL, 0, {RT, RA0, RB}},
de866fcc 5803
14b57c7c 5804{"lvewx", X(31,71), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
de866fcc 5805
14b57c7c 5806{"addg6s", XO(31,74,0,0), XO_MASK, POWER6, 0, {RT, RA, RB}},
066be9f7 5807
14b57c7c 5808{"lxsiwax", X(31,76), XX1_MASK, PPCVSX2, 0, {XT6, RA0, RB}},
c0637f3a 5809
14b57c7c 5810{"iseleq", X(31,79), X_MASK, PPCISEL, 0, {RT, RA0, RB}},
de866fcc 5811
14b57c7c 5812{"isel", XISEL(31,15), XISEL_MASK, PPCISEL|TITAN, 0, {RT, RA0, RB, CRB}},
de866fcc 5813
14b57c7c
AM
5814{"subf", XO(31,40,0,0), XO_MASK, PPC, 0, {RT, RA, RB}},
5815{"sub", XO(31,40,0,0), XO_MASK, PPC, 0, {RT, RB, RA}},
5816{"subf.", XO(31,40,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
5817{"sub.", XO(31,40,0,1), XO_MASK, PPC, 0, {RT, RB, RA}},
de866fcc 5818
14b57c7c
AM
5819{"mfvsrd", X(31,51), XX1RB_MASK, PPCVSX2, 0, {RA, XS6}},
5820{"mffprd", X(31,51), XX1RB_MASK|1, PPCVSX2, 0, {RA, FRS}},
5821{"mfvrd", X(31,51)|1, XX1RB_MASK|1, PPCVSX2, 0, {RA, VS}},
5822{"eratilx", X(31,51), X_MASK, PPCA2, 0, {ERAT_T, RA, RB}},
e0d602ec 5823
14b57c7c 5824{"lbarx", X(31,52), XEH_MASK, POWER8|E6500, 0, {RT, RA0, RB, EH}},
066be9f7 5825
14b57c7c 5826{"ldux", X(31,53), X_MASK, PPC64, 0, {RT, RAL, RB}},
43e65147 5827
14b57c7c 5828{"dcbst", X(31,54), XRT_MASK, PPC, 0, {RA0, RB}},
43e65147 5829
14b57c7c
AM
5830{"lwzux", X(31,55), X_MASK, PPCCOM, 0, {RT, RAL, RB}},
5831{"lux", X(31,55), X_MASK, PWRCOM, 0, {RT, RA, RB}},
de866fcc 5832
14b57c7c
AM
5833{"cntlzd", XRC(31,58,0), XRB_MASK, PPC64, 0, {RA, RS}},
5834{"cntlzd.", XRC(31,58,1), XRB_MASK, PPC64, 0, {RA, RS}},
de866fcc 5835
14b57c7c
AM
5836{"andc", XRC(31,60,0), X_MASK, COM, 0, {RA, RS, RB}},
5837{"andc.", XRC(31,60,1), X_MASK, COM, 0, {RA, RS, RB}},
de866fcc 5838
14b57c7c
AM
5839{"waitrsv", X(31,62)|(1<<21), 0xffffffff, E500MC|PPCA2, 0, {0}},
5840{"waitimpl", X(31,62)|(2<<21), 0xffffffff, E500MC|PPCA2, 0, {0}},
5841{"wait", X(31,62), XWC_MASK, E500MC|PPCA2, 0, {WC}},
43e65147 5842
14b57c7c 5843{"dcbstep", XRT(31,63,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}},
19a6653c 5844
14b57c7c
AM
5845{"tdlgt", XTO(31,68,TOLGT), XTO_MASK, PPC64, 0, {RA, RB}},
5846{"tdllt", XTO(31,68,TOLLT), XTO_MASK, PPC64, 0, {RA, RB}},
5847{"tdeq", XTO(31,68,TOEQ), XTO_MASK, PPC64, 0, {RA, RB}},
5848{"tdlge", XTO(31,68,TOLGE), XTO_MASK, PPC64, 0, {RA, RB}},
5849{"tdlnl", XTO(31,68,TOLNL), XTO_MASK, PPC64, 0, {RA, RB}},
5850{"tdlle", XTO(31,68,TOLLE), XTO_MASK, PPC64, 0, {RA, RB}},
5851{"tdlng", XTO(31,68,TOLNG), XTO_MASK, PPC64, 0, {RA, RB}},
5852{"tdgt", XTO(31,68,TOGT), XTO_MASK, PPC64, 0, {RA, RB}},
5853{"tdge", XTO(31,68,TOGE), XTO_MASK, PPC64, 0, {RA, RB}},
5854{"tdnl", XTO(31,68,TONL), XTO_MASK, PPC64, 0, {RA, RB}},
5855{"tdlt", XTO(31,68,TOLT), XTO_MASK, PPC64, 0, {RA, RB}},
5856{"tdle", XTO(31,68,TOLE), XTO_MASK, PPC64, 0, {RA, RB}},
5857{"tdng", XTO(31,68,TONG), XTO_MASK, PPC64, 0, {RA, RB}},
5858{"tdne", XTO(31,68,TONE), XTO_MASK, PPC64, 0, {RA, RB}},
5859{"tdu", XTO(31,68,TOU), XTO_MASK, PPC64, 0, {RA, RB}},
5860{"td", X(31,68), X_MASK, PPC64, 0, {TO, RA, RB}},
de866fcc 5861
14b57c7c
AM
5862{"lwfcmx", APU(31,71,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
5863{"mulhd", XO(31,73,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
5864{"mulhd.", XO(31,73,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
43e65147 5865
14b57c7c
AM
5866{"mulhw", XO(31,75,0,0), XO_MASK, PPC, 0, {RT, RA, RB}},
5867{"mulhw.", XO(31,75,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
de866fcc 5868
62adc510
AM
5869{"dlmzb", XRC(31,78,0), X_MASK, PPC403|PPC440|PPC476|TITAN, 0, {RA, RS, RB}},
5870{"dlmzb.", XRC(31,78,1), X_MASK, PPC403|PPC440|PPC476|TITAN, 0, {RA, RS, RB}},
de866fcc 5871
14b57c7c 5872{"mtsrd", X(31,82), XRB_MASK|(1<<20), PPC64, 0, {SR, RS}},
de866fcc 5873
14b57c7c 5874{"mfmsr", X(31,83), XRARB_MASK, COM, 0, {RT}},
43e65147 5875
14b57c7c 5876{"ldarx", X(31,84), XEH_MASK, PPC64, 0, {RT, RA0, RB, EH}},
de866fcc 5877
c7a8dbf9 5878{"dcbfl", XOPL(31,86,1), XRT_MASK, POWER5, PPC476, {RA0, RB}},
a5721ba2 5879{"dcbf", X(31,86), XLRT_MASK, PPC, 0, {RA0, RB, L2OPT}},
de866fcc 5880
14b57c7c 5881{"lbzx", X(31,87), X_MASK, COM, 0, {RT, RA0, RB}},
43e65147 5882
14b57c7c 5883{"lbepx", X(31,95), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
de866fcc 5884
14b57c7c 5885{"dni", XRC(31,97,1), XRB_MASK, E6500, 0, {DUI, DCTL}},
aea77599 5886
14b57c7c
AM
5887{"lvx", X(31,103), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
5888{"lqfcmx", APU(31,103,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
de866fcc 5889
14b57c7c
AM
5890{"neg", XO(31,104,0,0), XORB_MASK, COM, 0, {RT, RA}},
5891{"neg.", XO(31,104,0,1), XORB_MASK, COM, 0, {RT, RA}},
de866fcc 5892
14b57c7c
AM
5893{"mul", XO(31,107,0,0), XO_MASK, M601, 0, {RT, RA, RB}},
5894{"mul.", XO(31,107,0,1), XO_MASK, M601, 0, {RT, RA, RB}},
de866fcc 5895
ac8f0f72 5896{"mvidsplt", X(31,110), X_MASK, E6500, 0, {VD, RA, RB}},
aea77599 5897
14b57c7c 5898{"mtsrdin", X(31,114), XRA_MASK, PPC64, 0, {RS, RB}},
de866fcc 5899
14b57c7c
AM
5900{"mffprwz", X(31,115), XX1RB_MASK|1, PPCVSX2, 0, {RA, FRS}},
5901{"mfvrwz", X(31,115)|1, XX1RB_MASK|1, PPCVSX2, 0, {RA, VS}},
5902{"mfvsrwz", X(31,115), XX1RB_MASK, PPCVSX2, 0, {RA, XS6}},
c0637f3a 5903
14b57c7c 5904{"lharx", X(31,116), XEH_MASK, POWER8|E6500, 0, {RT, RA0, RB, EH}},
066be9f7 5905
14b57c7c 5906{"clf", X(31,118), XTO_MASK, POWER, 0, {RA, RB}},
de866fcc 5907
14b57c7c 5908{"lbzux", X(31,119), X_MASK, COM, 0, {RT, RAL, RB}},
43e65147 5909
14b57c7c 5910{"popcntb", X(31,122), XRB_MASK, POWER5, 0, {RA, RS}},
de866fcc 5911
98553ad3 5912{"not", XRC(31,124,0), X_MASK, COM, 0, {RA, RSB}},
14b57c7c 5913{"nor", XRC(31,124,0), X_MASK, COM, 0, {RA, RS, RB}},
98553ad3 5914{"not.", XRC(31,124,1), X_MASK, COM, 0, {RA, RSB}},
14b57c7c 5915{"nor.", XRC(31,124,1), X_MASK, COM, 0, {RA, RS, RB}},
19a6653c 5916
14b57c7c 5917{"dcbfep", XRT(31,127,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}},
43e65147 5918
fd486b63 5919{"setb", X(31,128), XRB_MASK|(3<<16), POWER9, 0, {RT, BFA}},
a680de9a 5920
14b57c7c 5921{"wrtee", X(31,131), XRARB_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RS}},
43e65147 5922
14b57c7c 5923{"dcbtstls", X(31,134), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
de866fcc 5924
14b57c7c
AM
5925{"stvebx", X(31,135), X_MASK, PPCVEC, 0, {VS, RA0, RB}},
5926{"stbfcmx", APU(31,135,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
de866fcc 5927
14b57c7c
AM
5928{"subfe", XO(31,136,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5929{"sfe", XO(31,136,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
5930{"subfe.", XO(31,136,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5931{"sfe.", XO(31,136,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
de866fcc 5932
14b57c7c
AM
5933{"adde", XO(31,138,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5934{"ae", XO(31,138,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
5935{"adde.", XO(31,138,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5936{"ae.", XO(31,138,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
de866fcc 5937
14b57c7c 5938{"stxsiwx", X(31,140), XX1_MASK, PPCVSX2, 0, {XS6, RA0, RB}},
c0637f3a 5939
14b57c7c
AM
5940{"msgsndp", XRTRA(31,142,0,0), XRTRA_MASK, POWER8, 0, {RB}},
5941{"dcbtstlse", X(31,142), X_MASK, PPCCHLK, E500MC, {CT, RA0, RB}},
de866fcc 5942
14b57c7c
AM
5943{"mtcr", XFXM(31,144,0xff,0), XRARB_MASK, COM, 0, {RS}},
5944{"mtcrf", XFXM(31,144,0,0), XFXFXM_MASK, COM, 0, {FXM, RS}},
5945{"mtocrf", XFXM(31,144,0,1), XFXFXM_MASK, COM, 0, {FXM, RS}},
de866fcc 5946
14b57c7c 5947{"mtmsr", X(31,146), XRLARB_MASK, COM, 0, {RS, A_L}},
de866fcc 5948
14b57c7c 5949{"mtsle", X(31,147), XRTLRARB_MASK, POWER8, 0, {L}},
c0637f3a 5950
14b57c7c
AM
5951{"eratsx", XRC(31,147,0), X_MASK, PPCA2, 0, {RT, RA0, RB}},
5952{"eratsx.", XRC(31,147,1), X_MASK, PPCA2, 0, {RT, RA0, RB}},
e0d602ec 5953
14b57c7c 5954{"stdx", X(31,149), X_MASK, PPC64, 0, {RS, RA0, RB}},
43e65147 5955
14b57c7c 5956{"stwcx.", XRC(31,150,1), X_MASK, PPC, 0, {RS, RA0, RB}},
43e65147 5957
14b57c7c
AM
5958{"stwx", X(31,151), X_MASK, PPCCOM, 0, {RS, RA0, RB}},
5959{"stx", X(31,151), X_MASK, PWRCOM, 0, {RS, RA, RB}},
de866fcc 5960
14b57c7c
AM
5961{"slq", XRC(31,152,0), X_MASK, M601, 0, {RA, RS, RB}},
5962{"slq.", XRC(31,152,1), X_MASK, M601, 0, {RA, RS, RB}},
de866fcc 5963
14b57c7c
AM
5964{"sle", XRC(31,153,0), X_MASK, M601, 0, {RA, RS, RB}},
5965{"sle.", XRC(31,153,1), X_MASK, M601, 0, {RA, RS, RB}},
de866fcc 5966
14b57c7c 5967{"prtyw", X(31,154), XRB_MASK, POWER6|PPCA2|PPC476, 0, {RA, RS}},
de866fcc 5968
3ff0a5ba
PB
5969{"brw", X(31,155), XRB_MASK, POWER10, 0, {RA, RS}},
5970
14b57c7c 5971{"stdepx", X(31,157), X_MASK, E500MC|PPCA2, 0, {RS, RA0, RB}},
43e65147 5972
14b57c7c 5973{"stwepx", X(31,159), X_MASK, E500MC|PPCA2, 0, {RS, RA0, RB}},
43e65147 5974
14b57c7c 5975{"wrteei", X(31,163), XE_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {E}},
43e65147 5976
14b57c7c 5977{"dcbtls", X(31,166), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
de866fcc 5978
14b57c7c
AM
5979{"stvehx", X(31,167), X_MASK, PPCVEC, 0, {VS, RA0, RB}},
5980{"sthfcmx", APU(31,167,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
de866fcc 5981
14b57c7c 5982{"addex", ZRC(31,170,0), Z2_MASK, POWER9, 0, {RT, RA, RB, CY}},
19dfcc89 5983
14b57c7c
AM
5984{"msgclrp", XRTRA(31,174,0,0), XRTRA_MASK, POWER8, 0, {RB}},
5985{"dcbtlse", X(31,174), X_MASK, PPCCHLK, E500MC, {CT, RA0, RB}},
de866fcc 5986
14b57c7c 5987{"mtmsrd", X(31,178), XRLARB_MASK, PPC64, 0, {RS, A_L}},
de866fcc 5988
14b57c7c
AM
5989{"mtvsrd", X(31,179), XX1RB_MASK, PPCVSX2, 0, {XT6, RA}},
5990{"mtfprd", X(31,179), XX1RB_MASK|1, PPCVSX2, 0, {FRT, RA}},
5991{"mtvrd", X(31,179)|1, XX1RB_MASK|1, PPCVSX2, 0, {VD, RA}},
5992{"eratre", X(31,179), X_MASK, PPCA2, 0, {RT, RA, WS}},
e0d602ec 5993
14b57c7c 5994{"stdux", X(31,181), X_MASK, PPC64, 0, {RS, RAS, RB}},
de866fcc 5995
73f07bff 5996{"stqcx.", XRC(31,182,1), X_MASK|Q_MASK, POWER8, 0, {RSQ, RA0, RB}},
14b57c7c 5997{"wchkall", X(31,182), X_MASK, PPCA2, 0, {OBF}},
e0d602ec 5998
14b57c7c
AM
5999{"stwux", X(31,183), X_MASK, PPCCOM, 0, {RS, RAS, RB}},
6000{"stux", X(31,183), X_MASK, PWRCOM, 0, {RS, RA0, RB}},
de866fcc 6001
14b57c7c
AM
6002{"sliq", XRC(31,184,0), X_MASK, M601, 0, {RA, RS, SH}},
6003{"sliq.", XRC(31,184,1), X_MASK, M601, 0, {RA, RS, SH}},
de866fcc 6004
14b57c7c 6005{"prtyd", X(31,186), XRB_MASK, POWER6|PPCA2, 0, {RA, RS}},
252b5132 6006
3ff0a5ba
PB
6007{"brd", X(31,187), XRB_MASK, POWER10, 0, {RA, RS}},
6008
14b57c7c 6009{"cmprb", X(31,192), XCMP_MASK, POWER9, 0, {BF, L, RA, RB}},
a680de9a 6010
14b57c7c 6011{"icblq.", XRC(31,198,1), X_MASK, E6500, 0, {CT, RA0, RB}},
aea77599 6012
14b57c7c
AM
6013{"stvewx", X(31,199), X_MASK, PPCVEC, 0, {VS, RA0, RB}},
6014{"stwfcmx", APU(31,199,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
252b5132 6015
14b57c7c
AM
6016{"subfze", XO(31,200,0,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
6017{"sfze", XO(31,200,0,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
6018{"subfze.", XO(31,200,0,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
6019{"sfze.", XO(31,200,0,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
252b5132 6020
14b57c7c
AM
6021{"addze", XO(31,202,0,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
6022{"aze", XO(31,202,0,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
6023{"addze.", XO(31,202,0,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
6024{"aze.", XO(31,202,0,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
418c1742 6025
14b57c7c 6026{"msgsnd", XRTRA(31,206,0,0), XRTRA_MASK, E500MC|PPCA2|POWER8, 0, {RB}},
19a6653c 6027
14b57c7c 6028{"mtsr", X(31,210), XRB_MASK|(1<<20), COM, NON32, {SR, RS}},
418c1742 6029
14b57c7c
AM
6030{"mtfprwa", X(31,211), XX1RB_MASK|1, PPCVSX2, 0, {FRT, RA}},
6031{"mtvrwa", X(31,211)|1, XX1RB_MASK|1, PPCVSX2, 0, {VD, RA}},
6032{"mtvsrwa", X(31,211), XX1RB_MASK, PPCVSX2, 0, {XT6, RA}},
6033{"eratwe", X(31,211), X_MASK, PPCA2, 0, {RS, RA, WS}},
e0d602ec 6034
14b57c7c 6035{"ldawx.", XRC(31,212,1), X_MASK, PPCA2, 0, {RT, RA0, RB}},
e0d602ec 6036
14b57c7c 6037{"stdcx.", XRC(31,214,1), X_MASK, PPC64, 0, {RS, RA0, RB}},
43e65147 6038
14b57c7c 6039{"stbx", X(31,215), X_MASK, COM, 0, {RS, RA0, RB}},
252b5132 6040
14b57c7c
AM
6041{"sllq", XRC(31,216,0), X_MASK, M601, 0, {RA, RS, RB}},
6042{"sllq.", XRC(31,216,1), X_MASK, M601, 0, {RA, RS, RB}},
252b5132 6043
14b57c7c
AM
6044{"sleq", XRC(31,217,0), X_MASK, M601, 0, {RA, RS, RB}},
6045{"sleq.", XRC(31,217,1), X_MASK, M601, 0, {RA, RS, RB}},
252b5132 6046
3ff0a5ba
PB
6047{"brh", X(31,219), XRB_MASK, POWER10, 0, {RA, RS}},
6048
14b57c7c 6049{"stbepx", X(31,223), X_MASK, E500MC|PPCA2, 0, {RS, RA0, RB}},
43e65147 6050
14b57c7c 6051{"cmpeqb", X(31,224), XCMPL_MASK, POWER9, 0, {BF, RA, RB}},
a680de9a 6052
14b57c7c 6053{"icblc", X(31,230), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
7d5b217e 6054
14b57c7c
AM
6055{"stvx", X(31,231), X_MASK, PPCVEC, 0, {VS, RA0, RB}},
6056{"stqfcmx", APU(31,231,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
f509565f 6057
14b57c7c
AM
6058{"subfme", XO(31,232,0,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
6059{"sfme", XO(31,232,0,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
6060{"subfme.", XO(31,232,0,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
6061{"sfme.", XO(31,232,0,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
252b5132 6062
14b57c7c
AM
6063{"mulld", XO(31,233,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
6064{"mulld.", XO(31,233,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
43e65147 6065
14b57c7c
AM
6066{"addme", XO(31,234,0,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
6067{"ame", XO(31,234,0,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
6068{"addme.", XO(31,234,0,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
6069{"ame.", XO(31,234,0,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
252b5132 6070
14b57c7c
AM
6071{"mullw", XO(31,235,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6072{"muls", XO(31,235,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6073{"mullw.", XO(31,235,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6074{"muls.", XO(31,235,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
252b5132 6075
14b57c7c
AM
6076{"icblce", X(31,238), X_MASK, PPCCHLK, E500MC|PPCA2, {CT, RA, RB}},
6077{"msgclr", XRTRA(31,238,0,0), XRTRA_MASK, E500MC|PPCA2|POWER8, 0, {RB}},
6078{"mtsrin", X(31,242), XRA_MASK, PPC, NON32, {RS, RB}},
bdc70b4a 6079{"mtsri", X(31,242), XRA_MASK, POWER, NON32, {RS, RB}},
418c1742 6080
14b57c7c
AM
6081{"mtfprwz", X(31,243), XX1RB_MASK|1, PPCVSX2, 0, {FRT, RA}},
6082{"mtvrwz", X(31,243)|1, XX1RB_MASK|1, PPCVSX2, 0, {VD, RA}},
6083{"mtvsrwz", X(31,243), XX1RB_MASK, PPCVSX2, 0, {XT6, RA}},
c0637f3a 6084
14b57c7c
AM
6085{"dcbtstt", XRT(31,246,0x10), XRT_MASK, POWER7, 0, {RA0, RB}},
6086{"dcbtst", X(31,246), X_MASK, POWER4, DCBT_EO, {RA0, RB, CT}},
6087{"dcbtst", X(31,246), X_MASK, DCBT_EO, 0, {CT, RA0, RB}},
6088{"dcbtst", X(31,246), X_MASK, PPC, POWER4|DCBT_EO, {RA0, RB}},
4fff86c5 6089
14b57c7c 6090{"stbux", X(31,247), X_MASK, COM, 0, {RS, RAS, RB}},
252b5132 6091
14b57c7c
AM
6092{"slliq", XRC(31,248,0), X_MASK, M601, 0, {RA, RS, SH}},
6093{"slliq.", XRC(31,248,1), X_MASK, M601, 0, {RA, RS, SH}},
252b5132 6094
14b57c7c 6095{"bpermd", X(31,252), X_MASK, POWER7|PPCA2, 0, {RA, RS, RB}},
066be9f7 6096
14b57c7c 6097{"dcbtstep", XRT(31,255,0), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
19a6653c 6098
14b57c7c
AM
6099{"mfdcrx", X(31,259), X_MASK, BOOKE|PPCA2|PPC476, TITAN, {RS, RA}},
6100{"mfdcrx.", XRC(31,259,1), X_MASK, PPCA2, 0, {RS, RA}},
252b5132 6101
ac8f0f72 6102{"lvexbx", X(31,261), X_MASK, E6500, 0, {VD, RA0, RB}},
aea77599 6103
14b57c7c 6104{"icbt", X(31,262), XRT_MASK, PPC403, 0, {RA, RB}},
1ed8e1e4 6105
ac8f0f72 6106{"lvepxl", X(31,263), X_MASK, E6500, 0, {VD, RA0, RB}},
aea77599 6107
14b57c7c
AM
6108{"ldfcmx", APU(31,263,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
6109{"doz", XO(31,264,0,0), XO_MASK, M601, 0, {RT, RA, RB}},
6110{"doz.", XO(31,264,0,1), XO_MASK, M601, 0, {RT, RA, RB}},
252b5132 6111
14b57c7c 6112{"modud", X(31,265), X_MASK, POWER9, 0, {RT, RA, RB}},
a680de9a 6113
14b57c7c
AM
6114{"add", XO(31,266,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6115{"cax", XO(31,266,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6116{"add.", XO(31,266,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6117{"cax.", XO(31,266,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
418c1742 6118
14b57c7c 6119{"moduw", X(31,267), X_MASK, POWER9, 0, {RT, RA, RB}},
a680de9a 6120
14b57c7c
AM
6121{"lxvx", X(31,268), XX1_MASK|1<<6, PPCVSX3, 0, {XT6, RA0, RB}},
6122{"lxvl", X(31,269), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
a680de9a 6123
14b57c7c 6124{"ehpriv", X(31,270), 0xffffffff, E500MC|PPCA2, 0, {0}},
19a6653c 6125
62adc510 6126{"tlbiel", X(31,274), X_MASK|1<<20,POWER9, 0, {RB, RSO, RIC, PRS, X_R}},
a5721ba2 6127{"tlbiel", X(31,274), XRTLRA_MASK, POWER4, POWER9|PPC476, {RB, LOPT}},
418c1742 6128
14b57c7c 6129{"mfapidi", X(31,275), X_MASK, BOOKE, E500|TITAN, {RT, RA}},
1cb0a767 6130
73f07bff 6131{"lqarx", X(31,276), XEH_MASK|Q_MASK, POWER8, 0, {RTQ, RAX, RBX, EH}},
c0637f3a 6132
14b57c7c
AM
6133{"lscbx", XRC(31,277,0), X_MASK, M601, 0, {RT, RA, RB}},
6134{"lscbx.", XRC(31,277,1), X_MASK, M601, 0, {RT, RA, RB}},
1cb0a767 6135
14b57c7c
AM
6136{"dcbtt", XRT(31,278,0x10), XRT_MASK, POWER7, 0, {RA0, RB}},
6137{"dcbt", X(31,278), X_MASK, POWER4, DCBT_EO, {RA0, RB, CT}},
6138{"dcbt", X(31,278), X_MASK, DCBT_EO, 0, {CT, RA0, RB}},
6139{"dcbt", X(31,278), X_MASK, PPC, POWER4|DCBT_EO, {RA0, RB}},
4fff86c5 6140
14b57c7c 6141{"lhzx", X(31,279), X_MASK, COM, 0, {RT, RA0, RB}},
1cb0a767 6142
14b57c7c 6143{"cdtbcd", X(31,282), XRB_MASK, POWER6, 0, {RA, RS}},
066be9f7 6144
14b57c7c
AM
6145{"eqv", XRC(31,284,0), X_MASK, COM, 0, {RA, RS, RB}},
6146{"eqv.", XRC(31,284,1), X_MASK, COM, 0, {RA, RS, RB}},
1cb0a767 6147
14b57c7c 6148{"lhepx", X(31,287), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
1cb0a767 6149
62adc510 6150{"mfdcrux", X(31,291), X_MASK, PPC464|PPC476, 0, {RS, RA}},
1cb0a767 6151
ac8f0f72
AM
6152{"lvexhx", X(31,293), X_MASK, E6500, 0, {VD, RA0, RB}},
6153{"lvepx", X(31,295), X_MASK, E6500, 0, {VD, RA0, RB}},
aea77599 6154
14b57c7c 6155{"lxvll", X(31,301), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
a680de9a 6156
14b57c7c 6157{"mfbhrbe", X(31,302), X_MASK, POWER8, 0, {RT, BHRBE}},
c0637f3a 6158
14b57c7c
AM
6159{"tlbie", X(31,306), X_MASK|1<<20,POWER9, TITAN, {RB, RS, RIC, PRS, X_R}},
6160{"tlbie", X(31,306), XRA_MASK, POWER7, POWER9|TITAN, {RB, RS}},
a5721ba2 6161{"tlbie", X(31,306), XRTLRA_MASK, PPC, E500|POWER7|TITAN, {RB, LOPT}},
14b57c7c 6162{"tlbi", X(31,306), XRT_MASK, POWER, 0, {RA0, RB}},
1cb0a767 6163
14b57c7c 6164{"mfvsrld", X(31,307), XX1RB_MASK, PPCVSX3, 0, {RA, XS6}},
a680de9a 6165
14b57c7c 6166{"eciwx", X(31,310), X_MASK, PPC, E500|TITAN, {RT, RA0, RB}},
1cb0a767 6167
14b57c7c 6168{"lhzux", X(31,311), X_MASK, COM, 0, {RT, RAL, RB}},
1cb0a767 6169
14b57c7c 6170{"cbcdtd", X(31,314), XRB_MASK, POWER6, 0, {RA, RS}},
066be9f7 6171
14b57c7c
AM
6172{"xor", XRC(31,316,0), X_MASK, COM, 0, {RA, RS, RB}},
6173{"xor.", XRC(31,316,1), X_MASK, COM, 0, {RA, RS, RB}},
1cb0a767 6174
14b57c7c 6175{"dcbtep", XRT(31,319,0), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
1cb0a767 6176
14b57c7c
AM
6177{"mfexisr", XSPR(31,323, 64), XSPR_MASK, PPC403, 0, {RT}},
6178{"mfexier", XSPR(31,323, 66), XSPR_MASK, PPC403, 0, {RT}},
6179{"mfbr0", XSPR(31,323,128), XSPR_MASK, PPC403, 0, {RT}},
6180{"mfbr1", XSPR(31,323,129), XSPR_MASK, PPC403, 0, {RT}},
6181{"mfbr2", XSPR(31,323,130), XSPR_MASK, PPC403, 0, {RT}},
6182{"mfbr3", XSPR(31,323,131), XSPR_MASK, PPC403, 0, {RT}},
6183{"mfbr4", XSPR(31,323,132), XSPR_MASK, PPC403, 0, {RT}},
6184{"mfbr5", XSPR(31,323,133), XSPR_MASK, PPC403, 0, {RT}},
6185{"mfbr6", XSPR(31,323,134), XSPR_MASK, PPC403, 0, {RT}},
6186{"mfbr7", XSPR(31,323,135), XSPR_MASK, PPC403, 0, {RT}},
6187{"mfbear", XSPR(31,323,144), XSPR_MASK, PPC403, 0, {RT}},
6188{"mfbesr", XSPR(31,323,145), XSPR_MASK, PPC403, 0, {RT}},
6189{"mfiocr", XSPR(31,323,160), XSPR_MASK, PPC403, 0, {RT}},
6190{"mfdmacr0", XSPR(31,323,192), XSPR_MASK, PPC403, 0, {RT}},
6191{"mfdmact0", XSPR(31,323,193), XSPR_MASK, PPC403, 0, {RT}},
6192{"mfdmada0", XSPR(31,323,194), XSPR_MASK, PPC403, 0, {RT}},
6193{"mfdmasa0", XSPR(31,323,195), XSPR_MASK, PPC403, 0, {RT}},
6194{"mfdmacc0", XSPR(31,323,196), XSPR_MASK, PPC403, 0, {RT}},
6195{"mfdmacr1", XSPR(31,323,200), XSPR_MASK, PPC403, 0, {RT}},
6196{"mfdmact1", XSPR(31,323,201), XSPR_MASK, PPC403, 0, {RT}},
6197{"mfdmada1", XSPR(31,323,202), XSPR_MASK, PPC403, 0, {RT}},
6198{"mfdmasa1", XSPR(31,323,203), XSPR_MASK, PPC403, 0, {RT}},
6199{"mfdmacc1", XSPR(31,323,204), XSPR_MASK, PPC403, 0, {RT}},
6200{"mfdmacr2", XSPR(31,323,208), XSPR_MASK, PPC403, 0, {RT}},
6201{"mfdmact2", XSPR(31,323,209), XSPR_MASK, PPC403, 0, {RT}},
6202{"mfdmada2", XSPR(31,323,210), XSPR_MASK, PPC403, 0, {RT}},
6203{"mfdmasa2", XSPR(31,323,211), XSPR_MASK, PPC403, 0, {RT}},
6204{"mfdmacc2", XSPR(31,323,212), XSPR_MASK, PPC403, 0, {RT}},
6205{"mfdmacr3", XSPR(31,323,216), XSPR_MASK, PPC403, 0, {RT}},
6206{"mfdmact3", XSPR(31,323,217), XSPR_MASK, PPC403, 0, {RT}},
6207{"mfdmada3", XSPR(31,323,218), XSPR_MASK, PPC403, 0, {RT}},
6208{"mfdmasa3", XSPR(31,323,219), XSPR_MASK, PPC403, 0, {RT}},
6209{"mfdmacc3", XSPR(31,323,220), XSPR_MASK, PPC403, 0, {RT}},
6210{"mfdmasr", XSPR(31,323,224), XSPR_MASK, PPC403, 0, {RT}},
6211{"mfdcr", X(31,323), X_MASK, PPC403|BOOKE|PPCA2|PPC476, E500|TITAN, {RT, SPR}},
6212{"mfdcr.", XRC(31,323,1), X_MASK, PPCA2, 0, {RT, SPR}},
1cb0a767 6213
ac8f0f72 6214{"lvexwx", X(31,325), X_MASK, E6500, 0, {VD, RA0, RB}},
aea77599 6215
14b57c7c 6216{"dcread", X(31,326), X_MASK, PPC476|TITAN, 0, {RT, RA0, RB}},
9fe54b1c 6217
14b57c7c
AM
6218{"div", XO(31,331,0,0), XO_MASK, M601, 0, {RT, RA, RB}},
6219{"div.", XO(31,331,0,1), XO_MASK, M601, 0, {RT, RA, RB}},
1cb0a767 6220
14b57c7c 6221{"lxvdsx", X(31,332), XX1_MASK, PPCVSX, 0, {XT6, RA0, RB}},
066be9f7 6222
94ba9882
AM
6223{"lxvpx", X(31,333), XX1_MASK, POWER10, 0, {XTP, RA0, RB}},
6224
14b57c7c 6225{"mfpmr", X(31,334), X_MASK, PPCPMR|PPCE300, 0, {RT, PMR}},
c03dc33b 6226{"mftmr", X(31,366), X_MASK, PPCTMR, 0, {RT, TMR}},
1cb0a767 6227
14b57c7c
AM
6228{"slbsync", X(31,338), 0xffffffff, POWER9, 0, {0}},
6229
6230{"mfmq", XSPR(31,339, 0), XSPR_MASK, M601, 0, {RT}},
6231{"mfxer", XSPR(31,339, 1), XSPR_MASK, COM, 0, {RT}},
6232{"mfrtcu", XSPR(31,339, 4), XSPR_MASK, COM, TITAN, {RT}},
6233{"mfrtcl", XSPR(31,339, 5), XSPR_MASK, COM, TITAN, {RT}},
6234{"mfdec", XSPR(31,339, 6), XSPR_MASK, MFDEC1, 0, {RT}},
6235{"mflr", XSPR(31,339, 8), XSPR_MASK, COM, 0, {RT}},
6236{"mfctr", XSPR(31,339, 9), XSPR_MASK, COM, 0, {RT}},
6237{"mfdscr", XSPR(31,339, 17), XSPR_MASK, POWER6, 0, {RT}},
6238{"mftid", XSPR(31,339, 17), XSPR_MASK, POWER, 0, {RT}},
6239{"mfdsisr", XSPR(31,339, 18), XSPR_MASK, COM, TITAN, {RT}},
6240{"mfdar", XSPR(31,339, 19), XSPR_MASK, COM, TITAN, {RT}},
bdc70b4a 6241{"mfdec", XSPR(31,339, 22), XSPR_MASK, MFDEC2, MFDEC1, {RT}},
14b57c7c
AM
6242{"mfsdr0", XSPR(31,339, 24), XSPR_MASK, POWER, 0, {RT}},
6243{"mfsdr1", XSPR(31,339, 25), XSPR_MASK, COM, TITAN, {RT}},
6244{"mfsrr0", XSPR(31,339, 26), XSPR_MASK, COM, 0, {RT}},
6245{"mfsrr1", XSPR(31,339, 27), XSPR_MASK, COM, 0, {RT}},
6246{"mfcfar", XSPR(31,339, 28), XSPR_MASK, POWER6, 0, {RT}},
6247{"mfpid", XSPR(31,339, 48), XSPR_MASK, BOOKE, 0, {RT}},
6248{"mfcsrr0", XSPR(31,339, 58), XSPR_MASK, BOOKE, 0, {RT}},
6249{"mfcsrr1", XSPR(31,339, 59), XSPR_MASK, BOOKE, 0, {RT}},
6250{"mfdear", XSPR(31,339, 61), XSPR_MASK, BOOKE, 0, {RT}},
6251{"mfesr", XSPR(31,339, 62), XSPR_MASK, BOOKE, 0, {RT}},
6252{"mfivpr", XSPR(31,339, 63), XSPR_MASK, BOOKE, 0, {RT}},
6253{"mfctrl", XSPR(31,339,136), XSPR_MASK, POWER4, 0, {RT}},
6254{"mfcmpa", XSPR(31,339,144), XSPR_MASK, PPC860, 0, {RT}},
6255{"mfcmpb", XSPR(31,339,145), XSPR_MASK, PPC860, 0, {RT}},
6256{"mfcmpc", XSPR(31,339,146), XSPR_MASK, PPC860, 0, {RT}},
6257{"mfcmpd", XSPR(31,339,147), XSPR_MASK, PPC860, 0, {RT}},
6258{"mficr", XSPR(31,339,148), XSPR_MASK, PPC860, 0, {RT}},
6259{"mfder", XSPR(31,339,149), XSPR_MASK, PPC860, 0, {RT}},
6260{"mfcounta", XSPR(31,339,150), XSPR_MASK, PPC860, 0, {RT}},
6261{"mfcountb", XSPR(31,339,151), XSPR_MASK, PPC860, 0, {RT}},
6262{"mfcmpe", XSPR(31,339,152), XSPR_MASK, PPC860, 0, {RT}},
6263{"mfcmpf", XSPR(31,339,153), XSPR_MASK, PPC860, 0, {RT}},
6264{"mfcmpg", XSPR(31,339,154), XSPR_MASK, PPC860, 0, {RT}},
6265{"mfcmph", XSPR(31,339,155), XSPR_MASK, PPC860, 0, {RT}},
6266{"mflctrl1", XSPR(31,339,156), XSPR_MASK, PPC860, 0, {RT}},
6267{"mflctrl2", XSPR(31,339,157), XSPR_MASK, PPC860, 0, {RT}},
6268{"mfictrl", XSPR(31,339,158), XSPR_MASK, PPC860, 0, {RT}},
6269{"mfbar", XSPR(31,339,159), XSPR_MASK, PPC860, 0, {RT}},
6270{"mfvrsave", XSPR(31,339,256), XSPR_MASK, PPCVEC, 0, {RT}},
6271{"mfusprg0", XSPR(31,339,256), XSPR_MASK, BOOKE, 0, {RT}},
6272{"mfsprg", XSPR(31,339,256), XSPRG_MASK, PPC, 0, {RT, SPRG}},
6273{"mfsprg4", XSPR(31,339,260), XSPR_MASK, PPC405|BOOKE, 0, {RT}},
6274{"mfsprg5", XSPR(31,339,261), XSPR_MASK, PPC405|BOOKE, 0, {RT}},
6275{"mfsprg6", XSPR(31,339,262), XSPR_MASK, PPC405|BOOKE, 0, {RT}},
6276{"mfsprg7", XSPR(31,339,263), XSPR_MASK, PPC405|BOOKE, 0, {RT}},
6277{"mftbu", XSPR(31,339,269), XSPR_MASK, POWER4|BOOKE, 0, {RT}},
6278{"mftb", X(31,339), X_MASK, POWER4|BOOKE, 0, {RT, TBR}},
6279{"mftbl", XSPR(31,339,268), XSPR_MASK, POWER4|BOOKE, 0, {RT}},
6280{"mfsprg0", XSPR(31,339,272), XSPR_MASK, PPC, 0, {RT}},
6281{"mfsprg1", XSPR(31,339,273), XSPR_MASK, PPC, 0, {RT}},
6282{"mfsprg2", XSPR(31,339,274), XSPR_MASK, PPC, 0, {RT}},
6283{"mfsprg3", XSPR(31,339,275), XSPR_MASK, PPC, 0, {RT}},
6284{"mfasr", XSPR(31,339,280), XSPR_MASK, PPC64, 0, {RT}},
6285{"mfear", XSPR(31,339,282), XSPR_MASK, PPC, TITAN, {RT}},
6286{"mfpir", XSPR(31,339,286), XSPR_MASK, BOOKE, 0, {RT}},
6287{"mfpvr", XSPR(31,339,287), XSPR_MASK, PPC, 0, {RT}},
6288{"mfdbsr", XSPR(31,339,304), XSPR_MASK, BOOKE, 0, {RT}},
6289{"mfdbcr0", XSPR(31,339,308), XSPR_MASK, BOOKE, 0, {RT}},
6290{"mfdbcr1", XSPR(31,339,309), XSPR_MASK, BOOKE, 0, {RT}},
6291{"mfdbcr2", XSPR(31,339,310), XSPR_MASK, BOOKE, 0, {RT}},
6292{"mfiac1", XSPR(31,339,312), XSPR_MASK, BOOKE, 0, {RT}},
6293{"mfiac2", XSPR(31,339,313), XSPR_MASK, BOOKE, 0, {RT}},
6294{"mfiac3", XSPR(31,339,314), XSPR_MASK, BOOKE, 0, {RT}},
6295{"mfiac4", XSPR(31,339,315), XSPR_MASK, BOOKE, 0, {RT}},
6296{"mfdac1", XSPR(31,339,316), XSPR_MASK, BOOKE, 0, {RT}},
6297{"mfdac2", XSPR(31,339,317), XSPR_MASK, BOOKE, 0, {RT}},
6298{"mfdvc1", XSPR(31,339,318), XSPR_MASK, BOOKE, 0, {RT}},
6299{"mfdvc2", XSPR(31,339,319), XSPR_MASK, BOOKE, 0, {RT}},
6300{"mftsr", XSPR(31,339,336), XSPR_MASK, BOOKE, 0, {RT}},
6301{"mftcr", XSPR(31,339,340), XSPR_MASK, BOOKE, 0, {RT}},
6302{"mfivor0", XSPR(31,339,400), XSPR_MASK, BOOKE, 0, {RT}},
6303{"mfivor1", XSPR(31,339,401), XSPR_MASK, BOOKE, 0, {RT}},
6304{"mfivor2", XSPR(31,339,402), XSPR_MASK, BOOKE, 0, {RT}},
6305{"mfivor3", XSPR(31,339,403), XSPR_MASK, BOOKE, 0, {RT}},
6306{"mfivor4", XSPR(31,339,404), XSPR_MASK, BOOKE, 0, {RT}},
6307{"mfivor5", XSPR(31,339,405), XSPR_MASK, BOOKE, 0, {RT}},
6308{"mfivor6", XSPR(31,339,406), XSPR_MASK, BOOKE, 0, {RT}},
6309{"mfivor7", XSPR(31,339,407), XSPR_MASK, BOOKE, 0, {RT}},
6310{"mfivor8", XSPR(31,339,408), XSPR_MASK, BOOKE, 0, {RT}},
6311{"mfivor9", XSPR(31,339,409), XSPR_MASK, BOOKE, 0, {RT}},
6312{"mfivor10", XSPR(31,339,410), XSPR_MASK, BOOKE, 0, {RT}},
6313{"mfivor11", XSPR(31,339,411), XSPR_MASK, BOOKE, 0, {RT}},
6314{"mfivor12", XSPR(31,339,412), XSPR_MASK, BOOKE, 0, {RT}},
6315{"mfivor13", XSPR(31,339,413), XSPR_MASK, BOOKE, 0, {RT}},
6316{"mfivor14", XSPR(31,339,414), XSPR_MASK, BOOKE, 0, {RT}},
6317{"mfivor15", XSPR(31,339,415), XSPR_MASK, BOOKE, 0, {RT}},
6318{"mfspefscr", XSPR(31,339,512), XSPR_MASK, PPCSPE, 0, {RT}},
6319{"mfbbear", XSPR(31,339,513), XSPR_MASK, PPCBRLK, 0, {RT}},
6320{"mfbbtar", XSPR(31,339,514), XSPR_MASK, PPCBRLK, 0, {RT}},
4b94dd2d
AM
6321{"mfivor32", XSPR(31,339,528), XSPR_MASK, PPCSPE|E6500, 0, {RT}},
6322{"mfivor33", XSPR(31,339,529), XSPR_MASK, PPCSPE|E6500, 0, {RT}},
14b57c7c
AM
6323{"mfivor34", XSPR(31,339,530), XSPR_MASK, PPCSPE, 0, {RT}},
6324{"mfivor35", XSPR(31,339,531), XSPR_MASK, PPCPMR, 0, {RT}},
4b94dd2d
AM
6325{"mfibatu", XSPR(31,339,528), XSPRBAT_MASK, PPC, TITAN, {RT, SPRBAT}},
6326{"mfibatl", XSPR(31,339,529), XSPRBAT_MASK, PPC, TITAN, {RT, SPRBAT}},
14b57c7c
AM
6327{"mfdbatu", XSPR(31,339,536), XSPRBAT_MASK, PPC, TITAN, {RT, SPRBAT}},
6328{"mfdbatl", XSPR(31,339,537), XSPRBAT_MASK, PPC, TITAN, {RT, SPRBAT}},
6329{"mfic_cst", XSPR(31,339,560), XSPR_MASK, PPC860, 0, {RT}},
6330{"mfic_adr", XSPR(31,339,561), XSPR_MASK, PPC860, 0, {RT}},
6331{"mfic_dat", XSPR(31,339,562), XSPR_MASK, PPC860, 0, {RT}},
6332{"mfdc_cst", XSPR(31,339,568), XSPR_MASK, PPC860, 0, {RT}},
6333{"mfdc_adr", XSPR(31,339,569), XSPR_MASK, PPC860, 0, {RT}},
6334{"mfdc_dat", XSPR(31,339,570), XSPR_MASK, PPC860, 0, {RT}},
6335{"mfmcsrr0", XSPR(31,339,570), XSPR_MASK, PPCRFMCI, 0, {RT}},
6336{"mfmcsrr1", XSPR(31,339,571), XSPR_MASK, PPCRFMCI, 0, {RT}},
6337{"mfmcsr", XSPR(31,339,572), XSPR_MASK, PPCRFMCI, 0, {RT}},
6338{"mfmcar", XSPR(31,339,573), XSPR_MASK, PPCRFMCI, TITAN, {RT}},
6339{"mfdpdr", XSPR(31,339,630), XSPR_MASK, PPC860, 0, {RT}},
6340{"mfdpir", XSPR(31,339,631), XSPR_MASK, PPC860, 0, {RT}},
6341{"mfimmr", XSPR(31,339,638), XSPR_MASK, PPC860, 0, {RT}},
bb71536f
AM
6342{"mfupmc1", XSPR(31,339,771), XSPR_MASK, POWER9, 0, {RT}},
6343{"mfpmc1", XSPR(31,339,771), XSPR_MASK, POWER9, 0, {RT}},
6344{"mfupmc2", XSPR(31,339,772), XSPR_MASK, POWER9, 0, {RT}},
6345{"mfpmc2", XSPR(31,339,772), XSPR_MASK, POWER9, 0, {RT}},
6346{"mfupmc3", XSPR(31,339,773), XSPR_MASK, POWER9, 0, {RT}},
6347{"mfpmc3", XSPR(31,339,773), XSPR_MASK, POWER9, 0, {RT}},
6348{"mfupmc4", XSPR(31,339,774), XSPR_MASK, POWER9, 0, {RT}},
6349{"mfpmc4", XSPR(31,339,774), XSPR_MASK, POWER9, 0, {RT}},
6350{"mfupmc5", XSPR(31,339,775), XSPR_MASK, POWER9, 0, {RT}},
6351{"mfpmc5", XSPR(31,339,775), XSPR_MASK, POWER9, 0, {RT}},
6352{"mfupmc6", XSPR(31,339,776), XSPR_MASK, POWER9, 0, {RT}},
6353{"mfpmc6", XSPR(31,339,776), XSPR_MASK, POWER9, 0, {RT}},
14b57c7c
AM
6354{"mfmi_ctr", XSPR(31,339,784), XSPR_MASK, PPC860, 0, {RT}},
6355{"mfmi_ap", XSPR(31,339,786), XSPR_MASK, PPC860, 0, {RT}},
6356{"mfmi_epn", XSPR(31,339,787), XSPR_MASK, PPC860, 0, {RT}},
6357{"mfmi_twc", XSPR(31,339,789), XSPR_MASK, PPC860, 0, {RT}},
6358{"mfmi_rpn", XSPR(31,339,790), XSPR_MASK, PPC860, 0, {RT}},
6359{"mfmd_ctr", XSPR(31,339,792), XSPR_MASK, PPC860, 0, {RT}},
6360{"mfm_casid", XSPR(31,339,793), XSPR_MASK, PPC860, 0, {RT}},
6361{"mfmd_ap", XSPR(31,339,794), XSPR_MASK, PPC860, 0, {RT}},
6362{"mfmd_epn", XSPR(31,339,795), XSPR_MASK, PPC860, 0, {RT}},
6363{"mfmd_twb", XSPR(31,339,796), XSPR_MASK, PPC860, 0, {RT}},
6364{"mfmd_twc", XSPR(31,339,797), XSPR_MASK, PPC860, 0, {RT}},
6365{"mfmd_rpn", XSPR(31,339,798), XSPR_MASK, PPC860, 0, {RT}},
6366{"mfm_tw", XSPR(31,339,799), XSPR_MASK, PPC860, 0, {RT}},
6367{"mfmi_dbcam", XSPR(31,339,816), XSPR_MASK, PPC860, 0, {RT}},
6368{"mfmi_dbram0", XSPR(31,339,817), XSPR_MASK, PPC860, 0, {RT}},
6369{"mfmi_dbram1", XSPR(31,339,818), XSPR_MASK, PPC860, 0, {RT}},
6370{"mfmd_dbcam", XSPR(31,339,824), XSPR_MASK, PPC860, 0, {RT}},
6371{"mfmd_dbram0", XSPR(31,339,825), XSPR_MASK, PPC860, 0, {RT}},
6372{"mfmd_dbram1", XSPR(31,339,826), XSPR_MASK, PPC860, 0, {RT}},
6373{"mfivndx", XSPR(31,339,880), XSPR_MASK, TITAN, 0, {RT}},
6374{"mfdvndx", XSPR(31,339,881), XSPR_MASK, TITAN, 0, {RT}},
6375{"mfivlim", XSPR(31,339,882), XSPR_MASK, TITAN, 0, {RT}},
6376{"mfdvlim", XSPR(31,339,883), XSPR_MASK, TITAN, 0, {RT}},
6377{"mfclcsr", XSPR(31,339,884), XSPR_MASK, TITAN, 0, {RT}},
6378{"mfccr1", XSPR(31,339,888), XSPR_MASK, TITAN, 0, {RT}},
6379{"mfppr", XSPR(31,339,896), XSPR_MASK, POWER7, 0, {RT}},
6380{"mfppr32", XSPR(31,339,898), XSPR_MASK, POWER7, 0, {RT}},
fa758a70
AC
6381{"mfgqr", XSPR(31,339,912), XSPRGQR_MASK, PPCPS, 0, {RT, SPRGQR}},
6382{"mfhid2", XSPR(31,339,920), XSPR_MASK, GEKKO, 0, {RT}},
6383{"mfwpar", XSPR(31,339,921), XSPR_MASK, GEKKO, 0, {RT}},
6384{"mfdmau", XSPR(31,339,922), XSPR_MASK, GEKKO, 0, {RT}},
6385{"mfdmal", XSPR(31,339,923), XSPR_MASK, GEKKO, 0, {RT}},
14b57c7c
AM
6386{"mfrstcfg", XSPR(31,339,923), XSPR_MASK, TITAN, 0, {RT}},
6387{"mfdcdbtrl", XSPR(31,339,924), XSPR_MASK, TITAN, 0, {RT}},
6388{"mfdcdbtrh", XSPR(31,339,925), XSPR_MASK, TITAN, 0, {RT}},
6389{"mficdbtr", XSPR(31,339,927), XSPR_MASK, TITAN, 0, {RT}},
6390{"mfummcr0", XSPR(31,339,936), XSPR_MASK, PPC750, 0, {RT}},
6391{"mfupmc1", XSPR(31,339,937), XSPR_MASK, PPC750, 0, {RT}},
6392{"mfupmc2", XSPR(31,339,938), XSPR_MASK, PPC750, 0, {RT}},
6393{"mfusia", XSPR(31,339,939), XSPR_MASK, PPC750, 0, {RT}},
6394{"mfummcr1", XSPR(31,339,940), XSPR_MASK, PPC750, 0, {RT}},
6395{"mfupmc3", XSPR(31,339,941), XSPR_MASK, PPC750, 0, {RT}},
6396{"mfupmc4", XSPR(31,339,942), XSPR_MASK, PPC750, 0, {RT}},
6397{"mfzpr", XSPR(31,339,944), XSPR_MASK, PPC403, 0, {RT}},
6398{"mfpid", XSPR(31,339,945), XSPR_MASK, PPC403, 0, {RT}},
6399{"mfmmucr", XSPR(31,339,946), XSPR_MASK, TITAN, 0, {RT}},
6400{"mfccr0", XSPR(31,339,947), XSPR_MASK, PPC405|TITAN, 0, {RT}},
6401{"mfiac3", XSPR(31,339,948), XSPR_MASK, PPC405, 0, {RT}},
6402{"mfiac4", XSPR(31,339,949), XSPR_MASK, PPC405, 0, {RT}},
6403{"mfdvc1", XSPR(31,339,950), XSPR_MASK, PPC405, 0, {RT}},
6404{"mfdvc2", XSPR(31,339,951), XSPR_MASK, PPC405, 0, {RT}},
6405{"mfmmcr0", XSPR(31,339,952), XSPR_MASK, PPC750, 0, {RT}},
6406{"mfpmc1", XSPR(31,339,953), XSPR_MASK, PPC750, 0, {RT}},
6407{"mfsgr", XSPR(31,339,953), XSPR_MASK, PPC403, 0, {RT}},
6408{"mfdcwr", XSPR(31,339,954), XSPR_MASK, PPC403, 0, {RT}},
6409{"mfpmc2", XSPR(31,339,954), XSPR_MASK, PPC750, 0, {RT}},
6410{"mfsia", XSPR(31,339,955), XSPR_MASK, PPC750, 0, {RT}},
6411{"mfsler", XSPR(31,339,955), XSPR_MASK, PPC405, 0, {RT}},
6412{"mfmmcr1", XSPR(31,339,956), XSPR_MASK, PPC750, 0, {RT}},
6413{"mfsu0r", XSPR(31,339,956), XSPR_MASK, PPC405, 0, {RT}},
6414{"mfdbcr1", XSPR(31,339,957), XSPR_MASK, PPC405, 0, {RT}},
6415{"mfpmc3", XSPR(31,339,957), XSPR_MASK, PPC750, 0, {RT}},
6416{"mfpmc4", XSPR(31,339,958), XSPR_MASK, PPC750, 0, {RT}},
6417{"mficdbdr", XSPR(31,339,979), XSPR_MASK, PPC403|TITAN, 0, {RT}},
6418{"mfesr", XSPR(31,339,980), XSPR_MASK, PPC403, 0, {RT}},
6419{"mfdear", XSPR(31,339,981), XSPR_MASK, PPC403, 0, {RT}},
6420{"mfevpr", XSPR(31,339,982), XSPR_MASK, PPC403, 0, {RT}},
6421{"mfcdbcr", XSPR(31,339,983), XSPR_MASK, PPC403, 0, {RT}},
6422{"mftsr", XSPR(31,339,984), XSPR_MASK, PPC403, 0, {RT}},
6423{"mftcr", XSPR(31,339,986), XSPR_MASK, PPC403, 0, {RT}},
6424{"mfpit", XSPR(31,339,987), XSPR_MASK, PPC403, 0, {RT}},
6425{"mftbhi", XSPR(31,339,988), XSPR_MASK, PPC403, 0, {RT}},
6426{"mftblo", XSPR(31,339,989), XSPR_MASK, PPC403, 0, {RT}},
6427{"mfsrr2", XSPR(31,339,990), XSPR_MASK, PPC403, 0, {RT}},
6428{"mfsrr3", XSPR(31,339,991), XSPR_MASK, PPC403, 0, {RT}},
6429{"mfdbsr", XSPR(31,339,1008), XSPR_MASK, PPC403, 0, {RT}},
fa758a70
AC
6430{"mfhid0", XSPR(31,339,1008), XSPR_MASK, GEKKO, 0, {RT}},
6431{"mfhid1", XSPR(31,339,1009), XSPR_MASK, GEKKO, 0, {RT}},
14b57c7c 6432{"mfdbcr0", XSPR(31,339,1010), XSPR_MASK, PPC405, 0, {RT}},
fa758a70
AC
6433{"mfiabr", XSPR(31,339,1010), XSPR_MASK, GEKKO, 0, {RT}},
6434{"mfhid4", XSPR(31,339,1011), XSPR_MASK, BROADWAY, 0, {RT}},
14b57c7c
AM
6435{"mfdbdr", XSPR(31,339,1011), XSPR_MASK, TITAN, 0, {RS}},
6436{"mfiac1", XSPR(31,339,1012), XSPR_MASK, PPC403, 0, {RT}},
6437{"mfiac2", XSPR(31,339,1013), XSPR_MASK, PPC403, 0, {RT}},
fa758a70 6438{"mfdabr", XSPR(31,339,1013), XSPR_MASK, PPC750, 0, {RT}},
14b57c7c
AM
6439{"mfdac1", XSPR(31,339,1014), XSPR_MASK, PPC403, 0, {RT}},
6440{"mfdac2", XSPR(31,339,1015), XSPR_MASK, PPC403, 0, {RT}},
6441{"mfl2cr", XSPR(31,339,1017), XSPR_MASK, PPC750, 0, {RT}},
6442{"mfdccr", XSPR(31,339,1018), XSPR_MASK, PPC403, 0, {RT}},
6443{"mficcr", XSPR(31,339,1019), XSPR_MASK, PPC403, 0, {RT}},
6444{"mfictc", XSPR(31,339,1019), XSPR_MASK, PPC750, 0, {RT}},
6445{"mfpbl1", XSPR(31,339,1020), XSPR_MASK, PPC403, 0, {RT}},
6446{"mfthrm1", XSPR(31,339,1020), XSPR_MASK, PPC750, 0, {RT}},
6447{"mfpbu1", XSPR(31,339,1021), XSPR_MASK, PPC403, 0, {RT}},
6448{"mfthrm2", XSPR(31,339,1021), XSPR_MASK, PPC750, 0, {RT}},
6449{"mfpbl2", XSPR(31,339,1022), XSPR_MASK, PPC403, 0, {RT}},
6450{"mfthrm3", XSPR(31,339,1022), XSPR_MASK, PPC750, 0, {RT}},
6451{"mfpbu2", XSPR(31,339,1023), XSPR_MASK, PPC403, 0, {RT}},
6452{"mfspr", X(31,339), X_MASK, COM, 0, {RT, SPR}},
6453
6454{"lwax", X(31,341), X_MASK, PPC64, 0, {RT, RA0, RB}},
6455
6456{"dst", XDSS(31,342,0), XDSS_MASK, PPCVEC, 0, {RA, RB, STRM}},
6457
6458{"lhax", X(31,343), X_MASK, COM, 0, {RT, RA0, RB}},
6459
6460{"lvxl", X(31,359), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
6461
6462{"abs", XO(31,360,0,0), XORB_MASK, M601, 0, {RT, RA}},
6463{"abs.", XO(31,360,0,1), XORB_MASK, M601, 0, {RT, RA}},
6464
6465{"divs", XO(31,363,0,0), XO_MASK, M601, 0, {RT, RA, RB}},
6466{"divs.", XO(31,363,0,1), XO_MASK, M601, 0, {RT, RA, RB}},
6467
6468{"lxvwsx", X(31,364), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
6469
6470{"tlbia", X(31,370), 0xffffffff, PPC, E500|TITAN, {0}},
1cb0a767 6471
db76a700 6472{"mftbu", XSPR(31,371,269), XSPR_MASK, PPC, NO371|POWER4, {RT}},
14b57c7c 6473{"mftb", X(31,371), X_MASK, PPC, NO371|POWER4, {RT, TBR}},
db76a700 6474{"mftbl", XSPR(31,371,268), XSPR_MASK, PPC, NO371|POWER4, {RT}},
1cb0a767 6475
14b57c7c 6476{"lwaux", X(31,373), X_MASK, PPC64, 0, {RT, RAL, RB}},
1cb0a767 6477
14b57c7c 6478{"dstst", XDSS(31,374,0), XDSS_MASK, PPCVEC, 0, {RA, RB, STRM}},
1cb0a767 6479
14b57c7c 6480{"lhaux", X(31,375), X_MASK, COM, 0, {RT, RAL, RB}},
1cb0a767 6481
14b57c7c 6482{"popcntw", X(31,378), XRB_MASK, POWER7|PPCA2, 0, {RA, RS}},
066be9f7 6483
14b57c7c
AM
6484{"mtdcrx", X(31,387), X_MASK, BOOKE|PPCA2|PPC476, TITAN, {RA, RS}},
6485{"mtdcrx.", XRC(31,387,1), X_MASK, PPCA2, 0, {RA, RS}},
1cb0a767 6486
ac8f0f72 6487{"stvexbx", X(31,389), X_MASK, E6500, 0, {VS, RA0, RB}},
aea77599 6488
14b57c7c
AM
6489{"dcblc", X(31,390), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
6490{"stdfcmx", APU(31,391,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
1cb0a767 6491
14b57c7c
AM
6492{"divdeu", XO(31,393,0,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
6493{"divdeu.", XO(31,393,0,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
6494{"divweu", XO(31,395,0,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
6495{"divweu.", XO(31,395,0,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
066be9f7 6496
14b57c7c
AM
6497{"stxvx", X(31,396), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
6498{"stxvl", X(31,397), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
a680de9a 6499
14b57c7c 6500{"dcblce", X(31,398), X_MASK, PPCCHLK, E500MC, {CT, RA, RB}},
1cb0a767 6501
14b57c7c 6502{"slbmte", X(31,402), XRA_MASK, PPC64, 0, {RS, RB}},
1cb0a767 6503
14b57c7c 6504{"mtvsrws", X(31,403), XX1RB_MASK, PPCVSX3, 0, {XT6, RA}},
a680de9a 6505
14b57c7c 6506{"pbt.", XRC(31,404,1), X_MASK, POWER8, 0, {RS, RA0, RB}},
c0637f3a 6507
14b57c7c
AM
6508{"icswx", XRC(31,406,0), X_MASK, POWER7|PPCA2, 0, {RS, RA, RB}},
6509{"icswx.", XRC(31,406,1), X_MASK, POWER7|PPCA2, 0, {RS, RA, RB}},
e0d602ec 6510
14b57c7c 6511{"sthx", X(31,407), X_MASK, COM, 0, {RS, RA0, RB}},
1cb0a767 6512
14b57c7c
AM
6513{"orc", XRC(31,412,0), X_MASK, COM, 0, {RA, RS, RB}},
6514{"orc.", XRC(31,412,1), X_MASK, COM, 0, {RA, RS, RB}},
1cb0a767 6515
14b57c7c 6516{"sthepx", X(31,415), X_MASK, E500MC|PPCA2, 0, {RS, RA0, RB}},
1cb0a767 6517
62adc510 6518{"mtdcrux", X(31,419), X_MASK, PPC464|PPC476, 0, {RA, RS}},
1cb0a767 6519
ac8f0f72 6520{"stvexhx", X(31,421), X_MASK, E6500, 0, {VS, RA0, RB}},
aea77599 6521
14b57c7c 6522{"dcblq.", XRC(31,422,1), X_MASK, E6500, 0, {CT, RA0, RB}},
aea77599 6523
14b57c7c
AM
6524{"divde", XO(31,425,0,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
6525{"divde.", XO(31,425,0,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
6526{"divwe", XO(31,427,0,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
6527{"divwe.", XO(31,427,0,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
066be9f7 6528
14b57c7c 6529{"stxvll", X(31,429), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
a680de9a 6530
14b57c7c 6531{"clrbhrb", X(31,430), 0xffffffff, POWER8, 0, {0}},
c0637f3a 6532
14b57c7c 6533{"slbie", X(31,434), XRTRA_MASK, PPC64, 0, {RB}},
1cb0a767 6534
14b57c7c 6535{"mtvsrdd", X(31,435), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
a680de9a 6536
14b57c7c 6537{"ecowx", X(31,438), X_MASK, PPC, E500|TITAN, {RT, RA0, RB}},
1cb0a767 6538
14b57c7c 6539{"sthux", X(31,439), X_MASK, COM, 0, {RS, RAS, RB}},
1cb0a767 6540
14b57c7c 6541{"mdors", 0x7f9ce378, 0xffffffff, E500MC, 0, {0}},
1cb0a767 6542
14b57c7c 6543{"miso", 0x7f5ad378, 0xffffffff, E6500, 0, {0}},
aea77599 6544
9f6a6cc0 6545/* The "yield", "mdoio" and "mdoom" instructions are extended mnemonics for
14b57c7c
AM
6546 "or rX,rX,rX", with rX being r27, r29 and r30 respectively. */
6547{"yield", 0x7f7bdb78, 0xffffffff, POWER7, 0, {0}},
6548{"mdoio", 0x7fbdeb78, 0xffffffff, POWER7, 0, {0}},
6549{"mdoom", 0x7fdef378, 0xffffffff, POWER7, 0, {0}},
98553ad3 6550{"mr", XRC(31,444,0), X_MASK, COM, 0, {RA, RSB}},
14b57c7c 6551{"or", XRC(31,444,0), X_MASK, COM, 0, {RA, RS, RB}},
98553ad3 6552{"mr.", XRC(31,444,1), X_MASK, COM, 0, {RA, RSB}},
14b57c7c
AM
6553{"or.", XRC(31,444,1), X_MASK, COM, 0, {RA, RS, RB}},
6554
6555{"mtexisr", XSPR(31,451, 64), XSPR_MASK, PPC403, 0, {RS}},
6556{"mtexier", XSPR(31,451, 66), XSPR_MASK, PPC403, 0, {RS}},
6557{"mtbr0", XSPR(31,451,128), XSPR_MASK, PPC403, 0, {RS}},
6558{"mtbr1", XSPR(31,451,129), XSPR_MASK, PPC403, 0, {RS}},
6559{"mtbr2", XSPR(31,451,130), XSPR_MASK, PPC403, 0, {RS}},
6560{"mtbr3", XSPR(31,451,131), XSPR_MASK, PPC403, 0, {RS}},
6561{"mtbr4", XSPR(31,451,132), XSPR_MASK, PPC403, 0, {RS}},
6562{"mtbr5", XSPR(31,451,133), XSPR_MASK, PPC403, 0, {RS}},
6563{"mtbr6", XSPR(31,451,134), XSPR_MASK, PPC403, 0, {RS}},
6564{"mtbr7", XSPR(31,451,135), XSPR_MASK, PPC403, 0, {RS}},
6565{"mtbear", XSPR(31,451,144), XSPR_MASK, PPC403, 0, {RS}},
6566{"mtbesr", XSPR(31,451,145), XSPR_MASK, PPC403, 0, {RS}},
6567{"mtiocr", XSPR(31,451,160), XSPR_MASK, PPC403, 0, {RS}},
6568{"mtdmacr0", XSPR(31,451,192), XSPR_MASK, PPC403, 0, {RS}},
6569{"mtdmact0", XSPR(31,451,193), XSPR_MASK, PPC403, 0, {RS}},
6570{"mtdmada0", XSPR(31,451,194), XSPR_MASK, PPC403, 0, {RS}},
6571{"mtdmasa0", XSPR(31,451,195), XSPR_MASK, PPC403, 0, {RS}},
6572{"mtdmacc0", XSPR(31,451,196), XSPR_MASK, PPC403, 0, {RS}},
6573{"mtdmacr1", XSPR(31,451,200), XSPR_MASK, PPC403, 0, {RS}},
6574{"mtdmact1", XSPR(31,451,201), XSPR_MASK, PPC403, 0, {RS}},
6575{"mtdmada1", XSPR(31,451,202), XSPR_MASK, PPC403, 0, {RS}},
6576{"mtdmasa1", XSPR(31,451,203), XSPR_MASK, PPC403, 0, {RS}},
6577{"mtdmacc1", XSPR(31,451,204), XSPR_MASK, PPC403, 0, {RS}},
6578{"mtdmacr2", XSPR(31,451,208), XSPR_MASK, PPC403, 0, {RS}},
6579{"mtdmact2", XSPR(31,451,209), XSPR_MASK, PPC403, 0, {RS}},
6580{"mtdmada2", XSPR(31,451,210), XSPR_MASK, PPC403, 0, {RS}},
6581{"mtdmasa2", XSPR(31,451,211), XSPR_MASK, PPC403, 0, {RS}},
6582{"mtdmacc2", XSPR(31,451,212), XSPR_MASK, PPC403, 0, {RS}},
6583{"mtdmacr3", XSPR(31,451,216), XSPR_MASK, PPC403, 0, {RS}},
6584{"mtdmact3", XSPR(31,451,217), XSPR_MASK, PPC403, 0, {RS}},
6585{"mtdmada3", XSPR(31,451,218), XSPR_MASK, PPC403, 0, {RS}},
6586{"mtdmasa3", XSPR(31,451,219), XSPR_MASK, PPC403, 0, {RS}},
6587{"mtdmacc3", XSPR(31,451,220), XSPR_MASK, PPC403, 0, {RS}},
6588{"mtdmasr", XSPR(31,451,224), XSPR_MASK, PPC403, 0, {RS}},
6589{"mtdcr", X(31,451), X_MASK, PPC403|BOOKE|PPCA2|PPC476, E500|TITAN, {SPR, RS}},
6590{"mtdcr.", XRC(31,451,1), X_MASK, PPCA2, 0, {SPR, RS}},
6591
ac8f0f72 6592{"stvexwx", X(31,453), X_MASK, E6500, 0, {VS, RA0, RB}},
14b57c7c 6593
62adc510 6594{"dccci", X(31,454), XRT_MASK, PPC403|PPC440|PPC476|TITAN|PPCA2, 0, {RAOPT, RBOPT}},
14b57c7c
AM
6595{"dci", X(31,454), XRARB_MASK, PPCA2|PPC476, 0, {CT}},
6596
6597{"divdu", XO(31,457,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
6598{"divdu.", XO(31,457,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
6599
6600{"divwu", XO(31,459,0,0), XO_MASK, PPC, 0, {RT, RA, RB}},
6601{"divwu.", XO(31,459,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
6602
94ba9882
AM
6603{"stxvpx", X(31,461), XX1_MASK, POWER10, 0, {XTP, RA0, RB}},
6604
14b57c7c 6605{"mtpmr", X(31,462), X_MASK, PPCPMR|PPCE300, 0, {PMR, RS}},
c03dc33b 6606{"mttmr", X(31,494), X_MASK, PPCTMR, 0, {TMR, RS}},
14b57c7c
AM
6607
6608{"slbieg", X(31,466), XRA_MASK, POWER9, 0, {RS, RB}},
6609
6610{"mtmq", XSPR(31,467, 0), XSPR_MASK, M601, 0, {RS}},
6611{"mtxer", XSPR(31,467, 1), XSPR_MASK, COM, 0, {RS}},
6612{"mtlr", XSPR(31,467, 8), XSPR_MASK, COM, 0, {RS}},
6613{"mtctr", XSPR(31,467, 9), XSPR_MASK, COM, 0, {RS}},
6614{"mtdscr", XSPR(31,467, 17), XSPR_MASK, POWER6, 0, {RS}},
6615{"mttid", XSPR(31,467, 17), XSPR_MASK, POWER, 0, {RS}},
6616{"mtdsisr", XSPR(31,467, 18), XSPR_MASK, COM, TITAN, {RS}},
6617{"mtdar", XSPR(31,467, 19), XSPR_MASK, COM, TITAN, {RS}},
6618{"mtrtcu", XSPR(31,467, 20), XSPR_MASK, COM, TITAN, {RS}},
6619{"mtrtcl", XSPR(31,467, 21), XSPR_MASK, COM, TITAN, {RS}},
6620{"mtdec", XSPR(31,467, 22), XSPR_MASK, COM, 0, {RS}},
6621{"mtsdr0", XSPR(31,467, 24), XSPR_MASK, POWER, 0, {RS}},
6622{"mtsdr1", XSPR(31,467, 25), XSPR_MASK, COM, TITAN, {RS}},
6623{"mtsrr0", XSPR(31,467, 26), XSPR_MASK, COM, 0, {RS}},
6624{"mtsrr1", XSPR(31,467, 27), XSPR_MASK, COM, 0, {RS}},
6625{"mtcfar", XSPR(31,467, 28), XSPR_MASK, POWER6, 0, {RS}},
6626{"mtpid", XSPR(31,467, 48), XSPR_MASK, BOOKE, 0, {RS}},
6627{"mtdecar", XSPR(31,467, 54), XSPR_MASK, BOOKE, 0, {RS}},
6628{"mtcsrr0", XSPR(31,467, 58), XSPR_MASK, BOOKE, 0, {RS}},
6629{"mtcsrr1", XSPR(31,467, 59), XSPR_MASK, BOOKE, 0, {RS}},
6630{"mtdear", XSPR(31,467, 61), XSPR_MASK, BOOKE, 0, {RS}},
6631{"mtesr", XSPR(31,467, 62), XSPR_MASK, BOOKE, 0, {RS}},
6632{"mtivpr", XSPR(31,467, 63), XSPR_MASK, BOOKE, 0, {RS}},
6633{"mtcmpa", XSPR(31,467,144), XSPR_MASK, PPC860, 0, {RS}},
6634{"mtcmpb", XSPR(31,467,145), XSPR_MASK, PPC860, 0, {RS}},
6635{"mtcmpc", XSPR(31,467,146), XSPR_MASK, PPC860, 0, {RS}},
6636{"mtcmpd", XSPR(31,467,147), XSPR_MASK, PPC860, 0, {RS}},
6637{"mticr", XSPR(31,467,148), XSPR_MASK, PPC860, 0, {RS}},
6638{"mtder", XSPR(31,467,149), XSPR_MASK, PPC860, 0, {RS}},
6639{"mtcounta", XSPR(31,467,150), XSPR_MASK, PPC860, 0, {RS}},
6640{"mtcountb", XSPR(31,467,151), XSPR_MASK, PPC860, 0, {RS}},
6641{"mtctrl", XSPR(31,467,152), XSPR_MASK, POWER4, 0, {RS}},
6642{"mtcmpe", XSPR(31,467,152), XSPR_MASK, PPC860, 0, {RS}},
6643{"mtcmpf", XSPR(31,467,153), XSPR_MASK, PPC860, 0, {RS}},
6644{"mtcmpg", XSPR(31,467,154), XSPR_MASK, PPC860, 0, {RS}},
6645{"mtcmph", XSPR(31,467,155), XSPR_MASK, PPC860, 0, {RS}},
6646{"mtlctrl1", XSPR(31,467,156), XSPR_MASK, PPC860, 0, {RS}},
6647{"mtlctrl2", XSPR(31,467,157), XSPR_MASK, PPC860, 0, {RS}},
6648{"mtictrl", XSPR(31,467,158), XSPR_MASK, PPC860, 0, {RS}},
6649{"mtbar", XSPR(31,467,159), XSPR_MASK, PPC860, 0, {RS}},
6650{"mtvrsave", XSPR(31,467,256), XSPR_MASK, PPCVEC, 0, {RS}},
6651{"mtusprg0", XSPR(31,467,256), XSPR_MASK, BOOKE, 0, {RS}},
6652{"mtsprg", XSPR(31,467,256), XSPRG_MASK, PPC, 0, {SPRG, RS}},
6653{"mtsprg0", XSPR(31,467,272), XSPR_MASK, PPC, 0, {RS}},
6654{"mtsprg1", XSPR(31,467,273), XSPR_MASK, PPC, 0, {RS}},
6655{"mtsprg2", XSPR(31,467,274), XSPR_MASK, PPC, 0, {RS}},
6656{"mtsprg3", XSPR(31,467,275), XSPR_MASK, PPC, 0, {RS}},
6657{"mtsprg4", XSPR(31,467,276), XSPR_MASK, PPC405|BOOKE, 0, {RS}},
6658{"mtsprg5", XSPR(31,467,277), XSPR_MASK, PPC405|BOOKE, 0, {RS}},
6659{"mtsprg6", XSPR(31,467,278), XSPR_MASK, PPC405|BOOKE, 0, {RS}},
6660{"mtsprg7", XSPR(31,467,279), XSPR_MASK, PPC405|BOOKE, 0, {RS}},
6661{"mtasr", XSPR(31,467,280), XSPR_MASK, PPC64, 0, {RS}},
6662{"mtear", XSPR(31,467,282), XSPR_MASK, PPC, TITAN, {RS}},
6663{"mttbl", XSPR(31,467,284), XSPR_MASK, PPC, 0, {RS}},
6664{"mttbu", XSPR(31,467,285), XSPR_MASK, PPC, 0, {RS}},
6665{"mtdbsr", XSPR(31,467,304), XSPR_MASK, BOOKE, 0, {RS}},
6666{"mtdbcr0", XSPR(31,467,308), XSPR_MASK, BOOKE, 0, {RS}},
6667{"mtdbcr1", XSPR(31,467,309), XSPR_MASK, BOOKE, 0, {RS}},
6668{"mtdbcr2", XSPR(31,467,310), XSPR_MASK, BOOKE, 0, {RS}},
6669{"mtiac1", XSPR(31,467,312), XSPR_MASK, BOOKE, 0, {RS}},
6670{"mtiac2", XSPR(31,467,313), XSPR_MASK, BOOKE, 0, {RS}},
6671{"mtiac3", XSPR(31,467,314), XSPR_MASK, BOOKE, 0, {RS}},
6672{"mtiac4", XSPR(31,467,315), XSPR_MASK, BOOKE, 0, {RS}},
6673{"mtdac1", XSPR(31,467,316), XSPR_MASK, BOOKE, 0, {RS}},
6674{"mtdac2", XSPR(31,467,317), XSPR_MASK, BOOKE, 0, {RS}},
6675{"mtdvc1", XSPR(31,467,318), XSPR_MASK, BOOKE, 0, {RS}},
6676{"mtdvc2", XSPR(31,467,319), XSPR_MASK, BOOKE, 0, {RS}},
6677{"mttsr", XSPR(31,467,336), XSPR_MASK, BOOKE, 0, {RS}},
6678{"mttcr", XSPR(31,467,340), XSPR_MASK, BOOKE, 0, {RS}},
6679{"mtivor0", XSPR(31,467,400), XSPR_MASK, BOOKE, 0, {RS}},
6680{"mtivor1", XSPR(31,467,401), XSPR_MASK, BOOKE, 0, {RS}},
6681{"mtivor2", XSPR(31,467,402), XSPR_MASK, BOOKE, 0, {RS}},
6682{"mtivor3", XSPR(31,467,403), XSPR_MASK, BOOKE, 0, {RS}},
6683{"mtivor4", XSPR(31,467,404), XSPR_MASK, BOOKE, 0, {RS}},
6684{"mtivor5", XSPR(31,467,405), XSPR_MASK, BOOKE, 0, {RS}},
6685{"mtivor6", XSPR(31,467,406), XSPR_MASK, BOOKE, 0, {RS}},
6686{"mtivor7", XSPR(31,467,407), XSPR_MASK, BOOKE, 0, {RS}},
6687{"mtivor8", XSPR(31,467,408), XSPR_MASK, BOOKE, 0, {RS}},
6688{"mtivor9", XSPR(31,467,409), XSPR_MASK, BOOKE, 0, {RS}},
6689{"mtivor10", XSPR(31,467,410), XSPR_MASK, BOOKE, 0, {RS}},
6690{"mtivor11", XSPR(31,467,411), XSPR_MASK, BOOKE, 0, {RS}},
6691{"mtivor12", XSPR(31,467,412), XSPR_MASK, BOOKE, 0, {RS}},
6692{"mtivor13", XSPR(31,467,413), XSPR_MASK, BOOKE, 0, {RS}},
6693{"mtivor14", XSPR(31,467,414), XSPR_MASK, BOOKE, 0, {RS}},
6694{"mtivor15", XSPR(31,467,415), XSPR_MASK, BOOKE, 0, {RS}},
6695{"mtspefscr", XSPR(31,467,512), XSPR_MASK, PPCSPE, 0, {RS}},
6696{"mtbbear", XSPR(31,467,513), XSPR_MASK, PPCBRLK, 0, {RS}},
6697{"mtbbtar", XSPR(31,467,514), XSPR_MASK, PPCBRLK, 0, {RS}},
4b94dd2d
AM
6698{"mtivor32", XSPR(31,467,528), XSPR_MASK, PPCSPE|E6500, 0, {RS}},
6699{"mtivor33", XSPR(31,467,529), XSPR_MASK, PPCSPE|E6500, 0, {RS}},
14b57c7c
AM
6700{"mtivor34", XSPR(31,467,530), XSPR_MASK, PPCSPE, 0, {RS}},
6701{"mtivor35", XSPR(31,467,531), XSPR_MASK, PPCPMR, 0, {RS}},
4b94dd2d
AM
6702{"mtibatu", XSPR(31,467,528), XSPRBAT_MASK, PPC, TITAN, {SPRBAT, RS}},
6703{"mtibatl", XSPR(31,467,529), XSPRBAT_MASK, PPC, TITAN, {SPRBAT, RS}},
14b57c7c
AM
6704{"mtdbatu", XSPR(31,467,536), XSPRBAT_MASK, PPC, TITAN, {SPRBAT, RS}},
6705{"mtdbatl", XSPR(31,467,537), XSPRBAT_MASK, PPC, TITAN, {SPRBAT, RS}},
6706{"mtmcsrr0", XSPR(31,467,570), XSPR_MASK, PPCRFMCI, 0, {RS}},
6707{"mtmcsrr1", XSPR(31,467,571), XSPR_MASK, PPCRFMCI, 0, {RS}},
6708{"mtmcsr", XSPR(31,467,572), XSPR_MASK, PPCRFMCI, 0, {RS}},
bb71536f
AM
6709{"mtupmc1", XSPR(31,467,771), XSPR_MASK, POWER9, 0, {RS}},
6710{"mtupmc2", XSPR(31,467,772), XSPR_MASK, POWER9, 0, {RS}},
6711{"mtupmc3", XSPR(31,467,773), XSPR_MASK, POWER9, 0, {RS}},
6712{"mtupmc4", XSPR(31,467,774), XSPR_MASK, POWER9, 0, {RS}},
6713{"mtupmc5", XSPR(31,467,775), XSPR_MASK, POWER9, 0, {RS}},
6714{"mtupmc6", XSPR(31,467,776), XSPR_MASK, POWER9, 0, {RS}},
14b57c7c
AM
6715{"mtivndx", XSPR(31,467,880), XSPR_MASK, TITAN, 0, {RS}},
6716{"mtdvndx", XSPR(31,467,881), XSPR_MASK, TITAN, 0, {RS}},
6717{"mtivlim", XSPR(31,467,882), XSPR_MASK, TITAN, 0, {RS}},
6718{"mtdvlim", XSPR(31,467,883), XSPR_MASK, TITAN, 0, {RS}},
6719{"mtclcsr", XSPR(31,467,884), XSPR_MASK, TITAN, 0, {RS}},
6720{"mtccr1", XSPR(31,467,888), XSPR_MASK, TITAN, 0, {RS}},
6721{"mtppr", XSPR(31,467,896), XSPR_MASK, POWER7, 0, {RS}},
6722{"mtppr32", XSPR(31,467,898), XSPR_MASK, POWER7, 0, {RS}},
fa758a70
AC
6723{"mtgqr", XSPR(31,467,912), XSPRGQR_MASK, PPCPS, 0, {SPRGQR, RS}},
6724{"mthid2", XSPR(31,467,920), XSPR_MASK, GEKKO, 0, {RS}},
6725{"mtwpar", XSPR(31,467,921), XSPR_MASK, GEKKO, 0, {RS}},
6726{"mtdmau", XSPR(31,467,922), XSPR_MASK, GEKKO, 0, {RS}},
6727{"mtdmal", XSPR(31,467,923), XSPR_MASK, GEKKO, 0, {RS}},
14b57c7c
AM
6728{"mtummcr0", XSPR(31,467,936), XSPR_MASK, PPC750, 0, {RS}},
6729{"mtupmc1", XSPR(31,467,937), XSPR_MASK, PPC750, 0, {RS}},
6730{"mtupmc2", XSPR(31,467,938), XSPR_MASK, PPC750, 0, {RS}},
6731{"mtusia", XSPR(31,467,939), XSPR_MASK, PPC750, 0, {RS}},
6732{"mtummcr1", XSPR(31,467,940), XSPR_MASK, PPC750, 0, {RS}},
6733{"mtupmc3", XSPR(31,467,941), XSPR_MASK, PPC750, 0, {RS}},
6734{"mtupmc4", XSPR(31,467,942), XSPR_MASK, PPC750, 0, {RS}},
6735{"mtzpr", XSPR(31,467,944), XSPR_MASK, PPC403, 0, {RS}},
6736{"mtpid", XSPR(31,467,945), XSPR_MASK, PPC403, 0, {RS}},
6737{"mtrmmucr", XSPR(31,467,946), XSPR_MASK, TITAN, 0, {RS}},
6738{"mtccr0", XSPR(31,467,947), XSPR_MASK, PPC405|TITAN, 0, {RS}},
6739{"mtiac3", XSPR(31,467,948), XSPR_MASK, PPC405, 0, {RS}},
6740{"mtiac4", XSPR(31,467,949), XSPR_MASK, PPC405, 0, {RS}},
6741{"mtdvc1", XSPR(31,467,950), XSPR_MASK, PPC405, 0, {RS}},
6742{"mtdvc2", XSPR(31,467,951), XSPR_MASK, PPC405, 0, {RS}},
6743{"mtmmcr0", XSPR(31,467,952), XSPR_MASK, PPC750, 0, {RS}},
6744{"mtpmc1", XSPR(31,467,953), XSPR_MASK, PPC750, 0, {RS}},
6745{"mtsgr", XSPR(31,467,953), XSPR_MASK, PPC403, 0, {RS}},
6746{"mtdcwr", XSPR(31,467,954), XSPR_MASK, PPC403, 0, {RS}},
6747{"mtpmc2", XSPR(31,467,954), XSPR_MASK, PPC750, 0, {RS}},
6748{"mtsia", XSPR(31,467,955), XSPR_MASK, PPC750, 0, {RS}},
6749{"mtsler", XSPR(31,467,955), XSPR_MASK, PPC405, 0, {RS}},
6750{"mtmmcr1", XSPR(31,467,956), XSPR_MASK, PPC750, 0, {RS}},
6751{"mtsu0r", XSPR(31,467,956), XSPR_MASK, PPC405, 0, {RS}},
6752{"mtdbcr1", XSPR(31,467,957), XSPR_MASK, PPC405, 0, {RS}},
6753{"mtpmc3", XSPR(31,467,957), XSPR_MASK, PPC750, 0, {RS}},
6754{"mtpmc4", XSPR(31,467,958), XSPR_MASK, PPC750, 0, {RS}},
6755{"mticdbdr", XSPR(31,467,979), XSPR_MASK, PPC403, 0, {RS}},
6756{"mtesr", XSPR(31,467,980), XSPR_MASK, PPC403, 0, {RS}},
6757{"mtdear", XSPR(31,467,981), XSPR_MASK, PPC403, 0, {RS}},
6758{"mtevpr", XSPR(31,467,982), XSPR_MASK, PPC403, 0, {RS}},
6759{"mtcdbcr", XSPR(31,467,983), XSPR_MASK, PPC403, 0, {RS}},
6760{"mttsr", XSPR(31,467,984), XSPR_MASK, PPC403, 0, {RS}},
6761{"mttcr", XSPR(31,467,986), XSPR_MASK, PPC403, 0, {RS}},
6762{"mtpit", XSPR(31,467,987), XSPR_MASK, PPC403, 0, {RS}},
6763{"mttbhi", XSPR(31,467,988), XSPR_MASK, PPC403, 0, {RS}},
6764{"mttblo", XSPR(31,467,989), XSPR_MASK, PPC403, 0, {RS}},
6765{"mtsrr2", XSPR(31,467,990), XSPR_MASK, PPC403, 0, {RS}},
6766{"mtsrr3", XSPR(31,467,991), XSPR_MASK, PPC403, 0, {RS}},
6767{"mtdbsr", XSPR(31,467,1008), XSPR_MASK, PPC403, 0, {RS}},
fa758a70
AC
6768{"mthid0", XSPR(31,467,1008), XSPR_MASK, GEKKO, 0, {RS}},
6769{"mthid1", XSPR(31,467,1009), XSPR_MASK, GEKKO, 0, {RS}},
14b57c7c 6770{"mtdbcr0", XSPR(31,467,1010), XSPR_MASK, PPC405, 0, {RS}},
fa758a70
AC
6771{"mtiabr", XSPR(31,467,1010), XSPR_MASK, GEKKO, 0, {RS}},
6772{"mthid4", XSPR(31,467,1011), XSPR_MASK, BROADWAY, 0, {RS}},
6773{"mtdbdr", XSPR(31,467,1011), XSPR_MASK, TITAN, 0, {RS}},
14b57c7c
AM
6774{"mtiac1", XSPR(31,467,1012), XSPR_MASK, PPC403, 0, {RS}},
6775{"mtiac2", XSPR(31,467,1013), XSPR_MASK, PPC403, 0, {RS}},
fa758a70 6776{"mtdabr", XSPR(31,467,1013), XSPR_MASK, PPC750, 0, {RS}},
14b57c7c
AM
6777{"mtdac1", XSPR(31,467,1014), XSPR_MASK, PPC403, 0, {RS}},
6778{"mtdac2", XSPR(31,467,1015), XSPR_MASK, PPC403, 0, {RS}},
6779{"mtl2cr", XSPR(31,467,1017), XSPR_MASK, PPC750, 0, {RS}},
6780{"mtdccr", XSPR(31,467,1018), XSPR_MASK, PPC403, 0, {RS}},
6781{"mticcr", XSPR(31,467,1019), XSPR_MASK, PPC403, 0, {RS}},
6782{"mtictc", XSPR(31,467,1019), XSPR_MASK, PPC750, 0, {RS}},
6783{"mtpbl1", XSPR(31,467,1020), XSPR_MASK, PPC403, 0, {RS}},
6784{"mtthrm1", XSPR(31,467,1020), XSPR_MASK, PPC750, 0, {RS}},
6785{"mtpbu1", XSPR(31,467,1021), XSPR_MASK, PPC403, 0, {RS}},
6786{"mtthrm2", XSPR(31,467,1021), XSPR_MASK, PPC750, 0, {RS}},
6787{"mtpbl2", XSPR(31,467,1022), XSPR_MASK, PPC403, 0, {RS}},
6788{"mtthrm3", XSPR(31,467,1022), XSPR_MASK, PPC750, 0, {RS}},
6789{"mtpbu2", XSPR(31,467,1023), XSPR_MASK, PPC403, 0, {RS}},
6790{"mtspr", X(31,467), X_MASK, COM, 0, {SPR, RS}},
6791
6792{"dcbi", X(31,470), XRT_MASK, PPC, 0, {RA0, RB}},
6793
6794{"nand", XRC(31,476,0), X_MASK, COM, 0, {RA, RS, RB}},
6795{"nand.", XRC(31,476,1), X_MASK, COM, 0, {RA, RS, RB}},
6796
6797{"dsn", X(31,483), XRT_MASK, E500MC, 0, {RA, RB}},
6798
62adc510 6799{"dcread", X(31,486), X_MASK, PPC403|PPC440, PPCA2, {RT, RA0, RB}},
14b57c7c
AM
6800
6801{"icbtls", X(31,486), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
6802
6803{"stvxl", X(31,487), X_MASK, PPCVEC, 0, {VS, RA0, RB}},
6804
6805{"nabs", XO(31,488,0,0), XORB_MASK, M601, 0, {RT, RA}},
6806{"nabs.", XO(31,488,0,1), XORB_MASK, M601, 0, {RT, RA}},
6807
6808{"divd", XO(31,489,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
6809{"divd.", XO(31,489,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
6810
6811{"divw", XO(31,491,0,0), XO_MASK, PPC, 0, {RT, RA, RB}},
6812{"divw.", XO(31,491,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
6813
6814{"icbtlse", X(31,494), X_MASK, PPCCHLK, E500MC, {CT, RA, RB}},
6815
6816{"slbia", X(31,498), 0xff1fffff, POWER6, 0, {IH}},
4bc0608a 6817{"slbia", X(31,498), 0xffffffff, PPC64, POWER6, {0}},
1cb0a767 6818
14b57c7c 6819{"cli", X(31,502), XRB_MASK, POWER, 0, {RT, RA}},
1cb0a767 6820
14b57c7c 6821{"popcntd", X(31,506), XRB_MASK, POWER7|PPCA2, 0, {RA, RS}},
066be9f7 6822
14b57c7c 6823{"cmpb", X(31,508), X_MASK, POWER6|PPCA2|PPC476, 0, {RA, RS, RB}},
1cb0a767 6824
14b57c7c 6825{"mcrxr", X(31,512), XBFRARB_MASK, COM, POWER7, {BF}},
252b5132 6826
dfdaec14 6827{"lbdcbx", X(31,514), X_MASK, E200Z4, 0, {RT, RA, RB}},
a8cc8a54 6828{"lbdx", X(31,515), X_MASK, E500MC|E200Z4, 0, {RT, RA, RB}},
19a6653c 6829
14b57c7c 6830{"bblels", X(31,518), X_MASK, PPCBRLK, 0, {0}},
252b5132 6831
14b57c7c
AM
6832{"lvlx", X(31,519), X_MASK, CELL, 0, {VD, RA0, RB}},
6833{"lbfcmux", APU(31,519,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
252b5132 6834
14b57c7c
AM
6835{"subfco", XO(31,8,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6836{"sfo", XO(31,8,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6837{"subco", XO(31,8,1,0), XO_MASK, PPCCOM, 0, {RT, RB, RA}},
6838{"subfco.", XO(31,8,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6839{"sfo.", XO(31,8,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6840{"subco.", XO(31,8,1,1), XO_MASK, PPCCOM, 0, {RT, RB, RA}},
43e65147 6841
14b57c7c
AM
6842{"addco", XO(31,10,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6843{"ao", XO(31,10,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6844{"addco.", XO(31,10,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6845{"ao.", XO(31,10,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
252b5132 6846
14b57c7c 6847{"lxsspx", X(31,524), XX1_MASK, PPCVSX2, 0, {XT6, RA0, RB}},
c0637f3a 6848
14b57c7c 6849{"clcs", X(31,531), XRB_MASK, M601, 0, {RT, RA}},
418c1742 6850
14b57c7c 6851{"ldbrx", X(31,532), X_MASK, CELL|POWER7|PPCA2, 0, {RT, RA0, RB}},
418c1742 6852
14b57c7c
AM
6853{"lswx", X(31,533), X_MASK, PPCCOM, E500|E500MC, {RT, RAX, RBX}},
6854{"lsx", X(31,533), X_MASK, PWRCOM, 0, {RT, RA, RB}},
252b5132 6855
14b57c7c
AM
6856{"lwbrx", X(31,534), X_MASK, PPCCOM, 0, {RT, RA0, RB}},
6857{"lbrx", X(31,534), X_MASK, PWRCOM, 0, {RT, RA, RB}},
252b5132 6858
14b57c7c 6859{"lfsx", X(31,535), X_MASK, COM, PPCEFS, {FRT, RA0, RB}},
702f0fb4 6860
14b57c7c
AM
6861{"srw", XRC(31,536,0), X_MASK, PPCCOM, 0, {RA, RS, RB}},
6862{"sr", XRC(31,536,0), X_MASK, PWRCOM, 0, {RA, RS, RB}},
6863{"srw.", XRC(31,536,1), X_MASK, PPCCOM, 0, {RA, RS, RB}},
6864{"sr.", XRC(31,536,1), X_MASK, PWRCOM, 0, {RA, RS, RB}},
252b5132 6865
14b57c7c
AM
6866{"rrib", XRC(31,537,0), X_MASK, M601, 0, {RA, RS, RB}},
6867{"rrib.", XRC(31,537,1), X_MASK, M601, 0, {RA, RS, RB}},
23976049 6868
14b57c7c
AM
6869{"cnttzw", XRC(31,538,0), XRB_MASK, POWER9, 0, {RA, RS}},
6870{"cnttzw.", XRC(31,538,1), XRB_MASK, POWER9, 0, {RA, RS}},
a680de9a 6871
14b57c7c
AM
6872{"srd", XRC(31,539,0), X_MASK, PPC64, 0, {RA, RS, RB}},
6873{"srd.", XRC(31,539,1), X_MASK, PPC64, 0, {RA, RS, RB}},
f509565f 6874
14b57c7c
AM
6875{"maskir", XRC(31,541,0), X_MASK, M601, 0, {RA, RS, RB}},
6876{"maskir.", XRC(31,541,1), X_MASK, M601, 0, {RA, RS, RB}},
252b5132 6877
dfdaec14 6878{"lhdcbx", X(31,546), X_MASK, E200Z4, 0, {RT, RA, RB}},
a8cc8a54 6879{"lhdx", X(31,547), X_MASK, E500MC|E200Z4, 0, {RT, RA, RB}},
19a6653c 6880
ac8f0f72 6881{"lvtrx", X(31,549), X_MASK, E6500, 0, {VD, RA0, RB}},
aea77599 6882
14b57c7c 6883{"bbelr", X(31,550), X_MASK, PPCBRLK, 0, {0}},
418c1742 6884
14b57c7c
AM
6885{"lvrx", X(31,551), X_MASK, CELL, 0, {VD, RA0, RB}},
6886{"lhfcmux", APU(31,551,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
252b5132 6887
14b57c7c
AM
6888{"subfo", XO(31,40,1,0), XO_MASK, PPC, 0, {RT, RA, RB}},
6889{"subo", XO(31,40,1,0), XO_MASK, PPC, 0, {RT, RB, RA}},
6890{"subfo.", XO(31,40,1,1), XO_MASK, PPC, 0, {RT, RA, RB}},
6891{"subo.", XO(31,40,1,1), XO_MASK, PPC, 0, {RT, RB, RA}},
252b5132 6892
14b57c7c 6893{"tlbsync", X(31,566), 0xffffffff, PPC, 0, {0}},
252b5132 6894
14b57c7c 6895{"lfsux", X(31,567), X_MASK, COM, PPCEFS, {FRT, RAS, RB}},
252b5132 6896
14b57c7c
AM
6897{"cnttzd", XRC(31,570,0), XRB_MASK, POWER9, 0, {RA, RS}},
6898{"cnttzd.", XRC(31,570,1), XRB_MASK, POWER9, 0, {RA, RS}},
a680de9a 6899
14b57c7c 6900{"mcrxrx", X(31,576), XBFRARB_MASK, POWER9, 0, {BF}},
a680de9a 6901
dfdaec14 6902{"lwdcbx", X(31,578), X_MASK, E200Z4, 0, {RT, RA, RB}},
a8cc8a54 6903{"lwdx", X(31,579), X_MASK, E500MC|E200Z4, 0, {RT, RA, RB}},
19a6653c 6904
ac8f0f72 6905{"lvtlx", X(31,581), X_MASK, E6500, 0, {VD, RA0, RB}},
aea77599 6906
14b57c7c 6907{"lwat", X(31,582), X_MASK, POWER9, 0, {RT, RA0, FC}},
a680de9a 6908
14b57c7c 6909{"lwfcmux", APU(31,583,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
081ba1b3 6910
14b57c7c 6911{"lxsdx", X(31,588), XX1_MASK, PPCVSX, 0, {XT6, RA0, RB}},
066be9f7 6912
14b57c7c 6913{"mfsr", X(31,595), XRB_MASK|(1<<20), COM, NON32, {RT, SR}},
252b5132 6914
14b57c7c
AM
6915{"lswi", X(31,597), X_MASK, PPCCOM, E500|E500MC, {RT, RAX, NBI}},
6916{"lsi", X(31,597), X_MASK, PWRCOM, 0, {RT, RA0, NB}},
252b5132 6917
dc302c00 6918{"hwsync", XSYNC(31,598,0), 0xffffffff, POWER4, BOOKE|PPC476, {0}},
e01d869a 6919{"lwsync", XSYNC(31,598,1), 0xffffffff, PPC, E500, {0}},
14b57c7c 6920{"ptesync", XSYNC(31,598,2), 0xffffffff, PPC64, 0, {0}},
fd486b63
PB
6921{"sync", X(31,598), XSYNCLE_MASK, E6500, 0, {LS, ESYNC}},
6922{"sync", X(31,598), XSYNC_MASK, PPCCOM, BOOKE|PPC476, {LS}},
14b57c7c
AM
6923{"msync", X(31,598), 0xffffffff, BOOKE|PPCA2|PPC476, 0, {0}},
6924{"sync", X(31,598), 0xffffffff, BOOKE|PPC476, E6500, {0}},
6925{"lwsync", X(31,598), 0xffffffff, E500, 0, {0}},
6926{"dcs", X(31,598), 0xffffffff, PWRCOM, 0, {0}},
418c1742 6927
14b57c7c 6928{"lfdx", X(31,599), X_MASK, COM, PPCEFS, {FRT, RA0, RB}},
23976049 6929
066be9f7 6930{"mffgpr", XRC(31,607,0), XRA_MASK, POWER6, POWER7, {FRT, RB}},
14b57c7c 6931{"lfdepx", X(31,607), X_MASK, E500MC|PPCA2, 0, {FRT, RA0, RB}},
252b5132 6932
14b57c7c 6933{"lddx", X(31,611), X_MASK, E500MC, 0, {RT, RA, RB}},
19a6653c 6934
ac8f0f72 6935{"lvswx", X(31,613), X_MASK, E6500, 0, {VD, RA0, RB}},
aea77599 6936
14b57c7c 6937{"ldat", X(31,614), X_MASK, POWER9, 0, {RT, RA0, FC}},
a680de9a 6938
14b57c7c 6939{"lqfcmux", APU(31,615,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
081ba1b3 6940
14b57c7c
AM
6941{"nego", XO(31,104,1,0), XORB_MASK, COM, 0, {RT, RA}},
6942{"nego.", XO(31,104,1,1), XORB_MASK, COM, 0, {RT, RA}},
252b5132 6943
14b57c7c
AM
6944{"mulo", XO(31,107,1,0), XO_MASK, M601, 0, {RT, RA, RB}},
6945{"mulo.", XO(31,107,1,1), XO_MASK, M601, 0, {RT, RA, RB}},
252b5132 6946
14b57c7c 6947{"mfsri", X(31,627), X_MASK, M601, 0, {RT, RA, RB}},
252b5132 6948
14b57c7c 6949{"dclst", X(31,630), XRB_MASK, M601, 0, {RS, RA}},
252b5132 6950
14b57c7c 6951{"lfdux", X(31,631), X_MASK, COM, PPCEFS, {FRT, RAS, RB}},
252b5132 6952
dfdaec14 6953{"stbdcbx", X(31,642), X_MASK, E200Z4, 0, {RS, RA, RB}},
a8cc8a54 6954{"stbdx", X(31,643), X_MASK, E500MC|E200Z4, 0, {RS, RA, RB}},
19a6653c 6955
14b57c7c
AM
6956{"stvlx", X(31,647), X_MASK, CELL, 0, {VS, RA0, RB}},
6957{"stbfcmux", APU(31,647,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
23976049 6958
14b57c7c 6959{"stxsspx", X(31,652), XX1_MASK, PPCVSX2, 0, {XS6, RA0, RB}},
c0637f3a 6960
14b57c7c 6961{"tbegin.", XRC(31,654,1), XRTLRARB_MASK, PPCHTM, 0, {HTM_R}},
5817ffd1 6962
14b57c7c
AM
6963{"subfeo", XO(31,136,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6964{"sfeo", XO(31,136,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6965{"subfeo.", XO(31,136,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6966{"sfeo.", XO(31,136,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
252b5132 6967
14b57c7c
AM
6968{"addeo", XO(31,138,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6969{"aeo", XO(31,138,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6970{"addeo.", XO(31,138,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6971{"aeo.", XO(31,138,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
252b5132 6972
14b57c7c 6973{"mfsrin", X(31,659), XRA_MASK, PPC, NON32, {RT, RB}},
418c1742 6974
14b57c7c 6975{"stdbrx", X(31,660), X_MASK, CELL|POWER7|PPCA2, 0, {RS, RA0, RB}},
252b5132 6976
14b57c7c
AM
6977{"stswx", X(31,661), X_MASK, PPCCOM, E500|E500MC, {RS, RA0, RB}},
6978{"stsx", X(31,661), X_MASK, PWRCOM, 0, {RS, RA0, RB}},
418c1742 6979
14b57c7c
AM
6980{"stwbrx", X(31,662), X_MASK, PPCCOM, 0, {RS, RA0, RB}},
6981{"stbrx", X(31,662), X_MASK, PWRCOM, 0, {RS, RA0, RB}},
252b5132 6982
14b57c7c 6983{"stfsx", X(31,663), X_MASK, COM, PPCEFS, {FRS, RA0, RB}},
ede602d7 6984
14b57c7c
AM
6985{"srq", XRC(31,664,0), X_MASK, M601, 0, {RA, RS, RB}},
6986{"srq.", XRC(31,664,1), X_MASK, M601, 0, {RA, RS, RB}},
252b5132 6987
14b57c7c
AM
6988{"sre", XRC(31,665,0), X_MASK, M601, 0, {RA, RS, RB}},
6989{"sre.", XRC(31,665,1), X_MASK, M601, 0, {RA, RS, RB}},
252b5132 6990
dfdaec14 6991{"sthdcbx", X(31,674), X_MASK, E200Z4, 0, {RS, RA, RB}},
a8cc8a54 6992{"sthdx", X(31,675), X_MASK, E500MC|E200Z4, 0, {RS, RA, RB}},
19a6653c 6993
ac8f0f72 6994{"stvfrx", X(31,677), X_MASK, E6500, 0, {VS, RA0, RB}},
aea77599 6995
14b57c7c
AM
6996{"stvrx", X(31,679), X_MASK, CELL, 0, {VS, RA0, RB}},
6997{"sthfcmux", APU(31,679,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
252b5132 6998
14b57c7c
AM
6999{"tendall.", XRC(31,686,1)|(1<<25), XRTRARB_MASK, PPCHTM, 0, {0}},
7000{"tend.", XRC(31,686,1), XRTARARB_MASK, PPCHTM, 0, {HTM_A}},
5817ffd1 7001
14b57c7c 7002{"stbcx.", XRC(31,694,1), X_MASK, POWER8|E6500, 0, {RS, RA0, RB}},
066be9f7 7003
14b57c7c 7004{"stfsux", X(31,695), X_MASK, COM, PPCEFS, {FRS, RAS, RB}},
252b5132 7005
14b57c7c
AM
7006{"sriq", XRC(31,696,0), X_MASK, M601, 0, {RA, RS, SH}},
7007{"sriq.", XRC(31,696,1), X_MASK, M601, 0, {RA, RS, SH}},
252b5132 7008
dfdaec14 7009{"stwdcbx", X(31,706), X_MASK, E200Z4, 0, {RS, RA, RB}},
a8cc8a54 7010{"stwdx", X(31,707), X_MASK, E500MC|E200Z4, 0, {RS, RA, RB}},
19a6653c 7011
ac8f0f72 7012{"stvflx", X(31,709), X_MASK, E6500, 0, {VS, RA0, RB}},
aea77599 7013
14b57c7c 7014{"stwat", X(31,710), X_MASK, POWER9, 0, {RS, RA0, FC}},
a680de9a 7015
14b57c7c 7016{"stwfcmux", APU(31,711,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
081ba1b3 7017
14b57c7c 7018{"stxsdx", X(31,716), XX1_MASK, PPCVSX, 0, {XS6, RA0, RB}},
066be9f7 7019
14b57c7c 7020{"tcheck", X(31,718), XRTBFRARB_MASK, PPCHTM, 0, {BF}},
5817ffd1 7021
14b57c7c
AM
7022{"subfzeo", XO(31,200,1,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
7023{"sfzeo", XO(31,200,1,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
7024{"subfzeo.", XO(31,200,1,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
7025{"sfzeo.", XO(31,200,1,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
418c1742 7026
14b57c7c
AM
7027{"addzeo", XO(31,202,1,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
7028{"azeo", XO(31,202,1,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
7029{"addzeo.", XO(31,202,1,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
7030{"azeo.", XO(31,202,1,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
fdd12ef3 7031
14b57c7c
AM
7032{"stswi", X(31,725), X_MASK, PPCCOM, E500|E500MC, {RS, RA0, NB}},
7033{"stsi", X(31,725), X_MASK, PWRCOM, 0, {RS, RA0, NB}},
252b5132 7034
14b57c7c 7035{"sthcx.", XRC(31,726,1), X_MASK, POWER8|E6500, 0, {RS, RA0, RB}},
066be9f7 7036
14b57c7c 7037{"stfdx", X(31,727), X_MASK, COM, PPCEFS, {FRS, RA0, RB}},
252b5132 7038
14b57c7c
AM
7039{"srlq", XRC(31,728,0), X_MASK, M601, 0, {RA, RS, RB}},
7040{"srlq.", XRC(31,728,1), X_MASK, M601, 0, {RA, RS, RB}},
418c1742 7041
14b57c7c
AM
7042{"sreq", XRC(31,729,0), X_MASK, M601, 0, {RA, RS, RB}},
7043{"sreq.", XRC(31,729,1), X_MASK, M601, 0, {RA, RS, RB}},
252b5132 7044
066be9f7 7045{"mftgpr", XRC(31,735,0), XRA_MASK, POWER6, POWER7, {RT, FRB}},
14b57c7c 7046{"stfdepx", X(31,735), X_MASK, E500MC|PPCA2, 0, {FRS, RA0, RB}},
252b5132 7047
14b57c7c 7048{"stddx", X(31,739), X_MASK, E500MC, 0, {RS, RA, RB}},
19a6653c 7049
ac8f0f72 7050{"stvswx", X(31,741), X_MASK, E6500, 0, {VS, RA0, RB}},
aea77599 7051
14b57c7c 7052{"stdat", X(31,742), X_MASK, POWER9, 0, {RS, RA0, FC}},
a680de9a 7053
14b57c7c 7054{"stqfcmux", APU(31,743,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
081ba1b3 7055
14b57c7c
AM
7056{"subfmeo", XO(31,232,1,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
7057{"sfmeo", XO(31,232,1,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
7058{"subfmeo.", XO(31,232,1,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
7059{"sfmeo.", XO(31,232,1,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
252b5132 7060
14b57c7c
AM
7061{"mulldo", XO(31,233,1,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
7062{"mulldo.", XO(31,233,1,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
252b5132 7063
14b57c7c
AM
7064{"addmeo", XO(31,234,1,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
7065{"ameo", XO(31,234,1,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
7066{"addmeo.", XO(31,234,1,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
7067{"ameo.", XO(31,234,1,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
418c1742 7068
14b57c7c
AM
7069{"mullwo", XO(31,235,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7070{"mulso", XO(31,235,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
7071{"mullwo.", XO(31,235,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7072{"mulso.", XO(31,235,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
702f0fb4 7073
14b57c7c
AM
7074{"tsuspend.", XRCL(31,750,0,1), XRTRARB_MASK,PPCHTM, 0, {0}},
7075{"tresume.", XRCL(31,750,1,1), XRTRARB_MASK,PPCHTM, 0, {0}},
7076{"tsr.", XRC(31,750,1), XRTLRARB_MASK,PPCHTM, 0, {L}},
5817ffd1 7077
14b57c7c 7078{"darn", X(31,755), XLRAND_MASK, POWER9, 0, {RT, LRAND}},
a680de9a 7079
14b57c7c
AM
7080{"dcba", X(31,758), XRT_MASK, PPC405|PPC7450|BOOKE|PPCA2|PPC476, 0, {RA0, RB}},
7081{"dcbal", XOPL(31,758,1), XRT_MASK, E500MC, 0, {RA0, RB}},
252b5132 7082
14b57c7c 7083{"stfdux", X(31,759), X_MASK, COM, PPCEFS, {FRS, RAS, RB}},
252b5132 7084
14b57c7c
AM
7085{"srliq", XRC(31,760,0), X_MASK, M601, 0, {RA, RS, SH}},
7086{"srliq.", XRC(31,760,1), X_MASK, M601, 0, {RA, RS, SH}},
252b5132 7087
ac8f0f72 7088{"lvsm", X(31,773), X_MASK, E6500, 0, {VD, RA0, RB}},
a680de9a 7089
fd486b63 7090{"copy", XOPL(31,774,1), XRT_MASK, POWER9, 0, {RA0, RB}},
a680de9a 7091
ac8f0f72 7092{"stvepxl", X(31,775), X_MASK, E6500, 0, {VS, RA0, RB}},
14b57c7c
AM
7093{"lvlxl", X(31,775), X_MASK, CELL, 0, {VD, RA0, RB}},
7094{"ldfcmux", APU(31,775,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
ede602d7 7095
14b57c7c
AM
7096{"dozo", XO(31,264,1,0), XO_MASK, M601, 0, {RT, RA, RB}},
7097{"dozo.", XO(31,264,1,1), XO_MASK, M601, 0, {RT, RA, RB}},
252b5132 7098
14b57c7c
AM
7099{"addo", XO(31,266,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7100{"caxo", XO(31,266,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
7101{"addo.", XO(31,266,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
7102{"caxo.", XO(31,266,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
252b5132 7103
14b57c7c
AM
7104{"modsd", X(31,777), X_MASK, POWER9, 0, {RT, RA, RB}},
7105{"modsw", X(31,779), X_MASK, POWER9, 0, {RT, RA, RB}},
a680de9a 7106
14b57c7c
AM
7107{"lxvw4x", X(31,780), XX1_MASK, PPCVSX, 0, {XT6, RA0, RB}},
7108{"lxsibzx", X(31,781), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
066be9f7 7109
14b57c7c 7110{"tabortwc.", XRC(31,782,1), X_MASK, PPCHTM, 0, {TO, RA, RB}},
5817ffd1 7111
14b57c7c 7112{"tlbivax", X(31,786), XRT_MASK, BOOKE|PPCA2|PPC476, 0, {RA0, RB}},
252b5132 7113
14b57c7c 7114{"lwzcix", X(31,789), X_MASK, POWER6, 0, {RT, RA0, RB}},
252b5132 7115
14b57c7c 7116{"lhbrx", X(31,790), X_MASK, COM, 0, {RT, RA0, RB}},
252b5132 7117
73f07bff 7118{"lfdpx", X(31,791), X_MASK|Q_MASK, POWER6, POWER7, {FRTp, RA0, RB}},
14b57c7c 7119{"lfqx", X(31,791), X_MASK, POWER2, 0, {FRT, RA, RB}},
418c1742 7120
14b57c7c
AM
7121{"sraw", XRC(31,792,0), X_MASK, PPCCOM, 0, {RA, RS, RB}},
7122{"sra", XRC(31,792,0), X_MASK, PWRCOM, 0, {RA, RS, RB}},
7123{"sraw.", XRC(31,792,1), X_MASK, PPCCOM, 0, {RA, RS, RB}},
7124{"sra.", XRC(31,792,1), X_MASK, PWRCOM, 0, {RA, RS, RB}},
fdd12ef3 7125
14b57c7c
AM
7126{"srad", XRC(31,794,0), X_MASK, PPC64, 0, {RA, RS, RB}},
7127{"srad.", XRC(31,794,1), X_MASK, PPC64, 0, {RA, RS, RB}},
252b5132 7128
74081948 7129{"evlddepx", VX (31, 1598), VX_MASK, PPCSPE, 0, {RT, RA, RB}},
14b57c7c 7130{"lfddx", X(31,803), X_MASK, E500MC, 0, {FRT, RA, RB}},
19a6653c 7131
ac8f0f72
AM
7132{"lvtrxl", X(31,805), X_MASK, E6500, 0, {VD, RA0, RB}},
7133{"stvepx", X(31,807), X_MASK, E6500, 0, {VS, RA0, RB}},
14b57c7c 7134{"lvrxl", X(31,807), X_MASK, CELL, 0, {VD, RA0, RB}},
252b5132 7135
14b57c7c
AM
7136{"lxvh8x", X(31,812), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
7137{"lxsihzx", X(31,813), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
a680de9a 7138
14b57c7c 7139{"tabortdc.", XRC(31,814,1), X_MASK, PPCHTM, 0, {TO, RA, RB}},
5817ffd1 7140
14b57c7c 7141{"rac", X(31,818), X_MASK, M601, 0, {RT, RA, RB}},
252b5132 7142
14b57c7c 7143{"erativax", X(31,819), X_MASK, PPCA2, 0, {RS, RA0, RB}},
e0d602ec 7144
14b57c7c 7145{"lhzcix", X(31,821), X_MASK, POWER6, 0, {RT, RA0, RB}},
252b5132 7146
14b57c7c 7147{"dss", XDSS(31,822,0), XDSS_MASK, PPCVEC, 0, {STRM}},
252b5132 7148
14b57c7c 7149{"lfqux", X(31,823), X_MASK, POWER2, 0, {FRT, RA, RB}},
fdd12ef3 7150
14b57c7c
AM
7151{"srawi", XRC(31,824,0), X_MASK, PPCCOM, 0, {RA, RS, SH}},
7152{"srai", XRC(31,824,0), X_MASK, PWRCOM, 0, {RA, RS, SH}},
7153{"srawi.", XRC(31,824,1), X_MASK, PPCCOM, 0, {RA, RS, SH}},
7154{"srai.", XRC(31,824,1), X_MASK, PWRCOM, 0, {RA, RS, SH}},
702f0fb4 7155
14b57c7c
AM
7156{"sradi", XS(31,413,0), XS_MASK, PPC64, 0, {RA, RS, SH6}},
7157{"sradi.", XS(31,413,1), XS_MASK, PPC64, 0, {RA, RS, SH6}},
e0c21649 7158
ac8f0f72 7159{"lvtlxl", X(31,837), X_MASK, E6500, 0, {VD, RA0, RB}},
aea77599 7160
fd486b63 7161{"cpabort", X(31,838), XRTRARB_MASK,POWER9, 0, {0}},
a680de9a 7162
14b57c7c
AM
7163{"divo", XO(31,331,1,0), XO_MASK, M601, 0, {RT, RA, RB}},
7164{"divo.", XO(31,331,1,1), XO_MASK, M601, 0, {RT, RA, RB}},
252b5132 7165
14b57c7c 7166{"lxvd2x", X(31,844), XX1_MASK, PPCVSX, 0, {XT6, RA0, RB}},
a680de9a 7167{"lxvx", X(31,844), XX1_MASK, POWER8, POWER9|PPCVSX3, {XT6, RA0, RB}},
9b4e5766 7168
14b57c7c 7169{"tabortwci.", XRC(31,846,1), X_MASK, PPCHTM, 0, {TO, RA, HTM_SI}},
5817ffd1 7170
14b57c7c 7171{"tlbsrx.", XRC(31,850,1), XRT_MASK, PPCA2, 0, {RA0, RB}},
e0d602ec 7172
1224c05d
PB
7173{"slbiag", X(31,850), XRLARB_MASK, POWER10, 0, {RS, A_L}},
7174{"slbiag", X(31,850), XRARB_MASK, POWER9, POWER10, {RS}},
7175
14b57c7c 7176{"slbmfev", X(31,851), XRLA_MASK, POWER9, 0, {RT, RB, A_L}},
a680de9a 7177{"slbmfev", X(31,851), XRA_MASK, PPC64, POWER9, {RT, RB}},
252b5132 7178
14b57c7c 7179{"lbzcix", X(31,853), X_MASK, POWER6, 0, {RT, RA0, RB}},
418c1742 7180
9fe54b1c 7181{"eieio", X(31,854), 0xffffffff, PPC, BOOKE|PPCA2|PPC476, {0}},
14b57c7c
AM
7182{"mbar", X(31,854), X_MASK, BOOKE|PPCA2|PPC476, 0, {MO}},
7183{"eieio", XMBAR(31,854,1),0xffffffff, E500, 0, {0}},
7184{"eieio", X(31,854), 0xffffffff, PPCA2|PPC476, 0, {0}},
418c1742 7185
14b57c7c 7186{"lfiwax", X(31,855), X_MASK, POWER6|PPCA2|PPC476, 0, {FRT, RA0, RB}},
418c1742 7187
ac8f0f72 7188{"lvswxl", X(31,869), X_MASK, E6500, 0, {VD, RA0, RB}},
aea77599 7189
14b57c7c
AM
7190{"abso", XO(31,360,1,0), XORB_MASK, M601, 0, {RT, RA}},
7191{"abso.", XO(31,360,1,1), XORB_MASK, M601, 0, {RT, RA}},
702f0fb4 7192
14b57c7c
AM
7193{"divso", XO(31,363,1,0), XO_MASK, M601, 0, {RT, RA, RB}},
7194{"divso.", XO(31,363,1,1), XO_MASK, M601, 0, {RT, RA, RB}},
252b5132 7195
14b57c7c 7196{"lxvb16x", X(31,876), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
a680de9a 7197
14b57c7c 7198{"tabortdci.", XRC(31,878,1), X_MASK, PPCHTM, 0, {TO, RA, HTM_SI}},
5817ffd1 7199
14b57c7c 7200{"rmieg", X(31,882), XRTRA_MASK, POWER9, 0, {RB}},
a680de9a 7201
14b57c7c 7202{"ldcix", X(31,885), X_MASK, POWER6, 0, {RT, RA0, RB}},
252b5132 7203
14b57c7c 7204{"msgsync", X(31,886), 0xffffffff, POWER9, 0, {0}},
a680de9a 7205
14b57c7c 7206{"lfiwzx", X(31,887), X_MASK, POWER7|PPCA2, 0, {FRT, RA0, RB}},
066be9f7 7207
14b57c7c
AM
7208{"extswsli", XS(31,445,0), XS_MASK, POWER9, 0, {RA, RS, SH6}},
7209{"extswsli.", XS(31,445,1), XS_MASK, POWER9, 0, {RA, RS, SH6}},
a680de9a 7210
afef4fe9
PB
7211{"paste.", XRC(31,902,1), XLRT_MASK, POWER10, 0, {RA0, RB, L1OPT}},
7212{"paste.", XRCL(31,902,1,1),XRT_MASK, POWER9, POWER10, {RA0, RB}},
a680de9a 7213
14b57c7c
AM
7214{"stvlxl", X(31,903), X_MASK, CELL, 0, {VS, RA0, RB}},
7215{"stdfcmux", APU(31,903,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
252b5132 7216
14b57c7c
AM
7217{"divdeuo", XO(31,393,1,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
7218{"divdeuo.", XO(31,393,1,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
7219{"divweuo", XO(31,395,1,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
7220{"divweuo.", XO(31,395,1,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
066be9f7 7221
14b57c7c
AM
7222{"stxvw4x", X(31,908), XX1_MASK, PPCVSX, 0, {XS6, RA0, RB}},
7223{"stxsibx", X(31,909), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
066be9f7 7224
14b57c7c 7225{"tabort.", XRC(31,910,1), XRTRB_MASK, PPCHTM, 0, {RA}},
5817ffd1 7226
14b57c7c
AM
7227{"tlbsx", XRC(31,914,0), X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RTO, RA0, RB}},
7228{"tlbsx.", XRC(31,914,1), X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RTO, RA0, RB}},
252b5132 7229
14b57c7c 7230{"slbmfee", X(31,915), XRLA_MASK, POWER9, 0, {RT, RB, A_L}},
a680de9a 7231{"slbmfee", X(31,915), XRA_MASK, PPC64, POWER9, {RT, RB}},
702f0fb4 7232
14b57c7c 7233{"stwcix", X(31,917), X_MASK, POWER6, 0, {RS, RA0, RB}},
f5c120c5 7234
14b57c7c 7235{"sthbrx", X(31,918), X_MASK, COM, 0, {RS, RA0, RB}},
252b5132 7236
73f07bff 7237{"stfdpx", X(31,919), X_MASK|Q_MASK, POWER6, POWER7, {FRSp, RA0, RB}},
14b57c7c 7238{"stfqx", X(31,919), X_MASK, POWER2, 0, {FRS, RA0, RB}},
6ba045b1 7239
14b57c7c
AM
7240{"sraq", XRC(31,920,0), X_MASK, M601, 0, {RA, RS, RB}},
7241{"sraq.", XRC(31,920,1), X_MASK, M601, 0, {RA, RS, RB}},
702f0fb4 7242
14b57c7c
AM
7243{"srea", XRC(31,921,0), X_MASK, M601, 0, {RA, RS, RB}},
7244{"srea.", XRC(31,921,1), X_MASK, M601, 0, {RA, RS, RB}},
252b5132 7245
14b57c7c
AM
7246{"extsh", XRC(31,922,0), XRB_MASK, PPCCOM, 0, {RA, RS}},
7247{"exts", XRC(31,922,0), XRB_MASK, PWRCOM, 0, {RA, RS}},
7248{"extsh.", XRC(31,922,1), XRB_MASK, PPCCOM, 0, {RA, RS}},
7249{"exts.", XRC(31,922,1), XRB_MASK, PWRCOM, 0, {RA, RS}},
702f0fb4 7250
74081948 7251{"evstddepx", VX (31, 1854), VX_MASK, PPCSPE, 0, {RT, RA, RB}},
14b57c7c 7252{"stfddx", X(31,931), X_MASK, E500MC, 0, {FRS, RA, RB}},
19a6653c 7253
ac8f0f72 7254{"stvfrxl", X(31,933), X_MASK, E6500, 0, {VS, RA0, RB}},
aea77599 7255
14b57c7c 7256{"wclrone", XOPL2(31,934,2),XRT_MASK, PPCA2, 0, {RA0, RB}},
a5721ba2
AM
7257{"wclrall", X(31,934), XRARB_MASK, PPCA2, 0, {L2}},
7258{"wclr", X(31,934), X_MASK, PPCA2, 0, {L2, RA0, RB}},
85d4ac0b 7259
14b57c7c 7260{"stvrxl", X(31,935), X_MASK, CELL, 0, {VS, RA0, RB}},
6ba045b1 7261
14b57c7c
AM
7262{"divdeo", XO(31,425,1,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
7263{"divdeo.", XO(31,425,1,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
7264{"divweo", XO(31,427,1,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
7265{"divweo.", XO(31,427,1,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
066be9f7 7266
14b57c7c
AM
7267{"stxvh8x", X(31,940), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
7268{"stxsihx", X(31,941), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
a680de9a 7269
14b57c7c 7270{"treclaim.", XRC(31,942,1), XRTRB_MASK, PPCHTM, 0, {RA}},
5817ffd1 7271
e0d602ec
BE
7272{"tlbrehi", XTLB(31,946,0), XTLB_MASK, PPC403, PPCA2, {RT, RA}},
7273{"tlbrelo", XTLB(31,946,1), XTLB_MASK, PPC403, PPCA2, {RT, RA}},
14b57c7c 7274{"tlbre", X(31,946), X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RSO, RAOPT, SHO}},
702f0fb4 7275
14b57c7c 7276{"sthcix", X(31,949), X_MASK, POWER6, 0, {RS, RA0, RB}},
252b5132 7277
14b57c7c
AM
7278{"icswepx", XRC(31,950,0), X_MASK, PPCA2, 0, {RS, RA, RB}},
7279{"icswepx.", XRC(31,950,1), X_MASK, PPCA2, 0, {RS, RA, RB}},
51b5d4a8 7280
14b57c7c 7281{"stfqux", X(31,951), X_MASK, POWER2, 0, {FRS, RA, RB}},
252b5132 7282
14b57c7c
AM
7283{"sraiq", XRC(31,952,0), X_MASK, M601, 0, {RA, RS, SH}},
7284{"sraiq.", XRC(31,952,1), X_MASK, M601, 0, {RA, RS, SH}},
252b5132 7285
14b57c7c
AM
7286{"extsb", XRC(31,954,0), XRB_MASK, PPC, 0, {RA, RS}},
7287{"extsb.", XRC(31,954,1), XRB_MASK, PPC, 0, {RA, RS}},
252b5132 7288
ac8f0f72 7289{"stvflxl", X(31,965), X_MASK, E6500, 0, {VS, RA0, RB}},
aea77599 7290
62adc510 7291{"iccci", X(31,966), XRT_MASK, PPC403|PPC440|PPC476|TITAN|PPCA2, 0, {RAOPT, RBOPT}},
14b57c7c 7292{"ici", X(31,966), XRARB_MASK, PPCA2|PPC476, 0, {CT}},
43e65147 7293
14b57c7c
AM
7294{"divduo", XO(31,457,1,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
7295{"divduo.", XO(31,457,1,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
43e65147 7296
14b57c7c
AM
7297{"divwuo", XO(31,459,1,0), XO_MASK, PPC, 0, {RT, RA, RB}},
7298{"divwuo.", XO(31,459,1,1), XO_MASK, PPC, 0, {RT, RA, RB}},
252b5132 7299
14b57c7c 7300{"stxvd2x", X(31,972), XX1_MASK, PPCVSX, 0, {XS6, RA0, RB}},
a680de9a 7301{"stxvx", X(31,972), XX1_MASK, POWER8, POWER9|PPCVSX3, {XS6, RA0, RB}},
9b4e5766 7302
9fe54b1c 7303{"tlbld", X(31,978), XRTRA_MASK, PPC, PPC403|BOOKE|PPCA2|PPC476, {RB}},
14b57c7c
AM
7304{"tlbwehi", XTLB(31,978,0), XTLB_MASK, PPC403, 0, {RT, RA}},
7305{"tlbwelo", XTLB(31,978,1), XTLB_MASK, PPC403, 0, {RT, RA}},
7306{"tlbwe", X(31,978), X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RSO, RAOPT, SHO}},
418c1742 7307
14b57c7c 7308{"slbfee.", XRC(31,979,1), XRA_MASK, POWER6, 0, {RT, RB}},
c4e676f1 7309
14b57c7c 7310{"stbcix", X(31,981), X_MASK, POWER6, 0, {RS, RA0, RB}},
252b5132 7311
14b57c7c 7312{"icbi", X(31,982), XRT_MASK, PPC, 0, {RA0, RB}},
252b5132 7313
14b57c7c 7314{"stfiwx", X(31,983), X_MASK, PPC, PPCEFS, {FRS, RA0, RB}},
702f0fb4 7315
14b57c7c
AM
7316{"extsw", XRC(31,986,0), XRB_MASK, PPC64, 0, {RA, RS}},
7317{"extsw.", XRC(31,986,1), XRB_MASK, PPC64, 0, {RA, RS}},
252b5132 7318
14b57c7c 7319{"icbiep", XRT(31,991,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}},
19a6653c 7320
ac8f0f72 7321{"stvswxl", X(31,997), X_MASK, E6500, 0, {VS, RA0, RB}},
aea77599 7322
14b57c7c 7323{"icread", X(31,998), XRT_MASK, PPC403|PPC440|PPC476|TITAN, 0, {RA0, RB}},
252b5132 7324
14b57c7c
AM
7325{"nabso", XO(31,488,1,0), XORB_MASK, M601, 0, {RT, RA}},
7326{"nabso.", XO(31,488,1,1), XORB_MASK, M601, 0, {RT, RA}},
252b5132 7327
14b57c7c
AM
7328{"divdo", XO(31,489,1,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
7329{"divdo.", XO(31,489,1,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
43e65147 7330
14b57c7c
AM
7331{"divwo", XO(31,491,1,0), XO_MASK, PPC, 0, {RT, RA, RB}},
7332{"divwo.", XO(31,491,1,1), XO_MASK, PPC, 0, {RT, RA, RB}},
418c1742 7333
14b57c7c 7334{"stxvb16x", X(31,1004), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
a680de9a 7335
14b57c7c 7336{"trechkpt.", XRC(31,1006,1), XRTRARB_MASK,PPCHTM, 0, {0}},
702f0fb4 7337
14b57c7c 7338{"tlbli", X(31,1010), XRTRA_MASK, PPC, TITAN, {RB}},
252b5132 7339
14b57c7c 7340{"stdcix", X(31,1013), X_MASK, POWER6, 0, {RS, RA0, RB}},
418c1742 7341
14b57c7c
AM
7342{"dcbz", X(31,1014), XRT_MASK, PPC, 0, {RA0, RB}},
7343{"dclz", X(31,1014), XRT_MASK, PPC, 0, {RA0, RB}},
786e2c0f 7344
14b57c7c 7345{"dcbzep", XRT(31,1023,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}},
ede602d7 7346
14b57c7c 7347{"dcbzl", XOPL(31,1014,1), XRT_MASK, POWER4|E500MC, PPC476, {RA0, RB}},
252b5132 7348
14b57c7c
AM
7349{"cctpl", 0x7c210b78, 0xffffffff, CELL, 0, {0}},
7350{"cctpm", 0x7c421378, 0xffffffff, CELL, 0, {0}},
7351{"cctph", 0x7c631b78, 0xffffffff, CELL, 0, {0}},
252b5132 7352
14b57c7c
AM
7353{"dstt", XDSS(31,342,1), XDSS_MASK, PPCVEC, 0, {RA, RB, STRM}},
7354{"dststt", XDSS(31,374,1), XDSS_MASK, PPCVEC, 0, {RA, RB, STRM}},
7355{"dssall", XDSS(31,822,1), XDSS_MASK, PPCVEC, 0, {0}},
252b5132 7356
14b57c7c
AM
7357{"db8cyc", 0x7f9ce378, 0xffffffff, CELL, 0, {0}},
7358{"db10cyc", 0x7fbdeb78, 0xffffffff, CELL, 0, {0}},
7359{"db12cyc", 0x7fdef378, 0xffffffff, CELL, 0, {0}},
7360{"db16cyc", 0x7ffffb78, 0xffffffff, CELL, 0, {0}},
252b5132 7361
14b57c7c
AM
7362{"lwz", OP(32), OP_MASK, PPCCOM, PPCVLE, {RT, D, RA0}},
7363{"l", OP(32), OP_MASK, PWRCOM, PPCVLE, {RT, D, RA0}},
252b5132 7364
14b57c7c
AM
7365{"lwzu", OP(33), OP_MASK, PPCCOM, PPCVLE, {RT, D, RAL}},
7366{"lu", OP(33), OP_MASK, PWRCOM, PPCVLE, {RT, D, RA0}},
252b5132 7367
14b57c7c 7368{"lbz", OP(34), OP_MASK, COM, PPCVLE, {RT, D, RA0}},
252b5132 7369
14b57c7c 7370{"lbzu", OP(35), OP_MASK, COM, PPCVLE, {RT, D, RAL}},
252b5132 7371
14b57c7c
AM
7372{"stw", OP(36), OP_MASK, PPCCOM, PPCVLE, {RS, D, RA0}},
7373{"st", OP(36), OP_MASK, PWRCOM, PPCVLE, {RS, D, RA0}},
252b5132 7374
14b57c7c
AM
7375{"stwu", OP(37), OP_MASK, PPCCOM, PPCVLE, {RS, D, RAS}},
7376{"stu", OP(37), OP_MASK, PWRCOM, PPCVLE, {RS, D, RA0}},
252b5132 7377
14b57c7c 7378{"stb", OP(38), OP_MASK, COM, PPCVLE, {RS, D, RA0}},
252b5132 7379
14b57c7c 7380{"stbu", OP(39), OP_MASK, COM, PPCVLE, {RS, D, RAS}},
252b5132 7381
14b57c7c 7382{"lhz", OP(40), OP_MASK, COM, PPCVLE, {RT, D, RA0}},
252b5132 7383
14b57c7c 7384{"lhzu", OP(41), OP_MASK, COM, PPCVLE, {RT, D, RAL}},
252b5132 7385
14b57c7c 7386{"lha", OP(42), OP_MASK, COM, PPCVLE, {RT, D, RA0}},
252b5132 7387
14b57c7c 7388{"lhau", OP(43), OP_MASK, COM, PPCVLE, {RT, D, RAL}},
252b5132 7389
14b57c7c 7390{"sth", OP(44), OP_MASK, COM, PPCVLE, {RS, D, RA0}},
252b5132 7391
14b57c7c 7392{"sthu", OP(45), OP_MASK, COM, PPCVLE, {RS, D, RAS}},
252b5132 7393
14b57c7c
AM
7394{"lmw", OP(46), OP_MASK, PPCCOM, PPCVLE, {RT, D, RAM}},
7395{"lm", OP(46), OP_MASK, PWRCOM, PPCVLE, {RT, D, RA0}},
252b5132 7396
14b57c7c
AM
7397{"stmw", OP(47), OP_MASK, PPCCOM, PPCVLE, {RS, D, RA0}},
7398{"stm", OP(47), OP_MASK, PWRCOM, PPCVLE, {RS, D, RA0}},
252b5132 7399
14b57c7c 7400{"lfs", OP(48), OP_MASK, COM, PPCEFS|PPCVLE, {FRT, D, RA0}},
252b5132 7401
14b57c7c 7402{"lfsu", OP(49), OP_MASK, COM, PPCEFS|PPCVLE, {FRT, D, RAS}},
252b5132 7403
14b57c7c 7404{"lfd", OP(50), OP_MASK, COM, PPCEFS|PPCVLE, {FRT, D, RA0}},
252b5132 7405
14b57c7c 7406{"lfdu", OP(51), OP_MASK, COM, PPCEFS|PPCVLE, {FRT, D, RAS}},
252b5132 7407
14b57c7c 7408{"stfs", OP(52), OP_MASK, COM, PPCEFS|PPCVLE, {FRS, D, RA0}},
adadcc0c 7409
14b57c7c 7410{"stfsu", OP(53), OP_MASK, COM, PPCEFS|PPCVLE, {FRS, D, RAS}},
252b5132 7411
14b57c7c 7412{"stfd", OP(54), OP_MASK, COM, PPCEFS|PPCVLE, {FRS, D, RA0}},
c3d65c1c 7413
14b57c7c 7414{"stfdu", OP(55), OP_MASK, COM, PPCEFS|PPCVLE, {FRS, D, RAS}},
252b5132 7415
73f07bff 7416{"lq", OP(56), OP_MASK|Q_MASK, POWER4, PPC476|PPCVLE, {RTQ, DQ, RAQ}},
14b57c7c
AM
7417{"psq_l", OP(56), OP_MASK, PPCPS, PPCVLE, {FRT,PSD,RA,PSW,PSQ}},
7418{"lfq", OP(56), OP_MASK, POWER2, PPCVLE, {FRT, D, RA0}},
418c1742 7419
14b57c7c
AM
7420{"lxsd", DSO(57,2), DS_MASK, PPCVSX3, PPCVLE, {VD, DS, RA0}},
7421{"lxssp", DSO(57,3), DS_MASK, PPCVSX3, PPCVLE, {VD, DS, RA0}},
73f07bff 7422{"lfdp", OP(57), OP_MASK|Q_MASK, POWER6, POWER7|PPCVLE, {FRTp, DS, RA0}},
14b57c7c
AM
7423{"psq_lu", OP(57), OP_MASK, PPCPS, PPCVLE, {FRT,PSD,RA,PSW,PSQ}},
7424{"lfqu", OP(57), OP_MASK, POWER2, PPCVLE, {FRT, D, RA0}},
802a735e 7425
14b57c7c
AM
7426{"ld", DSO(58,0), DS_MASK, PPC64, PPCVLE, {RT, DS, RA0}},
7427{"ldu", DSO(58,1), DS_MASK, PPC64, PPCVLE, {RT, DS, RAL}},
7428{"lwa", DSO(58,2), DS_MASK, PPC64, PPCVLE, {RT, DS, RA0}},
702f0fb4 7429
14b57c7c
AM
7430{"dadd", XRC(59,2,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
7431{"dadd.", XRC(59,2,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
252b5132 7432
14b57c7c
AM
7433{"dqua", ZRC(59,3,0), Z2_MASK, POWER6, PPCVLE, {FRT,FRA,FRB,RMC}},
7434{"dqua.", ZRC(59,3,1), Z2_MASK, POWER6, PPCVLE, {FRT,FRA,FRB,RMC}},
252b5132 7435
14b57c7c
AM
7436{"fdivs", A(59,18,0), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
7437{"fdivs.", A(59,18,1), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
252b5132 7438
14b57c7c
AM
7439{"fsubs", A(59,20,0), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
7440{"fsubs.", A(59,20,1), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
252b5132 7441
14b57c7c
AM
7442{"fadds", A(59,21,0), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
7443{"fadds.", A(59,21,1), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
252b5132 7444
14b57c7c
AM
7445{"fsqrts", A(59,22,0), AFRAFRC_MASK, PPC, TITAN|PPCVLE, {FRT, FRB}},
7446{"fsqrts.", A(59,22,1), AFRAFRC_MASK, PPC, TITAN|PPCVLE, {FRT, FRB}},
252b5132 7447
14b57c7c
AM
7448{"fres", A(59,24,0), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
7449{"fres", A(59,24,0), AFRALFRC_MASK, PPC, POWER7|PPCVLE, {FRT, FRB, A_L}},
7450{"fres.", A(59,24,1), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
7451{"fres.", A(59,24,1), AFRALFRC_MASK, PPC, POWER7|PPCVLE, {FRT, FRB, A_L}},
1ed8e1e4 7452
14b57c7c
AM
7453{"fmuls", A(59,25,0), AFRB_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC}},
7454{"fmuls.", A(59,25,1), AFRB_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC}},
252b5132 7455
14b57c7c
AM
7456{"frsqrtes", A(59,26,0), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
7457{"frsqrtes", A(59,26,0), AFRALFRC_MASK, POWER5, POWER7|PPCVLE, {FRT, FRB, A_L}},
7458{"frsqrtes.", A(59,26,1), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
7459{"frsqrtes.", A(59,26,1), AFRALFRC_MASK, POWER5, POWER7|PPCVLE, {FRT, FRB, A_L}},
252b5132 7460
14b57c7c
AM
7461{"fmsubs", A(59,28,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
7462{"fmsubs.", A(59,28,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
252b5132 7463
14b57c7c
AM
7464{"fmadds", A(59,29,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
7465{"fmadds.", A(59,29,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
252b5132 7466
14b57c7c
AM
7467{"fnmsubs", A(59,30,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
7468{"fnmsubs.", A(59,30,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
702f0fb4 7469
14b57c7c
AM
7470{"fnmadds", A(59,31,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
7471{"fnmadds.", A(59,31,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
702f0fb4 7472
14b57c7c
AM
7473{"dmul", XRC(59,34,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
7474{"dmul.", XRC(59,34,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
702f0fb4 7475
14b57c7c
AM
7476{"drrnd", ZRC(59,35,0), Z2_MASK, POWER6, PPCVLE, {FRT, FRA, FRB, RMC}},
7477{"drrnd.", ZRC(59,35,1), Z2_MASK, POWER6, PPCVLE, {FRT, FRA, FRB, RMC}},
702f0fb4 7478
14b57c7c
AM
7479{"dscli", ZRC(59,66,0), Z_MASK, POWER6, PPCVLE, {FRT, FRA, SH16}},
7480{"dscli.", ZRC(59,66,1), Z_MASK, POWER6, PPCVLE, {FRT, FRA, SH16}},
702f0fb4 7481
14b57c7c
AM
7482{"dquai", ZRC(59,67,0), Z2_MASK, POWER6, PPCVLE, {TE, FRT,FRB,RMC}},
7483{"dquai.", ZRC(59,67,1), Z2_MASK, POWER6, PPCVLE, {TE, FRT,FRB,RMC}},
702f0fb4 7484
14b57c7c
AM
7485{"dscri", ZRC(59,98,0), Z_MASK, POWER6, PPCVLE, {FRT, FRA, SH16}},
7486{"dscri.", ZRC(59,98,1), Z_MASK, POWER6, PPCVLE, {FRT, FRA, SH16}},
702f0fb4 7487
14b57c7c
AM
7488{"drintx", ZRC(59,99,0), Z2_MASK, POWER6, PPCVLE, {R, FRT, FRB, RMC}},
7489{"drintx.", ZRC(59,99,1), Z2_MASK, POWER6, PPCVLE, {R, FRT, FRB, RMC}},
702f0fb4 7490
14b57c7c 7491{"dcmpo", X(59,130), X_MASK, POWER6, PPCVLE, {BF, FRA, FRB}},
702f0fb4 7492
14b57c7c
AM
7493{"dtstex", X(59,162), X_MASK, POWER6, PPCVLE, {BF, FRA, FRB}},
7494{"dtstdc", Z(59,194), Z_MASK, POWER6, PPCVLE, {BF, FRA, DCM}},
7495{"dtstdg", Z(59,226), Z_MASK, POWER6, PPCVLE, {BF, FRA, DGM}},
7496
7497{"drintn", ZRC(59,227,0), Z2_MASK, POWER6, PPCVLE, {R, FRT, FRB, RMC}},
7498{"drintn.", ZRC(59,227,1), Z2_MASK, POWER6, PPCVLE, {R, FRT, FRB, RMC}},
7499
7500{"dctdp", XRC(59,258,0), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
7501{"dctdp.", XRC(59,258,1), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
7502
7503{"dctfix", XRC(59,290,0), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
7504{"dctfix.", XRC(59,290,1), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
7505
7506{"ddedpd", XRC(59,322,0), X_MASK, POWER6, PPCVLE, {SP, FRT, FRB}},
7507{"ddedpd.", XRC(59,322,1), X_MASK, POWER6, PPCVLE, {SP, FRT, FRB}},
7508
7509{"dxex", XRC(59,354,0), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
7510{"dxex.", XRC(59,354,1), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
7511
7512{"dsub", XRC(59,514,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
7513{"dsub.", XRC(59,514,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
7514
7515{"ddiv", XRC(59,546,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
7516{"ddiv.", XRC(59,546,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
7517
7518{"dcmpu", X(59,642), X_MASK, POWER6, PPCVLE, {BF, FRA, FRB}},
7519
7520{"dtstsf", X(59,674), X_MASK, POWER6, PPCVLE, {BF, FRA, FRB}},
7521{"dtstsfi", X(59,675), X_MASK|1<<22,POWER9, PPCVLE, {BF, UIM6, FRB}},
7522
7523{"drsp", XRC(59,770,0), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
7524{"drsp.", XRC(59,770,1), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
7525
7526{"dcffix", XRC(59,802,0), X_MASK|FRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
7527{"dcffix.", XRC(59,802,1), X_MASK|FRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
7528
7529{"denbcd", XRC(59,834,0), X_MASK, POWER6, PPCVLE, {S, FRT, FRB}},
7530{"denbcd.", XRC(59,834,1), X_MASK, POWER6, PPCVLE, {S, FRT, FRB}},
7531
7532{"fcfids", XRC(59,846,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
7533{"fcfids.", XRC(59,846,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
7534
7535{"diex", XRC(59,866,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
7536{"diex.", XRC(59,866,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
7537
7538{"fcfidus", XRC(59,974,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
7539{"fcfidus.", XRC(59,974,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
7540
7541{"xsaddsp", XX3(60,0), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
7542{"xsmaddasp", XX3(60,1), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
7543{"xxsldwi", XX3(60,2), XX3SHW_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6, SHW}},
7544{"xscmpeqdp", XX3(60,3), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
7545{"xsrsqrtesp", XX2(60,10), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
7546{"xssqrtsp", XX2(60,11), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
7547{"xxsel", XX4(60,3), XX4_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6, XC6}},
7548{"xssubsp", XX3(60,8), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
7549{"xsmaddmsp", XX3(60,9), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
98553ad3 7550{"xxspltd", XX3(60,10), XX3DM_MASK, PPCVSX, PPCVLE, {XT6, XAB6, DMEX}},
14b57c7c 7551{"xxmrghd", XX3(60,10), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
98553ad3 7552{"xxswapd", XX3(60,10)|(2<<8), XX3_MASK, PPCVSX, PPCVLE, {XT6, XAB6}},
14b57c7c
AM
7553{"xxmrgld", XX3(60,10)|(3<<8), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7554{"xxpermdi", XX3(60,10), XX3DM_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6, DM}},
7555{"xscmpgtdp", XX3(60,11), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
7556{"xsresp", XX2(60,26), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
7557{"xsmulsp", XX3(60,16), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
7558{"xsmsubasp", XX3(60,17), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
7559{"xxmrghw", XX3(60,18), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7560{"xscmpgedp", XX3(60,19), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
7561{"xsdivsp", XX3(60,24), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
7562{"xsmsubmsp", XX3(60,25), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
7563{"xxperm", XX3(60,26), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
7564{"xsadddp", XX3(60,32), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7565{"xsmaddadp", XX3(60,33), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7566{"xscmpudp", XX3(60,35), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}},
7567{"xscvdpuxws", XX2(60,72), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7568{"xsrdpi", XX2(60,73), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7569{"xsrsqrtedp", XX2(60,74), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7570{"xssqrtdp", XX2(60,75), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7571{"xssubdp", XX3(60,40), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7572{"xsmaddmdp", XX3(60,41), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7573{"xscmpodp", XX3(60,43), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}},
7574{"xscvdpsxws", XX2(60,88), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7575{"xsrdpiz", XX2(60,89), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7576{"xsredp", XX2(60,90), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7577{"xsmuldp", XX3(60,48), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7578{"xsmsubadp", XX3(60,49), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7579{"xxmrglw", XX3(60,50), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7580{"xsrdpip", XX2(60,105), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7581{"xstsqrtdp", XX2(60,106), XX2BF_MASK, PPCVSX, PPCVLE, {BF, XB6}},
7582{"xsrdpic", XX2(60,107), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7583{"xsdivdp", XX3(60,56), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7584{"xsmsubmdp", XX3(60,57), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7585{"xxpermr", XX3(60,58), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
7586{"xscmpexpdp", XX3(60,59), XX3BF_MASK, PPCVSX3, PPCVLE, {BF, XA6, XB6}},
7587{"xsrdpim", XX2(60,121), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7588{"xstdivdp", XX3(60,61), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}},
7589{"xvaddsp", XX3(60,64), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7590{"xvmaddasp", XX3(60,65), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7591{"xvcmpeqsp", XX3RC(60,67,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7592{"xvcmpeqsp.", XX3RC(60,67,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7593{"xvcvspuxws", XX2(60,136), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7594{"xvrspi", XX2(60,137), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7595{"xvrsqrtesp", XX2(60,138), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7596{"xvsqrtsp", XX2(60,139), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7597{"xvsubsp", XX3(60,72), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7598{"xvmaddmsp", XX3(60,73), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7599{"xvcmpgtsp", XX3RC(60,75,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7600{"xvcmpgtsp.", XX3RC(60,75,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7601{"xvcvspsxws", XX2(60,152), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7602{"xvrspiz", XX2(60,153), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7603{"xvresp", XX2(60,154), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7604{"xvmulsp", XX3(60,80), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7605{"xvmsubasp", XX3(60,81), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7606{"xxspltw", XX2(60,164), XX2UIM_MASK, PPCVSX, PPCVLE, {XT6, XB6, UIM}},
7607{"xxextractuw", XX2(60,165), XX2UIM4_MASK, PPCVSX3, PPCVLE, {XT6, XB6, UIMM4}},
7608{"xvcmpgesp", XX3RC(60,83,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7609{"xvcmpgesp.", XX3RC(60,83,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7610{"xvcvuxwsp", XX2(60,168), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7611{"xvrspip", XX2(60,169), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7612{"xvtsqrtsp", XX2(60,170), XX2BF_MASK, PPCVSX, PPCVLE, {BF, XB6}},
7613{"xvrspic", XX2(60,171), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7614{"xvdivsp", XX3(60,88), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7615{"xvmsubmsp", XX3(60,89), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7616{"xxspltib", X(60,360), XX1_MASK|3<<19, PPCVSX3, PPCVLE, {XT6, IMM8}},
7617{"xxinsertw", XX2(60,181), XX2UIM4_MASK, PPCVSX3, PPCVLE, {XT6, XB6, UIMM4}},
7618{"xvcvsxwsp", XX2(60,184), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7619{"xvrspim", XX2(60,185), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7620{"xvtdivsp", XX3(60,93), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}},
7621{"xvadddp", XX3(60,96), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7622{"xvmaddadp", XX3(60,97), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7623{"xvcmpeqdp", XX3RC(60,99,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7624{"xvcmpeqdp.", XX3RC(60,99,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7625{"xvcvdpuxws", XX2(60,200), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7626{"xvrdpi", XX2(60,201), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7627{"xvrsqrtedp", XX2(60,202), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7628{"xvsqrtdp", XX2(60,203), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7629{"xvsubdp", XX3(60,104), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7630{"xvmaddmdp", XX3(60,105), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7631{"xvcmpgtdp", XX3RC(60,107,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7632{"xvcmpgtdp.", XX3RC(60,107,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7633{"xvcvdpsxws", XX2(60,216), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7634{"xvrdpiz", XX2(60,217), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7635{"xvredp", XX2(60,218), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7636{"xvmuldp", XX3(60,112), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7637{"xvmsubadp", XX3(60,113), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7638{"xvcmpgedp", XX3RC(60,115,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7639{"xvcmpgedp.", XX3RC(60,115,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7640{"xvcvuxwdp", XX2(60,232), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7641{"xvrdpip", XX2(60,233), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7642{"xvtsqrtdp", XX2(60,234), XX2BF_MASK, PPCVSX, PPCVLE, {BF, XB6}},
7643{"xvrdpic", XX2(60,235), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7644{"xvdivdp", XX3(60,120), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7645{"xvmsubmdp", XX3(60,121), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7646{"xvcvsxwdp", XX2(60,248), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7647{"xvrdpim", XX2(60,249), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7648{"xvtdivdp", XX3(60,125), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}},
7649{"xsmaxcdp", XX3(60,128), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
7650{"xsnmaddasp", XX3(60,129), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
7651{"xxland", XX3(60,130), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7652{"xscvdpsp", XX2(60,265), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7653{"xscvdpspn", XX2(60,267), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
7654{"xsmincdp", XX3(60,136), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
7655{"xsnmaddmsp", XX3(60,137), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
7656{"xxlandc", XX3(60,138), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7657{"xsrsp", XX2(60,281), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
7658{"xsmaxjdp", XX3(60,144), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
7659{"xsnmsubasp", XX3(60,145), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
7660{"xxlor", XX3(60,146), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7661{"xscvuxdsp", XX2(60,296), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
7662{"xststdcsp", XX2(60,298), XX2BFD_MASK, PPCVSX3, PPCVLE, {BF, XB6, DCMX}},
7663{"xsminjdp", XX3(60,152), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
7664{"xsnmsubmsp", XX3(60,153), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
7665{"xxlxor", XX3(60,154), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7666{"xscvsxdsp", XX2(60,312), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
7667{"xsmaxdp", XX3(60,160), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7668{"xsnmaddadp", XX3(60,161), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7669{"xxlnor", XX3(60,162), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7670{"xscvdpuxds", XX2(60,328), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7671{"xscvspdp", XX2(60,329), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7672{"xscvspdpn", XX2(60,331), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
7673{"xsmindp", XX3(60,168), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7674{"xsnmaddmdp", XX3(60,169), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7675{"xxlorc", XX3(60,170), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
7676{"xscvdpsxds", XX2(60,344), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7677{"xsabsdp", XX2(60,345), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7678{"xsxexpdp", XX2VA(60,347,0),XX2_MASK|1, PPCVSX3, PPCVLE, {RT, XB6}},
7679{"xsxsigdp", XX2VA(60,347,1),XX2_MASK|1, PPCVSX3, PPCVLE, {RT, XB6}},
7680{"xscvhpdp", XX2VA(60,347,16),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
7681{"xscvdphp", XX2VA(60,347,17),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
7682{"xscpsgndp", XX3(60,176), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7683{"xsnmsubadp", XX3(60,177), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7684{"xxlnand", XX3(60,178), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
7685{"xscvuxddp", XX2(60,360), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7686{"xsnabsdp", XX2(60,361), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7687{"xststdcdp", XX2(60,362), XX2BFD_MASK, PPCVSX3, PPCVLE, {BF, XB6, DCMX}},
7688{"xsnmsubmdp", XX3(60,185), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7689{"xxleqv", XX3(60,186), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
7690{"xscvsxddp", XX2(60,376), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7691{"xsnegdp", XX2(60,377), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7692{"xvmaxsp", XX3(60,192), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7693{"xvnmaddasp", XX3(60,193), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7694{"xvcvspuxds", XX2(60,392), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7695{"xvcvdpsp", XX2(60,393), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7696{"xvminsp", XX3(60,200), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7697{"xvnmaddmsp", XX3(60,201), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7698{"xvcvspsxds", XX2(60,408), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7699{"xvabssp", XX2(60,409), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
98553ad3 7700{"xvmovsp", XX3(60,208), XX3_MASK, PPCVSX, PPCVLE, {XT6, XAB6}},
14b57c7c
AM
7701{"xvcpsgnsp", XX3(60,208), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7702{"xvnmsubasp", XX3(60,209), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7703{"xvcvuxdsp", XX2(60,424), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7704{"xvnabssp", XX2(60,425), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7705{"xvtstdcsp", XX2(60,426), XX2DCMXS_MASK, PPCVSX3, PPCVLE, {XT6, XB6, DCMXS}},
7706{"xviexpsp", XX3(60,216), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
7707{"xvnmsubmsp", XX3(60,217), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7708{"xvcvsxdsp", XX2(60,440), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7709{"xvnegsp", XX2(60,441), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7710{"xvmaxdp", XX3(60,224), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7711{"xvnmaddadp", XX3(60,225), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7712{"xvcvdpuxds", XX2(60,456), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7713{"xvcvspdp", XX2(60,457), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7714{"xsiexpdp", X(60,918), XX1_MASK, PPCVSX3, PPCVLE, {XT6, RA, RB}},
7715{"xvmindp", XX3(60,232), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7716{"xvnmaddmdp", XX3(60,233), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7717{"xvcvdpsxds", XX2(60,472), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7718{"xvabsdp", XX2(60,473), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7719{"xvxexpdp", XX2VA(60,475,0),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
7720{"xvxsigdp", XX2VA(60,475,1),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
7721{"xxbrh", XX2VA(60,475,7),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
7722{"xvxexpsp", XX2VA(60,475,8),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
7723{"xvxsigsp", XX2VA(60,475,9),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
7724{"xxbrw", XX2VA(60,475,15),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
7725{"xxbrd", XX2VA(60,475,23),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
7726{"xvcvhpsp", XX2VA(60,475,24),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
7727{"xvcvsphp", XX2VA(60,475,25),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
7728{"xxbrq", XX2VA(60,475,31),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
98553ad3 7729{"xvmovdp", XX3(60,240), XX3_MASK, PPCVSX, PPCVLE, {XT6, XAB6}},
14b57c7c
AM
7730{"xvcpsgndp", XX3(60,240), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7731{"xvnmsubadp", XX3(60,241), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7732{"xvcvuxddp", XX2(60,488), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7733{"xvnabsdp", XX2(60,489), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7734{"xvtstdcdp", XX2(60,490), XX2DCMXS_MASK, PPCVSX3, PPCVLE, {XT6, XB6, DCMXS}},
7735{"xviexpdp", XX3(60,248), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
7736{"xvnmsubmdp", XX3(60,249), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
7737{"xvcvsxddp", XX2(60,504), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7738{"xvnegdp", XX2(60,505), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
7739
7740{"psq_st", OP(60), OP_MASK, PPCPS, PPCVLE, {FRS,PSD,RA,PSW,PSQ}},
7741{"stfq", OP(60), OP_MASK, POWER2, PPCVLE, {FRS, D, RA}},
7742
7743{"lxv", DQX(61,1), DQX_MASK, PPCVSX3, PPCVLE, {XTQ6, DQ, RA0}},
7744{"stxv", DQX(61,5), DQX_MASK, PPCVSX3, PPCVLE, {XSQ6, DQ, RA0}},
7745{"stxsd", DSO(61,2), DS_MASK, PPCVSX3, PPCVLE, {VS, DS, RA0}},
7746{"stxssp", DSO(61,3), DS_MASK, PPCVSX3, PPCVLE, {VS, DS, RA0}},
73f07bff 7747{"stfdp", OP(61), OP_MASK|Q_MASK, POWER6, POWER7|PPCVLE, {FRSp, DS, RA0}},
14b57c7c
AM
7748{"psq_stu", OP(61), OP_MASK, PPCPS, PPCVLE, {FRS,PSD,RA,PSW,PSQ}},
7749{"stfqu", OP(61), OP_MASK, POWER2, PPCVLE, {FRS, D, RA}},
7750
7751{"std", DSO(62,0), DS_MASK, PPC64, PPCVLE, {RS, DS, RA0}},
7752{"stdu", DSO(62,1), DS_MASK, PPC64, PPCVLE, {RS, DS, RAS}},
73f07bff 7753{"stq", DSO(62,2), DS_MASK|Q_MASK, POWER4, PPC476|PPCVLE, {RSQ, DS, RA0}},
14b57c7c
AM
7754
7755{"fcmpu", X(63,0), XBF_MASK, COM, PPCEFS|PPCVLE, {BF, FRA, FRB}},
7756
73f07bff
AM
7757{"daddq", XRC(63,2,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
7758{"daddq.", XRC(63,2,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
14b57c7c 7759
73f07bff
AM
7760{"dquaq", ZRC(63,3,0), Z2_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp, RMC}},
7761{"dquaq.", ZRC(63,3,1), Z2_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp, RMC}},
14b57c7c
AM
7762
7763{"xsaddqp", XRC(63,4,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7764{"xsaddqpo", XRC(63,4,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7765
7766{"xsrqpi", ZRC(63,5,0), Z2_MASK, PPCVSX3, PPCVLE, {R, VD, VB, RMC}},
7767{"xsrqpix", ZRC(63,5,1), Z2_MASK, PPCVSX3, PPCVLE, {R, VD, VB, RMC}},
7768
7769{"fcpsgn", XRC(63,8,0), X_MASK, POWER6|PPCA2|PPC476, PPCVLE, {FRT, FRA, FRB}},
7770{"fcpsgn.", XRC(63,8,1), X_MASK, POWER6|PPCA2|PPC476, PPCVLE, {FRT, FRA, FRB}},
7771
7772{"frsp", XRC(63,12,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
7773{"frsp.", XRC(63,12,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
7774
7775{"fctiw", XRC(63,14,0), XRA_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRB}},
7776{"fcir", XRC(63,14,0), XRA_MASK, PWR2COM, PPCVLE, {FRT, FRB}},
7777{"fctiw.", XRC(63,14,1), XRA_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRB}},
7778{"fcir.", XRC(63,14,1), XRA_MASK, PWR2COM, PPCVLE, {FRT, FRB}},
7779
7780{"fctiwz", XRC(63,15,0), XRA_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRB}},
7781{"fcirz", XRC(63,15,0), XRA_MASK, PWR2COM, PPCVLE, {FRT, FRB}},
7782{"fctiwz.", XRC(63,15,1), XRA_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRB}},
7783{"fcirz.", XRC(63,15,1), XRA_MASK, PWR2COM, PPCVLE, {FRT, FRB}},
7784
7785{"fdiv", A(63,18,0), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
7786{"fd", A(63,18,0), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
7787{"fdiv.", A(63,18,1), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
7788{"fd.", A(63,18,1), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
7789
7790{"fsub", A(63,20,0), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
7791{"fs", A(63,20,0), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
7792{"fsub.", A(63,20,1), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
7793{"fs.", A(63,20,1), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
7794
7795{"fadd", A(63,21,0), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
7796{"fa", A(63,21,0), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
7797{"fadd.", A(63,21,1), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
7798{"fa.", A(63,21,1), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
7799
7800{"fsqrt", A(63,22,0), AFRAFRC_MASK, PPCPWR2, TITAN|PPCVLE, {FRT, FRB}},
7801{"fsqrt.", A(63,22,1), AFRAFRC_MASK, PPCPWR2, TITAN|PPCVLE, {FRT, FRB}},
7802
7803{"fsel", A(63,23,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
7804{"fsel.", A(63,23,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
7805
7806{"fre", A(63,24,0), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
7807{"fre", A(63,24,0), AFRALFRC_MASK, POWER5, POWER7|PPCVLE, {FRT, FRB, A_L}},
7808{"fre.", A(63,24,1), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
7809{"fre.", A(63,24,1), AFRALFRC_MASK, POWER5, POWER7|PPCVLE, {FRT, FRB, A_L}},
1ed8e1e4 7810
14b57c7c
AM
7811{"fmul", A(63,25,0), AFRB_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC}},
7812{"fm", A(63,25,0), AFRB_MASK, PWRCOM, PPCVLE|PPCVLE, {FRT, FRA, FRC}},
7813{"fmul.", A(63,25,1), AFRB_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC}},
7814{"fm.", A(63,25,1), AFRB_MASK, PWRCOM, PPCVLE|PPCVLE, {FRT, FRA, FRC}},
252b5132 7815
14b57c7c
AM
7816{"frsqrte", A(63,26,0), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
7817{"frsqrte", A(63,26,0), AFRALFRC_MASK, PPC, POWER7|PPCVLE, {FRT, FRB, A_L}},
7818{"frsqrte.", A(63,26,1), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
7819{"frsqrte.", A(63,26,1), AFRALFRC_MASK, PPC, POWER7|PPCVLE, {FRT, FRB, A_L}},
252b5132 7820
14b57c7c
AM
7821{"fmsub", A(63,28,0), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
7822{"fms", A(63,28,0), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
7823{"fmsub.", A(63,28,1), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
7824{"fms.", A(63,28,1), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
252b5132 7825
14b57c7c
AM
7826{"fmadd", A(63,29,0), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
7827{"fma", A(63,29,0), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
7828{"fmadd.", A(63,29,1), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
7829{"fma.", A(63,29,1), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
252b5132 7830
14b57c7c
AM
7831{"fnmsub", A(63,30,0), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
7832{"fnms", A(63,30,0), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
7833{"fnmsub.", A(63,30,1), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
7834{"fnms.", A(63,30,1), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
252b5132 7835
14b57c7c
AM
7836{"fnmadd", A(63,31,0), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
7837{"fnma", A(63,31,0), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
7838{"fnmadd.", A(63,31,1), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
7839{"fnma.", A(63,31,1), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
252b5132 7840
14b57c7c 7841{"fcmpo", X(63,32), XBF_MASK, COM, PPCEFS|PPCVLE, {BF, FRA, FRB}},
252b5132 7842
73f07bff
AM
7843{"dmulq", XRC(63,34,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
7844{"dmulq.", XRC(63,34,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
702f0fb4 7845
73f07bff
AM
7846{"drrndq", ZRC(63,35,0), Z2_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRA, FRBp, RMC}},
7847{"drrndq.", ZRC(63,35,1), Z2_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRA, FRBp, RMC}},
702f0fb4 7848
14b57c7c
AM
7849{"xsmulqp", XRC(63,36,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7850{"xsmulqpo", XRC(63,36,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 7851
14b57c7c 7852{"xsrqpxp", Z(63,37), Z2_MASK, PPCVSX3, PPCVLE, {R, VD, VB, RMC}},
a680de9a 7853
96a86c01
AM
7854{"mtfsb1", XRC(63,38,0), XRARB_MASK, COM, PPCVLE, {BTF}},
7855{"mtfsb1.", XRC(63,38,1), XRARB_MASK, COM, PPCVLE, {BTF}},
252b5132 7856
14b57c7c
AM
7857{"fneg", XRC(63,40,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
7858{"fneg.", XRC(63,40,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
252b5132 7859
14b57c7c 7860{"mcrfs", X(63,64), XRB_MASK|(3<<21)|(3<<16), COM, PPCVLE, {BF, BFA}},
252b5132 7861
73f07bff
AM
7862{"dscliq", ZRC(63,66,0), Z_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, SH16}},
7863{"dscliq.", ZRC(63,66,1), Z_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, SH16}},
702f0fb4 7864
73f07bff
AM
7865{"dquaiq", ZRC(63,67,0), Z2_MASK|Q_MASK, POWER6, PPCVLE, {TE, FRTp, FRBp, RMC}},
7866{"dquaiq.", ZRC(63,67,1), Z2_MASK|Q_MASK, POWER6, PPCVLE, {TE, FRTp, FRBp, RMC}},
702f0fb4 7867
96a86c01
AM
7868{"mtfsb0", XRC(63,70,0), XRARB_MASK, COM, PPCVLE, {BTF}},
7869{"mtfsb0.", XRC(63,70,1), XRARB_MASK, COM, PPCVLE, {BTF}},
252b5132 7870
14b57c7c
AM
7871{"fmr", XRC(63,72,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
7872{"fmr.", XRC(63,72,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
252b5132 7873
73f07bff
AM
7874{"dscriq", ZRC(63,98,0), Z_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, SH16}},
7875{"dscriq.", ZRC(63,98,1), Z_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, SH16}},
702f0fb4 7876
73f07bff
AM
7877{"drintxq", ZRC(63,99,0), Z2_MASK|Q_MASK, POWER6, PPCVLE, {R, FRTp, FRBp, RMC}},
7878{"drintxq.", ZRC(63,99,1), Z2_MASK|Q_MASK, POWER6, PPCVLE, {R, FRTp, FRBp, RMC}},
702f0fb4 7879
14b57c7c 7880{"xscpsgnqp", X(63,100), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 7881
14b57c7c 7882{"ftdiv", X(63,128), XBF_MASK, POWER7, PPCVLE, {BF, FRA, FRB}},
066be9f7 7883
14b57c7c 7884{"dcmpoq", X(63,130), X_MASK, POWER6, PPCVLE, {BF, FRAp, FRBp}},
702f0fb4 7885
14b57c7c 7886{"xscmpoqp", X(63,132), XBF_MASK, PPCVSX3, PPCVLE, {BF, VA, VB}},
a680de9a 7887
14b57c7c
AM
7888{"mtfsfi", XRC(63,134,0), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCVLE, {BFF, U, W}},
7889{"mtfsfi", XRC(63,134,0), XRA_MASK|(3<<21)|(1<<11), COM, POWER6|PPCA2|PPC476|PPCVLE, {BFF, U}},
7890{"mtfsfi.", XRC(63,134,1), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCVLE, {BFF, U, W}},
7891{"mtfsfi.", XRC(63,134,1), XRA_MASK|(3<<21)|(1<<11), COM, POWER6|PPCA2|PPC476|PPCVLE, {BFF, U}},
252b5132 7892
14b57c7c
AM
7893{"fnabs", XRC(63,136,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
7894{"fnabs.", XRC(63,136,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
252b5132 7895
14b57c7c
AM
7896{"fctiwu", XRC(63,142,0), XRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
7897{"fctiwu.", XRC(63,142,1), XRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
7898{"fctiwuz", XRC(63,143,0), XRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
7899{"fctiwuz.", XRC(63,143,1), XRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
066be9f7 7900
14b57c7c 7901{"ftsqrt", X(63,160), XBF_MASK|FRA_MASK, POWER7, PPCVLE, {BF, FRB}},
066be9f7 7902
14b57c7c 7903{"dtstexq", X(63,162), X_MASK, POWER6, PPCVLE, {BF, FRAp, FRBp}},
a680de9a 7904
14b57c7c 7905{"xscmpexpqp", X(63,164), XBF_MASK, PPCVSX3, PPCVLE, {BF, VA, VB}},
a680de9a 7906
14b57c7c
AM
7907{"dtstdcq", Z(63,194), Z_MASK, POWER6, PPCVLE, {BF, FRAp, DCM}},
7908{"dtstdgq", Z(63,226), Z_MASK, POWER6, PPCVLE, {BF, FRAp, DGM}},
702f0fb4 7909
73f07bff
AM
7910{"drintnq", ZRC(63,227,0), Z2_MASK|Q_MASK, POWER6, PPCVLE, {R, FRTp, FRBp, RMC}},
7911{"drintnq.", ZRC(63,227,1), Z2_MASK|Q_MASK, POWER6, PPCVLE, {R, FRTp, FRBp, RMC}},
702f0fb4 7912
73f07bff
AM
7913{"dctqpq", XRC(63,258,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRB}},
7914{"dctqpq.", XRC(63,258,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRB}},
702f0fb4 7915
14b57c7c
AM
7916{"fabs", XRC(63,264,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
7917{"fabs.", XRC(63,264,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
252b5132 7918
14b57c7c
AM
7919{"dctfixq", XRC(63,290,0), X_MASK, POWER6, PPCVLE, {FRT, FRBp}},
7920{"dctfixq.", XRC(63,290,1), X_MASK, POWER6, PPCVLE, {FRT, FRBp}},
702f0fb4 7921
73f07bff
AM
7922{"ddedpdq", XRC(63,322,0), X_MASK|Q_MASK, POWER6, PPCVLE, {SP, FRTp, FRBp}},
7923{"ddedpdq.", XRC(63,322,1), X_MASK|Q_MASK, POWER6, PPCVLE, {SP, FRTp, FRBp}},
702f0fb4 7924
14b57c7c
AM
7925{"dxexq", XRC(63,354,0), X_MASK, POWER6, PPCVLE, {FRT, FRBp}},
7926{"dxexq.", XRC(63,354,1), X_MASK, POWER6, PPCVLE, {FRT, FRBp}},
702f0fb4 7927
14b57c7c
AM
7928{"xsmaddqp", XRC(63,388,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7929{"xsmaddqpo", XRC(63,388,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 7930
14b57c7c
AM
7931{"frin", XRC(63,392,0), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
7932{"frin.", XRC(63,392,1), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
a680de9a 7933
14b57c7c
AM
7934{"xsmsubqp", XRC(63,420,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7935{"xsmsubqpo", XRC(63,420,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 7936
14b57c7c
AM
7937{"friz", XRC(63,424,0), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
7938{"friz.", XRC(63,424,1), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
a680de9a 7939
14b57c7c
AM
7940{"xsnmaddqp", XRC(63,452,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7941{"xsnmaddqpo", XRC(63,452,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 7942
14b57c7c
AM
7943{"frip", XRC(63,456,0), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
7944{"frip.", XRC(63,456,1), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
a680de9a 7945
14b57c7c
AM
7946{"xsnmsubqp", XRC(63,484,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7947{"xsnmsubqpo", XRC(63,484,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 7948
14b57c7c
AM
7949{"frim", XRC(63,488,0), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
7950{"frim.", XRC(63,488,1), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
ce7a772b 7951
73f07bff
AM
7952{"dsubq", XRC(63,514,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
7953{"dsubq.", XRC(63,514,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
702f0fb4 7954
14b57c7c
AM
7955{"xssubqp", XRC(63,516,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7956{"xssubqpo", XRC(63,516,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 7957
73f07bff
AM
7958{"ddivq", XRC(63,546,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
7959{"ddivq.", XRC(63,546,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
702f0fb4 7960
14b57c7c
AM
7961{"xsdivqp", XRC(63,548,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7962{"xsdivqpo", XRC(63,548,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 7963
14b57c7c
AM
7964{"mffs", XRC(63,583,0), XRARB_MASK, COM, PPCEFS|PPCVLE, {FRT}},
7965{"mffs.", XRC(63,583,1), XRARB_MASK, COM, PPCEFS|PPCVLE, {FRT}},
252b5132 7966
6fd3a02d
PB
7967{"mffsce", XMMF(63,583,0,1), XMMF_MASK|RB_MASK, POWER9, PPCVLE, {FRT}},
7968{"mffscdrn", XMMF(63,583,2,4), XMMF_MASK, POWER9, PPCVLE, {FRT, FRB}},
7969{"mffscdrni", XMMF(63,583,2,5), XMMF_MASK|(3<<14), POWER9, PPCVLE, {FRT, DRM}},
7970{"mffscrn", XMMF(63,583,2,6), XMMF_MASK, POWER9, PPCVLE, {FRT, FRB}},
7971{"mffscrni", XMMF(63,583,2,7), XMMF_MASK|(7<<13), POWER9, PPCVLE, {FRT, RM}},
7972{"mffsl", XMMF(63,583,3,0), XMMF_MASK|RB_MASK, POWER9, PPCVLE, {FRT}},
7973
14b57c7c 7974{"dcmpuq", X(63,642), X_MASK, POWER6, PPCVLE, {BF, FRAp, FRBp}},
702f0fb4 7975
14b57c7c 7976{"xscmpuqp", X(63,644), XBF_MASK, PPCVSX3, PPCVLE, {BF, VA, VB}},
a680de9a 7977
14b57c7c
AM
7978{"dtstsfq", X(63,674), X_MASK, POWER6, PPCVLE, {BF, FRA, FRBp}},
7979{"dtstsfiq", X(63,675), X_MASK|1<<22,POWER9, PPCVLE, {BF, UIM6, FRBp}},
a680de9a 7980
14b57c7c 7981{"xststdcqp", X(63,708), X_MASK, PPCVSX3, PPCVLE, {BF, VB, DCMX}},
702f0fb4 7982
14b57c7c
AM
7983{"mtfsf", XFL(63,711,0), XFL_MASK, POWER6|PPCA2|PPC476, PPCVLE, {FLM, FRB, XFL_L, W}},
7984{"mtfsf", XFL(63,711,0), XFL_MASK, COM, POWER6|PPCA2|PPC476|PPCEFS|PPCVLE, {FLM, FRB}},
7985{"mtfsf.", XFL(63,711,1), XFL_MASK, POWER6|PPCA2|PPC476, PPCVLE, {FLM, FRB, XFL_L, W}},
7986{"mtfsf.", XFL(63,711,1), XFL_MASK, COM, POWER6|PPCA2|PPC476|PPCEFS|PPCVLE, {FLM, FRB}},
252b5132 7987
73f07bff
AM
7988{"drdpq", XRC(63,770,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRBp}},
7989{"drdpq.", XRC(63,770,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRBp}},
702f0fb4 7990
73f07bff
AM
7991{"dcffixq", XRC(63,802,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRB}},
7992{"dcffixq.", XRC(63,802,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRB}},
702f0fb4 7993
14b57c7c
AM
7994{"xsabsqp", XVA(63,804,0), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
7995{"xsxexpqp", XVA(63,804,2), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
7996{"xsnabsqp", XVA(63,804,8), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
7997{"xsnegqp", XVA(63,804,16), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
7998{"xsxsigqp", XVA(63,804,18), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
7999{"xssqrtqp", XVARC(63,804,27,0), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
8000{"xssqrtqpo", XVARC(63,804,27,1), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
a680de9a 8001
14b57c7c
AM
8002{"fctid", XRC(63,814,0), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
8003{"fctid", XRC(63,814,0), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
8004{"fctid.", XRC(63,814,1), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
8005{"fctid.", XRC(63,814,1), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
252b5132 8006
14b57c7c
AM
8007{"fctidz", XRC(63,815,0), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
8008{"fctidz", XRC(63,815,0), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
8009{"fctidz.", XRC(63,815,1), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
8010{"fctidz.", XRC(63,815,1), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
252b5132 8011
73f07bff
AM
8012{"denbcdq", XRC(63,834,0), X_MASK|Q_MASK, POWER6, PPCVLE, {S, FRTp, FRBp}},
8013{"denbcdq.", XRC(63,834,1), X_MASK|Q_MASK, POWER6, PPCVLE, {S, FRTp, FRBp}},
702f0fb4 8014
14b57c7c
AM
8015{"xscvqpuwz", XVA(63,836,1), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
8016{"xscvudqp", XVA(63,836,2), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
8017{"xscvqpswz", XVA(63,836,9), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
8018{"xscvsdqp", XVA(63,836,10), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
8019{"xscvqpudz", XVA(63,836,17), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
8020{"xscvqpdp", XVARC(63,836,20,0), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
8021{"xscvqpdpo", XVARC(63,836,20,1), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
8022{"xscvdpqp", XVA(63,836,22), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
8023{"xscvqpsdz", XVA(63,836,25), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
a680de9a 8024
14b57c7c 8025{"fmrgow", X(63,838), X_MASK, PPCVSX2, PPCVLE, {FRT, FRA, FRB}},
c0637f3a 8026
14b57c7c
AM
8027{"fcfid", XRC(63,846,0), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
8028{"fcfid", XRC(63,846,0), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
8029{"fcfid.", XRC(63,846,1), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
8030{"fcfid.", XRC(63,846,1), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
252b5132 8031
73f07bff
AM
8032{"diexq", XRC(63,866,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRA, FRBp}},
8033{"diexq.", XRC(63,866,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRA, FRBp}},
702f0fb4 8034
14b57c7c 8035{"xsiexpqp", X(63,868), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 8036
14b57c7c
AM
8037{"fctidu", XRC(63,942,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
8038{"fctidu.", XRC(63,942,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
066be9f7 8039
14b57c7c
AM
8040{"fctiduz", XRC(63,943,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
8041{"fctiduz.", XRC(63,943,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
066be9f7 8042
14b57c7c 8043{"fmrgew", X(63,966), X_MASK, PPCVSX2, PPCVLE, {FRT, FRA, FRB}},
c0637f3a 8044
14b57c7c
AM
8045{"fcfidu", XRC(63,974,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
8046{"fcfidu.", XRC(63,974,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
252b5132
RH
8047};
8048
2ceb7719 8049const unsigned int powerpc_num_opcodes =
252b5132
RH
8050 sizeof (powerpc_opcodes) / sizeof (powerpc_opcodes[0]);
8051\f
dd7efa79
PB
8052/* The opcode table for 8-byte prefix instructions.
8053
8054 The format of this opcode table is the same as the main opcode table. */
8055
8056const struct powerpc_opcode prefix_opcodes[] = {
7c1f4227
AM
8057{"pnop", PMRR, PREFIX_MASK, POWER10, 0, {0}},
8058{"pli", PMLS|OP(14), P_DRAPCREL_MASK, POWER10, 0, {RT, SI34}},
8059{"paddi", PMLS|OP(14), P_D_MASK, POWER10, 0, {RT, RA0, SI34, PCREL0}},
8060{"psubi", PMLS|OP(14), P_D_MASK, POWER10, 0, {RT, RA0, NSI34, PCREL0}},
8061{"pla", PMLS|OP(14), P_D_MASK, POWER10, 0, {RT, D34, PRA0, PCREL}},
8062{"plwz", PMLS|OP(32), P_D_MASK, POWER10, 0, {RT, D34, PRA0, PCREL}},
8063{"plbz", PMLS|OP(34), P_D_MASK, POWER10, 0, {RT, D34, PRA0, PCREL}},
8064{"pstw", PMLS|OP(36), P_D_MASK, POWER10, 0, {RS, D34, PRA0, PCREL}},
8065{"pstb", PMLS|OP(38), P_D_MASK, POWER10, 0, {RS, D34, PRA0, PCREL}},
8066{"plhz", PMLS|OP(40), P_D_MASK, POWER10, 0, {RT, D34, PRA0, PCREL}},
8067{"plwa", P8LS|OP(41), P_D_MASK, POWER10, 0, {RT, D34, PRA0, PCREL}},
8068{"plxsd", P8LS|OP(42), P_D_MASK, POWER10, 0, {VD, D34, PRA0, PCREL}},
8069{"plha", PMLS|OP(42), P_D_MASK, POWER10, 0, {RT, D34, PRA0, PCREL}},
8070{"plxssp", P8LS|OP(43), P_D_MASK, POWER10, 0, {VD, D34, PRA0, PCREL}},
8071{"psth", PMLS|OP(44), P_D_MASK, POWER10, 0, {RS, D34, PRA0, PCREL}},
8072{"pstxsd", P8LS|OP(46), P_D_MASK, POWER10, 0, {VS, D34, PRA0, PCREL}},
8073{"pstxssp", P8LS|OP(47), P_D_MASK, POWER10, 0, {VS, D34, PRA0, PCREL}},
8074{"plfs", PMLS|OP(48), P_D_MASK, POWER10, 0, {FRT, D34, PRA0, PCREL}},
8075{"plxv", P8LS|OP(50), P_D_MASK&~OP(1), POWER10, 0, {XTOP, D34, PRA0, PCREL}},
8076{"plfd", PMLS|OP(50), P_D_MASK, POWER10, 0, {FRT, D34, PRA0, PCREL}},
8077{"pstfs", PMLS|OP(52), P_D_MASK, POWER10, 0, {FRS, D34, PRA0, PCREL}},
8078{"pstxv", P8LS|OP(54), P_D_MASK&~OP(1), POWER10, 0, {XTOP, D34, PRA0, PCREL}},
8079{"pstfd", PMLS|OP(54), P_D_MASK, POWER10, 0, {FRS, D34, PRA0, PCREL}},
8080{"plq", P8LS|OP(56), P_D_MASK, POWER10, 0, {RTQ, D34, PRAQ, PCREL}},
8081{"pld", P8LS|OP(57), P_D_MASK, POWER10, 0, {RT, D34, PRA0, PCREL}},
94ba9882 8082{"plxvp", P8LS|OP(58), P_D_MASK, POWER10, 0, {XTP, D34, PRA0, PCREL}},
7c1f4227
AM
8083{"pstq", P8LS|OP(60), P_D_MASK, POWER10, 0, {RSQ, D34, PRA0, PCREL}},
8084{"pstd", P8LS|OP(61), P_D_MASK, POWER10, 0, {RS, D34, PRA0, PCREL}},
94ba9882 8085{"pstxvp", P8LS|OP(62), P_D_MASK, POWER10, 0, {XTP, D34, PRA0, PCREL}},
dd7efa79
PB
8086};
8087
8088const unsigned int prefix_num_opcodes =
8089 sizeof (prefix_opcodes) / sizeof (prefix_opcodes[0]);
8090\f
b9c361e0
JL
8091/* The VLE opcode table.
8092
8093 The format of this opcode table is the same as the main opcode table. */
8094
8095const struct powerpc_opcode vle_opcodes[] = {
14b57c7c
AM
8096{"se_illegal", C(0), C_MASK, PPCVLE, 0, {}},
8097{"se_isync", C(1), C_MASK, PPCVLE, 0, {}},
8098{"se_sc", C(2), C_MASK, PPCVLE, 0, {}},
8099{"se_blr", C_LK(2,0), C_LK_MASK, PPCVLE, 0, {}},
8100{"se_blrl", C_LK(2,1), C_LK_MASK, PPCVLE, 0, {}},
8101{"se_bctr", C_LK(3,0), C_LK_MASK, PPCVLE, 0, {}},
8102{"se_bctrl", C_LK(3,1), C_LK_MASK, PPCVLE, 0, {}},
8103{"se_rfi", C(8), C_MASK, PPCVLE, 0, {}},
8104{"se_rfci", C(9), C_MASK, PPCVLE, 0, {}},
8105{"se_rfdi", C(10), C_MASK, PPCVLE, 0, {}},
8106{"se_rfmci", C(11), C_MASK, PPCRFMCI|PPCVLE, 0, {}},
a8cc8a54 8107{"se_rfgi", C(12), C_MASK, PPCVLE, 0, {}},
14b57c7c
AM
8108{"se_not", SE_R(0,2), SE_R_MASK, PPCVLE, 0, {RX}},
8109{"se_neg", SE_R(0,3), SE_R_MASK, PPCVLE, 0, {RX}},
8110{"se_mflr", SE_R(0,8), SE_R_MASK, PPCVLE, 0, {RX}},
8111{"se_mtlr", SE_R(0,9), SE_R_MASK, PPCVLE, 0, {RX}},
8112{"se_mfctr", SE_R(0,10), SE_R_MASK, PPCVLE, 0, {RX}},
8113{"se_mtctr", SE_R(0,11), SE_R_MASK, PPCVLE, 0, {RX}},
8114{"se_extzb", SE_R(0,12), SE_R_MASK, PPCVLE, 0, {RX}},
8115{"se_extsb", SE_R(0,13), SE_R_MASK, PPCVLE, 0, {RX}},
8116{"se_extzh", SE_R(0,14), SE_R_MASK, PPCVLE, 0, {RX}},
8117{"se_extsh", SE_R(0,15), SE_R_MASK, PPCVLE, 0, {RX}},
8118{"se_mr", SE_RR(0,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
8119{"se_mtar", SE_RR(0,2), SE_RR_MASK, PPCVLE, 0, {ARX, RY}},
8120{"se_mfar", SE_RR(0,3), SE_RR_MASK, PPCVLE, 0, {RX, ARY}},
8121{"se_add", SE_RR(1,0), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
8122{"se_mullw", SE_RR(1,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
8123{"se_sub", SE_RR(1,2), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
8124{"se_subf", SE_RR(1,3), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
8125{"se_cmp", SE_RR(3,0), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
8126{"se_cmpl", SE_RR(3,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
8127{"se_cmph", SE_RR(3,2), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
8128{"se_cmphl", SE_RR(3,3), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
8129
e3c2f928
AF
8130/* by major opcode */
8131{"zvaddih", VX(4, 0x200), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM}},
8132{"zvsubifh", VX(4, 0x201), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM}},
8133{"zvaddh", VX(4, 0x204), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8134{"zvsubfh", VX(4, 0x205), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8135{"zvaddsubfh", VX(4, 0x206), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8136{"zvsubfaddh", VX(4, 0x207), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8137{"zvaddhx", VX(4, 0x20C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8138{"zvsubfhx", VX(4, 0x20D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8139{"zvaddsubfhx", VX(4, 0x20E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8140{"zvsubfaddhx", VX(4, 0x20F), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8141{"zaddwus", VX(4, 0x210), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8142{"zsubfwus", VX(4, 0x211), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8143{"zaddwss", VX(4, 0x212), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8144{"zsubfwss", VX(4, 0x213), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8145{"zvaddhus", VX(4, 0x214), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8146{"zvsubfhus", VX(4, 0x215), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8147{"zvaddhss", VX(4, 0x216), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8148{"zvsubfhss", VX(4, 0x217), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8149{"zvaddsubfhss", VX(4, 0x21A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8150{"zvsubfaddhss", VX(4, 0x21B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8151{"zvaddhxss", VX(4, 0x21C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8152{"zvsubfhxss", VX(4, 0x21D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8153{"zvaddsubfhxss", VX(4, 0x21E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8154{"zvsubfaddhxss", VX(4, 0x21F), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8155{"zaddheuw", VX(4, 0x220), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8156{"zsubfheuw", VX(4, 0x221), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8157{"zaddhesw", VX(4, 0x222), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8158{"zsubfhesw", VX(4, 0x223), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8159{"zaddhouw", VX(4, 0x224), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8160{"zsubfhouw", VX(4, 0x225), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8161{"zaddhosw", VX(4, 0x226), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8162{"zsubfhosw", VX(4, 0x227), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8163{"zvmergehih", VX(4, 0x22C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8164{"zvmergeloh", VX(4, 0x22D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8165{"zvmergehiloh", VX(4, 0x22E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8166{"zvmergelohih", VX(4, 0x22F), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8167{"zvcmpgthu", VX(4, 0x230), VX_MASK, PPCLSP, 0, {CRFD, RA, RB}},
8168{"zvcmpgths", VX(4, 0x230), VX_MASK, PPCLSP, 0, {CRFD, RA, RB}},
8169{"zvcmplthu", VX(4, 0x231), VX_MASK, PPCLSP, 0, {CRFD, RA, RB}},
8170{"zvcmplths", VX(4, 0x231), VX_MASK, PPCLSP, 0, {CRFD, RA, RB}},
8171{"zvcmpeqh", VX(4, 0x232), VX_MASK, PPCLSP, 0, {CRFD, RA, RB}},
8172{"zpkswgshfrs", VX(4, 0x238), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8173{"zpkswgswfrs", VX(4, 0x239), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8174{"zvpkshgwshfrs", VX(4, 0x23A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8175{"zvpkswshfrs", VX(4, 0x23B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8176{"zvpkswuhs", VX(4, 0x23C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8177{"zvpkswshs", VX(4, 0x23D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8178{"zvpkuwuhs", VX(4, 0x23E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8179{"zvsplatih", VX_LSP(4, 0x23F), VX_LSP_MASK, PPCLSP, 0, {RD, SIMM}},
8180{"zvsplatfih", VX_LSP(4, 0xA3F), VX_LSP_MASK, PPCLSP, 0, {RD, SIMM}},
8181{"zcntlsw", VX_LSP(4, 0x2A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
8182{"zvcntlzh", VX_LSP(4, 0x323F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
8183{"zvcntlsh", VX_LSP(4, 0x3A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
8184{"znegws", VX_LSP(4, 0x4A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
8185{"zvnegh", VX_LSP(4, 0x523F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
8186{"zvneghs", VX_LSP(4, 0x5A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
8187{"zvnegho", VX_LSP(4, 0x623F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
8188{"zvneghos", VX_LSP(4, 0x6A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
8189{"zrndwh", VX_LSP(4, 0x823F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
8190{"zrndwhss", VX_LSP(4, 0x8A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
8191{"zvabsh", VX_LSP(4, 0xA23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
8192{"zvabshs", VX_LSP(4, 0xAA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
8193{"zabsw", VX_LSP(4, 0xB23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
8194{"zabsws", VX_LSP(4, 0xBA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
8195{"zsatswuw", VX_LSP(4, 0xC23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
8196{"zsatuwsw", VX_LSP(4, 0xCA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
8197{"zsatswuh", VX_LSP(4, 0xD23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
8198{"zsatswsh", VX_LSP(4, 0xDA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
8199{"zvsatshuh", VX_LSP(4, 0xE23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
8200{"zvsatuhsh", VX_LSP(4, 0xEA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
8201{"zsatuwuh", VX_LSP(4, 0xF23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
8202{"zsatuwsh", VX_LSP(4, 0xFA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
8203{"zsatsduw", VX(4, 0x260), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8204{"zsatsdsw", VX(4, 0x261), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8205{"zsatuduw", VX(4, 0x262), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8206{"zvselh", VX(4, 0x264), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8207{"zxtrw", VX(4, 0x264), VX_LSP_OFF_MASK, PPCLSP, 0, {RD, RA, RB, VX_OFF}},
8208{"zbrminc", VX(4, 0x268), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8209{"zcircinc", VX(4, 0x269), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8210{"zdivwsf", VX(4, 0x26B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8211{"zvsrhu", VX(4, 0x270), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8212{"zvsrhs", VX(4, 0x271), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8213{"zvsrhiu", VX(4, 0x272), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
8214{"zvsrhis", VX(4, 0x273), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
8215{"zvslh", VX(4, 0x274), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8216{"zvrlh", VX(4, 0x275), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8217{"zvslhi", VX(4, 0x276), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
8218{"zvrlhi", VX(4, 0x277), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
8219{"zvslhus", VX(4, 0x278), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8220{"zvslhss", VX(4, 0x279), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8221{"zvslhius", VX(4, 0x27A), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
8222{"zvslhiss", VX(4, 0x27B), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
8223{"zslwus", VX(4, 0x27C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8224{"zslwss", VX(4, 0x27D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8225{"zslwius", VX(4, 0x27E), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM}},
8226{"zslwiss", VX(4, 0x27F), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM}},
8227{"zaddwgui", VX(4, 0x460), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8228{"zsubfwgui", VX(4, 0x461), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8229{"zaddd", VX(4, 0x462), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8230{"zsubfd", VX(4, 0x463), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8231{"zvaddsubfw", VX(4, 0x464), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8232{"zvsubfaddw", VX(4, 0x465), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8233{"zvaddw", VX(4, 0x466), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8234{"zvsubfw", VX(4, 0x467), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8235{"zaddwgsi", VX(4, 0x468), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8236{"zsubfwgsi", VX(4, 0x469), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8237{"zadddss", VX(4, 0x46A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8238{"zsubfdss", VX(4, 0x46B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8239{"zvaddsubfwss", VX(4, 0x46C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8240{"zvsubfaddwss", VX(4, 0x46D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8241{"zvaddwss", VX(4, 0x46E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8242{"zvsubfwss", VX(4, 0x46F), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8243{"zaddwgsf", VX(4, 0x470), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8244{"zsubfwgsf", VX(4, 0x471), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8245{"zadddus", VX(4, 0x472), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8246{"zsubfdus", VX(4, 0x473), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8247{"zvaddwus", VX(4, 0x476), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8248{"zvsubfwus", VX(4, 0x477), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8249{"zvunpkhgwsf", VX_LSP(4, 0x478), VX_LSP_MASK, PPCLSP, 0, {RD_EVEN, RA}},
8250{"zvunpkhsf", VX_LSP(4, 0xC78), VX_LSP_MASK, PPCLSP, 0, {RD_EVEN, RA}},
8251{"zvunpkhui", VX_LSP(4, 0x1478), VX_LSP_MASK, PPCLSP, 0, {RD_EVEN, RA}},
8252{"zvunpkhsi", VX_LSP(4, 0x1C78), VX_LSP_MASK, PPCLSP, 0, {RD_EVEN, RA}},
8253{"zunpkwgsf", VX_LSP(4, 0x2478), VX_LSP_MASK, PPCLSP, 0, {RD_EVEN, RA}},
8254{"zvdotphgwasmf", VX(4, 0x488), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8255{"zvdotphgwasmfr", VX(4, 0x489), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8256{"zvdotphgwasmfaa", VX(4, 0x48A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8257{"zvdotphgwasmfraa", VX(4, 0x48B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8258{"zvdotphgwasmfan", VX(4, 0x48C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8259{"zvdotphgwasmfran", VX(4, 0x48D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8260{"zvmhulgwsmf", VX(4, 0x490), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8261{"zvmhulgwsmfr", VX(4, 0x491), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8262{"zvmhulgwsmfaa", VX(4, 0x492), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8263{"zvmhulgwsmfraa", VX(4, 0x493), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8264{"zvmhulgwsmfan", VX(4, 0x494), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8265{"zvmhulgwsmfran", VX(4, 0x495), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8266{"zvmhulgwsmfanp", VX(4, 0x496), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8267{"zvmhulgwsmfranp", VX(4, 0x497), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8268{"zmhegwsmf", VX(4, 0x498), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8269{"zmhegwsmfr", VX(4, 0x499), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8270{"zmhegwsmfaa", VX(4, 0x49A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8271{"zmhegwsmfraa", VX(4, 0x49B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8272{"zmhegwsmfan", VX(4, 0x49C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8273{"zmhegwsmfran", VX(4, 0x49D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8274{"zvdotphxgwasmf", VX(4, 0x4A8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8275{"zvdotphxgwasmfr", VX(4, 0x4A9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8276{"zvdotphxgwasmfaa", VX(4, 0x4AA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8277{"zvdotphxgwasmfraa", VX(4, 0x4AB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8278{"zvdotphxgwasmfan", VX(4, 0x4AC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8279{"zvdotphxgwasmfran", VX(4, 0x4AD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8280{"zvmhllgwsmf", VX(4, 0x4B0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8281{"zvmhllgwsmfr", VX(4, 0x4B1), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8282{"zvmhllgwsmfaa", VX(4, 0x4B2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8283{"zvmhllgwsmfraa", VX(4, 0x4B3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8284{"zvmhllgwsmfan", VX(4, 0x4B4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8285{"zvmhllgwsmfran", VX(4, 0x4B5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8286{"zvmhllgwsmfanp", VX(4, 0x4B6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8287{"zvmhllgwsmfranp", VX(4, 0x4B7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8288{"zmheogwsmf", VX(4, 0x4B8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8289{"zmheogwsmfr", VX(4, 0x4B9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8290{"zmheogwsmfaa", VX(4, 0x4BA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8291{"zmheogwsmfraa", VX(4, 0x4BB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8292{"zmheogwsmfan", VX(4, 0x4BC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8293{"zmheogwsmfran", VX(4, 0x4BD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8294{"zvdotphgwssmf", VX(4, 0x4C8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8295{"zvdotphgwssmfr", VX(4, 0x4C9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8296{"zvdotphgwssmfaa", VX(4, 0x4CA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8297{"zvdotphgwssmfraa", VX(4, 0x4CB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8298{"zvdotphgwssmfan", VX(4, 0x4CC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8299{"zvdotphgwssmfran", VX(4, 0x4CD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8300{"zvmhuugwsmf", VX(4, 0x4D0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8301{"zvmhuugwsmfr", VX(4, 0x4D1), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8302{"zvmhuugwsmfaa", VX(4, 0x4D2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8303{"zvmhuugwsmfraa", VX(4, 0x4D3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8304{"zvmhuugwsmfan", VX(4, 0x4D4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8305{"zvmhuugwsmfran", VX(4, 0x4D5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8306{"zvmhuugwsmfanp", VX(4, 0x4D6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8307{"zvmhuugwsmfranp", VX(4, 0x4D7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8308{"zmhogwsmf", VX(4, 0x4D8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8309{"zmhogwsmfr", VX(4, 0x4D9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8310{"zmhogwsmfaa", VX(4, 0x4DA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8311{"zmhogwsmfraa", VX(4, 0x4DB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8312{"zmhogwsmfan", VX(4, 0x4DC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8313{"zmhogwsmfran", VX(4, 0x4DD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8314{"zvmhxlgwsmf", VX(4, 0x4F0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8315{"zvmhxlgwsmfr", VX(4, 0x4F1), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8316{"zvmhxlgwsmfaa", VX(4, 0x4F2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8317{"zvmhxlgwsmfraa", VX(4, 0x4F3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8318{"zvmhxlgwsmfan", VX(4, 0x4F4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8319{"zvmhxlgwsmfran", VX(4, 0x4F5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8320{"zvmhxlgwsmfanp", VX(4, 0x4F6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8321{"zvmhxlgwsmfranp", VX(4, 0x4F7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8322{"zmhegui", VX(4, 0x500), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8323{"zvdotphgaui", VX(4, 0x501), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8324{"zmheguiaa", VX(4, 0x502), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8325{"zvdotphgauiaa", VX(4, 0x503), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8326{"zmheguian", VX(4, 0x504), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8327{"zvdotphgauian", VX(4, 0x505), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8328{"zmhegsi", VX(4, 0x508), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8329{"zvdotphgasi", VX(4, 0x509), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8330{"zmhegsiaa", VX(4, 0x50A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8331{"zvdotphgasiaa", VX(4, 0x50B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8332{"zmhegsian", VX(4, 0x50C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8333{"zvdotphgasian", VX(4, 0x50D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8334{"zmhegsui", VX(4, 0x510), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8335{"zvdotphgasui", VX(4, 0x511), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8336{"zmhegsuiaa", VX(4, 0x512), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8337{"zvdotphgasuiaa", VX(4, 0x513), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8338{"zmhegsuian", VX(4, 0x514), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8339{"zvdotphgasuian", VX(4, 0x515), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8340{"zmhegsmf", VX(4, 0x518), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8341{"zvdotphgasmf", VX(4, 0x519), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8342{"zmhegsmfaa", VX(4, 0x51A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8343{"zvdotphgasmfaa", VX(4, 0x51B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8344{"zmhegsmfan", VX(4, 0x51C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8345{"zvdotphgasmfan", VX(4, 0x51D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8346{"zmheogui", VX(4, 0x520), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8347{"zvdotphxgaui", VX(4, 0x521), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8348{"zmheoguiaa", VX(4, 0x522), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8349{"zvdotphxgauiaa", VX(4, 0x523), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8350{"zmheoguian", VX(4, 0x524), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8351{"zvdotphxgauian", VX(4, 0x525), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8352{"zmheogsi", VX(4, 0x528), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8353{"zvdotphxgasi", VX(4, 0x529), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8354{"zmheogsiaa", VX(4, 0x52A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8355{"zvdotphxgasiaa", VX(4, 0x52B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8356{"zmheogsian", VX(4, 0x52C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8357{"zvdotphxgasian", VX(4, 0x52D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8358{"zmheogsui", VX(4, 0x530), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8359{"zvdotphxgasui", VX(4, 0x531), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8360{"zmheogsuiaa", VX(4, 0x532), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8361{"zvdotphxgasuiaa", VX(4, 0x533), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8362{"zmheogsuian", VX(4, 0x534), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8363{"zvdotphxgasuian", VX(4, 0x535), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8364{"zmheogsmf", VX(4, 0x538), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8365{"zvdotphxgasmf", VX(4, 0x539), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8366{"zmheogsmfaa", VX(4, 0x53A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8367{"zvdotphxgasmfaa", VX(4, 0x53B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8368{"zmheogsmfan", VX(4, 0x53C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8369{"zvdotphxgasmfan", VX(4, 0x53D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8370{"zmhogui", VX(4, 0x540), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8371{"zvdotphgsui", VX(4, 0x541), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8372{"zmhoguiaa", VX(4, 0x542), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8373{"zvdotphgsuiaa", VX(4, 0x543), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8374{"zmhoguian", VX(4, 0x544), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8375{"zvdotphgsuian", VX(4, 0x545), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8376{"zmhogsi", VX(4, 0x548), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8377{"zvdotphgssi", VX(4, 0x549), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8378{"zmhogsiaa", VX(4, 0x54A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8379{"zvdotphgssiaa", VX(4, 0x54B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8380{"zmhogsian", VX(4, 0x54C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8381{"zvdotphgssian", VX(4, 0x54D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8382{"zmhogsui", VX(4, 0x550), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8383{"zvdotphgssui", VX(4, 0x551), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8384{"zmhogsuiaa", VX(4, 0x552), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8385{"zvdotphgssuiaa", VX(4, 0x553), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8386{"zmhogsuian", VX(4, 0x554), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8387{"zvdotphgssuian", VX(4, 0x555), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8388{"zmhogsmf", VX(4, 0x558), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8389{"zvdotphgssmf", VX(4, 0x559), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8390{"zmhogsmfaa", VX(4, 0x55A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8391{"zvdotphgssmfaa", VX(4, 0x55B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8392{"zmhogsmfan", VX(4, 0x55C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8393{"zvdotphgssmfan", VX(4, 0x55D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8394{"zmwgui", VX(4, 0x560), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8395{"zmwguiaa", VX(4, 0x562), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8396{"zmwguiaas", VX(4, 0x563), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8397{"zmwguian", VX(4, 0x564), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8398{"zmwguians", VX(4, 0x565), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8399{"zmwgsi", VX(4, 0x568), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8400{"zmwgsiaa", VX(4, 0x56A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8401{"zmwgsiaas", VX(4, 0x56B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8402{"zmwgsian", VX(4, 0x56C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8403{"zmwgsians", VX(4, 0x56D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8404{"zmwgsui", VX(4, 0x570), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8405{"zmwgsuiaa", VX(4, 0x572), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8406{"zmwgsuiaas", VX(4, 0x573), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8407{"zmwgsuian", VX(4, 0x574), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8408{"zmwgsuians", VX(4, 0x575), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8409{"zmwgsmf", VX(4, 0x578), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8410{"zmwgsmfr", VX(4, 0x579), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8411{"zmwgsmfaa", VX(4, 0x57A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8412{"zmwgsmfraa", VX(4, 0x57B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8413{"zmwgsmfan", VX(4, 0x57C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8414{"zmwgsmfran", VX(4, 0x57D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8415{"zvmhului", VX(4, 0x580), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8416{"zvmhuluiaa", VX(4, 0x582), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8417{"zvmhuluiaas", VX(4, 0x583), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8418{"zvmhuluian", VX(4, 0x584), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8419{"zvmhuluians", VX(4, 0x585), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8420{"zvmhuluianp", VX(4, 0x586), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8421{"zvmhuluianps", VX(4, 0x587), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8422{"zvmhulsi", VX(4, 0x588), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8423{"zvmhulsiaa", VX(4, 0x58A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8424{"zvmhulsiaas", VX(4, 0x58B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8425{"zvmhulsian", VX(4, 0x58C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8426{"zvmhulsians", VX(4, 0x58D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8427{"zvmhulsianp", VX(4, 0x58E), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8428{"zvmhulsianps", VX(4, 0x58F), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8429{"zvmhulsui", VX(4, 0x590), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8430{"zvmhulsuiaa", VX(4, 0x592), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8431{"zvmhulsuiaas", VX(4, 0x593), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8432{"zvmhulsuian", VX(4, 0x594), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8433{"zvmhulsuians", VX(4, 0x595), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8434{"zvmhulsuianp", VX(4, 0x596), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8435{"zvmhulsuianps", VX(4, 0x597), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8436{"zvmhulsf", VX(4, 0x598), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8437{"zvmhulsfr", VX(4, 0x599), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8438{"zvmhulsfaas", VX(4, 0x59A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8439{"zvmhulsfraas", VX(4, 0x59B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8440{"zvmhulsfans", VX(4, 0x59C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8441{"zvmhulsfrans", VX(4, 0x59D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8442{"zvmhulsfanps", VX(4, 0x59E), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8443{"zvmhulsfranps", VX(4, 0x59F), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8444{"zvmhllui", VX(4, 0x5A0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8445{"zvmhlluiaa", VX(4, 0x5A2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8446{"zvmhlluiaas", VX(4, 0x5A3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8447{"zvmhlluian", VX(4, 0x5A4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8448{"zvmhlluians", VX(4, 0x5A5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8449{"zvmhlluianp", VX(4, 0x5A6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8450{"zvmhlluianps", VX(4, 0x5A7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8451{"zvmhllsi", VX(4, 0x5A8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8452{"zvmhllsiaa", VX(4, 0x5AA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8453{"zvmhllsiaas", VX(4, 0x5AB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8454{"zvmhllsian", VX(4, 0x5AC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8455{"zvmhllsians", VX(4, 0x5AD), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8456{"zvmhllsianp", VX(4, 0x5AE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8457{"zvmhllsianps", VX(4, 0x5AF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8458{"zvmhllsui", VX(4, 0x5B0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8459{"zvmhllsuiaa", VX(4, 0x5B2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8460{"zvmhllsuiaas", VX(4, 0x5B3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8461{"zvmhllsuian", VX(4, 0x5B4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8462{"zvmhllsuians", VX(4, 0x5B5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8463{"zvmhllsuianp", VX(4, 0x5B6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8464{"zvmhllsuianps", VX(4, 0x5B7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8465{"zvmhllsf", VX(4, 0x5B8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8466{"zvmhllsfr", VX(4, 0x5B9), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8467{"zvmhllsfaas", VX(4, 0x5BA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8468{"zvmhllsfraas", VX(4, 0x5BB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8469{"zvmhllsfans", VX(4, 0x5BC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8470{"zvmhllsfrans", VX(4, 0x5BD), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8471{"zvmhllsfanps", VX(4, 0x5BE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8472{"zvmhllsfranps", VX(4, 0x5BF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8473{"zvmhuuui", VX(4, 0x5C0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8474{"zvmhuuuiaa", VX(4, 0x5C2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8475{"zvmhuuuiaas", VX(4, 0x5C3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8476{"zvmhuuuian", VX(4, 0x5C4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8477{"zvmhuuuians", VX(4, 0x5C5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8478{"zvmhuuuianp", VX(4, 0x5C6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8479{"zvmhuuuianps", VX(4, 0x5C7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8480{"zvmhuusi", VX(4, 0x5C8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8481{"zvmhuusiaa", VX(4, 0x5CA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8482{"zvmhuusiaas", VX(4, 0x5CB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8483{"zvmhuusian", VX(4, 0x5CC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8484{"zvmhuusians", VX(4, 0x5CD), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8485{"zvmhuusianp", VX(4, 0x5CE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8486{"zvmhuusianps", VX(4, 0x5CF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8487{"zvmhuusui", VX(4, 0x5D0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8488{"zvmhuusuiaa", VX(4, 0x5D2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8489{"zvmhuusuiaas", VX(4, 0x5D3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8490{"zvmhuusuian", VX(4, 0x5D4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8491{"zvmhuusuians", VX(4, 0x5D5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8492{"zvmhuusuianp", VX(4, 0x5D6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8493{"zvmhuusuianps", VX(4, 0x5D7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8494{"zvmhuusf", VX(4, 0x5D8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8495{"zvmhuusfr", VX(4, 0x5D9), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8496{"zvmhuusfaas", VX(4, 0x5DA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8497{"zvmhuusfraas", VX(4, 0x5DB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8498{"zvmhuusfans", VX(4, 0x5DC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8499{"zvmhuusfrans", VX(4, 0x5DD), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8500{"zvmhuusfanps", VX(4, 0x5DE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8501{"zvmhuusfranps", VX(4, 0x5DF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8502{"zvmhxlui", VX(4, 0x5E0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8503{"zvmhxluiaa", VX(4, 0x5E2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8504{"zvmhxluiaas", VX(4, 0x5E3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8505{"zvmhxluian", VX(4, 0x5E4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8506{"zvmhxluians", VX(4, 0x5E5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8507{"zvmhxluianp", VX(4, 0x5E6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8508{"zvmhxluianps", VX(4, 0x5E7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8509{"zvmhxlsi", VX(4, 0x5E8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8510{"zvmhxlsiaa", VX(4, 0x5EA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8511{"zvmhxlsiaas", VX(4, 0x5EB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8512{"zvmhxlsian", VX(4, 0x5EC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8513{"zvmhxlsians", VX(4, 0x5ED), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8514{"zvmhxlsianp", VX(4, 0x5EE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8515{"zvmhxlsianps", VX(4, 0x5EF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8516{"zvmhxlsui", VX(4, 0x5F0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8517{"zvmhxlsuiaa", VX(4, 0x5F2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8518{"zvmhxlsuiaas", VX(4, 0x5F3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8519{"zvmhxlsuian", VX(4, 0x5F4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8520{"zvmhxlsuians", VX(4, 0x5F5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8521{"zvmhxlsuianp", VX(4, 0x5F6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8522{"zvmhxlsuianps", VX(4, 0x5F7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8523{"zvmhxlsf", VX(4, 0x5F8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8524{"zvmhxlsfr", VX(4, 0x5F9), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8525{"zvmhxlsfaas", VX(4, 0x5FA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8526{"zvmhxlsfraas", VX(4, 0x5FB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8527{"zvmhxlsfans", VX(4, 0x5FC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8528{"zvmhxlsfrans", VX(4, 0x5FD), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8529{"zvmhxlsfanps", VX(4, 0x5FE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8530{"zvmhxlsfranps", VX(4, 0x5FF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8531{"zmheui", VX(4, 0x600), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8532{"zmheuiaa", VX(4, 0x602), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8533{"zmheuiaas", VX(4, 0x603), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8534{"zmheuian", VX(4, 0x604), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8535{"zmheuians", VX(4, 0x605), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8536{"zmhesi", VX(4, 0x608), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8537{"zmhesiaa", VX(4, 0x60A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8538{"zmhesiaas", VX(4, 0x60B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8539{"zmhesian", VX(4, 0x60C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8540{"zmhesians", VX(4, 0x60D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8541{"zmhesui", VX(4, 0x610), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8542{"zmhesuiaa", VX(4, 0x612), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8543{"zmhesuiaas", VX(4, 0x613), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8544{"zmhesuian", VX(4, 0x614), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8545{"zmhesuians", VX(4, 0x615), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8546{"zmhesf", VX(4, 0x618), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8547{"zmhesfr", VX(4, 0x619), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8548{"zmhesfaas", VX(4, 0x61A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8549{"zmhesfraas", VX(4, 0x61B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8550{"zmhesfans", VX(4, 0x61C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8551{"zmhesfrans", VX(4, 0x61D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8552{"zmheoui", VX(4, 0x620), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8553{"zmheouiaa", VX(4, 0x622), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8554{"zmheouiaas", VX(4, 0x623), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8555{"zmheouian", VX(4, 0x624), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8556{"zmheouians", VX(4, 0x625), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8557{"zmheosi", VX(4, 0x628), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8558{"zmheosiaa", VX(4, 0x62A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8559{"zmheosiaas", VX(4, 0x62B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8560{"zmheosian", VX(4, 0x62C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8561{"zmheosians", VX(4, 0x62D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8562{"zmheosui", VX(4, 0x630), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8563{"zmheosuiaa", VX(4, 0x632), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8564{"zmheosuiaas", VX(4, 0x633), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8565{"zmheosuian", VX(4, 0x634), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8566{"zmheosuians", VX(4, 0x635), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8567{"zmheosf", VX(4, 0x638), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8568{"zmheosfr", VX(4, 0x639), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8569{"zmheosfaas", VX(4, 0x63A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8570{"zmheosfraas", VX(4, 0x63B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8571{"zmheosfans", VX(4, 0x63C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8572{"zmheosfrans", VX(4, 0x63D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8573{"zmhoui", VX(4, 0x640), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8574{"zmhouiaa", VX(4, 0x642), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8575{"zmhouiaas", VX(4, 0x643), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8576{"zmhouian", VX(4, 0x644), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8577{"zmhouians", VX(4, 0x645), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8578{"zmhosi", VX(4, 0x648), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8579{"zmhosiaa", VX(4, 0x64A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8580{"zmhosiaas", VX(4, 0x64B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8581{"zmhosian", VX(4, 0x64C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8582{"zmhosians", VX(4, 0x64D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8583{"zmhosui", VX(4, 0x650), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8584{"zmhosuiaa", VX(4, 0x652), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8585{"zmhosuiaas", VX(4, 0x653), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8586{"zmhosuian", VX(4, 0x654), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8587{"zmhosuians", VX(4, 0x655), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8588{"zmhosf", VX(4, 0x658), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8589{"zmhosfr", VX(4, 0x659), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8590{"zmhosfaas", VX(4, 0x65A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8591{"zmhosfraas", VX(4, 0x65B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8592{"zmhosfans", VX(4, 0x65C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8593{"zmhosfrans", VX(4, 0x65D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8594{"zvmhuih", VX(4, 0x660), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8595{"zvmhuihs", VX(4, 0x661), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8596{"zvmhuiaah", VX(4, 0x662), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8597{"zvmhuiaahs", VX(4, 0x663), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8598{"zvmhuianh", VX(4, 0x664), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8599{"zvmhuianhs", VX(4, 0x665), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8600{"zvmhsihs", VX(4, 0x669), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8601{"zvmhsiaahs", VX(4, 0x66B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8602{"zvmhsianhs", VX(4, 0x66D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8603{"zvmhsuihs", VX(4, 0x671), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8604{"zvmhsuiaahs", VX(4, 0x673), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8605{"zvmhsuianhs", VX(4, 0x675), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8606{"zvmhsfh", VX(4, 0x678), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8607{"zvmhsfrh", VX(4, 0x679), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8608{"zvmhsfaahs", VX(4, 0x67A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8609{"zvmhsfraahs", VX(4, 0x67B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8610{"zvmhsfanhs", VX(4, 0x67C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8611{"zvmhsfranhs", VX(4, 0x67D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8612{"zvdotphaui", VX(4, 0x680), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8613{"zvdotphauis", VX(4, 0x681), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8614{"zvdotphauiaa", VX(4, 0x682), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8615{"zvdotphauiaas", VX(4, 0x683), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8616{"zvdotphauian", VX(4, 0x684), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8617{"zvdotphauians", VX(4, 0x685), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8618{"zvdotphasi", VX(4, 0x688), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8619{"zvdotphasis", VX(4, 0x689), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8620{"zvdotphasiaa", VX(4, 0x68A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8621{"zvdotphasiaas", VX(4, 0x68B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8622{"zvdotphasian", VX(4, 0x68C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8623{"zvdotphasians", VX(4, 0x68D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8624{"zvdotphasui", VX(4, 0x690), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8625{"zvdotphasuis", VX(4, 0x691), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8626{"zvdotphasuiaa", VX(4, 0x692), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8627{"zvdotphasuiaas", VX(4, 0x693), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8628{"zvdotphasuian", VX(4, 0x694), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8629{"zvdotphasuians", VX(4, 0x695), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8630{"zvdotphasfs", VX(4, 0x698), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8631{"zvdotphasfrs", VX(4, 0x699), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8632{"zvdotphasfaas", VX(4, 0x69A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8633{"zvdotphasfraas", VX(4, 0x69B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8634{"zvdotphasfans", VX(4, 0x69C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8635{"zvdotphasfrans", VX(4, 0x69D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8636{"zvdotphxaui", VX(4, 0x6A0), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8637{"zvdotphxauis", VX(4, 0x6A1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8638{"zvdotphxauiaa", VX(4, 0x6A2), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8639{"zvdotphxauiaas", VX(4, 0x6A3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8640{"zvdotphxauian", VX(4, 0x6A4), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8641{"zvdotphxauians", VX(4, 0x6A5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8642{"zvdotphxasi", VX(4, 0x6A8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8643{"zvdotphxasis", VX(4, 0x6A9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8644{"zvdotphxasiaa", VX(4, 0x6AA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8645{"zvdotphxasiaas", VX(4, 0x6AB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8646{"zvdotphxasian", VX(4, 0x6AC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8647{"zvdotphxasians", VX(4, 0x6AD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8648{"zvdotphxasui", VX(4, 0x6B0), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8649{"zvdotphxasuis", VX(4, 0x6B1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8650{"zvdotphxasuiaa", VX(4, 0x6B2), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8651{"zvdotphxasuiaas", VX(4, 0x6B3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8652{"zvdotphxasuian", VX(4, 0x6B4), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8653{"zvdotphxasuians", VX(4, 0x6B5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8654{"zvdotphxasfs", VX(4, 0x6B8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8655{"zvdotphxasfrs", VX(4, 0x6B9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8656{"zvdotphxasfaas", VX(4, 0x6BA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8657{"zvdotphxasfraas", VX(4, 0x6BB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8658{"zvdotphxasfans", VX(4, 0x6BC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8659{"zvdotphxasfrans", VX(4, 0x6BD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8660{"zvdotphsui", VX(4, 0x6C0), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8661{"zvdotphsuis", VX(4, 0x6C1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8662{"zvdotphsuiaa", VX(4, 0x6C2), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8663{"zvdotphsuiaas", VX(4, 0x6C3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8664{"zvdotphsuian", VX(4, 0x6C4), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8665{"zvdotphsuians", VX(4, 0x6C5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8666{"zvdotphssi", VX(4, 0x6C8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8667{"zvdotphssis", VX(4, 0x6C9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8668{"zvdotphssiaa", VX(4, 0x6CA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8669{"zvdotphssiaas", VX(4, 0x6CB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8670{"zvdotphssian", VX(4, 0x6CC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8671{"zvdotphssians", VX(4, 0x6CD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8672{"zvdotphssui", VX(4, 0x6D0), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8673{"zvdotphssuis", VX(4, 0x6D1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8674{"zvdotphssuiaa", VX(4, 0x6D2), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8675{"zvdotphssuiaas", VX(4, 0x6D3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8676{"zvdotphssuian", VX(4, 0x6D4), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8677{"zvdotphssuians", VX(4, 0x6D5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8678{"zvdotphssfs", VX(4, 0x6D8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8679{"zvdotphssfrs", VX(4, 0x6D9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8680{"zvdotphssfaas", VX(4, 0x6DA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8681{"zvdotphssfraas", VX(4, 0x6DB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8682{"zvdotphssfans", VX(4, 0x6DC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8683{"zvdotphssfrans", VX(4, 0x6DD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8684{"zmwluis", VX(4, 0x6E1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8685{"zmwluiaa", VX(4, 0x6E2), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8686{"zmwluiaas", VX(4, 0x6E3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8687{"zmwluian", VX(4, 0x6E4), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8688{"zmwluians", VX(4, 0x6E5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8689{"zmwlsis", VX(4, 0x6E9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8690{"zmwlsiaas", VX(4, 0x6EB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8691{"zmwlsians", VX(4, 0x6ED), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8692{"zmwlsuis", VX(4, 0x6F1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8693{"zmwlsuiaas", VX(4, 0x6F3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8694{"zmwlsuians", VX(4, 0x6F5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8695{"zmwsf", VX(4, 0x6F8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8696{"zmwsfr", VX(4, 0x6F9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8697{"zmwsfaas", VX(4, 0x6FA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8698{"zmwsfraas", VX(4, 0x6FB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8699{"zmwsfans", VX(4, 0x6FC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8700{"zmwsfrans", VX(4, 0x6FD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8701{"zlddx", VX(4, 0x300), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8702{"zldd", VX(4, 0x301), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8, RA}},
8703{"zldwx", VX(4, 0x302), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8704{"zldw", VX(4, 0x303), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8, RA}},
8705{"zldhx", VX(4, 0x304), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8706{"zldh", VX(4, 0x305), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8, RA}},
8707{"zlwgsfdx", VX(4, 0x308), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8708{"zlwgsfd", VX(4, 0x309), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
8709{"zlwwosdx", VX(4, 0x30A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8710{"zlwwosd", VX(4, 0x30B), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
8711{"zlwhsplatwdx", VX(4, 0x30C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8712{"zlwhsplatwd", VX(4, 0x30D), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
8713{"zlwhsplatdx", VX(4, 0x30E), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8714{"zlwhsplatd", VX(4, 0x30F), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
8715{"zlwhgwsfdx", VX(4, 0x310), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8716{"zlwhgwsfd", VX(4, 0x311), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
8717{"zlwhedx", VX(4, 0x312), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8718{"zlwhed", VX(4, 0x313), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
8719{"zlwhosdx", VX(4, 0x314), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8720{"zlwhosd", VX(4, 0x315), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
8721{"zlwhoudx", VX(4, 0x316), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8722{"zlwhoud", VX(4, 0x317), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
8723{"zlwhx", VX(4, 0x318), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8724{"zlwh", VX(4, 0x319), VX_MASK, PPCLSP, 0, {RD, EVUIMM_4, RA}},
8725{"zlwwx", VX(4, 0x31A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8726{"zlww", VX(4, 0x31B), VX_MASK, PPCLSP, 0, {RD, EVUIMM_4, RA}},
8727{"zlhgwsfx", VX(4, 0x31C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8728{"zlhgwsf", VX(4, 0x31D), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2, RA}},
8729{"zlhhsplatx", VX(4, 0x31E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8730{"zlhhsplat", VX(4, 0x31F), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2, RA}},
8731{"zstddx", VX(4, 0x320), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
8732{"zstdd", VX(4, 0x321), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_8, RA}},
8733{"zstdwx", VX(4, 0x322), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
8734{"zstdw", VX(4, 0x323), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_8, RA}},
8735{"zstdhx", VX(4, 0x324), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
8736{"zstdh", VX(4, 0x325), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_8, RA}},
8737{"zstwhedx", VX(4, 0x328), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
8738{"zstwhed", VX(4, 0x329), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_4, RA}},
8739{"zstwhodx", VX(4, 0x32A), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
8740{"zstwhod", VX(4, 0x32B), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_4, RA}},
8741{"zlhhex", VX(4, 0x330), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8742{"zlhhe", VX(4, 0x331), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2, RA}},
8743{"zlhhosx", VX(4, 0x332), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8744{"zlhhos", VX(4, 0x333), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2, RA}},
8745{"zlhhoux", VX(4, 0x334), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8746{"zlhhou", VX(4, 0x335), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2, RA}},
8747{"zsthex", VX(4, 0x338), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
8748{"zsthe", VX(4, 0x339), VX_MASK, PPCLSP, 0, {RS, EVUIMM_2, RA}},
8749{"zsthox", VX(4, 0x33A), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
8750{"zstho", VX(4, 0x33B), VX_MASK, PPCLSP, 0, {RS, EVUIMM_2, RA}},
8751{"zstwhx", VX(4, 0x33C), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
8752{"zstwh", VX(4, 0x33D), VX_MASK, PPCLSP, 0, {RS, EVUIMM_4, RA}},
8753{"zstwwx", VX(4, 0x33E), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
8754{"zstww", VX(4, 0x33F), VX_MASK, PPCLSP, 0, {RS, EVUIMM_4, RA}},
8755{"zlddmx", VX(4, 0x340), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8756{"zlddu", VX(4, 0x341), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8_EX0, RA}},
8757{"zldwmx", VX(4, 0x342), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8758{"zldwu", VX(4, 0x343), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8_EX0, RA}},
8759{"zldhmx", VX(4, 0x344), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8760{"zldhu", VX(4, 0x345), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8_EX0, RA}},
8761{"zlwgsfdmx", VX(4, 0x348), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8762{"zlwgsfdu", VX(4, 0x349), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
8763{"zlwwosdmx", VX(4, 0x34A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8764{"zlwwosdu", VX(4, 0x34B), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
8765{"zlwhsplatwdmx", VX(4, 0x34C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8766{"zlwhsplatwdu", VX(4, 0x34D), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
8767{"zlwhsplatdmx", VX(4, 0x34E), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8768{"zlwhsplatdu", VX(4, 0x34F), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
8769{"zlwhgwsfdmx", VX(4, 0x350), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8770{"zlwhgwsfdu", VX(4, 0x351), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
8771{"zlwhedmx", VX(4, 0x352), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8772{"zlwhedu", VX(4, 0x353), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
8773{"zlwhosdmx", VX(4, 0x354), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8774{"zlwhosdu", VX(4, 0x355), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
8775{"zlwhoudmx", VX(4, 0x356), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
8776{"zlwhoudu", VX(4, 0x357), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
8777{"zlwhmx", VX(4, 0x358), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8778{"zlwhu", VX(4, 0x359), VX_MASK, PPCLSP, 0, {RD, EVUIMM_4_EX0, RA}},
8779{"zlwwmx", VX(4, 0x35A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8780{"zlwwu", VX(4, 0x35B), VX_MASK, PPCLSP, 0, {RD, EVUIMM_4_EX0, RA}},
8781{"zlhgwsfmx", VX(4, 0x35C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8782{"zlhgwsfu", VX(4, 0x35D), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2_EX0, RA}},
8783{"zlhhsplatmx", VX(4, 0x35E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8784{"zlhhsplatu", VX(4, 0x35F), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2_EX0, RA}},
8785{"zstddmx", VX(4, 0x360), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
8786{"zstddu", VX(4, 0x361), VX_MASK, PPCLSP, 0, {RS, EVUIMM_8_EX0, RA}},
8787{"zstdwmx", VX(4, 0x362), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
8788{"zstdwu", VX(4, 0x363), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_8_EX0, RA}},
8789{"zstdhmx", VX(4, 0x364), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
8790{"zstdhu", VX(4, 0x365), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_8_EX0, RA}},
8791{"zstwhedmx", VX(4, 0x368), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
8792{"zstwhedu", VX(4, 0x369), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_4_EX0, RA}},
8793{"zstwhodmx", VX(4, 0x36A), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
8794{"zstwhodu", VX(4, 0x36B), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_4_EX0, RA}},
8795{"zlhhemx", VX(4, 0x370), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8796{"zlhheu", VX(4, 0x371), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2_EX0, RA}},
8797{"zlhhosmx", VX(4, 0x372), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8798{"zlhhosu", VX(4, 0x373), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2_EX0, RA}},
8799{"zlhhoumx", VX(4, 0x374), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8800{"zlhhouu", VX(4, 0x375), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2_EX0, RA}},
8801{"zsthemx", VX(4, 0x378), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
8802{"zstheu", VX(4, 0x379), VX_MASK, PPCLSP, 0, {RS, EVUIMM_2_EX0, RA}},
8803{"zsthomx", VX(4, 0x37A), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
8804{"zsthou", VX(4, 0x37B), VX_MASK, PPCLSP, 0, {RS, EVUIMM_2_EX0, RA}},
8805{"zstwhmx", VX(4, 0x37C), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
8806{"zstwhu", VX(4, 0x37D), VX_MASK, PPCLSP, 0, {RS, EVUIMM_4_EX0, RA}},
8807{"zstwwmx", VX(4, 0x37E), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
8808{"zstwwu", VX(4, 0x37F), VX_MASK, PPCLSP, 0, {RS, EVUIMM_4_EX0, RA}},
8809
14b57c7c 8810{"e_cmpi", SCI8BF(6,0,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
dfdaec14 8811{"e_cmpwi", SCI8BF(6,0,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
14b57c7c 8812{"e_cmpli", SCI8BF(6,1,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
dfdaec14 8813{"e_cmplwi", SCI8BF(6,1,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
14b57c7c
AM
8814{"e_addi", SCI8(6,16), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
8815{"e_subi", SCI8(6,16), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8N}},
8816{"e_addi.", SCI8(6,17), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
8817{"e_addic", SCI8(6,18), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
8818{"e_subic", SCI8(6,18), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8N}},
8819{"e_addic.", SCI8(6,19), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
8820{"e_subic.", SCI8(6,19), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8N}},
8821{"e_mulli", SCI8(6,20), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
8822{"e_subfic", SCI8(6,22), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
8823{"e_subfic.", SCI8(6,23), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
8824{"e_andi", SCI8(6,24), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
8825{"e_andi.", SCI8(6,25), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
8826{"e_nop", SCI8(6,26), 0xffffffff, PPCVLE, 0, {0}},
8827{"e_ori", SCI8(6,26), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
8828{"e_ori.", SCI8(6,27), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
8829{"e_xori", SCI8(6,28), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
8830{"e_xori.", SCI8(6,29), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
8831{"e_lbzu", OPVUP(6,0), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
8832{"e_lhau", OPVUP(6,3), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
8833{"e_lhzu", OPVUP(6,1), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
8834{"e_lmw", OPVUP(6,8), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
8835{"e_lwzu", OPVUP(6,2), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
8836{"e_stbu", OPVUP(6,4), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
8837{"e_sthu", OPVUP(6,5), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
8838{"e_stwu", OPVUP(6,6), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
8839{"e_stmw", OPVUP(6,9), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
d2e6c9a3 8840{"e_lmvgprw", OPVUPRT(6,16,0),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
dfdaec14
AJ
8841{"e_ldmvgprw", OPVUPRT(6,16,0),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
8842{"e_stmvgprw", OPVUPRT(6,17,0),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
d2e6c9a3 8843{"e_lmvsprw", OPVUPRT(6,16,1),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
dfdaec14
AJ
8844{"e_ldmvsprw", OPVUPRT(6,16,1),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
8845{"e_stmvsprw", OPVUPRT(6,17,1),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
d2e6c9a3 8846{"e_lmvsrrw", OPVUPRT(6,16,4),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
dfdaec14
AJ
8847{"e_ldmvsrrw", OPVUPRT(6,16,4),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
8848{"e_stmvsrrw", OPVUPRT(6,17,4),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
d2e6c9a3 8849{"e_lmvcsrrw", OPVUPRT(6,16,5),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
dfdaec14
AJ
8850{"e_ldmvcsrrw", OPVUPRT(6,16,5),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
8851{"e_stmvcsrrw", OPVUPRT(6,17,5),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
d2e6c9a3 8852{"e_lmvdsrrw", OPVUPRT(6,16,6),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
dfdaec14
AJ
8853{"e_ldmvdsrrw", OPVUPRT(6,16,6),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
8854{"e_stmvdsrrw", OPVUPRT(6,17,6),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
d2e6c9a3
AF
8855{"e_lmvmcsrrw", OPVUPRT(6,16,7),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
8856{"e_stmvmcsrrw", OPVUPRT(6,17,7),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
14b57c7c
AM
8857{"e_add16i", OP(7), OP_MASK, PPCVLE, 0, {RT, RA, SI}},
8858{"e_la", OP(7), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
8859{"e_sub16i", OP(7), OP_MASK, PPCVLE, 0, {RT, RA, NSI}},
8860
8861{"se_addi", SE_IM5(8,0), SE_IM5_MASK, PPCVLE, 0, {RX, OIMM5}},
8862{"se_cmpli", SE_IM5(8,1), SE_IM5_MASK, PPCVLE, 0, {RX, OIMM5}},
8863{"se_subi", SE_IM5(9,0), SE_IM5_MASK, PPCVLE, 0, {RX, OIMM5}},
8864{"se_subi.", SE_IM5(9,1), SE_IM5_MASK, PPCVLE, 0, {RX, OIMM5}},
8865{"se_cmpi", SE_IM5(10,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
8866{"se_bmaski", SE_IM5(11,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
8867{"se_andi", SE_IM5(11,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
8868
8869{"e_lbz", OP(12), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
8870{"e_stb", OP(13), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
8871{"e_lha", OP(14), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
8872
8873{"se_srw", SE_RR(16,0), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
8874{"se_sraw", SE_RR(16,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
8875{"se_slw", SE_RR(16,2), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
8876{"se_nop", SE_RR(17,0), 0xffff, PPCVLE, 0, {0}},
8877{"se_or", SE_RR(17,0), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
8878{"se_andc", SE_RR(17,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
8879{"se_and", SE_RR(17,2), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
8880{"se_and.", SE_RR(17,3), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
8881{"se_li", IM7(9), IM7_MASK, PPCVLE, 0, {RX, UI7}},
8882
8883{"e_lwz", OP(20), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
8884{"e_stw", OP(21), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
8885{"e_lhz", OP(22), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
8886{"e_sth", OP(23), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
8887
8888{"se_bclri", SE_IM5(24,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
8889{"se_bgeni", SE_IM5(24,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
8890{"se_bseti", SE_IM5(25,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
8891{"se_btsti", SE_IM5(25,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
8892{"se_srwi", SE_IM5(26,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
8893{"se_srawi", SE_IM5(26,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
8894{"se_slwi", SE_IM5(27,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
8895
8896{"e_lis", I16L(28,28), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}},
8897{"e_and2is.", I16L(28,29), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}},
8898{"e_or2is", I16L(28,26), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}},
8899{"e_and2i.", I16L(28,25), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}},
8900{"e_or2i", I16L(28,24), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}},
8901{"e_cmphl16i", IA16(28,23), IA16_MASK, PPCVLE, 0, {RA, VLEUIMM}},
8902{"e_cmph16i", IA16(28,22), IA16_MASK, PPCVLE, 0, {RA, VLESIMM}},
8903{"e_cmpl16i", I16A(28,21), I16A_MASK, PPCVLE, 0, {RA, VLEUIMM}},
14b57c7c
AM
8904{"e_mull2i", I16A(28,20), I16A_MASK, PPCVLE, 0, {RA, VLESIMM}},
8905{"e_cmp16i", IA16(28,19), IA16_MASK, PPCVLE, 0, {RA, VLESIMM}},
14b57c7c
AM
8906{"e_sub2is", I16A(28,18), I16A_MASK, PPCVLE, 0, {RA, VLENSIMM}},
8907{"e_add2is", I16A(28,18), I16A_MASK, PPCVLE, 0, {RA, VLESIMM}},
8908{"e_sub2i.", I16A(28,17), I16A_MASK, PPCVLE, 0, {RA, VLENSIMM}},
8909{"e_add2i.", I16A(28,17), I16A_MASK, PPCVLE, 0, {RA, VLESIMM}},
8910{"e_li", LI20(28,0), LI20_MASK, PPCVLE, 0, {RT, IMM20}},
8911{"e_rlwimi", M(29,0), M_MASK, PPCVLE, 0, {RA, RS, SH, MB, ME}},
8912{"e_rlwinm", M(29,1), M_MASK, PPCVLE, 0, {RA, RT, SH, MBE, ME}},
8913{"e_b", BD24(30,0,0), BD24_MASK, PPCVLE, 0, {B24}},
8914{"e_bl", BD24(30,0,1), BD24_MASK, PPCVLE, 0, {B24}},
8915{"e_bdnz", EBD15(30,8,BO32DNZ,0), EBD15_MASK, PPCVLE, 0, {B15}},
8916{"e_bdnzl", EBD15(30,8,BO32DNZ,1), EBD15_MASK, PPCVLE, 0, {B15}},
8917{"e_bdz", EBD15(30,8,BO32DZ,0), EBD15_MASK, PPCVLE, 0, {B15}},
8918{"e_bdzl", EBD15(30,8,BO32DZ,1), EBD15_MASK, PPCVLE, 0, {B15}},
8919{"e_bge", EBD15BI(30,8,BO32F,CBLT,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8920{"e_bgel", EBD15BI(30,8,BO32F,CBLT,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8921{"e_bnl", EBD15BI(30,8,BO32F,CBLT,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8922{"e_bnll", EBD15BI(30,8,BO32F,CBLT,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8923{"e_blt", EBD15BI(30,8,BO32T,CBLT,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8924{"e_bltl", EBD15BI(30,8,BO32T,CBLT,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8925{"e_bgt", EBD15BI(30,8,BO32T,CBGT,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8926{"e_bgtl", EBD15BI(30,8,BO32T,CBGT,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8927{"e_ble", EBD15BI(30,8,BO32F,CBGT,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8928{"e_blel", EBD15BI(30,8,BO32F,CBGT,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8929{"e_bng", EBD15BI(30,8,BO32F,CBGT,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8930{"e_bngl", EBD15BI(30,8,BO32F,CBGT,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8931{"e_bne", EBD15BI(30,8,BO32F,CBEQ,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8932{"e_bnel", EBD15BI(30,8,BO32F,CBEQ,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8933{"e_beq", EBD15BI(30,8,BO32T,CBEQ,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8934{"e_beql", EBD15BI(30,8,BO32T,CBEQ,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8935{"e_bso", EBD15BI(30,8,BO32T,CBSO,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8936{"e_bsol", EBD15BI(30,8,BO32T,CBSO,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8937{"e_bun", EBD15BI(30,8,BO32T,CBSO,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8938{"e_bunl", EBD15BI(30,8,BO32T,CBSO,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8939{"e_bns", EBD15BI(30,8,BO32F,CBSO,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8940{"e_bnsl", EBD15BI(30,8,BO32F,CBSO,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8941{"e_bnu", EBD15BI(30,8,BO32F,CBSO,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8942{"e_bnul", EBD15BI(30,8,BO32F,CBSO,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8943{"e_bc", BD15(30,8,0), BD15_MASK, PPCVLE, 0, {BO32, BI32, B15}},
8944{"e_bcl", BD15(30,8,1), BD15_MASK, PPCVLE, 0, {BO32, BI32, B15}},
8945
8946{"e_bf", EBD15(30,8,BO32F,0), EBD15_MASK, PPCVLE, 0, {BI32,B15}},
8947{"e_bfl", EBD15(30,8,BO32F,1), EBD15_MASK, PPCVLE, 0, {BI32,B15}},
8948{"e_bt", EBD15(30,8,BO32T,0), EBD15_MASK, PPCVLE, 0, {BI32,B15}},
8949{"e_btl", EBD15(30,8,BO32T,1), EBD15_MASK, PPCVLE, 0, {BI32,B15}},
8950
8951{"e_cmph", X(31,14), X_MASK, PPCVLE, 0, {CRD, RA, RB}},
a8cc8a54 8952{"e_sc", X(31,36), XRTRA_MASK, PPCVLE, 0, {ELEV}},
14b57c7c
AM
8953{"e_cmphl", X(31,46), X_MASK, PPCVLE, 0, {CRD, RA, RB}},
8954{"e_crandc", XL(31,129), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
8955{"e_crnand", XL(31,225), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
98553ad3 8956{"e_crnot", XL(31,33), XL_MASK, PPCVLE, 0, {BT, BAB}},
14b57c7c 8957{"e_crnor", XL(31,33), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
98553ad3 8958{"e_crclr", XL(31,193), XL_MASK, PPCVLE, 0, {BTAB}},
14b57c7c
AM
8959{"e_crxor", XL(31,193), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
8960{"e_mcrf", XL(31,16), XL_MASK, PPCVLE, 0, {CRD, CR}},
8961{"e_slwi", EX(31,112), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
8962{"e_slwi.", EX(31,113), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
8963
8964{"e_crand", XL(31,257), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
8965
8966{"e_rlw", EX(31,560), EX_MASK, PPCVLE, 0, {RA, RS, RB}},
8967{"e_rlw.", EX(31,561), EX_MASK, PPCVLE, 0, {RA, RS, RB}},
8968
98553ad3 8969{"e_crset", XL(31,289), XL_MASK, PPCVLE, 0, {BTAB}},
14b57c7c
AM
8970{"e_creqv", XL(31,289), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
8971
8972{"e_rlwi", EX(31,624), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
8973{"e_rlwi.", EX(31,625), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
8974
8975{"e_crorc", XL(31,417), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
8976
98553ad3 8977{"e_crmove", XL(31,449), XL_MASK, PPCVLE, 0, {BT, BAB}},
14b57c7c
AM
8978{"e_cror", XL(31,449), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
8979
8980{"mtmas1", XSPR(31,467,625), XSPR_MASK, PPCVLE, 0, {RS}},
8981
8982{"e_srwi", EX(31,1136), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
8983{"e_srwi.", EX(31,1137), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
8984
8985{"se_lbz", SD4(8), SD4_MASK, PPCVLE, 0, {RZ, SE_SD, RX}},
8986
8987{"se_stb", SD4(9), SD4_MASK, PPCVLE, 0, {RZ, SE_SD, RX}},
8988
8989{"se_lhz", SD4(10), SD4_MASK, PPCVLE, 0, {RZ, SE_SDH, RX}},
8990
8991{"se_sth", SD4(11), SD4_MASK, PPCVLE, 0, {RZ, SE_SDH, RX}},
8992
8993{"se_lwz", SD4(12), SD4_MASK, PPCVLE, 0, {RZ, SE_SDW, RX}},
8994
8995{"se_stw", SD4(13), SD4_MASK, PPCVLE, 0, {RZ, SE_SDW, RX}},
8996
8997{"se_bge", EBD8IO(28,0,0), EBD8IO3_MASK, PPCVLE, 0, {B8}},
8998{"se_bnl", EBD8IO(28,0,0), EBD8IO3_MASK, PPCVLE, 0, {B8}},
8999{"se_ble", EBD8IO(28,0,1), EBD8IO3_MASK, PPCVLE, 0, {B8}},
9000{"se_bng", EBD8IO(28,0,1), EBD8IO3_MASK, PPCVLE, 0, {B8}},
9001{"se_bne", EBD8IO(28,0,2), EBD8IO3_MASK, PPCVLE, 0, {B8}},
9002{"se_bns", EBD8IO(28,0,3), EBD8IO3_MASK, PPCVLE, 0, {B8}},
9003{"se_bnu", EBD8IO(28,0,3), EBD8IO3_MASK, PPCVLE, 0, {B8}},
9004{"se_bf", EBD8IO(28,0,0), EBD8IO2_MASK, PPCVLE, 0, {BI16, B8}},
9005{"se_blt", EBD8IO(28,1,0), EBD8IO3_MASK, PPCVLE, 0, {B8}},
9006{"se_bgt", EBD8IO(28,1,1), EBD8IO3_MASK, PPCVLE, 0, {B8}},
9007{"se_beq", EBD8IO(28,1,2), EBD8IO3_MASK, PPCVLE, 0, {B8}},
9008{"se_bso", EBD8IO(28,1,3), EBD8IO3_MASK, PPCVLE, 0, {B8}},
9009{"se_bun", EBD8IO(28,1,3), EBD8IO3_MASK, PPCVLE, 0, {B8}},
9010{"se_bt", EBD8IO(28,1,0), EBD8IO2_MASK, PPCVLE, 0, {BI16, B8}},
9011{"se_bc", BD8IO(28), BD8IO_MASK, PPCVLE, 0, {BO16, BI16, B8}},
9012{"se_b", BD8(58,0,0), BD8_MASK, PPCVLE, 0, {B8}},
9013{"se_bl", BD8(58,0,1), BD8_MASK, PPCVLE, 0, {B8}},
b9c361e0
JL
9014};
9015
2ceb7719 9016const unsigned int vle_num_opcodes =
b9c361e0
JL
9017 sizeof (vle_opcodes) / sizeof (vle_opcodes[0]);
9018\f
252b5132
RH
9019/* The macro table. This is only used by the assembler. */
9020
9021/* The expressions of the form (-x ! 31) & (x | 31) have the value 0
9022 when x=0; 32-x when x is between 1 and 31; are negative if x is
9023 negative; and are 32 or more otherwise. This is what you want
9024 when, for instance, you are emulating a right shift by a
9025 rotate-left-and-mask, because the underlying instructions support
9026 shifts of size 0 but not shifts of size 32. By comparison, when
9027 extracting x bits from some word you want to use just 32-x, because
9028 the underlying instructions don't support extracting 0 bits but do
9029 support extracting the whole word (32 bits in this case). */
9030
9031const struct powerpc_macro powerpc_macros[] = {
de866fcc
AM
9032{"extldi", 4, PPC64, "rldicr %0,%1,%3,(%2)-1"},
9033{"extldi.", 4, PPC64, "rldicr. %0,%1,%3,(%2)-1"},
bdc7fcfe
AM
9034{"extrdi", 4, PPC64, "rldicl %0,%1,((%2)+(%3))&((%2)+(%3)<>64),64-(%2)"},
9035{"extrdi.", 4, PPC64, "rldicl. %0,%1,((%2)+(%3))&((%2)+(%3)<>64),64-(%2)"},
de866fcc
AM
9036{"insrdi", 4, PPC64, "rldimi %0,%1,64-((%2)+(%3)),%3"},
9037{"insrdi.", 4, PPC64, "rldimi. %0,%1,64-((%2)+(%3)),%3"},
9038{"rotrdi", 3, PPC64, "rldicl %0,%1,(-(%2)!63)&((%2)|63),0"},
9039{"rotrdi.", 3, PPC64, "rldicl. %0,%1,(-(%2)!63)&((%2)|63),0"},
9040{"sldi", 3, PPC64, "rldicr %0,%1,%2,63-(%2)"},
9041{"sldi.", 3, PPC64, "rldicr. %0,%1,%2,63-(%2)"},
9042{"srdi", 3, PPC64, "rldicl %0,%1,(-(%2)!63)&((%2)|63),%2"},
9043{"srdi.", 3, PPC64, "rldicl. %0,%1,(-(%2)!63)&((%2)|63),%2"},
9044{"clrrdi", 3, PPC64, "rldicr %0,%1,0,63-(%2)"},
9045{"clrrdi.", 3, PPC64, "rldicr. %0,%1,0,63-(%2)"},
9046{"clrlsldi", 4, PPC64, "rldic %0,%1,%3,(%2)-(%3)"},
14b57c7c 9047{"clrlsldi.",4, PPC64, "rldic. %0,%1,%3,(%2)-(%3)"},
de866fcc
AM
9048
9049{"extlwi", 4, PPCCOM, "rlwinm %0,%1,%3,0,(%2)-1"},
9050{"extlwi.", 4, PPCCOM, "rlwinm. %0,%1,%3,0,(%2)-1"},
9051{"extrwi", 4, PPCCOM, "rlwinm %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"},
9052{"extrwi.", 4, PPCCOM, "rlwinm. %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"},
9053{"inslwi", 4, PPCCOM, "rlwimi %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"},
9054{"inslwi.", 4, PPCCOM, "rlwimi. %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"},
9055{"insrwi", 4, PPCCOM, "rlwimi %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"},
9056{"insrwi.", 4, PPCCOM, "rlwimi. %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"},
9057{"rotrwi", 3, PPCCOM, "rlwinm %0,%1,(-(%2)!31)&((%2)|31),0,31"},
9058{"rotrwi.", 3, PPCCOM, "rlwinm. %0,%1,(-(%2)!31)&((%2)|31),0,31"},
9059{"slwi", 3, PPCCOM, "rlwinm %0,%1,%2,0,31-(%2)"},
9060{"sli", 3, PWRCOM, "rlinm %0,%1,%2,0,31-(%2)"},
9061{"slwi.", 3, PPCCOM, "rlwinm. %0,%1,%2,0,31-(%2)"},
9062{"sli.", 3, PWRCOM, "rlinm. %0,%1,%2,0,31-(%2)"},
9063{"srwi", 3, PPCCOM, "rlwinm %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
9064{"sri", 3, PWRCOM, "rlinm %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
9065{"srwi.", 3, PPCCOM, "rlwinm. %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
9066{"sri.", 3, PWRCOM, "rlinm. %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
9067{"clrrwi", 3, PPCCOM, "rlwinm %0,%1,0,0,31-(%2)"},
9068{"clrrwi.", 3, PPCCOM, "rlwinm. %0,%1,0,0,31-(%2)"},
9069{"clrlslwi", 4, PPCCOM, "rlwinm %0,%1,%3,(%2)-(%3),31-(%3)"},
9070{"clrlslwi.",4, PPCCOM, "rlwinm. %0,%1,%3,(%2)-(%3),31-(%3)"},
a4ebc835
AM
9071
9072{"e_extlwi", 4, PPCVLE, "e_rlwinm %0,%1,%3,0,(%2)-1"},
9073{"e_extrwi", 4, PPCVLE, "e_rlwinm %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"},
9074{"e_inslwi", 4, PPCVLE, "e_rlwimi %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"},
9075{"e_insrwi", 4, PPCVLE, "e_rlwimi %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"},
9076{"e_rotlwi", 3, PPCVLE, "e_rlwinm %0,%1,%2,0,31"},
9077{"e_rotrwi", 3, PPCVLE, "e_rlwinm %0,%1,(-(%2)!31)&((%2)|31),0,31"},
9078{"e_slwi", 3, PPCVLE, "e_rlwinm %0,%1,%2,0,31-(%2)"},
9079{"e_srwi", 3, PPCVLE, "e_rlwinm %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
9080{"e_clrlwi", 3, PPCVLE, "e_rlwinm %0,%1,0,%2,31"},
9081{"e_clrrwi", 3, PPCVLE, "e_rlwinm %0,%1,0,0,31-(%2)"},
9082{"e_clrlslwi",4, PPCVLE, "e_rlwinm %0,%1,%3,(%2)-(%3),31-(%3)"},
74081948
AF
9083
9084/* old SPE instructions have new names with the same opcodes */
9085{"evsadd", 3, PPCSPE|PPCVLE, "efsadd %0,%1,%2"},
9086{"evssub", 3, PPCSPE|PPCVLE, "efssub %0,%1,%2"},
9087{"evsabs", 2, PPCSPE|PPCVLE, "efsabs %0,%1"},
9088{"evsnabs", 2, PPCSPE|PPCVLE, "efsnabs %0,%1"},
9089{"evsneg", 2, PPCSPE|PPCVLE, "efsneg %0,%1"},
9090{"evsmul", 3, PPCSPE|PPCVLE, "efsmul %0,%1,%2"},
9091{"evsdiv", 3, PPCSPE|PPCVLE, "efsdiv %0,%1,%2"},
9092{"evscmpgt", 3, PPCSPE|PPCVLE, "efscmpgt %0,%1,%2"},
9093{"evsgmplt", 3, PPCSPE|PPCVLE, "efscmplt %0,%1,%2"},
9094{"evsgmpeq", 3, PPCSPE|PPCVLE, "efscmpeq %0,%1,%2"},
9095{"evscfui", 2, PPCSPE|PPCVLE, "efscfui %0,%1"},
9096{"evscfsi", 2, PPCSPE|PPCVLE, "efscfsi %0,%1"},
9097{"evscfuf", 2, PPCSPE|PPCVLE, "efscfuf %0,%1"},
9098{"evscfsf", 2, PPCSPE|PPCVLE, "efscfsf %0,%1"},
9099{"evsctui", 2, PPCSPE|PPCVLE, "efsctui %0,%1"},
9100{"evsctsi", 2, PPCSPE|PPCVLE, "efsctsi %0,%1"},
9101{"evsctuf", 2, PPCSPE|PPCVLE, "efsctuf %0,%1"},
9102{"evsctsf", 2, PPCSPE|PPCVLE, "efsctsf %0,%1"},
9103{"evsctuiz", 2, PPCSPE|PPCVLE, "efsctuiz %0,%1"},
9104{"evsctsiz", 2, PPCSPE|PPCVLE, "efsctsiz %0,%1"},
9105{"evststgt", 3, PPCSPE|PPCVLE, "efststgt %0,%1,%2"},
9106{"evststlt", 3, PPCSPE|PPCVLE, "efststlt %0,%1,%2"},
9107{"evststeq", 3, PPCSPE|PPCVLE, "efststeq %0,%1,%2"},
9108
9109/* SPE2 instructions which just are mapped to SPE2 */
9110{"evdotphsssi", 3, PPCSPE2, "evdotphssmi %0,%1,%2"},
9111{"evdotphsssia", 3, PPCSPE2, "evdotphssmia %0,%1,%2"},
9112{"evdotpwsssi", 3, PPCSPE2, "evdotpwssmi %0,%1,%2"},
9113{"evdotpwsssia", 3, PPCSPE2, "evdotpwssmia %0,%1,%2"}
252b5132
RH
9114};
9115
9116const int powerpc_num_macros =
9117 sizeof (powerpc_macros) / sizeof (powerpc_macros[0]);
74081948
AF
9118
9119/* SPE v2 instruction set from SPE2PIM Rev. 2 08/2011 */
9120const struct powerpc_opcode spe2_opcodes[] = {
9121{"evdotpwcssi", VX (4, 128), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9122{"evdotpwcsmi", VX (4, 129), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9123{"evdotpwcssfr", VX (4, 130), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9124{"evdotpwcssf", VX (4, 131), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9125{"evdotpwgasmf", VX (4, 136), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9126{"evdotpwxgasmf", VX (4, 137), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9127{"evdotpwgasmfr", VX (4, 138), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9128{"evdotpwxgasmfr", VX (4, 139), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9129{"evdotpwgssmf", VX (4, 140), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9130{"evdotpwxgssmf", VX (4, 141), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9131{"evdotpwgssmfr", VX (4, 142), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9132{"evdotpwxgssmfr", VX (4, 143), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9133{"evdotpwcssiaaw3", VX (4, 144), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9134{"evdotpwcsmiaaw3", VX (4, 145), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9135{"evdotpwcssfraaw3", VX (4, 146), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9136{"evdotpwcssfaaw3", VX (4, 147), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9137{"evdotpwgasmfaa3", VX (4, 152), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9138{"evdotpwxgasmfaa3", VX (4, 153), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9139{"evdotpwgasmfraa3", VX (4, 154), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9140{"evdotpwxgasmfraa3", VX (4, 155), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9141{"evdotpwgssmfaa3", VX (4, 156), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9142{"evdotpwxgssmfaa3", VX (4, 157), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9143{"evdotpwgssmfraa3", VX (4, 158), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9144{"evdotpwxgssmfraa3", VX (4, 159), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9145{"evdotpwcssia", VX (4, 160), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9146{"evdotpwcsmia", VX (4, 161), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9147{"evdotpwcssfra", VX (4, 162), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9148{"evdotpwcssfa", VX (4, 163), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9149{"evdotpwgasmfa", VX (4, 168), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9150{"evdotpwxgasmfa", VX (4, 169), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9151{"evdotpwgasmfra", VX (4, 170), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9152{"evdotpwxgasmfra", VX (4, 171), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9153{"evdotpwgssmfa", VX (4, 172), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9154{"evdotpwxgssmfa", VX (4, 173), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9155{"evdotpwgssmfra", VX (4, 174), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9156{"evdotpwxgssmfra", VX (4, 175), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9157{"evdotpwcssiaaw", VX (4, 176), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9158{"evdotpwcsmiaaw", VX (4, 177), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9159{"evdotpwcssfraaw", VX (4, 178), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9160{"evdotpwcssfaaw", VX (4, 179), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9161{"evdotpwgasmfaa", VX (4, 184), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9162{"evdotpwxgasmfaa", VX (4, 185), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9163{"evdotpwgasmfraa", VX (4, 186), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9164{"evdotpwxgasmfraa", VX (4, 187), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9165{"evdotpwgssmfaa", VX (4, 188), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9166{"evdotpwxgssmfaa", VX (4, 189), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9167{"evdotpwgssmfraa", VX (4, 190), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9168{"evdotpwxgssmfraa", VX (4, 191), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9169{"evdotphihcssi", VX (4, 256), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9170{"evdotplohcssi", VX (4, 257), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9171{"evdotphihcssf", VX (4, 258), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9172{"evdotplohcssf", VX (4, 259), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9173{"evdotphihcsmi", VX (4, 264), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9174{"evdotplohcsmi", VX (4, 265), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9175{"evdotphihcssfr", VX (4, 266), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9176{"evdotplohcssfr", VX (4, 267), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9177{"evdotphihcssiaaw3", VX (4, 272), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9178{"evdotplohcssiaaw3", VX (4, 273), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9179{"evdotphihcssfaaw3", VX (4, 274), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9180{"evdotplohcssfaaw3", VX (4, 275), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9181{"evdotphihcsmiaaw3", VX (4, 280), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9182{"evdotplohcsmiaaw3", VX (4, 281), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9183{"evdotphihcssfraaw3", VX (4, 282), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9184{"evdotplohcssfraaw3", VX (4, 283), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9185{"evdotphihcssia", VX (4, 288), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9186{"evdotplohcssia", VX (4, 289), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9187{"evdotphihcssfa", VX (4, 290), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9188{"evdotplohcssfa", VX (4, 291), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9189{"evdotphihcsmia", VX (4, 296), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9190{"evdotplohcsmia", VX (4, 297), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9191{"evdotphihcssfra", VX (4, 298), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9192{"evdotplohcssfra", VX (4, 299), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9193{"evdotphihcssiaaw", VX (4, 304), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9194{"evdotplohcssiaaw", VX (4, 305), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9195{"evdotphihcssfaaw", VX (4, 306), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9196{"evdotplohcssfaaw", VX (4, 307), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9197{"evdotphihcsmiaaw", VX (4, 312), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9198{"evdotplohcsmiaaw", VX (4, 313), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9199{"evdotphihcssfraaw", VX (4, 314), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9200{"evdotplohcssfraaw", VX (4, 315), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9201{"evdotphausi", VX (4, 320), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9202{"evdotphassi", VX (4, 321), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9203{"evdotphasusi", VX (4, 322), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9204{"evdotphassf", VX (4, 323), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9205{"evdotphsssf", VX (4, 327), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9206{"evdotphaumi", VX (4, 328), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9207{"evdotphasmi", VX (4, 329), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9208{"evdotphasumi", VX (4, 330), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9209{"evdotphassfr", VX (4, 331), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9210{"evdotphssmi", VX (4, 333), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9211{"evdotphsssfr", VX (4, 335), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9212{"evdotphausiaaw3", VX (4, 336), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9213{"evdotphassiaaw3", VX (4, 337), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9214{"evdotphasusiaaw3", VX (4, 338), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9215{"evdotphassfaaw3", VX (4, 339), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9216{"evdotphsssiaaw3", VX (4, 341), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9217{"evdotphsssfaaw3", VX (4, 343), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9218{"evdotphaumiaaw3", VX (4, 344), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9219{"evdotphasmiaaw3", VX (4, 345), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9220{"evdotphasumiaaw3", VX (4, 346), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9221{"evdotphassfraaw3", VX (4, 347), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9222{"evdotphssmiaaw3", VX (4, 349), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9223{"evdotphsssfraaw3", VX (4, 351), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9224{"evdotphausia", VX (4, 352), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9225{"evdotphassia", VX (4, 353), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9226{"evdotphasusia", VX (4, 354), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9227{"evdotphassfa", VX (4, 355), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9228{"evdotphsssfa", VX (4, 359), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9229{"evdotphaumia", VX (4, 360), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9230{"evdotphasmia", VX (4, 361), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9231{"evdotphasumia", VX (4, 362), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9232{"evdotphassfra", VX (4, 363), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9233{"evdotphssmia", VX (4, 365), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9234{"evdotphsssfra", VX (4, 367), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9235{"evdotphausiaaw", VX (4, 368), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9236{"evdotphassiaaw", VX (4, 369), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9237{"evdotphasusiaaw", VX (4, 370), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9238{"evdotphassfaaw", VX (4, 371), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9239{"evdotphsssiaaw", VX (4, 373), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9240{"evdotphsssfaaw", VX (4, 375), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9241{"evdotphaumiaaw", VX (4, 376), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9242{"evdotphasmiaaw", VX (4, 377), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9243{"evdotphasumiaaw", VX (4, 378), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9244{"evdotphassfraaw", VX (4, 379), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9245{"evdotphssmiaaw", VX (4, 381), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9246{"evdotphsssfraaw", VX (4, 383), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9247{"evdotp4hgaumi", VX (4, 384), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9248{"evdotp4hgasmi", VX (4, 385), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9249{"evdotp4hgasumi", VX (4, 386), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9250{"evdotp4hgasmf", VX (4, 387), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9251{"evdotp4hgssmi", VX (4, 388), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9252{"evdotp4hgssmf", VX (4, 389), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9253{"evdotp4hxgasmi", VX (4, 390), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9254{"evdotp4hxgasmf", VX (4, 391), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9255{"evdotpbaumi", VX (4, 392), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9256{"evdotpbasmi", VX (4, 393), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9257{"evdotpbasumi", VX (4, 394), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9258{"evdotp4hxgssmi", VX (4, 398), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9259{"evdotp4hxgssmf", VX (4, 399), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9260{"evdotp4hgaumiaa3", VX (4, 400), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9261{"evdotp4hgasmiaa3", VX (4, 401), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9262{"evdotp4hgasumiaa3", VX (4, 402), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9263{"evdotp4hgasmfaa3", VX (4, 403), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9264{"evdotp4hgssmiaa3", VX (4, 404), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9265{"evdotp4hgssmfaa3", VX (4, 405), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9266{"evdotp4hxgasmiaa3", VX (4, 406), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9267{"evdotp4hxgasmfaa3", VX (4, 407), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9268{"evdotpbaumiaaw3", VX (4, 408), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9269{"evdotpbasmiaaw3", VX (4, 409), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9270{"evdotpbasumiaaw3", VX (4, 410), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9271{"evdotp4hxgssmiaa3", VX (4, 414), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9272{"evdotp4hxgssmfaa3", VX (4, 415), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9273{"evdotp4hgaumia", VX (4, 416), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9274{"evdotp4hgasmia", VX (4, 417), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9275{"evdotp4hgasumia", VX (4, 418), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9276{"evdotp4hgasmfa", VX (4, 419), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9277{"evdotp4hgssmia", VX (4, 420), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9278{"evdotp4hgssmfa", VX (4, 421), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9279{"evdotp4hxgasmia", VX (4, 422), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9280{"evdotp4hxgasmfa", VX (4, 423), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9281{"evdotpbaumia", VX (4, 424), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9282{"evdotpbasmia", VX (4, 425), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9283{"evdotpbasumia", VX (4, 426), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9284{"evdotp4hxgssmia", VX (4, 430), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9285{"evdotp4hxgssmfa", VX (4, 431), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9286{"evdotp4hgaumiaa", VX (4, 432), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9287{"evdotp4hgasmiaa", VX (4, 433), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9288{"evdotp4hgasumiaa", VX (4, 434), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9289{"evdotp4hgasmfaa", VX (4, 435), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9290{"evdotp4hgssmiaa", VX (4, 436), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9291{"evdotp4hgssmfaa", VX (4, 437), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9292{"evdotp4hxgasmiaa", VX (4, 438), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9293{"evdotp4hxgasmfaa", VX (4, 439), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9294{"evdotpbaumiaaw", VX (4, 440), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9295{"evdotpbasmiaaw", VX (4, 441), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9296{"evdotpbasumiaaw", VX (4, 442), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9297{"evdotp4hxgssmiaa", VX (4, 446), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9298{"evdotp4hxgssmfaa", VX (4, 447), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9299{"evdotpwausi", VX (4, 448), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9300{"evdotpwassi", VX (4, 449), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9301{"evdotpwasusi", VX (4, 450), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9302{"evdotpwaumi", VX (4, 456), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9303{"evdotpwasmi", VX (4, 457), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9304{"evdotpwasumi", VX (4, 458), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9305{"evdotpwssmi", VX (4, 461), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9306{"evdotpwausiaa3", VX (4, 464), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9307{"evdotpwassiaa3", VX (4, 465), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9308{"evdotpwasusiaa3", VX (4, 466), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9309{"evdotpwsssiaa3", VX (4, 469), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9310{"evdotpwaumiaa3", VX (4, 472), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9311{"evdotpwasmiaa3", VX (4, 473), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9312{"evdotpwasumiaa3", VX (4, 474), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9313{"evdotpwssmiaa3", VX (4, 477), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9314{"evdotpwausia", VX (4, 480), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9315{"evdotpwassia", VX (4, 481), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9316{"evdotpwasusia", VX (4, 482), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9317{"evdotpwaumia", VX (4, 488), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9318{"evdotpwasmia", VX (4, 489), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9319{"evdotpwasumia", VX (4, 490), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9320{"evdotpwssmia", VX (4, 493), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9321{"evdotpwausiaa", VX (4, 496), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9322{"evdotpwassiaa", VX (4, 497), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9323{"evdotpwasusiaa", VX (4, 498), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9324{"evdotpwsssiaa", VX (4, 501), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9325{"evdotpwaumiaa", VX (4, 504), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9326{"evdotpwasmiaa", VX (4, 505), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9327{"evdotpwasumiaa", VX (4, 506), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9328{"evdotpwssmiaa", VX (4, 509), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9329{"evaddib", VX (4, 515), VX_MASK, PPCSPE2, 0, {RD, RB, UIMM}},
9330{"evaddih", VX (4, 513), VX_MASK, PPCSPE2, 0, {RD, RB, UIMM}},
9331{"evsubifh", VX (4, 517), VX_MASK, PPCSPE2, 0, {RD, UIMM, RB}},
9332{"evsubifb", VX (4, 519), VX_MASK, PPCSPE2, 0, {RD, UIMM, RB}},
9333{"evabsb", VX_RB_CONST(4, 520, 2), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9334{"evabsh", VX_RB_CONST(4, 520, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9335{"evabsd", VX_RB_CONST(4, 520, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9336{"evabss", VX_RB_CONST(4, 520, 8), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9337{"evabsbs", VX_RB_CONST(4, 520, 10), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9338{"evabshs", VX_RB_CONST(4, 520, 12), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9339{"evabsds", VX_RB_CONST(4, 520, 14), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9340{"evnegwo", VX_RB_CONST(4, 521, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9341{"evnegb", VX_RB_CONST(4, 521, 2), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9342{"evnegbo", VX_RB_CONST(4, 521, 3), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9343{"evnegh", VX_RB_CONST(4, 521, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9344{"evnegho", VX_RB_CONST(4, 521, 5), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9345{"evnegd", VX_RB_CONST(4, 521, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9346{"evnegs", VX_RB_CONST(4, 521, 8), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9347{"evnegwos", VX_RB_CONST(4, 521, 9), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9348{"evnegbs", VX_RB_CONST(4, 521, 10), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9349{"evnegbos", VX_RB_CONST(4, 521, 11), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9350{"evneghs", VX_RB_CONST(4, 521, 12), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9351{"evneghos", VX_RB_CONST(4, 521, 13), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9352{"evnegds", VX_RB_CONST(4, 521, 14), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9353{"evextzb", VX_RB_CONST(4, 522, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9354{"evextsbh", VX_RB_CONST(4, 522, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9355{"evextsw", VX_RB_CONST(4, 523, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9356{"evrndwh", VX_RB_CONST(4, 524, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9357{"evrndhb", VX_RB_CONST(4, 524, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9358{"evrnddw", VX_RB_CONST(4, 524, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9359{"evrndwhus", VX_RB_CONST(4, 524, 8), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9360{"evrndwhss", VX_RB_CONST(4, 524, 9), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9361{"evrndhbus", VX_RB_CONST(4, 524, 12), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9362{"evrndhbss", VX_RB_CONST(4, 524, 13), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9363{"evrnddwus", VX_RB_CONST(4, 524, 14), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9364{"evrnddwss", VX_RB_CONST(4, 524, 15), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9365{"evrndwnh", VX_RB_CONST(4, 524, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9366{"evrndhnb", VX_RB_CONST(4, 524, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9367{"evrnddnw", VX_RB_CONST(4, 524, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9368{"evrndwnhus", VX_RB_CONST(4, 524, 24), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9369{"evrndwnhss", VX_RB_CONST(4, 524, 25), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9370{"evrndhnbus", VX_RB_CONST(4, 524, 28), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9371{"evrndhnbss", VX_RB_CONST(4, 524, 29), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9372{"evrnddnwus", VX_RB_CONST(4, 524, 30), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9373{"evrnddnwss", VX_RB_CONST(4, 524, 31), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9374{"evcntlzh", VX_RB_CONST(4, 525, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9375{"evcntlsh", VX_RB_CONST(4, 526, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9376{"evpopcntb", VX_RB_CONST(4, 526, 26), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9377{"circinc", VX (4, 528), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9378{"evunpkhibui", VX_RB_CONST(4, 540, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9379{"evunpkhibsi", VX_RB_CONST(4, 540, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9380{"evunpkhihui", VX_RB_CONST(4, 540, 2), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9381{"evunpkhihsi", VX_RB_CONST(4, 540, 3), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9382{"evunpklobui", VX_RB_CONST(4, 540, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9383{"evunpklobsi", VX_RB_CONST(4, 540, 5), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9384{"evunpklohui", VX_RB_CONST(4, 540, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9385{"evunpklohsi", VX_RB_CONST(4, 540, 7), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9386{"evunpklohf", VX_RB_CONST(4, 540, 8), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9387{"evunpkhihf", VX_RB_CONST(4, 540, 9), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9388{"evunpklowgsf", VX_RB_CONST(4, 540, 12), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9389{"evunpkhiwgsf", VX_RB_CONST(4, 540, 13), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9390{"evsatsduw", VX_RB_CONST(4, 540, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9391{"evsatsdsw", VX_RB_CONST(4, 540, 17), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9392{"evsatshub", VX_RB_CONST(4, 540, 18), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9393{"evsatshsb", VX_RB_CONST(4, 540, 19), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9394{"evsatuwuh", VX_RB_CONST(4, 540, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9395{"evsatswsh", VX_RB_CONST(4, 540, 21), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9396{"evsatswuh", VX_RB_CONST(4, 540, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9397{"evsatuhub", VX_RB_CONST(4, 540, 23), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9398{"evsatuduw", VX_RB_CONST(4, 540, 24), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9399{"evsatuwsw", VX_RB_CONST(4, 540, 25), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9400{"evsatshuh", VX_RB_CONST(4, 540, 26), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9401{"evsatuhsh", VX_RB_CONST(4, 540, 27), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9402{"evsatswuw", VX_RB_CONST(4, 540, 28), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9403{"evsatswgsdf", VX_RB_CONST(4, 540, 29), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9404{"evsatsbub", VX_RB_CONST(4, 540, 30), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9405{"evsatubsb", VX_RB_CONST(4, 540, 31), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9406{"evmaxhpuw", VX_RB_CONST(4, 541, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9407{"evmaxhpsw", VX_RB_CONST(4, 541, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9408{"evmaxbpuh", VX_RB_CONST(4, 541, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9409{"evmaxbpsh", VX_RB_CONST(4, 541, 5), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9410{"evmaxwpud", VX_RB_CONST(4, 541, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9411{"evmaxwpsd", VX_RB_CONST(4, 541, 7), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9412{"evminhpuw", VX_RB_CONST(4, 541, 8), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9413{"evminhpsw", VX_RB_CONST(4, 541, 9), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9414{"evminbpuh", VX_RB_CONST(4, 541, 12), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9415{"evminbpsh", VX_RB_CONST(4, 541, 13), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9416{"evminwpud", VX_RB_CONST(4, 541, 14), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9417{"evminwpsd", VX_RB_CONST(4, 541, 15), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9418{"evmaxmagws", VX (4, 543), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9419{"evsl", VX (4, 549), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9420{"evsli", VX (4, 551), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM}},
9421{"evsplatie", VX_RB_CONST (4, 553, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
9422{"evsplatib", VX_RB_CONST (4, 553, 2), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
9423{"evsplatibe", VX_RB_CONST (4, 553, 3), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
9424{"evsplatih", VX_RB_CONST (4, 553, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
9425{"evsplatihe", VX_RB_CONST (4, 553, 5), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
9426{"evsplatid", VX_RB_CONST (4, 553, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
9427{"evsplatia", VX_RB_CONST (4, 553, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
9428{"evsplatiea", VX_RB_CONST (4, 553, 17), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
9429{"evsplatiba", VX_RB_CONST (4, 553, 18), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
9430{"evsplatibea", VX_RB_CONST (4, 553, 19), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
9431{"evsplatiha", VX_RB_CONST (4, 553, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
9432{"evsplatihea", VX_RB_CONST (4, 553, 21), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
9433{"evsplatida", VX_RB_CONST (4, 553, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
9434{"evsplatfio", VX_RB_CONST (4, 555, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
9435{"evsplatfib", VX_RB_CONST (4, 555, 2), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
9436{"evsplatfibo", VX_RB_CONST (4, 555, 3), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
9437{"evsplatfih", VX_RB_CONST (4, 555, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
9438{"evsplatfiho", VX_RB_CONST (4, 555, 5), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
9439{"evsplatfid", VX_RB_CONST (4, 555, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
9440{"evsplatfia", VX_RB_CONST (4, 555, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
9441{"evsplatfioa", VX_RB_CONST (4, 555, 17), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
9442{"evsplatfiba", VX_RB_CONST (4, 555, 18), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
9443{"evsplatfiboa", VX_RB_CONST (4, 555, 19), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
9444{"evsplatfiha", VX_RB_CONST (4, 555, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
9445{"evsplatfihoa", VX_RB_CONST (4, 555, 21), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
9446{"evsplatfida", VX_RB_CONST (4, 555, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
9447{"evcmpgtdu", VX_SPE_CRFD (4, 560, 1), VX_SPE_CRFD_MASK, PPCSPE2, 0, {CRFD, RA, RB}},
9448{"evcmpgtds", VX_SPE_CRFD (4, 561, 1), VX_SPE_CRFD_MASK, PPCSPE2, 0, {CRFD, RA, RB}},
9449{"evcmpltdu", VX_SPE_CRFD (4, 562, 1), VX_SPE_CRFD_MASK, PPCSPE2, 0, {CRFD, RA, RB}},
9450{"evcmpltds", VX_SPE_CRFD (4, 563, 1), VX_SPE_CRFD_MASK, PPCSPE2, 0, {CRFD, RA, RB}},
9451{"evcmpeqd", VX_SPE_CRFD (4, 564, 1), VX_SPE_CRFD_MASK, PPCSPE2, 0, {CRFD, RA, RB}},
9452{"evswapbhilo", VX (4, 568), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9453{"evswapblohi", VX (4, 569), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9454{"evswaphhilo", VX (4, 570), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9455{"evswaphlohi", VX (4, 571), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9456{"evswaphe", VX (4, 572), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9457{"evswaphhi", VX (4, 573), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9458{"evswaphlo", VX (4, 574), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9459{"evswapho", VX (4, 575), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9460{"evinsb", VX (4, 584), VX_MASK_DDD, PPCSPE2, 0, {RD, RA, DDD, BBB}},
9461{"evxtrb", VX (4, 586), VX_MASK_DDD, PPCSPE2, 0, {RD, RA, DDD, BBB}},
9462{"evsplath", VX_SPE2_HH (4, 588, 0, 0), VX_SPE2_HH_MASK, PPCSPE2, 0, {RD, RA, HH}},
9463{"evsplatb", VX_SPE2_SPLATB (4, 588, 2), VX_SPE2_SPLATB_MASK, PPCSPE2, 0, {RD, RA, BBB}},
9464{"evinsh", VX_SPE2_DDHH (4, 589, 0), VX_SPE2_DDHH_MASK, PPCSPE2, 0, {RD, RA, DD, HH}},
9465{"evclrbe", VX_SPE2_CLR (4, 590, 0), VX_SPE2_CLR_MASK, PPCSPE2, 0, {RD, RA, MMMM}},
9466{"evclrbo", VX_SPE2_CLR (4, 590, 1), VX_SPE2_CLR_MASK, PPCSPE2, 0, {RD, RA, MMMM}},
9467{"evclrh", VX_SPE2_CLR (4, 591, 1), VX_SPE2_CLR_MASK, PPCSPE2, 0, {RD, RA, MMMM}},
9468{"evxtrh", VX_SPE2_DDHH (4, 591, 0), VX_SPE2_DDHH_MASK, PPCSPE2, 0, {RD, RA, DD, HH}},
9469{"evselbitm0", VX (4, 592), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9470{"evselbitm1", VX (4, 593), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9471{"evselbit", VX (4, 594), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9472{"evperm", VX (4, 596), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9473{"evperm2", VX (4, 597), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9474{"evperm3", VX (4, 598), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9475{"evxtrd", VX (4, 600), VX_OFF_SPE2_MASK, PPCSPE2, 0, {RD, RA, RB, VX_OFF_SPE2}},
9476{"evsrbu", VX (4, 608), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9477{"evsrbs", VX (4, 609), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9478{"evsrbiu", VX (4, 610), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
9479{"evsrbis", VX (4, 611), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
9480{"evslb", VX (4, 612), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9481{"evrlb", VX (4, 613), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9482{"evslbi", VX (4, 614), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
9483{"evrlbi", VX (4, 615), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
9484{"evsrhu", VX (4, 616), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9485{"evsrhs", VX (4, 617), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9486{"evsrhiu", VX (4, 618), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
9487{"evsrhis", VX (4, 619), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
9488{"evslh", VX (4, 620), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9489{"evrlh", VX (4, 621), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9490{"evslhi", VX (4, 622), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
9491{"evrlhi", VX (4, 623), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
9492{"evsru", VX (4, 624), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9493{"evsrs", VX (4, 625), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9494{"evsriu", VX (4, 626), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM}},
9495{"evsris", VX (4, 627), VX_MASK, PPCSPE2, 0, {RD, RA, EVUIMM}},
9496{"evlvsl", VX (4, 628), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9497{"evlvsr", VX (4, 629), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9498{"evsroiu", VX_SPE2_OCTET (4, 631, 0), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
9499{"evsrois", VX_SPE2_OCTET (4, 631, 1), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
9500{"evsloi", VX_SPE2_OCTET (4, 631, 2), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
9501{"evldbx", VX (4, 774), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9502{"evldb", VX (4, 775), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_8, RA}},
9503{"evlhhsplathx", VX (4, 778), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9504{"evlhhsplath", VX (4, 779), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_2, RA}},
9505{"evlwbsplatwx", VX (4, 786), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9506{"evlwbsplatw", VX (4, 787), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4, RA}},
9507{"evlwhsplatwx", VX (4, 794), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9508{"evlwhsplatw", VX (4, 795), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4, RA}},
9509{"evlbbsplatbx", VX (4, 798), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9510{"evlbbsplatb", VX (4, 799), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_1, RA}},
9511{"evstdbx", VX (4, 806), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
9512{"evstdb", VX (4, 807), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_8, RA}},
9513{"evlwbex", VX (4, 810), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9514{"evlwbe", VX (4, 811), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4, RA}},
9515{"evlwboux", VX (4, 812), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9516{"evlwbou", VX (4, 813), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4, RA}},
9517{"evlwbosx", VX (4, 814), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9518{"evlwbos", VX (4, 815), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4, RA}},
9519{"evstwbex", VX (4, 818), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
9520{"evstwbe", VX (4, 819), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4, RA}},
9521{"evstwbox", VX (4, 822), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
9522{"evstwbo", VX (4, 823), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4, RA}},
9523{"evstwbx", VX (4, 826), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
9524{"evstwb", VX (4, 827), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4, RA}},
9525{"evsthbx", VX (4, 830), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
9526{"evsthb", VX (4, 831), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_2, RA}},
9527{"evlddmx", VX (4, 832), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9528{"evlddu", VX (4, 833), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
9529{"evldwmx", VX (4, 834), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9530{"evldwu", VX (4, 835), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
9531{"evldhmx", VX (4, 836), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9532{"evldhu", VX (4, 837), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
9533{"evldbmx", VX (4, 838), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9534{"evldbu", VX (4, 839), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
9535{"evlhhesplatmx", VX (4, 840), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9536{"evlhhesplatu", VX (4, 841), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
9537{"evlhhsplathmx", VX (4, 842), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9538{"evlhhsplathu", VX (4, 843), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
9539{"evlhhousplatmx", VX (4, 844), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9540{"evlhhousplatu", VX (4, 845), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
9541{"evlhhossplatmx", VX (4, 846), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9542{"evlhhossplatu", VX (4, 847), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
9543{"evlwhemx", VX (4, 848), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9544{"evlwheu", VX (4, 849), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
9545{"evlwbsplatwmx", VX (4, 850), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9546{"evlwbsplatwu", VX (4, 851), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
9547{"evlwhoumx", VX (4, 852), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9548{"evlwhouu", VX (4, 853), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
9549{"evlwhosmx", VX (4, 854), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9550{"evlwhosu", VX (4, 855), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
9551{"evlwwsplatmx", VX (4, 856), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9552{"evlwwsplatu", VX (4, 857), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
9553{"evlwhsplatwmx", VX (4, 858), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9554{"evlwhsplatwu", VX (4, 859), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
9555{"evlwhsplatmx", VX (4, 860), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9556{"evlwhsplatu", VX (4, 861), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
9557{"evlbbsplatbmx", VX (4, 862), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9558{"evlbbsplatbu", VX (4, 863), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_1_EX0, RA}},
9559{"evstddmx", VX (4, 864), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
9560{"evstddu", VX (4, 865), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
9561{"evstdwmx", VX (4, 866), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
9562{"evstdwu", VX (4, 867), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
9563{"evstdhmx", VX (4, 868), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
9564{"evstdhu", VX (4, 869), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
9565{"evstdbmx", VX (4, 870), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
9566{"evstdbu", VX (4, 871), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
9567{"evlwbemx", VX (4, 874), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9568{"evlwbeu", VX (4, 875), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
9569{"evlwboumx", VX (4, 876), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9570{"evlwbouu", VX (4, 877), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
9571{"evlwbosmx", VX (4, 878), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9572{"evlwbosu", VX (4, 879), VX_MASK, PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
9573{"evstwhemx", VX (4, 880), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
9574{"evstwheu", VX (4, 881), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
9575{"evstwbemx", VX (4, 882), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
9576{"evstwbeu", VX (4, 883), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
9577{"evstwhomx", VX (4, 884), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
9578{"evstwhou", VX (4, 885), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
9579{"evstwbomx", VX (4, 886), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
9580{"evstwbou", VX (4, 887), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
9581{"evstwwemx", VX (4, 888), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
9582{"evstwweu", VX (4, 889), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
9583{"evstwbmx", VX (4, 890), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
9584{"evstwbu", VX (4, 891), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
9585{"evstwwomx", VX (4, 892), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
9586{"evstwwou", VX (4, 893), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
9587{"evsthbmx", VX (4, 894), VX_MASK, PPCSPE2, 0, {RS, RA, RB}},
9588{"evsthbu", VX (4, 895), VX_MASK, PPCSPE2, 0, {RS, EVUIMM_2_EX0, RA}},
9589{"evmhusi", VX (4, 1024), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9590{"evmhssi", VX (4, 1025), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9591{"evmhsusi", VX (4, 1026), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9592{"evmhssf", VX (4, 1028), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9593{"evmhumi", VX (4, 1029), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9594{"evmhssfr", VX (4, 1030), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9595{"evmhesumi", VX (4, 1034), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9596{"evmhosumi", VX (4, 1038), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9597{"evmbeumi", VX (4, 1048), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9598{"evmbesmi", VX (4, 1049), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9599{"evmbesumi", VX (4, 1050), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9600{"evmboumi", VX (4, 1052), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9601{"evmbosmi", VX (4, 1053), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9602{"evmbosumi", VX (4, 1054), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9603{"evmhesumia", VX (4, 1066), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9604{"evmhosumia", VX (4, 1070), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9605{"evmbeumia", VX (4, 1080), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9606{"evmbesmia", VX (4, 1081), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9607{"evmbesumia", VX (4, 1082), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9608{"evmboumia", VX (4, 1084), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9609{"evmbosmia", VX (4, 1085), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9610{"evmbosumia", VX (4, 1086), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9611{"evmwusiw", VX (4, 1088), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9612{"evmwssiw", VX (4, 1089), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9613{"evmwhssfr", VX (4, 1094), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9614{"evmwehgsmfr", VX (4, 1110), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9615{"evmwehgsmf", VX (4, 1111), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9616{"evmwohgsmfr", VX (4, 1118), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9617{"evmwohgsmf", VX (4, 1119), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9618{"evmwhssfra", VX (4, 1126), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9619{"evmwehgsmfra", VX (4, 1142), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9620{"evmwehgsmfa", VX (4, 1143), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9621{"evmwohgsmfra", VX (4, 1150), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9622{"evmwohgsmfa", VX (4, 1151), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9623{"evaddusiaa", VX_RB_CONST(4, 1152, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9624{"evaddssiaa", VX_RB_CONST(4, 1153, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9625{"evsubfusiaa", VX_RB_CONST(4, 1154, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9626{"evsubfssiaa", VX_RB_CONST(4, 1155, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9627{"evaddsmiaa", VX_RB_CONST(4, 1156, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9628{"evsubfsmiaa", VX_RB_CONST(4, 1158, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9629{"evaddh", VX (4, 1160), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9630{"evaddhss", VX (4, 1161), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9631{"evsubfh", VX (4, 1162), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9632{"evsubfhss", VX (4, 1163), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9633{"evaddhx", VX (4, 1164), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9634{"evaddhxss", VX (4, 1165), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9635{"evsubfhx", VX (4, 1166), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9636{"evsubfhxss", VX (4, 1167), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9637{"evaddd", VX (4, 1168), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9638{"evadddss", VX (4, 1169), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9639{"evsubfd", VX (4, 1170), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9640{"evsubfdss", VX (4, 1171), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9641{"evaddb", VX (4, 1172), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9642{"evaddbss", VX (4, 1173), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9643{"evsubfb", VX (4, 1174), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9644{"evsubfbss", VX (4, 1175), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9645{"evaddsubfh", VX (4, 1176), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9646{"evaddsubfhss", VX (4, 1177), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9647{"evsubfaddh", VX (4, 1178), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9648{"evsubfaddhss", VX (4, 1179), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9649{"evaddsubfhx", VX (4, 1180), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9650{"evaddsubfhxss", VX (4, 1181), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9651{"evsubfaddhx", VX (4, 1182), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9652{"evsubfaddhxss", VX (4, 1183), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9653{"evadddus", VX (4, 1184), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9654{"evaddbus", VX (4, 1185), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9655{"evsubfdus", VX (4, 1186), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9656{"evsubfbus", VX (4, 1187), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9657{"evaddwus", VX (4, 1188), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9658{"evaddwxus", VX (4, 1189), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9659{"evsubfwus", VX (4, 1190), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9660{"evsubfwxus", VX (4, 1191), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9661{"evadd2subf2h", VX (4, 1192), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9662{"evadd2subf2hss", VX (4, 1193), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9663{"evsubf2add2h", VX (4, 1194), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9664{"evsubf2add2hss", VX (4, 1195), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9665{"evaddhus", VX (4, 1196), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9666{"evaddhxus", VX (4, 1197), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9667{"evsubfhus", VX (4, 1198), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9668{"evsubfhxus", VX (4, 1199), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9669{"evaddwss", VX (4, 1201), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9670{"evsubfwss", VX (4, 1203), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9671{"evaddwx", VX (4, 1204), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9672{"evaddwxss", VX (4, 1205), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9673{"evsubfwx", VX (4, 1206), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9674{"evsubfwxss", VX (4, 1207), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9675{"evaddsubfw", VX (4, 1208), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9676{"evaddsubfwss", VX (4, 1209), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9677{"evsubfaddw", VX (4, 1210), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9678{"evsubfaddwss", VX (4, 1211), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9679{"evaddsubfwx", VX (4, 1212), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9680{"evaddsubfwxss", VX (4, 1213), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9681{"evsubfaddwx", VX (4, 1214), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9682{"evsubfaddwxss", VX (4, 1215), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9683{"evmar", VX_SPE2_EVMAR (4, 1220), VX_SPE2_EVMAR_MASK, PPCSPE2, 0, {RD}},
9684{"evsumwu", VX_RB_CONST(4, 1221, 0), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9685{"evsumws", VX_RB_CONST(4, 1221, 1), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9686{"evsum4bu", VX_RB_CONST(4, 1221, 2), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9687{"evsum4bs", VX_RB_CONST(4, 1221, 3), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9688{"evsum2hu", VX_RB_CONST(4, 1221, 4), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9689{"evsum2hs", VX_RB_CONST(4, 1221, 5), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9690{"evdiff2his", VX_RB_CONST(4, 1221, 6), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9691{"evsum2his", VX_RB_CONST(4, 1221, 7), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9692{"evsumwua", VX_RB_CONST(4, 1221, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9693{"evsumwsa", VX_RB_CONST(4, 1221, 17), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9694{"evsum4bua", VX_RB_CONST(4, 1221, 18), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9695{"evsum4bsa", VX_RB_CONST(4, 1221, 19), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9696{"evsum2hua", VX_RB_CONST(4, 1221, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9697{"evsum2hsa", VX_RB_CONST(4, 1221, 21), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9698{"evdiff2hisa", VX_RB_CONST(4, 1221, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9699{"evsum2hisa", VX_RB_CONST(4, 1221, 23), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9700{"evsumwuaa", VX_RB_CONST(4, 1221, 24), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9701{"evsumwsaa", VX_RB_CONST(4, 1221, 25), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9702{"evsum4buaaw", VX_RB_CONST(4, 1221, 26), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9703{"evsum4bsaaw", VX_RB_CONST(4, 1221, 27), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9704{"evsum2huaaw", VX_RB_CONST(4, 1221, 28), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9705{"evsum2hsaaw", VX_RB_CONST(4, 1221, 29), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9706{"evdiff2hisaaw", VX_RB_CONST(4, 1221, 30), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9707{"evsum2hisaaw", VX_RB_CONST(4, 1221, 31), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
9708{"evdivwsf", VX (4, 1228), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9709{"evdivwuf", VX (4, 1229), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9710{"evdivs", VX (4, 1230), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9711{"evdivu", VX (4, 1231), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9712{"evaddwegsi", VX (4, 1232), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9713{"evaddwegsf", VX (4, 1233), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9714{"evsubfwegsi", VX (4, 1234), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9715{"evsubfwegsf", VX (4, 1235), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9716{"evaddwogsi", VX (4, 1236), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9717{"evaddwogsf", VX (4, 1237), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9718{"evsubfwogsi", VX (4, 1238), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9719{"evsubfwogsf", VX (4, 1239), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9720{"evaddhhiuw", VX (4, 1240), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9721{"evaddhhisw", VX (4, 1241), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9722{"evsubfhhiuw", VX (4, 1242), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9723{"evsubfhhisw", VX (4, 1243), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9724{"evaddhlouw", VX (4, 1244), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9725{"evaddhlosw", VX (4, 1245), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9726{"evsubfhlouw", VX (4, 1246), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9727{"evsubfhlosw", VX (4, 1247), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9728{"evmhesusiaaw", VX (4, 1282), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9729{"evmhosusiaaw", VX (4, 1286), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9730{"evmhesumiaaw", VX (4, 1290), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9731{"evmhosumiaaw", VX (4, 1294), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9732{"evmbeusiaah", VX (4, 1296), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9733{"evmbessiaah", VX (4, 1297), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9734{"evmbesusiaah", VX (4, 1298), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9735{"evmbousiaah", VX (4, 1300), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9736{"evmbossiaah", VX (4, 1301), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9737{"evmbosusiaah", VX (4, 1302), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9738{"evmbeumiaah", VX (4, 1304), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9739{"evmbesmiaah", VX (4, 1305), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9740{"evmbesumiaah", VX (4, 1306), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9741{"evmboumiaah", VX (4, 1308), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9742{"evmbosmiaah", VX (4, 1309), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9743{"evmbosumiaah", VX (4, 1310), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9744{"evmwlusiaaw3", VX (4, 1346), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9745{"evmwlssiaaw3", VX (4, 1347), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9746{"evmwhssfraaw3", VX (4, 1348), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9747{"evmwhssfaaw3", VX (4, 1349), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9748{"evmwhssfraaw", VX (4, 1350), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9749{"evmwhssfaaw", VX (4, 1351), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9750{"evmwlumiaaw3", VX (4, 1354), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9751{"evmwlsmiaaw3", VX (4, 1355), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9752{"evmwusiaa", VX (4, 1360), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9753{"evmwssiaa", VX (4, 1361), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9754{"evmwehgsmfraa", VX (4, 1366), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9755{"evmwehgsmfaa", VX (4, 1367), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9756{"evmwohgsmfraa", VX (4, 1374), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9757{"evmwohgsmfaa", VX (4, 1375), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9758{"evmhesusianw", VX (4, 1410), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9759{"evmhosusianw", VX (4, 1414), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9760{"evmhesumianw", VX (4, 1418), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9761{"evmhosumianw", VX (4, 1422), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9762{"evmbeusianh", VX (4, 1424), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9763{"evmbessianh", VX (4, 1425), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9764{"evmbesusianh", VX (4, 1426), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9765{"evmbousianh", VX (4, 1428), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9766{"evmbossianh", VX (4, 1429), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9767{"evmbosusianh", VX (4, 1430), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9768{"evmbeumianh", VX (4, 1432), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9769{"evmbesmianh", VX (4, 1433), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9770{"evmbesumianh", VX (4, 1434), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9771{"evmboumianh", VX (4, 1436), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9772{"evmbosmianh", VX (4, 1437), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9773{"evmbosumianh", VX (4, 1438), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9774{"evmwlusianw3", VX (4, 1474), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9775{"evmwlssianw3", VX (4, 1475), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9776{"evmwhssfranw3", VX (4, 1476), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9777{"evmwhssfanw3", VX (4, 1477), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9778{"evmwhssfranw", VX (4, 1478), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9779{"evmwhssfanw", VX (4, 1479), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9780{"evmwlumianw3", VX (4, 1482), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9781{"evmwlsmianw3", VX (4, 1483), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9782{"evmwusian", VX (4, 1488), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9783{"evmwssian", VX (4, 1489), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9784{"evmwehgsmfran", VX (4, 1494), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9785{"evmwehgsmfan", VX (4, 1495), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9786{"evmwohgsmfran", VX (4, 1502), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9787{"evmwohgsmfan", VX (4, 1503), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9788{"evseteqb", VX (4, 1536), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9789{"evseteqb.", VX (4, 1537), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9790{"evseteqh", VX (4, 1538), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9791{"evseteqh.", VX (4, 1539), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9792{"evseteqw", VX (4, 1540), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9793{"evseteqw.", VX (4, 1541), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9794{"evsetgthu", VX (4, 1544), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9795{"evsetgthu.", VX (4, 1545), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9796{"evsetgths", VX (4, 1546), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9797{"evsetgths.", VX (4, 1547), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9798{"evsetgtwu", VX (4, 1548), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9799{"evsetgtwu.", VX (4, 1549), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9800{"evsetgtws", VX (4, 1550), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9801{"evsetgtws.", VX (4, 1551), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9802{"evsetgtbu", VX (4, 1552), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9803{"evsetgtbu.", VX (4, 1553), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9804{"evsetgtbs", VX (4, 1554), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9805{"evsetgtbs.", VX (4, 1555), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9806{"evsetltbu", VX (4, 1556), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9807{"evsetltbu.", VX (4, 1557), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9808{"evsetltbs", VX (4, 1558), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9809{"evsetltbs.", VX (4, 1559), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9810{"evsetlthu", VX (4, 1560), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9811{"evsetlthu.", VX (4, 1561), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9812{"evsetlths", VX (4, 1562), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9813{"evsetlths.", VX (4, 1563), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9814{"evsetltwu", VX (4, 1564), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9815{"evsetltwu.", VX (4, 1565), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9816{"evsetltws", VX (4, 1566), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9817{"evsetltws.", VX (4, 1567), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9818{"evsaduw", VX (4, 1568), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9819{"evsadsw", VX (4, 1569), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9820{"evsad4ub", VX (4, 1570), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9821{"evsad4sb", VX (4, 1571), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9822{"evsad2uh", VX (4, 1572), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9823{"evsad2sh", VX (4, 1573), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9824{"evsaduwa", VX (4, 1576), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9825{"evsadswa", VX (4, 1577), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9826{"evsad4uba", VX (4, 1578), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9827{"evsad4sba", VX (4, 1579), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9828{"evsad2uha", VX (4, 1580), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9829{"evsad2sha", VX (4, 1581), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9830{"evabsdifuw", VX (4, 1584), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9831{"evabsdifsw", VX (4, 1585), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9832{"evabsdifub", VX (4, 1586), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9833{"evabsdifsb", VX (4, 1587), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9834{"evabsdifuh", VX (4, 1588), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9835{"evabsdifsh", VX (4, 1589), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9836{"evsaduwaa", VX (4, 1592), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9837{"evsadswaa", VX (4, 1593), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9838{"evsad4ubaaw", VX (4, 1594), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9839{"evsad4sbaaw", VX (4, 1595), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9840{"evsad2uhaaw", VX (4, 1596), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9841{"evsad2shaaw", VX (4, 1597), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9842{"evpkshubs", VX (4, 1600), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9843{"evpkshsbs", VX (4, 1601), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9844{"evpkswuhs", VX (4, 1602), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9845{"evpkswshs", VX (4, 1603), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9846{"evpkuhubs", VX (4, 1604), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9847{"evpkuwuhs", VX (4, 1605), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9848{"evpkswshilvs", VX (4, 1606), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9849{"evpkswgshefrs", VX (4, 1607), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9850{"evpkswshfrs", VX (4, 1608), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9851{"evpkswshilvfrs", VX (4, 1609), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9852{"evpksdswfrs", VX (4, 1610), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9853{"evpksdshefrs", VX (4, 1611), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9854{"evpkuduws", VX (4, 1612), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9855{"evpksdsws", VX (4, 1613), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9856{"evpkswgswfrs", VX (4, 1614), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9857{"evilveh", VX (4, 1616), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9858{"evilveoh", VX (4, 1617), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9859{"evilvhih", VX (4, 1618), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9860{"evilvhiloh", VX (4, 1619), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9861{"evilvloh", VX (4, 1620), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9862{"evilvlohih", VX (4, 1621), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9863{"evilvoeh", VX (4, 1622), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9864{"evilvoh", VX (4, 1623), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9865{"evdlveb", VX (4, 1624), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9866{"evdlveh", VX (4, 1625), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9867{"evdlveob", VX (4, 1626), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9868{"evdlveoh", VX (4, 1627), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9869{"evdlvob", VX (4, 1628), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9870{"evdlvoh", VX (4, 1629), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9871{"evdlvoeb", VX (4, 1630), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9872{"evdlvoeh", VX (4, 1631), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9873{"evmaxbu", VX (4, 1632), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9874{"evmaxbs", VX (4, 1633), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9875{"evmaxhu", VX (4, 1634), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9876{"evmaxhs", VX (4, 1635), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9877{"evmaxwu", VX (4, 1636), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9878{"evmaxws", VX (4, 1637), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9879{"evmaxdu", VX (4, 1638), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9880{"evmaxds", VX (4, 1639), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9881{"evminbu", VX (4, 1640), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9882{"evminbs", VX (4, 1641), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9883{"evminhu", VX (4, 1642), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9884{"evminhs", VX (4, 1643), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9885{"evminwu", VX (4, 1644), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9886{"evminws", VX (4, 1645), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9887{"evmindu", VX (4, 1646), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9888{"evminds", VX (4, 1647), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9889{"evavgwu", VX (4, 1648), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9890{"evavgws", VX (4, 1649), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9891{"evavgbu", VX (4, 1650), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9892{"evavgbs", VX (4, 1651), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9893{"evavghu", VX (4, 1652), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9894{"evavghs", VX (4, 1653), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9895{"evavgdu", VX (4, 1654), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9896{"evavgds", VX (4, 1655), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9897{"evavgwur", VX (4, 1656), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9898{"evavgwsr", VX (4, 1657), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9899{"evavgbur", VX (4, 1658), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9900{"evavgbsr", VX (4, 1659), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9901{"evavghur", VX (4, 1660), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9902{"evavghsr", VX (4, 1661), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9903{"evavgdur", VX (4, 1662), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9904{"evavgdsr", VX (4, 1663), VX_MASK, PPCSPE2, 0, {RD, RA, RB}},
9905};
9906
2ceb7719 9907const unsigned int spe2_num_opcodes =
74081948 9908 sizeof (spe2_opcodes) / sizeof (spe2_opcodes[0]);
This page took 1.726274 seconds and 4 git commands to generate.