Coverage Report

Created: 2023-08-28 06:31

/src/binutils-gdb/opcodes/ppc-opc.c
Line
Count
Source (jump to first uncovered line)
1
/* ppc-opc.c -- PowerPC opcode list
2
   Copyright (C) 1994-2023 Free Software Foundation, Inc.
3
   Written by Ian Lance Taylor, Cygnus Support
4
5
   This file is part of the GNU opcodes library.
6
7
   This library is free software; you can redistribute it and/or modify
8
   it under the terms of the GNU General Public License as published by
9
   the Free Software Foundation; either version 3, or (at your option)
10
   any later version.
11
12
   It is distributed in the hope that it will be useful, but WITHOUT
13
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14
   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
15
   License for more details.
16
17
   You should have received a copy of the GNU General Public License
18
   along with this file; see the file COPYING.  If not, write to the
19
   Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
20
   MA 02110-1301, USA.  */
21
22
#include "sysdep.h"
23
#include <stdio.h>
24
#include "opcode/ppc.h"
25
#include "opintl.h"
26
#include "libiberty.h"
27
28
/* This file holds the PowerPC opcode table.  The opcode table
29
   includes almost all of the extended instruction mnemonics.  This
30
   permits the disassembler to use them, and simplifies the assembler
31
   logic, at the cost of increasing the table size.  The table is
32
   strictly constant data, so the compiler should be able to put it in
33
   the text segment.
34
35
   This file also holds the operand table.  All knowledge about
36
   inserting operands into instructions and vice-versa is kept in this
37
   file.  */
38
39
/* The functions used to insert and extract complicated operands.  */
40
41
/* The ARX, ARY, RX and RY operands are alternate encodings of GPRs.  */
42
43
static uint64_t
44
insert_arx (uint64_t insn,
45
      int64_t value,
46
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
47
      const char **errmsg ATTRIBUTE_UNUSED)
48
0
{
49
0
  value -= 8;
50
0
  if (value < 0 || value >= 16)
51
0
    {
52
0
      *errmsg = _("invalid register");
53
0
      value = 0xf;
54
0
    }
55
0
  return insn | value;
56
0
}
57
58
static int64_t
59
extract_arx (uint64_t insn,
60
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
61
       int *invalid ATTRIBUTE_UNUSED)
62
0
{
63
0
  return (insn & 0xf) + 8;
64
0
}
65
66
static uint64_t
67
insert_ary (uint64_t insn,
68
      int64_t value,
69
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
70
      const char **errmsg ATTRIBUTE_UNUSED)
71
0
{
72
0
  value -= 8;
73
0
  if (value < 0 || value >= 16)
74
0
    {
75
0
      *errmsg = _("invalid register");
76
0
      value = 0xf;
77
0
    }
78
0
  return insn | (value << 4);
79
0
}
80
81
static int64_t
82
extract_ary (uint64_t insn,
83
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
84
       int *invalid ATTRIBUTE_UNUSED)
85
0
{
86
0
  return ((insn >> 4) & 0xf) + 8;
87
0
}
88
89
static uint64_t
90
insert_rx (uint64_t insn,
91
     int64_t value,
92
     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
93
     const char **errmsg)
94
0
{
95
0
  if (value >= 0 && value < 8)
96
0
    ;
97
0
  else if (value >= 24 && value <= 31)
98
0
    value -= 16;
99
0
  else
100
0
    {
101
0
      *errmsg = _("invalid register");
102
0
      value = 0xf;
103
0
    }
104
0
  return insn | value;
105
0
}
106
107
static int64_t
108
extract_rx (uint64_t insn,
109
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
110
      int *invalid ATTRIBUTE_UNUSED)
111
0
{
112
0
  int64_t value = insn & 0xf;
113
0
  if (value >= 0 && value < 8)
114
0
    return value;
115
0
  else
116
0
    return value + 16;
117
0
}
118
119
static uint64_t
120
insert_ry (uint64_t insn,
121
     int64_t value,
122
     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
123
     const char **errmsg)
124
0
{
125
0
  if (value >= 0 && value < 8)
126
0
    ;
127
0
  else if (value >= 24 && value <= 31)
128
0
    value -= 16;
129
0
  else
130
0
    {
131
0
      *errmsg = _("invalid register");
132
0
      value = 0xf;
133
0
    }
134
0
  return insn | (value << 4);
135
0
}
136
137
static int64_t
138
extract_ry (uint64_t insn,
139
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
140
      int *invalid ATTRIBUTE_UNUSED)
141
0
{
142
0
  int64_t value = (insn >> 4) & 0xf;
143
0
  if (value >= 0 && value < 8)
144
0
    return value;
145
0
  else
146
0
    return value + 16;
147
0
}
148
149
/* The BA and BB fields in an XL form instruction or the RA and RB fields or
150
   VRA and VRB fields in a VX form instruction when they must be the same.
151
   This is used for extended mnemonics like crclr.  The extraction function
152
   enforces that the fields are the same.  */
153
154
static uint64_t
155
insert_bab (uint64_t insn,
156
      int64_t value,
157
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
158
      const char **errmsg ATTRIBUTE_UNUSED)
159
0
{
160
0
  value &= 0x1f;
161
0
  return insn | (value << 16) | (value << 11);
162
0
}
163
164
static int64_t
165
extract_bab (uint64_t insn,
166
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
167
       int *invalid)
168
2.56k
{
169
2.56k
  int64_t ba = (insn >> 16) & 0x1f;
170
2.56k
  int64_t bb = (insn >> 11) & 0x1f;
171
172
2.56k
  if (ba != bb)
173
522
    *invalid = 1;
174
2.56k
  return ba;
175
2.56k
}
176
177
/* The BT, BA and BB fields in an XL form instruction when they must all be
178
   the same.  This is used for extended mnemonics like crclr.  The extraction
179
   function enforces that the fields are the same.  */
180
181
static uint64_t
182
insert_btab (uint64_t insn,
183
       int64_t value,
184
       ppc_cpu_t dialect,
185
       const char **errmsg)
186
0
{
187
0
  value &= 0x1f;
188
0
  return (value << 21) | insert_bab (insn, value, dialect, errmsg);
189
0
}
190
191
static int64_t
192
extract_btab (uint64_t insn,
193
       ppc_cpu_t dialect,
194
       int *invalid)
195
2.10k
{
196
2.10k
  int64_t bt = (insn >> 21) & 0x1f;
197
2.10k
  int64_t bab = extract_bab (insn, dialect, invalid);
198
199
2.10k
  if (bt != bab)
200
158
    *invalid = 1;
201
2.10k
  return bt;
202
2.10k
}
203
204
/* The BD field in a B form instruction when the - modifier is used.
205
   This modifier means that the branch is not expected to be taken.
206
   For chips built to versions of the architecture prior to version 2
207
   (ie. not Power4 compatible), we set the y bit of the BO field to 1
208
   if the offset is negative.  When extracting, we require that the y
209
   bit be 1 and that the offset be positive, since if the y bit is 0
210
   we just want to print the normal form of the instruction.
211
   Power4 compatible targets use two bits, "a", and "t", instead of
212
   the "y" bit.  "at" == 00 => no hint, "at" == 01 => unpredictable,
213
   "at" == 10 => not taken, "at" == 11 => taken.  The "t" bit is 00001
214
   in BO field, the "a" bit is 00010 for branch on CR(BI) and 01000
215
   for branch on CTR.  We only handle the taken/not-taken hint here.
216
   Note that we don't relax the conditions tested here when
217
   disassembling with -Many because insns using extract_bdm and
218
   extract_bdp always occur in pairs.  One or the other will always
219
   be valid.  */
220
221
318k
#define ISA_V2 (PPC_OPCODE_POWER4 | PPC_OPCODE_E500MC | PPC_OPCODE_TITAN)
222
223
static uint64_t
224
insert_bdm (uint64_t insn,
225
      int64_t value,
226
      ppc_cpu_t dialect,
227
      const char **errmsg ATTRIBUTE_UNUSED)
228
0
{
229
0
  if ((dialect & ISA_V2) == 0)
230
0
    {
231
0
      if ((value & 0x8000) != 0)
232
0
  insn |= 1 << 21;
233
0
    }
234
0
  else
235
0
    {
236
0
      if ((insn & (0x14 << 21)) == (0x04 << 21))
237
0
  insn |= 0x02 << 21;
238
0
      else if ((insn & (0x14 << 21)) == (0x10 << 21))
239
0
  insn |= 0x08 << 21;
240
0
    }
241
0
  return insn | (value & 0xfffc);
242
0
}
243
244
static int64_t
245
extract_bdm (uint64_t insn,
246
       ppc_cpu_t dialect,
247
       int *invalid)
248
71.1k
{
249
71.1k
  if ((dialect & ISA_V2) == 0)
250
4.31k
    {
251
4.31k
      if (((insn & (1 << 21)) == 0) != ((insn & (1 << 15)) == 0))
252
1.50k
  *invalid = 1;
253
4.31k
    }
254
66.8k
  else
255
66.8k
    {
256
66.8k
      if ((insn & (0x17 << 21)) != (0x06 << 21)
257
66.8k
    && (insn & (0x1d << 21)) != (0x18 << 21))
258
58.3k
  *invalid = 1;
259
66.8k
    }
260
261
71.1k
  return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
262
71.1k
}
263
264
/* The BD field in a B form instruction when the + modifier is used.
265
   This is like BDM, above, except that the branch is expected to be
266
   taken.  */
267
268
static uint64_t
269
insert_bdp (uint64_t insn,
270
      int64_t value,
271
      ppc_cpu_t dialect,
272
      const char **errmsg ATTRIBUTE_UNUSED)
273
0
{
274
0
  if ((dialect & ISA_V2) == 0)
275
0
    {
276
0
      if ((value & 0x8000) == 0)
277
0
  insn |= 1 << 21;
278
0
    }
279
0
  else
280
0
    {
281
0
      if ((insn & (0x14 << 21)) == (0x04 << 21))
282
0
  insn |= 0x03 << 21;
283
0
      else if ((insn & (0x14 << 21)) == (0x10 << 21))
284
0
  insn |= 0x09 << 21;
285
0
    }
286
0
  return insn | (value & 0xfffc);
287
0
}
288
289
static int64_t
290
extract_bdp (uint64_t insn,
291
       ppc_cpu_t dialect,
292
       int *invalid)
293
65.5k
{
294
65.5k
  if ((dialect & ISA_V2) == 0)
295
3.72k
    {
296
3.72k
      if (((insn & (1 << 21)) == 0) == ((insn & (1 << 15)) == 0))
297
1.73k
  *invalid = 1;
298
3.72k
    }
299
61.8k
  else
300
61.8k
    {
301
61.8k
      if ((insn & (0x17 << 21)) != (0x07 << 21)
302
61.8k
    && (insn & (0x1d << 21)) != (0x19 << 21))
303
54.8k
  *invalid = 1;
304
61.8k
    }
305
306
65.5k
  return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
307
65.5k
}
308
309
static inline int
310
valid_bo_pre_v2 (int64_t value)
311
112k
{
312
  /* Certain encodings have bits that are required to be zero.
313
     These are (z must be zero, y may be anything):
314
   0000y
315
   0001y
316
   001zy
317
   0100y
318
   0101y
319
   011zy
320
   1z00y
321
   1z01y
322
   1z1zz
323
  */
324
112k
  if ((value & 0x14) == 0)
325
    /* BO: 0000y, 0001y, 0100y, 0101y.  */
326
1.61k
    return 1;
327
111k
  else if ((value & 0x14) == 0x4)
328
    /* BO: 001zy, 011zy.  */
329
333
    return (value & 0x2) == 0;
330
110k
  else if ((value & 0x14) == 0x10)
331
    /* BO: 1z00y, 1z01y.  */
332
65.1k
    return (value & 0x8) == 0;
333
45.6k
  else
334
    /* BO: 1z1zz.  */
335
45.6k
    return value == 0x14;
336
112k
}
337
338
static inline int
339
valid_bo_post_v2 (int64_t value)
340
112k
{
341
  /* Certain encodings have bits that are required to be zero.
342
     These are (z must be zero, a & t may be anything):
343
   0000z
344
   0001z
345
   001at
346
   0100z
347
   0101z
348
   011at
349
   1a00t
350
   1a01t
351
   1z1zz
352
  */
353
112k
  if ((value & 0x14) == 0)
354
    /* BO: 0000z, 0001z, 0100z, 0101z.  */
355
1.61k
    return (value & 0x1) == 0;
356
111k
  else if ((value & 0x14) == 0x14)
357
    /* BO: 1z1zz.  */
358
45.6k
    return value == 0x14;
359
65.5k
  else if ((value & 0x14) == 0x4)
360
    /* BO: 001at, 011at, with "at" == 0b01 being reserved.  */
361
333
    return (value & 0x3) != 1;
362
65.1k
  else if ((value & 0x14) == 0x10)
363
    /* BO: 1a00t, 1a01t, with "at" == 0b01 being reserved.  */
364
65.1k
    return (value & 0x9) != 1;
365
0
  else
366
0
    return 1;
367
112k
}
368
369
/* Check for legal values of a BO field.  */
370
371
static int
372
valid_bo (int64_t value, ppc_cpu_t dialect, int extract)
373
112k
{
374
112k
  int valid_y = valid_bo_pre_v2 (value);
375
112k
  int valid_at = valid_bo_post_v2 (value);
376
377
  /* When disassembling with -Many, accept either encoding on the
378
     second pass through opcodes.  */
379
112k
  if (extract && dialect == ~(ppc_cpu_t) PPC_OPCODE_ANY)
380
0
    return valid_y || valid_at;
381
112k
  if ((dialect & ISA_V2) == 0)
382
12.8k
    return valid_y;
383
99.9k
  else
384
99.9k
    return valid_at;
385
112k
}
386
387
/* The BO field in a B form instruction.  Warn about attempts to set
388
   the field to an illegal value.  */
389
390
static uint64_t
391
insert_bo (uint64_t insn,
392
     int64_t value,
393
     ppc_cpu_t dialect,
394
     const char **errmsg)
395
0
{
396
0
  if (!valid_bo (value, dialect, 0))
397
0
    *errmsg = _("invalid conditional option");
398
0
  else if (PPC_OP (insn) == 19
399
0
     && (((insn >> 1) & 0x3ff) == 528) && ! (value & 4))
400
0
    *errmsg = _("invalid counter access");
401
0
  return insn | ((value & 0x1f) << 21);
402
0
}
403
404
static int64_t
405
extract_bo (uint64_t insn,
406
      ppc_cpu_t dialect,
407
      int *invalid)
408
43.7k
{
409
43.7k
  int64_t value = (insn >> 21) & 0x1f;
410
43.7k
  if (!valid_bo (value, dialect, 1))
411
17.3k
    *invalid = 1;
412
43.7k
  return value;
413
43.7k
}
414
415
/* For the given BO value, return a bit mask detailing which bits
416
   define the branch hints.  */
417
418
static int64_t
419
get_bo_hint_mask (int64_t bo, ppc_cpu_t dialect)
420
69.0k
{
421
69.0k
  if ((dialect & ISA_V2) == 0)
422
6.13k
    {
423
6.13k
      if ((bo & 0x14) != 0x14)
424
  /* BO: 0000y, 0001y, 001zy, 0100y, 0101y, 011zy, 1z00y, 1z01y .  */
425
4.45k
  return 1;
426
1.67k
      else
427
  /* BO: 1z1zz.  */
428
1.67k
  return 0;
429
6.13k
    }
430
62.9k
  else
431
62.9k
    {
432
62.9k
      if ((bo & 0x14) == 0x4)
433
  /* BO: 001at, 011at.  */
434
16
  return 0x3;
435
62.9k
      else if ((bo & 0x14) == 0x10)
436
  /* BO: 1a00t, 1a01t.  */
437
34.8k
  return 0x9;
438
28.0k
      else
439
  /* BO: 0000z, 0001z, 0100z, 0101z, 1z1zz.  */
440
28.0k
  return 0;
441
62.9k
    }
442
69.0k
}
443
444
/* The BO field in a B form instruction when the + or - modifier is used.  */
445
446
static uint64_t
447
insert_boe (uint64_t insn,
448
      int64_t value,
449
      ppc_cpu_t dialect,
450
      const char **errmsg,
451
      int branch_taken)
452
0
{
453
0
  int64_t implied_hint;
454
0
  int64_t hint_mask = get_bo_hint_mask (value, dialect);
455
456
0
  if (branch_taken)
457
0
    implied_hint = hint_mask;
458
0
  else
459
0
    implied_hint = hint_mask & ~1;
460
461
  /* The branch hint bit(s) in the BO field must either be zero or exactly
462
     match the branch hint bits implied by the '+' or '-' modifier.  */
463
0
  if (implied_hint == 0)
464
0
    *errmsg = _("BO value implies no branch hint, when using + or - modifier");
465
0
  else if ((value & hint_mask) != 0
466
0
     && (value & hint_mask) != implied_hint)
467
0
    {
468
0
      if ((dialect & ISA_V2) == 0)
469
0
  *errmsg = _("attempt to set y bit when using + or - modifier");
470
0
      else
471
0
  *errmsg = _("attempt to set 'at' bits when using + or - modifier");
472
0
    }
473
474
0
  value |= implied_hint;
475
476
0
  return insert_bo (insn, value, dialect, errmsg);
477
0
}
478
479
static int64_t
480
extract_boe (uint64_t insn,
481
       ppc_cpu_t dialect,
482
       int *invalid,
483
       int branch_taken)
484
69.0k
{
485
69.0k
  int64_t value = (insn >> 21) & 0x1f;
486
69.0k
  int64_t implied_hint;
487
69.0k
  int64_t hint_mask = get_bo_hint_mask (value, dialect);
488
489
69.0k
  if (branch_taken)
490
32.9k
    implied_hint = hint_mask;
491
36.1k
  else
492
36.1k
    implied_hint = hint_mask & ~1;
493
494
69.0k
  if (!valid_bo (value, dialect, 1)
495
69.0k
      || implied_hint == 0
496
69.0k
      || (value & hint_mask) != implied_hint)
497
60.4k
    *invalid = 1;
498
69.0k
  return value;
499
69.0k
}
500
501
/* The BO field in a B form instruction when the - modifier is used.  */
502
503
static uint64_t
504
insert_bom (uint64_t insn,
505
      int64_t value,
506
      ppc_cpu_t dialect,
507
      const char **errmsg)
508
0
{
509
0
  return insert_boe (insn, value, dialect, errmsg, 0);
510
0
}
511
512
static int64_t
513
extract_bom (uint64_t insn,
514
       ppc_cpu_t dialect,
515
       int *invalid)
516
36.1k
{
517
36.1k
  return extract_boe (insn, dialect, invalid, 0);
518
36.1k
}
519
520
/* The BO field in a B form instruction when the + modifier is used.  */
521
522
static uint64_t
523
insert_bop (uint64_t insn,
524
      int64_t value,
525
      ppc_cpu_t dialect,
526
      const char **errmsg)
527
0
{
528
0
  return insert_boe (insn, value, dialect, errmsg, 1);
529
0
}
530
531
static int64_t
532
extract_bop (uint64_t insn,
533
       ppc_cpu_t dialect,
534
       int *invalid)
535
32.9k
{
536
32.9k
  return extract_boe (insn, dialect, invalid, 1);
537
32.9k
}
538
539
/* The DCMX field in a X form instruction when the field is split
540
   into separate DC, DM and DX fields.  */
541
542
static uint64_t
543
insert_dcmxs (uint64_t insn,
544
        int64_t value,
545
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
546
        const char **errmsg ATTRIBUTE_UNUSED)
547
0
{
548
0
  return (insn
549
0
    | ((value & 0x1f) << 16)
550
0
    | ((value & 0x20) >> 3)
551
0
    | (value & 0x40));
552
0
}
553
554
static int64_t
555
extract_dcmxs (uint64_t insn,
556
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
557
         int *invalid ATTRIBUTE_UNUSED)
558
1.87k
{
559
1.87k
  return (insn & 0x40) | ((insn << 3) & 0x20) | ((insn >> 16) & 0x1f);
560
1.87k
}
561
562
/* The DW field in a X form instruction when the field is split
563
   into separate D and DX fields.  */
564
565
static uint64_t
566
insert_dw (uint64_t insn,
567
     int64_t value,
568
     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
569
     const char **errmsg ATTRIBUTE_UNUSED)
570
0
{
571
  /* DW offsets must be in the range [-512, -8] and be a multiple of 8.  */
572
0
  if (value < -512
573
0
      || value > -8
574
0
      || (value & 0x7) != 0)
575
0
    *errmsg = _("invalid offset: must be in the range [-512, -8] "
576
0
    "and be a multiple of 8");
577
578
0
  return insn | ((value & 0xf8) << 18) | ((value >> 8) & 1);
579
0
}
580
581
static int64_t
582
extract_dw (uint64_t insn,
583
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
584
       int *invalid ATTRIBUTE_UNUSED)
585
260
{
586
260
  int64_t dw = ((insn & 1) << 8) | ((insn >> 18) & 0xf8);
587
260
  return dw - 512;
588
260
}
589
590
/* The D field in a DX form instruction when the field is split
591
   into separate D0, D1 and D2 fields.  */
592
593
static uint64_t
594
insert_dxd (uint64_t insn,
595
      int64_t value,
596
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
597
      const char **errmsg ATTRIBUTE_UNUSED)
598
0
{
599
0
  return insn | (value & 0xffc1) | ((value & 0x3e) << 15);
600
0
}
601
602
static int64_t
603
extract_dxd (uint64_t insn,
604
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
605
       int *invalid ATTRIBUTE_UNUSED)
606
4.02k
{
607
4.02k
  uint64_t dxd = (insn & 0xffc1) | ((insn >> 15) & 0x3e);
608
4.02k
  return (dxd ^ 0x8000) - 0x8000;
609
4.02k
}
610
611
static uint64_t
612
insert_dxdn (uint64_t insn,
613
       int64_t value,
614
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
615
       const char **errmsg ATTRIBUTE_UNUSED)
616
0
{
617
0
  return insert_dxd (insn, -value, dialect, errmsg);
618
0
}
619
620
static int64_t
621
extract_dxdn (uint64_t insn,
622
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
623
        int *invalid)
624
0
{
625
0
  return -extract_dxd (insn, dialect, invalid);
626
0
}
627
628
/* The D field in a 64-bit D form prefix instruction when the field is split
629
   into separate D0 and D1 fields.  */
630
631
static uint64_t
632
insert_d34 (uint64_t insn,
633
      int64_t value,
634
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
635
      const char **errmsg ATTRIBUTE_UNUSED)
636
0
{
637
0
  return insn | ((value & 0x3ffff0000ULL) << 16) | (value & 0xffff);
638
0
}
639
640
static int64_t
641
extract_d34 (uint64_t insn,
642
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
643
       int *invalid ATTRIBUTE_UNUSED)
644
2.59k
{
645
2.59k
  int64_t mask = 1ULL << 33;
646
2.59k
  int64_t value = ((insn >> 16) & 0x3ffff0000ULL) | (insn & 0xffff);
647
2.59k
  value = (value ^ mask) - mask;
648
2.59k
  return value;
649
2.59k
}
650
651
/* The NSI34 field in an 8-byte D form prefix instruction.  This is the same
652
   as the SI34 field, only negated.  The extraction function always marks it
653
   as invalid, since we never want to recognize an instruction which uses
654
   a field of this type.  */
655
656
static uint64_t
657
insert_nsi34 (uint64_t insn,
658
        int64_t value,
659
        ppc_cpu_t dialect,
660
        const char **errmsg)
661
0
{
662
0
  return insert_d34 (insn, -value, dialect, errmsg);
663
0
}
664
665
static int64_t
666
extract_nsi34 (uint64_t insn,
667
         ppc_cpu_t dialect,
668
         int *invalid)
669
72
{
670
72
  int64_t value = extract_d34 (insn, dialect, invalid);
671
72
  *invalid = 1;
672
72
  return -value;
673
72
}
674
675
/* The split IMM32 field in a vector splat insn.  */
676
677
static uint64_t
678
insert_imm32 (uint64_t insn,
679
        int64_t value,
680
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
681
        const char **errmsg ATTRIBUTE_UNUSED)
682
0
{
683
0
  return insn | ((value & 0xffff0000) << 16) | (value & 0xffff);
684
0
}
685
686
static int64_t
687
extract_imm32 (uint64_t insn,
688
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
689
         int *invalid ATTRIBUTE_UNUSED)
690
26
{
691
26
  return (insn & 0xffff) | ((insn >> 16) & 0xffff0000);
692
26
}
693
694
/* The R field in an 8-byte prefix instruction when there are restrictions
695
   between R's value and the RA value (ie, they cannot both be non zero).  */
696
697
static uint64_t
698
insert_pcrel (uint64_t insn,
699
        int64_t value,
700
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
701
        const char **errmsg)
702
0
{
703
0
  value &= 0x1;
704
0
  int64_t ra = (insn >> 16) & 0x1f;
705
0
  if (ra != 0 && value != 0)
706
0
    *errmsg = _("invalid R operand");
707
708
0
  return insn | (value << 52);
709
0
}
710
711
static int64_t
712
extract_pcrel (uint64_t insn,
713
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
714
         int *invalid)
715
4.02k
{
716
  /* If called with *invalid < 0 to return the value for missing
717
     operands, *invalid will be the negative count of missing operands
718
     including this one.  Return a default value of 1 if the PRA0/PRAQ
719
     operand was also omitted (ie. *invalid is -2).  Return a default
720
     value of 0 if the PRA0/PRAQ operand was not omitted
721
     (ie. *invalid is -1).  */
722
4.02k
  if (*invalid < 0)
723
1.22k
    return ~ *invalid & 1;
724
725
2.80k
  int64_t ra = (insn >> 16) & 0x1f;
726
2.80k
  int64_t pcrel = (insn >> 52) & 0x1;
727
2.80k
  if (ra != 0 && pcrel != 0)
728
536
    *invalid = 1;
729
730
2.80k
  return pcrel;
731
4.02k
}
732
733
/* Variant of extract_pcrel that sets invalid for R bit clear.  Used
734
   to disassemble "paddi rt,0,offset,1" as "pla rt,offset".  */
735
736
static int64_t
737
extract_pcrel1 (uint64_t insn,
738
    ppc_cpu_t dialect,
739
    int *invalid)
740
121
{
741
121
  int64_t pcrel = extract_pcrel (insn, dialect, invalid);
742
121
  if (!pcrel)
743
34
    *invalid = 1;
744
121
  return pcrel;
745
121
}
746
747
/* FXM mask in mfcr and mtcrf instructions.  */
748
749
static uint64_t
750
insert_fxm (uint64_t insn,
751
      int64_t value,
752
      ppc_cpu_t dialect,
753
      const char **errmsg)
754
0
{
755
  /* If we're handling the mfocrf and mtocrf insns ensure that exactly
756
     one bit of the mask field is set.  */
757
0
  if ((insn & (1 << 20)) != 0)
758
0
    {
759
0
      if (value == 0 || (value & -value) != value)
760
0
  {
761
0
    *errmsg = _("invalid mask field");
762
0
    value = 0;
763
0
  }
764
0
    }
765
766
  /* If only one bit of the FXM field is set, we can use the new form
767
     of the instruction, which is faster.  Unlike the Power4 branch hint
768
     encoding, this is not backward compatible.  Do not generate the
769
     new form unless -mpower4 has been given, or -many and the two
770
     operand form of mfcr was used.  */
771
0
  else if (value > 0
772
0
     && (value & -value) == value
773
0
     && ((dialect & PPC_OPCODE_POWER4) != 0
774
0
         || ((dialect & PPC_OPCODE_ANY) != 0
775
0
       && (insn & (0x3ff << 1)) == 19 << 1)))
776
0
    insn |= 1 << 20;
777
778
  /* Any other value on mfcr is an error.  */
779
0
  else if ((insn & (0x3ff << 1)) == 19 << 1)
780
0
    {
781
      /* A value of -1 means we used the one operand form of
782
   mfcr which is valid.  */
783
0
      if (value != -1)
784
0
  *errmsg = _("invalid mfcr mask");
785
0
      value = 0;
786
0
    }
787
788
0
  return insn | ((value & 0xff) << 12);
789
0
}
790
791
static int64_t
792
extract_fxm (uint64_t insn,
793
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
794
       int *invalid)
795
4.62k
{
796
  /* Return a value of -1 for a missing optional operand, which is
797
     used as a flag by insert_fxm.  */
798
4.62k
  if (*invalid < 0)
799
929
    return -1;
800
801
3.70k
  int64_t mask = (insn >> 12) & 0xff;
802
  /* Is this a Power4 insn?  */
803
3.70k
  if ((insn & (1 << 20)) != 0)
804
708
    {
805
      /* Exactly one bit of MASK should be set.  */
806
708
      if (mask == 0 || (mask & -mask) != mask)
807
12
  *invalid = 1;
808
708
    }
809
810
  /* Check that non-power4 form of mfcr has a zero MASK.  */
811
2.99k
  else if ((insn & (0x3ff << 1)) == 19 << 1)
812
1.94k
    {
813
1.94k
      if (mask != 0)
814
82
  *invalid = 1;
815
1.85k
      else
816
1.85k
  mask = -1;
817
1.94k
    }
818
819
3.70k
  return mask;
820
4.62k
}
821
822
/* L field in the paste. instruction.  */
823
824
static uint64_t
825
insert_l1opt (uint64_t insn,
826
      int64_t value,
827
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
828
      const char **errmsg ATTRIBUTE_UNUSED)
829
0
{
830
0
  return insn | ((value & 1) << 21);
831
0
}
832
833
static int64_t
834
extract_l1opt (uint64_t insn,
835
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
836
       int *invalid)
837
136
{
838
  /* Return a value of 1 for a missing optional operand.  */
839
136
  if (*invalid < 0)
840
34
    return 1;
841
842
102
  return (insn >> 21) & 1;
843
136
}
844
845
static uint64_t
846
insert_li20 (uint64_t insn,
847
       int64_t value,
848
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
849
       const char **errmsg ATTRIBUTE_UNUSED)
850
0
{
851
0
  return (insn
852
0
    | ((value & 0xf0000) >> 5)
853
0
    | ((value & 0x0f800) << 5)
854
0
    | (value & 0x7ff));
855
0
}
856
857
static int64_t
858
extract_li20 (uint64_t insn,
859
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
860
        int *invalid ATTRIBUTE_UNUSED)
861
0
{
862
0
  return ((((insn << 5) & 0xf0000)
863
0
     | ((insn >> 5) & 0xf800)
864
0
     | (insn & 0x7ff)) ^ 0x80000) - 0x80000;
865
0
}
866
867
/* The 2-bit/3-bit L or 2-bit WC field in a SYNC, DCBF or WAIT instruction.
868
   For SYNC, some L values are reserved:
869
     * Values 6 and 7 are reserved on newer server cpus.
870
     * Value 3 is reserved on all server cpus.
871
     * Value 2 is reserved on all other cpus.
872
   For DCBF, some L values are reserved:
873
     * Values 2, 5 and 7 are reserved on all cpus.
874
   For WAIT, some WC values are reserved:
875
     * Value 3 is reserved on all server cpus.
876
     * Values 1 and 2 are reserved on older server cpus.  */
877
878
static uint64_t
879
insert_ls (uint64_t insn,
880
     int64_t value,
881
     ppc_cpu_t dialect,
882
     const char **errmsg)
883
0
{
884
0
  int64_t mask;
885
886
0
  if (((insn >> 1) & 0x3ff) == 598)
887
0
    {
888
      /* For SYNC, some L values are illegal.  */
889
0
      mask = (dialect & PPC_OPCODE_POWER10) ?  0x7 : 0x3;
890
891
      /* If the value is within range, check for other illegal values.  */
892
0
      if ((value & mask) == value)
893
0
  switch (value)
894
0
    {
895
0
    case 2:
896
0
      if (dialect & PPC_OPCODE_POWER4)
897
0
        break;
898
      /* Fall through.  */
899
0
    case 3:
900
0
    case 6:
901
0
    case 7:
902
0
      *errmsg = _("illegal L operand value");
903
0
      break;
904
0
    default:
905
0
      break;
906
0
    }
907
0
    }
908
0
  else if (((insn >> 1) & 0x3ff) == 86)
909
0
    {
910
      /* For DCBF, some L values are illegal.  */
911
0
      mask = (dialect & PPC_OPCODE_POWER10) ?  0x7 : 0x3;
912
913
      /* If the value is within range, check for other illegal values.  */
914
0
      if ((value & mask) == value)
915
0
  switch (value)
916
0
    {
917
0
    case 2:
918
0
    case 5:
919
0
    case 7:
920
0
      *errmsg = _("illegal L operand value");
921
0
      break;
922
0
    default:
923
0
      break;
924
0
    }
925
0
    }
926
0
  else
927
0
    {
928
      /* For WAIT, some WC values are illegal.  */
929
0
      mask = 0x3;
930
931
      /* If the value is within range, check for other illegal values.  */
932
0
      if ((dialect & PPC_OPCODE_A2) == 0
933
0
    && (dialect & PPC_OPCODE_E500MC) == 0
934
0
    && (value & mask) == value)
935
0
  switch (value)
936
0
    {
937
0
    case 1:
938
0
    case 2:
939
0
      if (dialect & PPC_OPCODE_POWER10)
940
0
        break;
941
      /* Fall through.  */
942
0
    case 3:
943
0
      *errmsg = _("illegal WC operand value");
944
0
      break;
945
0
    default:
946
0
      break;
947
0
    }
948
0
    }
949
950
0
  return insn | ((value & mask) << 21);
951
0
}
952
953
static int64_t
954
extract_ls (uint64_t insn,
955
      ppc_cpu_t dialect,
956
      int *invalid)
957
2.19k
{
958
2.19k
  uint64_t value;
959
960
  /* Missing optional operands have a value of zero.  */
961
2.19k
  if (*invalid < 0)
962
480
    return 0;
963
964
1.71k
  if (((insn >> 1) & 0x3ff) == 598)
965
1.54k
    {
966
      /* For SYNC, some L values are illegal.  */
967
1.54k
      int64_t mask = (dialect & PPC_OPCODE_POWER10) ?  0x7 : 0x3;
968
969
1.54k
      value = (insn >> 21) & mask;
970
1.54k
      switch (value)
971
1.54k
  {
972
186
  case 2:
973
186
    if (dialect & PPC_OPCODE_POWER4)
974
186
      break;
975
    /* Fall through.  */
976
12
  case 3:
977
14
  case 6:
978
14
  case 7:
979
14
    *invalid = 1;
980
14
    break;
981
1.34k
  default:
982
1.34k
    break;
983
1.54k
  }
984
1.54k
    }
985
177
  else if (((insn >> 1) & 0x3ff) == 86)
986
161
    {
987
      /* For DCBF, some L values are illegal.  */
988
161
      int64_t mask = (dialect & PPC_OPCODE_POWER10) ?  0x7 : 0x3;
989
990
161
      value = (insn >> 21) & mask;
991
161
      switch (value)
992
161
  {
993
91
  case 2:
994
97
  case 5:
995
99
  case 7:
996
99
    *invalid = 1;
997
99
    break;
998
62
  default:
999
62
    break;
1000
161
  }
1001
161
    }
1002
16
  else
1003
16
    {
1004
      /* For WAIT, some WC values are illegal.  */
1005
16
      value = (insn >> 21) & 0x3;
1006
16
      if ((dialect & PPC_OPCODE_A2) == 0
1007
16
    && (dialect & PPC_OPCODE_E500MC) == 0)
1008
16
  switch (value)
1009
16
    {
1010
10
    case 1:
1011
10
    case 2:
1012
10
      if (dialect & PPC_OPCODE_POWER10)
1013
10
        break;
1014
      /* Fall through.  */
1015
0
    case 3:
1016
0
      *invalid = 1;
1017
0
      break;
1018
6
    default:
1019
6
      break;
1020
16
    }
1021
16
    }
1022
1023
1.71k
  return value;
1024
1.71k
}
1025
1026
/* The 4-bit E field in a sync instruction that accepts 2 operands.
1027
   If ESYNC is non-zero, then the L field must be either 0 or 1 and
1028
   the complement of ESYNC-bit2.  */
1029
1030
static uint64_t
1031
insert_esync (uint64_t insn,
1032
        int64_t value,
1033
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1034
        const char **errmsg)
1035
0
{
1036
0
  uint64_t ls = (insn >> 21) & 0x03;
1037
1038
0
  if (value != 0
1039
0
      && ((~value >> 1) & 0x1) != ls)
1040
0
    *errmsg = _("incompatible L operand value");
1041
1042
0
  return insn | ((value & 0xf) << 16);
1043
0
}
1044
1045
static int64_t
1046
extract_esync (uint64_t insn,
1047
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1048
         int *invalid)
1049
1.79k
{
1050
  /* Missing optional operands have a value of zero.  */
1051
1.79k
  if (*invalid < 0)
1052
401
    return 0;
1053
1054
1.39k
  uint64_t ls = (insn >> 21) & 0x3;
1055
1.39k
  uint64_t value = (insn >> 16) & 0xf;
1056
1.39k
  if (value != 0
1057
1.39k
      && ((~value >> 1) & 0x1) != ls)
1058
190
    *invalid = 1;
1059
1.39k
  return value;
1060
1.79k
}
1061
1062
/* The n operand of clrrwi, which sets the ME field to 31 - n.  */
1063
1064
static uint64_t
1065
insert_crwn (uint64_t insn,
1066
      int64_t value,
1067
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1068
      const char **errmsg ATTRIBUTE_UNUSED)
1069
0
{
1070
0
  return insn | ((~value & 0x1f) << 1);
1071
0
}
1072
1073
static int64_t
1074
extract_crwn (uint64_t insn,
1075
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1076
       int *invalid ATTRIBUTE_UNUSED)
1077
3.05k
{
1078
3.05k
  return ~(insn >> 1) & 0x1f;
1079
3.05k
}
1080
1081
/* The n operand of extlwi, which sets the ME field to n - 1.  */
1082
1083
static uint64_t
1084
insert_elwn (uint64_t insn,
1085
       int64_t value,
1086
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1087
       const char **errmsg ATTRIBUTE_UNUSED)
1088
0
{
1089
0
  return insn | (((value - 1) & 0x1f) << 1);
1090
0
}
1091
1092
static int64_t
1093
extract_elwn (uint64_t insn,
1094
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1095
        int *invalid ATTRIBUTE_UNUSED)
1096
0
{
1097
0
  return ((insn >> 1) & 0x1f) + 1;
1098
0
}
1099
1100
/* The n operand of extrwi, sets MB = 32 - n.  */
1101
1102
static uint64_t
1103
insert_erwn (uint64_t insn,
1104
       int64_t value,
1105
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1106
       const char **errmsg ATTRIBUTE_UNUSED)
1107
0
{
1108
0
  return insn | ((-value & 0x1f) << 6);
1109
0
}
1110
1111
static int64_t
1112
extract_erwn (uint64_t insn,
1113
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1114
        int *invalid ATTRIBUTE_UNUSED)
1115
0
{
1116
0
  return (~(insn >> 6) & 0x1f) + 1;
1117
0
}
1118
1119
/* The b operand of extrwi, sets SH = b + n.  */
1120
1121
static uint64_t
1122
insert_erwb (uint64_t insn,
1123
       int64_t value,
1124
       ppc_cpu_t dialect,
1125
       const char **errmsg ATTRIBUTE_UNUSED)
1126
0
{
1127
0
  int64_t n = extract_erwn (insn, dialect, NULL);
1128
0
  return insn | (((n + value) & 0x1f) << 11);
1129
0
}
1130
1131
static int64_t
1132
extract_erwb (uint64_t insn,
1133
        ppc_cpu_t dialect,
1134
        int *invalid ATTRIBUTE_UNUSED)
1135
0
{
1136
0
  int64_t n = extract_erwn (insn, dialect, NULL);
1137
0
  return ((insn >> 11) - n) & 0x1f;
1138
0
}
1139
1140
/* The n and b operands of clrlslwi.  */
1141
1142
static uint64_t
1143
insert_cslwn (uint64_t insn,
1144
        int64_t value,
1145
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1146
        const char **errmsg ATTRIBUTE_UNUSED)
1147
0
{
1148
0
  uint64_t mb = 0x1f << 6;
1149
0
  int64_t b = (insn >> 6) & 0x1f;
1150
0
  return ((insn & ~mb) | ((value & 0x1f) << 11) | (((b - value) & 0x1f) << 6)
1151
0
    | ((~value & 0x1f) << 1));
1152
0
}
1153
1154
static int64_t
1155
extract_cslwb (uint64_t insn,
1156
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1157
         int *invalid)
1158
0
{
1159
0
  int64_t sh = (insn >> 11) & 0x1f;
1160
0
  int64_t mb = (insn >> 6) & 0x1f;
1161
0
  int64_t me = (insn >> 1) & 0x1f;
1162
0
  if (sh != 31 - me)
1163
0
    *invalid = 1;
1164
0
  return (mb + sh) & 0x1f;
1165
0
}
1166
1167
/* The n and b operands of inslwi.  */
1168
1169
static uint64_t
1170
insert_ilwb (uint64_t insn,
1171
       int64_t value,
1172
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1173
       const char **errmsg ATTRIBUTE_UNUSED)
1174
0
{
1175
0
  uint64_t me = 0x1f << 1;
1176
0
  int64_t n = (insn >> 1) & 0x1f;
1177
0
  return ((insn & ~me) | ((-value & 0x1f) << 11) | ((value & 0x1f) << 6)
1178
0
    | (((value + n - 1) & 0x1f) << 1));
1179
0
}
1180
1181
static int64_t
1182
extract_ilwn (uint64_t insn,
1183
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1184
        int *invalid)
1185
0
{
1186
0
  int64_t sh = (insn >> 11) & 0x1f;
1187
0
  int64_t mb = (insn >> 6) & 0x1f;
1188
0
  int64_t me = (insn >> 1) & 0x1f;
1189
0
  if (((sh + mb) & 0x1f) != 0)
1190
0
    *invalid = 1;
1191
0
  return ((me - mb) & 0x1f) + 1;
1192
0
}
1193
1194
/* The n and b operands of insrwi.  */
1195
1196
static uint64_t
1197
insert_irwb (uint64_t insn,
1198
       int64_t value,
1199
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1200
       const char **errmsg ATTRIBUTE_UNUSED)
1201
0
{
1202
0
  uint64_t me = 0x1f << 1;
1203
0
  int64_t n = (insn >> 1) & 0x1f;
1204
0
  return ((insn & ~me) | ((-(value + n) & 0x1f) << 11) | ((value & 0x1f) << 6)
1205
0
    | (((value + n - 1) & 0x1f) << 1));
1206
0
}
1207
1208
static int64_t
1209
extract_irwn (uint64_t insn,
1210
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1211
        int *invalid)
1212
0
{
1213
0
  int64_t sh = (insn >> 11) & 0x1f;
1214
0
  int64_t mb = (insn >> 6) & 0x1f;
1215
0
  int64_t me = (insn >> 1) & 0x1f;
1216
0
  if (((sh + me + 1) & 0x1f) != 0)
1217
0
    *invalid = 1;
1218
0
  return ((me - mb) & 0x1f) + 1;
1219
0
}
1220
1221
/* The MB and ME fields in an M form instruction expressed as a single
1222
   operand which is itself a bitmask.  The extraction function always
1223
   marks it as invalid, since we never want to recognize an
1224
   instruction which uses a field of this type.  */
1225
1226
static uint64_t
1227
insert_mbe (uint64_t insn,
1228
      int64_t value,
1229
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1230
      const char **errmsg)
1231
0
{
1232
0
  uint64_t uval, mask;
1233
0
  long mb, me, mx, count, last;
1234
1235
0
  uval = value;
1236
1237
0
  if (uval == 0)
1238
0
    {
1239
0
      *errmsg = _("illegal bitmask");
1240
0
      return insn;
1241
0
    }
1242
1243
0
  mb = 0;
1244
0
  me = 32;
1245
0
  if ((uval & 1) != 0)
1246
0
    last = 1;
1247
0
  else
1248
0
    last = 0;
1249
0
  count = 0;
1250
1251
  /* mb: location of last 0->1 transition */
1252
  /* me: location of last 1->0 transition */
1253
  /* count: # transitions */
1254
1255
0
  for (mx = 0, mask = (uint64_t) 1 << 31; mx < 32; ++mx, mask >>= 1)
1256
0
    {
1257
0
      if ((uval & mask) && !last)
1258
0
  {
1259
0
    ++count;
1260
0
    mb = mx;
1261
0
    last = 1;
1262
0
  }
1263
0
      else if (!(uval & mask) && last)
1264
0
  {
1265
0
    ++count;
1266
0
    me = mx;
1267
0
    last = 0;
1268
0
  }
1269
0
    }
1270
0
  if (me == 0)
1271
0
    me = 32;
1272
1273
0
  if (count != 2 && (count != 0 || ! last))
1274
0
    *errmsg = _("illegal bitmask");
1275
1276
0
  return insn | (mb << 6) | ((me - 1) << 1);
1277
0
}
1278
1279
static int64_t
1280
extract_mbe (uint64_t insn,
1281
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1282
       int *invalid)
1283
0
{
1284
0
  int64_t ret;
1285
0
  long mb, me;
1286
0
  long i;
1287
1288
0
  *invalid = 1;
1289
1290
0
  mb = (insn >> 6) & 0x1f;
1291
0
  me = (insn >> 1) & 0x1f;
1292
0
  if (mb < me + 1)
1293
0
    {
1294
0
      ret = 0;
1295
0
      for (i = mb; i <= me; i++)
1296
0
  ret |= (uint64_t) 1 << (31 - i);
1297
0
    }
1298
0
  else if (mb == me + 1)
1299
0
    ret = ~0;
1300
0
  else /* (mb > me + 1) */
1301
0
    {
1302
0
      ret = ~0;
1303
0
      for (i = me + 1; i < mb; i++)
1304
0
  ret &= ~((uint64_t) 1 << (31 - i));
1305
0
    }
1306
0
  return ret;
1307
0
}
1308
1309
/* The MB or ME field in an MD or MDS form instruction.  The high bit
1310
   is wrapped to the low end.  */
1311
1312
static uint64_t
1313
insert_mb6 (uint64_t insn,
1314
      int64_t value,
1315
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1316
      const char **errmsg ATTRIBUTE_UNUSED)
1317
0
{
1318
0
  return insn | ((value & 0x1f) << 6) | (value & 0x20);
1319
0
}
1320
1321
static int64_t
1322
extract_mb6 (uint64_t insn,
1323
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1324
       int *invalid ATTRIBUTE_UNUSED)
1325
47.5k
{
1326
47.5k
  return ((insn >> 6) & 0x1f) | (insn & 0x20);
1327
47.5k
}
1328
1329
/* The n operand of extrdi, which sets MB field.  */
1330
1331
static uint64_t
1332
insert_erdn (uint64_t insn,
1333
       int64_t value,
1334
       ppc_cpu_t dialect,
1335
       const char **errmsg)
1336
0
{
1337
0
  return insert_mb6 (insn, -value, dialect, errmsg);
1338
0
}
1339
1340
static int64_t
1341
extract_erdn (uint64_t insn,
1342
        ppc_cpu_t dialect,
1343
        int *invalid)
1344
0
{
1345
0
  return (~extract_mb6 (insn, dialect, invalid) & 63) + 1;
1346
0
}
1347
1348
/* The n operand of extldi, which sets ME field.  */
1349
1350
static uint64_t
1351
insert_eldn (uint64_t insn,
1352
       int64_t value,
1353
       ppc_cpu_t dialect,
1354
       const char **errmsg)
1355
0
{
1356
0
  return insert_mb6 (insn, value - 1, dialect, errmsg);
1357
0
}
1358
1359
static int64_t
1360
extract_eldn (uint64_t insn,
1361
        ppc_cpu_t dialect,
1362
        int *invalid)
1363
0
{
1364
0
  return extract_mb6 (insn, dialect, invalid) + 1;
1365
0
}
1366
1367
/* The n operand of clrrdi, which set ME field.  */
1368
1369
static uint64_t
1370
insert_crdn (uint64_t insn,
1371
       int64_t value,
1372
       ppc_cpu_t dialect,
1373
       const char **errmsg)
1374
0
{
1375
0
  return insert_mb6 (insn, 63 - value, dialect, errmsg);
1376
0
}
1377
1378
static int64_t
1379
extract_crdn (uint64_t insn,
1380
        ppc_cpu_t dialect,
1381
        int *invalid)
1382
4.28k
{
1383
4.28k
  return 63 - extract_mb6 (insn, dialect, invalid);
1384
4.28k
}
1385
1386
/* The NB field in an X form instruction.  The value 32 is stored as
1387
   0.  */
1388
1389
static int64_t
1390
extract_nb (uint64_t insn,
1391
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1392
      int *invalid ATTRIBUTE_UNUSED)
1393
82
{
1394
82
  int64_t ret;
1395
1396
82
  ret = (insn >> 11) & 0x1f;
1397
82
  if (ret == 0)
1398
26
    ret = 32;
1399
82
  return ret;
1400
82
}
1401
1402
/* The NB field in an lswi instruction, which has special value
1403
   restrictions.  The value 32 is stored as 0.  */
1404
1405
static uint64_t
1406
insert_nbi (uint64_t insn,
1407
      int64_t value,
1408
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1409
      const char **errmsg ATTRIBUTE_UNUSED)
1410
0
{
1411
0
  int64_t rtvalue = (insn >> 21) & 0x1f;
1412
0
  int64_t ravalue = (insn >> 16) & 0x1f;
1413
1414
0
  if (value == 0)
1415
0
    value = 32;
1416
0
  if (rtvalue + (value + 3) / 4 > (rtvalue > ravalue ? ravalue + 32
1417
0
                 : ravalue))
1418
0
    *errmsg = _("address register in load range");
1419
0
  return insn | ((value & 0x1f) << 11);
1420
0
}
1421
1422
/* The NSI field in a D form instruction.  This is the same as the SI
1423
   field, only negated.  The extraction function always marks it as
1424
   invalid, since we never want to recognize an instruction which uses
1425
   a field of this type.  */
1426
1427
static uint64_t
1428
insert_nsi (uint64_t insn,
1429
      int64_t value,
1430
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1431
      const char **errmsg ATTRIBUTE_UNUSED)
1432
0
{
1433
0
  return insn | (-value & 0xffff);
1434
0
}
1435
1436
static int64_t
1437
extract_nsi (uint64_t insn,
1438
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1439
       int *invalid)
1440
0
{
1441
0
  *invalid = 1;
1442
0
  return -(((insn & 0xffff) ^ 0x8000) - 0x8000);
1443
0
}
1444
1445
/* The 2-bit SC field in a SYNC or PL field in a WAIT instruction.
1446
   For WAIT, some PL values are reserved:
1447
     * Values 1, 2 and 3 are reserved.  */
1448
1449
static uint64_t
1450
insert_pl (uint64_t insn,
1451
     int64_t value,
1452
     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1453
     const char **errmsg)
1454
0
{
1455
  /* For WAIT, some PL values are illegal.  */
1456
0
  if (((insn >> 1) & 0x3ff) == 30
1457
0
      && value != 0)
1458
0
    *errmsg = _("illegal PL operand value");
1459
0
  return insn | ((value & 0x3) << 16);
1460
0
}
1461
1462
static int64_t
1463
extract_pl (uint64_t insn,
1464
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1465
      int *invalid)
1466
261
{
1467
  /* Missing optional operands have a value of zero.  */
1468
261
  if (*invalid < 0)
1469
75
    return 0;
1470
1471
186
  uint64_t value = (insn >> 16) & 0x3;
1472
1473
  /* For WAIT, some PL values are illegal.  */
1474
186
  if (((insn >> 1) & 0x3ff) == 30
1475
186
      && value != 0)
1476
10
    *invalid = 1;
1477
186
  return value;
1478
261
}
1479
1480
/* The 2-bit P field in a MMA XX2-form instruction.  This is split.  */
1481
1482
static uint64_t
1483
insert_p2 (uint64_t insn,
1484
     int64_t value,
1485
     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1486
     const char **errmsg ATTRIBUTE_UNUSED)
1487
0
{
1488
0
  return insn | ((value & 0x2) << 15) | ((value & 0x1) << 11);
1489
0
}
1490
1491
static int64_t
1492
extract_p2 (uint64_t insn,
1493
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1494
      int *invalid ATTRIBUTE_UNUSED)
1495
38
{
1496
38
  uint64_t value = ((insn >> 15) & 0x2) | ((insn >> 11) & 0x1);
1497
38
  return value;
1498
38
}
1499
1500
/* The RA field in a D or X form instruction which is an updating
1501
   load, which means that the RA field may not be zero and may not
1502
   equal the RT field.  */
1503
1504
static uint64_t
1505
insert_ral (uint64_t insn,
1506
      int64_t value,
1507
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1508
      const char **errmsg)
1509
0
{
1510
0
  if (value == 0
1511
0
      || (uint64_t) value == ((insn >> 21) & 0x1f))
1512
0
    *errmsg = "invalid register operand when updating";
1513
0
  return insn | ((value & 0x1f) << 16);
1514
0
}
1515
1516
static int64_t
1517
extract_ral (uint64_t insn,
1518
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1519
       int *invalid)
1520
229k
{
1521
229k
  int64_t rtvalue = (insn >> 21) & 0x1f;
1522
229k
  int64_t ravalue = (insn >> 16) & 0x1f;
1523
1524
229k
  if (rtvalue == ravalue || ravalue == 0)
1525
26.5k
    *invalid = 1;
1526
229k
  return ravalue;
1527
229k
}
1528
1529
/* The RA field in an lmw instruction, which has special value
1530
   restrictions.  */
1531
1532
static uint64_t
1533
insert_ram (uint64_t insn,
1534
      int64_t value,
1535
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1536
      const char **errmsg)
1537
0
{
1538
0
  if ((uint64_t) value >= ((insn >> 21) & 0x1f))
1539
0
    *errmsg = _("index register in load range");
1540
0
  return insn | ((value & 0x1f) << 16);
1541
0
}
1542
1543
static int64_t
1544
extract_ram (uint64_t insn,
1545
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1546
       int *invalid)
1547
49.5k
{
1548
49.5k
  uint64_t rtvalue = (insn >> 21) & 0x1f;
1549
49.5k
  uint64_t ravalue = (insn >> 16) & 0x1f;
1550
1551
49.5k
  if (ravalue >= rtvalue)
1552
22.6k
    *invalid = 1;
1553
49.5k
  return ravalue;
1554
49.5k
}
1555
1556
/* The RA field in the DQ form lq or an lswx instruction, which have special
1557
   value restrictions.  */
1558
1559
static uint64_t
1560
insert_raq (uint64_t insn,
1561
      int64_t value,
1562
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1563
      const char **errmsg)
1564
0
{
1565
0
  int64_t rtvalue = (insn >> 21) & 0x1f;
1566
1567
0
  if (value == rtvalue)
1568
0
    *errmsg = _("source and target register operands must be different");
1569
0
  return insn | ((value & 0x1f) << 16);
1570
0
}
1571
1572
static int64_t
1573
extract_raq (uint64_t insn,
1574
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1575
       int *invalid)
1576
54.3k
{
1577
  /* Missing optional operands have a value of zero.  */
1578
54.3k
  if (*invalid < 0)
1579
114
    return 0;
1580
1581
54.1k
  uint64_t rtvalue = (insn >> 21) & 0x1f;
1582
54.1k
  uint64_t ravalue = (insn >> 16) & 0x1f;
1583
54.1k
  if (ravalue == rtvalue)
1584
2.72k
    *invalid = 1;
1585
54.1k
  return ravalue;
1586
54.3k
}
1587
1588
/* The RA field in a D or X form instruction which is an updating
1589
   store or an updating floating point load, which means that the RA
1590
   field may not be zero.  */
1591
1592
static uint64_t
1593
insert_ras (uint64_t insn,
1594
      int64_t value,
1595
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1596
      const char **errmsg)
1597
0
{
1598
0
  if (value == 0)
1599
0
    *errmsg = _("invalid register operand when updating");
1600
0
  return insn | ((value & 0x1f) << 16);
1601
0
}
1602
1603
static int64_t
1604
extract_ras (uint64_t insn,
1605
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1606
       int *invalid)
1607
323k
{
1608
323k
  uint64_t ravalue = (insn >> 16) & 0x1f;
1609
1610
323k
  if (ravalue == 0)
1611
25.0k
    *invalid = 1;
1612
323k
  return ravalue;
1613
323k
}
1614
1615
/* The RS and RB fields in an X form instruction when they must be the same.
1616
   This is used for extended mnemonics like mr.  The extraction function
1617
   enforces that the fields are the same.  */
1618
1619
static uint64_t
1620
insert_rsb (uint64_t insn,
1621
      int64_t value,
1622
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1623
      const char **errmsg ATTRIBUTE_UNUSED)
1624
0
{
1625
0
  value &= 0x1f;
1626
0
  return insn | (value << 21) | (value << 11);
1627
0
}
1628
1629
static int64_t
1630
extract_rsb (uint64_t insn,
1631
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1632
       int *invalid)
1633
50.8k
{
1634
50.8k
  int64_t rs = (insn >> 21) & 0x1f;
1635
50.8k
  int64_t rb = (insn >> 11) & 0x1f;
1636
1637
50.8k
  if (rs != rb)
1638
290
    *invalid = 1;
1639
50.8k
  return rs;
1640
50.8k
}
1641
1642
/* The RB field in an lswx instruction, which has special value
1643
   restrictions.  */
1644
1645
static uint64_t
1646
insert_rbx (uint64_t insn,
1647
      int64_t value,
1648
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1649
      const char **errmsg)
1650
0
{
1651
0
  int64_t rtvalue = (insn >> 21) & 0x1f;
1652
1653
0
  if (value == rtvalue)
1654
0
    *errmsg = _("source and target register operands must be different");
1655
0
  return insn | ((value & 0x1f) << 11);
1656
0
}
1657
1658
static int64_t
1659
extract_rbx (uint64_t insn,
1660
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1661
       int *invalid)
1662
48
{
1663
48
  uint64_t rtvalue = (insn >> 21) & 0x1f;
1664
48
  uint64_t rbvalue = (insn >> 11) & 0x1f;
1665
1666
48
  if (rbvalue == rtvalue)
1667
20
    *invalid = 1;
1668
48
  return rbvalue;
1669
48
}
1670
1671
/* The SCI8 field is made up of SCL and {U,N}I8 fields.  */
1672
static uint64_t
1673
insert_sci8 (uint64_t insn,
1674
       int64_t value,
1675
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1676
       const char **errmsg)
1677
0
{
1678
0
  uint64_t fill_scale = 0;
1679
0
  uint64_t ui8 = value;
1680
1681
0
  if ((ui8 & 0xffffff00) == 0)
1682
0
    ;
1683
0
  else if ((ui8 & 0xffffff00) == 0xffffff00)
1684
0
    fill_scale = 0x400;
1685
0
  else if ((ui8 & 0xffff00ff) == 0)
1686
0
    {
1687
0
      fill_scale = 1 << 8;
1688
0
      ui8 >>= 8;
1689
0
    }
1690
0
  else if ((ui8 & 0xffff00ff) == 0xffff00ff)
1691
0
    {
1692
0
      fill_scale = 0x400 | (1 << 8);
1693
0
      ui8 >>= 8;
1694
0
    }
1695
0
  else if ((ui8 & 0xff00ffff) == 0)
1696
0
    {
1697
0
      fill_scale = 2 << 8;
1698
0
      ui8 >>= 16;
1699
0
    }
1700
0
  else if ((ui8 & 0xff00ffff) == 0xff00ffff)
1701
0
    {
1702
0
      fill_scale = 0x400 | (2 << 8);
1703
0
      ui8 >>= 16;
1704
0
    }
1705
0
  else if ((ui8 & 0x00ffffff) == 0)
1706
0
    {
1707
0
      fill_scale = 3 << 8;
1708
0
      ui8 >>= 24;
1709
0
    }
1710
0
  else if ((ui8 & 0x00ffffff) == 0x00ffffff)
1711
0
    {
1712
0
      fill_scale = 0x400 | (3 << 8);
1713
0
      ui8 >>= 24;
1714
0
    }
1715
0
  else
1716
0
    {
1717
0
      *errmsg = _("illegal immediate value");
1718
0
      ui8 = 0;
1719
0
    }
1720
1721
0
  return insn | fill_scale | (ui8 & 0xff);
1722
0
}
1723
1724
static int64_t
1725
extract_sci8 (uint64_t insn,
1726
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1727
        int *invalid ATTRIBUTE_UNUSED)
1728
0
{
1729
0
  int64_t fill = insn & 0x400;
1730
0
  int64_t scale_factor = (insn & 0x300) >> 5;
1731
0
  int64_t value = (insn & 0xff) << scale_factor;
1732
1733
0
  if (fill != 0)
1734
0
    value |= ~((int64_t) 0xff << scale_factor);
1735
0
  return value;
1736
0
}
1737
1738
static uint64_t
1739
insert_sci8n (uint64_t insn,
1740
        int64_t value,
1741
        ppc_cpu_t dialect,
1742
        const char **errmsg)
1743
0
{
1744
0
  return insert_sci8 (insn, -value, dialect, errmsg);
1745
0
}
1746
1747
static int64_t
1748
extract_sci8n (uint64_t insn,
1749
         ppc_cpu_t dialect,
1750
         int *invalid)
1751
0
{
1752
0
  return -extract_sci8 (insn, dialect, invalid);
1753
0
}
1754
1755
static uint64_t
1756
insert_oimm (uint64_t insn,
1757
       int64_t value,
1758
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1759
       const char **errmsg ATTRIBUTE_UNUSED)
1760
0
{
1761
0
  return insn | (((value - 1) & 0x1f) << 4);
1762
0
}
1763
1764
static int64_t
1765
extract_oimm (uint64_t insn,
1766
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1767
        int *invalid ATTRIBUTE_UNUSED)
1768
0
{
1769
0
  return ((insn >> 4) & 0x1f) + 1;
1770
0
}
1771
1772
/* The n operand of rotrwi, sets SH = 32 - n.  */
1773
1774
static uint64_t
1775
insert_rrwn (uint64_t insn,
1776
       int64_t value,
1777
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1778
       const char **errmsg ATTRIBUTE_UNUSED)
1779
0
{
1780
0
  return insn | ((-value & 0x1f) << 11);
1781
0
}
1782
1783
static int64_t
1784
extract_rrwn (uint64_t insn,
1785
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1786
        int *invalid ATTRIBUTE_UNUSED)
1787
0
{
1788
0
  return 31 & -(insn >> 11);
1789
0
}
1790
1791
/* The n operand of slwi, sets SH = n and ME = 31 - n.  */
1792
1793
static uint64_t
1794
insert_slwn (uint64_t insn,
1795
       int64_t value,
1796
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1797
       const char **errmsg ATTRIBUTE_UNUSED)
1798
0
{
1799
0
  return insn | ((value & 0x1f) << 11) | ((~value & 0x1f) << 1);
1800
0
}
1801
1802
static int64_t
1803
extract_slwn (uint64_t insn,
1804
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1805
        int *invalid)
1806
4.41k
{
1807
4.41k
  int64_t sh = (insn >> 11) & 0x1f;
1808
4.41k
  int64_t nme = ~(insn >> 1) & 0x1f;
1809
4.41k
  if (sh != nme)
1810
1.19k
    *invalid = 1;
1811
4.41k
  return sh;
1812
4.41k
}
1813
1814
/* The n operand of srwi, sets SH = 32 - n and MB = n.  */
1815
1816
static uint64_t
1817
insert_srwn (uint64_t insn,
1818
       int64_t value,
1819
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1820
       const char **errmsg ATTRIBUTE_UNUSED)
1821
0
{
1822
0
  return insn | ((-value & 0x1f) << 11) | ((value & 0x1f) << 6);
1823
0
}
1824
1825
static int64_t
1826
extract_srwn (uint64_t insn,
1827
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1828
        int *invalid)
1829
1.79k
{
1830
1.79k
  int64_t nsh = -(insn >> 11) & 0x1f;
1831
1.79k
  int64_t mb = (insn >> 6) & 0x1f;
1832
1.79k
  if (nsh != mb)
1833
1.02k
    *invalid = 1;
1834
1.79k
  return nsh;
1835
1.79k
}
1836
1837
/* The SH field in an MD form instruction.  This is split.  */
1838
1839
static uint64_t
1840
insert_sh6 (uint64_t insn,
1841
      int64_t value,
1842
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1843
      const char **errmsg ATTRIBUTE_UNUSED)
1844
0
{
1845
0
  return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
1846
0
}
1847
1848
static int64_t
1849
extract_sh6 (uint64_t insn,
1850
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1851
       int *invalid ATTRIBUTE_UNUSED)
1852
45.5k
{
1853
45.5k
  return ((insn >> 11) & 0x1f) | ((insn << 4) & 0x20);
1854
45.5k
}
1855
1856
/* The n operand of rotrdi, which writes to SH field.  */
1857
1858
static uint64_t
1859
insert_rrdn (uint64_t insn,
1860
       int64_t value,
1861
       ppc_cpu_t dialect,
1862
       const char **errmsg)
1863
0
{
1864
0
  return insert_sh6 (insn, -value, dialect, errmsg);
1865
0
}
1866
1867
static int64_t
1868
extract_rrdn (uint64_t insn,
1869
        ppc_cpu_t dialect,
1870
        int *invalid)
1871
3.82k
{
1872
3.82k
  return -extract_sh6 (insn, dialect, invalid) & 63;
1873
3.82k
}
1874
1875
/* The n operand of sldi, which writes to SH and ME fields.  */
1876
1877
static uint64_t
1878
insert_sldn (uint64_t insn,
1879
       int64_t value,
1880
       ppc_cpu_t dialect,
1881
       const char **errmsg)
1882
0
{
1883
0
  insn = insert_sh6 (insn, value, dialect, errmsg);
1884
0
  return insert_crdn (insn, value, dialect, errmsg);
1885
0
}
1886
1887
static int64_t
1888
extract_sldn (uint64_t insn,
1889
        ppc_cpu_t dialect,
1890
        int *invalid)
1891
4.09k
{
1892
4.09k
  int64_t sh = extract_sh6 (insn, dialect, invalid);
1893
4.09k
  int64_t me = extract_crdn (insn, dialect, invalid);
1894
4.09k
  if (me != sh)
1895
3.89k
    *invalid = 1;
1896
4.09k
  return sh;
1897
4.09k
}
1898
1899
/* The n operand of srdi, which writes to SH and MB fields.  */
1900
1901
static uint64_t
1902
insert_srdn (uint64_t insn,
1903
       int64_t value,
1904
       ppc_cpu_t dialect,
1905
       const char **errmsg)
1906
0
{
1907
0
  insn = insert_rrdn (insn, value, dialect, errmsg);
1908
0
  return insert_mb6 (insn, value, dialect, errmsg);
1909
0
}
1910
1911
static int64_t
1912
extract_srdn (uint64_t insn,
1913
        ppc_cpu_t dialect,
1914
        int *invalid)
1915
3.82k
{
1916
3.82k
  int64_t sh = extract_rrdn (insn, dialect, invalid);
1917
3.82k
  int64_t mb = extract_mb6 (insn, dialect, invalid);
1918
3.82k
  if (mb != sh)
1919
3.73k
    *invalid = 1;
1920
3.82k
  return sh;
1921
3.82k
}
1922
1923
/* The b operand of extrdi, which sets SH field.  */
1924
1925
static uint64_t
1926
insert_erdb (uint64_t insn,
1927
       int64_t value,
1928
       ppc_cpu_t dialect,
1929
       const char **errmsg)
1930
0
{
1931
0
  int64_t n = extract_erdn (insn, dialect, NULL);
1932
0
  return insert_sh6 (insn, value + n, dialect, errmsg);
1933
0
}
1934
1935
static int64_t
1936
extract_erdb (uint64_t insn,
1937
        ppc_cpu_t dialect,
1938
        int *invalid)
1939
0
{
1940
0
  int64_t sh = extract_sh6 (insn, dialect, invalid);
1941
0
  int64_t n = extract_erdn (insn, dialect, invalid);
1942
0
  return (sh - n) & 63;
1943
0
}
1944
1945
/* The b and n operands of clrlsldi.  */
1946
1947
static uint64_t
1948
insert_csldn (uint64_t insn,
1949
        int64_t value,
1950
        ppc_cpu_t dialect,
1951
        const char **errmsg)
1952
0
{
1953
0
  uint64_t mb6 = 0x3f << 5;
1954
0
  int64_t b = extract_mb6 (insn, dialect, NULL);
1955
0
  insn = insert_mb6 (insn & ~mb6, b - value, dialect, errmsg);
1956
0
  return insert_sh6 (insn, value, dialect, errmsg);
1957
0
}
1958
1959
static int64_t
1960
extract_csldb (uint64_t insn,
1961
         ppc_cpu_t dialect,
1962
         int *invalid)
1963
0
{
1964
0
  int64_t sh = extract_sh6 (insn, dialect, invalid);
1965
0
  int64_t mb = extract_mb6 (insn, dialect, invalid);
1966
0
  return (mb + sh) & 63;
1967
0
}
1968
1969
/* The b and n operands of insrdi.  */
1970
1971
static uint64_t
1972
insert_irdb (uint64_t insn,
1973
       int64_t value,
1974
       ppc_cpu_t dialect,
1975
       const char **errmsg)
1976
0
{
1977
0
  uint64_t sh6 = (0x1f << 11) | 2;
1978
0
  int64_t n = extract_sh6 (insn, dialect, NULL);
1979
0
  insn = insert_sh6 (insn & ~sh6, -(value + n), dialect, errmsg);
1980
0
  return insert_mb6 (insn, value, dialect, errmsg);
1981
0
}
1982
1983
static int64_t
1984
extract_irdn (uint64_t insn,
1985
        ppc_cpu_t dialect,
1986
        int *invalid)
1987
0
{
1988
0
  int64_t sh = extract_sh6 (insn, dialect, invalid);
1989
0
  int64_t mb = extract_mb6 (insn, dialect, invalid);
1990
0
  return (~(mb + sh) & 63) + 1;
1991
0
}
1992
1993
/* The SPR field in an XFX form instruction.  This is flipped--the
1994
   lower 5 bits are stored in the upper 5 and vice- versa.  */
1995
1996
static uint64_t
1997
insert_spr (uint64_t insn,
1998
      int64_t value,
1999
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2000
      const char **errmsg ATTRIBUTE_UNUSED)
2001
0
{
2002
0
  return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
2003
0
}
2004
2005
static int64_t
2006
extract_spr (uint64_t insn,
2007
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2008
       int *invalid ATTRIBUTE_UNUSED)
2009
732
{
2010
732
  return ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
2011
732
}
2012
2013
/* Some dialects have 8 [DI]BAT registers instead of the standard 4.  */
2014
20
#define ALLOW8_BAT (PPC_OPCODE_750)
2015
2016
static uint64_t
2017
insert_sprbat (uint64_t insn,
2018
         int64_t value,
2019
         ppc_cpu_t dialect,
2020
         const char **errmsg)
2021
0
{
2022
0
  if ((uint64_t) value > 7
2023
0
      || ((uint64_t) value > 3 && (dialect & ALLOW8_BAT) == 0))
2024
0
    *errmsg = _("invalid bat number");
2025
2026
  /* If this is [di]bat4..7 then use spr 560..575, otherwise 528..543.  */
2027
0
  if ((uint64_t) value > 3)
2028
0
    value = ((value & 3) << 6) | 1;
2029
0
  else
2030
0
    value = value << 6;
2031
2032
0
  return insn | (value << 11);
2033
0
}
2034
2035
static int64_t
2036
extract_sprbat (uint64_t insn,
2037
    ppc_cpu_t dialect,
2038
    int *invalid)
2039
38
{
2040
38
  uint64_t val = (insn >> 17) & 0x3;
2041
2042
38
  val = val + ((insn >> 9) & 0x4);
2043
38
  if (val > 3 && (dialect & ALLOW8_BAT) == 0)
2044
20
    *invalid = 1;
2045
38
  return val;
2046
38
}
2047
2048
/* Some dialects have 8 SPRG registers instead of the standard 4.  */
2049
615
#define ALLOW8_SPRG (PPC_OPCODE_BOOKE | PPC_OPCODE_405)
2050
2051
static uint64_t
2052
insert_sprg (uint64_t insn,
2053
       int64_t value,
2054
       ppc_cpu_t dialect,
2055
       const char **errmsg)
2056
0
{
2057
0
  if ((uint64_t) value > 7
2058
0
      || ((uint64_t) value > 3 && (dialect & ALLOW8_SPRG) == 0))
2059
0
    *errmsg = _("invalid sprg number");
2060
2061
  /* If this is mfsprg4..7 then use spr 260..263 which can be read in
2062
     user mode.  Anything else must use spr 272..279.  */
2063
0
  if ((uint64_t) value <= 3 || (insn & 0x100) != 0)
2064
0
    value |= 0x10;
2065
2066
0
  return insn | ((value & 0x17) << 16);
2067
0
}
2068
2069
static int64_t
2070
extract_sprg (uint64_t insn,
2071
        ppc_cpu_t dialect,
2072
        int *invalid)
2073
647
{
2074
647
  uint64_t val = (insn >> 16) & 0x1f;
2075
2076
  /* mfsprg can use 260..263 and 272..279.  mtsprg only uses spr 272..279
2077
     If not BOOKE, 405 or VLE, then both use only 272..275.  */
2078
647
  if ((val - 0x10 > 3 && (dialect & ALLOW8_SPRG) == 0)
2079
647
      || (val - 0x10 > 7 && (insn & 0x100) != 0)
2080
647
      || val <= 3
2081
647
      || (val & 8) != 0)
2082
613
    *invalid = 1;
2083
647
  return val & 7;
2084
647
}
2085
2086
/* The TBR field in an XFX instruction.  This is just like SPR, but it
2087
   is optional.  */
2088
2089
static uint64_t
2090
insert_tbr (uint64_t insn,
2091
      int64_t value,
2092
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2093
      const char **errmsg)
2094
0
{
2095
0
  if (value != 268 && value != 269)
2096
0
    *errmsg = _("invalid tbr number");
2097
0
  return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
2098
0
}
2099
2100
static int64_t
2101
extract_tbr (uint64_t insn,
2102
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2103
       int *invalid)
2104
1.01k
{
2105
  /* Missing optional operands have a value of 268.  */
2106
1.01k
  if (*invalid < 0)
2107
194
    return 268;
2108
2109
816
  int64_t ret = ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
2110
816
  if (ret != 268 && ret != 269)
2111
428
    *invalid = 1;
2112
816
  return ret;
2113
1.01k
}
2114
2115
/* The XT and XS fields in an XX1 or XX3 form instruction.  This is split.  */
2116
2117
static uint64_t
2118
insert_xt6 (uint64_t insn,
2119
      int64_t value,
2120
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2121
      const char **errmsg ATTRIBUTE_UNUSED)
2122
0
{
2123
0
  return insn | ((value & 0x1f) << 21) | ((value & 0x20) >> 5);
2124
0
}
2125
2126
static int64_t
2127
extract_xt6 (uint64_t insn,
2128
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2129
       int *invalid ATTRIBUTE_UNUSED)
2130
80.5k
{
2131
80.5k
  return ((insn << 5) & 0x20) | ((insn >> 21) & 0x1f);
2132
80.5k
}
2133
2134
/* The XT and XS fields in an DQ form VSX instruction.  This is split.  */
2135
static uint64_t
2136
insert_xtq6 (uint64_t insn,
2137
       int64_t value,
2138
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2139
       const char **errmsg ATTRIBUTE_UNUSED)
2140
0
{
2141
0
  return insn | ((value & 0x1f) << 21) | ((value & 0x20) >> 2);
2142
0
}
2143
2144
static int64_t
2145
extract_xtq6 (uint64_t insn,
2146
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2147
        int *invalid ATTRIBUTE_UNUSED)
2148
13.0k
{
2149
13.0k
  return ((insn << 2) & 0x20) | ((insn >> 21) & 0x1f);
2150
13.0k
}
2151
2152
/* The 5-bit XAp field in an XX3 form instruction.  This is split.  */
2153
2154
static uint64_t
2155
insert_xa5 (uint64_t insn,
2156
      int64_t value,
2157
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2158
      const char **errmsg ATTRIBUTE_UNUSED)
2159
0
{
2160
0
  return insn | ((value & 0x1e) << 16) | ((value & 0x20) >> 3);
2161
0
}
2162
2163
static int64_t
2164
extract_xa5 (uint64_t insn,
2165
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2166
       int *invalid ATTRIBUTE_UNUSED)
2167
2.15k
{
2168
2.15k
  return ((insn << 3) & 0x20) | ((insn >> 16) & 0x1e);
2169
2.15k
}
2170
2171
/* The XA field in an XX3 form instruction.  This is split.  */
2172
2173
static uint64_t
2174
insert_xa6 (uint64_t insn,
2175
      int64_t value,
2176
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2177
      const char **errmsg ATTRIBUTE_UNUSED)
2178
0
{
2179
0
  return insn | ((value & 0x1f) << 16) | ((value & 0x20) >> 3);
2180
0
}
2181
2182
static int64_t
2183
extract_xa6 (uint64_t insn,
2184
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2185
       int *invalid ATTRIBUTE_UNUSED)
2186
77.6k
{
2187
77.6k
  return ((insn << 3) & 0x20) | ((insn >> 16) & 0x1f);
2188
77.6k
}
2189
2190
/* The XA field in an MMA XX3 form instruction.  This is split
2191
   and must not overlap with the ACC operand.  */
2192
2193
static uint64_t
2194
insert_xa6a (uint64_t insn,
2195
       int64_t value,
2196
       ppc_cpu_t dialect,
2197
       const char **errmsg)
2198
0
{
2199
0
  int64_t acc = (insn >> 23) & 0x7;
2200
  /* Power10 doesn't allow VSRs to overlap ACCs in MMA instructions.  */
2201
0
  if ((dialect & PPC_OPCODE_FUTURE) == 0
2202
0
      && (value >> 2) == acc)
2203
0
    *errmsg = _("VSR overlaps ACC operand");
2204
0
  return insert_xa6 (insn, value, dialect, errmsg);
2205
0
}
2206
2207
static int64_t
2208
extract_xa6a (uint64_t insn,
2209
        ppc_cpu_t dialect,
2210
        int *invalid)
2211
916
{
2212
916
  int64_t acc = (insn >> 23) & 0x7;
2213
916
  int64_t value = extract_xa6 (insn, dialect, invalid);
2214
  /* Power10 doesn't allow VSRs to overlap ACCs in MMA instructions.  */
2215
916
  if ((dialect & PPC_OPCODE_FUTURE) == 0
2216
916
      && (value >> 2) == acc)
2217
148
    *invalid = 1;
2218
916
  return value;
2219
916
}
2220
2221
/* The 5-bit XB field in an XX3 form instruction.  This is split.  */
2222
2223
static uint64_t
2224
insert_xb5 (uint64_t insn,
2225
      int64_t value,
2226
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2227
      const char **errmsg ATTRIBUTE_UNUSED)
2228
0
{
2229
0
  return insn | ((value & 0x1e) << 11) | ((value & 0x20) >> 4);
2230
0
}
2231
2232
static int64_t
2233
extract_xb5 (uint64_t insn,
2234
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2235
       int *invalid ATTRIBUTE_UNUSED)
2236
40
{
2237
40
  return ((insn << 4) & 0x20) | ((insn >> 11) & 0x1e);
2238
40
}
2239
/* The XB field in an XX3 form instruction.  This is split.  */
2240
2241
static uint64_t
2242
insert_xb6 (uint64_t insn,
2243
      int64_t value,
2244
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2245
      const char **errmsg ATTRIBUTE_UNUSED)
2246
0
{
2247
0
  return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
2248
0
}
2249
2250
static int64_t
2251
extract_xb6 (uint64_t insn,
2252
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2253
       int *invalid ATTRIBUTE_UNUSED)
2254
82.2k
{
2255
82.2k
  return ((insn << 4) & 0x20) | ((insn >> 11) & 0x1f);
2256
82.2k
}
2257
2258
/* The XB field in an MMA XX3 form instruction.  This is split
2259
   and must not overlap with the ACC operand.  */
2260
2261
static uint64_t
2262
insert_xb6a (uint64_t insn,
2263
       int64_t value,
2264
       ppc_cpu_t dialect,
2265
       const char **errmsg)
2266
0
{
2267
0
  int64_t acc = (insn >> 23) & 0x7;
2268
  /* Power10 doesn't allow VSRs to overlap ACCs in MMA instructions.  */
2269
0
  if ((dialect & PPC_OPCODE_FUTURE) == 0
2270
0
      && (value >> 2) == acc)
2271
0
    *errmsg = _("VSR overlaps ACC operand");
2272
0
  return insert_xb6 (insn, value, dialect, errmsg);
2273
0
}
2274
2275
static int64_t
2276
extract_xb6a (uint64_t insn,
2277
        ppc_cpu_t dialect,
2278
        int *invalid)
2279
916
{
2280
916
  int64_t acc = (insn >> 23) & 0x7;
2281
916
  int64_t value = extract_xb6 (insn, dialect, invalid);
2282
  /* Power10 doesn't allow VSRs to overlap ACCs in MMA instructions.  */
2283
916
  if ((dialect & PPC_OPCODE_FUTURE) == 0
2284
916
      && (value >> 2) == acc)
2285
44
    *invalid = 1;
2286
916
  return value;
2287
916
}
2288
2289
/* The XA and XB fields in an XX3 form instruction when they must be the same.
2290
   This is used for extended mnemonics like xvmovdp.  The extraction function
2291
   enforces that the fields are the same.  */
2292
2293
static uint64_t
2294
insert_xab6 (uint64_t insn,
2295
       int64_t value,
2296
       ppc_cpu_t dialect,
2297
       const char **errmsg)
2298
0
{
2299
0
  return insert_xa6 (insn, value, dialect, errmsg)
2300
0
   | insert_xb6 (insn, value, dialect, errmsg);
2301
0
}
2302
2303
static int64_t
2304
extract_xab6 (uint64_t insn,
2305
        ppc_cpu_t dialect,
2306
        int *invalid)
2307
1.52k
{
2308
1.52k
  int64_t xa6 = extract_xa6 (insn, dialect, invalid);
2309
1.52k
  int64_t xb6 = extract_xb6 (insn, dialect, invalid);
2310
2311
1.52k
  if (xa6 != xb6)
2312
1.40k
    *invalid = 1;
2313
1.52k
  return xa6;
2314
1.52k
}
2315
2316
/* The XC field in an XX4 form instruction.  This is split.  */
2317
2318
static uint64_t
2319
insert_xc6 (uint64_t insn,
2320
      int64_t value,
2321
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2322
      const char **errmsg ATTRIBUTE_UNUSED)
2323
0
{
2324
0
  return insn | ((value & 0x1f) << 6) | ((value & 0x20) >> 2);
2325
0
}
2326
2327
static int64_t
2328
extract_xc6 (uint64_t insn,
2329
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2330
       int *invalid ATTRIBUTE_UNUSED)
2331
26.1k
{
2332
26.1k
  return ((insn << 2) & 0x20) | ((insn >> 6) & 0x1f);
2333
26.1k
}
2334
2335
/* The split XTp and XSp field in a vector paired insn.  */
2336
2337
static uint64_t
2338
insert_xtp (uint64_t insn,
2339
      int64_t value,
2340
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2341
      const char **errmsg ATTRIBUTE_UNUSED)
2342
0
{
2343
0
  return insn | ((value & 0x1e) << 21) | ((value & 0x20) << (21 - 5));
2344
0
}
2345
2346
static int64_t
2347
extract_xtp (uint64_t insn,
2348
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2349
       int *invalid ATTRIBUTE_UNUSED)
2350
13.2k
{
2351
13.2k
  return ((insn >> (21 - 5)) & 0x20) | ((insn >> 21) & 0x1e);
2352
13.2k
}
2353
2354
/* The split XT field in a vector splat insn.  */
2355
2356
static uint64_t
2357
insert_xts (uint64_t insn,
2358
      int64_t value,
2359
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2360
      const char **errmsg ATTRIBUTE_UNUSED)
2361
0
{
2362
0
  return insn | ((value & 0x1f) << 21) | ((value & 0x20) << (16 - 5));
2363
0
}
2364
2365
static int64_t
2366
extract_xts (uint64_t insn,
2367
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2368
       int *invalid ATTRIBUTE_UNUSED)
2369
26
{
2370
26
  return ((insn >> (16 - 5)) & 0x20) | ((insn >> 21) & 0x1f);
2371
26
}
2372
2373
static uint64_t
2374
insert_dm (uint64_t insn,
2375
     int64_t value,
2376
     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2377
     const char **errmsg)
2378
0
{
2379
0
  if (value != 0 && value != 1)
2380
0
    *errmsg = _("invalid constant");
2381
0
  return insn | (((value) ? 3 : 0) << 8);
2382
0
}
2383
2384
static int64_t
2385
extract_dm (uint64_t insn,
2386
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2387
      int *invalid)
2388
792
{
2389
792
  int64_t value = (insn >> 8) & 3;
2390
792
  if (value != 0 && value != 3)
2391
357
    *invalid = 1;
2392
792
  return (value) ? 1 : 0;
2393
792
}
2394
2395
/* The VLESIMM field in an I16A form instruction.  This is split.  */
2396
2397
static uint64_t
2398
insert_vlesi (uint64_t insn,
2399
        int64_t value,
2400
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2401
        const char **errmsg ATTRIBUTE_UNUSED)
2402
0
{
2403
0
  return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
2404
0
}
2405
2406
static int64_t
2407
extract_vlesi (uint64_t insn,
2408
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2409
         int *invalid ATTRIBUTE_UNUSED)
2410
0
{
2411
0
  int64_t value = ((insn >> 10) & 0xf800) | (insn & 0x7ff);
2412
0
  value = (value ^ 0x8000) - 0x8000;
2413
0
  return value;
2414
0
}
2415
2416
static uint64_t
2417
insert_vlensi (uint64_t insn,
2418
         int64_t value,
2419
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2420
         const char **errmsg ATTRIBUTE_UNUSED)
2421
0
{
2422
0
  value = -value;
2423
0
  return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
2424
0
}
2425
static int64_t
2426
extract_vlensi (uint64_t insn,
2427
    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2428
    int *invalid)
2429
0
{
2430
0
  int64_t value = ((insn >> 10) & 0xf800) | (insn & 0x7ff);
2431
0
  value = (value ^ 0x8000) - 0x8000;
2432
  /* Don't use for disassembly.  */
2433
0
  *invalid = 1;
2434
0
  return -value;
2435
0
}
2436
2437
/* The VLEUIMM field in an I16A form instruction.  This is split.  */
2438
2439
static uint64_t
2440
insert_vleui (uint64_t insn,
2441
        int64_t value,
2442
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2443
        const char **errmsg ATTRIBUTE_UNUSED)
2444
0
{
2445
0
  return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
2446
0
}
2447
2448
static int64_t
2449
extract_vleui (uint64_t insn,
2450
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2451
         int *invalid ATTRIBUTE_UNUSED)
2452
0
{
2453
0
  return ((insn >> 10) & 0xf800) | (insn & 0x7ff);
2454
0
}
2455
2456
/* The VLEUIMML field in an I16L form instruction.  This is split.  */
2457
2458
static uint64_t
2459
insert_vleil (uint64_t insn,
2460
        int64_t value,
2461
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2462
        const char **errmsg ATTRIBUTE_UNUSED)
2463
0
{
2464
0
  return insn | ((value & 0xf800) << 5) | (value & 0x7ff);
2465
0
}
2466
2467
static int64_t
2468
extract_vleil (uint64_t insn,
2469
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2470
         int *invalid ATTRIBUTE_UNUSED)
2471
0
{
2472
0
  return ((insn >> 5) & 0xf800) | (insn & 0x7ff);
2473
0
}
2474
2475
static uint64_t
2476
insert_evuimm1_ex0 (uint64_t insn,
2477
        int64_t value,
2478
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2479
        const char **errmsg)
2480
0
{
2481
0
  if (value <= 0 || value > 0x1f)
2482
0
    *errmsg = _("UIMM = 00000 is illegal");
2483
0
  return insn | ((value & 0x1f) << 11);
2484
0
}
2485
2486
static int64_t
2487
extract_evuimm1_ex0 (uint64_t insn,
2488
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2489
         int *invalid)
2490
81
{
2491
81
  int64_t value = ((insn >> 11) & 0x1f);
2492
81
  if (value == 0)
2493
79
    *invalid = 1;
2494
2495
81
  return value;
2496
81
}
2497
2498
static uint64_t
2499
insert_evuimm2_ex0 (uint64_t insn,
2500
        int64_t value,
2501
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2502
        const char **errmsg)
2503
0
{
2504
0
  if (value <= 0 || value > 0x3e)
2505
0
    *errmsg = _("UIMM = 00000 is illegal");
2506
0
  return insn | ((value & 0x3e) << 10);
2507
0
}
2508
2509
static int64_t
2510
extract_evuimm2_ex0 (uint64_t insn,
2511
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2512
         int *invalid)
2513
239
{
2514
239
  int64_t value = ((insn >> 10) & 0x3e);
2515
239
  if (value == 0)
2516
23
    *invalid = 1;
2517
2518
239
  return value;
2519
239
}
2520
2521
static uint64_t
2522
insert_evuimm4_ex0 (uint64_t insn,
2523
        int64_t value,
2524
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2525
        const char **errmsg)
2526
0
{
2527
0
  if (value <= 0 || value > 0x7c)
2528
0
    *errmsg = _("UIMM = 00000 is illegal");
2529
0
  return insn | ((value & 0x7c) << 9);
2530
0
}
2531
2532
static int64_t
2533
extract_evuimm4_ex0 (uint64_t insn,
2534
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2535
         int *invalid)
2536
302
{
2537
302
  int64_t value = ((insn >> 9) & 0x7c);
2538
302
  if (value == 0)
2539
134
    *invalid = 1;
2540
2541
302
  return value;
2542
302
}
2543
2544
static uint64_t
2545
insert_evuimm8_ex0 (uint64_t insn,
2546
        int64_t value,
2547
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2548
        const char **errmsg)
2549
0
{
2550
0
  if (value <= 0 || value > 0xf8)
2551
0
    *errmsg = _("UIMM = 00000 is illegal");
2552
0
  return insn | ((value & 0xf8) << 8);
2553
0
}
2554
2555
static int64_t
2556
extract_evuimm8_ex0 (uint64_t insn,
2557
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2558
         int *invalid)
2559
133
{
2560
133
  int64_t value = ((insn >> 8) & 0xf8);
2561
133
  if (value == 0)
2562
11
    *invalid = 1;
2563
2564
133
  return value;
2565
133
}
2566
2567
static uint64_t
2568
insert_evuimm_lt8 (uint64_t insn,
2569
       int64_t value,
2570
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2571
       const char **errmsg)
2572
0
{
2573
0
  if (value < 0 || value > 7)
2574
0
    *errmsg = _("UIMM values >7 are illegal");
2575
0
  return insn | ((value & 0x7) << 11);
2576
0
}
2577
2578
static int64_t
2579
extract_evuimm_lt8 (uint64_t insn,
2580
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2581
        int *invalid)
2582
203
{
2583
203
  int64_t value = ((insn >> 11) & 0x1f);
2584
203
  if (value > 7)
2585
203
    *invalid = 1;
2586
2587
203
  return value;
2588
203
}
2589
2590
static uint64_t
2591
insert_evuimm_lt16 (uint64_t insn,
2592
        int64_t value,
2593
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2594
        const char **errmsg)
2595
0
{
2596
0
  if (value < 0 || value > 15)
2597
0
    *errmsg = _("UIMM values >15 are illegal");
2598
0
  return insn | ((value & 0xf) << 11);
2599
0
}
2600
2601
static int64_t
2602
extract_evuimm_lt16 (uint64_t insn,
2603
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2604
         int *invalid)
2605
101
{
2606
101
  int64_t value = ((insn >> 11) & 0x1f);
2607
101
  if (value > 15)
2608
99
    *invalid = 1;
2609
2610
101
  return value;
2611
101
}
2612
2613
static uint64_t
2614
insert_rD_rS_even (uint64_t insn,
2615
       int64_t value,
2616
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2617
       const char **errmsg)
2618
0
{
2619
0
  if ((value & 0x1) != 0)
2620
0
    *errmsg = _("GPR odd is illegal");
2621
0
  return insn | ((value & 0x1e) << 21);
2622
0
}
2623
2624
static int64_t
2625
extract_rD_rS_even (uint64_t insn,
2626
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2627
        int *invalid)
2628
601
{
2629
601
  int64_t value = ((insn >> 21) & 0x1f);
2630
601
  if ((value & 0x1) != 0)
2631
112
    *invalid = 1;
2632
2633
601
  return value;
2634
601
}
2635
2636
static uint64_t
2637
insert_off_lsp (uint64_t insn,
2638
    int64_t value,
2639
    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2640
    const char **errmsg)
2641
0
{
2642
0
  if (value <= 0 || value > 0x3)
2643
0
    *errmsg = _("invalid offset");
2644
0
  return insn | (value & 0x3);
2645
0
}
2646
2647
static int64_t
2648
extract_off_lsp (uint64_t insn,
2649
     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2650
     int *invalid)
2651
0
{
2652
0
  int64_t value = (insn & 0x3);
2653
0
  if (value == 0)
2654
0
    *invalid = 1;
2655
2656
0
  return value;
2657
0
}
2658
2659
static uint64_t
2660
insert_off_spe2 (uint64_t insn,
2661
     int64_t value,
2662
     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2663
     const char **errmsg)
2664
0
{
2665
0
  if (value <= 0 || value > 0x7)
2666
0
    *errmsg = _("invalid offset");
2667
0
  return insn | (value & 0x7);
2668
0
}
2669
2670
static int64_t
2671
extract_off_spe2 (uint64_t insn,
2672
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2673
      int *invalid)
2674
21
{
2675
21
  int64_t value = (insn & 0x7);
2676
21
  if (value == 0)
2677
1
    *invalid = 1;
2678
2679
21
  return value;
2680
21
}
2681
2682
static uint64_t
2683
insert_Ddd (uint64_t insn,
2684
      int64_t value,
2685
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2686
      const char **errmsg)
2687
0
{
2688
0
  if (value < 0 || value > 0x7)
2689
0
    *errmsg = _("invalid Ddd value");
2690
0
  return insn | ((value & 0x3) << 11) | ((value & 0x4) >> 2);
2691
0
}
2692
2693
static int64_t
2694
extract_Ddd (uint64_t insn,
2695
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2696
       int *invalid ATTRIBUTE_UNUSED)
2697
362
{
2698
362
  return ((insn >> 11) & 0x3) | ((insn << 2) & 0x4);
2699
362
}
2700
2701
static uint64_t
2702
insert_sxl (uint64_t insn,
2703
      int64_t value,
2704
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2705
      const char **errmsg ATTRIBUTE_UNUSED)
2706
0
{
2707
0
  return insn | ((value & 0x1) << 11);
2708
0
}
2709
2710
static int64_t
2711
extract_sxl (uint64_t insn,
2712
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2713
       int *invalid)
2714
0
{
2715
  /* Missing optional operands have a value of one.  */
2716
0
  if (*invalid < 0)
2717
0
    return 1;
2718
0
  return (insn >> 11) & 0x1;
2719
0
}
2720
2721
/* The list of embedded processors that use the embedded operand ordering
2722
   for the 3 operand dcbt and dcbtst instructions.  */
2723
263
#define DCBT_EO (PPC_OPCODE_E500 | PPC_OPCODE_E500MC | PPC_OPCODE_476 \
2724
263
     | PPC_OPCODE_A2)
2725
2726
/* ISA 2.03 and later specify extended mnemonics dcbtct, dcbtds, and
2727
   dcbtstct, dcbtstds with a note saying these should be used in new
2728
   programs rather than the base mnemonics "so that it can be coded
2729
   with TH as the last operand for all categories".  For that reason
2730
   the extended mnemonics are enabled in the assembler for the
2731
   embedded processors, but not for the disassembler so as to display
2732
   the embedded dcbt or dcbtst expected form with TH first for
2733
   embedded programmers.  */
2734
2735
static uint64_t
2736
insert_thct (uint64_t insn,
2737
      int64_t value,
2738
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2739
      const char **errmsg)
2740
0
{
2741
0
  if ((uint64_t) value > 7)
2742
0
    *errmsg = _("invalid TH value");
2743
0
  return insn | ((value & 7) << 21);
2744
0
}
2745
2746
static int64_t
2747
extract_thct (uint64_t insn,
2748
        ppc_cpu_t dialect,
2749
        int *invalid)
2750
188
{
2751
  /* Missing optional operands have a value of 0.  */
2752
188
  if (*invalid < 0)
2753
28
    return 0;
2754
2755
160
  int64_t value = (insn >> 21) & 0x1f;
2756
160
  if (value > 7 || (dialect & DCBT_EO) != 0)
2757
76
    *invalid = 1;
2758
2759
160
  return value;
2760
188
}
2761
2762
static uint64_t
2763
insert_thds (uint64_t insn,
2764
       int64_t value,
2765
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2766
       const char **errmsg)
2767
0
{
2768
0
  if (value < 8 || value > 15)
2769
0
    *errmsg = _("invalid TH value");
2770
0
  return insn | ((value & 0x1f) << 21);
2771
0
}
2772
2773
static int64_t
2774
extract_thds (uint64_t insn,
2775
        ppc_cpu_t dialect,
2776
        int *invalid)
2777
255
{
2778
  /* Missing optional operands have a value of 8.  */
2779
255
  if (*invalid < 0)
2780
60
    return 8;
2781
2782
195
  int64_t value = (insn >> 21) & 0x1f;
2783
195
  if (value < 8 || value > 15 || (dialect & DCBT_EO) != 0)
2784
16
    *invalid = 1;
2785
2786
195
  return value;
2787
255
}
2788

2789
/* The operands table.
2790
2791
   The fields are bitm, shift, insert, extract, flags.
2792
2793
   We used to put parens around the various additions, like the one
2794
   for BA just below.  However, that caused trouble with feeble
2795
   compilers with a limit on depth of a parenthesized expression, like
2796
   (reportedly) the compiler in Microsoft Developer Studio 5.  So we
2797
   omit the parens, since the macros are never used in a context where
2798
   the addition will be ambiguous.  */
2799
2800
const struct powerpc_operand powerpc_operands[] =
2801
{
2802
  /* The zero index is used to indicate the end of the list of
2803
     operands.  */
2804
#define UNUSED 0
2805
  { 0, 0, NULL, NULL, 0 },
2806
2807
  /* The BA field in an XL form instruction.  */
2808
#define BA UNUSED + 1
2809
  /* The BI field in a B form or XL form instruction.  */
2810
#define BI BA
2811
#define BI_MASK (0x1f << 16)
2812
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_CR_BIT },
2813
2814
  /* The BT, BA and BB fields in a XL form instruction when they must all
2815
     be the same.  */
2816
#define BTAB BA + 1
2817
  { 0x1f, 21, insert_btab, extract_btab, PPC_OPERAND_CR_BIT },
2818
2819
  /* The BB field in an XL form instruction.  */
2820
#define BB BTAB + 1
2821
#define BB_MASK (0x1f << 11)
2822
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_CR_BIT },
2823
2824
  /* The BA and BB fields in a XL form instruction when they must be
2825
     the same.  */
2826
#define BAB BB + 1
2827
  { 0x1f, 16, insert_bab, extract_bab, PPC_OPERAND_CR_BIT },
2828
2829
  /* The VRA and VRB fields in a VX form instruction when they must be the same.
2830
     This is used for extended mnemonics like vmr.  */
2831
#define VAB BAB + 1
2832
  { 0x1f, 16, insert_bab, extract_bab, PPC_OPERAND_VR },
2833
2834
  /* The RA and RB fields in a VX form instruction when they must be the same.
2835
     This is used for extended mnemonics like evmr.  */
2836
#define RAB VAB + 1
2837
  { 0x1f, 16, insert_bab, extract_bab, PPC_OPERAND_GPR },
2838
2839
#define BC RAB + 1
2840
  { 0x1f, 6, NULL, NULL, PPC_OPERAND_CR_BIT },
2841
2842
  /* The BD field in a B form instruction.  The lower two bits are
2843
     forced to zero.  */
2844
#define BD BC + 1
2845
  { 0xfffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
2846
2847
  /* The BD field in a B form instruction when absolute addressing is
2848
     used.  */
2849
#define BDA BD + 1
2850
  { 0xfffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
2851
2852
  /* The BD field in a B form instruction when the - modifier is used.
2853
     This sets the y bit of the BO field appropriately.  */
2854
#define BDM BDA + 1
2855
  { 0xfffc, 0, insert_bdm, extract_bdm,
2856
    PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
2857
2858
  /* The BD field in a B form instruction when the - modifier is used
2859
     and absolute address is used.  */
2860
#define BDMA BDM + 1
2861
  { 0xfffc, 0, insert_bdm, extract_bdm,
2862
    PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
2863
2864
  /* The BD field in a B form instruction when the + modifier is used.
2865
     This sets the y bit of the BO field appropriately.  */
2866
#define BDP BDMA + 1
2867
  { 0xfffc, 0, insert_bdp, extract_bdp,
2868
    PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
2869
2870
  /* The BD field in a B form instruction when the + modifier is used
2871
     and absolute addressing is used.  */
2872
#define BDPA BDP + 1
2873
  { 0xfffc, 0, insert_bdp, extract_bdp,
2874
    PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
2875
2876
  /* The BF field in an X or XL form instruction.  */
2877
#define BF BDPA + 1
2878
  /* The CRFD field in an X form instruction.  */
2879
#define CRFD BF
2880
  /* The CRD field in an XL form instruction.  */
2881
#define CRD BF
2882
  { 0x7, 23, NULL, NULL, PPC_OPERAND_CR_REG },
2883
2884
  /* The BF field in an X or XL form instruction.  */
2885
#define BFF BF + 1
2886
  { 0x7, 23, NULL, NULL, 0 },
2887
2888
  /* The ACC field in a VSX ACC 8LS:D-form instruction.  */
2889
#define ACC BFF + 1
2890
  { 0x7, 23, NULL, NULL, PPC_OPERAND_ACC },
2891
2892
  /* The DMR field in a MMA instruction.  */
2893
#define DMR ACC + 1
2894
  { 0x7, 23, NULL, NULL, PPC_OPERAND_DMR },
2895
2896
  /* The second DMR field in a two DMR operand MMA instruction.  */
2897
#define DMRAB DMR + 1
2898
  { 0x7, 13, NULL, NULL, PPC_OPERAND_DMR },
2899
2900
  /* An optional BF field.  This is used for comparison instructions,
2901
     in which an omitted BF field is taken as zero.  */
2902
#define OBF DMRAB + 1
2903
  { 0x7, 23, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
2904
2905
  /* The BFA field in an X or XL form instruction.  */
2906
#define BFA OBF + 1
2907
  { 0x7, 18, NULL, NULL, PPC_OPERAND_CR_REG },
2908
2909
  /* The BO field in a B form instruction.  Certain values are
2910
     illegal.  */
2911
#define BO BFA + 1
2912
#define BO_MASK (0x1f << 21)
2913
  { 0x1f, 21, insert_bo, extract_bo, 0 },
2914
2915
  /* The BO field in a B form instruction when the - modifier is used.  */
2916
#define BOM BO + 1
2917
  { 0x1f, 21, insert_bom, extract_bom, 0 },
2918
2919
  /* The BO field in a B form instruction when the + modifier is used.  */
2920
#define BOP BOM + 1
2921
  { 0x1f, 21, insert_bop, extract_bop, 0 },
2922
2923
  /* The RM field in an X form instruction.  */
2924
#define RM BOP + 1
2925
#define DD RM
2926
#define mo1 RM
2927
  { 0x3, 11, NULL, NULL, 0 },
2928
2929
#define BH RM + 1
2930
  { 0x3, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
2931
2932
  /* The BT field in an X or XL form instruction.  */
2933
#define BT BH + 1
2934
  { 0x1f, 21, NULL, NULL, PPC_OPERAND_CR_BIT },
2935
2936
  /* The BT field in a mtfsb0 or mtfsb1 instruction.  */
2937
#define BTF BT + 1
2938
  { 0x1f, 21, NULL, NULL, PPC_OPERAND_CR_BIT | PPC_OPERAND_CR_REG },
2939
2940
  /* The BI16 field in a BD8 form instruction.  */
2941
#define BI16 BTF + 1
2942
  { 0x3, 8, NULL, NULL, PPC_OPERAND_CR_BIT },
2943
2944
  /* The BI32 field in a BD15 form instruction.  */
2945
#define BI32 BI16 + 1
2946
  { 0xf, 16, NULL, NULL, PPC_OPERAND_CR_BIT },
2947
2948
  /* The BO32 field in a BD15 form instruction.  */
2949
#define BO32 BI32 + 1
2950
  { 0x3, 20, NULL, NULL, 0 },
2951
2952
  /* The B8 field in a BD8 form instruction.  */
2953
#define B8 BO32 + 1
2954
  { 0x1fe, -1, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
2955
2956
  /* The B15 field in a BD15 form instruction.  The lowest bit is
2957
     forced to zero.  */
2958
#define B15 B8 + 1
2959
  { 0xfffe, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
2960
2961
  /* The B24 field in a BD24 form instruction.  The lowest bit is
2962
     forced to zero.  */
2963
#define B24 B15 + 1
2964
  { 0x1fffffe, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
2965
2966
  /* The condition register number portion of the BI field in a B form
2967
     or XL form instruction.  This is used for the extended
2968
     conditional branch mnemonics, which set the lower two bits of the
2969
     BI field.  This field is optional.  */
2970
#define CR B24 + 1
2971
  { 0x7, 18, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
2972
2973
  /* The CRB field in an X form instruction.  */
2974
#define CRB CR + 1
2975
  /* The MB field in an M form instruction.  */
2976
#define MB CRB
2977
#define MB_MASK (0x1f << 6)
2978
  { 0x1f, 6, NULL, NULL, 0 },
2979
2980
  /* The CRD32 field in an XL form instruction.  */
2981
#define CRD32 CRB + 1
2982
  { 0x3, 21, NULL, NULL, PPC_OPERAND_CR_REG },
2983
2984
  /* The CRFS field in an X form instruction.  */
2985
#define CRFS CRD32 + 1
2986
  { 0x7, 0, NULL, NULL, PPC_OPERAND_CR_REG },
2987
2988
#define CRS CRFS + 1
2989
  { 0x3, 18, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
2990
2991
  /* The CT field in an X form instruction.  */
2992
#define CT CRS + 1
2993
  /* The MO field in an mbar instruction.  */
2994
#define MO CT
2995
  { 0x1f, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
2996
2997
  /* The TH field in dcbtct.  */
2998
#define THCT CT + 1
2999
  { 0x1f, 21, insert_thct, extract_thct, PPC_OPERAND_OPTIONAL },
3000
3001
  /* The TH field in dcbtds.  */
3002
#define THDS THCT + 1
3003
  { 0x1f, 21, insert_thds, extract_thds, PPC_OPERAND_OPTIONAL },
3004
3005
  /* The D field in a D form instruction.  This is a displacement off
3006
     a register, and implies that the next operand is a register in
3007
     parentheses.  */
3008
#define D THDS + 1
3009
  { 0xffff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
3010
3011
  /* The D8 field in a D form instruction.  This is a displacement off
3012
     a register, and implies that the next operand is a register in
3013
     parentheses.  */
3014
#define D8 D + 1
3015
  { 0xff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
3016
3017
  /* The DCMX field in an X form instruction.  */
3018
#define DCMX D8 + 1
3019
  { 0x7f, 16, NULL, NULL, 0 },
3020
3021
  /* The split DCMX field in an X form instruction.  */
3022
#define DCMXS DCMX + 1
3023
  { 0x7f, PPC_OPSHIFT_INV, insert_dcmxs, extract_dcmxs, 0 },
3024
3025
  /* The DQ field in a DQ form instruction.  This is like D, but the
3026
     lower four bits are forced to zero. */
3027
#define DQ DCMXS + 1
3028
  { 0xfff0, 0, NULL, NULL,
3029
    PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DQ },
3030
3031
  /* The DS field in a DS form instruction.  This is like D, but the
3032
     lower two bits are forced to zero.  */
3033
#define DS DQ + 1
3034
  { 0xfffc, 0, NULL, NULL,
3035
    PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DS },
3036
3037
  /* The D field in an 8-byte D form prefix instruction.  This is a displacement
3038
     off a register, and implies that the next operand is a register in
3039
     parentheses.  */
3040
#define D34 DS + 1
3041
  { UINT64_C(0x3ffffffff), PPC_OPSHIFT_INV, insert_d34, extract_d34,
3042
    PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
3043
3044
  /* The SI field in an 8-byte D form prefix instruction.  */
3045
#define SI34 D34 + 1
3046
  { UINT64_C(0x3ffffffff), PPC_OPSHIFT_INV, insert_d34, extract_d34, PPC_OPERAND_SIGNED },
3047
3048
  /* The NSI field in an 8-byte D form prefix instruction.  This is the
3049
     same as the SI34 field, only negated.  */
3050
#define NSI34 SI34 + 1
3051
  { UINT64_C(0x3ffffffff), PPC_OPSHIFT_INV, insert_nsi34, extract_nsi34,
3052
    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
3053
3054
  /* The IMM32 field in a vector splat immediate prefix instruction.  */
3055
#define IMM32 NSI34 + 1
3056
  { 0xffffffff, PPC_OPSHIFT_INV, insert_imm32, extract_imm32, 0},
3057
3058
  /* The UIM field in a vector permute extended prefix instruction.  */
3059
#define UIM3 IMM32 + 1
3060
  { 0x7, 32, NULL, NULL, 0},
3061
3062
  /* The UIM field in a vector eval prefix instruction.  */
3063
#define UIM8 UIM3 + 1
3064
  { 0xff, 32, NULL, NULL, 0},
3065
3066
  /* The IX field in xxsplti32dx.  */
3067
#define IX UIM8 + 1
3068
  { 0x1, 17, NULL, NULL, 0 },
3069
3070
  /* The PMSK field in GER rank 8 prefix instructions.  */
3071
#define PMSK8 IX + 1
3072
  { 0xff, 40, NULL, NULL, 0 },
3073
3074
  /* The PMSK field in GER rank 4 prefix instructions.  */
3075
#define PMSK4 PMSK8 + 1
3076
  { 0xf, 44, NULL, NULL, 0 },
3077
3078
  /* The PMSK field in GER rank 2 prefix instructions.  */
3079
#define PMSK2 PMSK4 + 1
3080
  { 0x3, 46, NULL, NULL, 0 },
3081
3082
  /* The XMSK field in GER prefix instructions.  */
3083
#define XMSK PMSK2 + 1
3084
  { 0xf, 36, NULL, NULL, 0 },
3085
3086
  /* The XMSK field in GERX prefix instructions.  */
3087
#define XMSK8 XMSK + 1
3088
  { 0xff, 36, NULL, NULL, 0 },
3089
3090
  /* The YMSK field in GER prefix instructions.  */
3091
#define YMSK XMSK8 + 1
3092
  { 0xf, 32, NULL, NULL, 0 },
3093
3094
  /* The YMSK field in 64-bit GER prefix instructions.  */
3095
#define YMSK2 YMSK + 1
3096
  { 0x3, 34, NULL, NULL, 0 },
3097
3098
  /* The DUIS or BHRBE fields in a XFX form instruction, 10 bits
3099
     unsigned imediate */
3100
#define DUIS YMSK2 + 1
3101
#define BHRBE DUIS
3102
  { 0x3ff, 11, NULL, NULL, 0 },
3103
3104
  /* The split DW field in a X form instruction.  */
3105
#define DW DUIS + 1
3106
  { -1, PPC_OPSHIFT_INV, insert_dw, extract_dw,
3107
    PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED},
3108
3109
  /* The split D field in a DX form instruction.  */
3110
#define DXD DW + 1
3111
  { 0xffff, PPC_OPSHIFT_INV, insert_dxd, extract_dxd,
3112
    PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT},
3113
3114
  /* The split ND field in a DX form instruction.
3115
     This is the same as the DX field, only negated.  */
3116
#define NDXD DXD + 1
3117
  { 0xffff, PPC_OPSHIFT_INV, insert_dxdn, extract_dxdn,
3118
    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT},
3119
3120
  /* The E field in a wrteei instruction.  */
3121
  /* And the W bit in the pair singles instructions.  */
3122
  /* And the ST field in a VX form instruction.  */
3123
#define E NDXD + 1
3124
#define PSW E
3125
#define ST E
3126
  { 0x1, 15, NULL, NULL, 0 },
3127
3128
  /* The FL1 field in a POWER SC form instruction.  */
3129
#define FL1 E + 1
3130
  /* The U field in an X form instruction.  */
3131
#define U FL1
3132
  { 0xf, 12, NULL, NULL, 0 },
3133
3134
  /* The FL2 field in a POWER SC form instruction.  */
3135
#define FL2 FL1 + 1
3136
  { 0x7, 2, NULL, NULL, 0 },
3137
3138
  /* The FLM field in an XFL form instruction.  */
3139
#define FLM FL2 + 1
3140
  { 0xff, 17, NULL, NULL, 0 },
3141
3142
  /* The FRA field in an X or A form instruction.  */
3143
#define FRA FLM + 1
3144
#define FRA_MASK (0x1f << 16)
3145
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_FPR },
3146
3147
  /* The FRAp field of DFP instructions.  */
3148
#define FRAp FRA + 1
3149
  { 0x1e, 16, NULL, NULL, PPC_OPERAND_FPR },
3150
3151
  /* The FRB field in an X or A form instruction.  */
3152
#define FRB FRAp + 1
3153
#define FRB_MASK (0x1f << 11)
3154
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_FPR },
3155
3156
  /* The FRBp field of DFP instructions.  */
3157
#define FRBp FRB + 1
3158
  { 0x1e, 11, NULL, NULL, PPC_OPERAND_FPR },
3159
3160
  /* The FRC field in an A form instruction.  */
3161
#define FRC FRBp + 1
3162
#define FRC_MASK (0x1f << 6)
3163
  { 0x1f, 6, NULL, NULL, PPC_OPERAND_FPR },
3164
3165
  /* The FRS field in an X form instruction or the FRT field in a D, X
3166
     or A form instruction.  */
3167
#define FRS FRC + 1
3168
#define FRT FRS
3169
  { 0x1f, 21, NULL, NULL, PPC_OPERAND_FPR },
3170
3171
  /* The FRSp field of stfdp or the FRTp field of lfdp and DFP
3172
     instructions.  */
3173
#define FRSp FRS + 1
3174
#define FRTp FRSp
3175
  { 0x1e, 21, NULL, NULL, PPC_OPERAND_FPR },
3176
3177
  /* The FXM field in an XFX instruction.  */
3178
#define FXM FRSp + 1
3179
  { 0xff, 12, insert_fxm, extract_fxm, 0 },
3180
3181
  /* Power4 version for mfcr.  */
3182
#define FXM4 FXM + 1
3183
  { 0xff, 12, insert_fxm, extract_fxm, PPC_OPERAND_OPTIONAL },
3184
3185
  /* The IMM20 field in an LI instruction.  */
3186
#define IMM20 FXM4 + 1
3187
  { 0xfffff, PPC_OPSHIFT_INV, insert_li20, extract_li20, PPC_OPERAND_SIGNED},
3188
3189
  /* The L field in a D or X form instruction.  */
3190
#define L IMM20 + 1
3191
  { 0x1, 21, NULL, NULL, 0 },
3192
3193
  /* The optional L field in tlbie and tlbiel instructions.  */
3194
#define LOPT L + 1
3195
  /* The R field in a HTM X form instruction.  */
3196
#define HTM_R LOPT
3197
  { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
3198
3199
  /* The optional L field in the paste. instruction. This is similar to LOPT
3200
     above, but with a default value of 1.  */
3201
#define L1OPT LOPT + 1
3202
  { 0x1, 21, insert_l1opt, extract_l1opt, PPC_OPERAND_OPTIONAL },
3203
3204
  /* The optional (for 32-bit) L field in cmp[l][i] instructions.  */
3205
#define L32OPT L1OPT + 1
3206
  { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL32 },
3207
3208
  /* The 2-bit L or WC field in an X (sync, dcbf or wait) form instruction.  */
3209
#define L2OPT L32OPT + 1
3210
#define LS L2OPT
3211
#define WC L2OPT
3212
  { 0x3, 21, insert_ls, extract_ls, PPC_OPERAND_OPTIONAL },
3213
3214
  /* The LEV field in a POWER SVC / POWER9 SCV form instruction.  */
3215
#define SVC_LEV L2OPT + 1
3216
  { 0x7f, 5, NULL, NULL, 0 },
3217
3218
  /* The LEV field in an SC form instruction.  */
3219
#define LEV SVC_LEV + 1
3220
  { 0x7f, 5, NULL, NULL, PPC_OPERAND_OPTIONAL },
3221
3222
  /* The LI field in an I form instruction.  The lower two bits are
3223
     forced to zero.  */
3224
#define LI LEV + 1
3225
  { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
3226
3227
  /* The LI field in an I form instruction when used as an absolute
3228
     address.  */
3229
#define LIA LI + 1
3230
  { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
3231
3232
  /* The 3-bit L field in a sync or dcbf instruction.  */
3233
#define LS3 LIA + 1
3234
#define L3OPT LS3
3235
  { 0x7, 21, insert_ls, extract_ls, PPC_OPERAND_OPTIONAL },
3236
3237
  /* The ME field in an M form instruction.  */
3238
#define ME LS3 + 1
3239
#define ME_MASK (0x1f << 1)
3240
  { 0x1f, 1, NULL, NULL, 0 },
3241
3242
#define CRWn ME + 1
3243
  { 0x1f, 1, insert_crwn, extract_crwn, 0 },
3244
3245
#define ELWn CRWn + 1
3246
  { 0x1f, 1, insert_elwn, extract_elwn, PPC_OPERAND_PLUS1 },
3247
3248
#define ERWn ELWn + 1
3249
  { 0x1f, 6, insert_erwn, extract_erwn, 0 },
3250
3251
#define ERWb ERWn + 1
3252
  { 0x1f, 11, insert_erwb, extract_erwb, 0 },
3253
3254
#define CSLWb ERWb + 1
3255
  { 0x1f, 6, NULL, extract_cslwb, 0 },
3256
3257
#define CSLWn CSLWb + 1
3258
  { 0x1f, 11, insert_cslwn, NULL, 0 },
3259
3260
#define ILWn CSLWn + 1
3261
  { 0x1f, 1, NULL, extract_ilwn, PPC_OPERAND_PLUS1 },
3262
3263
#define ILWb ILWn + 1
3264
  { 0x1f, 6, insert_ilwb, NULL, 0 },
3265
3266
#define IRWn ILWb + 1
3267
  { 0x1f, 1, NULL, extract_irwn, PPC_OPERAND_PLUS1 },
3268
3269
#define IRWb IRWn + 1
3270
  { 0x1f, 6, insert_irwb, NULL, 0 },
3271
3272
  /* The MB and ME fields in an M form instruction expressed a single
3273
     operand which is a bitmask indicating which bits to select.  This
3274
     is a two operand form using PPC_OPERAND_NEXT.  See the
3275
     description in opcode/ppc.h for what this means.  */
3276
#define MBE IRWb + 1
3277
  { 0x1f, 6, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_NEXT },
3278
  { -1, 0, insert_mbe, extract_mbe, 0 },
3279
3280
  /* The MB or ME field in an MD or MDS form instruction.  The high
3281
     bit is wrapped to the low end.  */
3282
#define MB6 MBE + 2
3283
#define ME6 MB6
3284
#define MB6_MASK (0x3f << 5)
3285
  { 0x3f, 5, insert_mb6, extract_mb6, 0 },
3286
3287
#define ELDn MB6 + 1
3288
  { 0x3f, 5, insert_eldn, extract_eldn, PPC_OPERAND_PLUS1 },
3289
3290
#define ERDn ELDn + 1
3291
  { 0x3f, 5, insert_erdn, extract_erdn, 0 },
3292
3293
#define CRDn ERDn + 1
3294
  { 0x3f, 5, insert_crdn, extract_crdn, 0 },
3295
3296
  /* The NB field in an X form instruction.  The value 32 is stored as
3297
     0.  */
3298
#define NB CRDn + 1
3299
  { 0x1f, 11, NULL, extract_nb, PPC_OPERAND_PLUS1 },
3300
3301
  /* The NBI field in an lswi instruction, which has special value
3302
     restrictions.  The value 32 is stored as 0.  */
3303
#define NBI NB + 1
3304
  { 0x1f, 11, insert_nbi, extract_nb, PPC_OPERAND_PLUS1 },
3305
3306
  /* The NSI field in a D form instruction.  This is the same as the
3307
     SI field, only negated.  */
3308
#define NSI NBI + 1
3309
  { 0xffff, 0, insert_nsi, extract_nsi,
3310
    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
3311
3312
  /* The NSI field in a D form instruction when we accept a wide range
3313
     of positive values.  */
3314
#define NSISIGNOPT NSI + 1
3315
  { 0xffff, 0, insert_nsi, extract_nsi,
3316
    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
3317
3318
  /* The RA field in an D, DS, DQ, X, XO, M, or MDS form instruction.  */
3319
#define RA NSISIGNOPT + 1
3320
#define RA_MASK (0x1f << 16)
3321
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR },
3322
3323
  /* As above, but 0 in the RA field means zero, not r0.  */
3324
#define RA0 RA + 1
3325
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR_0 },
3326
3327
  /* Similar to above, but optional.  */
3328
#define PRA0 RA0 + 1
3329
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR_0 | PPC_OPERAND_OPTIONAL },
3330
3331
  /* The RA field in the DQ form lq or an lswx instruction, which have
3332
     special value restrictions.  */
3333
#define RAQ PRA0 + 1
3334
#define RAX RAQ
3335
  { 0x1f, 16, insert_raq, extract_raq, PPC_OPERAND_GPR_0 },
3336
3337
  /* Similar to above, but optional.  */
3338
#define PRAQ RAQ + 1
3339
  { 0x1f, 16, insert_raq, extract_raq,
3340
    PPC_OPERAND_GPR_0 | PPC_OPERAND_OPTIONAL },
3341
3342
  /* The R field in an 8-byte D, DS, DQ or X form prefix instruction.  */
3343
#define PCREL PRAQ + 1
3344
#define PCREL_MASK (1ULL << 52)
3345
  { 0x1, 52, insert_pcrel, extract_pcrel, PPC_OPERAND_OPTIONAL },
3346
3347
#define PCREL1 PCREL + 1
3348
  { 0x1, 52, insert_pcrel, extract_pcrel1, PPC_OPERAND_OPTIONAL },
3349
3350
  /* The RA field in a D or X form instruction which is an updating
3351
     load, which means that the RA field may not be zero and may not
3352
     equal the RT field.  */
3353
#define RAL PCREL1 + 1
3354
  { 0x1f, 16, insert_ral, extract_ral, PPC_OPERAND_GPR_0 },
3355
3356
  /* The RA field in an lmw instruction, which has special value
3357
     restrictions.  */
3358
#define RAM RAL + 1
3359
  { 0x1f, 16, insert_ram, extract_ram, PPC_OPERAND_GPR_0 },
3360
3361
  /* The RA field in a D or X form instruction which is an updating
3362
     store or an updating floating point load, which means that the RA
3363
     field may not be zero.  */
3364
#define RAS RAM + 1
3365
  { 0x1f, 16, insert_ras, extract_ras, PPC_OPERAND_GPR_0 },
3366
3367
  /* The RA field of the tlbwe, dccci and iccci instructions,
3368
     which are optional.  */
3369
#define RAOPT RAS + 1
3370
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
3371
3372
  /* The RB field in an X, XO, M, or MDS form instruction.  */
3373
#define RB RAOPT + 1
3374
#define RB_MASK (0x1f << 11)
3375
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR },
3376
3377
  /* The RS and RB fields in an X form instruction when they must be the same.
3378
     This is used for extended mnemonics like mr.  */
3379
#define RSB RB + 1
3380
  { 0x1f, 11, insert_rsb, extract_rsb, PPC_OPERAND_GPR },
3381
3382
  /* The RB field in an lswx instruction, which has special value
3383
     restrictions.  */
3384
#define RBX RSB + 1
3385
  { 0x1f, 11, insert_rbx, extract_rbx, PPC_OPERAND_GPR },
3386
3387
  /* The RB field of the dccci and iccci instructions, which are optional.  */
3388
#define RBOPT RBX + 1
3389
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
3390
3391
  /* The RC register field in an maddld, maddhd or maddhdu instruction.  */
3392
#define RC RBOPT + 1
3393
  { 0x1f, 6, NULL, NULL, PPC_OPERAND_GPR },
3394
3395
  /* The RS field in a D, DS, X, XFX, XS, M, MD or MDS form
3396
     instruction or the RT field in a D, DS, X, XFX or XO form
3397
     instruction.  */
3398
#define RS RC + 1
3399
#define RT RS
3400
#define RT_MASK (0x1f << 21)
3401
#define RD RS
3402
  { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR },
3403
3404
#define RD_EVEN RS + 1
3405
#define RS_EVEN RD_EVEN
3406
  { 0x1f, 21, insert_rD_rS_even, extract_rD_rS_even, PPC_OPERAND_GPR },
3407
3408
  /* The RS and RT fields of the DS form stq and DQ form lq instructions,
3409
     which have special value restrictions.  */
3410
#define RSQ RS_EVEN + 1
3411
#define RTQ RSQ
3412
#define Q_MASK (1 << 21)
3413
  { 0x1e, 21, NULL, NULL, PPC_OPERAND_GPR },
3414
3415
  /* The RS field of the tlbwe instruction, which is optional.  */
3416
#define RSO RSQ + 1
3417
#define RTO RSO
3418
  { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
3419
3420
  /* The RX field of the SE_RR form instruction.  */
3421
#define RX RSO + 1
3422
  { 0x1f, PPC_OPSHIFT_INV, insert_rx, extract_rx, PPC_OPERAND_GPR },
3423
3424
  /* The ARX field of the SE_RR form instruction.  */
3425
#define ARX RX + 1
3426
  { 0x1f, PPC_OPSHIFT_INV, insert_arx, extract_arx, PPC_OPERAND_GPR },
3427
3428
  /* The RY field of the SE_RR form instruction.  */
3429
#define RY ARX + 1
3430
#define RZ RY
3431
  { 0x1f, PPC_OPSHIFT_INV, insert_ry, extract_ry, PPC_OPERAND_GPR },
3432
3433
  /* The ARY field of the SE_RR form instruction.  */
3434
#define ARY RY + 1
3435
  { 0x1f, PPC_OPSHIFT_INV, insert_ary, extract_ary, PPC_OPERAND_GPR },
3436
3437
  /* The SCLSCI8 field in a D form instruction.  */
3438
#define SCLSCI8 ARY + 1
3439
  { 0xffffffff, PPC_OPSHIFT_INV, insert_sci8, extract_sci8, 0 },
3440
3441
  /* The SCLSCI8N field in a D form instruction.  This is the same as the
3442
     SCLSCI8 field, only negated.  */
3443
#define SCLSCI8N SCLSCI8 + 1
3444
  { 0xffffffff, PPC_OPSHIFT_INV, insert_sci8n, extract_sci8n,
3445
    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
3446
3447
  /* The SD field of the SD4 form instruction.  */
3448
#define SE_SD SCLSCI8N + 1
3449
  { 0xf, 8, NULL, NULL, PPC_OPERAND_PARENS },
3450
3451
  /* The SD field of the SD4 form instruction, for halfword.  */
3452
#define SE_SDH SE_SD + 1
3453
  { 0x1e, 7, NULL, NULL, PPC_OPERAND_PARENS },
3454
3455
  /* The SD field of the SD4 form instruction, for word.  */
3456
#define SE_SDW SE_SDH + 1
3457
  { 0x3c, 6, NULL, NULL, PPC_OPERAND_PARENS },
3458
3459
  /* The SH field in an X or M form instruction.  */
3460
#define SH SE_SDW + 1
3461
#define SH_MASK (0x1f << 11)
3462
  /* The other UIMM field in a EVX form instruction.  */
3463
#define EVUIMM SH
3464
  /* The FC field in an atomic X form instruction.  */
3465
#define FC SH
3466
#define UIM5 SH
3467
  { 0x1f, 11, NULL, NULL, 0 },
3468
3469
#define RRWn SH + 1
3470
  { 0x1f, 11, insert_rrwn, extract_rrwn, 0 },
3471
3472
#define SLWn RRWn + 1
3473
  { 0x1f, 11, insert_slwn, extract_slwn, 0 },
3474
3475
#define SRWn SLWn + 1
3476
  { 0x1f, 11, insert_srwn, extract_srwn, 0 },
3477
3478
#define EVUIMM_LT8 SRWn + 1
3479
  { 0x1f, 11, insert_evuimm_lt8, extract_evuimm_lt8, 0 },
3480
3481
#define EVUIMM_LT16 EVUIMM_LT8 + 1
3482
  { 0x1f, 11, insert_evuimm_lt16, extract_evuimm_lt16, 0 },
3483
3484
  /* The SI field in a HTM X form instruction.  */
3485
#define HTM_SI EVUIMM_LT16 + 1
3486
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_SIGNED },
3487
3488
  /* The SH field in an MD form instruction.  This is split.  */
3489
#define SH6 HTM_SI + 1
3490
#define SH6_MASK ((0x1f << 11) | (1 << 1))
3491
  { 0x3f, PPC_OPSHIFT_INV, insert_sh6, extract_sh6, 0 },
3492
3493
#define RRDn SH6 + 1
3494
  { 0x3f, PPC_OPSHIFT_INV, insert_rrdn, extract_rrdn, 0 },
3495
3496
#define SLDn RRDn + 1
3497
  { 0x3f, PPC_OPSHIFT_INV, insert_sldn, extract_sldn, 0 },
3498
3499
#define SRDn SLDn + 1
3500
  { 0x3f, PPC_OPSHIFT_INV, insert_srdn, extract_srdn, 0 },
3501
3502
#define ERDb SRDn + 1
3503
  { 0x3f, PPC_OPSHIFT_INV, insert_erdb, extract_erdb, 0 },
3504
3505
#define CSLDn ERDb + 1
3506
  { 0x3f, PPC_OPSHIFT_SH6, insert_csldn, extract_sh6, 0 },
3507
3508
#define CSLDb CSLDn + 1
3509
  { 0x3f, 5, insert_mb6, extract_csldb, 0 },
3510
3511
#define IRDn CSLDb + 1
3512
  { 0x3f, PPC_OPSHIFT_INV, insert_sh6, extract_irdn, PPC_OPERAND_PLUS1 },
3513
3514
#define IRDb IRDn + 1
3515
  { 0x3f, 5, insert_irdb, extract_mb6, 0 },
3516
3517
  /* The SH field of some variants of the tlbre and tlbwe
3518
     instructions, and the ELEV field of the e_sc instruction.  */
3519
#define SHO IRDb + 1
3520
#define ELEV SHO
3521
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
3522
3523
  /* The SI field in a D form instruction.  */
3524
#define SI SHO + 1
3525
  { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED },
3526
3527
  /* The SI field in a D form instruction when we accept a wide range
3528
     of positive values.  */
3529
#define SISIGNOPT SI + 1
3530
  { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
3531
3532
  /* The SI8 field in a D form instruction.  */
3533
#define SI8 SISIGNOPT + 1
3534
  { 0xff, 0, NULL, NULL, PPC_OPERAND_SIGNED },
3535
3536
  /* The SPR field in an XFX form instruction.  This is flipped--the
3537
     lower 5 bits are stored in the upper 5 and vice- versa.  */
3538
#define SPR SI8 + 1
3539
#define PMR SPR
3540
#define TMR SPR
3541
#define SPR_MASK (0x3ff << 11)
3542
  { 0x3ff, 11, insert_spr, extract_spr, PPC_OPERAND_SPR },
3543
3544
  /* The BAT index number in an XFX form m[ft]ibat[lu] instruction.  */
3545
#define SPRBAT SPR + 1
3546
#define SPRBAT_MASK (0xc1 << 11)
3547
  { 0x7, PPC_OPSHIFT_INV, insert_sprbat, extract_sprbat, PPC_OPERAND_SPR },
3548
3549
  /* The GQR index number in an XFX form m[ft]gqr instruction.  */
3550
#define SPRGQR SPRBAT + 1
3551
#define SPRGQR_MASK (0x7 << 16)
3552
  { 0x7, 16, NULL, NULL, PPC_OPERAND_GQR },
3553
3554
  /* The SPRG register number in an XFX form m[ft]sprg instruction.  */
3555
#define SPRG SPRGQR + 1
3556
  { 0x1f, 16, insert_sprg, extract_sprg, PPC_OPERAND_SPR },
3557
3558
  /* The SR field in an X form instruction.  */
3559
#define SR SPRG + 1
3560
  /* The 4-bit UIMM field in a VX form instruction.  */
3561
#define UIMM4 SR
3562
  { 0xf, 16, NULL, NULL, 0 },
3563
3564
  /* The STRM field in an X AltiVec form instruction.  */
3565
#define STRM SR + 1
3566
  /* The T field in a tlbilx form instruction.  */
3567
#define T STRM
3568
  /* The L field in wclr instructions.  */
3569
#define L2 STRM
3570
  { 0x3, 21, NULL, NULL, 0 },
3571
3572
  /* The ESYNC field in an X (sync) form instruction.  */
3573
#define ESYNC STRM + 1
3574
  { 0xf, 16, insert_esync, extract_esync, PPC_OPERAND_OPTIONAL },
3575
3576
  /* The SV field in a POWER SC form instruction.  */
3577
#define SV ESYNC + 1
3578
  { 0x3fff, 2, NULL, NULL, 0 },
3579
3580
  /* The TBR field in an XFX form instruction.  This is like the SPR
3581
     field, but it is optional.  */
3582
#define TBR SV + 1
3583
  { 0x3ff, 11, insert_tbr, extract_tbr,
3584
    PPC_OPERAND_SPR | PPC_OPERAND_OPTIONAL },
3585
3586
  /* The TO field in a D or X form instruction.  */
3587
#define TO TBR + 1
3588
#define DUI TO
3589
#define SVme TO
3590
#define SVG TO
3591
#define TO_MASK (0x1f << 21)
3592
  { 0x1f, 21, NULL, NULL, 0 },
3593
3594
  /* The UI field in a D form instruction.  */
3595
#define UI TO + 1
3596
  { 0xffff, 0, NULL, NULL, 0 },
3597
3598
#define UISIGNOPT UI + 1
3599
  { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNOPT },
3600
3601
  /* The IMM field in an SE_IM5 instruction.  */
3602
#define UI5 UISIGNOPT + 1
3603
  { 0x1f, 4, NULL, NULL, 0 },
3604
3605
  /* The OIMM field in an SE_OIM5 instruction.  */
3606
#define OIMM5 UI5 + 1
3607
  { 0x1f, 4, insert_oimm, extract_oimm, PPC_OPERAND_PLUS1 },
3608
3609
  /* The UI7 field in an SE_LI instruction.  */
3610
#define UI7 OIMM5 + 1
3611
  { 0x7f, 4, NULL, NULL, 0 },
3612
3613
  /* The VA field in a VA, VX or VXR form instruction.  */
3614
#define VA UI7 + 1
3615
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_VR },
3616
3617
  /* The VB field in a VA, VX or VXR form instruction.  */
3618
#define VB VA + 1
3619
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_VR },
3620
3621
  /* The VC field in a VA form instruction.  */
3622
#define VC VB + 1
3623
  { 0x1f, 6, NULL, NULL, PPC_OPERAND_VR },
3624
3625
  /* The VD or VS field in a VA, VX, VXR or X form instruction.  */
3626
#define VD VC + 1
3627
#define VS VD
3628
  { 0x1f, 21, NULL, NULL, PPC_OPERAND_VR },
3629
3630
  /* The SIMM field in a VX form instruction, and TE in Z form.  */
3631
#define SIMM VD + 1
3632
#define TE SIMM
3633
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_SIGNED},
3634
3635
  /* The UIMM field in a VX form instruction.  */
3636
#define UIMM SIMM + 1
3637
#define DCTL UIMM
3638
#define rmm UIMM
3639
  { 0x1f, 16, NULL, NULL, 0 },
3640
3641
  /* The 3-bit UIMM field in a VX form instruction.  */
3642
#define UIMM3 UIMM + 1
3643
  { 0x7, 16, NULL, NULL, 0 },
3644
3645
  /* The 6-bit UIM field in a X form instruction.  */
3646
#define UIM6 UIMM3 + 1
3647
  { 0x3f, 16, NULL, NULL, 0 },
3648
3649
  /* The SIX field in a VX form instruction.  */
3650
#define SIX UIM6 + 1
3651
#define MMMM SIX
3652
  { 0xf, 11, NULL, NULL, 0 },
3653
3654
  /* The PS field in a VX form instruction.  */
3655
#define PS SIX + 1
3656
  { 0x1, 9, NULL, NULL, 0 },
3657
3658
  /* The SH field in a vector shift double by bit immediate instruction.  */
3659
#define SH3 PS + 1
3660
  { 0x7, 6, NULL, NULL, 0 },
3661
3662
  /* The SHB field in a VA form instruction.  */
3663
#define SHB SH3 + 1
3664
  { 0xf, 6, NULL, NULL, 0 },
3665
3666
  /* The other UIMM field in a half word EVX form instruction.  */
3667
#define EVUIMM_1 SHB + 1
3668
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_PARENS },
3669
3670
#define EVUIMM_1_EX0 EVUIMM_1 + 1
3671
  { 0x1f, 11, insert_evuimm1_ex0, extract_evuimm1_ex0, PPC_OPERAND_PARENS },
3672
3673
#define EVUIMM_2 EVUIMM_1_EX0 + 1
3674
  { 0x3e, 10, NULL, NULL, PPC_OPERAND_PARENS },
3675
3676
#define EVUIMM_2_EX0 EVUIMM_2 + 1
3677
  { 0x3e, 10, insert_evuimm2_ex0, extract_evuimm2_ex0, PPC_OPERAND_PARENS },
3678
3679
  /* The other UIMM field in a word EVX form instruction.  */
3680
#define EVUIMM_4 EVUIMM_2_EX0 + 1
3681
  { 0x7c, 9, NULL, NULL, PPC_OPERAND_PARENS },
3682
3683
#define EVUIMM_4_EX0 EVUIMM_4 + 1
3684
  { 0x7c, 9, insert_evuimm4_ex0, extract_evuimm4_ex0, PPC_OPERAND_PARENS },
3685
3686
  /* The other UIMM field in a double EVX form instruction.  */
3687
#define EVUIMM_8 EVUIMM_4_EX0 + 1
3688
  { 0xf8, 8, NULL, NULL, PPC_OPERAND_PARENS },
3689
3690
#define EVUIMM_8_EX0 EVUIMM_8 + 1
3691
  { 0xf8, 8, insert_evuimm8_ex0, extract_evuimm8_ex0, PPC_OPERAND_PARENS },
3692
3693
  /* The WS or DRM field in an X form instruction.  */
3694
#define WS EVUIMM_8_EX0 + 1
3695
#define DRM WS
3696
  /* The NNN field in a VX form instruction for SPE2  */
3697
#define NNN WS
3698
  { 0x7, 11, NULL, NULL, 0 },
3699
3700
  /* PowerPC paired singles extensions.  */
3701
  /* W bit in the pair singles instructions for x type instructions.  */
3702
#define PSWM WS + 1
3703
  /* The BO16 field in a BD8 form instruction.  */
3704
#define BO16 PSWM
3705
  /* The pst field in a SVRM form instruction.  */
3706
#define pst PSWM
3707
  /* The L field in a XO form instruction.  */
3708
#define XOL PSWM
3709
  {  0x1, 10, 0, 0, 0 },
3710
3711
  /* IDX bits for quantization in the pair singles instructions.  */
3712
#define PSQ PSWM + 1
3713
  {  0x7, 12, 0, 0, PPC_OPERAND_GQR },
3714
3715
  /* IDX bits for quantization in the pair singles x-type instructions.  */
3716
#define PSQM PSQ + 1
3717
  {  0x7, 7, 0, 0, PPC_OPERAND_GQR },
3718
3719
  /* Smaller D field for quantization in the pair singles instructions.  */
3720
#define PSD PSQM + 1
3721
  {  0xfff, 0, 0, 0,  PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
3722
3723
  /* The L field in an mtmsrd or A form instruction or R or W in an
3724
     X form.  */
3725
#define A_L PSD + 1
3726
#define W A_L
3727
#define X_R A_L
3728
  { 0x1, 16, NULL, NULL, PPC_OPERAND_OPTIONAL },
3729
3730
  /* The RMC or CY field in a Z23 form instruction.  */
3731
#define RMC A_L + 1
3732
#define CY RMC
3733
#define ew RMC
3734
  { 0x3, 9, NULL, NULL, 0 },
3735
3736
#define R RMC + 1
3737
#define MP R
3738
#define P1 R
3739
  { 0x1, 16, NULL, NULL, 0 },
3740
3741
#define RIC R + 1
3742
  { 0x3, 18, NULL, NULL, PPC_OPERAND_OPTIONAL },
3743
3744
#define PRS RIC + 1
3745
  { 0x1, 17, NULL, NULL, PPC_OPERAND_OPTIONAL },
3746
3747
#define SP PRS + 1
3748
#define mi0 SP
3749
  { 0x3, 19, NULL, NULL, 0 },
3750
3751
#define S SP + 1
3752
  { 0x1, 20, NULL, NULL, 0 },
3753
3754
  /* The S field in a XL form instruction.  */
3755
#define SXL S + 1
3756
  { 0x1, 11, insert_sxl, extract_sxl, PPC_OPERAND_OPTIONAL },
3757
3758
  /* SH field starting at bit position 16.  */
3759
#define SH16 SXL + 1
3760
  /* The DCM and DGM fields in a Z form instruction.  */
3761
#define DCM SH16
3762
#define DGM DCM
3763
  { 0x3f, 10, NULL, NULL, 0 },
3764
3765
  /* The EH field in larx instruction.  */
3766
#define EH SH16 + 1
3767
  { 0x1, 0, NULL, NULL, PPC_OPERAND_OPTIONAL },
3768
3769
  /* The L field in an mtfsf or XFL form instruction.  */
3770
  /* The A field in a HTM X form instruction.  */
3771
#define XFL_L EH + 1
3772
#define HTM_A XFL_L
3773
  { 0x1, 25, NULL, NULL, PPC_OPERAND_OPTIONAL},
3774
3775
  /* Xilinx APU related masks and macros */
3776
#define FCRT XFL_L + 1
3777
#define FCRT_MASK (0x1f << 21)
3778
  { 0x1f, 21, 0, 0, PPC_OPERAND_FCR },
3779
3780
  /* Xilinx FSL related masks and macros */
3781
#define FSL FCRT + 1
3782
#define FSL_MASK (0x1f << 11)
3783
  { 0x1f, 11, 0, 0, PPC_OPERAND_FSL },
3784
3785
  /* Xilinx UDI related masks and macros */
3786
#define URT FSL + 1
3787
  { 0x1f, 21, 0, 0, PPC_OPERAND_UDI },
3788
3789
#define URA URT + 1
3790
  { 0x1f, 16, 0, 0, PPC_OPERAND_UDI },
3791
3792
#define URB URA + 1
3793
  { 0x1f, 11, 0, 0, PPC_OPERAND_UDI },
3794
3795
#define URC URB + 1
3796
  { 0x1f, 6, 0, 0, PPC_OPERAND_UDI },
3797
3798
  /* The VLESIMM field in a D form instruction.  */
3799
#define VLESIMM URC + 1
3800
  { 0xffff, PPC_OPSHIFT_INV, insert_vlesi, extract_vlesi,
3801
    PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
3802
3803
  /* The VLENSIMM field in a D form instruction.  */
3804
#define VLENSIMM VLESIMM + 1
3805
  { 0xffff, PPC_OPSHIFT_INV, insert_vlensi, extract_vlensi,
3806
    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
3807
3808
  /* The VLEUIMM field in a D form instruction.  */
3809
#define VLEUIMM VLENSIMM + 1
3810
  { 0xffff, PPC_OPSHIFT_INV, insert_vleui, extract_vleui, 0 },
3811
3812
  /* The VLEUIMML field in a D form instruction.  */
3813
#define VLEUIMML VLEUIMM + 1
3814
  { 0xffff, PPC_OPSHIFT_INV, insert_vleil, extract_vleil, 0 },
3815
3816
  /* The XT and XS fields in an XX1 or XX3 form instruction.  This is
3817
     split.  */
3818
#define XS6 VLEUIMML + 1
3819
#define XT6 XS6
3820
  { 0x3f, PPC_OPSHIFT_INV, insert_xt6, extract_xt6, PPC_OPERAND_VSR },
3821
3822
  /* The XT and XS fields in an DQ form VSX instruction.  This is split.  */
3823
#define XSQ6 XT6 + 1
3824
#define XTQ6 XSQ6
3825
  { 0x3f, PPC_OPSHIFT_INV, insert_xtq6, extract_xtq6, PPC_OPERAND_VSR },
3826
3827
  /* The split XTp and XSp field in a vector paired instruction.  */
3828
#define XTP XSQ6 + 1
3829
#define XSP XTP
3830
  { 0x3e, PPC_OPSHIFT_INV, insert_xtp, extract_xtp, PPC_OPERAND_VSR },
3831
3832
#define XTS XTP + 1
3833
  { 0x3f, PPC_OPSHIFT_INV, insert_xts, extract_xts, PPC_OPERAND_VSR },
3834
3835
  /* The XT field in a plxv instruction.  Runs into the OP field.  */
3836
#define XTOP XTS + 1
3837
  { 0x3f, 21, NULL, NULL, PPC_OPERAND_VSR },
3838
3839
  /* The XA field in an XX3 form instruction.  This is split.  */
3840
#define XA6 XTOP + 1
3841
  { 0x3f, PPC_OPSHIFT_INV, insert_xa6, extract_xa6, PPC_OPERAND_VSR },
3842
3843
  /* The XA field in an MMA XX3 form instruction.  This is split and
3844
     must not overlap with the ACC operand.  */
3845
#define XA6a XA6 + 1
3846
  { 0x3f, PPC_OPSHIFT_INV, insert_xa6a, extract_xa6a, PPC_OPERAND_VSR },
3847
3848
  /* The XAp field in an MMA XX3 form instruction.  This is split.
3849
     This is like XA6a, but must be even.  */
3850
#define XA6ap XA6a + 1
3851
  { 0x3e, PPC_OPSHIFT_INV, insert_xa6a, extract_xa6a, PPC_OPERAND_VSR },
3852
3853
  /* The 5-bit XAp field in an MMA XX3 form instruction.  This is split.
3854
     This is like XA6, but must be even.  */
3855
#define XA5p XA6ap + 1
3856
  { 0x3e, PPC_OPSHIFT_INV, insert_xa5, extract_xa5, PPC_OPERAND_VSR },
3857
3858
  /* The XB field in an XX2 or XX3 form instruction.  This is split.  */
3859
#define XB6 XA5p + 1
3860
  { 0x3f, PPC_OPSHIFT_INV, insert_xb6, extract_xb6, PPC_OPERAND_VSR },
3861
3862
  /* The XB field in an XX3 form instruction.  This is split and
3863
     must not overlap with the ACC operand.  */
3864
#define XB6a XB6 + 1
3865
  { 0x3f, PPC_OPSHIFT_INV, insert_xb6a, extract_xb6a, PPC_OPERAND_VSR },
3866
3867
  /* The 5-bit XBp field in an MMA XX3 form instruction.  This is split.
3868
     This is like XB6, but must be even.  */
3869
#define XB5p XB6a + 1
3870
  { 0x3e, PPC_OPSHIFT_INV, insert_xb5, extract_xb5, PPC_OPERAND_VSR },
3871
3872
  /* The XA and XB fields in an XX3 form instruction when they must be the same.
3873
     This is used in extended mnemonics like xvmovdp.  This is split.  */
3874
#define XAB6 XB5p + 1
3875
  { 0x3f, PPC_OPSHIFT_INV, insert_xab6, extract_xab6, PPC_OPERAND_VSR },
3876
3877
  /* The XC field in an XX4 form instruction.  This is split.  */
3878
#define XC6 XAB6 + 1
3879
  { 0x3f, PPC_OPSHIFT_INV, insert_xc6, extract_xc6, PPC_OPERAND_VSR },
3880
3881
  /* The DM or SHW field in an XX3 form instruction.  */
3882
#define DM XC6 + 1
3883
#define SHW DM
3884
  { 0x3, 8, NULL, NULL, 0 },
3885
3886
  /* The DM field in an extended mnemonic XX3 form instruction.  */
3887
#define DMEX DM + 1
3888
  { 0x3, 8, insert_dm, extract_dm, 0 },
3889
3890
  /* The UIM field in an XX2 form instruction.  */
3891
#define UIM DMEX + 1
3892
  /* The 2-bit UIMM field in a VX form instruction.  */
3893
#define UIMM2 UIM
3894
  /* The 2-bit L field in a darn instruction.  */
3895
#define LRAND UIM
3896
  { 0x3, 16, NULL, NULL, 0 },
3897
3898
#define ERAT_T UIM + 1
3899
  { 0x7, 21, NULL, NULL, 0 },
3900
3901
#define IH ERAT_T + 1
3902
  { 0x7, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
3903
3904
  /* The 2-bit SC or PL field in an X form instruction.  */
3905
#define SC2 IH + 1
3906
#define PL SC2
3907
  { 0x3, 16, insert_pl, extract_pl, PPC_OPERAND_OPTIONAL },
3908
3909
#define P2 PL + 1
3910
  { 0x3, PPC_OPSHIFT_INV, insert_p2, extract_p2, 0 },
3911
3912
  /* The 8-bit IMM8 field in a XX1 form instruction.  */
3913
#define IMM8 P2 + 1
3914
  { 0xff, 11, NULL, NULL, PPC_OPERAND_SIGNOPT },
3915
3916
#define VX_OFF IMM8 + 1
3917
  { 0x3, 0, insert_off_lsp, extract_off_lsp, 0 },
3918
3919
#define VX_OFF_SPE2 VX_OFF + 1
3920
  { 0x7, 0, insert_off_spe2, extract_off_spe2, 0 },
3921
3922
#define BBB VX_OFF_SPE2 + 1
3923
  { 0x7, 13, NULL, NULL, 0 },
3924
3925
#define DDD BBB + 1
3926
#define VX_MASK_DDD  (VX_MASK & ~0x1)
3927
  { 0x7, PPC_OPSHIFT_INV, insert_Ddd, extract_Ddd, 0 },
3928
3929
#define HH DDD + 1
3930
#define mo0 HH
3931
  { 0x3, 13, NULL, NULL, 0 },
3932
3933
#define SVi HH + 1
3934
  { 0x3f, 9, NULL, NULL, PPC_OPERAND_NONZERO },
3935
3936
#define vf SVi + 1
3937
#define sk vf
3938
  { 0x1, 6, NULL, NULL, 0 },
3939
3940
#define vs vf + 1
3941
#define mm vs
3942
  { 0x1, 7, NULL, NULL, 0 },
3943
3944
#define ms vs + 1
3945
#define yx ms
3946
  { 0x1, 8, NULL, NULL, 0 },
3947
3948
#define SVLcr ms + 1
3949
  { 0x1, 5, NULL, NULL, 0 },
3950
3951
#define SVxd SVLcr + 1
3952
  { 0x1f, 21, NULL, NULL, PPC_OPERAND_NONZERO },
3953
3954
#define SVyd SVxd + 1
3955
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_NONZERO },
3956
3957
#define SVzd SVyd + 1
3958
#define SVd SVzd
3959
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_NONZERO },
3960
3961
#define SVrm SVzd + 1
3962
  { 0xf, 7, NULL, NULL, 0 },
3963
3964
#define mi1 SVrm + 1
3965
  { 0x3, 17, NULL, NULL, 0 },
3966
3967
#define mi2 mi1 + 1
3968
  { 0x3, 15, NULL, NULL, 0 },
3969
};
3970
3971
const unsigned int num_powerpc_operands = ARRAY_SIZE (powerpc_operands);
3972

3973
/* Macros used to form opcodes.  */
3974
3975
/* The main opcode.  */
3976
#define OP(x) ((((uint64_t)(x)) & 0x3f) << 26)
3977
#define OP_MASK OP (0x3f)
3978
3979
/* The prefix opcode.  */
3980
#define PREFIX_OP (1ULL << 58)
3981
3982
/* The 2-bit prefix form.  */
3983
#define PREFIX_FORM(x) ((x & 3ULL) << 56)
3984
3985
#define SUFFIX_MASK ((1ULL << 32) - 1)
3986
#define PREFIX_MASK (SUFFIX_MASK << 32)
3987
3988
/* Prefix insn, eight byte load/store form 8LS.  */
3989
#define P8LS (PREFIX_OP | PREFIX_FORM (0))
3990
3991
/* Prefix insn, eight byte register to register form 8RR.  */
3992
#define P8RR (PREFIX_OP | PREFIX_FORM (1))
3993
3994
/* Prefix insn, modified load/store form MLS.  */
3995
#define PMLS (PREFIX_OP | PREFIX_FORM (2))
3996
3997
/* Prefix insn, modified register to register form MRR.  */
3998
#define PMRR (PREFIX_OP | PREFIX_FORM (3))
3999
4000
/* Prefix insn, modified masked immediate register to register form MMIRR.  */
4001
#define PMMIRR (PREFIX_OP | PREFIX_FORM (3) | (9ULL << 52))
4002
4003
/* An 8-byte D form prefix instruction.  */
4004
#define P_D_MASK (((-1ULL << 50) & ~PCREL_MASK) | OP_MASK)
4005
4006
/* The same as P_D_MASK, but with the RA and PCREL fields specified.  */
4007
#define P_DRAPCREL_MASK (P_D_MASK | PCREL_MASK | RA_MASK)
4008
4009
/* Mask for prefix X form instructions.  */
4010
#define P_X_MASK (PREFIX_MASK | X_MASK)
4011
#define P_XX1_MASK (PREFIX_MASK | XX1_MASK)
4012
4013
/* Mask for prefix vector permute insns.  */
4014
#define P_XX4_MASK (PREFIX_MASK | XX4_MASK)
4015
#define P_UXX4_MASK (P_XX4_MASK & ~(7ULL << 32))
4016
#define P_U8XX4_MASK (P_XX4_MASK & ~(0xffULL << 32))
4017
4018
/* MMIRR:XX3-form 8-byte outer product instructions.  */
4019
#define P_GER_MASK ((-1ULL << 40) | XX3ACC_MASK)
4020
#define P_GER2_MASK (P_GER_MASK & ~(3ULL << 46))
4021
#define P_GER4_MASK (P_GER_MASK & ~(15ULL << 44))
4022
#define P_GER8_MASK (P_GER_MASK & ~(255ULL << 40))
4023
#define P_GER64_MASK (P_GER_MASK | (3ULL << 32))
4024
#define P_GERX4_MASK ((-1ULL << 48) | XX3GERX_MASK)
4025
#define P_GERX2_MASK (P_GERX4_MASK & ~(3ULL << 46))
4026
4027
/* Vector splat immediate op.  */
4028
#define VSOP(op, xop) (OP (op) | (xop << 17))
4029
#define P_VS_MASK ((-1ULL << 48) | VSOP (0x3f, 0xf))
4030
#define P_VSI_MASK ((-1ULL << 48) | VSOP (0x3f, 0xe))
4031
4032
/* The main opcode combined with a trap code in the TO field of a D
4033
   form instruction.  Used for extended mnemonics for the trap
4034
   instructions.  */
4035
#define OPTO(x,to) (OP (x) | ((((uint64_t)(to)) & 0x1f) << 21))
4036
#define OPTO_MASK (OP_MASK | TO_MASK)
4037
4038
/* The main opcode combined with a comparison size bit in the L field
4039
   of a D form or X form instruction.  Used for extended mnemonics for
4040
   the comparison instructions.  */
4041
#define OPL(x,l) (OP (x) | ((((uint64_t)(l)) & 1) << 21))
4042
#define OPL_MASK OPL (0x3f,1)
4043
4044
/* The main opcode combined with an update code in D form instruction.
4045
   Used for extended mnemonics for VLE memory instructions.  */
4046
#define OPVUP(x,vup) (OP (x) | ((((uint64_t)(vup)) & 0xff) << 8))
4047
#define OPVUP_MASK OPVUP (0x3f,  0xff)
4048
4049
/* The main opcode combined with an update code and the RT fields
4050
   specified in D form instruction.  Used for VLE volatile context
4051
   save/restore instructions.  */
4052
#define OPVUPRT(x,vup,rt)     \
4053
  (OPVUP (x, vup)       \
4054
   | ((((uint64_t)(rt)) & 0x1f) << 21))
4055
#define OPVUPRT_MASK OPVUPRT (0x3f, 0xff, 0x1f)
4056
4057
/* An A form instruction.  */
4058
#define A(op, xop, rc)        \
4059
  (OP (op)          \
4060
   | ((((uint64_t)(xop)) & 0x1f) << 1)  \
4061
   | (((uint64_t)(rc)) & 1))
4062
#define A_MASK A (0x3f, 0x1f, 1)
4063
4064
/* An A_MASK with the FRB field fixed.  */
4065
#define AFRB_MASK (A_MASK | FRB_MASK)
4066
4067
/* An A_MASK with the FRC field fixed.  */
4068
#define AFRC_MASK (A_MASK | FRC_MASK)
4069
4070
/* An A_MASK with the FRA and FRC fields fixed.  */
4071
#define AFRAFRC_MASK (A_MASK | FRA_MASK | FRC_MASK)
4072
4073
/* An AFRAFRC_MASK, but with L bit clear.  */
4074
#define AFRALFRC_MASK (AFRAFRC_MASK & ~((uint64_t) 1 << 16))
4075
4076
/* A B form instruction.  */
4077
#define B(op, aa, lk)       \
4078
  (OP (op)          \
4079
   | ((((uint64_t)(aa)) & 1) << 1)    \
4080
   | ((lk) & 1))
4081
#define B_MASK B (0x3f, 1, 1)
4082
4083
/* A BD8 form instruction.  This is a 16-bit instruction.  */
4084
#define BD8(op, aa, lk)       \
4085
  (((((uint64_t)(op)) & 0x3f) << 10)  \
4086
   | (((aa) & 1) << 9)        \
4087
   | (((lk) & 1) << 8))
4088
#define BD8_MASK BD8 (0x3f, 1, 1)
4089
4090
/* Another BD8 form instruction.  This is a 16-bit instruction.  */
4091
#define BD8IO(op) ((((uint64_t)(op)) & 0x1f) << 11)
4092
#define BD8IO_MASK BD8IO (0x1f)
4093
4094
/* A BD8 form instruction for simplified mnemonics.  */
4095
#define EBD8IO(op, bo, bi) (BD8IO ((op)) | ((bo) << 10) | ((bi) << 8))
4096
/* A mask that excludes BO32 and BI32.  */
4097
#define EBD8IO1_MASK 0xf800
4098
/* A mask that includes BO32 and excludes BI32.  */
4099
#define EBD8IO2_MASK 0xfc00
4100
/* A mask that include BO32 AND BI32.  */
4101
#define EBD8IO3_MASK 0xff00
4102
4103
/* A BD15 form instruction.  */
4104
#define BD15(op, aa, lk)      \
4105
  (OP (op)          \
4106
   | ((((uint64_t)(aa)) & 0xf) << 22) \
4107
   | ((lk) & 1))
4108
#define BD15_MASK BD15 (0x3f, 0xf, 1)
4109
4110
/* A BD15 form instruction for extended conditional branch mnemonics.  */
4111
#define EBD15(op, aa, bo, lk)     \
4112
  (((op) & 0x3fu) << 26)      \
4113
  | (((aa) & 0xf) << 22)      \
4114
  | (((bo) & 0x3) << 20)      \
4115
  | ((lk) & 1)
4116
#define EBD15_MASK 0xfff00001
4117
4118
/* A BD15 form instruction for extended conditional branch mnemonics
4119
   with BI.  */
4120
#define EBD15BI(op, aa, bo, bi, lk)   \
4121
  ((((op) & 0x3fu) << 26)     \
4122
   | (((aa) & 0xf) << 22)     \
4123
   | (((bo) & 0x3) << 20)     \
4124
   | (((bi) & 0x3) << 16)     \
4125
   | ((lk) & 1))
4126
4127
#define EBD15BI_MASK  0xfff30001
4128
4129
/* A BD24 form instruction.  */
4130
#define BD24(op, aa, lk)      \
4131
  (OP (op)          \
4132
   | ((((uint64_t)(aa)) & 1) << 25) \
4133
   | ((lk) & 1))
4134
#define BD24_MASK BD24 (0x3f, 1, 1)
4135
4136
/* A B form instruction setting the BO field.  */
4137
#define BBO(op, bo, aa, lk)     \
4138
  (B ((op), (aa), (lk))       \
4139
   | ((((uint64_t)(bo)) & 0x1f) << 21))
4140
#define BBO_MASK BBO (0x3f, 0x1f, 1, 1)
4141
4142
/* A BBO_MASK with the y bit of the BO field removed.  This permits
4143
   matching a conditional branch regardless of the setting of the y
4144
   bit.  Similarly for the 'at' bits used for power4 branch hints.  */
4145
#define Y_MASK   (((uint64_t) 1) << 21)
4146
#define AT1_MASK (((uint64_t) 3) << 21)
4147
#define AT2_MASK (((uint64_t) 9) << 21)
4148
#define BBOY_MASK  (BBO_MASK &~ Y_MASK)
4149
#define BBOAT_MASK (BBO_MASK &~ AT1_MASK)
4150
4151
/* A B form instruction setting the BO field and the condition bits of
4152
   the BI field.  */
4153
#define BBOCB(op, bo, cb, aa, lk) \
4154
  (BBO ((op), (bo), (aa), (lk)) | ((((uint64_t)(cb)) & 0x3) << 16))
4155
#define BBOCB_MASK BBOCB (0x3f, 0x1f, 0x3, 1, 1)
4156
4157
/* A BBOCB_MASK with the y bit of the BO field removed.  */
4158
#define BBOYCB_MASK (BBOCB_MASK &~ Y_MASK)
4159
#define BBOATCB_MASK (BBOCB_MASK &~ AT1_MASK)
4160
#define BBOAT2CB_MASK (BBOCB_MASK &~ AT2_MASK)
4161
4162
/* A BBOYCB_MASK in which the BI field is fixed.  */
4163
#define BBOYBI_MASK (BBOYCB_MASK | BI_MASK)
4164
#define BBOATBI_MASK (BBOAT2CB_MASK | BI_MASK)
4165
4166
/* A VLE C form instruction.  */
4167
#define C_LK(x, lk) (((((uint64_t)(x)) & 0x7fff) << 1) | ((lk) & 1))
4168
#define C_LK_MASK C_LK(0x7fff, 1)
4169
#define C(x) ((((uint64_t)(x)) & 0xffff))
4170
#define C_MASK C(0xffff)
4171
4172
/* An Context form instruction.  */
4173
#define CTX(op, xop)   (OP (op) | (((uint64_t)(xop)) & 0x7))
4174
#define CTX_MASK CTX(0x3f, 0x7)
4175
4176
/* An User Context form instruction.  */
4177
#define UCTX(op, xop)  (OP (op) | (((uint64_t)(xop)) & 0x1f))
4178
#define UCTX_MASK UCTX(0x3f, 0x1f)
4179
4180
/* The main opcode mask with the RA field clear.  */
4181
#define DRA_MASK (OP_MASK | RA_MASK)
4182
4183
/* A DQ form VSX instruction.  */
4184
#define DQX(op, xop) (OP (op) | ((xop) & 0x7))
4185
#define DQX_MASK DQX (0x3f, 7)
4186
4187
/* A DQ form VSX vector paired instruction.  */
4188
#define DQXP(op, xop) (OP (op) | ((xop) & 0xf))
4189
#define DQXP_MASK DQXP (0x3f, 0xf)
4190
4191
/* A DS form instruction.  */
4192
#define DSO(op, xop) (OP (op) | ((xop) & 0x3))
4193
#define DS_MASK DSO (0x3f, 3)
4194
4195
/* An DX form instruction.  */
4196
#define DX(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1f) << 1))
4197
#define DX_MASK DX (0x3f, 0x1f)
4198
/* An DX form instruction with the D bits specified.  */
4199
#define NODX_MASK (DX_MASK | 0x1fffc1)
4200
4201
/* An EVSEL form instruction.  */
4202
#define EVSEL(op, xop) (OP (op) | (((uint64_t)(xop)) & 0xff) << 3)
4203
#define EVSEL_MASK EVSEL(0x3f, 0xff)
4204
4205
/* An IA16 form instruction.  */
4206
#define IA16(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f) << 11)
4207
#define IA16_MASK IA16(0x3f, 0x1f)
4208
4209
/* An I16A form instruction.  */
4210
#define I16A(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f) << 11)
4211
#define I16A_MASK I16A(0x3f, 0x1f)
4212
4213
/* An I16L form instruction.  */
4214
#define I16L(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f) << 11)
4215
#define I16L_MASK I16L(0x3f, 0x1f)
4216
4217
/* An IM7 form instruction.  */
4218
#define IM7(op) ((((uint64_t)(op)) & 0x1f) << 11)
4219
#define IM7_MASK IM7(0x1f)
4220
4221
/* An M form instruction.  */
4222
#define M(op, rc) (OP (op) | ((rc) & 1))
4223
#define M_MASK M (0x3f, 1)
4224
4225
/* An LI20 form instruction.  */
4226
#define LI20(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1) << 15)
4227
#define LI20_MASK LI20(0x3f, 0x1)
4228
4229
/* An M form instruction with the ME field specified.  */
4230
#define MME(op, me, rc)       \
4231
  (M ((op), (rc))       \
4232
   | ((((uint64_t)(me)) & 0x1f) << 1))
4233
4234
/* An M_MASK with the MB field fixed.  */
4235
#define MMB_MASK (M_MASK | MB_MASK)
4236
4237
/* An M_MASK with the ME field fixed.  */
4238
#define MME_MASK (M_MASK | ME_MASK)
4239
4240
/* An M_MASK with the MB and ME fields fixed.  */
4241
#define MMBME_MASK (M_MASK | MB_MASK | ME_MASK)
4242
4243
/* An M_MASK with the SH and ME fields fixed.  */
4244
#define MSHME_MASK (M_MASK | SH_MASK | ME_MASK)
4245
4246
/* An M_MASK with the SH and MB fields fixed.  */
4247
#define MSHMB_MASK (M_MASK | SH_MASK | MB_MASK)
4248
4249
/* An MD form instruction.  */
4250
#define MD(op, xop, rc)       \
4251
  (OP (op)          \
4252
   | ((((uint64_t)(xop)) & 0x7) << 2) \
4253
   | ((rc) & 1))
4254
#define MD_MASK MD (0x3f, 0x7, 1)
4255
4256
/* An MD_MASK with the MB field fixed.  */
4257
#define MDMB_MASK (MD_MASK | MB6_MASK)
4258
4259
/* An MD_MASK with the SH field fixed.  */
4260
#define MDSH_MASK (MD_MASK | SH6_MASK)
4261
4262
/* An MDS form instruction.  */
4263
#define MDS(op, xop, rc)      \
4264
  (OP (op)          \
4265
   | ((((uint64_t)(xop)) & 0xf) << 1) \
4266
   | ((rc) & 1))
4267
#define MDS_MASK MDS (0x3f, 0xf, 1)
4268
4269
/* An MDS_MASK with the MB field fixed.  */
4270
#define MDSMB_MASK (MDS_MASK | MB6_MASK)
4271
4272
/* An SC form instruction.  */
4273
#define SC(op, sa, lk)        \
4274
  (OP (op)          \
4275
   | ((((uint64_t)(sa)) & 1) << 1)    \
4276
   | ((lk) & 1))
4277
#define SC_MASK         \
4278
  (OP_MASK          \
4279
   | (((uint64_t) 0x3ff) << 16)   \
4280
   | (((uint64_t) 1) << 1)      \
4281
   | 1)
4282
4283
/* An SCI8 form instruction.  */
4284
#define SCI8(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1f) << 11))
4285
#define SCI8_MASK SCI8(0x3f, 0x1f)
4286
4287
/* An SCI8 form instruction.  */
4288
#define SCI8BF(op, fop, xop)      \
4289
  (OP (op)          \
4290
   | ((((uint64_t)(xop)) & 0x1f) << 11) \
4291
   | (((fop) & 7) << 23))
4292
#define SCI8BF_MASK SCI8BF(0x3f, 7, 0x1f)
4293
4294
/* An SD4 form instruction.  This is a 16-bit instruction.  */
4295
#define SD4(op) ((((uint64_t)(op)) & 0xf) << 12)
4296
#define SD4_MASK SD4(0xf)
4297
4298
/* An SE_IM5 form instruction.  This is a 16-bit instruction.  */
4299
#define SE_IM5(op, xop)       \
4300
  (((((uint64_t)(op)) & 0x3f) << 10)  \
4301
   | (((xop) & 0x1) << 9))
4302
#define SE_IM5_MASK SE_IM5(0x3f, 1)
4303
4304
/* An SE_R form instruction.  This is a 16-bit instruction.  */
4305
#define SE_R(op, xop)       \
4306
  (((((uint64_t)(op)) & 0x3f) << 10)  \
4307
   | (((xop) & 0x3f) << 4))
4308
#define SE_R_MASK SE_R(0x3f, 0x3f)
4309
4310
/* An SE_RR form instruction.  This is a 16-bit instruction.  */
4311
#define SE_RR(op, xop)        \
4312
  (((((uint64_t)(op)) & 0x3f) << 10)  \
4313
   | (((xop) & 0x3) << 8))
4314
#define SE_RR_MASK SE_RR(0x3f, 3)
4315
4316
/* A VX form instruction.  */
4317
#define VX(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x7ff))
4318
4319
/* The mask for an VX form instruction.  */
4320
#define VX_MASK VX(0x3f, 0x7ff)
4321
4322
/* A VX LSP form instruction.  */
4323
#define VX_LSP(op, xop) (OP (op) | (((uint64_t)(xop)) & 0xffff))
4324
4325
/* The mask for an VX LSP form instruction.  */
4326
#define VX_LSP_MASK VX_LSP(0x3f, 0xffff)
4327
#define VX_LSP_OFF_MASK VX_LSP(0x3f, 0x7fc)
4328
4329
/* Additional format of VX SPE2 form instruction.   */
4330
#define VX_RA_CONST(op, xop, bits11_15)     \
4331
  (OP (op)            \
4332
   | (((uint64_t)(bits11_15) & 0x1f) << 16) \
4333
   | (((uint64_t)(xop)) & 0x7ff))
4334
#define VX_RA_CONST_MASK VX_RA_CONST(0x3f, 0x7ff, 0x1f)
4335
4336
#define VX_RB_CONST(op, xop, bits16_20)     \
4337
  (OP (op)            \
4338
   | (((uint64_t)(bits16_20) & 0x1f) << 11) \
4339
   | (((uint64_t)(xop)) & 0x7ff))
4340
#define VX_RB_CONST_MASK VX_RB_CONST(0x3f, 0x7ff, 0x1f)
4341
4342
#define VX_OFF_SPE2_MASK VX(0x3f, 0x7f8)
4343
4344
#define VX_SPE_CRFD(op, xop, bits9_10)      \
4345
  (OP (op)            \
4346
   | (((uint64_t)(bits9_10) & 0x3) << 21)   \
4347
   | (((uint64_t)(xop)) & 0x7ff))
4348
#define VX_SPE_CRFD_MASK VX_SPE_CRFD(0x3f, 0x7ff, 0x3)
4349
4350
#define VX_SPE2_CLR(op, xop, bit16)     \
4351
  (OP (op)            \
4352
   | (((uint64_t)(bit16) & 0x1) << 15)    \
4353
   | (((uint64_t)(xop)) & 0x7ff))
4354
#define VX_SPE2_CLR_MASK VX_SPE2_CLR(0x3f, 0x7ff, 0x1)
4355
4356
#define VX_SPE2_SPLATB(op, xop, bits19_20)    \
4357
  (OP (op)            \
4358
   | (((uint64_t)(bits19_20) & 0x3) << 11)    \
4359
   | (((uint64_t)(xop)) & 0x7ff))
4360
#define VX_SPE2_SPLATB_MASK VX_SPE2_SPLATB(0x3f, 0x7ff, 0x3)
4361
4362
#define VX_SPE2_OCTET(op, xop, bits16_17)   \
4363
  (OP (op)            \
4364
   | (((uint64_t)(bits16_17) & 0x3) << 14)    \
4365
   | (((uint64_t)(xop)) & 0x7ff))
4366
#define VX_SPE2_OCTET_MASK VX_SPE2_OCTET(0x3f, 0x7ff, 0x7)
4367
4368
#define VX_SPE2_DDHH(op, xop, bit16)      \
4369
  (OP (op)            \
4370
   | (((uint64_t)(bit16) & 0x1) << 15)    \
4371
   | (((uint64_t)(xop)) & 0x7ff))
4372
#define VX_SPE2_DDHH_MASK VX_SPE2_DDHH(0x3f, 0x7ff, 0x1)
4373
4374
#define VX_SPE2_HH(op, xop, bit16, bits19_20)   \
4375
  (OP (op)            \
4376
   | (((uint64_t)(bit16) & 0x1) << 15)    \
4377
   | (((uint64_t)(bits19_20) & 0x3) << 11)  \
4378
   | (((uint64_t)(xop)) & 0x7ff))
4379
#define VX_SPE2_HH_MASK VX_SPE2_HH(0x3f, 0x7ff, 0x1, 0x3)
4380
4381
#define VX_SPE2_EVMAR(op, xop)        \
4382
  (OP (op)            \
4383
   | ((uint64_t)(0x1) << 11)      \
4384
   | (((uint64_t)(xop)) & 0x7ff))
4385
#define VX_SPE2_EVMAR_MASK        \
4386
  (VX_SPE2_EVMAR(0x3f, 0x7ff)       \
4387
   | ((uint64_t)(0x1) << 11))
4388
4389
/* A VX_MASK with the VA field fixed.  */
4390
#define VXVA_MASK (VX_MASK | (0x1f << 16))
4391
4392
/* A VX_MASK with the VB field fixed.  */
4393
#define VXVB_MASK (VX_MASK | (0x1f << 11))
4394
4395
/* A VX_MASK with the VA and VB fields fixed.  */
4396
#define VXVAVB_MASK (VX_MASK | (0x1f << 16) | (0x1f << 11))
4397
4398
/* A VX_MASK with the VD and VA fields fixed.  */
4399
#define VXVDVA_MASK (VX_MASK | (0x1f << 21) | (0x1f << 16))
4400
4401
/* A VX_MASK with a UIMM4 field.  */
4402
#define VXUIMM4_MASK (VX_MASK | (0x1 << 20))
4403
4404
/* A VX_MASK with a UIMM3 field.  */
4405
#define VXUIMM3_MASK (VX_MASK | (0x3 << 19))
4406
4407
/* A VX_MASK with a UIMM2 field.  */
4408
#define VXUIMM2_MASK (VX_MASK | (0x7 << 18))
4409
4410
/* A VX_MASK with a PS field.  */
4411
#define VXPS_MASK (VX_MASK & ~(0x1 << 9))
4412
4413
/* A VX_MASK with the VA field fixed with a PS field.  */
4414
#define VXVAPS_MASK (VXVA_MASK & ~(0x1 << 9))
4415
4416
/* A VX_MASK with the VA field fixed with a MP field.  */
4417
#define VXVAM_MASK (VXVA_MASK & ~(0x1 << 16))
4418
4419
/* A VX_MASK for instructions using a BF field.  */
4420
#define VXBF_MASK (VX_MASK | (3 << 21))
4421
4422
/* A VX_MASK for instructions with an RC field.  */
4423
#define VXRC_MASK (VX_MASK & ~(0x1f << 6))
4424
4425
/* A VX_MASK for instructions with a SH field.  */
4426
#define VXSH_MASK (VX_MASK & ~(0x7 << 6))
4427
4428
/* A VA form instruction.  */
4429
#define VXA(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x03f))
4430
4431
/* The mask for an VA form instruction.  */
4432
#define VXA_MASK VXA(0x3f, 0x3f)
4433
4434
/* A VXA_MASK with a SHB field.  */
4435
#define VXASHB_MASK (VXA_MASK | (1 << 10))
4436
4437
/* A VXR form instruction.  */
4438
#define VXR(op, xop, rc)      \
4439
  (OP (op)          \
4440
   | (((uint64_t)(rc) & 1) << 10)   \
4441
   | (((uint64_t)(xop)) & 0x3ff))
4442
4443
/* The mask for a VXR form instruction.  */
4444
#define VXR_MASK VXR(0x3f, 0x3ff, 1)
4445
4446
/* A VX form instruction with a VA tertiary opcode.  */
4447
#define VXVA(op, xop, vaop) (VX(op,xop) | (((vaop) & 0x1f) << 16))
4448
4449
#define VXASH(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1f) << 1))
4450
#define VXASH_MASK VXASH (0x3f, 0x1f)
4451
4452
/* An X form instruction.  */
4453
#define X(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x3ff) << 1))
4454
4455
/* A X form instruction for Quad-Precision FP Instructions.  */
4456
#define XVA(op, xop, vaop) (X(op,xop) | (((vaop) & 0x1f) << 16))
4457
4458
/* An EX form instruction.  */
4459
#define EX(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x7ff))
4460
4461
/* The mask for an EX form instruction.  */
4462
#define EX_MASK EX (0x3f, 0x7ff)
4463
4464
/* An XX2 form instruction.  */
4465
#define XX2(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1ff) << 2))
4466
4467
/* A XX2 form instruction with the VA bits specified.  */
4468
#define XX2VA(op, xop, vaop) (XX2(op,xop) | (((vaop) & 0x1f) << 16))
4469
4470
/* An XX3 form instruction.  */
4471
#define XX3(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0xff) << 3))
4472
4473
/* An XX3 form instruction with the RC bit specified.  */
4474
#define XX3RC(op, xop, rc)      \
4475
  (OP (op)          \
4476
   | (((uint64_t)(rc) & 1) << 10)   \
4477
   | ((((uint64_t)(xop)) & 0x7f) << 3))
4478
4479
/* An XX4 form instruction.  */
4480
#define XX4(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x3) << 4))
4481
4482
/* A Z form instruction.  */
4483
#define Z(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1ff) << 1))
4484
4485
/* An X form instruction with the RC bit specified.  */
4486
#define XRC(op, xop, rc) (X ((op), (xop)) | ((rc) & 1))
4487
4488
/* A X form instruction for Quad-Precision FP Instructions with RC bit.  */
4489
#define XVARC(op, xop, vaop, rc) (XVA ((op), (xop), (vaop)) | ((rc) & 1))
4490
4491
/* An X form instruction with the RA bits specified as two ops.  */
4492
#define XMMF(op, xop, mop0, mop1)   \
4493
  (X ((op), (xop))        \
4494
   | ((mop0) & 3) << 19       \
4495
   | ((mop1) & 7) << 16)
4496
4497
/* A Z form instruction with the RC bit specified.  */
4498
#define ZRC(op, xop, rc) (Z ((op), (xop)) | ((rc) & 1))
4499
4500
/* The mask for an X form instruction.  */
4501
#define X_MASK XRC (0x3f, 0x3ff, 1)
4502
4503
/* The mask for an X form instruction with the BF bits specified.  */
4504
#define XBF_MASK (X_MASK | (3 << 21))
4505
4506
/* An X form instruction without the RC field specified.  */
4507
#define XRC_MASK XRC (0x3f, 0x3ff, 0)
4508
4509
/* An X form wait instruction with everything filled in except the WC
4510
   field.  */
4511
#define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK)
4512
4513
/* An X form wait instruction with everything filled in except the WC
4514
   and PL fields.  */
4515
#define XWCPL_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | (3 << 18) | RB_MASK)
4516
4517
/* The mask for an XX1 form instruction.  */
4518
#define XX1_MASK X (0x3f, 0x3ff)
4519
4520
/* An XX1_MASK with the RB field fixed.  */
4521
#define XX1RB_MASK (XX1_MASK | RB_MASK)
4522
4523
/* The mask for an XX2 form instruction.  */
4524
#define XX2_MASK (XX2 (0x3f, 0x1ff) | (0x1f << 16))
4525
4526
/* The mask for an XX2 form instruction with the UIM bits specified.  */
4527
#define XX2UIM_MASK (XX2 (0x3f, 0x1ff) | (7 << 18))
4528
4529
/* The mask for an XX2 form instruction with the 4 UIM bits specified.  */
4530
#define XX2UIM4_MASK (XX2 (0x3f, 0x1ff) | (1 << 20))
4531
4532
/* The mask for an XX2 form instruction with the BF bits specified.  */
4533
#define XX2BF_MASK (XX2_MASK | (3 << 21) | (1))
4534
4535
/* The mask for an XX2 form instruction with the BF and DCMX bits
4536
   specified.  */
4537
#define XX2BFD_MASK (XX2 (0x3f, 0x1ff) | 1)
4538
4539
/* The mask for an XX2 form instruction with a split DCMX bits
4540
   specified.  */
4541
#define XX2DCMXS_MASK XX2 (0x3f, 0x1ee)
4542
4543
/* The mask for an XX3 form instruction.  */
4544
#define XX3_MASK XX3 (0x3f, 0xff)
4545
4546
/* The mask for an XX3 form instruction with the BF bits specified.  */
4547
#define XX3BF_MASK (XX3 (0x3f, 0xff) | (3 << 21) | (1))
4548
4549
/* An X_MASK with an accumulator register and the RA and RB fields fixed.  */
4550
#define XACC_MASK (X_MASK | RA_MASK | RB_MASK | (3 << 21))
4551
#define XDMR_MASK XACC_MASK
4552
4553
/* An X_MASK with two dense math register.  */
4554
#define XDMRDMR_MASK (X_MASK | RA_MASK | (3 << 21) | (3 << 11))
4555
4556
/* The mask for an XX3 form instruction with the DM or SHW bits
4557
   specified.  */
4558
#define XX3DM_MASK (XX3 (0x3f, 0x1f) | (1 << 10))
4559
#define XX3SHW_MASK XX3DM_MASK
4560
4561
/* The masks for X* form instructions with an ACC/DMR register.  */
4562
#define XX2ACC_MASK (XX2 (0x3f, 0x1ff) | (3 << 21) | 1)
4563
#define XX3ACC_MASK (XX3_MASK | (3 << 21) | 1)
4564
#define XX3DMR_MASK (XX3ACC_MASK | (1 << 11))
4565
#define XX2DMR_MASK (XX2ACC_MASK | (0xf << 17))
4566
#define XX3GERX_MASK (XX3ACC_MASK | (1 << 16))
4567
4568
/* The mask for an XX4 form instruction.  */
4569
#define XX4_MASK XX4 (0x3f, 0x3)
4570
4571
/* An X form wait instruction with everything filled in except the WC
4572
   field.  */
4573
#define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK)
4574
4575
/* The mask for an XMMF form instruction.  */
4576
#define XMMF_MASK (XMMF (0x3f, 0x3ff, 3, 7) | (1))
4577
4578
/* The mask for a Z form instruction.  */
4579
#define Z_MASK ZRC (0x3f, 0x1ff, 1)
4580
#define Z2_MASK ZRC (0x3f, 0xff, 1)
4581
4582
/* An X_MASK with the RA/VA field fixed.  */
4583
#define XRA_MASK (X_MASK | RA_MASK)
4584
#define XVA_MASK XRA_MASK
4585
4586
/* An XRA_MASK with the A_L/W field clear.  */
4587
#define XWRA_MASK (XRA_MASK & ~((uint64_t) 1 << 16))
4588
#define XRLA_MASK XWRA_MASK
4589
4590
/* An X_MASK with the RB field fixed.  */
4591
#define XRB_MASK (X_MASK | RB_MASK)
4592
4593
/* An X_MASK with the RT field fixed.  */
4594
#define XRT_MASK (X_MASK | RT_MASK)
4595
4596
/* An XRT_MASK mask with the 2 L bits clear.  */
4597
#define XLRT_MASK (XRT_MASK & ~((uint64_t) 0x3 << 21))
4598
4599
/* An XRT_MASK mask with the 3 L bits clear.  */
4600
#define XL3RT_MASK (XRT_MASK & ~((uint64_t) 0x7 << 21))
4601
4602
/* An X_MASK with the RA and RB fields fixed.  */
4603
#define XRARB_MASK (X_MASK | RA_MASK | RB_MASK)
4604
4605
/* An XBF_MASK with the RA and RB fields fixed.  */
4606
#define XBFRARB_MASK (XBF_MASK | RA_MASK | RB_MASK)
4607
4608
/* An XRARB_MASK, but with the L bit clear.  */
4609
#define XRLARB_MASK (XRARB_MASK & ~((uint64_t) 1 << 16))
4610
4611
/* An XRARB_MASK, but with the L bits in a darn instruction clear.  */
4612
#define XLRAND_MASK (XRARB_MASK & ~((uint64_t) 3 << 16))
4613
4614
/* An X_MASK with the RT and RA fields fixed.  */
4615
#define XRTRA_MASK (X_MASK | RT_MASK | RA_MASK)
4616
4617
/* An X_MASK with the RT and RB fields fixed.  */
4618
#define XRTRB_MASK (X_MASK | RT_MASK | RB_MASK)
4619
4620
/* An XRTRA_MASK, but with L bit clear.  */
4621
#define XRTLRA_MASK (XRTRA_MASK & ~((uint64_t) 1 << 21))
4622
4623
/* An X_MASK with the RT, RA and RB fields fixed.  */
4624
#define XRTRARB_MASK (X_MASK | RT_MASK | RA_MASK | RB_MASK)
4625
4626
/* An XRTRARB_MASK, but with L bit clear.  */
4627
#define XRTLRARB_MASK (XRTRARB_MASK & ~((uint64_t) 1 << 21))
4628
4629
/* An XRTRARB_MASK, but with A bit clear.  */
4630
#define XRTARARB_MASK (XRTRARB_MASK & ~((uint64_t) 1 << 25))
4631
4632
/* An XRTRARB_MASK, but with BF bits clear.  */
4633
#define XRTBFRARB_MASK (XRTRARB_MASK & ~((uint64_t) 7 << 23))
4634
4635
/* An X form instruction with the L bit specified.  */
4636
#define XOPL(op, xop, l)      \
4637
  (X ((op), (xop))        \
4638
   | ((((uint64_t)(l)) & 1) << 21))
4639
4640
/* An X form instruction with the 2 L bits specified.  */
4641
#define XOPL2(op, xop, l)     \
4642
  (X ((op), (xop))        \
4643
   | ((((uint64_t)(l)) & 3) << 21))
4644
4645
/* An X form instruction with the 3 L bits specified.  */
4646
#define XOPL3(op, xop, l)     \
4647
  (X ((op), (xop))        \
4648
   | ((((uint64_t)(l)) & 7) << 21))
4649
4650
/* An X form instruction with the WC and PL bits specified.  */
4651
#define XWCPL(op, xop, wc, pl)      \
4652
  (XOPL3 ((op), (xop), (wc))      \
4653
   | ((((uint64_t)(pl)) & 3) << 16))
4654
4655
/* An X form instruction with the L bit and RC bit specified.  */
4656
#define XRCL(op, xop, l, rc)      \
4657
  (XRC ((op), (xop), (rc))      \
4658
   | ((((uint64_t)(l)) & 1) << 21))
4659
4660
/* An X form instruction with RT fields specified */
4661
#define XRT(op, xop, rt)      \
4662
  (X ((op), (xop))        \
4663
   | ((((uint64_t)(rt)) & 0x1f) << 21))
4664
4665
/* An X form instruction with RT and RA fields specified */
4666
#define XRTRA(op, xop, rt, ra)      \
4667
  (X ((op), (xop))        \
4668
   | ((((uint64_t)(rt)) & 0x1f) << 21)  \
4669
   | ((((uint64_t)(ra)) & 0x1f) << 16))
4670
4671
/* The mask for an X form comparison instruction.  */
4672
#define XCMP_MASK (X_MASK | (((uint64_t)1) << 22))
4673
4674
/* The mask for an X form comparison instruction with the L field
4675
   fixed.  */
4676
#define XCMPL_MASK (XCMP_MASK | (((uint64_t)1) << 21))
4677
4678
/* An X form trap instruction with the TO field specified.  */
4679
#define XTO(op, xop, to)      \
4680
  (X ((op), (xop))        \
4681
   | ((((uint64_t)(to)) & 0x1f) << 21))
4682
#define XTO_MASK (X_MASK | TO_MASK)
4683
4684
/* An X form tlb instruction with the SH field specified.  */
4685
#define XTLB(op, xop, sh)     \
4686
  (X ((op), (xop))        \
4687
   | ((((uint64_t)(sh)) & 0x1f) << 11))
4688
#define XTLB_MASK (X_MASK | SH_MASK)
4689
4690
/* An X form sync instruction.  */
4691
#define XSYNC(op, xop, l)     \
4692
  (X ((op), (xop))        \
4693
   | ((((uint64_t)(l)) & 3) << 21))
4694
4695
/* An X form sync instruction with everything filled in except the LS
4696
   field.  */
4697
#define XSYNC_MASK (0xff9fffff)
4698
4699
/* An X form sync instruction with everything filled in except the L
4700
   and E fields.  */
4701
#define XSYNCLE_MASK (0xff90ffff)
4702
4703
/* An X form sync instruction.  */
4704
#define XSYNCLS(op, xop, l, s)      \
4705
  (X ((op), (xop))        \
4706
   | ((((uint64_t)(l)) & 7) << 21)    \
4707
   | ((((uint64_t)(s)) & 3) << 16))
4708
4709
/* An X form sync instruction with everything filled in except the
4710
   L and SC fields.  */
4711
#define XSYNCLS_MASK (0xff1cffff)
4712
4713
/* An X_MASK, but with the EH bit clear.  */
4714
#define XEH_MASK (X_MASK & ~((uint64_t )1))
4715
4716
/* An X form AltiVec dss instruction.  */
4717
#define XDSS(op, xop, a) (X ((op), (xop)) | ((((uint64_t)(a)) & 1) << 25))
4718
#define XDSS_MASK XDSS(0x3f, 0x3ff, 1)
4719
4720
/* An XFL form instruction.  */
4721
#define XFL(op, xop, rc)      \
4722
  (OP (op)          \
4723
   | ((((uint64_t)(xop)) & 0x3ff) << 1) \
4724
   | (((uint64_t)(rc)) & 1))
4725
#define XFL_MASK XFL (0x3f, 0x3ff, 1)
4726
4727
/* An X form isel instruction.  */
4728
#define XISEL(op, xop, cr)  (OP (op) | ((xop) << 1) | ((cr) << 6))
4729
#define XISEL_MASK  XISEL(0x3f, 0x1f, 0)
4730
4731
/* An XL form instruction with the LK field set to 0.  */
4732
#define XL(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x3ff) << 1))
4733
4734
/* An XL form instruction which uses the LK field.  */
4735
#define XLLK(op, xop, lk) (XL ((op), (xop)) | ((lk) & 1))
4736
4737
/* The mask for an XL form instruction.  */
4738
#define XL_MASK XLLK (0x3f, 0x3ff, 1)
4739
4740
/* An XL_MASK with the RT, RA and RB fields fixed, but S bit clear.  */
4741
#define XLS_MASK ((XL_MASK | RT_MASK | RA_MASK | RB_MASK) & ~(1 << 11))
4742
4743
/* An XL form instruction which explicitly sets the BO field.  */
4744
#define XLO(op, bo, xop, lk) \
4745
  (XLLK ((op), (xop), (lk)) | ((((uint64_t)(bo)) & 0x1f) << 21))
4746
#define XLO_MASK (XL_MASK | BO_MASK)
4747
4748
/* An XL form instruction which sets the BO field and the condition
4749
   bits of the BI field.  */
4750
#define XLOCB(op, bo, cb, xop, lk) \
4751
  (XLO ((op), (bo), (xop), (lk)) | ((((uint64_t)(cb)) & 3) << 16))
4752
4753
/* An XL_MASK with the BB field fixed.  */
4754
#define XLBB_MASK (XL_MASK | BB_MASK)
4755
4756
/* A mask for branch instructions using the BH field.  */
4757
#define XLBH_MASK (XL_MASK | (BB_MASK & ~(3 << 11)))
4758
4759
/* An XLBH_MASK with the BO field fixed.  */
4760
#define XLBOBB_MASK (XLBH_MASK | BO_MASK)
4761
4762
/* An XLBH_MASK with the BO and BI fields fixed.  */
4763
#define XLBOBIBB_MASK (XLBOBB_MASK | BI_MASK)
4764
4765
/* An XLBH_MASK with the BO and condition bits of the BI fields fixed.  */
4766
#define XLBOCBBB_MASK (XLBOBB_MASK | (3 << 16))
4767
4768
/* An X form mbar instruction with MO field.  */
4769
#define XMBAR(op, xop, mo)      \
4770
  (X ((op), (xop))        \
4771
   | ((((uint64_t)(mo)) & 1) << 21))
4772
4773
/* An XO form instruction.  */
4774
#define XO(op, xop, oe, rc)     \
4775
  (OP (op)          \
4776
   | ((((uint64_t)(xop)) & 0x1ff) << 1) \
4777
   | ((((uint64_t)(oe)) & 1) << 10) \
4778
   | (((unsigned long)(rc)) & 1))
4779
#define XO_MASK XO (0x3f, 0x1ff, 1, 1)
4780
#define XOL_MASK XO (0x3f, 0x1ff, 0, 1)
4781
4782
/* An XO_MASK with the RB field fixed.  */
4783
#define XORB_MASK (XO_MASK | RB_MASK)
4784
4785
/* An XOPS form instruction for paired singles.  */
4786
#define XOPS(op, xop, rc)     \
4787
  (OP (op)          \
4788
   | ((((uint64_t)(xop)) & 0x3ff) << 1) \
4789
   | (((uint64_t)(rc)) & 1))
4790
#define XOPS_MASK XOPS (0x3f, 0x3ff, 1)
4791
4792
4793
/* An XS form instruction.  */
4794
#define XS(op, xop, rc)       \
4795
  (OP (op)          \
4796
   | ((((uint64_t)(xop)) & 0x1ff) << 2) \
4797
   | (((uint64_t)(rc)) & 1))
4798
#define XS_MASK XS (0x3f, 0x1ff, 1)
4799
4800
/* A mask for the FXM version of an XFX form instruction.  */
4801
#define XFXFXM_MASK (X_MASK | (1 << 11) | (1 << 20))
4802
4803
/* An XFX form instruction with the FXM field filled in.  */
4804
#define XFXM(op, xop, fxm, p4)      \
4805
  (X ((op), (xop))        \
4806
   | ((((uint64_t)(fxm)) & 0xff) << 12) \
4807
   | ((uint64_t)(p4) << 20))
4808
4809
/* An XFX form instruction with the SPR field filled in.  */
4810
#define XSPR(op, xop, spr)      \
4811
  (X ((op), (xop))        \
4812
   | ((((uint64_t)(spr)) & 0x1f) << 16) \
4813
   | ((((uint64_t)(spr)) & 0x3e0) << 6))
4814
#define XSPR_MASK (X_MASK | SPR_MASK)
4815
4816
/* An XFX form instruction with the SPR field filled in except for the
4817
   SPRBAT field.  */
4818
#define XSPRBAT_MASK (XSPR_MASK &~ SPRBAT_MASK)
4819
4820
/* An XFX form instruction with the SPR field filled in except for the
4821
   SPRGQR field.  */
4822
#define XSPRGQR_MASK (XSPR_MASK &~ SPRGQR_MASK)
4823
4824
/* An XFX form instruction with the SPR field filled in except for the
4825
   SPRG field.  */
4826
#define XSPRG_MASK (XSPR_MASK & ~(0x1f << 16))
4827
4828
/* An X form instruction with everything filled in except the E field.  */
4829
#define XE_MASK (0xffff7fff)
4830
4831
/* An X form user context instruction.  */
4832
#define XUC(op, xop)  (OP (op) | (((uint64_t)(xop)) & 0x1f))
4833
#define XUC_MASK      XUC(0x3f, 0x1f)
4834
4835
/* An XW form instruction.  */
4836
#define XW(op, xop, rc)       \
4837
  (OP (op)          \
4838
   | ((((uint64_t)(xop)) & 0x3f) << 1)  \
4839
   | ((rc) & 1))
4840
/* The mask for a G form instruction. rc not supported at present.  */
4841
#define XW_MASK XW (0x3f, 0x3f, 0)
4842
4843
/* An APU form instruction.  */
4844
#define APU(op, xop, rc)      \
4845
  (OP (op)          \
4846
   | (((uint64_t)(xop)) & 0x3ff) << 1 \
4847
   | ((rc) & 1))
4848
4849
/* The mask for an APU form instruction.  */
4850
#define APU_MASK APU (0x3f, 0x3ff, 1)
4851
#define APU_RT_MASK (APU_MASK | RT_MASK)
4852
#define APU_RA_MASK (APU_MASK | RA_MASK)
4853
4854
/* An SVL form instruction. */
4855
#define SVL(op, xop, rc)      \
4856
  (OP (op)          \
4857
   | ((((uint64_t)(xop)) & 0x1f) << 1)    \
4858
   | (((uint64_t)(rc)) & 1))
4859
#define SVL_MASK  SVL (0x3f, 0x1f, 1)
4860
4861
/* An SVM form instruction. */
4862
#define SVM(op, xop)        \
4863
  (OP (op)          \
4864
   | (((uint64_t)(xop)) & 0x3f))
4865
#define SVM_MASK  SVM (0x3f, 0x3f)
4866
4867
/* An SVRM form instruction. */
4868
#define SVRM(op, xop)       \
4869
  (OP (op)          \
4870
   | (((uint64_t)(xop)) & 0x3f))
4871
#define SVRM_MASK SVRM (0x3f, 0x3f)
4872
4873
/* An SVI form instruction. */
4874
#define SVI(op, xop)        \
4875
  (OP (op)          \
4876
   | (((uint64_t)(xop)) & 0x3f))
4877
#define SVI_MASK  SVI (0x3f, 0x3f)
4878
4879
/* The BO encodings used in extended conditional branch mnemonics.  */
4880
#define BODNZF  (0x0)
4881
#define BODNZFP (0x1)
4882
#define BODZF (0x2)
4883
#define BODZFP  (0x3)
4884
#define BODNZT  (0x8)
4885
#define BODNZTP (0x9)
4886
#define BODZT (0xa)
4887
#define BODZTP  (0xb)
4888
4889
#define BOF (0x4)
4890
#define BOFP  (0x5)
4891
#define BOFM4 (0x6)
4892
#define BOFP4 (0x7)
4893
#define BOT (0xc)
4894
#define BOTP  (0xd)
4895
#define BOTM4 (0xe)
4896
#define BOTP4 (0xf)
4897
4898
#define BODNZ (0x10)
4899
#define BODNZP  (0x11)
4900
#define BODZ  (0x12)
4901
#define BODZP (0x13)
4902
#define BODNZM4 (0x18)
4903
#define BODNZP4 (0x19)
4904
#define BODZM4  (0x1a)
4905
#define BODZP4  (0x1b)
4906
4907
#define BOU (0x14)
4908
4909
/* The BO16 encodings used in extended VLE conditional branch mnemonics.  */
4910
#define BO16F   (0x0)
4911
#define BO16T   (0x1)
4912
4913
/* The BO32 encodings used in extended VLE conditional branch mnemonics.  */
4914
#define BO32F   (0x0)
4915
#define BO32T   (0x1)
4916
#define BO32DNZ (0x2)
4917
#define BO32DZ  (0x3)
4918
4919
/* The BI condition bit encodings used in extended conditional branch
4920
   mnemonics.  */
4921
#define CBLT  (0)
4922
#define CBGT  (1)
4923
#define CBEQ  (2)
4924
#define CBSO  (3)
4925
4926
/* The TO encodings used in extended trap mnemonics.  */
4927
#define TOLGT (0x1)
4928
#define TOLLT (0x2)
4929
#define TOEQ  (0x4)
4930
#define TOLGE (0x5)
4931
#define TOLNL (0x5)
4932
#define TOLLE (0x6)
4933
#define TOLNG (0x6)
4934
#define TOGT  (0x8)
4935
#define TOGE  (0xc)
4936
#define TONL  (0xc)
4937
#define TOLT  (0x10)
4938
#define TOLE  (0x14)
4939
#define TONG  (0x14)
4940
#define TONE  (0x18)
4941
#define TOU (0x1f)
4942

4943
/* Smaller names for the flags so each entry in the opcodes table will
4944
   fit on a single line.  */
4945
#undef  PPC
4946
#define PPC PPC_OPCODE_PPC
4947
#define PPCCOM  PPC_OPCODE_PPC | PPC_OPCODE_COMMON
4948
#define POWER4  PPC_OPCODE_POWER4
4949
#define POWER5  PPC_OPCODE_POWER5
4950
#define POWER6  PPC_OPCODE_POWER6
4951
#define POWER7  PPC_OPCODE_POWER7
4952
#define POWER8  PPC_OPCODE_POWER8
4953
#define POWER9  PPC_OPCODE_POWER9
4954
#define POWER10 PPC_OPCODE_POWER10
4955
#define FUTURE  PPC_OPCODE_FUTURE
4956
#define CELL  PPC_OPCODE_CELL
4957
#define PPC64 PPC_OPCODE_64 | PPC_OPCODE_64_BRIDGE
4958
#define NON32 (PPC_OPCODE_64 | PPC_OPCODE_POWER4  \
4959
     | PPC_OPCODE_EFS | PPC_OPCODE_E500MC | PPC_OPCODE_TITAN)
4960
#define PPC403  PPC_OPCODE_403
4961
#define PPC405  PPC_OPCODE_405
4962
#define PPC440  PPC_OPCODE_440
4963
#define PPC464  PPC440
4964
#define PPC476  PPC_OPCODE_476
4965
#define PPC750  PPC_OPCODE_750
4966
#define GEKKO PPC_OPCODE_750
4967
#define BROADWAY PPC_OPCODE_750
4968
#define PPC7450 PPC_OPCODE_7450
4969
#define PPC860  PPC_OPCODE_860
4970
#define PPCPS PPC_OPCODE_PPCPS
4971
#define PPCVEC  PPC_OPCODE_ALTIVEC
4972
#define PPCVEC2 (PPC_OPCODE_POWER8 | PPC_OPCODE_E6500)
4973
#define PPCVEC3 PPC_OPCODE_POWER9
4974
#define PPCVSX  PPC_OPCODE_VSX
4975
#define PPCVSX2 PPC_OPCODE_POWER8
4976
#define PPCVSX3 PPC_OPCODE_POWER9
4977
#define PPCVSX4 PPC_OPCODE_POWER10
4978
#define PPCVSXF PPC_OPCODE_FUTURE
4979
#define POWER PPC_OPCODE_POWER
4980
#define POWER2  PPC_OPCODE_POWER | PPC_OPCODE_POWER2
4981
#define PWR2COM PPC_OPCODE_POWER | PPC_OPCODE_POWER2 | PPC_OPCODE_COMMON
4982
#define PPCPWR2 (PPC_OPCODE_PPC | PPC_OPCODE_POWER | PPC_OPCODE_POWER2 \
4983
     | PPC_OPCODE_COMMON)
4984
#define COM PPC_OPCODE_POWER | PPC_OPCODE_PPC | PPC_OPCODE_COMMON
4985
#define M601  PPC_OPCODE_POWER | PPC_OPCODE_601
4986
#define PWRCOM  PPC_OPCODE_POWER | PPC_OPCODE_601 | PPC_OPCODE_COMMON
4987
#define MFDEC1  PPC_OPCODE_POWER
4988
#define MFDEC2  (PPC_OPCODE_PPC | PPC_OPCODE_601 | PPC_OPCODE_BOOKE \
4989
     | PPC_OPCODE_TITAN)
4990
#define BOOKE PPC_OPCODE_BOOKE
4991
#define NO371 PPC_OPCODE_BOOKE | PPC_OPCODE_PPCPS | PPC_OPCODE_EFS
4992
#define PPCE300 PPC_OPCODE_E300
4993
#define PPCSPE  PPC_OPCODE_SPE
4994
#define PPCSPE2 PPC_OPCODE_SPE2
4995
#define PPCISEL PPC_OPCODE_ISEL
4996
#define PPCEFS  PPC_OPCODE_EFS
4997
#define PPCEFS2 PPC_OPCODE_EFS2
4998
#define PPCBRLK PPC_OPCODE_BRLOCK
4999
#define PPCPMR  PPC_OPCODE_PMR
5000
#define PPCTMR  PPC_OPCODE_TMR
5001
#define PPCCHLK PPC_OPCODE_CACHELCK
5002
#define PPCRFMCI PPC_OPCODE_RFMCI
5003
#define E500MC  PPC_OPCODE_E500MC
5004
#define PPCA2 PPC_OPCODE_A2
5005
#define TITAN PPC_OPCODE_TITAN
5006
#define MULHW PPC_OPCODE_405 | PPC_OPCODE_440 | PPC_OPCODE_476 | TITAN
5007
#define E500  PPC_OPCODE_E500
5008
#define E6500 PPC_OPCODE_E6500
5009
#define PPCVLE  PPC_OPCODE_VLE
5010
#define PPCHTM  PPC_OPCODE_POWER8
5011
#define E200Z4  PPC_OPCODE_E200Z4
5012
#define PPCLSP  PPC_OPCODE_LSP
5013
#define SVP64 PPC_OPCODE_SVP64
5014
/* Used to mark extended mnemonic in deprecated field so that -Mraw
5015
   won't use this variant in disassembly.  */
5016
#define EXT PPC_OPCODE_RAW
5017

5018
/* The opcode table.
5019
5020
   The format of the opcode table is:
5021
5022
   NAME   OPCODE    MASK       FLAGS  ANTI    {OPERANDS}
5023
5024
   NAME is the name of the instruction.
5025
   OPCODE is the instruction opcode.
5026
   MASK is the opcode mask; this is used to tell the disassembler
5027
     which bits in the actual opcode must match OPCODE.
5028
   FLAGS are flags indicating which processors support the instruction.
5029
   ANTI indicates which processors don't support the instruction.
5030
   OPERANDS is the list of operands.
5031
5032
   The disassembler reads the table in order and prints the first
5033
   instruction which matches, so this table is sorted to put more
5034
   specific instructions before more general instructions.
5035
5036
   This table must be sorted by major opcode.  Please try to keep it
5037
   vaguely sorted within major opcode too, except of course where
5038
   constrained otherwise by disassembler operation.  */
5039
5040
const struct powerpc_opcode powerpc_opcodes[] = {
5041
{"attn",  X(0,256), X_MASK,   POWER4|PPCA2, PPC476|PPCVLE,  {0}},
5042
{"tdlgti",  OPTO(2,TOLGT),  OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5043
{"tdllti",  OPTO(2,TOLLT),  OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5044
{"tdeqi", OPTO(2,TOEQ), OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5045
{"tdlgei",  OPTO(2,TOLGE),  OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5046
{"tdlnli",  OPTO(2,TOLNL),  OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5047
{"tdllei",  OPTO(2,TOLLE),  OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5048
{"tdlngi",  OPTO(2,TOLNG),  OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5049
{"tdgti", OPTO(2,TOGT), OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5050
{"tdgei", OPTO(2,TOGE), OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5051
{"tdnli", OPTO(2,TONL), OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5052
{"tdlti", OPTO(2,TOLT), OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5053
{"tdlei", OPTO(2,TOLE), OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5054
{"tdngi", OPTO(2,TONG), OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5055
{"tdnei", OPTO(2,TONE), OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5056
{"tdui",  OPTO(2,TOU),  OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5057
{"tdi",   OP(2),    OP_MASK,     PPC64, PPCVLE,   {TO, RA, SI}},
5058
5059
{"twlgti",  OPTO(3,TOLGT),  OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5060
{"tlgti", OPTO(3,TOLGT),  OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5061
{"twllti",  OPTO(3,TOLLT),  OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5062
{"tllti", OPTO(3,TOLLT),  OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5063
{"tweqi", OPTO(3,TOEQ), OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5064
{"teqi",  OPTO(3,TOEQ), OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5065
{"twlgei",  OPTO(3,TOLGE),  OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5066
{"tlgei", OPTO(3,TOLGE),  OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5067
{"twlnli",  OPTO(3,TOLNL),  OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5068
{"tlnli", OPTO(3,TOLNL),  OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5069
{"twllei",  OPTO(3,TOLLE),  OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5070
{"tllei", OPTO(3,TOLLE),  OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5071
{"twlngi",  OPTO(3,TOLNG),  OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5072
{"tlngi", OPTO(3,TOLNG),  OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5073
{"twgti", OPTO(3,TOGT), OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5074
{"tgti",  OPTO(3,TOGT), OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5075
{"twgei", OPTO(3,TOGE), OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5076
{"tgei",  OPTO(3,TOGE), OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5077
{"twnli", OPTO(3,TONL), OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5078
{"tnli",  OPTO(3,TONL), OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5079
{"twlti", OPTO(3,TOLT), OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5080
{"tlti",  OPTO(3,TOLT), OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5081
{"twlei", OPTO(3,TOLE), OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5082
{"tlei",  OPTO(3,TOLE), OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5083
{"twngi", OPTO(3,TONG), OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5084
{"tngi",  OPTO(3,TONG), OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5085
{"twnei", OPTO(3,TONE), OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5086
{"tnei",  OPTO(3,TONE), OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5087
{"twui",  OPTO(3,TOU),  OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5088
{"tui",   OPTO(3,TOU),  OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5089
{"twi",   OP(3),    OP_MASK,     PPCCOM,  PPCVLE,   {TO, RA, SI}},
5090
{"ti",    OP(3),    OP_MASK,     PWRCOM,  PPCVLE,   {TO, RA, SI}},
5091
5092
{"ps_cmpu0",  X  (4,   0),  XBF_MASK,    PPCPS, 0,    {BF, FRA, FRB}},
5093
{"vaddubm", VX (4,   0),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5094
{"vmul10cuq", VX (4,   1),  VXVB_MASK,   PPCVEC3, 0,    {VD, VA}},
5095
{"vmaxub",  VX (4,   2),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5096
{"vrlb",  VX (4,   4),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5097
{"vrlq",  VX (4,   5),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5098
{"vcmpequb",  VXR(4,   6,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5099
{"vcmpneb", VXR(4,   7,0),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5100
{"vmuloub", VX (4,   8),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5101
{"vaddfp",  VX (4,  10),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5102
{"vdivuq",  VX (4,  11),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5103
{"psq_lx",  XW (4,   6,0),  XW_MASK,     PPCPS, 0,    {FRT,RA,RB,PSWM,PSQM}},
5104
{"vmrghb",  VX (4,  12),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5105
{"vstribl", VXVA(4,13,0), VXVA_MASK,   POWER10, 0,    {VD, VB}},
5106
{"vstribr", VXVA(4,13,1), VXVA_MASK,   POWER10, 0,    {VD, VB}},
5107
{"vstrihl", VXVA(4,13,2), VXVA_MASK,   POWER10, 0,    {VD, VB}},
5108
{"vstrihr", VXVA(4,13,3), VXVA_MASK,   POWER10, 0,    {VD, VB}},
5109
{"psq_stx", XW (4,   7,0),  XW_MASK,     PPCPS, 0,    {FRS,RA,RB,PSWM,PSQM}},
5110
{"vpkuhum", VX (4,  14),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5111
{"vinsbvlx",  VX (4,  15),  VX_MASK,     POWER10, 0,    {VD, RA, VB}},
5112
{"mulhhwu", XRC(4,   8,0),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5113
{"mulhhwu.",  XRC(4,   8,1),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5114
{"mtvsrbmi",  DX (4,10),  DX_MASK,     POWER10, 0,    {VD, DXD}},
5115
{"ps_sum0", A  (4,  10,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5116
{"ps_sum0.",  A  (4,  10,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5117
{"vsldbi",  VX (4,  22),  VXSH_MASK,   POWER10, 0,    {VD, VA, VB, SH3}},
5118
{"ps_sum1", A  (4,  11,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5119
{"ps_sum1.",  A  (4,  11,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5120
{"vextdubvlx",  VX (4,  24),  VXRC_MASK,   POWER10, 0,    {VD, VA, VB, RC}},
5121
{"ps_muls0",  A  (4,  12,0),  AFRB_MASK,   PPCPS, 0,    {FRT, FRA, FRC}},
5122
{"machhwu", XO (4,  12,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5123
{"vextdubvrx",  VX (4,  25),  VXRC_MASK,   POWER10, 0,    {VD, VA, VB, RC}},
5124
{"ps_muls0.", A  (4,  12,1),  AFRB_MASK,   PPCPS, 0,    {FRT, FRA, FRC}},
5125
{"machhwu.",  XO (4,  12,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5126
{"vextduhvlx",  VX (4,  26),  VXRC_MASK,   POWER10, 0,    {VD, VA, VB, RC}},
5127
{"ps_muls1",  A  (4,  13,0),  AFRB_MASK,   PPCPS, 0,    {FRT, FRA, FRC}},
5128
{"vextduhvrx",  VX (4,  27),  VXRC_MASK,   POWER10, 0,    {VD, VA, VB, RC}},
5129
{"ps_muls1.", A  (4,  13,1),  AFRB_MASK,   PPCPS, 0,    {FRT, FRA, FRC}},
5130
{"vextduwvlx",  VX (4,  28),  VXRC_MASK,   POWER10, 0,    {VD, VA, VB, RC}},
5131
{"ps_madds0", A  (4,  14,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5132
{"vextduwvrx",  VX (4,  29),  VXRC_MASK,   POWER10, 0,    {VD, VA, VB, RC}},
5133
{"ps_madds0.",  A  (4,  14,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5134
{"vextddvlx", VX (4,  30),  VXRC_MASK,   POWER10, 0,    {VD, VA, VB, RC}},
5135
{"ps_madds1", A  (4,  15,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5136
{"vextddvrx", VX (4,  31),  VXRC_MASK,   POWER10, 0,    {VD, VA, VB, RC}},
5137
{"ps_madds1.",  A  (4,  15,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5138
{"vmhaddshs", VXA(4,  32),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5139
{"vmhraddshs",  VXA(4,  33),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5140
{"vmladduhm", VXA(4,  34),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5141
{"vmsumudm",  VXA(4,  35),  VXA_MASK,    PPCVEC3, 0,    {VD, VA, VB, VC}},
5142
{"ps_div",  A  (4,  18,0),  AFRC_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5143
{"vmsumcud",  VXA(4,  23),  VXA_MASK,    POWER10, 0,    {VD, VA, VB, VC}},
5144
{"vmsumubm",  VXA(4,  36),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5145
{"ps_div.", A  (4,  18,1),  AFRC_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5146
{"vmsummbm",  VXA(4,  37),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5147
{"vmsumuhm",  VXA(4,  38),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5148
{"vmsumuhs",  VXA(4,  39),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5149
{"ps_sub",  A  (4,  20,0),  AFRC_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5150
{"vmsumshm",  VXA(4,  40),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5151
{"ps_sub.", A  (4,  20,1),  AFRC_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5152
{"vmsumshs",  VXA(4,  41),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5153
{"ps_add",  A  (4,  21,0),  AFRC_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5154
{"vsel",  VXA(4,  42),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5155
{"ps_add.", A  (4,  21,1),  AFRC_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5156
{"vperm", VXA(4,  43),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5157
{"vsldoi",  VXA(4,  44),  VXASHB_MASK, PPCVEC,  0,    {VD, VA, VB, SHB}},
5158
{"vpermxor",  VXA(4,  45),  VXA_MASK,    PPCVEC2, 0,    {VD, VA, VB, VC}},
5159
{"ps_sel",  A  (4,  23,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5160
{"vmaddfp", VXA(4,  46),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VC, VB}},
5161
{"ps_sel.", A  (4,  23,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5162
{"vnmsubfp",  VXA(4,  47),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VC, VB}},
5163
{"ps_res",  A  (4,  24,0), AFRAFRC_MASK, PPCPS, 0,    {FRT, FRB}},
5164
{"maddhd",  VXA(4,  48),  VXA_MASK,    POWER9,  0,    {RT, RA, RB, RC}},
5165
{"ps_res.", A  (4,  24,1), AFRAFRC_MASK, PPCPS, 0,    {FRT, FRB}},
5166
{"maddhdu", VXA(4,  49),  VXA_MASK,    POWER9,  0,    {RT, RA, RB, RC}},
5167
{"ps_mul",  A  (4,  25,0),  AFRB_MASK,   PPCPS, 0,    {FRT, FRA, FRC}},
5168
{"ps_mul.", A  (4,  25,1),  AFRB_MASK,   PPCPS, 0,    {FRT, FRA, FRC}},
5169
{"maddld",  VXA(4,  51),  VXA_MASK,    POWER9,  0,    {RT, RA, RB, RC}},
5170
{"ps_rsqrte", A  (4,  26,0), AFRAFRC_MASK, PPCPS, 0,    {FRT, FRB}},
5171
{"ps_rsqrte.",  A  (4,  26,1), AFRAFRC_MASK, PPCPS, 0,    {FRT, FRB}},
5172
{"ps_msub", A  (4,  28,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5173
{"ps_msub.",  A  (4,  28,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5174
{"ps_madd", A  (4,  29,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5175
{"ps_madd.",  A  (4,  29,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5176
{"vpermr",  VXA(4,  59),  VXA_MASK,    PPCVEC3, 0,    {VD, VA, VB, VC}},
5177
{"ps_nmsub",  A  (4,  30,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5178
{"vaddeuqm",  VXA(4,  60),  VXA_MASK,    PPCVEC2, 0,    {VD, VA, VB, VC}},
5179
{"ps_nmsub.", A  (4,  30,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5180
{"vaddecuq",  VXA(4,  61),  VXA_MASK,    PPCVEC2, 0,    {VD, VA, VB, VC}},
5181
{"ps_nmadd",  A  (4,  31,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5182
{"vsubeuqm",  VXA(4,  62),  VXA_MASK,    PPCVEC2, 0,    {VD, VA, VB, VC}},
5183
{"ps_nmadd.", A  (4,  31,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5184
{"vsubecuq",  VXA(4,  63),  VXA_MASK,    PPCVEC2, 0,    {VD, VA, VB, VC}},
5185
{"ps_cmpo0",  X  (4,  32),  XBF_MASK,    PPCPS, 0,    {BF, FRA, FRB}},
5186
{"vadduhm", VX (4,  64),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5187
{"vmul10ecuq",  VX (4,  65),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5188
{"vmaxuh",  VX (4,  66),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5189
{"vrlh",  VX (4,  68),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5190
{"vrlqmi",  VX (4,  69),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5191
{"vcmpequh",  VXR(4,  70,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5192
{"vcmpneh", VXR(4,  71,0),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5193
{"vmulouh", VX (4,  72),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5194
{"vsubfp",  VX (4,  74),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5195
{"psq_lux", XW (4,  38,0),  XW_MASK,     PPCPS, 0,    {FRT,RA,RB,PSWM,PSQM}},
5196
{"vmrghh",  VX (4,  76),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5197
{"psq_stux",  XW (4,  39,0),  XW_MASK,     PPCPS, 0,    {FRS,RA,RB,PSWM,PSQM}},
5198
{"vpkuwum", VX (4,  78),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5199
{"vinshvlx",  VX (4,  79),  VX_MASK,     POWER10, 0,    {VD, RA, VB}},
5200
{"ps_neg",  XRC(4,  40,0),  XRA_MASK,    PPCPS, 0,    {FRT, FRB}},
5201
{"mulhhw",  XRC(4,  40,0),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5202
{"ps_neg.", XRC(4,  40,1),  XRA_MASK,    PPCPS, 0,    {FRT, FRB}},
5203
{"mulhhw.", XRC(4,  40,1),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5204
{"machhw",  XO (4,  44,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5205
{"machhw.", XO (4,  44,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5206
{"nmachhw", XO (4,  46,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5207
{"nmachhw.",  XO (4,  46,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5208
{"ps_cmpu1",  X  (4,  64),  XBF_MASK,    PPCPS, 0,    {BF, FRA, FRB}},
5209
{"vadduwm", VX (4,  128), VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5210
{"vmaxuw",  VX (4,  130), VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5211
{"vrlw",  VX (4,  132), VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5212
{"vrlwmi",  VX (4,  133), VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5213
{"vcmpequw",  VXR(4,  134,0), VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5214
{"vcmpnew", VXR(4,  135,0), VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5215
{"vmulouw", VX (4,  136), VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5216
{"vmuluwm", VX (4,  137), VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5217
{"vdivuw",  VX (4,  139), VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5218
{"vmrghw",  VX (4,  140), VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5219
{"vpkuhus", VX (4,  142), VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5220
{"vinswvlx",  VX (4,  143), VX_MASK,     POWER10, 0,    {VD, RA, VB}},
5221
{"ps_mr", XRC(4,  72,0),  XRA_MASK,    PPCPS, 0,    {FRT, FRB}},
5222
{"ps_mr.",  XRC(4,  72,1),  XRA_MASK,    PPCPS, 0,    {FRT, FRB}},
5223
{"machhwsu",  XO (4,  76,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5224
{"machhwsu.", XO (4,  76,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5225
{"ps_cmpo1",  X  (4,  96),  XBF_MASK,    PPCPS, 0,    {BF, FRA, FRB}},
5226
{"vaddudm", VX (4, 192),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5227
{"vmaxud",  VX (4, 194),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5228
{"vrld",  VX (4, 196),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5229
{"vrldmi",  VX (4, 197),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5230
{"vcmpeqfp",  VXR(4, 198,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5231
{"vcmpequd",  VXR(4, 199,0),  VXR_MASK,    PPCVEC2, 0,    {VD, VA, VB}},
5232
{"vmuloud", VX (4, 200),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5233
{"vdivud",  VX (4, 203),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5234
{"vpkuwus", VX (4, 206),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5235
{"vinsw", VX (4, 207),   VXUIMM4_MASK, POWER10, 0,    {VD, RB, UIMM4}},
5236
{"machhws", XO (4, 108,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5237
{"machhws.",  XO (4, 108,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5238
{"nmachhws",  XO (4, 110,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5239
{"nmachhws.", XO (4, 110,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5240
{"vadduqm", VX (4, 256),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5241
{"vcmpuq",  VX (4, 257),  VXBF_MASK,   POWER10, 0,    {BF, VA, VB}},
5242
{"vmaxsb",  VX (4, 258),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5243
{"vslb",  VX (4, 260),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5244
{"vslq",  VX (4, 261),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5245
{"vcmpnezb",  VXR(4, 263,0),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5246
{"vmulosb", VX (4, 264),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5247
{"vrefp", VX (4, 266),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5248
{"vdivsq",  VX (4, 267),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5249
{"vmrglb",  VX (4, 268),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5250
{"vpkshus", VX (4, 270),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5251
{"vinsbvrx",  VX (4, 271),  VX_MASK,     POWER10, 0,    {VD, RA, VB}},
5252
{"ps_nabs", XRC(4, 136,0),  XRA_MASK,    PPCPS, 0,    {FRT, FRB}},
5253
{"mulchwu", XRC(4, 136,0),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5254
{"ps_nabs.",  XRC(4, 136,1),  XRA_MASK,    PPCPS, 0,    {FRT, FRB}},
5255
{"mulchwu.",  XRC(4, 136,1),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5256
{"macchwu", XO (4, 140,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5257
{"macchwu.",  XO (4, 140,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5258
{"vaddcuq", VX (4, 320),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5259
{"vcmpsq",  VX (4, 321),  VXBF_MASK,   POWER10, 0,    {BF, VA, VB}},
5260
{"vmaxsh",  VX (4, 322),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5261
{"vslh",  VX (4, 324),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5262
{"vrlqnm",  VX (4, 325),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5263
{"vcmpnezh",  VXR(4, 327,0),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5264
{"vmulosh", VX (4, 328),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5265
{"vrsqrtefp", VX (4, 330),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5266
{"vmrglh",  VX (4, 332),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5267
{"vpkswus", VX (4, 334),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5268
{"vinshvrx",  VX (4, 335),  VX_MASK,     POWER10, 0,    {VD, RA, VB}},
5269
{"mulchw",  XRC(4, 168,0),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5270
{"mulchw.", XRC(4, 168,1),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5271
{"macchw",  XO (4, 172,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5272
{"macchw.", XO (4, 172,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5273
{"nmacchw", XO (4, 174,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5274
{"nmacchw.",  XO (4, 174,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5275
{"vaddcuw", VX (4, 384),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5276
{"vmaxsw",  VX (4, 386),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5277
{"vslw",  VX (4, 388),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5278
{"vrlwnm",  VX (4, 389),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5279
{"vcmpnezw",  VXR(4, 391,0),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5280
{"vmulosw", VX (4, 392),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5281
{"vexptefp",  VX (4, 394),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5282
{"vdivsw",  VX (4, 395),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5283
{"vmrglw",  VX (4, 396),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5284
{"vclrlb",  VX (4, 397),  VX_MASK,     POWER10, 0,    {VD, VA, RB}},
5285
{"vpkshss", VX (4, 398),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5286
{"vinswvrx",  VX (4, 399),  VX_MASK,     POWER10, 0,    {VD, RA, VB}},
5287
{"macchwsu",  XO (4, 204,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5288
{"macchwsu.", XO (4, 204,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5289
{"vmaxsd",  VX (4, 450),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5290
{"vsl",   VX (4, 452),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5291
{"vrldnm",  VX (4, 453),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5292
{"vcmpgefp",  VXR(4, 454,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5293
{"vcmpequq",  VXR(4, 455,0),  VXR_MASK,    POWER10, 0,    {VD, VA, VB}},
5294
{"vmulosd", VX (4, 456),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5295
{"vmulld",  VX (4, 457),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5296
{"vlogefp", VX (4, 458),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5297
{"vdivsd",  VX (4, 459),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5298
{"vclrrb",  VX (4, 461),  VX_MASK,     POWER10, 0,    {VD, VA, RB}},
5299
{"vpkswss", VX (4, 462),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5300
{"vinsd", VX (4, 463),   VXUIMM4_MASK, POWER10, 0,    {VD, RB, UIMM4}},
5301
{"macchws", XO (4, 236,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5302
{"macchws.",  XO (4, 236,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5303
{"nmacchws",  XO (4, 238,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5304
{"nmacchws.", XO (4, 238,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5305
{"evaddw",  VX (4, 512),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5306
{"vaddubs", VX (4, 512),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5307
{"vmul10uq",  VX (4, 513),  VXVB_MASK,   PPCVEC3, 0,    {VD, VA}},
5308
{"evaddiw", VX (4, 514),  VX_MASK,     PPCSPE,  0,    {RS, RB, UIMM}},
5309
{"vminub",  VX (4, 514),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5310
{"evsubw",  VX (4, 516),  VX_MASK,     PPCSPE,  EXT,    {RS, RB, RA}},
5311
{"evsubfw", VX (4, 516),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5312
{"vsrb",  VX (4, 516),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5313
{"vsrq",  VX (4, 517),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5314
{"evsubiw", VX (4, 518),  VX_MASK,     PPCSPE,  EXT,    {RS, RB, UIMM}},
5315
{"evsubifw",  VX (4, 518),  VX_MASK,     PPCSPE,  0,    {RS, UIMM, RB}},
5316
{"vcmpgtub",  VXR(4, 518,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5317
{"evabs", VX (4, 520),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5318
{"vmuleub", VX (4, 520),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5319
{"evneg", VX (4, 521),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5320
{"evextsb", VX (4, 522),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5321
{"vrfin", VX (4, 522),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5322
{"vdiveuq", VX (4, 523),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5323
{"evextsh", VX (4, 523),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5324
{"evrndw",  VX (4, 524),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5325
{"vspltb",  VX (4, 524),   VXUIMM4_MASK, PPCVEC,  0,    {VD, VB, UIMM4}},
5326
{"vextractub",  VX (4, 525),   VXUIMM4_MASK, PPCVEC3, 0,    {VD, VB, UIMM4}},
5327
{"evcntlzw",  VX (4, 525),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5328
{"evcntlsw",  VX (4, 526),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5329
{"vupkhsb", VX (4, 526),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5330
{"vinsblx", VX (4, 527),  VX_MASK,     POWER10, 0,    {VD, RA, RB}},
5331
{"brinc", VX (4, 527),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5332
{"ps_abs",  XRC(4, 264,0),  XRA_MASK,    PPCPS, 0,    {FRT, FRB}},
5333
{"ps_abs.", XRC(4, 264,1),  XRA_MASK,    PPCPS, 0,    {FRT, FRB}},
5334
{"evand", VX (4, 529),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5335
{"evandc",  VX (4, 530),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5336
{"vsrdbi",  VX (4, 534),  VXSH_MASK,   POWER10, 0,    {VD, VA, VB, SH3}},
5337
{"evxor", VX (4, 534),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5338
{"evmr",  VX (4, 535),  VX_MASK,     PPCSPE,  EXT,    {RS, RAB}},
5339
{"evor",  VX (4, 535),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5340
{"evnot", VX (4, 536),  VX_MASK,     PPCSPE,  EXT,    {RS, RAB}},
5341
{"evnor", VX (4, 536),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5342
{"get",   APU(4, 268,0),  APU_RA_MASK, PPC405,  0,    {RT, FSL}},
5343
{"eveqv", VX (4, 537),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5344
{"evorc", VX (4, 539),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5345
{"evnand",  VX (4, 542),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5346
{"evsrwu",  VX (4, 544),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5347
{"evsrws",  VX (4, 545),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5348
{"evsrwiu", VX (4, 546),  VX_MASK,     PPCSPE,  0,    {RS, RA, EVUIMM}},
5349
{"evsrwis", VX (4, 547),  VX_MASK,     PPCSPE,  0,    {RS, RA, EVUIMM}},
5350
{"evslw", VX (4, 548),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5351
{"evslwi",  VX (4, 550),  VX_MASK,     PPCSPE,  0,    {RS, RA, EVUIMM}},
5352
{"evrlw", VX (4, 552),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5353
{"evsplati",  VX (4, 553),  VX_MASK,     PPCSPE,  0,    {RS, SIMM}},
5354
{"evrlwi",  VX (4, 554),  VX_MASK,     PPCSPE,  0,    {RS, RA, EVUIMM}},
5355
{"evsplatfi", VX (4, 555),  VX_MASK,     PPCSPE,  0,    {RS, SIMM}},
5356
{"evmergehi", VX (4, 556),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5357
{"evmergelo", VX (4, 557),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5358
{"evmergehilo", VX (4, 558),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5359
{"evmergelohi", VX (4, 559),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5360
{"evcmpgtu",  VX (4, 560),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5361
{"evcmpgts",  VX (4, 561),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5362
{"evcmpltu",  VX (4, 562),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5363
{"evcmplts",  VX (4, 563),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5364
{"evcmpeq", VX (4, 564),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5365
{"cget",  APU(4, 284,0),  APU_RA_MASK, PPC405,  0,    {RT, FSL}},
5366
{"vadduhs", VX (4, 576),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5367
{"vmul10euq", VX (4, 577),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5368
{"vminuh",  VX (4, 578),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5369
{"vsrh",  VX (4, 580),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5370
{"vcmpgtuh",  VXR(4, 582,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5371
{"vmuleuh", VX (4, 584),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5372
{"vrfiz", VX (4, 586),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5373
{"vsplth",  VX (4, 588),   VXUIMM3_MASK, PPCVEC,  0,    {VD, VB, UIMM3}},
5374
{"vextractuh",  VX (4, 589),   VXUIMM4_MASK, PPCVEC3, 0,    {VD, VB, UIMM4}},
5375
{"vupkhsh", VX (4, 590),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5376
{"vinshlx", VX (4, 591),  VX_MASK,     POWER10, 0,    {VD, RA, RB}},
5377
{"nget",  APU(4, 300,0),  APU_RA_MASK, PPC405,  0,    {RT, FSL}},
5378
{"evsel", EVSEL(4,79),  EVSEL_MASK,  PPCSPE,  0,    {RS, RA, RB, CRFS}},
5379
{"ncget", APU(4, 316,0),  APU_RA_MASK, PPC405,  0,    {RT, FSL}},
5380
{"evfsadd", VX (4, 640),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5381
{"vadduws", VX (4, 640),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5382
{"evfssub", VX (4, 641),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5383
{"evfsmadd",  VX (4, 642),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5384
{"vminuw",  VX (4, 642),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5385
{"evfsmsub",  VX (4, 643),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5386
{"evfsabs", VX (4, 644),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5387
{"vsrw",  VX (4, 644),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5388
{"evfsnabs",  VX (4, 645),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5389
{"evfsneg", VX (4, 646),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5390
{"vcmpgtuw",  VXR(4, 646,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5391
{"vcmpgtuq",  VXR(4, 647,0),  VXR_MASK,    POWER10, 0,    {VD, VA, VB}},
5392
{"evfssqrt",  VX_RB_CONST(4, 647, 0),  VX_RB_CONST_MASK,  PPCEFS2,  0,    {RD, RA}},
5393
{"vmuleuw", VX (4, 648),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5394
{"evfsmul", VX (4, 648),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5395
{"vmulhuw", VX (4, 649),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5396
{"evfsdiv", VX (4, 649),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5397
{"evfsnmadd", VX (4, 650),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5398
{"vrfip", VX (4, 650),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5399
{"vdiveuw", VX (4, 651),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5400
{"evfsnmsub", VX (4, 651),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5401
{"evfscmpgt", VX (4, 652),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5402
{"vspltw",  VX (4, 652),   VXUIMM2_MASK, PPCVEC,  0,    {VD, VB, UIMM2}},
5403
{"vextractuw",  VX (4, 653),   VXUIMM4_MASK, PPCVEC3, 0,    {VD, VB, UIMM4}},
5404
{"evfscmplt", VX (4, 653),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5405
{"evfscmpeq", VX (4, 654),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5406
{"vupklsb", VX (4, 654),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5407
{"vinswlx", VX (4, 655),  VX_MASK,     POWER10, 0,    {VD, RA, RB}},
5408
{"evfscfui",  VX (4, 656),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5409
{"evfscfh", VX_RA_CONST(4, 657, 4),  VX_RA_CONST_MASK,  PPCEFS2,  0,    {RD, RB}},
5410
{"evfscfsi",  VX (4, 657),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5411
{"evfscfuf",  VX (4, 658),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5412
{"evfscfsf",  VX (4, 659),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5413
{"evfsctui",  VX (4, 660),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5414
{"evfscth", VX_RA_CONST(4, 661, 4),  VX_RA_CONST_MASK,  PPCEFS2,  0,    {RD, RB}},
5415
{"evfsctsi",  VX (4, 661),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5416
{"evfsctuf",  VX (4, 662),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5417
{"evfsctsf",  VX (4, 663),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5418
{"evfsctuiz", VX (4, 664),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5419
{"put",   APU(4, 332,0),  APU_RT_MASK, PPC405,  0,    {RA, FSL}},
5420
{"evfsctsiz", VX (4, 666),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5421
{"evfststgt", VX (4, 668),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5422
{"evfststlt", VX (4, 669),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5423
{"evfststeq", VX (4, 670),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5424
{"evfsmax", VX (4, 672),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5425
{"evfsmin", VX (4, 673),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5426
{"evfsaddsub",  VX (4, 674),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5427
{"evfssubadd",  VX (4, 675),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5428
{"evfssum", VX (4, 676),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5429
{"evfsdiff",  VX (4, 677),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5430
{"evfssumdiff", VX (4, 678),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5431
{"evfsdiffsum", VX (4, 679),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5432
{"evfsaddx",  VX (4, 680),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5433
{"evfssubx",  VX (4, 681),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5434
{"evfsaddsubx", VX (4, 682),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5435
{"evfssubaddx", VX (4, 683),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5436
{"evfsmulx",  VX (4, 684),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5437
{"evfsmule",  VX (4, 686),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5438
{"evfsmulo",  VX (4, 687),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5439
{"efsmax",  VX (4, 688),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5440
{"efsmin",  VX (4, 689),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5441
{"efdmax",  VX (4, 696),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5442
{"cput",  APU(4, 348,0),  APU_RT_MASK, PPC405,  0,    {RA, FSL}},
5443
{"efdmin",  VX (4, 697),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5444
{"efsadd",  VX (4, 704),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5445
{"evsadd",  VX (4, 704),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5446
{"efssub",  VX (4, 705),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5447
{"evssub",  VX (4, 705),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5448
{"efsmadd", VX (4, 706),  VX_MASK,     PPCEFS2, 0,    {RS, RA, RB}},
5449
{"vminud",  VX (4, 706),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5450
{"efsmsub", VX (4, 707),  VX_MASK,     PPCEFS2, 0,    {RS, RA, RB}},
5451
{"efsabs",  VX (4, 708),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5452
{"evsabs",  VX (4, 708),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5453
{"vsr",   VX (4, 708),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5454
{"efsnabs", VX (4, 709),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5455
{"evsnabs", VX (4, 709),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5456
{"efsneg",  VX (4, 710),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5457
{"evsneg",  VX (4, 710),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5458
{"vcmpgtfp",  VXR(4, 710,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5459
{"efssqrt", VX_RB_CONST(4, 711, 0), VX_RB_CONST_MASK,PPCEFS2, 0,  {RD, RA}},
5460
{"vcmpgtud",  VXR(4, 711,0),  VXR_MASK,    PPCVEC2, 0,    {VD, VA, VB}},
5461
{"vmuleud", VX (4, 712),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5462
{"efsmul",  VX (4, 712),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5463
{"evsmul",  VX (4, 712),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5464
{"vmulhud", VX (4, 713),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5465
{"efsdiv",  VX (4, 713),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5466
{"evsdiv",  VX (4, 713),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5467
{"efsnmadd",  VX (4, 714),  VX_MASK,     PPCEFS2, 0,    {RS, RA, RB}},
5468
{"vrfim", VX (4, 714),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5469
{"vdiveud", VX (4, 715),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5470
{"efsnmsub",  VX (4, 715),  VX_MASK,     PPCEFS2, 0,    {RS, RA, RB}},
5471
{"efscmpgt",  VX (4, 716),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5472
{"evscmpgt",  VX (4, 716),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5473
{"vextractd", VX (4, 717),   VXUIMM4_MASK, PPCVEC3, 0,    {VD, VB, UIMM4}},
5474
{"efscmplt",  VX (4, 717),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5475
{"evsgmplt",  VX (4, 717),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5476
{"efscmpeq",  VX (4, 718),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5477
{"evsgmpeq",  VX (4, 718),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5478
{"vupklsh", VX (4, 718),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5479
{"vinsdlx", VX (4, 719),  VX_MASK,     POWER10, 0,    {VD, RA, RB}},
5480
{"efscfd",  VX (4, 719),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5481
{"efscfui", VX (4, 720),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5482
{"evscfui", VX (4, 720),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5483
{"efscfh",  VX_RA_CONST(4, 721, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
5484
{"efscfsi", VX (4, 721),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5485
{"evscfsi", VX (4, 721),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5486
{"efscfuf", VX (4, 722),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5487
{"evscfuf", VX (4, 722),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5488
{"efscfsf", VX (4, 723),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5489
{"evscfsf", VX (4, 723),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5490
{"efsctui", VX (4, 724),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5491
{"evsctui", VX (4, 724),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5492
{"efscth",  VX_RA_CONST(4, 725, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
5493
{"efsctsi", VX (4, 725),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5494
{"evsctsi", VX (4, 725),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5495
{"efsctuf", VX (4, 726),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5496
{"evsctuf", VX (4, 726),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5497
{"efsctsf", VX (4, 727),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5498
{"evsctsf", VX (4, 727),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5499
{"efsctuiz",  VX (4, 728),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5500
{"evsctuiz",  VX (4, 728),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5501
{"nput",  APU(4, 364,0),  APU_RT_MASK, PPC405,  0,    {RA, FSL}},
5502
{"efsctsiz",  VX (4, 730),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5503
{"evsctsiz",  VX (4, 730),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5504
{"efststgt",  VX (4, 732),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5505
{"evststgt",  VX (4, 732),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5506
{"efststlt",  VX (4, 733),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5507
{"evststlt",  VX (4, 733),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5508
{"efststeq",  VX (4, 734),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5509
{"evststeq",  VX (4, 734),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5510
{"efdadd",  VX (4, 736),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5511
{"efdsub",  VX (4, 737),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5512
{"efdmadd", VX (4, 738),  VX_MASK,     PPCEFS2,   E500|E500MC,  {RD, RA, RB}},
5513
{"efdcfuid",  VX (4, 738),  VX_MASK,     E500|E500MC,0,   {RS, RB}},
5514
{"efdmsub", VX (4, 739),  VX_MASK,     PPCEFS2,   E500|E500MC,  {RD, RA, RB}},
5515
{"efdcfsid",  VX (4, 739),  VX_MASK,     E500|E500MC,0,   {RS, RB}},
5516
{"efdabs",  VX (4, 740),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5517
{"efdnabs", VX (4, 741),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5518
{"efdneg",  VX (4, 742),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5519
{"efdsqrt", VX_RB_CONST(4, 743, 0), VX_RB_CONST_MASK, PPCEFS2, 0, {RD, RA}},
5520
{"efdmul",  VX (4, 744),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5521
{"efddiv",  VX (4, 745),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5522
{"efdnmadd",  VX (4, 746),  VX_MASK,     PPCEFS2,   E500|E500MC,  {RD, RA, RB}},
5523
{"efdctuidz", VX (4, 746),  VX_MASK,     E500|E500MC,0,   {RS, RB}},
5524
{"efdnmsub",  VX (4, 747),  VX_MASK,     PPCEFS2,   E500|E500MC,  {RD, RA, RB}},
5525
{"efdctsidz", VX (4, 747),  VX_MASK,     E500|E500MC,0,   {RS, RB}},
5526
{"efdcmpgt",  VX (4, 748),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5527
{"efdcmplt",  VX (4, 749),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5528
{"efdcmpeq",  VX (4, 750),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5529
{"efdcfs",  VX (4, 751),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5530
{"efdcfui", VX_RA_CONST(4, 752, 0), VX_RA_CONST_MASK, PPCEFS, 0,  {RS, RB}},
5531
{"efdcfuid",  VX_RA_CONST(4, 752, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC,  {RS, RB}},
5532
{"efdcfsi", VX_RA_CONST(4, 753, 0), VX_RA_CONST_MASK, PPCEFS, 0,  {RS, RB}},
5533
{"efdcfsid",  VX_RA_CONST(4, 753, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC,  {RS, RB}},
5534
{"efdcfh",  VX_RA_CONST(4, 753, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
5535
{"efdcfuf", VX (4, 754),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5536
{"efdcfsf", VX (4, 755),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5537
{"efdctui", VX (4, 756),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5538
{"efdcth",  VX_RA_CONST(4, 757, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
5539
{"efdctsi", VX (4, 757),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5540
{"efdctuf", VX (4, 758),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5541
{"efdctsf", VX (4, 759),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5542
{"efdctuiz",  VX_RA_CONST(4, 760, 0), VX_RA_CONST_MASK, PPCEFS, 0,  {RS, RB}},
5543
{"efdctuidz", VX_RA_CONST(4, 760, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC,  {RS, RB}},
5544
{"ncput", APU(4, 380,0),  APU_RT_MASK, PPC405,  0,    {RA, FSL}},
5545
{"efdctsiz",  VX_RA_CONST(4, 762, 0), VX_RA_CONST_MASK, PPCEFS, 0,  {RS, RB}},
5546
{"efdctsidz", VX_RA_CONST(4, 762, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC,  {RS, RB}},
5547
{"efdtstgt",  VX (4, 764),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5548
{"efdtstlt",  VX (4, 765),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5549
{"efdtsteq",  VX (4, 766),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5550
{"evlddx",  VX (4, 768),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5551
{"vaddsbs", VX (4, 768),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5552
{"evldd", VX (4, 769),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_8, RA}},
5553
{"evldwx",  VX (4, 770),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5554
{"vminsb",  VX (4, 770),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5555
{"evldw", VX (4, 771),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_8, RA}},
5556
{"evldhx",  VX (4, 772),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5557
{"vsrab", VX (4, 772),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5558
{"vsraq", VX (4, 773),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5559
{"evldh", VX (4, 773),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_8, RA}},
5560
{"vcmpgtsb",  VXR(4, 774,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5561
{"evlhhesplatx",VX (4, 776),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5562
{"vmulesb", VX (4, 776),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5563
{"evlhhesplat", VX (4, 777),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_2, RA}},
5564
{"vcfux", VX (4, 778),  VX_MASK,     PPCVEC,  0,    {VD, VB, UIMM}},
5565
{"vcuxwfp", VX (4, 778),  VX_MASK,     PPCVEC,  EXT,    {VD, VB, UIMM}},
5566
{"vdivesq", VX (4, 779),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5567
{"evlhhousplatx",VX(4, 780),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5568
{"vspltisb",  VX (4, 780),  VXVB_MASK,   PPCVEC,  0,    {VD, SIMM}},
5569
{"vinsertb",  VX (4, 781),   VXUIMM4_MASK, PPCVEC3, 0,    {VD, VB, UIMM4}},
5570
{"evlhhousplat",VX (4, 781),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_2, RA}},
5571
{"evlhhossplatx",VX(4, 782),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5572
{"vpkpx", VX (4, 782),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5573
{"vinsbrx", VX (4, 783),  VX_MASK,     POWER10, 0,    {VD, RA, RB}},
5574
{"evlhhossplat",VX (4, 783),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_2, RA}},
5575
{"mullhwu", XRC(4, 392,0),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5576
{"evlwhex", VX (4, 784),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5577
{"mullhwu.",  XRC(4, 392,1),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5578
{"evlwhe",  VX (4, 785),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5579
{"evlwhoux",  VX (4, 788),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5580
{"evlwhou", VX (4, 789),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5581
{"evlwhosx",  VX (4, 790),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5582
{"evlwhos", VX (4, 791),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5583
{"maclhwu", XO (4, 396,0,0),XO_MASK,     MULHW, 0,    {RT, RA, RB}},
5584
{"evlwwsplatx", VX (4, 792),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5585
{"maclhwu.",  XO (4, 396,0,1),XO_MASK,     MULHW, 0,    {RT, RA, RB}},
5586
{"evlwwsplat",  VX (4, 793),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5587
{"evlwhsplatx", VX (4, 796),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5588
{"evlwhsplat",  VX (4, 797),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5589
{"evstddx", VX (4, 800),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5590
{"evstdd",  VX (4, 801),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_8, RA}},
5591
{"evstdwx", VX (4, 802),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5592
{"evstdw",  VX (4, 803),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_8, RA}},
5593
{"evstdhx", VX (4, 804),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5594
{"evstdh",  VX (4, 805),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_8, RA}},
5595
{"evstwhex",  VX (4, 816),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5596
{"evstwhe", VX (4, 817),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5597
{"evstwhox",  VX (4, 820),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5598
{"evstwho", VX (4, 821),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5599
{"evstwwex",  VX (4, 824),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5600
{"evstwwe", VX (4, 825),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5601
{"evstwwox",  VX (4, 828),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5602
{"evstwwo", VX (4, 829),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5603
{"vaddshs", VX (4, 832),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5604
{"bcdcpsgn.", VX (4, 833),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5605
{"vminsh",  VX (4, 834),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5606
{"vsrah", VX (4, 836),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5607
{"vcmpgtsh",  VXR(4, 838,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5608
{"vmulesh", VX (4, 840),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5609
{"vcfsx", VX (4, 842),  VX_MASK,     PPCVEC,  0,    {VD, VB, UIMM}},
5610
{"vcsxwfp", VX (4, 842),  VX_MASK,     PPCVEC,  EXT,    {VD, VB, UIMM}},
5611
{"vspltish",  VX (4, 844),  VXVB_MASK,   PPCVEC,  0,    {VD, SIMM}},
5612
{"vinserth",  VX (4, 845),   VXUIMM4_MASK, PPCVEC3, 0,    {VD, VB, UIMM4}},
5613
{"vupkhpx", VX (4, 846),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5614
{"vinshrx", VX (4, 847),  VX_MASK,     POWER10, 0,    {VD, RA, RB}},
5615
{"mullhw",  XRC(4, 424,0),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5616
{"mullhw.", XRC(4, 424,1),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5617
{"maclhw",  XO (4, 428,0,0),XO_MASK,     MULHW, 0,    {RT, RA, RB}},
5618
{"maclhw.", XO (4, 428,0,1),XO_MASK,     MULHW, 0,    {RT, RA, RB}},
5619
{"nmaclhw", XO (4, 430,0,0),XO_MASK,     MULHW, 0,    {RT, RA, RB}},
5620
{"nmaclhw.",  XO (4, 430,0,1),XO_MASK,     MULHW, 0,    {RT, RA, RB}},
5621
{"vaddsws", VX (4, 896),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5622
{"vminsw",  VX (4, 898),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5623
{"vsraw", VX (4, 900),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5624
{"vcmpgtsw",  VXR(4, 902,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5625
{"vcmpgtsq",  VXR(4, 903,0),  VXR_MASK,    POWER10, 0,    {VD, VA, VB}},
5626
{"vmulesw", VX (4, 904),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5627
{"vmulhsw", VX (4, 905),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5628
{"vctuxs",  VX (4, 906),  VX_MASK,     PPCVEC,  0,    {VD, VB, UIMM}},
5629
{"vcfpuxws",  VX (4, 906),  VX_MASK,     PPCVEC,  EXT,    {VD, VB, UIMM}},
5630
{"vdivesw", VX (4, 907),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5631
{"vspltisw",  VX (4, 908),  VXVB_MASK,   PPCVEC,  0,    {VD, SIMM}},
5632
{"vinsertw",  VX (4, 909),   VXUIMM4_MASK, PPCVEC3, 0,    {VD, VB, UIMM4}},
5633
{"vinswrx", VX (4, 911),  VX_MASK,     POWER10, 0,    {VD, RA, RB}},
5634
{"maclhwsu",  XO (4, 460,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5635
{"maclhwsu.", XO (4, 460,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5636
{"vminsd",  VX (4, 962),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5637
{"vsrad", VX (4, 964),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5638
{"vcmpbfp", VXR(4, 966,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5639
{"vcmpgtsd",  VXR(4, 967,0),  VXR_MASK,    PPCVEC2, 0,    {VD, VA, VB}},
5640
{"vmulesd", VX (4, 968),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5641
{"vmulhsd", VX (4, 969),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5642
{"vctsxs",  VX (4, 970),  VX_MASK,     PPCVEC,  0,    {VD, VB, UIMM}},
5643
{"vcfpsxws",  VX (4, 970),  VX_MASK,     PPCVEC,  EXT,    {VD, VB, UIMM}},
5644
{"vdivesd", VX (4, 971),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5645
{"vinsertd",  VX (4, 973),   VXUIMM4_MASK, PPCVEC3, 0,    {VD, VB, UIMM4}},
5646
{"vupklpx", VX (4, 974),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5647
{"vinsdrx", VX (4, 975),  VX_MASK,     POWER10, 0,    {VD, RA, RB}},
5648
{"maclhws", XO (4, 492,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5649
{"maclhws.",  XO (4, 492,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5650
{"nmaclhws",  XO (4, 494,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5651
{"nmaclhws.", XO (4, 494,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5652
{"vsububm", VX (4,1024),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5653
{"bcdadd.", VX (4,1025),  VXPS_MASK,   PPCVEC2, 0,    {VD, VA, VB, PS}},
5654
{"vavgub",  VX (4,1026),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5655
{"vabsdub", VX (4,1027),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5656
{"evmhessf",  VX (4,1027),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5657
{"vand",  VX (4,1028),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5658
{"vcmpequb.", VXR(4,   6,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5659
{"vcmpneb.",  VXR(4,   7,1),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5660
{"udi0fcm.",  APU(4, 515,0),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5661
{"udi0fcm", APU(4, 515,1),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5662
{"evmhossf",  VX (4,1031),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5663
{"vpmsumb", VX (4,1032),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5664
{"evmheumi",  VX (4,1032),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5665
{"evmhesmi",  VX (4,1033),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5666
{"vmaxfp",  VX (4,1034),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5667
{"evmhesmf",  VX (4,1035),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5668
{"evmhoumi",  VX (4,1036),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5669
{"vslo",  VX (4,1036),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5670
{"vstribl.",  VXVA(4,1037,0), VXVA_MASK,   POWER10, 0,    {VD, VB}},
5671
{"vstribr.",  VXVA(4,1037,1), VXVA_MASK,   POWER10, 0,    {VD, VB}},
5672
{"vstrihl.",  VXVA(4,1037,2), VXVA_MASK,   POWER10, 0,    {VD, VB}},
5673
{"vstrihr.",  VXVA(4,1037,3), VXVA_MASK,   POWER10, 0,    {VD, VB}},
5674
{"evmhosmi",  VX (4,1037),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5675
{"evmhosmf",  VX (4,1039),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5676
{"machhwuo",  XO (4,  12,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5677
{"machhwuo.", XO (4,  12,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5678
{"ps_merge00",  XOPS(4,528,0),  XOPS_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5679
{"ps_merge00.", XOPS(4,528,1),  XOPS_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5680
{"evmhessfa", VX (4,1059),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5681
{"evmhossfa", VX (4,1063),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5682
{"evmheumia", VX (4,1064),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5683
{"evmhesmia", VX (4,1065),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5684
{"evmhesmfa", VX (4,1067),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5685
{"evmhoumia", VX (4,1068),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5686
{"evmhosmia", VX (4,1069),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5687
{"evmhosmfa", VX (4,1071),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5688
{"vsubuhm", VX (4,1088),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5689
{"bcdsub.", VX (4,1089),  VXPS_MASK,   PPCVEC2, 0,    {VD, VA, VB, PS}},
5690
{"vavguh",  VX (4,1090),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5691
{"evmwlssf",  VX (4,1091),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5692
{"vabsduh", VX (4,1091),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5693
{"vandc", VX (4,1092),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5694
{"vcmpequh.", VXR(4,  70,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5695
{"udi1fcm.",  APU(4, 547,0),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5696
{"udi1fcm", APU(4, 547,1),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5697
{"vcmpneh.",  VXR(4,  71,1),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5698
{"evmwhssf",  VX (4,1095),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5699
{"vpmsumh", VX (4,1096),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5700
{"evmwlumi",  VX (4,1096),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5701
{"vminfp",  VX (4,1098),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5702
{"evmwlsmf",  VX (4,1099),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5703
{"evmwhumi",  VX (4,1100),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5704
{"vsro",  VX (4,1100),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5705
{"evmwhsmi",  VX (4,1101),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5706
{"vpkudum", VX (4,1102),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5707
{"evmwhsmf",  VX (4,1103),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5708
{"evmwssf", VX (4,1107),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5709
{"machhwo", XO (4,  44,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5710
{"evmwumi", VX (4,1112),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5711
{"machhwo.",  XO (4,  44,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5712
{"evmwsmi", VX (4,1113),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5713
{"evmwsmf", VX (4,1115),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5714
{"nmachhwo",  XO (4,  46,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5715
{"nmachhwo.", XO (4,  46,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5716
{"ps_merge01",  XOPS(4,560,0),  XOPS_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5717
{"ps_merge01.", XOPS(4,560,1),  XOPS_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5718
{"evmwlssfa", VX (4,1123),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5719
{"evmwhssfa", VX (4,1127),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5720
{"evmwlumia", VX (4,1128),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5721
{"evmwlsmfa", VX (4,1131),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5722
{"evmwhumia", VX (4,1132),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5723
{"evmwhsmia", VX (4,1133),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5724
{"evmwhsmfa", VX (4,1135),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5725
{"evmwssfa",  VX (4,1139),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5726
{"evmwumia",  VX (4,1144),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5727
{"evmwsmia",  VX (4,1145),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5728
{"evmwsmfa",  VX (4,1147),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5729
{"vsubuwm", VX (4,1152),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5730
{"bcdus.",  VX (4,1153),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5731
{"vavguw",  VX (4,1154),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5732
{"vabsduw", VX (4,1155),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5733
{"vmr",   VX (4,1156),  VX_MASK,     PPCVEC,  EXT,    {VD, VAB}},
5734
{"vor",   VX (4,1156),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5735
{"vcmpnew.",  VXR(4, 135,1),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5736
{"vpmsumw", VX (4,1160),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5737
{"vcmpequw.", VXR(4, 134,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5738
{"udi2fcm.",  APU(4, 579,0),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5739
{"udi2fcm", APU(4, 579,1),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5740
{"machhwsuo", XO (4,  76,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5741
{"machhwsuo.",  XO (4,  76,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5742
{"ps_merge10",  XOPS(4,592,0),  XOPS_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5743
{"ps_merge10.", XOPS(4,592,1),  XOPS_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5744
{"vsubudm", VX (4,1216),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5745
{"evaddusiaaw", VX (4,1216),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5746
{"bcds.", VX (4,1217),  VXPS_MASK,   PPCVEC3, 0,    {VD, VA, VB, PS}},
5747
{"evaddssiaaw", VX (4,1217),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5748
{"evsubfusiaaw",VX (4,1218),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5749
{"evsubfssiaaw",VX (4,1219),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5750
{"evmra", VX (4,1220),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5751
{"vxor",  VX (4,1220),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5752
{"evdivws", VX (4,1222),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5753
{"vcmpeqfp.", VXR(4, 198,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5754
{"udi3fcm.",  APU(4, 611,0),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5755
{"vcmpequd.", VXR(4, 199,1),  VXR_MASK,    PPCVEC2, 0,    {VD, VA, VB}},
5756
{"udi3fcm", APU(4, 611,1),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5757
{"evdivwu", VX (4,1223),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5758
{"vpmsumd", VX (4,1224),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5759
{"evaddumiaaw", VX (4,1224),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5760
{"evaddsmiaaw", VX (4,1225),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5761
{"evsubfumiaaw",VX (4,1226),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5762
{"evsubfsmiaaw",VX (4,1227),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5763
{"vgnb",  VX (4,1228),  VX_MASK,     POWER10, 0,    {RT, VB, UIMM3}},
5764
{"vpkudus", VX (4,1230),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5765
{"machhwso",  XO (4, 108,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5766
{"machhwso.", XO (4, 108,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5767
{"nmachhwso", XO (4, 110,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5768
{"nmachhwso.",  XO (4, 110,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5769
{"ps_merge11",  XOPS(4,624,0),  XOPS_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5770
{"ps_merge11.", XOPS(4,624,1),  XOPS_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5771
{"vsubuqm", VX (4,1280),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5772
{"evmheusiaaw", VX (4,1280),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5773
{"bcdtrunc.", VX (4,1281),  VXPS_MASK,   PPCVEC3, 0,    {VD, VA, VB, PS}},
5774
{"evmhessiaaw", VX (4,1281),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5775
{"vavgsb",  VX (4,1282),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5776
{"evmhessfaaw", VX (4,1283),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5777
{"evmhousiaaw", VX (4,1284),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5778
{"vnot",  VX (4,1284),  VX_MASK,     PPCVEC,  EXT,    {VD, VAB}},
5779
{"vnor",  VX (4,1284),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5780
{"evmhossiaaw", VX (4,1285),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5781
{"udi4fcm.",  APU(4, 643,0),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5782
{"udi4fcm", APU(4, 643,1),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5783
{"vcmpnezb.", VXR(4, 263,1),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5784
{"evmhossfaaw", VX (4,1287),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5785
{"evmheumiaaw", VX (4,1288),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5786
{"vcipher", VX (4,1288),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5787
{"vcipherlast", VX (4,1289),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5788
{"evmhesmiaaw", VX (4,1289),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5789
{"evmhesmfaaw", VX (4,1291),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5790
{"vgbbd", VX (4,1292),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
5791
{"evmhoumiaaw", VX (4,1292),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5792
{"evmhosmiaaw", VX (4,1293),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5793
{"evmhosmfaaw", VX (4,1295),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5794
{"macchwuo",  XO (4, 140,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5795
{"macchwuo.", XO (4, 140,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5796
{"evmhegumiaa", VX (4,1320),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5797
{"evmhegsmiaa", VX (4,1321),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5798
{"evmhegsmfaa", VX (4,1323),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5799
{"evmhogumiaa", VX (4,1324),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5800
{"evmhogsmiaa", VX (4,1325),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5801
{"evmhogsmfaa", VX (4,1327),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5802
{"vsubcuq", VX (4,1344),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5803
{"evmwlusiaaw", VX (4,1344),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5804
{"bcdutrunc.",  VX (4,1345),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5805
{"evmwlssiaaw", VX (4,1345),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5806
{"vavgsh",  VX (4,1346),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5807
{"evmwlssfaaw", VX (4,1347),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5808
{"evmwhusiaa",  VX (4,1348),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5809
{"vorc",  VX (4,1348),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5810
{"evmwhssmaa",  VX (4,1349),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5811
{"udi5fcm.",  APU(4, 675,0),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5812
{"udi5fcm", APU(4, 675,1),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5813
{"vcmpnezh.", VXR(4, 327,1),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5814
{"evmwhssfaa",  VX (4,1351),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5815
{"vncipher",  VX (4,1352),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5816
{"evmwlumiaaw", VX (4,1352),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5817
{"vncipherlast",VX (4,1353),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5818
{"evmwlsmiaaw", VX (4,1353),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5819
{"evmwlsmfaaw", VX (4,1355),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5820
{"evmwhumiaa",  VX (4,1356),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5821
{"vbpermq", VX (4,1356),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5822
{"vcfuged", VX (4,1357),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5823
{"evmwhsmiaa",  VX (4,1357),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5824
{"vpksdus", VX (4,1358),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5825
{"evmwhsmfaa",  VX (4,1359),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5826
{"evmwssfaa", VX (4,1363),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5827
{"macchwo", XO (4, 172,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5828
{"evmwumiaa", VX (4,1368),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5829
{"macchwo.",  XO (4, 172,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5830
{"evmwsmiaa", VX (4,1369),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5831
{"evmwsmfaa", VX (4,1371),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5832
{"nmacchwo",  XO (4, 174,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5833
{"nmacchwo.", XO (4, 174,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5834
{"evmwhgumiaa", VX (4,1380),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5835
{"evmwhgsmiaa", VX (4,1381),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5836
{"evmwhgssfaa", VX (4,1383),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5837
{"evmwhgsmfaa", VX (4,1391),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5838
{"evmheusianw", VX (4,1408),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5839
{"vsubcuw", VX (4,1408),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5840
{"evmhessianw", VX (4,1409),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5841
{"bcdctsq.",  VXVA(4,1409,0), VXVA_MASK,   PPCVEC3, 0,    {VD, VB}},
5842
{"bcdcfsq.",  VXVA(4,1409,2), VXVAPS_MASK, PPCVEC3, 0,    {VD, VB, PS}},
5843
{"bcdctz.", VXVA(4,1409,4), VXVAPS_MASK, PPCVEC3, 0,    {VD, VB, PS}},
5844
{"bcdctn.", VXVA(4,1409,5), VXVA_MASK,   PPCVEC3, 0,    {VD, VB}},
5845
{"bcdcfz.", VXVA(4,1409,6), VXVAPS_MASK, PPCVEC3, 0,    {VD, VB, PS}},
5846
{"bcdcfn.", VXVA(4,1409,7), VXVAPS_MASK, PPCVEC3, 0,    {VD, VB, PS}},
5847
{"bcdsetsgn.",  VXVA(4,1409,31), VXVAPS_MASK, PPCVEC3,  0,    {VD, VB, PS}},
5848
{"vavgsw",  VX (4,1410),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5849
{"evmhessfanw", VX (4,1411),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5850
{"vnand", VX (4,1412),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5851
{"evmhousianw", VX (4,1412),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5852
{"evmhossianw", VX (4,1413),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5853
{"udi6fcm.",  APU(4, 707,0),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5854
{"udi6fcm", APU(4, 707,1),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5855
{"vcmpnezw.", VXR(4, 391,1),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5856
{"evmhossfanw", VX (4,1415),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5857
{"evmheumianw", VX (4,1416),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5858
{"evmhesmianw", VX (4,1417),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5859
{"evmhesmfanw", VX (4,1419),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5860
{"evmhoumianw", VX (4,1420),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5861
{"vpextd",  VX (4,1421),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5862
{"evmhosmianw", VX (4,1421),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5863
{"evmhosmfanw", VX (4,1423),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5864
{"macchwsuo", XO (4, 204,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5865
{"macchwsuo.",  XO (4, 204,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5866
{"evmhegumian", VX (4,1448),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5867
{"evmhegsmian", VX (4,1449),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5868
{"evmhegsmfan", VX (4,1451),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5869
{"evmhogumian", VX (4,1452),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5870
{"evmhogsmian", VX (4,1453),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5871
{"evmhogsmfan", VX (4,1455),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5872
{"evmwlusianw", VX (4,1472),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5873
{"bcdsr.",  VX (4,1473),  VXPS_MASK,   PPCVEC3, 0,    {VD, VA, VB, PS}},
5874
{"evmwlssianw", VX (4,1473),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5875
{"evmwlssfanw", VX (4,1475),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5876
{"evmwhusian",  VX (4,1476),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5877
{"vsld",  VX (4,1476),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5878
{"evmwhssian",  VX (4,1477),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5879
{"vcmpgefp.", VXR(4, 454,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5880
{"udi7fcm.",  APU(4, 739,0),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5881
{"udi7fcm", APU(4, 739,1),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5882
{"vcmpequq.", VXR(4, 455,1),  VXR_MASK,    POWER10, 0,    {VD, VA, VB}},
5883
{"evmwhssfan",  VX (4,1479),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5884
{"vsbox", VX (4,1480),  VXVB_MASK,   PPCVEC2, 0,    {VD, VA}},
5885
{"evmwlumianw", VX (4,1480),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5886
{"evmwlsmianw", VX (4,1481),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5887
{"evmwlsmfanw", VX (4,1483),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5888
{"evmwhumian",  VX (4,1484),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5889
{"vbpermd", VX (4,1484),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5890
{"vpdepd",  VX (4,1485),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5891
{"evmwhsmian",  VX (4,1485),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5892
{"vpksdss", VX (4,1486),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5893
{"evmwhsmfan",  VX (4,1487),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5894
{"evmwssfan", VX (4,1491),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5895
{"macchwso",  XO (4, 236,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5896
{"evmwumian", VX (4,1496),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5897
{"macchwso.", XO (4, 236,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5898
{"evmwsmian", VX (4,1497),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5899
{"evmwsmfan", VX (4,1499),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5900
{"evmwhgumian", VX (4,1508),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5901
{"evmwhgsmian", VX (4,1509),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5902
{"evmwhgssfan", VX (4,1511),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5903
{"evmwhgsmfan", VX (4,1519),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5904
{"nmacchwso", XO (4, 238,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5905
{"nmacchwso.",  XO (4, 238,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5906
{"vsububs", VX (4,1536),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5907
{"vclzlsbb",  VXVA(4,1538,0), VXVA_MASK,   PPCVEC3, 0,    {RT, VB}},
5908
{"vctzlsbb",  VXVA(4,1538,1), VXVA_MASK,   PPCVEC3, 0,    {RT, VB}},
5909
{"vnegw", VXVA(4,1538,6), VXVA_MASK,   PPCVEC3, 0,    {VD, VB}},
5910
{"vnegd", VXVA(4,1538,7), VXVA_MASK,   PPCVEC3, 0,    {VD, VB}},
5911
{"vprtybw", VXVA(4,1538,8), VXVA_MASK,   PPCVEC3, 0,    {VD, VB}},
5912
{"vprtybd", VXVA(4,1538,9), VXVA_MASK,   PPCVEC3, 0,    {VD, VB}},
5913
{"vprtybq", VXVA(4,1538,10), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
5914
{"vextsb2w",  VXVA(4,1538,16), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
5915
{"vextsh2w",  VXVA(4,1538,17), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
5916
{"vextsb2d",  VXVA(4,1538,24), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
5917
{"vextsh2d",  VXVA(4,1538,25), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
5918
{"vextsw2d",  VXVA(4,1538,26), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
5919
{"vextsd2q",  VXVA(4,1538,27), VXVA_MASK,  POWER10, 0,    {VD, VB}},
5920
{"vctzb", VXVA(4,1538,28), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
5921
{"vctzh", VXVA(4,1538,29), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
5922
{"vctzw", VXVA(4,1538,30), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
5923
{"vctzd", VXVA(4,1538,31), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
5924
{"mfvscr",  VX (4,1540),  VXVAVB_MASK, PPCVEC,  0,    {VD}},
5925
{"vcmpgtub.", VXR(4, 518,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5926
{"udi8fcm.",  APU(4, 771,0),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
5927
{"udi8fcm", APU(4, 771,1),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
5928
{"vsum4ubs",  VX (4,1544),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5929
{"vmoduq",  VX (4,1547),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5930
{"vextublx",  VX (4,1549),  VX_MASK,     PPCVEC3, 0,    {RT, RA, VB}},
5931
{"vsubuhs", VX (4,1600),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5932
5933
{"vexpandbm", VXVA(4,1602,0),  VXVA_MASK,  POWER10, 0,    {VD, VB}},
5934
{"vexpandhm", VXVA(4,1602,1),  VXVA_MASK,  POWER10, 0,    {VD, VB}},
5935
{"vexpandwm", VXVA(4,1602,2),  VXVA_MASK,  POWER10, 0,    {VD, VB}},
5936
{"vexpanddm", VXVA(4,1602,3),  VXVA_MASK,  POWER10, 0,    {VD, VB}},
5937
{"vexpandqm", VXVA(4,1602,4),  VXVA_MASK,  POWER10, 0,    {VD, VB}},
5938
{"vextractbm",  VXVA(4,1602,8),  VXVA_MASK,  POWER10, 0,    {RT, VB}},
5939
{"vextracthm",  VXVA(4,1602,9),  VXVA_MASK,  POWER10, 0,    {RT, VB}},
5940
{"vextractwm",  VXVA(4,1602,10), VXVA_MASK,  POWER10, 0,    {RT, VB}},
5941
{"vextractdm",  VXVA(4,1602,11), VXVA_MASK,  POWER10, 0,    {RT, VB}},
5942
{"vextractqm",  VXVA(4,1602,12), VXVA_MASK,  POWER10, 0,    {RT, VB}},
5943
{"mtvsrbm", VXVA(4,1602,16), VXVA_MASK,  POWER10, 0,    {VD, RB}},
5944
{"mtvsrhm", VXVA(4,1602,17), VXVA_MASK,  POWER10, 0,    {VD, RB}},
5945
{"mtvsrwm", VXVA(4,1602,18), VXVA_MASK,  POWER10, 0,    {VD, RB}},
5946
{"mtvsrdm", VXVA(4,1602,19), VXVA_MASK,  POWER10, 0,    {VD, RB}},
5947
{"mtvsrqm", VXVA(4,1602,20), VXVA_MASK,  POWER10, 0,    {VD, RB}},
5948
{"vcntmbb", VXVA(4,1602,24), VXVAM_MASK, POWER10, 0,    {RT, VB, MP}},
5949
{"vcntmbh", VXVA(4,1602,26), VXVAM_MASK, POWER10, 0,    {RT, VB, MP}},
5950
{"vcntmbw", VXVA(4,1602,28), VXVAM_MASK, POWER10, 0,    {RT, VB, MP}},
5951
{"vcntmbd", VXVA(4,1602,30), VXVAM_MASK, POWER10, 0,    {RT, VB, MP}},
5952
5953
{"mtvscr",  VX (4,1604),  VXVDVA_MASK, PPCVEC,  0,    {VB}},
5954
{"vcmpgtuh.", VXR(4, 582,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5955
{"vsum4shs",  VX (4,1608),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5956
{"udi9fcm.",  APU(4, 804,0),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
5957
{"udi9fcm", APU(4, 804,1),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
5958
{"vextuhlx",  VX (4,1613),  VX_MASK,     PPCVEC3, 0,    {RT, RA, VB}},
5959
{"vupkhsw", VX (4,1614),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
5960
{"vsubuws", VX (4,1664),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5961
{"vshasigmaw",  VX (4,1666),  VX_MASK,     PPCVEC2, 0,    {VD, VA, ST, SIX}},
5962
{"veqv",  VX (4,1668),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5963
{"vcmpgtuw.", VXR(4, 646,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5964
{"udi10fcm.", APU(4, 835,0),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
5965
{"vcmpgtuq.", VXR(4, 647,1),  VXR_MASK,    POWER10, 0,    {VD, VA, VB}},
5966
{"udi10fcm",  APU(4, 835,1),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
5967
{"vsum2sws",  VX (4,1672),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5968
{"vmoduw",  VX (4,1675),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5969
{"vmrgow",  VX (4,1676),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5970
{"vextuwlx",  VX (4,1677),  VX_MASK,     PPCVEC3, 0,    {RT, RA, VB}},
5971
{"vshasigmad",  VX (4,1730),  VX_MASK,     PPCVEC2, 0,    {VD, VA, ST, SIX}},
5972
{"vsrd",  VX (4,1732),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5973
{"vcmpgtfp.", VXR(4, 710,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5974
{"udi11fcm.", APU(4, 867,0),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
5975
{"vcmpgtud.", VXR(4, 711,1),  VXR_MASK,    PPCVEC2, 0,    {VD, VA, VB}},
5976
{"udi11fcm",  APU(4, 867,1),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
5977
{"vmodud",  VX (4,1739),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5978
{"vupklsw", VX (4,1742),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
5979
{"vsubsbs", VX (4,1792),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5980
{"vclzb", VX (4,1794),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
5981
{"vpopcntb",  VX (4,1795),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
5982
{"vsrv",  VX (4,1796),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5983
{"vcmpgtsb.", VXR(4, 774,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5984
{"udi12fcm.", APU(4, 899,0),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
5985
{"udi12fcm",  APU(4, 899,1),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
5986
{"vsum4sbs",  VX (4,1800),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5987
{"vmodsq",  VX (4,1803),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5988
{"vextubrx",  VX (4,1805),  VX_MASK,     PPCVEC3, 0,    {RT, RA, VB}},
5989
{"maclhwuo",  XO (4, 396,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5990
{"maclhwuo.", XO (4, 396,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5991
{"vsubshs", VX (4,1856),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5992
{"vclzh", VX (4,1858),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
5993
{"vpopcnth",  VX (4,1859),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
5994
{"vslv",  VX (4,1860),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5995
{"vcmpgtsh.", VXR(4, 838,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5996
{"vextuhrx",  VX (4,1869),  VX_MASK,     PPCVEC3, 0,    {RT, RA, VB}},
5997
{"udi13fcm.", APU(4, 931,0),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
5998
{"udi13fcm",  APU(4, 931,1),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
5999
{"maclhwo", XO (4, 428,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6000
{"maclhwo.",  XO (4, 428,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6001
{"nmaclhwo",  XO (4, 430,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6002
{"nmaclhwo.", XO (4, 430,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6003
{"vsubsws", VX (4,1920),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6004
{"vclzw", VX (4,1922),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
6005
{"vpopcntw",  VX (4,1923),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
6006
{"vclzdm",  VX (4,1924),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
6007
{"vcmpgtsw.", VXR(4, 902,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
6008
{"udi14fcm.", APU(4, 963,0),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6009
{"vcmpgtsq.", VXR(4, 903,1),  VXR_MASK,    POWER10, 0,    {VD, VA, VB}},
6010
{"udi14fcm",  APU(4, 963,1),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6011
{"vsumsws", VX (4,1928),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6012
{"vmodsw",  VX (4,1931),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
6013
{"vmrgew",  VX (4,1932),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6014
{"vextuwrx",  VX (4,1933),  VX_MASK,     PPCVEC3, 0,    {RT, RA, VB}},
6015
{"maclhwsuo", XO (4, 460,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6016
{"maclhwsuo.",  XO (4, 460,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6017
{"vclzd", VX (4,1986),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
6018
{"vpopcntd",  VX (4,1987),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
6019
{"vctzdm",  VX (4,1988),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
6020
{"vcmpbfp.",  VXR(4, 966,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
6021
{"udi15fcm.", APU(4, 995,0),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6022
{"vcmpgtsd.", VXR(4, 967,1),  VXR_MASK,    PPCVEC2, 0,    {VD, VA, VB}},
6023
{"udi15fcm",  APU(4, 995,1),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6024
{"vmodsd",  VX (4,1995),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
6025
{"maclhwso",  XO (4, 492,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6026
{"maclhwso.", XO (4, 492,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6027
{"nmaclhwso", XO (4, 494,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6028
{"nmaclhwso.",  XO (4, 494,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6029
{"dcbz_l",  X  (4,1014),  XRT_MASK,    PPCPS, 0,    {RA, RB}},
6030
6031
{"lxvp",  DQXP(6,0),  DQXP_MASK,   POWER10, PPCVLE,   {XTP, DQ, RA0}},
6032
{"stxvp", DQXP(6,1),  DQXP_MASK,   POWER10, PPCVLE,   {XSP, DQ, RA0}},
6033
6034
{"mulli", OP(7),    OP_MASK,     PPCCOM,  PPCVLE,   {RT, RA, SI}},
6035
{"muli",  OP(7),    OP_MASK,     PWRCOM,  PPCVLE,   {RT, RA, SI}},
6036
6037
{"subfic",  OP(8),    OP_MASK,     PPCCOM,  PPCVLE,   {RT, RA, SI}},
6038
{"sfi",   OP(8),    OP_MASK,     PWRCOM,  PPCVLE,   {RT, RA, SI}},
6039
6040
{"dozi",  OP(9),    OP_MASK,     M601,  PPCVLE,   {RT, RA, SI}},
6041
6042
{"cmplwi",  OPL(10,0),  OPL_MASK,    PPCCOM,  PPCVLE|EXT, {OBF, RA, UISIGNOPT}},
6043
{"cmpldi",  OPL(10,1),  OPL_MASK,    PPC64, PPCVLE|EXT, {OBF, RA, UISIGNOPT}},
6044
{"cmpli", OP(10),   OP_MASK,     PPC, PPCVLE,   {BF, L32OPT, RA, UISIGNOPT}},
6045
{"cmpli", OP(10),   OP_MASK,     PWRCOM,  PPC|PPCVLE, {BF, RA, UISIGNOPT}},
6046
6047
{"cmpwi", OPL(11,0),  OPL_MASK,    PPCCOM,  PPCVLE|EXT, {OBF, RA, SI}},
6048
{"cmpdi", OPL(11,1),  OPL_MASK,    PPC64, PPCVLE|EXT, {OBF, RA, SI}},
6049
{"cmpi",  OP(11),   OP_MASK,     PPC, PPCVLE,   {BF, L32OPT, RA, SI}},
6050
{"cmpi",  OP(11),   OP_MASK,     PWRCOM,  PPC|PPCVLE, {BF, RA, SI}},
6051
6052
{"addic", OP(12),   OP_MASK,     PPCCOM,  PPCVLE,   {RT, RA, SI}},
6053
{"ai",    OP(12),   OP_MASK,     PWRCOM,  PPCVLE,   {RT, RA, SI}},
6054
{"subic", OP(12),   OP_MASK,     PPCCOM,  PPCVLE|EXT, {RT, RA, NSI}},
6055
6056
{"addic.",  OP(13),   OP_MASK,     PPCCOM,  PPCVLE,   {RT, RA, SI}},
6057
{"ai.",   OP(13),   OP_MASK,     PWRCOM,  PPCVLE,   {RT, RA, SI}},
6058
{"subic.",  OP(13),   OP_MASK,     PPCCOM,  PPCVLE|EXT, {RT, RA, NSI}},
6059
6060
{"li",    OP(14),   DRA_MASK,    PPCCOM,  PPCVLE|EXT, {RT, SI}},
6061
{"lil",   OP(14),   DRA_MASK,    PWRCOM,  PPCVLE|EXT, {RT, SI}},
6062
{"addi",  OP(14),   OP_MASK,     PPCCOM,  PPCVLE,   {RT, RA0, SI}},
6063
{"cal",   OP(14),   OP_MASK,     PWRCOM,  PPCVLE,   {RT, D, RA0}},
6064
{"subi",  OP(14),   OP_MASK,     PPCCOM,  PPCVLE|EXT, {RT, RA0, NSI}},
6065
{"la",    OP(14),   OP_MASK,     PPCCOM,  PPCVLE|EXT, {RT, D, RA0}},
6066
6067
{"lis",   OP(15),   DRA_MASK,    PPCCOM,  PPCVLE|EXT, {RT, SISIGNOPT}},
6068
{"liu",   OP(15),   DRA_MASK,    PWRCOM,  PPCVLE|EXT, {RT, SISIGNOPT}},
6069
{"addis", OP(15),   OP_MASK,     PPCCOM,  PPCVLE,   {RT, RA0, SISIGNOPT}},
6070
{"cau",   OP(15),   OP_MASK,     PWRCOM,  PPCVLE,   {RT, RA0, SISIGNOPT}},
6071
{"subis", OP(15),   OP_MASK,     PPCCOM,  PPCVLE|EXT, {RT, RA0, NSISIGNOPT}},
6072
6073
{"bdnz-",    BBO(16,BODNZ,0,0),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDM}},
6074
{"bdnz+",    BBO(16,BODNZ,0,0),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDP}},
6075
{"bdnz",     BBO(16,BODNZ,0,0),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BD}},
6076
{"bdn",      BBO(16,BODNZ,0,0),   BBOATBI_MASK,  PWRCOM,   PPCVLE|EXT,  {BD}},
6077
{"bdnzl-",   BBO(16,BODNZ,0,1),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDM}},
6078
{"bdnzl+",   BBO(16,BODNZ,0,1),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDP}},
6079
{"bdnzl",    BBO(16,BODNZ,0,1),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BD}},
6080
{"bdnl",     BBO(16,BODNZ,0,1),   BBOATBI_MASK,  PWRCOM,   PPCVLE|EXT,  {BD}},
6081
{"bdnza-",   BBO(16,BODNZ,1,0),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDMA}},
6082
{"bdnza+",   BBO(16,BODNZ,1,0),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDPA}},
6083
{"bdnza",    BBO(16,BODNZ,1,0),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDA}},
6084
{"bdna",     BBO(16,BODNZ,1,0),   BBOATBI_MASK,  PWRCOM,   PPCVLE|EXT,  {BDA}},
6085
{"bdnzla-",  BBO(16,BODNZ,1,1),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDMA}},
6086
{"bdnzla+",  BBO(16,BODNZ,1,1),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDPA}},
6087
{"bdnzla",   BBO(16,BODNZ,1,1),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDA}},
6088
{"bdnla",    BBO(16,BODNZ,1,1),   BBOATBI_MASK,  PWRCOM,   PPCVLE|EXT,  {BDA}},
6089
{"bdz-",     BBO(16,BODZ,0,0),    BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDM}},
6090
{"bdz+",     BBO(16,BODZ,0,0),    BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDP}},
6091
{"bdz",      BBO(16,BODZ,0,0),    BBOATBI_MASK,  COM,  PPCVLE|EXT,  {BD}},
6092
{"bdzl-",    BBO(16,BODZ,0,1),    BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDM}},
6093
{"bdzl+",    BBO(16,BODZ,0,1),    BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDP}},
6094
{"bdzl",     BBO(16,BODZ,0,1),    BBOATBI_MASK,  COM,  PPCVLE|EXT,  {BD}},
6095
{"bdza-",    BBO(16,BODZ,1,0),    BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDMA}},
6096
{"bdza+",    BBO(16,BODZ,1,0),    BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDPA}},
6097
{"bdza",     BBO(16,BODZ,1,0),    BBOATBI_MASK,  COM,  PPCVLE|EXT,  {BDA}},
6098
{"bdzla-",   BBO(16,BODZ,1,1),    BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDMA}},
6099
{"bdzla+",   BBO(16,BODZ,1,1),    BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDPA}},
6100
{"bdzla",    BBO(16,BODZ,1,1),    BBOATBI_MASK,  COM,  PPCVLE|EXT,  {BDA}},
6101
6102
{"bge-",     BBOCB(16,BOF,CBLT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6103
{"bge+",     BBOCB(16,BOF,CBLT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6104
{"bge",      BBOCB(16,BOF,CBLT,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6105
{"bnl-",     BBOCB(16,BOF,CBLT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6106
{"bnl+",     BBOCB(16,BOF,CBLT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6107
{"bnl",      BBOCB(16,BOF,CBLT,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6108
{"bgel-",    BBOCB(16,BOF,CBLT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6109
{"bgel+",    BBOCB(16,BOF,CBLT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6110
{"bgel",     BBOCB(16,BOF,CBLT,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6111
{"bnll-",    BBOCB(16,BOF,CBLT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6112
{"bnll+",    BBOCB(16,BOF,CBLT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6113
{"bnll",     BBOCB(16,BOF,CBLT,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6114
{"bgea-",    BBOCB(16,BOF,CBLT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6115
{"bgea+",    BBOCB(16,BOF,CBLT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6116
{"bgea",     BBOCB(16,BOF,CBLT,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6117
{"bnla-",    BBOCB(16,BOF,CBLT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6118
{"bnla+",    BBOCB(16,BOF,CBLT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6119
{"bnla",     BBOCB(16,BOF,CBLT,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6120
{"bgela-",   BBOCB(16,BOF,CBLT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6121
{"bgela+",   BBOCB(16,BOF,CBLT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6122
{"bgela",    BBOCB(16,BOF,CBLT,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6123
{"bnlla-",   BBOCB(16,BOF,CBLT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6124
{"bnlla+",   BBOCB(16,BOF,CBLT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6125
{"bnlla",    BBOCB(16,BOF,CBLT,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6126
{"ble-",     BBOCB(16,BOF,CBGT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6127
{"ble+",     BBOCB(16,BOF,CBGT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6128
{"ble",      BBOCB(16,BOF,CBGT,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6129
{"bng-",     BBOCB(16,BOF,CBGT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6130
{"bng+",     BBOCB(16,BOF,CBGT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6131
{"bng",      BBOCB(16,BOF,CBGT,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6132
{"blel-",    BBOCB(16,BOF,CBGT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6133
{"blel+",    BBOCB(16,BOF,CBGT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6134
{"blel",     BBOCB(16,BOF,CBGT,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6135
{"bngl-",    BBOCB(16,BOF,CBGT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6136
{"bngl+",    BBOCB(16,BOF,CBGT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6137
{"bngl",     BBOCB(16,BOF,CBGT,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6138
{"blea-",    BBOCB(16,BOF,CBGT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6139
{"blea+",    BBOCB(16,BOF,CBGT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6140
{"blea",     BBOCB(16,BOF,CBGT,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6141
{"bnga-",    BBOCB(16,BOF,CBGT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6142
{"bnga+",    BBOCB(16,BOF,CBGT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6143
{"bnga",     BBOCB(16,BOF,CBGT,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6144
{"blela-",   BBOCB(16,BOF,CBGT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6145
{"blela+",   BBOCB(16,BOF,CBGT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6146
{"blela",    BBOCB(16,BOF,CBGT,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6147
{"bngla-",   BBOCB(16,BOF,CBGT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6148
{"bngla+",   BBOCB(16,BOF,CBGT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6149
{"bngla",    BBOCB(16,BOF,CBGT,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6150
{"bne-",     BBOCB(16,BOF,CBEQ,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6151
{"bne+",     BBOCB(16,BOF,CBEQ,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6152
{"bne",      BBOCB(16,BOF,CBEQ,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6153
{"bnel-",    BBOCB(16,BOF,CBEQ,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6154
{"bnel+",    BBOCB(16,BOF,CBEQ,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6155
{"bnel",     BBOCB(16,BOF,CBEQ,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6156
{"bnea-",    BBOCB(16,BOF,CBEQ,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6157
{"bnea+",    BBOCB(16,BOF,CBEQ,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6158
{"bnea",     BBOCB(16,BOF,CBEQ,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6159
{"bnela-",   BBOCB(16,BOF,CBEQ,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6160
{"bnela+",   BBOCB(16,BOF,CBEQ,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6161
{"bnela",    BBOCB(16,BOF,CBEQ,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6162
{"bns-",     BBOCB(16,BOF,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6163
{"bns+",     BBOCB(16,BOF,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6164
{"bns",      BBOCB(16,BOF,CBSO,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6165
{"bnu-",     BBOCB(16,BOF,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6166
{"bnu+",     BBOCB(16,BOF,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6167
{"bnu",      BBOCB(16,BOF,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BD}},
6168
{"bnsl-",    BBOCB(16,BOF,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6169
{"bnsl+",    BBOCB(16,BOF,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6170
{"bnsl",     BBOCB(16,BOF,CBSO,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6171
{"bnul-",    BBOCB(16,BOF,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6172
{"bnul+",    BBOCB(16,BOF,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6173
{"bnul",     BBOCB(16,BOF,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BD}},
6174
{"bnsa-",    BBOCB(16,BOF,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6175
{"bnsa+",    BBOCB(16,BOF,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6176
{"bnsa",     BBOCB(16,BOF,CBSO,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6177
{"bnua-",    BBOCB(16,BOF,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6178
{"bnua+",    BBOCB(16,BOF,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6179
{"bnua",     BBOCB(16,BOF,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDA}},
6180
{"bnsla-",   BBOCB(16,BOF,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6181
{"bnsla+",   BBOCB(16,BOF,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6182
{"bnsla",    BBOCB(16,BOF,CBSO,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6183
{"bnula-",   BBOCB(16,BOF,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6184
{"bnula+",   BBOCB(16,BOF,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6185
{"bnula",    BBOCB(16,BOF,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDA}},
6186
6187
{"blt-",     BBOCB(16,BOT,CBLT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6188
{"blt+",     BBOCB(16,BOT,CBLT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6189
{"blt",      BBOCB(16,BOT,CBLT,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6190
{"bltl-",    BBOCB(16,BOT,CBLT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6191
{"bltl+",    BBOCB(16,BOT,CBLT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6192
{"bltl",     BBOCB(16,BOT,CBLT,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6193
{"blta-",    BBOCB(16,BOT,CBLT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6194
{"blta+",    BBOCB(16,BOT,CBLT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6195
{"blta",     BBOCB(16,BOT,CBLT,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6196
{"bltla-",   BBOCB(16,BOT,CBLT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6197
{"bltla+",   BBOCB(16,BOT,CBLT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6198
{"bltla",    BBOCB(16,BOT,CBLT,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6199
{"bgt-",     BBOCB(16,BOT,CBGT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6200
{"bgt+",     BBOCB(16,BOT,CBGT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6201
{"bgt",      BBOCB(16,BOT,CBGT,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6202
{"bgtl-",    BBOCB(16,BOT,CBGT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6203
{"bgtl+",    BBOCB(16,BOT,CBGT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6204
{"bgtl",     BBOCB(16,BOT,CBGT,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6205
{"bgta-",    BBOCB(16,BOT,CBGT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6206
{"bgta+",    BBOCB(16,BOT,CBGT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6207
{"bgta",     BBOCB(16,BOT,CBGT,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6208
{"bgtla-",   BBOCB(16,BOT,CBGT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6209
{"bgtla+",   BBOCB(16,BOT,CBGT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6210
{"bgtla",    BBOCB(16,BOT,CBGT,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6211
{"beq-",     BBOCB(16,BOT,CBEQ,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6212
{"beq+",     BBOCB(16,BOT,CBEQ,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6213
{"beq",      BBOCB(16,BOT,CBEQ,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6214
{"beql-",    BBOCB(16,BOT,CBEQ,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6215
{"beql+",    BBOCB(16,BOT,CBEQ,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6216
{"beql",     BBOCB(16,BOT,CBEQ,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6217
{"beqa-",    BBOCB(16,BOT,CBEQ,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6218
{"beqa+",    BBOCB(16,BOT,CBEQ,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6219
{"beqa",     BBOCB(16,BOT,CBEQ,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6220
{"beqla-",   BBOCB(16,BOT,CBEQ,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6221
{"beqla+",   BBOCB(16,BOT,CBEQ,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6222
{"beqla",    BBOCB(16,BOT,CBEQ,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6223
{"bso-",     BBOCB(16,BOT,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6224
{"bso+",     BBOCB(16,BOT,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6225
{"bso",      BBOCB(16,BOT,CBSO,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6226
{"bun-",     BBOCB(16,BOT,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6227
{"bun+",     BBOCB(16,BOT,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6228
{"bun",      BBOCB(16,BOT,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BD}},
6229
{"bsol-",    BBOCB(16,BOT,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6230
{"bsol+",    BBOCB(16,BOT,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6231
{"bsol",     BBOCB(16,BOT,CBSO,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6232
{"bunl-",    BBOCB(16,BOT,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6233
{"bunl+",    BBOCB(16,BOT,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6234
{"bunl",     BBOCB(16,BOT,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BD}},
6235
{"bsoa-",    BBOCB(16,BOT,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6236
{"bsoa+",    BBOCB(16,BOT,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6237
{"bsoa",     BBOCB(16,BOT,CBSO,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6238
{"buna-",    BBOCB(16,BOT,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6239
{"buna+",    BBOCB(16,BOT,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6240
{"buna",     BBOCB(16,BOT,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDA}},
6241
{"bsola-",   BBOCB(16,BOT,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6242
{"bsola+",   BBOCB(16,BOT,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6243
{"bsola",    BBOCB(16,BOT,CBSO,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6244
{"bunla-",   BBOCB(16,BOT,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6245
{"bunla+",   BBOCB(16,BOT,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6246
{"bunla",    BBOCB(16,BOT,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDA}},
6247
6248
{"bdnzf-",   BBO(16,BODNZF,0,0),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDM}},
6249
{"bdnzf+",   BBO(16,BODNZF,0,0),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDP}},
6250
{"bdnzf",    BBO(16,BODNZF,0,0),  BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BD}},
6251
{"bdnzfl-",  BBO(16,BODNZF,0,1),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDM}},
6252
{"bdnzfl+",  BBO(16,BODNZF,0,1),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDP}},
6253
{"bdnzfl",   BBO(16,BODNZF,0,1),  BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BD}},
6254
{"bdnzfa-",  BBO(16,BODNZF,1,0),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6255
{"bdnzfa+",  BBO(16,BODNZF,1,0),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6256
{"bdnzfa",   BBO(16,BODNZF,1,0),  BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BDA}},
6257
{"bdnzfla-", BBO(16,BODNZF,1,1),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6258
{"bdnzfla+", BBO(16,BODNZF,1,1),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6259
{"bdnzfla",  BBO(16,BODNZF,1,1),  BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BDA}},
6260
{"bdzf-",    BBO(16,BODZF,0,0),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDM}},
6261
{"bdzf+",    BBO(16,BODZF,0,0),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDP}},
6262
{"bdzf",     BBO(16,BODZF,0,0),   BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BD}},
6263
{"bdzfl-",   BBO(16,BODZF,0,1),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDM}},
6264
{"bdzfl+",   BBO(16,BODZF,0,1),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDP}},
6265
{"bdzfl",    BBO(16,BODZF,0,1),   BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BD}},
6266
{"bdzfa-",   BBO(16,BODZF,1,0),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6267
{"bdzfa+",   BBO(16,BODZF,1,0),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6268
{"bdzfa",    BBO(16,BODZF,1,0),   BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BDA}},
6269
{"bdzfla-",  BBO(16,BODZF,1,1),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6270
{"bdzfla+",  BBO(16,BODZF,1,1),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6271
{"bdzfla",   BBO(16,BODZF,1,1),   BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BDA}},
6272
6273
{"bf-",      BBO(16,BOF,0,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDM}},
6274
{"bf+",      BBO(16,BOF,0,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDP}},
6275
{"bf",       BBO(16,BOF,0,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BD}},
6276
{"bbf",      BBO(16,BOF,0,0),   BBOAT_MASK,    PWRCOM,   PPCVLE|EXT,  {BI, BD}},
6277
{"bfl-",     BBO(16,BOF,0,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDM}},
6278
{"bfl+",     BBO(16,BOF,0,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDP}},
6279
{"bfl",      BBO(16,BOF,0,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BD}},
6280
{"bbfl",     BBO(16,BOF,0,1),   BBOAT_MASK,    PWRCOM,   PPCVLE|EXT,  {BI, BD}},
6281
{"bfa-",     BBO(16,BOF,1,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDMA}},
6282
{"bfa+",     BBO(16,BOF,1,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDPA}},
6283
{"bfa",      BBO(16,BOF,1,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDA}},
6284
{"bbfa",     BBO(16,BOF,1,0),   BBOAT_MASK,    PWRCOM,   PPCVLE|EXT,  {BI, BDA}},
6285
{"bfla-",    BBO(16,BOF,1,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDMA}},
6286
{"bfla+",    BBO(16,BOF,1,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDPA}},
6287
{"bfla",     BBO(16,BOF,1,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDA}},
6288
{"bbfla",    BBO(16,BOF,1,1),   BBOAT_MASK,    PWRCOM,   PPCVLE|EXT,  {BI, BDA}},
6289
6290
{"bdnzt-",   BBO(16,BODNZT,0,0),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDM}},
6291
{"bdnzt+",   BBO(16,BODNZT,0,0),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDP}},
6292
{"bdnzt",    BBO(16,BODNZT,0,0),  BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BD}},
6293
{"bdnztl-",  BBO(16,BODNZT,0,1),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDM}},
6294
{"bdnztl+",  BBO(16,BODNZT,0,1),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDP}},
6295
{"bdnztl",   BBO(16,BODNZT,0,1),  BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BD}},
6296
{"bdnzta-",  BBO(16,BODNZT,1,0),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6297
{"bdnzta+",  BBO(16,BODNZT,1,0),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6298
{"bdnzta",   BBO(16,BODNZT,1,0),  BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BDA}},
6299
{"bdnztla-", BBO(16,BODNZT,1,1),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6300
{"bdnztla+", BBO(16,BODNZT,1,1),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6301
{"bdnztla",  BBO(16,BODNZT,1,1),  BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BDA}},
6302
{"bdzt-",    BBO(16,BODZT,0,0),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDM}},
6303
{"bdzt+",    BBO(16,BODZT,0,0),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDP}},
6304
{"bdzt",     BBO(16,BODZT,0,0),   BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BD}},
6305
{"bdztl-",   BBO(16,BODZT,0,1),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDM}},
6306
{"bdztl+",   BBO(16,BODZT,0,1),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDP}},
6307
{"bdztl",    BBO(16,BODZT,0,1),   BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BD}},
6308
{"bdzta-",   BBO(16,BODZT,1,0),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6309
{"bdzta+",   BBO(16,BODZT,1,0),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6310
{"bdzta",    BBO(16,BODZT,1,0),   BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BDA}},
6311
{"bdztla-",  BBO(16,BODZT,1,1),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6312
{"bdztla+",  BBO(16,BODZT,1,1),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6313
{"bdztla",   BBO(16,BODZT,1,1),   BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BDA}},
6314
6315
{"bt-",      BBO(16,BOT,0,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDM}},
6316
{"bt+",      BBO(16,BOT,0,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDP}},
6317
{"bt",       BBO(16,BOT,0,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BD}},
6318
{"bbt",      BBO(16,BOT,0,0),   BBOAT_MASK,    PWRCOM,   PPCVLE|EXT,  {BI, BD}},
6319
{"btl-",     BBO(16,BOT,0,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDM}},
6320
{"btl+",     BBO(16,BOT,0,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDP}},
6321
{"btl",      BBO(16,BOT,0,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BD}},
6322
{"bbtl",     BBO(16,BOT,0,1),   BBOAT_MASK,    PWRCOM,   PPCVLE|EXT,  {BI, BD}},
6323
{"bta-",     BBO(16,BOT,1,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDMA}},
6324
{"bta+",     BBO(16,BOT,1,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDPA}},
6325
{"bta",      BBO(16,BOT,1,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDA}},
6326
{"bbta",     BBO(16,BOT,1,0),   BBOAT_MASK,    PWRCOM,   PPCVLE|EXT,  {BI, BDA}},
6327
{"btla-",    BBO(16,BOT,1,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDMA}},
6328
{"btla+",    BBO(16,BOT,1,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDPA}},
6329
{"btla",     BBO(16,BOT,1,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDA}},
6330
{"bbtla",    BBO(16,BOT,1,1),   BBOAT_MASK,    PWRCOM,   PPCVLE|EXT,  {BI, BDA}},
6331
6332
{"bc-",   B(16,0,0),  B_MASK,      PPCCOM,  PPCVLE|EXT, {BOM, BI, BDM}},
6333
{"bc+",   B(16,0,0),  B_MASK,      PPCCOM,  PPCVLE|EXT, {BOP, BI, BDP}},
6334
{"bc",    B(16,0,0),  B_MASK,      COM, PPCVLE,   {BO, BI, BD}},
6335
{"bcl-",  B(16,0,1),  B_MASK,      PPCCOM,  PPCVLE|EXT, {BOM, BI, BDM}},
6336
{"bcl+",  B(16,0,1),  B_MASK,      PPCCOM,  PPCVLE|EXT, {BOP, BI, BDP}},
6337
{"bcl",   B(16,0,1),  B_MASK,      COM, PPCVLE,   {BO, BI, BD}},
6338
{"bca-",  B(16,1,0),  B_MASK,      PPCCOM,  PPCVLE|EXT, {BOM, BI, BDMA}},
6339
{"bca+",  B(16,1,0),  B_MASK,      PPCCOM,  PPCVLE|EXT, {BOP, BI, BDPA}},
6340
{"bca",   B(16,1,0),  B_MASK,      COM, PPCVLE,   {BO, BI, BDA}},
6341
{"bcla-", B(16,1,1),  B_MASK,      PPCCOM,  PPCVLE|EXT, {BOM, BI, BDMA}},
6342
{"bcla+", B(16,1,1),  B_MASK,      PPCCOM,  PPCVLE|EXT, {BOP, BI, BDPA}},
6343
{"bcla",  B(16,1,1),  B_MASK,      COM, PPCVLE,   {BO, BI, BDA}},
6344
6345
{"svc",   SC(17,0,0), SC_MASK,     POWER, PPCVLE,   {SVC_LEV, FL1, FL2}},
6346
{"scv",   SC(17,0,1), SC_MASK,     POWER9,  PPCVLE,   {SVC_LEV}},
6347
{"svcl",  SC(17,0,1), SC_MASK,     POWER, PPCVLE,   {SVC_LEV, FL1, FL2}},
6348
{"sc",    SC(17,1,0), SC_MASK,     PPC, PPCVLE,   {LEV}},
6349
{"svca",  SC(17,1,0), SC_MASK,     PWRCOM,  PPCVLE,   {SV}},
6350
{"svcla", SC(17,1,1), SC_MASK,     POWER, PPCVLE,   {SV}},
6351
6352
{"b",   B(18,0,0),  B_MASK,      COM, PPCVLE,   {LI}},
6353
{"bl",    B(18,0,1),  B_MASK,      COM, PPCVLE,   {LI}},
6354
{"ba",    B(18,1,0),  B_MASK,      COM, PPCVLE,   {LIA}},
6355
{"bla",   B(18,1,1),  B_MASK,      COM, PPCVLE,   {LIA}},
6356
6357
{"mcrf",     XL(19,0), XLBB_MASK|(3<<21)|(3<<16), COM,  PPCVLE,   {BF, BFA}},
6358
6359
{"lnia",     DX(19,2),    NODX_MASK,   POWER9,  PPCVLE|EXT, {RT}},
6360
{"addpcis",  DX(19,2),    DX_MASK,     POWER9,  PPCVLE,   {RT, DXD}},
6361
{"subpcis",  DX(19,2),    DX_MASK,     POWER9,  PPCVLE|EXT, {RT, NDXD}},
6362
6363
{"bdnzlr-",  XLO(19,BODNZ,16,0),  XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {BH}},
6364
{"bdnzlr+",  XLO(19,BODNZP,16,0), XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {BH}},
6365
{"bdnzlr",   XLO(19,BODNZ,16,0),  XLBOBIBB_MASK, PPCCOM,   PPCVLE|EXT,    {BH}},
6366
{"bdnzlrl-", XLO(19,BODNZ,16,1),  XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {BH}},
6367
{"bdnzlrl+", XLO(19,BODNZP,16,1), XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {BH}},
6368
{"bdnzlrl",  XLO(19,BODNZ,16,1),  XLBOBIBB_MASK, PPCCOM,   PPCVLE|EXT,    {BH}},
6369
{"bdzlr-",   XLO(19,BODZ,16,0),   XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {BH}},
6370
{"bdzlr+",   XLO(19,BODZP,16,0),  XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {BH}},
6371
{"bdzlr",    XLO(19,BODZ,16,0),   XLBOBIBB_MASK, PPCCOM,   PPCVLE|EXT,    {BH}},
6372
{"bdzlrl-",  XLO(19,BODZ,16,1),   XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {BH}},
6373
{"bdzlrl+",  XLO(19,BODZP,16,1),  XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {BH}},
6374
{"bdzlrl",   XLO(19,BODZ,16,1),   XLBOBIBB_MASK, PPCCOM,   PPCVLE|EXT,    {BH}},
6375
{"blr",      XLO(19,BOU,16,0),    XLBOBIBB_MASK, PPCCOM,   PPCVLE|EXT,    {BH}},
6376
{"br",       XLO(19,BOU,16,0),    XLBOBIBB_MASK, PWRCOM,   PPCVLE|EXT,    {BH}},
6377
{"blrl",     XLO(19,BOU,16,1),    XLBOBIBB_MASK, PPCCOM,   PPCVLE|EXT,    {BH}},
6378
{"brl",      XLO(19,BOU,16,1),    XLBOBIBB_MASK, PWRCOM,   PPCVLE|EXT,    {BH}},
6379
{"bdnzlr-",  XLO(19,BODNZM4,16,0),  XLBOBIBB_MASK, ISA_V2,   PPCVLE|EXT,    {BH}},
6380
{"bdnzlrl-", XLO(19,BODNZM4,16,1),  XLBOBIBB_MASK, ISA_V2,   PPCVLE|EXT,    {BH}},
6381
{"bdnzlr+",  XLO(19,BODNZP4,16,0),  XLBOBIBB_MASK, ISA_V2,   PPCVLE|EXT,    {BH}},
6382
{"bdnzlrl+", XLO(19,BODNZP4,16,1),  XLBOBIBB_MASK, ISA_V2,   PPCVLE|EXT,    {BH}},
6383
{"bdzlr-",   XLO(19,BODZM4,16,0), XLBOBIBB_MASK, ISA_V2,   PPCVLE|EXT,    {BH}},
6384
{"bdzlrl-",  XLO(19,BODZM4,16,1), XLBOBIBB_MASK, ISA_V2,   PPCVLE|EXT,    {BH}},
6385
{"bdzlr+",   XLO(19,BODZP4,16,0), XLBOBIBB_MASK, ISA_V2,   PPCVLE|EXT,    {BH}},
6386
{"bdzlrl+",  XLO(19,BODZP4,16,1), XLBOBIBB_MASK, ISA_V2,   PPCVLE|EXT,    {BH}},
6387
6388
{"bgelr-",   XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6389
{"bgelr+",   XLOCB(19,BOFP,CBLT,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6390
{"bgelr",    XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6391
{"bger",     XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6392
{"bnllr-",   XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6393
{"bnllr+",   XLOCB(19,BOFP,CBLT,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6394
{"bnllr",    XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6395
{"bnlr",     XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6396
{"bgelrl-",  XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6397
{"bgelrl+",  XLOCB(19,BOFP,CBLT,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6398
{"bgelrl",   XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6399
{"bgerl",    XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6400
{"bnllrl-",  XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6401
{"bnllrl+",  XLOCB(19,BOFP,CBLT,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6402
{"bnllrl",   XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6403
{"bnlrl",    XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6404
{"blelr-",   XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6405
{"blelr+",   XLOCB(19,BOFP,CBGT,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6406
{"blelr",    XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6407
{"bler",     XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6408
{"bnglr-",   XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6409
{"bnglr+",   XLOCB(19,BOFP,CBGT,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6410
{"bnglr",    XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6411
{"bngr",     XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6412
{"blelrl-",  XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6413
{"blelrl+",  XLOCB(19,BOFP,CBGT,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6414
{"blelrl",   XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6415
{"blerl",    XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6416
{"bnglrl-",  XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6417
{"bnglrl+",  XLOCB(19,BOFP,CBGT,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6418
{"bnglrl",   XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6419
{"bngrl",    XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6420
{"bnelr-",   XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6421
{"bnelr+",   XLOCB(19,BOFP,CBEQ,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6422
{"bnelr",    XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6423
{"bner",     XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6424
{"bnelrl-",  XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6425
{"bnelrl+",  XLOCB(19,BOFP,CBEQ,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6426
{"bnelrl",   XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6427
{"bnerl",    XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6428
{"bnslr-",   XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6429
{"bnslr+",   XLOCB(19,BOFP,CBSO,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6430
{"bnslr",    XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6431
{"bnsr",     XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6432
{"bnulr-",   XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6433
{"bnulr+",   XLOCB(19,BOFP,CBSO,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6434
{"bnulr",    XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6435
{"bnslrl-",  XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6436
{"bnslrl+",  XLOCB(19,BOFP,CBSO,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6437
{"bnslrl",   XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6438
{"bnsrl",    XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6439
{"bnulrl-",  XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6440
{"bnulrl+",  XLOCB(19,BOFP,CBSO,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6441
{"bnulrl",   XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6442
{"bgelr-",   XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6443
{"bnllr-",   XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6444
{"bgelrl-",  XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6445
{"bnllrl-",  XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6446
{"blelr-",   XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6447
{"bnglr-",   XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6448
{"blelrl-",  XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6449
{"bnglrl-",  XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6450
{"bnelr-",   XLOCB(19,BOFM4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6451
{"bnelrl-",  XLOCB(19,BOFM4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6452
{"bnslr-",   XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6453
{"bnulr-",   XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6454
{"bnslrl-",  XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6455
{"bnulrl-",  XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6456
{"bgelr+",   XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6457
{"bnllr+",   XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6458
{"bgelrl+",  XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6459
{"bnllrl+",  XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6460
{"blelr+",   XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6461
{"bnglr+",   XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6462
{"blelrl+",  XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6463
{"bnglrl+",  XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6464
{"bnelr+",   XLOCB(19,BOFP4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6465
{"bnelrl+",  XLOCB(19,BOFP4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6466
{"bnslr+",   XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6467
{"bnulr+",   XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6468
{"bnslrl+",  XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6469
{"bnulrl+",  XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6470
{"bltlr-",   XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6471
{"bltlr+",   XLOCB(19,BOTP,CBLT,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6472
{"bltlr",    XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6473
{"bltr",     XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6474
{"bltlrl-",  XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6475
{"bltlrl+",  XLOCB(19,BOTP,CBLT,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6476
{"bltlrl",   XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6477
{"bltrl",    XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6478
{"bgtlr-",   XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6479
{"bgtlr+",   XLOCB(19,BOTP,CBGT,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6480
{"bgtlr",    XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6481
{"bgtr",     XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6482
{"bgtlrl-",  XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6483
{"bgtlrl+",  XLOCB(19,BOTP,CBGT,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6484
{"bgtlrl",   XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6485
{"bgtrl",    XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6486
{"beqlr-",   XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6487
{"beqlr+",   XLOCB(19,BOTP,CBEQ,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6488
{"beqlr",    XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6489
{"beqr",     XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6490
{"beqlrl-",  XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6491
{"beqlrl+",  XLOCB(19,BOTP,CBEQ,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6492
{"beqlrl",   XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6493
{"beqrl",    XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6494
{"bsolr-",   XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6495
{"bsolr+",   XLOCB(19,BOTP,CBSO,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6496
{"bsolr",    XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6497
{"bsor",     XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6498
{"bunlr-",   XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6499
{"bunlr+",   XLOCB(19,BOTP,CBSO,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6500
{"bunlr",    XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6501
{"bsolrl-",  XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6502
{"bsolrl+",  XLOCB(19,BOTP,CBSO,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6503
{"bsolrl",   XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6504
{"bsorl",    XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6505
{"bunlrl-",  XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6506
{"bunlrl+",  XLOCB(19,BOTP,CBSO,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6507
{"bunlrl",   XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6508
{"bltlr-",   XLOCB(19,BOTM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6509
{"bltlrl-",  XLOCB(19,BOTM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6510
{"bgtlr-",   XLOCB(19,BOTM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6511
{"bgtlrl-",  XLOCB(19,BOTM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6512
{"beqlr-",   XLOCB(19,BOTM4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6513
{"beqlrl-",  XLOCB(19,BOTM4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6514
{"bsolr-",   XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6515
{"bunlr-",   XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6516
{"bsolrl-",  XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6517
{"bunlrl-",  XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6518
{"bltlr+",   XLOCB(19,BOTP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6519
{"bltlrl+",  XLOCB(19,BOTP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6520
{"bgtlr+",   XLOCB(19,BOTP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6521
{"bgtlrl+",  XLOCB(19,BOTP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6522
{"beqlr+",   XLOCB(19,BOTP4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6523
{"beqlrl+",  XLOCB(19,BOTP4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6524
{"bsolr+",   XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6525
{"bunlr+",   XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6526
{"bsolrl+",  XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6527
{"bunlrl+",  XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6528
6529
{"bdnzflr-", XLO(19,BODNZF,16,0), XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6530
{"bdnzflr+", XLO(19,BODNZFP,16,0),  XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6531
{"bdnzflr",  XLO(19,BODNZF,16,0), XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6532
{"bdnzflrl-",XLO(19,BODNZF,16,1), XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6533
{"bdnzflrl+",XLO(19,BODNZFP,16,1),  XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6534
{"bdnzflrl", XLO(19,BODNZF,16,1), XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6535
{"bdzflr-",  XLO(19,BODZF,16,0),  XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6536
{"bdzflr+",  XLO(19,BODZFP,16,0), XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6537
{"bdzflr",   XLO(19,BODZF,16,0),  XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6538
{"bdzflrl-", XLO(19,BODZF,16,1),  XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6539
{"bdzflrl+", XLO(19,BODZFP,16,1), XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6540
{"bdzflrl",  XLO(19,BODZF,16,1),  XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6541
{"bflr-",    XLO(19,BOF,16,0),    XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6542
{"bflr+",    XLO(19,BOFP,16,0),   XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6543
{"bflr",     XLO(19,BOF,16,0),    XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6544
{"bbfr",     XLO(19,BOF,16,0),    XLBOBB_MASK,   PWRCOM,   PPCVLE|EXT,    {BI, BH}},
6545
{"bflrl-",   XLO(19,BOF,16,1),    XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6546
{"bflrl+",   XLO(19,BOFP,16,1),   XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6547
{"bflrl",    XLO(19,BOF,16,1),    XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6548
{"bbfrl",    XLO(19,BOF,16,1),    XLBOBB_MASK,   PWRCOM,   PPCVLE|EXT,    {BI, BH}},
6549
{"bflr-",    XLO(19,BOFM4,16,0),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6550
{"bflrl-",   XLO(19,BOFM4,16,1),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6551
{"bflr+",    XLO(19,BOFP4,16,0),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6552
{"bflrl+",   XLO(19,BOFP4,16,1),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6553
{"bdnztlr-", XLO(19,BODNZT,16,0), XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6554
{"bdnztlr+", XLO(19,BODNZTP,16,0),  XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6555
{"bdnztlr",  XLO(19,BODNZT,16,0), XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6556
{"bdnztlrl-", XLO(19,BODNZT,16,1),  XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6557
{"bdnztlrl+", XLO(19,BODNZTP,16,1), XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6558
{"bdnztlrl", XLO(19,BODNZT,16,1), XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6559
{"bdztlr-",  XLO(19,BODZT,16,0),  XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6560
{"bdztlr+",  XLO(19,BODZTP,16,0), XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6561
{"bdztlr",   XLO(19,BODZT,16,0),  XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6562
{"bdztlrl-", XLO(19,BODZT,16,1),  XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6563
{"bdztlrl+", XLO(19,BODZTP,16,1), XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6564
{"bdztlrl",  XLO(19,BODZT,16,1),  XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6565
{"btlr-",    XLO(19,BOT,16,0),    XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6566
{"btlr+",    XLO(19,BOTP,16,0),   XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6567
{"btlr",     XLO(19,BOT,16,0),    XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6568
{"bbtr",     XLO(19,BOT,16,0),    XLBOBB_MASK,   PWRCOM,   PPCVLE|EXT,    {BI, BH}},
6569
{"btlrl-",   XLO(19,BOT,16,1),    XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6570
{"btlrl+",   XLO(19,BOTP,16,1),   XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6571
{"btlrl",    XLO(19,BOT,16,1),    XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6572
{"bbtrl",    XLO(19,BOT,16,1),    XLBOBB_MASK,   PWRCOM,   PPCVLE|EXT,    {BI, BH}},
6573
{"btlr-",    XLO(19,BOTM4,16,0),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6574
{"btlrl-",   XLO(19,BOTM4,16,1),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6575
{"btlr+",    XLO(19,BOTP4,16,0),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6576
{"btlrl+",   XLO(19,BOTP4,16,1),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6577
6578
{"bclr-",    XLLK(19,16,0),   XLBH_MASK,     PPCCOM,   PPCVLE|EXT,  {BOM, BI, BH}},
6579
{"bclr+",    XLLK(19,16,0),   XLBH_MASK,     PPCCOM,   PPCVLE|EXT,  {BOP, BI, BH}},
6580
{"bclr",     XLLK(19,16,0),   XLBH_MASK,     PPCCOM,   PPCVLE,  {BO, BI, BH}},
6581
{"bcr",      XLLK(19,16,0),   XLBH_MASK,     PWRCOM,   PPCVLE,  {BO, BI, BH}},
6582
{"bclrl-",   XLLK(19,16,1),   XLBH_MASK,     PPCCOM,   PPCVLE|EXT,  {BOM, BI, BH}},
6583
{"bclrl+",   XLLK(19,16,1),   XLBH_MASK,     PPCCOM,   PPCVLE|EXT,  {BOP, BI, BH}},
6584
{"bclrl",    XLLK(19,16,1),   XLBH_MASK,     PPCCOM,   PPCVLE,  {BO, BI, BH}},
6585
{"bcrl",     XLLK(19,16,1),   XLBH_MASK,     PWRCOM,   PPCVLE,  {BO, BI, BH}},
6586
6587
{"rfid",  XL(19,18),  0xffffffff,  PPC64, PPCVLE, {0}},
6588
6589
{"crnot", XL(19,33),  XL_MASK,     PPCCOM,  PPCVLE|EXT, {BT, BAB}},
6590
{"crnor", XL(19,33),  XL_MASK,     COM, PPCVLE,   {BT, BA, BB}},
6591
6592
{"rfmci", X(19,38),    0xffffffff, PPCRFMCI|PPCA2|PPC476, PPCVLE, {0}},
6593
{"rfdi",  XL(19,39),  0xffffffff,  E500MC,  PPCVLE,   {0}},
6594
{"rfi",   XL(19,50),  0xffffffff,  COM, PPCVLE,   {0}},
6595
{"rfci",  XL(19,51), 0xffffffff, PPC403|BOOKE|PPCE300|PPCA2|PPC476, PPCVLE, {0}},
6596
6597
{"rfscv", XL(19,82),  0xffffffff,  POWER9,  PPCVLE,   {0}},
6598
{"rfsvc", XL(19,82),  0xffffffff,  POWER, PPCVLE,   {0}},
6599
6600
{"rfgi",  XL(19,102),   0xffffffff, E500MC|PPCA2, PPCVLE,   {0}},
6601
6602
{"crandc",  XL(19,129), XL_MASK,     COM, PPCVLE,   {BT, BA, BB}},
6603
6604
{"rfebb", XL(19,146), XLS_MASK,    POWER8,  PPCVLE,   {SXL}},
6605
6606
{"isync", XL(19,150), 0xffffffff,  PPCCOM,  PPCVLE,   {0}},
6607
{"ics",   XL(19,150), 0xffffffff,  PWRCOM,  PPCVLE,   {0}},
6608
6609
{"crclr", XL(19,193), XL_MASK,     PPCCOM,  PPCVLE|EXT, {BTAB}},
6610
{"crxor", XL(19,193), XL_MASK,     COM, PPCVLE,   {BT, BA, BB}},
6611
6612
{"dnh",   X(19,198),  X_MASK,      E500MC,  PPCVLE,   {DUI, DUIS}},
6613
6614
{"crnand",  XL(19,225), XL_MASK,     COM, PPCVLE,   {BT, BA, BB}},
6615
6616
{"crand", XL(19,257), XL_MASK,     COM, PPCVLE,   {BT, BA, BB}},
6617
6618
{"hrfid", XL(19,274),    0xffffffff, POWER5|CELL, PPC476|PPCVLE,  {0}},
6619
6620
{"crset", XL(19,289), XL_MASK,     PPCCOM,  PPCVLE|EXT, {BTAB}},
6621
{"creqv", XL(19,289), XL_MASK,     COM, PPCVLE,   {BT, BA, BB}},
6622
6623
{"urfid", XL(19,306), 0xffffffff,  POWER9,  PPCVLE,   {0}},
6624
{"stop",  XL(19,370), 0xffffffff,  POWER9,  PPCVLE,   {0}},
6625
6626
{"doze",  XL(19,402), 0xffffffff,  POWER6,  POWER9|PPCVLE,  {0}},
6627
6628
{"crorc", XL(19,417), XL_MASK,     COM, PPCVLE,   {BT, BA, BB}},
6629
6630
{"nap",   XL(19,434), 0xffffffff,  POWER6,  POWER9|PPCVLE,  {0}},
6631
6632
{"crmove",  XL(19,449), XL_MASK,     PPCCOM,  PPCVLE|EXT, {BT, BAB}},
6633
{"cror",  XL(19,449), XL_MASK,     COM, PPCVLE,   {BT, BA, BB}},
6634
6635
{"sleep", XL(19,466), 0xffffffff,  POWER6,  POWER9|PPCVLE,  {0}},
6636
{"rvwinkle",  XL(19,498), 0xffffffff,  POWER6,  POWER9|PPCVLE,  {0}},
6637
6638
{"bctr",    XLO(19,BOU,528,0),    XLBOBIBB_MASK, COM,  PPCVLE|EXT,    {BH}},
6639
{"bctrl",   XLO(19,BOU,528,1),    XLBOBIBB_MASK, COM,  PPCVLE|EXT,    {BH}},
6640
{"bgectr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6641
{"bgectr+", XLOCB(19,BOFP,CBLT,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6642
{"bgectr",  XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6643
{"bnlctr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6644
{"bnlctr+", XLOCB(19,BOFP,CBLT,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6645
{"bnlctr",  XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6646
{"bgectrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6647
{"bgectrl+",XLOCB(19,BOFP,CBLT,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6648
{"bgectrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6649
{"bnlctrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6650
{"bnlctrl+",XLOCB(19,BOFP,CBLT,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6651
{"bnlctrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6652
{"blectr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6653
{"blectr+", XLOCB(19,BOFP,CBGT,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6654
{"blectr",  XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6655
{"bngctr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6656
{"bngctr+", XLOCB(19,BOFP,CBGT,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6657
{"bngctr",  XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6658
{"blectrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6659
{"blectrl+",XLOCB(19,BOFP,CBGT,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6660
{"blectrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6661
{"bngctrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6662
{"bngctrl+",XLOCB(19,BOFP,CBGT,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6663
{"bngctrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6664
{"bnectr-", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6665
{"bnectr+", XLOCB(19,BOFP,CBEQ,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6666
{"bnectr",  XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6667
{"bnectrl-",XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6668
{"bnectrl+",XLOCB(19,BOFP,CBEQ,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6669
{"bnectrl", XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6670
{"bnsctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6671
{"bnsctr+", XLOCB(19,BOFP,CBSO,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6672
{"bnsctr",  XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6673
{"bnuctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6674
{"bnuctr+", XLOCB(19,BOFP,CBSO,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6675
{"bnuctr",  XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6676
{"bnsctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6677
{"bnsctrl+",XLOCB(19,BOFP,CBSO,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6678
{"bnsctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6679
{"bnuctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6680
{"bnuctrl+",XLOCB(19,BOFP,CBSO,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6681
{"bnuctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6682
{"bgectr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6683
{"bnlctr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6684
{"bgectrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6685
{"bnlctrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6686
{"blectr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6687
{"bngctr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6688
{"blectrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6689
{"bngctrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6690
{"bnectr-", XLOCB(19,BOFM4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6691
{"bnectrl-",XLOCB(19,BOFM4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6692
{"bnsctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6693
{"bnuctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6694
{"bnsctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6695
{"bnuctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6696
{"bgectr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6697
{"bnlctr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6698
{"bgectrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6699
{"bnlctrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6700
{"blectr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6701
{"bngctr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6702
{"blectrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6703
{"bngctrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6704
{"bnectr+", XLOCB(19,BOFP4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6705
{"bnectrl+",XLOCB(19,BOFP4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6706
{"bnsctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6707
{"bnuctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6708
{"bnsctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6709
{"bnuctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6710
{"bltctr-", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6711
{"bltctr+", XLOCB(19,BOTP,CBLT,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6712
{"bltctr",  XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6713
{"bltctrl-",XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6714
{"bltctrl+",XLOCB(19,BOTP,CBLT,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6715
{"bltctrl", XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6716
{"bgtctr-", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6717
{"bgtctr+", XLOCB(19,BOTP,CBGT,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6718
{"bgtctr",  XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6719
{"bgtctrl-",XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6720
{"bgtctrl+",XLOCB(19,BOTP,CBGT,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6721
{"bgtctrl", XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6722
{"beqctr-", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6723
{"beqctr+", XLOCB(19,BOTP,CBEQ,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6724
{"beqctr",  XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6725
{"beqctrl-",XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6726
{"beqctrl+",XLOCB(19,BOTP,CBEQ,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6727
{"beqctrl", XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6728
{"bsoctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6729
{"bsoctr+", XLOCB(19,BOTP,CBSO,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6730
{"bsoctr",  XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6731
{"bunctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6732
{"bunctr+", XLOCB(19,BOTP,CBSO,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6733
{"bunctr",  XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6734
{"bsoctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6735
{"bsoctrl+",XLOCB(19,BOTP,CBSO,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6736
{"bsoctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6737
{"bunctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6738
{"bunctrl+",XLOCB(19,BOTP,CBSO,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6739
{"bunctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6740
{"bltctr-", XLOCB(19,BOTM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6741
{"bltctrl-",XLOCB(19,BOTM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6742
{"bgtctr-", XLOCB(19,BOTM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6743
{"bgtctrl-",XLOCB(19,BOTM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6744
{"beqctr-", XLOCB(19,BOTM4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6745
{"beqctrl-",XLOCB(19,BOTM4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6746
{"bsoctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6747
{"bunctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6748
{"bsoctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6749
{"bunctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6750
{"bltctr+", XLOCB(19,BOTP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6751
{"bltctrl+",XLOCB(19,BOTP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6752
{"bgtctr+", XLOCB(19,BOTP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6753
{"bgtctrl+",XLOCB(19,BOTP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6754
{"beqctr+", XLOCB(19,BOTP4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6755
{"beqctrl+",XLOCB(19,BOTP4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6756
{"bsoctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6757
{"bunctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6758
{"bsoctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6759
{"bunctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6760
6761
{"bfctr-",  XLO(19,BOF,528,0),    XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6762
{"bfctr+",  XLO(19,BOFP,528,0),   XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6763
{"bfctr",   XLO(19,BOF,528,0),    XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6764
{"bfctrl-", XLO(19,BOF,528,1),    XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6765
{"bfctrl+", XLO(19,BOFP,528,1),   XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6766
{"bfctrl",  XLO(19,BOF,528,1),    XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6767
{"bfctr-",  XLO(19,BOFM4,528,0),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6768
{"bfctrl-", XLO(19,BOFM4,528,1),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6769
{"bfctr+",  XLO(19,BOFP4,528,0),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6770
{"bfctrl+", XLO(19,BOFP4,528,1),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6771
{"btctr-",  XLO(19,BOT,528,0),    XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6772
{"btctr+",  XLO(19,BOTP,528,0),   XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6773
{"btctr",   XLO(19,BOT,528,0),    XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6774
{"btctrl-", XLO(19,BOT,528,1),    XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6775
{"btctrl+", XLO(19,BOTP,528,1),   XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6776
{"btctrl",  XLO(19,BOT,528,1),    XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6777
{"btctr-",  XLO(19,BOTM4,528,0),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6778
{"btctrl-", XLO(19,BOTM4,528,1),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6779
{"btctr+",  XLO(19,BOTP4,528,0),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6780
{"btctrl+", XLO(19,BOTP4,528,1),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6781
6782
{"bcctr-",  XLLK(19,528,0),   XLBH_MASK,     PPCCOM,   PPCVLE|EXT,  {BOM, BI, BH}},
6783
{"bcctr+",  XLLK(19,528,0),   XLBH_MASK,     PPCCOM,   PPCVLE|EXT,  {BOP, BI, BH}},
6784
{"bcctr",   XLLK(19,528,0),   XLBH_MASK,     PPCCOM,   PPCVLE,  {BO, BI, BH}},
6785
{"bcc",     XLLK(19,528,0),   XLBH_MASK,     PWRCOM,   PPCVLE,  {BO, BI, BH}},
6786
{"bcctrl-", XLLK(19,528,1),   XLBH_MASK,     PPCCOM,   PPCVLE|EXT,  {BOM, BI, BH}},
6787
{"bcctrl+", XLLK(19,528,1),   XLBH_MASK,     PPCCOM,   PPCVLE|EXT,  {BOP, BI, BH}},
6788
{"bcctrl",  XLLK(19,528,1),   XLBH_MASK,     PPCCOM,   PPCVLE,  {BO, BI, BH}},
6789
{"bccl",    XLLK(19,528,1),   XLBH_MASK,     PWRCOM,   PPCVLE,  {BO, BI, BH}},
6790
6791
{"bdnztar",   XLO(19,BODNZ,560,0),  XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6792
{"bdnztarl",  XLO(19,BODNZ,560,1),  XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6793
{"bdztar",    XLO(19,BODZ,560,0), XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6794
{"bdztarl",   XLO(19,BODZ,560,1), XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6795
{"btar",      XLO(19,BOU,560,0),  XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6796
{"btarl",     XLO(19,BOU,560,1),  XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6797
{"bdnztar-",  XLO(19,BODNZM4,560,0),    XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6798
{"bdnztarl-", XLO(19,BODNZM4,560,1),    XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6799
{"bdnztar+",  XLO(19,BODNZP4,560,0),    XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6800
{"bdnztarl+", XLO(19,BODNZP4,560,1),    XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6801
{"bdztar-",   XLO(19,BODZM4,560,0),     XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6802
{"bdztarl-",  XLO(19,BODZM4,560,1),     XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6803
{"bdztar+",   XLO(19,BODZP4,560,0),     XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6804
{"bdztarl+",  XLO(19,BODZP4,560,1),     XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6805
6806
{"bgetar",  XLOCB(19,BOF,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6807
{"bnltar",  XLOCB(19,BOF,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6808
{"bgetarl", XLOCB(19,BOF,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6809
{"bnltarl", XLOCB(19,BOF,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6810
{"bletar",  XLOCB(19,BOF,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6811
{"bngtar",  XLOCB(19,BOF,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6812
{"bletarl", XLOCB(19,BOF,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6813
{"bngtarl", XLOCB(19,BOF,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6814
{"bnetar",  XLOCB(19,BOF,CBEQ,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6815
{"bnetarl", XLOCB(19,BOF,CBEQ,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6816
{"bnstar",  XLOCB(19,BOF,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6817
{"bnutar",  XLOCB(19,BOF,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6818
{"bnstarl", XLOCB(19,BOF,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6819
{"bnutarl", XLOCB(19,BOF,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6820
{"bgetar-", XLOCB(19,BOFM4,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6821
{"bnltar-", XLOCB(19,BOFM4,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6822
{"bgetarl-",XLOCB(19,BOFM4,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6823
{"bnltarl-",XLOCB(19,BOFM4,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6824
{"bletar-", XLOCB(19,BOFM4,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6825
{"bngtar-", XLOCB(19,BOFM4,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6826
{"bletarl-",XLOCB(19,BOFM4,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6827
{"bngtarl-",XLOCB(19,BOFM4,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6828
{"bnetar-", XLOCB(19,BOFM4,CBEQ,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6829
{"bnetarl-",XLOCB(19,BOFM4,CBEQ,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6830
{"bnstar-", XLOCB(19,BOFM4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6831
{"bnutar-", XLOCB(19,BOFM4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6832
{"bnstarl-",XLOCB(19,BOFM4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6833
{"bnutarl-",XLOCB(19,BOFM4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6834
{"bgetar+", XLOCB(19,BOFP4,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6835
{"bnltar+", XLOCB(19,BOFP4,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6836
{"bgetarl+",XLOCB(19,BOFP4,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6837
{"bnltarl+",XLOCB(19,BOFP4,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6838
{"bletar+", XLOCB(19,BOFP4,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6839
{"bngtar+", XLOCB(19,BOFP4,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6840
{"bletarl+",XLOCB(19,BOFP4,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6841
{"bngtarl+",XLOCB(19,BOFP4,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6842
{"bnetar+", XLOCB(19,BOFP4,CBEQ,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6843
{"bnetarl+",XLOCB(19,BOFP4,CBEQ,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6844
{"bnstar+", XLOCB(19,BOFP4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6845
{"bnutar+", XLOCB(19,BOFP4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6846
{"bnstarl+",XLOCB(19,BOFP4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6847
{"bnutarl+",XLOCB(19,BOFP4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6848
{"blttar",  XLOCB(19,BOT,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6849
{"blttarl", XLOCB(19,BOT,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6850
{"bgttar",  XLOCB(19,BOT,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6851
{"bgttarl", XLOCB(19,BOT,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6852
{"beqtar",  XLOCB(19,BOT,CBEQ,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6853
{"beqtarl", XLOCB(19,BOT,CBEQ,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6854
{"bsotar",  XLOCB(19,BOT,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6855
{"buntar",  XLOCB(19,BOT,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6856
{"bsotarl", XLOCB(19,BOT,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6857
{"buntarl", XLOCB(19,BOT,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6858
{"blttar-", XLOCB(19,BOTM4,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6859
{"blttarl-",XLOCB(19,BOTM4,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6860
{"bgttar-", XLOCB(19,BOTM4,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6861
{"bgttarl-",XLOCB(19,BOTM4,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6862
{"beqtar-", XLOCB(19,BOTM4,CBEQ,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6863
{"beqtarl-",XLOCB(19,BOTM4,CBEQ,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6864
{"bsotar-", XLOCB(19,BOTM4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6865
{"buntar-", XLOCB(19,BOTM4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6866
{"bsotarl-",XLOCB(19,BOTM4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6867
{"buntarl-",XLOCB(19,BOTM4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6868
{"blttar+", XLOCB(19,BOTP4,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6869
{"blttarl+",XLOCB(19,BOTP4,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6870
{"bgttar+", XLOCB(19,BOTP4,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6871
{"bgttarl+",XLOCB(19,BOTP4,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6872
{"beqtar+", XLOCB(19,BOTP4,CBEQ,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6873
{"beqtarl+",XLOCB(19,BOTP4,CBEQ,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6874
{"bsotar+", XLOCB(19,BOTP4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6875
{"buntar+", XLOCB(19,BOTP4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6876
{"bsotarl+",XLOCB(19,BOTP4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6877
{"buntarl+",XLOCB(19,BOTP4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6878
6879
{"bdnzftar",  XLO(19,BODNZF,560,0),     XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
6880
{"bdnzftarl", XLO(19,BODNZF,560,1),     XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
6881
{"bdzftar",   XLO(19,BODZF,560,0),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
6882
{"bdzftarl",  XLO(19,BODZF,560,1),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
6883
6884
{"bftar",     XLO(19,BOF,560,0),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
6885
{"bftarl",    XLO(19,BOF,560,1),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
6886
{"bftar-",    XLO(19,BOFM4,560,0),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
6887
{"bftarl-",   XLO(19,BOFM4,560,1),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
6888
{"bftar+",    XLO(19,BOFP4,560,0),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
6889
{"bftarl+",   XLO(19,BOFP4,560,1),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
6890
6891
{"bdnzttar",  XLO(19,BODNZT,560,0),     XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
6892
{"bdnzttarl", XLO(19,BODNZT,560,1),     XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
6893
{"bdzttar",   XLO(19,BODZT,560,0),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
6894
{"bdzttarl",  XLO(19,BODZT,560,1),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
6895
6896
{"bttar",     XLO(19,BOT,560,0),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
6897
{"bttarl",    XLO(19,BOT,560,1),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
6898
{"bttar-",    XLO(19,BOTM4,560,0),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
6899
{"bttarl-",   XLO(19,BOTM4,560,1),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
6900
{"bttar+",    XLO(19,BOTP4,560,0),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
6901
{"bttarl+",   XLO(19,BOTP4,560,1),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
6902
6903
{"bctar-",  XLLK(19,560,0),   XLBH_MASK,     POWER8,   PPCVLE|EXT,  {BOM, BI, BH}},
6904
{"bctar+",  XLLK(19,560,0),   XLBH_MASK,     POWER8,   PPCVLE|EXT,  {BOP, BI, BH}},
6905
{"bctar",   XLLK(19,560,0),   XLBH_MASK,     POWER8,   PPCVLE,  {BO, BI, BH}},
6906
{"bctarl-", XLLK(19,560,1),   XLBH_MASK,     POWER8,   PPCVLE|EXT,  {BOM, BI, BH}},
6907
{"bctarl+", XLLK(19,560,1),   XLBH_MASK,     POWER8,   PPCVLE|EXT,  {BOP, BI, BH}},
6908
{"bctarl",  XLLK(19,560,1),   XLBH_MASK,     POWER8,   PPCVLE,  {BO, BI, BH}},
6909
6910
{"rlwimi",  M(20,0),  M_MASK,      PPCCOM,  PPCVLE,   {RA, RS, SH, MBE, ME}},
6911
{"inslwi",  M(20,0),  M_MASK,      PPCCOM,  PPCVLE|EXT, {RA, RS, ILWn, ILWb}},
6912
{"insrwi",  M(20,0),  M_MASK,      PPCCOM,  PPCVLE|EXT, {RA, RS, IRWn, IRWb}},
6913
{"rlimi", M(20,0),  M_MASK,      PWRCOM,  PPCVLE,   {RA, RS, SH, MBE, ME}},
6914
6915
{"rlwimi.", M(20,1),  M_MASK,      PPCCOM,  PPCVLE,   {RA, RS, SH, MBE, ME}},
6916
{"inslwi.", M(20,1),  M_MASK,      PPCCOM,  PPCVLE|EXT, {RA, RS, ILWn, ILWb}},
6917
{"insrwi.", M(20,1),  M_MASK,      PPCCOM,  PPCVLE|EXT, {RA, RS, IRWn, IRWb}},
6918
{"rlimi.",  M(20,1),  M_MASK,      PWRCOM,  PPCVLE,   {RA, RS, SH, MBE, ME}},
6919
6920
{"rotlwi",  MME(21,31,0), MMBME_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, SH}},
6921
{"rotrwi",  MME(21,31,0), MMBME_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, RRWn}},
6922
{"clrlwi",  MME(21,31,0), MSHME_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, MB}},
6923
{"clrrwi",  M(21,0),  MSHMB_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, CRWn}},
6924
{"slwi",  M(21,0),  MMB_MASK,    PPCCOM,  PPCVLE|EXT, {RA, RS, SLWn}},
6925
{"srwi",  MME(21,31,0), MME_MASK,    PPCCOM,  PPCVLE|EXT, {RA, RS, SRWn}},
6926
{"rlwinm",  M(21,0),  M_MASK,      PPCCOM,  PPCVLE,   {RA, RS, SH, MBE, ME}},
6927
{"extlwi",  M(21,0),  MMB_MASK,    PPCCOM,  PPCVLE|EXT, {RA, RS, ELWn, SH}},
6928
{"extrwi",  MME(21,31,0), MME_MASK,    PPCCOM,  PPCVLE|EXT, {RA, RS, ERWn, ERWb}},
6929
{"clrlslwi",  M(21,0),  M_MASK,      PPCCOM,  PPCVLE|EXT, {RA, RS, CSLWb, CSLWn}},
6930
{"sli",   M(21,0),  MMB_MASK,    PWRCOM,  PPCVLE|EXT, {RA, RS, SLWn}},
6931
{"sri",   MME(21,31,0), MME_MASK,    PWRCOM,  PPCVLE|EXT, {RA, RS, SRWn}},
6932
{"rlinm", M(21,0),  M_MASK,      PWRCOM,  PPCVLE,   {RA, RS, SH, MBE, ME}},
6933
{"rotlwi.", MME(21,31,1), MMBME_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, SH}},
6934
{"rotrwi.", MME(21,31,1), MMBME_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, RRWn}},
6935
{"clrlwi.", MME(21,31,1), MSHME_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, MB}},
6936
{"clrrwi.", M(21,1),  MSHMB_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, CRWn}},
6937
{"slwi.", M(21,1),  MMB_MASK,    PPCCOM,  PPCVLE|EXT, {RA, RS, SLWn}},
6938
{"srwi.", MME(21,31,1), MME_MASK,    PPCCOM,  PPCVLE|EXT, {RA, RS, SRWn}},
6939
{"rlwinm.", M(21,1),  M_MASK,      PPCCOM,  PPCVLE,   {RA, RS, SH, MBE, ME}},
6940
{"extlwi.", M(21,1),  MMB_MASK,    PPCCOM,  PPCVLE|EXT, {RA, RS, ELWn, SH}},
6941
{"extrwi.", MME(21,31,1), MME_MASK,    PPCCOM,  PPCVLE|EXT, {RA, RS, ERWn, ERWb}},
6942
{"clrlslwi.", M(21,1),  M_MASK,      PPCCOM,  PPCVLE|EXT, {RA, RS, CSLWb, CSLWn}},
6943
{"sli.",  M(21,1),  MMB_MASK,    PWRCOM,  PPCVLE|EXT, {RA, RS, SLWn}},
6944
{"sri.",  MME(21,31,1), MME_MASK,    PWRCOM,  PPCVLE|EXT, {RA, RS, SRWn}},
6945
{"rlinm.",  M(21,1),  M_MASK,      PWRCOM,  PPCVLE,   {RA, RS, SH, MBE, ME}},
6946
6947
{"rlmi",  M(22,0),  M_MASK,      M601,  PPCVLE,   {RA, RS, RB, MBE, ME}},
6948
{"rlmi.", M(22,1),  M_MASK,      M601,  PPCVLE,   {RA, RS, RB, MBE, ME}},
6949
6950
{"svstep",  SVL(22,19,0), SVL_MASK, SVP64,  PPCVLE, {RT, SVi, vf}},
6951
{"svstep.", SVL(22,19,1), SVL_MASK, SVP64,  PPCVLE, {RT, SVi, vf}},
6952
6953
{"svshape", SVM(22,25), SVM_MASK, SVP64,  PPCVLE, {SVxd, SVyd, SVzd, SVrm, vf}},
6954
6955
{"setvl", SVL(22,27,0), SVL_MASK, SVP64,  PPCVLE, {RT, RA, SVi, vf, vs, ms}},
6956
{"setvl.",  SVL(22,27,1), SVL_MASK, SVP64,  PPCVLE, {RT, RA, SVi, vf, vs, ms}},
6957
6958
{"svindex", SVI(22,41), SVI_MASK, SVP64,  PPCVLE, {SVG, rmm, SVd, ew, yx, mm, sk}},
6959
6960
{"svremap", SVRM(22,57),  SVRM_MASK,  SVP64,  PPCVLE, {SVme, mi0, mi1, mi2, mo0, mo1, pst}},
6961
6962
{"rotlw", MME(23,31,0), MMBME_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, RB}},
6963
{"rlwnm", M(23,0),  M_MASK,      PPCCOM,  PPCVLE,   {RA, RS, RB, MBE, ME}},
6964
{"rlnm",  M(23,0),  M_MASK,      PWRCOM,  PPCVLE,   {RA, RS, RB, MBE, ME}},
6965
{"rotlw.",  MME(23,31,1), MMBME_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, RB}},
6966
{"rlwnm.",  M(23,1),  M_MASK,      PPCCOM,  PPCVLE,   {RA, RS, RB, MBE, ME}},
6967
{"rlnm.", M(23,1),  M_MASK,      PWRCOM,  PPCVLE,   {RA, RS, RB, MBE, ME}},
6968
6969
{"nop",   OP(24),   0xffffffff,  PPCCOM,  PPCVLE|EXT, {0}},
6970
{"exser", 0x63ff0000, 0xffffffff,  POWER9,  PPCVLE|EXT, {0}},
6971
{"ori",   OP(24),   OP_MASK,     PPCCOM,  PPCVLE,   {RA, RS, UI}},
6972
{"oril",  OP(24),   OP_MASK,     PWRCOM,  PPCVLE,   {RA, RS, UI}},
6973
6974
{"oris",  OP(25),   OP_MASK,     PPCCOM,  PPCVLE,   {RA, RS, UI}},
6975
{"oriu",  OP(25),   OP_MASK,     PWRCOM,  PPCVLE,   {RA, RS, UI}},
6976
6977
{"xnop",  OP(26),   0xffffffff,  PPCCOM,  PPCVLE|EXT, {0}},
6978
{"xori",  OP(26),   OP_MASK,     PPCCOM,  PPCVLE,   {RA, RS, UI}},
6979
{"xoril", OP(26),   OP_MASK,     PWRCOM,  PPCVLE,   {RA, RS, UI}},
6980
6981
{"xoris", OP(27),   OP_MASK,     PPCCOM,  PPCVLE,   {RA, RS, UI}},
6982
{"xoriu", OP(27),   OP_MASK,     PWRCOM,  PPCVLE,   {RA, RS, UI}},
6983
6984
{"andi.", OP(28),   OP_MASK,     PPCCOM,  PPCVLE,   {RA, RS, UI}},
6985
{"andil.",  OP(28),   OP_MASK,     PWRCOM,  PPCVLE,   {RA, RS, UI}},
6986
6987
{"andis.",  OP(29),   OP_MASK,     PPCCOM,  PPCVLE,   {RA, RS, UI}},
6988
{"andiu.",  OP(29),   OP_MASK,     PWRCOM,  PPCVLE,   {RA, RS, UI}},
6989
6990
{"rotldi",  MD(30,0,0), MDMB_MASK,   PPC64, PPCVLE|EXT, {RA, RS, SH6}},
6991
{"rotrdi",  MD(30,0,0), MDMB_MASK,   PPC64, PPCVLE|EXT, {RA, RS, RRDn}},
6992
{"clrldi",  MD(30,0,0), MDSH_MASK,   PPC64, PPCVLE|EXT, {RA, RS, MB6}},
6993
{"srdi",  MD(30,0,0), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, SRDn}},
6994
{"rldicl",  MD(30,0,0), MD_MASK,     PPC64, PPCVLE,   {RA, RS, SH6, MB6}},
6995
{"extrdi",  MD(30,0,0), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, ERDn, ERDb}},
6996
{"rotldi.", MD(30,0,1), MDMB_MASK,   PPC64, PPCVLE|EXT, {RA, RS, SH6}},
6997
{"rotrdi.", MD(30,0,1), MDMB_MASK,   PPC64, PPCVLE|EXT, {RA, RS, RRDn}},
6998
{"clrldi.", MD(30,0,1), MDSH_MASK,   PPC64, PPCVLE|EXT, {RA, RS, MB6}},
6999
{"srdi.", MD(30,0,1), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, SRDn}},
7000
{"rldicl.", MD(30,0,1), MD_MASK,     PPC64, PPCVLE,   {RA, RS, SH6, MB6}},
7001
{"extrdi.", MD(30,0,1), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, ERDn, ERDb}},
7002
7003
{"clrrdi",  MD(30,1,0), MDSH_MASK,   PPC64, PPCVLE|EXT, {RA, RS, CRDn}},
7004
{"sldi",  MD(30,1,0), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, SLDn}},
7005
{"rldicr",  MD(30,1,0), MD_MASK,     PPC64, PPCVLE,   {RA, RS, SH6, ME6}},
7006
{"extldi",  MD(30,1,0), MD_MASK,     PPC64, PPCVLE,   {RA, RS, ELDn, SH6}},
7007
{"clrrdi.", MD(30,1,1), MDSH_MASK,   PPC64, PPCVLE|EXT, {RA, RS, CRDn}},
7008
{"sldi.", MD(30,1,1), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, SLDn}},
7009
{"rldicr.", MD(30,1,1), MD_MASK,     PPC64, PPCVLE,   {RA, RS, SH6, ME6}},
7010
{"extldi.", MD(30,1,1), MD_MASK,     PPC64, PPCVLE,   {RA, RS, ELDn, SH6}},
7011
7012
{"rldic", MD(30,2,0), MD_MASK,     PPC64, PPCVLE,   {RA, RS, SH6, MB6}},
7013
{"clrlsldi",  MD(30,2,0), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, CSLDb, CSLDn}},
7014
{"rldic.",  MD(30,2,1), MD_MASK,     PPC64, PPCVLE,   {RA, RS, SH6, MB6}},
7015
{"clrlsldi.", MD(30,2,1), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, CSLDb, CSLDn}},
7016
7017
{"rldimi",  MD(30,3,0), MD_MASK,     PPC64, PPCVLE,   {RA, RS, SH6, MB6}},
7018
{"insrdi",  MD(30,3,0), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, IRDn, IRDb}},
7019
{"rldimi.", MD(30,3,1), MD_MASK,     PPC64, PPCVLE,   {RA, RS, SH6, MB6}},
7020
{"insrdi.", MD(30,3,1), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, IRDn, IRDb}},
7021
7022
{"rotld", MDS(30,8,0),  MDSMB_MASK,  PPC64, PPCVLE|EXT, {RA, RS, RB}},
7023
{"rldcl", MDS(30,8,0),  MDS_MASK,    PPC64, PPCVLE,   {RA, RS, RB, MB6}},
7024
{"rotld.",  MDS(30,8,1),  MDSMB_MASK,  PPC64, PPCVLE|EXT, {RA, RS, RB}},
7025
{"rldcl.",  MDS(30,8,1),  MDS_MASK,    PPC64, PPCVLE,   {RA, RS, RB, MB6}},
7026
7027
{"rldcr", MDS(30,9,0),  MDS_MASK,    PPC64, PPCVLE,   {RA, RS, RB, ME6}},
7028
{"rldcr.",  MDS(30,9,1),  MDS_MASK,    PPC64, PPCVLE,   {RA, RS, RB, ME6}},
7029
7030
{"cmpw",  XOPL(31,0,0), XCMPL_MASK,  PPCCOM,  EXT,    {OBF, RA, RB}},
7031
{"cmpd",  XOPL(31,0,1), XCMPL_MASK,  PPC64, EXT,    {OBF, RA, RB}},
7032
{"cmp",   X(31,0),  XCMP_MASK,   PPC, 0,    {BF, L32OPT, RA, RB}},
7033
{"cmp",   X(31,0),  XCMPL_MASK,  PWRCOM,  PPC,    {BF, RA, RB}},
7034
7035
{"twlgt", XTO(31,4,TOLGT), XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7036
{"tlgt",  XTO(31,4,TOLGT), XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7037
{"twllt", XTO(31,4,TOLLT), XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7038
{"tllt",  XTO(31,4,TOLLT), XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7039
{"tweq",  XTO(31,4,TOEQ),  XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7040
{"teq",   XTO(31,4,TOEQ),  XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7041
{"twlge", XTO(31,4,TOLGE), XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7042
{"tlge",  XTO(31,4,TOLGE), XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7043
{"twlnl", XTO(31,4,TOLNL), XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7044
{"tlnl",  XTO(31,4,TOLNL), XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7045
{"twlle", XTO(31,4,TOLLE), XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7046
{"tlle",  XTO(31,4,TOLLE), XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7047
{"twlng", XTO(31,4,TOLNG), XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7048
{"tlng",  XTO(31,4,TOLNG), XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7049
{"twgt",  XTO(31,4,TOGT),  XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7050
{"tgt",   XTO(31,4,TOGT),  XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7051
{"twge",  XTO(31,4,TOGE),  XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7052
{"tge",   XTO(31,4,TOGE),  XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7053
{"twnl",  XTO(31,4,TONL),  XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7054
{"tnl",   XTO(31,4,TONL),  XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7055
{"twlt",  XTO(31,4,TOLT),  XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7056
{"tlt",   XTO(31,4,TOLT),  XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7057
{"twle",  XTO(31,4,TOLE),  XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7058
{"tle",   XTO(31,4,TOLE),  XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7059
{"twng",  XTO(31,4,TONG),  XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7060
{"tng",   XTO(31,4,TONG),  XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7061
{"twne",  XTO(31,4,TONE),  XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7062
{"tne",   XTO(31,4,TONE),  XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7063
{"trap",  XTO(31,4,TOU),   0xffffffff, PPCCOM,  EXT,    {0}},
7064
{"twu",   XTO(31,4,TOU),   XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7065
{"tu",    XTO(31,4,TOU),   XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7066
{"tw",    X(31,4),   X_MASK,     PPCCOM,  0,    {TO, RA, RB}},
7067
{"t",   X(31,4),   X_MASK,     PWRCOM,  0,    {TO, RA, RB}},
7068
7069
{"lvsl",  X(31,6),  X_MASK,      PPCVEC,  0,    {VD, RA0, RB}},
7070
{"lvebx", X(31,7),  X_MASK,      PPCVEC,  0,    {VD, RA0, RB}},
7071
{"lbfcmx",  APU(31,7,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7072
7073
{"subfc", XO(31,8,0,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7074
{"sf",    XO(31,8,0,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7075
{"subc",  XO(31,8,0,0), XO_MASK,     PPCCOM,  EXT,    {RT, RB, RA}},
7076
{"subfc.",  XO(31,8,0,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7077
{"sf.",   XO(31,8,0,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7078
{"subc.", XO(31,8,0,1), XO_MASK,     PPCCOM,  EXT,    {RT, RB, RA}},
7079
7080
{"mulhdu",  XO(31,9,0,0), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
7081
{"mulhdu.", XO(31,9,0,1), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
7082
7083
{"addc",  XO(31,10,0,0),  XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7084
{"a",   XO(31,10,0,0),  XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7085
{"addc.", XO(31,10,0,1),  XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7086
{"a.",    XO(31,10,0,1),  XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7087
7088
{"mulhwu",  XO(31,11,0,0),  XO_MASK,     PPC, 0,    {RT, RA, RB}},
7089
{"mulhwu.", XO(31,11,0,1),  XO_MASK,     PPC, 0,    {RT, RA, RB}},
7090
7091
{"lxsiwzx", X(31,12), XX1_MASK,    PPCVSX2, 0,    {XT6, RA0, RB}},
7092
7093
{"lxvrbx",  X(31,13), XX1_MASK,    POWER10, 0,    {XT6, RA0, RB}},
7094
7095
{"isellt",  XISEL(31,15,0), X_MASK,      PPCISEL, EXT,    {RT, RA0, RB}},
7096
{"iselgt",  XISEL(31,15,1), X_MASK,      PPCISEL, EXT,    {RT, RA0, RB}},
7097
{"iseleq",  XISEL(31,15,2), X_MASK,      PPCISEL, EXT,    {RT, RA0, RB}},
7098
{"isel",  XISEL(31,15,0), XISEL_MASK, PPCISEL|TITAN, 0,   {RT, RA0, RB, BC}},
7099
7100
{"tlbilxlpid",  XTO(31,18,0), XTO_MASK, E500MC|PPCA2, 0,    {0}},
7101
{"tlbilxpid", XTO(31,18,1), XTO_MASK, E500MC|PPCA2, 0,    {0}},
7102
{"tlbilxva",  XTO(31,18,3), XTO_MASK, E500MC|PPCA2, 0,    {RA0, RB}},
7103
{"tlbilx",  X(31,18), X_MASK,   E500MC|PPCA2, 0,    {T, RA0, RB}},
7104
7105
{"mfcr",  XFXM(31,19,0,0), XFXFXM_MASK, COM,  0,    {RT, FXM4}},
7106
{"mfocrf",  XFXM(31,19,0,1), XFXFXM_MASK, COM,  0,    {RT, FXM}},
7107
7108
{"lwarx", X(31,20), XEH_MASK,    PPC, 0,    {RT, RA0, RB, EH}},
7109
7110
{"ldx",   X(31,21), X_MASK,      PPC64, 0,    {RT, RA0, RB}},
7111
7112
{"icbt",  X(31,22), X_MASK, POWER5|BOOKE|PPCE300, 0,    {CT, RA0, RB}},
7113
7114
{"lwzx",  X(31,23), X_MASK,      PPCCOM,  0,    {RT, RA0, RB}},
7115
{"lx",    X(31,23), X_MASK,      PWRCOM,  0,    {RT, RA, RB}},
7116
7117
{"slw",   XRC(31,24,0), X_MASK,      PPCCOM,  0,    {RA, RS, RB}},
7118
{"sl",    XRC(31,24,0), X_MASK,      PWRCOM,  0,    {RA, RS, RB}},
7119
{"slw.",  XRC(31,24,1), X_MASK,      PPCCOM,  0,    {RA, RS, RB}},
7120
{"sl.",   XRC(31,24,1), X_MASK,      PWRCOM,  0,    {RA, RS, RB}},
7121
7122
{"cntlzw",  XRC(31,26,0), XRB_MASK,    PPCCOM,  0,    {RA, RS}},
7123
{"cntlz", XRC(31,26,0), XRB_MASK,    PWRCOM,  0,    {RA, RS}},
7124
{"cntlzw.", XRC(31,26,1), XRB_MASK,    PPCCOM,  0,    {RA, RS}},
7125
{"cntlz.",  XRC(31,26,1), XRB_MASK,    PWRCOM,  0,    {RA, RS}},
7126
7127
{"sld",   XRC(31,27,0), X_MASK,      PPC64, 0,    {RA, RS, RB}},
7128
{"sld.",  XRC(31,27,1), X_MASK,      PPC64, 0,    {RA, RS, RB}},
7129
7130
{"and",   XRC(31,28,0), X_MASK,      COM, 0,    {RA, RS, RB}},
7131
{"and.",  XRC(31,28,1), X_MASK,      COM, 0,    {RA, RS, RB}},
7132
7133
{"maskg", XRC(31,29,0), X_MASK,      M601,  PPCA2,    {RA, RS, RB}},
7134
{"maskg.",  XRC(31,29,1), X_MASK,      M601,  PPCA2,    {RA, RS, RB}},
7135
7136
{"ldepx", X(31,29), X_MASK,   E500MC|PPCA2, 0,    {RT, RA0, RB}},
7137
7138
{"waitasec",  X(31,30),      XRTRARB_MASK, POWER8,  POWER9,   {0}},
7139
{"waitrsv", XWCPL(31,30,1,0),0xffffffff, POWER10, EXT,    {0}},
7140
{"pause_short", XWCPL(31,30,2,0),0xffffffff, POWER10, EXT,    {0}},
7141
{"wait",  X(31,30), XWCPL_MASK,  POWER10, 0,    {WC, PL}},
7142
{"wait",  X(31,30), XWC_MASK,    POWER9,  POWER10,  {WC}},
7143
7144
{"lwepx", X(31,31), X_MASK,   E500MC|PPCA2, 0,    {RT, RA0, RB}},
7145
7146
{"cmplw", XOPL(31,32,0),  XCMPL_MASK,  PPCCOM,  EXT,    {OBF, RA, RB}},
7147
{"cmpld", XOPL(31,32,1),  XCMPL_MASK,  PPC64, EXT,    {OBF, RA, RB}},
7148
{"cmpl",  X(31,32), XCMP_MASK,   PPC, 0,    {BF, L32OPT, RA, RB}},
7149
{"cmpl",  X(31,32), XCMPL_MASK,  PWRCOM,  PPC,    {BF, RA, RB}},
7150
7151
{"lvsr",  X(31,38), X_MASK,      PPCVEC,  0,    {VD, RA0, RB}},
7152
{"lvehx", X(31,39), X_MASK,      PPCVEC,  0,    {VD, RA0, RB}},
7153
{"lhfcmx",  APU(31,39,0), APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7154
7155
{"lxvrhx",  X(31,45), XX1_MASK,    POWER10, 0,    {XT6, RA0, RB}},
7156
7157
{"mviwsplt",  X(31,46), X_MASK,      E6500, 0,    {VD, RA, RB}},
7158
7159
{"lvewx", X(31,71), X_MASK,      PPCVEC,  0,    {VD, RA0, RB}},
7160
7161
{"addg6s",  XO(31,74,0,0),  XO_MASK,     POWER6,  0,    {RT, RA, RB}},
7162
7163
{"lxsiwax", X(31,76), XX1_MASK,    PPCVSX2, 0,    {XT6, RA0, RB}},
7164
7165
{"lxvrwx",  X(31,77), XX1_MASK,    POWER10, 0,    {XT6, RA0, RB}},
7166
7167
{"subf",  XO(31,40,0,0),  XO_MASK,     PPC, 0,    {RT, RA, RB}},
7168
{"sub",   XO(31,40,0,0),  XO_MASK,     PPC, EXT,    {RT, RB, RA}},
7169
{"subf.", XO(31,40,0,1),  XO_MASK,     PPC, 0,    {RT, RA, RB}},
7170
{"sub.",  XO(31,40,0,1),  XO_MASK,     PPC, EXT,    {RT, RB, RA}},
7171
7172
{"mffprd",  X(31,51), XX1RB_MASK|1, PPCVSX2,  EXT,    {RA, FRS}},
7173
{"mfvrd", X(31,51)|1, XX1RB_MASK|1, PPCVSX2,  EXT,    {RA, VS}},
7174
{"mfvsrd",  X(31,51), XX1RB_MASK,   PPCVSX2,  0,    {RA, XS6}},
7175
{"eratilx", X(31,51), X_MASK,      PPCA2, 0,    {ERAT_T, RA, RB}},
7176
7177
{"lbarx", X(31,52), XEH_MASK, POWER8|E6500, 0,    {RT, RA0, RB, EH}},
7178
7179
{"ldux",  X(31,53), X_MASK,      PPC64, 0,    {RT, RAL, RB}},
7180
7181
{"dcbst", X(31,54), XRT_MASK,    PPC, 0,    {RA0, RB}},
7182
7183
{"lwzux", X(31,55), X_MASK,      PPCCOM,  0,    {RT, RAL, RB}},
7184
{"lux",   X(31,55), X_MASK,      PWRCOM,  0,    {RT, RA, RB}},
7185
7186
{"cntlzd",  XRC(31,58,0), XRB_MASK,    PPC64, 0,    {RA, RS}},
7187
{"cntlzd.", XRC(31,58,1), XRB_MASK,    PPC64, 0,    {RA, RS}},
7188
7189
{"cntlzdm", X(31,59), X_MASK,      POWER10, 0,    {RA, RS, RB}},
7190
7191
{"andc",  XRC(31,60,0), X_MASK,      COM, 0,    {RA, RS, RB}},
7192
{"andc.", XRC(31,60,1), X_MASK,      COM, 0,    {RA, RS, RB}},
7193
7194
{"waitrsv", X(31,62)|(1<<21), 0xffffffff, E500MC|PPCA2, EXT,  {0}},
7195
{"waitimpl",  X(31,62)|(2<<21), 0xffffffff, E500MC|PPCA2, EXT,  {0}},
7196
{"wait",  X(31,62), XWC_MASK,    E500MC|PPCA2, 0,   {WC}},
7197
7198
{"dcbstep", XRT(31,63,0), XRT_MASK,    E500MC|PPCA2, 0,   {RA0, RB}},
7199
7200
{"tdlgt", XTO(31,68,TOLGT), XTO_MASK,  PPC64, EXT,    {RA, RB}},
7201
{"tdllt", XTO(31,68,TOLLT), XTO_MASK,  PPC64, EXT,    {RA, RB}},
7202
{"tdeq",  XTO(31,68,TOEQ),  XTO_MASK,  PPC64, EXT,    {RA, RB}},
7203
{"tdlge", XTO(31,68,TOLGE), XTO_MASK,  PPC64, EXT,    {RA, RB}},
7204
{"tdlnl", XTO(31,68,TOLNL), XTO_MASK,  PPC64, EXT,    {RA, RB}},
7205
{"tdlle", XTO(31,68,TOLLE), XTO_MASK,  PPC64, EXT,    {RA, RB}},
7206
{"tdlng", XTO(31,68,TOLNG), XTO_MASK,  PPC64, EXT,    {RA, RB}},
7207
{"tdgt",  XTO(31,68,TOGT),  XTO_MASK,  PPC64, EXT,    {RA, RB}},
7208
{"tdge",  XTO(31,68,TOGE),  XTO_MASK,  PPC64, EXT,    {RA, RB}},
7209
{"tdnl",  XTO(31,68,TONL),  XTO_MASK,  PPC64, EXT,    {RA, RB}},
7210
{"tdlt",  XTO(31,68,TOLT),  XTO_MASK,  PPC64, EXT,    {RA, RB}},
7211
{"tdle",  XTO(31,68,TOLE),  XTO_MASK,  PPC64, EXT,    {RA, RB}},
7212
{"tdng",  XTO(31,68,TONG),  XTO_MASK,  PPC64, EXT,    {RA, RB}},
7213
{"tdne",  XTO(31,68,TONE),  XTO_MASK,  PPC64, EXT,    {RA, RB}},
7214
{"tdu",   XTO(31,68,TOU),   XTO_MASK,  PPC64, EXT,    {RA, RB}},
7215
{"td",    X(31,68), X_MASK,      PPC64, 0,    {TO, RA, RB}},
7216
7217
{"lwfcmx",  APU(31,71,0), APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7218
{"subwus",  XO(31,72,0,0),  XO_MASK,     FUTURE,  EXT,    {RT, RB, RA}},
7219
{"subwus.", XO(31,72,0,1),  XO_MASK,     FUTURE,  EXT,    {RT, RB, RA}},
7220
{"subdus",  XO(31,72,1,0),  XO_MASK,     FUTURE,  EXT,    {RT, RB, RA}},
7221
{"subdus.", XO(31,72,1,1),  XO_MASK,     FUTURE,  EXT,    {RT, RB, RA}},
7222
{"subfus",  XO(31,72,0,0),  XOL_MASK,    FUTURE,  0,    {RT, XOL, RA, RB}},
7223
{"subfus.", XO(31,72,0,1),  XOL_MASK,    FUTURE,  0,    {RT, XOL, RA, RB}},
7224
{"mulhd", XO(31,73,0,0),  XO_MASK,     PPC64, 0,    {RT, RA, RB}},
7225
{"mulhd.",  XO(31,73,0,1),  XO_MASK,     PPC64, 0,    {RT, RA, RB}},
7226
7227
{"mulhw", XO(31,75,0,0),  XO_MASK,     PPC, 0,    {RT, RA, RB}},
7228
{"mulhw.",  XO(31,75,0,1),  XO_MASK,     PPC, 0,    {RT, RA, RB}},
7229
7230
{"msgsndu", XRTRA(31,78,0,0), XRTRA_MASK, POWER9, 0,    {RB}},
7231
{"dlmzb", XRC(31,78,0), X_MASK, PPC403|PPC440|PPC476|TITAN, 0,  {RA, RS, RB}},
7232
{"dlmzb.",  XRC(31,78,1), X_MASK, PPC403|PPC440|PPC476|TITAN, 0,  {RA, RS, RB}},
7233
7234
{"mtsrd", X(31,82),  XRB_MASK|(1<<20), PPC64, 0,    {SR, RS}},
7235
7236
{"mfmsr", X(31,83), XRARB_MASK,  COM, 0,    {RT}},
7237
7238
{"ldarx", X(31,84), XEH_MASK,    PPC64, 0,    {RT, RA0, RB, EH}},
7239
7240
{"dcbfl", XOPL(31,86,1),  XRT_MASK,    POWER5,  PPC476|EXT, {RA0, RB}},
7241
{"dcbflp",  XOPL2(31,86,3), XRT_MASK,    POWER9,  PPC476|EXT, {RA0, RB}},
7242
{"dcbfps",  XOPL3(31,86,4), XRT_MASK,    POWER10,   PPC476|EXT, {RA0, RB}},
7243
{"dcbstps", XOPL3(31,86,6), XRT_MASK,    POWER10,   PPC476|EXT, {RA0, RB}},
7244
{"dcbf",  X(31,86), XL3RT_MASK,  POWER10, PPC476,   {RA0, RB, L3OPT}},
7245
{"dcbf",  X(31,86), XLRT_MASK,   PPC, POWER10,  {RA0, RB, L2OPT}},
7246
7247
{"lbzx",  X(31,87), X_MASK,      COM, 0,    {RT, RA0, RB}},
7248
7249
{"lbepx", X(31,95), X_MASK,   E500MC|PPCA2, 0,    {RT, RA0, RB}},
7250
7251
{"dni",   XRC(31,97,1), XRB_MASK,    E6500, 0,    {DUI, DCTL}},
7252
7253
{"lvx",   X(31,103),  X_MASK,      PPCVEC,  0,    {VD, RA0, RB}},
7254
{"lqfcmx",  APU(31,103,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7255
7256
{"neg",   XO(31,104,0,0), XORB_MASK,   COM, 0,    {RT, RA}},
7257
{"neg.",  XO(31,104,0,1), XORB_MASK,   COM, 0,    {RT, RA}},
7258
7259
{"mul",   XO(31,107,0,0), XO_MASK,     M601,  0,    {RT, RA, RB}},
7260
{"mul.",  XO(31,107,0,1), XO_MASK,     M601,  0,    {RT, RA, RB}},
7261
7262
{"lxvrdx",  X(31,109),  XX1_MASK,    POWER10, 0,    {XT6, RA0, RB}},
7263
7264
{"msgclru", XRTRA(31,110,0,0), XRTRA_MASK, POWER9,  0,    {RB}},
7265
{"mvidsplt",  X(31,110),  X_MASK,      E6500, 0,    {VD, RA, RB}},
7266
7267
{"mtsrdin", X(31,114),  XRA_MASK,    PPC64, 0,    {RS, RB}},
7268
7269
{"mffprwz", X(31,115),  XX1RB_MASK|1, PPCVSX2,  EXT,    {RA, FRS}},
7270
{"mfvrwz",  X(31,115)|1,  XX1RB_MASK|1, PPCVSX2,  EXT,    {RA, VS}},
7271
{"mfvsrwz", X(31,115),  XX1RB_MASK,   PPCVSX2,  0,    {RA, XS6}},
7272
7273
{"lharx", X(31,116),  XEH_MASK, POWER8|E6500, 0,    {RT, RA0, RB, EH}},
7274
7275
{"clf",   X(31,118),  XTO_MASK,    POWER, 0,    {RA, RB}},
7276
7277
{"lbzux", X(31,119),  X_MASK,      COM, 0,    {RT, RAL, RB}},
7278
7279
{"popcntb", X(31,122),  XRB_MASK,    POWER5,  0,    {RA, RS}},
7280
7281
{"not",   XRC(31,124,0),  X_MASK,      COM, EXT,    {RA, RSB}},
7282
{"nor",   XRC(31,124,0),  X_MASK,      COM, 0,    {RA, RS, RB}},
7283
{"not.",  XRC(31,124,1),  X_MASK,      COM, EXT,    {RA, RSB}},
7284
{"nor.",  XRC(31,124,1),  X_MASK,      COM, 0,    {RA, RS, RB}},
7285
7286
{"dcbfep",  XRT(31,127,0),  XRT_MASK, E500MC|PPCA2, 0,    {RA0, RB}},
7287
7288
{"setb",  X(31,128),  XRB_MASK|(3<<16), POWER9, 0,    {RT, BFA}},
7289
7290
{"wrtee", X(31,131), XRARB_MASK, PPC403|BOOKE|PPCA2|PPC476, 0,  {RS}},
7291
7292
{"dcbtstls",  X(31,134),  X_MASK, PPCCHLK|PPC476|TITAN, 0,  {CT, RA0, RB}},
7293
7294
{"stvebx",  X(31,135),  X_MASK,      PPCVEC,  0,    {VS, RA0, RB}},
7295
{"stbfcmx", APU(31,135,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7296
7297
{"subfe", XO(31,136,0,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7298
{"sfe",   XO(31,136,0,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7299
{"subfe.",  XO(31,136,0,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7300
{"sfe.",  XO(31,136,0,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7301
7302
{"adde",  XO(31,138,0,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7303
{"ae",    XO(31,138,0,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7304
{"adde.", XO(31,138,0,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7305
{"ae.",   XO(31,138,0,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7306
7307
{"stxsiwx", X(31,140),  XX1_MASK,    PPCVSX2, 0,    {XS6, RA0, RB}},
7308
7309
{"stxvrbx", X(31,141),  XX1_MASK,    POWER10, 0,    {XT6, RA0, RB}},
7310
7311
{"msgsndp", XRTRA(31,142,0,0), XRTRA_MASK, POWER8,  0,    {RB}},
7312
{"dcbtstlse", X(31,142),  X_MASK,      PPCCHLK, E500MC,   {CT, RA0, RB}},
7313
7314
{"mtcr",  XFXM(31,144,0xff,0), XRARB_MASK, COM, EXT,    {RS}},
7315
{"mtcrf", XFXM(31,144,0,0), XFXFXM_MASK, COM, 0,    {FXM, RS}},
7316
{"mtocrf",  XFXM(31,144,0,1), XFXFXM_MASK, COM, 0,    {FXM, RS}},
7317
7318
{"mtmsr", X(31,146),  XRLARB_MASK, COM, 0,    {RS, A_L}},
7319
7320
{"mtsle", X(31,147),    XRTLRARB_MASK, POWER8,  0,    {L}},
7321
{"eratsx",  XRC(31,147,0),  X_MASK,      PPCA2, 0,    {RT, RA0, RB}},
7322
{"eratsx.", XRC(31,147,1),  X_MASK,      PPCA2, 0,    {RT, RA0, RB}},
7323
7324
{"stdx",  X(31,149),  X_MASK,      PPC64, 0,    {RS, RA0, RB}},
7325
7326
{"stwcx.",  XRC(31,150,1),  X_MASK,      PPC, 0,    {RS, RA0, RB}},
7327
7328
{"stwx",  X(31,151),  X_MASK,      PPCCOM,  0,    {RS, RA0, RB}},
7329
{"stx",   X(31,151),  X_MASK,      PWRCOM,  0,    {RS, RA, RB}},
7330
7331
{"slq",   XRC(31,152,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
7332
{"slq.",  XRC(31,152,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
7333
7334
{"sle",   XRC(31,153,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
7335
{"sle.",  XRC(31,153,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
7336
7337
{"prtyw", X(31,154),    XRB_MASK, POWER6|PPCA2|PPC476, 0,   {RA, RS}},
7338
7339
{"brw",   X(31,155),  XRB_MASK,    POWER10, 0,    {RA, RS}},
7340
{"pdepd", X(31,156),  X_MASK,      POWER10, 0,    {RA, RS, RB}},
7341
7342
{"stdepx",  X(31,157),  X_MASK,   E500MC|PPCA2, 0,    {RS, RA0, RB}},
7343
7344
{"stwepx",  X(31,159),  X_MASK,   E500MC|PPCA2, 0,    {RS, RA0, RB}},
7345
7346
{"wrteei",  X(31,163), XE_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {E}},
7347
7348
{"dcbtls",  X(31,166),  X_MASK,  PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
7349
7350
{"stvehx",  X(31,167),  X_MASK,      PPCVEC,  0,    {VS, RA0, RB}},
7351
{"sthfcmx", APU(31,167,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7352
7353
{"addex", ZRC(31,170,0),  Z2_MASK,     POWER9,  0,    {RT, RA, RB, CY}},
7354
7355
{"stxvrhx", X(31,173),  XX1_MASK,    POWER10, 0,    {XT6, RA0, RB}},
7356
7357
{"msgclrp", XRTRA(31,174,0,0), XRTRA_MASK, POWER8,  0,    {RB}},
7358
{"dcbtlse", X(31,174),  X_MASK,      PPCCHLK, E500MC,   {CT, RA0, RB}},
7359
7360
{"dmxxmfacc", XVA(31,177,0),  XACC_MASK,   POWER10, 0,    {ACC}},
7361
{"xxmfacc", XVA(31,177,0),  XACC_MASK,   POWER10, 0,    {ACC}},
7362
{"dmxxmtacc", XVA(31,177,1),  XACC_MASK,   POWER10, 0,    {ACC}},
7363
{"xxmtacc", XVA(31,177,1),  XACC_MASK,   POWER10, 0,    {ACC}},
7364
{"dmsetdmrz", XVA(31,177,2),  XDMR_MASK,   FUTURE,  0,    {DMR}},
7365
{"dmsetaccz", XVA(31,177,3),  XACC_MASK,   POWER10, 0,    {ACC}},
7366
{"xxsetaccz", XVA(31,177,3),  XACC_MASK,   POWER10, 0,    {ACC}},
7367
{"dmmr",  XVA(31,177,6),  XDMRDMR_MASK,FUTURE,  0,    {DMR, DMRAB}},
7368
{"dmxor", XVA(31,177,7),  XDMRDMR_MASK,FUTURE,  0,    {DMR, DMRAB}},
7369
7370
{"mtmsrd",  X(31,178),  XRLARB_MASK, PPC64, 0,    {RS, A_L}},
7371
7372
{"mtfprd",  X(31,179),  XX1RB_MASK|1, PPCVSX2,  EXT,    {FRT, RA}},
7373
{"mtvrd", X(31,179)|1,  XX1RB_MASK|1, PPCVSX2,  EXT,    {VD, RA}},
7374
{"mtvsrd",  X(31,179),  XX1RB_MASK,   PPCVSX2,  0,    {XT6, RA}},
7375
{"eratre",  X(31,179),  X_MASK,      PPCA2, 0,    {RT, RA, WS}},
7376
7377
{"stdux", X(31,181),  X_MASK,      PPC64, 0,    {RS, RAS, RB}},
7378
7379
{"stqcx.",  XRC(31,182,1), X_MASK|Q_MASK, POWER8, 0,    {RSQ, RA0, RB}},
7380
{"wchkall", X(31,182),  X_MASK,      PPCA2, 0,    {OBF}},
7381
7382
{"stwux", X(31,183),  X_MASK,      PPCCOM,  0,    {RS, RAS, RB}},
7383
{"stux",  X(31,183),  X_MASK,      PWRCOM,  0,    {RS, RA0, RB}},
7384
7385
{"sliq",  XRC(31,184,0),  X_MASK,      M601,  0,    {RA, RS, SH}},
7386
{"sliq.", XRC(31,184,1),  X_MASK,      M601,  0,    {RA, RS, SH}},
7387
7388
{"prtyd", X(31,186),  XRB_MASK, POWER6|PPCA2, 0,    {RA, RS}},
7389
7390
{"brd",   X(31,187),  XRB_MASK,    POWER10, 0,    {RA, RS}},
7391
{"pextd", X(31,188),  X_MASK,      POWER10, 0,    {RA, RS, RB}},
7392
7393
{"cmprb", X(31,192),  XCMP_MASK,   POWER9,  0,    {BF, L, RA, RB}},
7394
7395
{"icblq.",  XRC(31,198,1),  X_MASK,      E6500, 0,    {CT, RA0, RB}},
7396
7397
{"stvewx",  X(31,199),  X_MASK,      PPCVEC,  0,    {VS, RA0, RB}},
7398
{"stwfcmx", APU(31,199,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7399
7400
{"subfze",  XO(31,200,0,0), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
7401
{"sfze",  XO(31,200,0,0), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
7402
{"subfze.", XO(31,200,0,1), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
7403
{"sfze.", XO(31,200,0,1), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
7404
7405
{"addze", XO(31,202,0,0), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
7406
{"aze",   XO(31,202,0,0), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
7407
{"addze.",  XO(31,202,0,1), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
7408
{"aze.",  XO(31,202,0,1), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
7409
7410
{"stxvrwx", X(31,205),  XX1_MASK,    POWER10, 0,    {XT6, RA0, RB}},
7411
7412
{"msgsnd",  XRTRA(31,206,0,0), XRTRA_MASK, E500MC|PPCA2|POWER8, 0,  {RB}},
7413
7414
{"mtsr",  X(31,210), XRB_MASK|(1<<20), COM, NON32,    {SR, RS}},
7415
7416
{"mtfprwa", X(31,211),  XX1RB_MASK|1, PPCVSX2,  EXT,    {FRT, RA}},
7417
{"mtvrwa",  X(31,211)|1,  XX1RB_MASK|1, PPCVSX2,  EXT,    {VD, RA}},
7418
{"mtvsrwa", X(31,211),  XX1RB_MASK,   PPCVSX2,  0,    {XT6, RA}},
7419
{"eratwe",  X(31,211),  X_MASK,      PPCA2, 0,    {RS, RA, WS}},
7420
7421
{"ldawx.",  XRC(31,212,1),  X_MASK,      PPCA2, 0,    {RT, RA0, RB}},
7422
7423
{"stdcx.",  XRC(31,214,1),  X_MASK,      PPC64, 0,    {RS, RA0, RB}},
7424
7425
{"stbx",  X(31,215),  X_MASK,      COM, 0,    {RS, RA0, RB}},
7426
7427
{"sllq",  XRC(31,216,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
7428
{"sllq.", XRC(31,216,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
7429
7430
{"sleq",  XRC(31,217,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
7431
{"sleq.", XRC(31,217,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
7432
7433
{"brh",   X(31,219),  XRB_MASK,    POWER10, 0,    {RA, RS}},
7434
{"cfuged",  X(31,220),  X_MASK,      POWER10, 0,    {RA, RS, RB}},
7435
7436
{"stbepx",  X(31,223),  X_MASK,   E500MC|PPCA2, 0,    {RS, RA0, RB}},
7437
7438
{"cmpeqb",  X(31,224),  XCMPL_MASK,  POWER9,  0,    {BF, RA, RB}},
7439
7440
{"icblc", X(31,230),  X_MASK, PPCCHLK|PPC476|TITAN, 0,  {CT, RA0, RB}},
7441
7442
{"stvx",  X(31,231),  X_MASK,      PPCVEC,  0,    {VS, RA0, RB}},
7443
{"stqfcmx", APU(31,231,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7444
7445
{"subfme",  XO(31,232,0,0), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
7446
{"sfme",  XO(31,232,0,0), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
7447
{"subfme.", XO(31,232,0,1), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
7448
{"sfme.", XO(31,232,0,1), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
7449
7450
{"mulld", XO(31,233,0,0), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
7451
{"mulld.",  XO(31,233,0,1), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
7452
7453
{"addme", XO(31,234,0,0), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
7454
{"ame",   XO(31,234,0,0), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
7455
{"addme.",  XO(31,234,0,1), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
7456
{"ame.",  XO(31,234,0,1), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
7457
7458
{"mullw", XO(31,235,0,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7459
{"muls",  XO(31,235,0,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7460
{"mullw.",  XO(31,235,0,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7461
{"muls.", XO(31,235,0,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7462
7463
{"stxvrdx", X(31,237),  XX1_MASK,    POWER10, 0,    {XT6, RA0, RB}},
7464
7465
{"icblce",  X(31,238),  X_MASK,      PPCCHLK, E500MC|PPCA2, {CT, RA, RB}},
7466
{"msgclr",  XRTRA(31,238,0,0), XRTRA_MASK, E500MC|PPCA2|POWER8, 0,  {RB}},
7467
{"mtsrin",  X(31,242),  XRA_MASK,    PPC, NON32,    {RS, RB}},
7468
{"mtsri", X(31,242),  XRA_MASK,    POWER, NON32,    {RS, RB}},
7469
7470
{"mtfprwz", X(31,243),  XX1RB_MASK|1, PPCVSX2,  EXT,    {FRT, RA}},
7471
{"mtvrwz",  X(31,243)|1,  XX1RB_MASK|1, PPCVSX2,  EXT,    {VD, RA}},
7472
{"mtvsrwz", X(31,243),  XX1RB_MASK,   PPCVSX2,  0,    {XT6, RA}},
7473
7474
{"dcbtstt", XRT(31,246,0x10), XRT_MASK,  POWER7,  EXT,    {RA0, RB}},
7475
{"dcbtstct",  X(31,246),  X_MASK,      POWER4,  EXT,    {RA0, RB, THCT}},
7476
{"dcbtstds",  X(31,246),  X_MASK,      POWER4,  EXT,    {RA0, RB, THDS}},
7477
{"dcbtst",  X(31,246),  X_MASK,      POWER4,  DCBT_EO,  {RA0, RB, CT}},
7478
{"dcbtst",  X(31,246),  X_MASK,      DCBT_EO, 0,    {CT, RA0, RB}},
7479
{"dcbtst",  X(31,246),  X_MASK,      PPC, POWER4|DCBT_EO, {RA0, RB}},
7480
7481
{"stbux", X(31,247),  X_MASK,      COM, 0,    {RS, RAS, RB}},
7482
7483
{"slliq", XRC(31,248,0),  X_MASK,      M601,  0,    {RA, RS, SH}},
7484
{"slliq.",  XRC(31,248,1),  X_MASK,      M601,  0,    {RA, RS, SH}},
7485
7486
{"bpermd",  X(31,252),  X_MASK,   POWER7|PPCA2, 0,    {RA, RS, RB}},
7487
7488
{"dcbtstep",  XRT(31,255,0),  X_MASK,   E500MC|PPCA2, 0,    {RT, RA0, RB}},
7489
7490
{"mfdcrx",  X(31,259),  X_MASK, BOOKE|PPCA2|PPC476, TITAN,  {RS, RA}},
7491
{"mfdcrx.", XRC(31,259,1),  X_MASK,      PPCA2, 0,    {RS, RA}},
7492
7493
{"lvexbx",  X(31,261),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
7494
7495
{"icbt",  X(31,262),  XRT_MASK,    PPC403,  0,    {RA, RB}},
7496
7497
{"lvepxl",  X(31,263),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
7498
{"ldfcmx",  APU(31,263,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7499
7500
{"doz",   XO(31,264,0,0), XO_MASK,     M601,  0,    {RT, RA, RB}},
7501
{"doz.",  XO(31,264,0,1), XO_MASK,     M601,  0,    {RT, RA, RB}},
7502
7503
{"modud", X(31,265),  X_MASK,      POWER9,  0,    {RT, RA, RB}},
7504
7505
{"add",   XO(31,266,0,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7506
{"cax",   XO(31,266,0,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7507
{"add.",  XO(31,266,0,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7508
{"cax.",  XO(31,266,0,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7509
7510
{"moduw", X(31,267),  X_MASK,      POWER9,  0,    {RT, RA, RB}},
7511
7512
{"lxvx",  X(31,268),  XX1_MASK|1<<6, PPCVSX3, 0,    {XT6, RA0, RB}},
7513
{"lxvl",  X(31,269),  XX1_MASK,    PPCVSX3, 0,    {XT6, RA0, RB}},
7514
7515
{"ehpriv",  X(31,270),  0xffffffff,  E500MC|PPCA2, 0,   {0}},
7516
7517
{"tlbiel",  X(31,274),  X_MASK|1<<20,POWER9,  0,    {RB, RSO, RIC, PRS, X_R}},
7518
{"tlbiel",  X(31,274),  XRTLRA_MASK, POWER4,  POWER9|PPC476,  {RB, LOPT}},
7519
7520
{"mfapidi", X(31,275),  X_MASK,      BOOKE, E500|TITAN, {RT, RA}},
7521
7522
{"lqarx", X(31,276),  XEH_MASK|Q_MASK, POWER8,  0,    {RTQ, RAX, RBX, EH}},
7523
7524
{"lscbx", XRC(31,277,0),  X_MASK,      M601,  0,    {RT, RA, RB}},
7525
{"lscbx.",  XRC(31,277,1),  X_MASK,      M601,  0,    {RT, RA, RB}},
7526
7527
{"dcbtt", XRT(31,278,0x10), XRT_MASK,  POWER7,  EXT,    {RA0, RB}},
7528
{"dcbna", XRT(31,278,0x11), XRT_MASK,  POWER10, EXT,    {RA0, RB}},
7529
{"dcbtct",  X(31,278),  X_MASK,      POWER4,  EXT,    {RA0, RB, THCT}},
7530
{"dcbtds",  X(31,278),  X_MASK,      POWER4,  EXT,    {RA0, RB, THDS}},
7531
{"dcbt",  X(31,278),  X_MASK,      POWER4,  DCBT_EO,  {RA0, RB, CT}},
7532
{"dcbt",  X(31,278),  X_MASK,      DCBT_EO, 0,    {CT, RA0, RB}},
7533
{"dcbt",  X(31,278),  X_MASK,      PPC, POWER4|DCBT_EO, {RA0, RB}},
7534
7535
{"lhzx",  X(31,279),  X_MASK,      COM, 0,    {RT, RA0, RB}},
7536
7537
{"cdtbcd",  X(31,282),  XRB_MASK,    POWER6,  0,    {RA, RS}},
7538
7539
{"eqv",   XRC(31,284,0),  X_MASK,      COM, 0,    {RA, RS, RB}},
7540
{"eqv.",  XRC(31,284,1),  X_MASK,      COM, 0,    {RA, RS, RB}},
7541
7542
{"lhepx", X(31,287),  X_MASK,   E500MC|PPCA2, 0,    {RT, RA0, RB}},
7543
7544
{"mfdcrux", X(31,291),  X_MASK,  PPC464|PPC476, 0,    {RS, RA}},
7545
7546
{"lvexhx",  X(31,293),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
7547
{"lvepx", X(31,295),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
7548
7549
{"lxvll", X(31,301),  XX1_MASK,    PPCVSX3, 0,    {XT6, RA0, RB}},
7550
7551
{"mfbhrbe", X(31,302),  X_MASK,      POWER8,  0,    {RT, BHRBE}},
7552
7553
{"tlbie", X(31,306),  X_MASK|1<<20,POWER9,  TITAN,    {RB, RS, RIC, PRS, X_R}},
7554
{"tlbie", X(31,306),  XRA_MASK,    POWER7,  POWER9|TITAN, {RB, RS}},
7555
{"tlbie", X(31,306),  XRTLRA_MASK, PPC,    E500|POWER7|TITAN, {RB, LOPT}},
7556
{"tlbi",  X(31,306),  XRT_MASK,    POWER, 0,    {RA0, RB}},
7557
7558
{"mfvsrld", X(31,307),  XX1RB_MASK,  PPCVSX3, 0,    {RA, XS6}},
7559
7560
{"eciwx", X(31,310),  X_MASK,      PPC, E500|TITAN, {RT, RA0, RB}},
7561
7562
{"lhzux", X(31,311),  X_MASK,      COM, 0,    {RT, RAL, RB}},
7563
7564
{"cbcdtd",  X(31,314),  XRB_MASK,    POWER6,  0,    {RA, RS}},
7565
7566
{"xor",   XRC(31,316,0),  X_MASK,      COM, 0,    {RA, RS, RB}},
7567
{"xor.",  XRC(31,316,1),  X_MASK,      COM, 0,    {RA, RS, RB}},
7568
7569
{"dcbtep",  XRT(31,319,0),  X_MASK,   E500MC|PPCA2, 0,    {RT, RA0, RB}},
7570
7571
{"mfexisr", XSPR(31,323, 64), XSPR_MASK, PPC403,  0,    {RT}},
7572
{"mfexier", XSPR(31,323, 66), XSPR_MASK, PPC403,  0,    {RT}},
7573
{"mfbr0", XSPR(31,323,128), XSPR_MASK, PPC403,  0,    {RT}},
7574
{"mfbr1", XSPR(31,323,129), XSPR_MASK, PPC403,  0,    {RT}},
7575
{"mfbr2", XSPR(31,323,130), XSPR_MASK, PPC403,  0,    {RT}},
7576
{"mfbr3", XSPR(31,323,131), XSPR_MASK, PPC403,  0,    {RT}},
7577
{"mfbr4", XSPR(31,323,132), XSPR_MASK, PPC403,  0,    {RT}},
7578
{"mfbr5", XSPR(31,323,133), XSPR_MASK, PPC403,  0,    {RT}},
7579
{"mfbr6", XSPR(31,323,134), XSPR_MASK, PPC403,  0,    {RT}},
7580
{"mfbr7", XSPR(31,323,135), XSPR_MASK, PPC403,  0,    {RT}},
7581
{"mfbear",  XSPR(31,323,144), XSPR_MASK, PPC403,  0,    {RT}},
7582
{"mfbesr",  XSPR(31,323,145), XSPR_MASK, PPC403,  0,    {RT}},
7583
{"mfiocr",  XSPR(31,323,160), XSPR_MASK, PPC403,  0,    {RT}},
7584
{"mfdmacr0",  XSPR(31,323,192), XSPR_MASK, PPC403,  0,    {RT}},
7585
{"mfdmact0",  XSPR(31,323,193), XSPR_MASK, PPC403,  0,    {RT}},
7586
{"mfdmada0",  XSPR(31,323,194), XSPR_MASK, PPC403,  0,    {RT}},
7587
{"mfdmasa0",  XSPR(31,323,195), XSPR_MASK, PPC403,  0,    {RT}},
7588
{"mfdmacc0",  XSPR(31,323,196), XSPR_MASK, PPC403,  0,    {RT}},
7589
{"mfdmacr1",  XSPR(31,323,200), XSPR_MASK, PPC403,  0,    {RT}},
7590
{"mfdmact1",  XSPR(31,323,201), XSPR_MASK, PPC403,  0,    {RT}},
7591
{"mfdmada1",  XSPR(31,323,202), XSPR_MASK, PPC403,  0,    {RT}},
7592
{"mfdmasa1",  XSPR(31,323,203), XSPR_MASK, PPC403,  0,    {RT}},
7593
{"mfdmacc1",  XSPR(31,323,204), XSPR_MASK, PPC403,  0,    {RT}},
7594
{"mfdmacr2",  XSPR(31,323,208), XSPR_MASK, PPC403,  0,    {RT}},
7595
{"mfdmact2",  XSPR(31,323,209), XSPR_MASK, PPC403,  0,    {RT}},
7596
{"mfdmada2",  XSPR(31,323,210), XSPR_MASK, PPC403,  0,    {RT}},
7597
{"mfdmasa2",  XSPR(31,323,211), XSPR_MASK, PPC403,  0,    {RT}},
7598
{"mfdmacc2",  XSPR(31,323,212), XSPR_MASK, PPC403,  0,    {RT}},
7599
{"mfdmacr3",  XSPR(31,323,216), XSPR_MASK, PPC403,  0,    {RT}},
7600
{"mfdmact3",  XSPR(31,323,217), XSPR_MASK, PPC403,  0,    {RT}},
7601
{"mfdmada3",  XSPR(31,323,218), XSPR_MASK, PPC403,  0,    {RT}},
7602
{"mfdmasa3",  XSPR(31,323,219), XSPR_MASK, PPC403,  0,    {RT}},
7603
{"mfdmacc3",  XSPR(31,323,220), XSPR_MASK, PPC403,  0,    {RT}},
7604
{"mfdmasr", XSPR(31,323,224), XSPR_MASK, PPC403,  0,    {RT}},
7605
{"mfdcr", X(31,323), X_MASK, PPC403|BOOKE|PPCA2|PPC476, E500|TITAN, {RT, SPR}},
7606
{"mfdcr.",  XRC(31,323,1),  X_MASK,      PPCA2, 0,    {RT, SPR}},
7607
7608
{"lvexwx",  X(31,325),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
7609
7610
{"dcread",  X(31,326),  X_MASK,   PPC476|TITAN, 0,    {RT, RA0, RB}},
7611
7612
{"div",   XO(31,331,0,0), XO_MASK,     M601,  0,    {RT, RA, RB}},
7613
{"div.",  XO(31,331,0,1), XO_MASK,     M601,  0,    {RT, RA, RB}},
7614
7615
{"lxvdsx",  X(31,332),  XX1_MASK,    PPCVSX,  0,    {XT6, RA0, RB}},
7616
7617
{"lxvpx", X(31,333),  XX1_MASK,    POWER10, 0,    {XTP, RA0, RB}},
7618
7619
{"mfpmr", X(31,334),  X_MASK, PPCPMR|PPCE300, 0,    {RT, PMR}},
7620
{"mftmr", X(31,366),  X_MASK,      PPCTMR,  0,    {RT, TMR}},
7621
7622
{"slbsync", X(31,338),  0xffffffff,  POWER9,  0,    {0}},
7623
7624
{"mfmq",  XSPR(31,339,  0), XSPR_MASK, M601,  EXT,    {RT}},
7625
{"mfxer", XSPR(31,339,  1), XSPR_MASK, COM, EXT,    {RT}},
7626
{"mfudscr", XSPR(31,339,  3), XSPR_MASK, POWER9,  EXT,    {RS}},
7627
{"mfrtcu",  XSPR(31,339,  4), XSPR_MASK, COM, TITAN|EXT,  {RT}},
7628
{"mfrtcl",  XSPR(31,339,  5), XSPR_MASK, COM, TITAN|EXT,  {RT}},
7629
{"mfdec", XSPR(31,339,  6), XSPR_MASK, MFDEC1,  EXT,    {RT}},
7630
{"mflr",  XSPR(31,339,  8), XSPR_MASK, COM, EXT,    {RT}},
7631
{"mfctr", XSPR(31,339,  9), XSPR_MASK, COM, EXT,    {RT}},
7632
{"mfuamr",  XSPR(31,339, 13), XSPR_MASK, POWER9,  EXT,    {RS}},
7633
{"mfdscr",  XSPR(31,339, 17), XSPR_MASK, POWER6,  EXT,    {RT}},
7634
{"mftid", XSPR(31,339, 17), XSPR_MASK, POWER, EXT,    {RT}},
7635
{"mfdsisr", XSPR(31,339, 18), XSPR_MASK, COM, TITAN|EXT,  {RT}},
7636
{"mfdar", XSPR(31,339, 19), XSPR_MASK, COM, TITAN|EXT,  {RT}},
7637
{"mfdec", XSPR(31,339, 22), XSPR_MASK, MFDEC2,  MFDEC1|EXT, {RT}},
7638
{"mfsdr0",  XSPR(31,339, 24), XSPR_MASK, POWER, EXT,    {RT}},
7639
{"mfsdr1",  XSPR(31,339, 25), XSPR_MASK, COM, TITAN|EXT,  {RT}},
7640
{"mfsrr0",  XSPR(31,339, 26), XSPR_MASK, COM, EXT,    {RT}},
7641
{"mfsrr1",  XSPR(31,339, 27), XSPR_MASK, COM, EXT,    {RT}},
7642
{"mfcfar",  XSPR(31,339, 28), XSPR_MASK, POWER6,  EXT,    {RT}},
7643
{"mfamr", XSPR(31,339, 29), XSPR_MASK, POWER7,  EXT,    {RS}},
7644
{"mfpidr",  XSPR(31,339, 48), XSPR_MASK, POWER10, EXT,    {RS}},
7645
{"mfpid", XSPR(31,339, 48), XSPR_MASK, BOOKE, EXT,    {RT}},
7646
{"mfcsrr0", XSPR(31,339, 58), XSPR_MASK, BOOKE, EXT,    {RT}},
7647
{"mfcsrr1", XSPR(31,339, 59), XSPR_MASK, BOOKE, EXT,    {RT}},
7648
{"mfiamr",  XSPR(31,339, 61), XSPR_MASK, POWER10, EXT,    {RS}},
7649
{"mfdear",  XSPR(31,339, 61), XSPR_MASK, BOOKE, EXT,    {RT}},
7650
{"mfesr", XSPR(31,339, 62), XSPR_MASK, BOOKE, EXT,    {RT}},
7651
{"mfivpr",  XSPR(31,339, 63), XSPR_MASK, BOOKE, EXT,    {RT}},
7652
{"mfctrl",  XSPR(31,339,136), XSPR_MASK, POWER4,  EXT,    {RT}},
7653
{"mfcmpa",  XSPR(31,339,144), XSPR_MASK, PPC860,  EXT,    {RT}},
7654
{"mfcmpb",  XSPR(31,339,145), XSPR_MASK, PPC860,  EXT,    {RT}},
7655
{"mfcmpc",  XSPR(31,339,146), XSPR_MASK, PPC860,  EXT,    {RT}},
7656
{"mfcmpd",  XSPR(31,339,147), XSPR_MASK, PPC860,  EXT,    {RT}},
7657
{"mficr", XSPR(31,339,148), XSPR_MASK, PPC860,  EXT,    {RT}},
7658
{"mfder", XSPR(31,339,149), XSPR_MASK, PPC860,  EXT,    {RT}},
7659
{"mfcounta",  XSPR(31,339,150), XSPR_MASK, PPC860,  EXT,    {RT}},
7660
{"mfcountb",  XSPR(31,339,151), XSPR_MASK, PPC860,  EXT,    {RT}},
7661
{"mfcmpe",  XSPR(31,339,152), XSPR_MASK, PPC860,  EXT,    {RT}},
7662
{"mffscr",  XSPR(31,339,153), XSPR_MASK, POWER10, EXT,    {RS}},
7663
{"mfcmpf",  XSPR(31,339,153), XSPR_MASK, PPC860,  EXT,    {RT}},
7664
{"mfcmpg",  XSPR(31,339,154), XSPR_MASK, PPC860,  EXT,    {RT}},
7665
{"mfcmph",  XSPR(31,339,155), XSPR_MASK, PPC860,  EXT,    {RT}},
7666
{"mflctrl1",  XSPR(31,339,156), XSPR_MASK, PPC860,  EXT,    {RT}},
7667
{"mfuamor", XSPR(31,339,157), XSPR_MASK, POWER7,  EXT,    {RS}},
7668
{"mflctrl2",  XSPR(31,339,157), XSPR_MASK, PPC860,  EXT,    {RT}},
7669
{"mfictrl", XSPR(31,339,158), XSPR_MASK, PPC860,  EXT,    {RT}},
7670
{"mfpspb",  XSPR(31,339,159), XSPR_MASK, POWER10, EXT,    {RS}},
7671
{"mfbar", XSPR(31,339,159), XSPR_MASK, PPC860,  EXT,    {RT}},
7672
{"mfdpdes", XSPR(31,339,176), XSPR_MASK, POWER10, EXT,    {RS}},
7673
{"mfdawr0", XSPR(31,339,180), XSPR_MASK, POWER10, EXT,    {RS}},
7674
{"mfdawr1", XSPR(31,339,181), XSPR_MASK, POWER10, EXT,    {RS}},
7675
{"mfrpr", XSPR(31,339,186), XSPR_MASK, POWER10, EXT,    {RS}},
7676
{"mfciabr", XSPR(31,339,187), XSPR_MASK, POWER10, EXT,    {RS}},
7677
{"mfdawrx0",  XSPR(31,339,188), XSPR_MASK, POWER10, EXT,    {RS}},
7678
{"mfdawrx1",  XSPR(31,339,189), XSPR_MASK, POWER10, EXT,    {RS}},
7679
{"mfhfscr", XSPR(31,339,190), XSPR_MASK, POWER10, EXT,    {RS}},
7680
{"mfvrsave",  XSPR(31,339,256), XSPR_MASK, PPCVEC,  EXT,    {RT}},
7681
{"mfusprg0",  XSPR(31,339,256), XSPR_MASK, BOOKE, EXT,    {RT}},
7682
{"mfsprg",  XSPR(31,339,256), XSPRG_MASK, PPC,  EXT,    {RT, SPRG}},
7683
{"mfusprg3",  XSPR(31,339,259), XSPR_MASK, POWER10, EXT,    {RT}},
7684
{"mfsprg4", XSPR(31,339,260), XSPR_MASK, PPC405|BOOKE, EXT,   {RT}},
7685
{"mfsprg5", XSPR(31,339,261), XSPR_MASK, PPC405|BOOKE, EXT,   {RT}},
7686
{"mfsprg6", XSPR(31,339,262), XSPR_MASK, PPC405|BOOKE, EXT,   {RT}},
7687
{"mfsprg7", XSPR(31,339,263), XSPR_MASK, PPC405|BOOKE, EXT,   {RT}},
7688
{"mftbu", XSPR(31,339,269), XSPR_MASK, POWER4|BOOKE, EXT,   {RT}},
7689
{"mftb",  X(31,339),    X_MASK,    POWER4|BOOKE, EXT,   {RT, TBR}},
7690
{"mftbl", XSPR(31,339,268), XSPR_MASK, POWER4|BOOKE, EXT,   {RT}},
7691
{"mfsprg0", XSPR(31,339,272), XSPR_MASK, PPC, EXT,    {RT}},
7692
{"mfsprg1", XSPR(31,339,273), XSPR_MASK, PPC, EXT,    {RT}},
7693
{"mfsprg2", XSPR(31,339,274), XSPR_MASK, PPC, EXT,    {RT}},
7694
{"mfsprg3", XSPR(31,339,275), XSPR_MASK, PPC, EXT,    {RT}},
7695
{"mfasr", XSPR(31,339,280), XSPR_MASK, PPC64, EXT,    {RT}},
7696
{"mfear", XSPR(31,339,282), XSPR_MASK, PPC, TITAN|EXT,  {RT}},
7697
{"mfpir", XSPR(31,339,286), XSPR_MASK, BOOKE, EXT,    {RT}},
7698
{"mfpvr", XSPR(31,339,287), XSPR_MASK, PPC, EXT,    {RT}},
7699
{"mfhsprg0",  XSPR(31,339,304), XSPR_MASK, POWER10, EXT,    {RS}},
7700
{"mfdbsr",  XSPR(31,339,304), XSPR_MASK, BOOKE, EXT,    {RT}},
7701
{"mfhsprg1",  XSPR(31,339,305), XSPR_MASK, POWER10, EXT,    {RS}},
7702
{"mfhdisr", XSPR(31,339,306), XSPR_MASK, POWER10, EXT,    {RS}},
7703
{"mfhdar",  XSPR(31,339,307), XSPR_MASK, POWER10, EXT,    {RS}},
7704
{"mfspurr", XSPR(31,339,308), XSPR_MASK, POWER10, EXT,    {RS}},
7705
{"mfdbcr0", XSPR(31,339,308), XSPR_MASK, BOOKE, EXT,    {RT}},
7706
{"mfpurr",  XSPR(31,339,309), XSPR_MASK, POWER10, EXT,    {RS}},
7707
{"mfdbcr1", XSPR(31,339,309), XSPR_MASK, BOOKE, EXT,    {RT}},
7708
{"mfhdec",  XSPR(31,339,310), XSPR_MASK, POWER10, EXT,    {RS}},
7709
{"mfdbcr2", XSPR(31,339,310), XSPR_MASK, BOOKE, EXT,    {RT}},
7710
{"mfiac1",  XSPR(31,339,312), XSPR_MASK, BOOKE, EXT,    {RT}},
7711
{"mfhrmor", XSPR(31,339,313), XSPR_MASK, POWER10, EXT,    {RS}},
7712
{"mfiac2",  XSPR(31,339,313), XSPR_MASK, BOOKE, EXT,    {RT}},
7713
{"mfhsrr0", XSPR(31,339,314), XSPR_MASK, POWER10, EXT,    {RS}},
7714
{"mfiac3",  XSPR(31,339,314), XSPR_MASK, BOOKE, EXT,    {RT}},
7715
{"mfhsrr1", XSPR(31,339,315), XSPR_MASK, POWER10, EXT,    {RS}},
7716
{"mfiac4",  XSPR(31,339,315), XSPR_MASK, BOOKE, EXT,    {RT}},
7717
{"mfdac1",  XSPR(31,339,316), XSPR_MASK, BOOKE, EXT,    {RT}},
7718
{"mfdac2",  XSPR(31,339,317), XSPR_MASK, BOOKE, EXT,    {RT}},
7719
{"mflpcr",  XSPR(31,339,318), XSPR_MASK, POWER10, EXT,    {RS}},
7720
{"mfdvc1",  XSPR(31,339,318), XSPR_MASK, BOOKE, EXT,    {RT}},
7721
{"mflpidr", XSPR(31,339,319), XSPR_MASK, POWER10, EXT,    {RS}},
7722
{"mfdvc2",  XSPR(31,339,319), XSPR_MASK, BOOKE, EXT,    {RT}},
7723
{"mfhmer",  XSPR(31,339,336), XSPR_MASK, POWER7,  EXT,    {RS}},
7724
{"mftsr", XSPR(31,339,336), XSPR_MASK, BOOKE, EXT,    {RT}},
7725
{"mfhmeer", XSPR(31,339,337), XSPR_MASK, POWER7,  EXT,    {RS}},
7726
{"mfpcr", XSPR(31,339,338), XSPR_MASK, POWER10, EXT,    {RS}},
7727
{"mfheir",  XSPR(31,339,339), XSPR_MASK, POWER10, EXT,    {RS}},
7728
{"mftcr", XSPR(31,339,340), XSPR_MASK, BOOKE, EXT,    {RT}},
7729
{"mfamor",  XSPR(31,339,349), XSPR_MASK, POWER7,  EXT,    {RS}},
7730
{"mfivor0", XSPR(31,339,400), XSPR_MASK, BOOKE, EXT,    {RT}},
7731
{"mfivor1", XSPR(31,339,401), XSPR_MASK, BOOKE, EXT,    {RT}},
7732
{"mfivor2", XSPR(31,339,402), XSPR_MASK, BOOKE, EXT,    {RT}},
7733
{"mfivor3", XSPR(31,339,403), XSPR_MASK, BOOKE, EXT,    {RT}},
7734
{"mfivor4", XSPR(31,339,404), XSPR_MASK, BOOKE, EXT,    {RT}},
7735
{"mfivor5", XSPR(31,339,405), XSPR_MASK, BOOKE, EXT,    {RT}},
7736
{"mfivor6", XSPR(31,339,406), XSPR_MASK, BOOKE, EXT,    {RT}},
7737
{"mfivor7", XSPR(31,339,407), XSPR_MASK, BOOKE, EXT,    {RT}},
7738
{"mfivor8", XSPR(31,339,408), XSPR_MASK, BOOKE, EXT,    {RT}},
7739
{"mfivor9", XSPR(31,339,409), XSPR_MASK, BOOKE, EXT,    {RT}},
7740
{"mfivor10",  XSPR(31,339,410), XSPR_MASK, BOOKE, EXT,    {RT}},
7741
{"mfivor11",  XSPR(31,339,411), XSPR_MASK, BOOKE, EXT,    {RT}},
7742
{"mfivor12",  XSPR(31,339,412), XSPR_MASK, BOOKE, EXT,    {RT}},
7743
{"mfivor13",  XSPR(31,339,413), XSPR_MASK, BOOKE, EXT,    {RT}},
7744
{"mfivor14",  XSPR(31,339,414), XSPR_MASK, BOOKE, EXT,    {RT}},
7745
{"mfivor15",  XSPR(31,339,415), XSPR_MASK, BOOKE, EXT,    {RT}},
7746
{"mftir", XSPR(31,339,446), XSPR_MASK, POWER10, EXT,    {RS}},
7747
{"mfptcr",  XSPR(31,339,464), XSPR_MASK, POWER10, EXT,    {RS}},
7748
{"mfusprg0",  XSPR(31,339,496), XSPR_MASK, POWER10, EXT,    {RS}},
7749
{"mfusprg1",  XSPR(31,339,497), XSPR_MASK, POWER10, EXT,    {RS}},
7750
{"mfurmor", XSPR(31,339,505), XSPR_MASK, POWER10, EXT,    {RS}},
7751
{"mfusrr0", XSPR(31,339,506), XSPR_MASK, POWER10, EXT,    {RS}},
7752
{"mfusrr1", XSPR(31,339,507), XSPR_MASK, POWER10, EXT,    {RS}},
7753
{"mfsmfctrl", XSPR(31,339,511), XSPR_MASK, POWER10, EXT,    {RS}},
7754
{"mfspefscr", XSPR(31,339,512), XSPR_MASK, PPCSPE,  EXT,    {RT}},
7755
{"mfbbear", XSPR(31,339,513), XSPR_MASK, PPCBRLK, EXT,    {RT}},
7756
{"mfbbtar", XSPR(31,339,514), XSPR_MASK, PPCBRLK, EXT,    {RT}},
7757
{"mfivor32",  XSPR(31,339,528), XSPR_MASK, PPCSPE|E6500, EXT,   {RT}},
7758
{"mfivor33",  XSPR(31,339,529), XSPR_MASK, PPCSPE|E6500, EXT,   {RT}},
7759
{"mfivor34",  XSPR(31,339,530), XSPR_MASK, PPCSPE,  EXT,    {RT}},
7760
{"mfivor35",  XSPR(31,339,531), XSPR_MASK, PPCPMR,  EXT,    {RT}},
7761
{"mfibatu", XSPR(31,339,528), XSPRBAT_MASK, PPC,  TITAN|EXT,  {RT, SPRBAT}},
7762
{"mfibatl", XSPR(31,339,529), XSPRBAT_MASK, PPC,  TITAN|EXT,  {RT, SPRBAT}},
7763
{"mfdbatu", XSPR(31,339,536), XSPRBAT_MASK, PPC,  TITAN|EXT,  {RT, SPRBAT}},
7764
{"mfdbatl", XSPR(31,339,537), XSPRBAT_MASK, PPC,  TITAN|EXT,  {RT, SPRBAT}},
7765
{"mfic_cst",  XSPR(31,339,560), XSPR_MASK, PPC860,  EXT,    {RT}},
7766
{"mfic_adr",  XSPR(31,339,561), XSPR_MASK, PPC860,  EXT,    {RT}},
7767
{"mfic_dat",  XSPR(31,339,562), XSPR_MASK, PPC860,  EXT,    {RT}},
7768
{"mfdc_cst",  XSPR(31,339,568), XSPR_MASK, PPC860,  EXT,    {RT}},
7769
{"mfdc_adr",  XSPR(31,339,569), XSPR_MASK, PPC860,  EXT,    {RT}},
7770
{"mfdc_dat",  XSPR(31,339,570), XSPR_MASK, PPC860,  EXT,    {RT}},
7771
{"mfmcsrr0",  XSPR(31,339,570), XSPR_MASK, PPCRFMCI,  EXT,    {RT}},
7772
{"mfmcsrr1",  XSPR(31,339,571), XSPR_MASK, PPCRFMCI,  EXT,    {RT}},
7773
{"mfmcsr",  XSPR(31,339,572), XSPR_MASK, PPCRFMCI,  EXT,    {RT}},
7774
{"mfmcar",  XSPR(31,339,573), XSPR_MASK, PPCRFMCI,  TITAN|EXT,  {RT}},
7775
{"mfdpdr",  XSPR(31,339,630), XSPR_MASK, PPC860,  EXT,    {RT}},
7776
{"mfdpir",  XSPR(31,339,631), XSPR_MASK, PPC860,  EXT,    {RT}},
7777
{"mfimmr",  XSPR(31,339,638), XSPR_MASK, PPC860,  EXT,    {RT}},
7778
{"mfusier2",  XSPR(31,339,736), XSPR_MASK, POWER10, EXT,    {RT}},
7779
{"mfsier2", XSPR(31,339,736), XSPR_MASK, POWER10, EXT,    {RT}},
7780
{"mfusier3",  XSPR(31,339,737), XSPR_MASK, POWER10, EXT,    {RT}},
7781
{"mfsier3", XSPR(31,339,737), XSPR_MASK, POWER10, EXT,    {RT}},
7782
{"mfummcr3",  XSPR(31,339,738), XSPR_MASK, POWER10, EXT,    {RT}},
7783
{"mfmmcr3", XSPR(31,339,738), XSPR_MASK, POWER10, EXT,    {RT}},
7784
{"mfusier", XSPR(31,339,768), XSPR_MASK, POWER10, EXT,    {RT}},
7785
{"mfsier",  XSPR(31,339,768), XSPR_MASK, POWER10, EXT,    {RT}},
7786
{"mfummcr2",  XSPR(31,339,769), XSPR_MASK, POWER9,  EXT,    {RT}},
7787
{"mfmmcr2", XSPR(31,339,769), XSPR_MASK, POWER9,  EXT,    {RT}},
7788
{"mfummcra",  XSPR(31,339,770), XSPR_MASK, POWER9,  EXT,    {RS}},
7789
{"mfmmcra", XSPR(31,339,770), XSPR_MASK, POWER7,  EXT,    {RS}},
7790
{"mfupmc1", XSPR(31,339,771), XSPR_MASK, POWER9,  EXT,    {RT}},
7791
{"mfpmc1",  XSPR(31,339,771), XSPR_MASK, POWER7,  EXT,    {RT}},
7792
{"mfupmc2", XSPR(31,339,772), XSPR_MASK, POWER9,  EXT,    {RT}},
7793
{"mfpmc2",  XSPR(31,339,772), XSPR_MASK, POWER7,  EXT,    {RT}},
7794
{"mfupmc3", XSPR(31,339,773), XSPR_MASK, POWER9,  EXT,    {RT}},
7795
{"mfpmc3",  XSPR(31,339,773), XSPR_MASK, POWER7,  EXT,    {RT}},
7796
{"mfupmc4", XSPR(31,339,774), XSPR_MASK, POWER9,  EXT,    {RT}},
7797
{"mfpmc4",  XSPR(31,339,774), XSPR_MASK, POWER7,  EXT,    {RT}},
7798
{"mfupmc5", XSPR(31,339,775), XSPR_MASK, POWER9,  EXT,    {RT}},
7799
{"mfpmc5",  XSPR(31,339,775), XSPR_MASK, POWER7,  EXT,    {RT}},
7800
{"mfupmc6", XSPR(31,339,776), XSPR_MASK, POWER9,  EXT,    {RT}},
7801
{"mfpmc6",  XSPR(31,339,776), XSPR_MASK, POWER7,  EXT,    {RT}},
7802
{"mfummcr0",  XSPR(31,339,779), XSPR_MASK, POWER9,  EXT,    {RS}},
7803
{"mfmmcr0", XSPR(31,339,779), XSPR_MASK, POWER7,  EXT,    {RS}},
7804
{"mfusiar", XSPR(31,339,780), XSPR_MASK, POWER9,  EXT,    {RS}},
7805
{"mfsiar",  XSPR(31,339,780), XSPR_MASK, POWER9,  EXT,    {RS}},
7806
{"mfusdar", XSPR(31,339,781), XSPR_MASK, POWER9,  EXT,    {RS}},
7807
{"mfsdar",  XSPR(31,339,781), XSPR_MASK, POWER9,  EXT,    {RS}},
7808
{"mfummcr1",  XSPR(31,339,782), XSPR_MASK, POWER9,  EXT,    {RS}},
7809
{"mfmmcr1", XSPR(31,339,782), XSPR_MASK, POWER7,  EXT,    {RS}},
7810
{"mfmi_ctr",  XSPR(31,339,784), XSPR_MASK, PPC860,  EXT,    {RT}},
7811
{"mfmi_ap", XSPR(31,339,786), XSPR_MASK, PPC860,  EXT,    {RT}},
7812
{"mfmi_epn",  XSPR(31,339,787), XSPR_MASK, PPC860,  EXT,    {RT}},
7813
{"mfmi_twc",  XSPR(31,339,789), XSPR_MASK, PPC860,  EXT,    {RT}},
7814
{"mfmi_rpn",  XSPR(31,339,790), XSPR_MASK, PPC860,  EXT,    {RT}},
7815
{"mfmd_ctr",  XSPR(31,339,792), XSPR_MASK, PPC860,  EXT,    {RT}},
7816
{"mfm_casid", XSPR(31,339,793), XSPR_MASK, PPC860,  EXT,    {RT}},
7817
{"mfmd_ap", XSPR(31,339,794), XSPR_MASK, PPC860,  EXT,    {RT}},
7818
{"mfmd_epn",  XSPR(31,339,795), XSPR_MASK, PPC860,  EXT,    {RT}},
7819
{"mfmd_twb",  XSPR(31,339,796), XSPR_MASK, PPC860,  EXT,    {RT}},
7820
{"mfmd_twc",  XSPR(31,339,797), XSPR_MASK, PPC860,  EXT,    {RT}},
7821
{"mfmd_rpn",  XSPR(31,339,798), XSPR_MASK, PPC860,  EXT,    {RT}},
7822
{"mfm_tw",  XSPR(31,339,799), XSPR_MASK, PPC860,  EXT,    {RT}},
7823
{"mfbescrs",  XSPR(31,339,800), XSPR_MASK, POWER9,  EXT,    {RS}},
7824
{"mfbescrsu", XSPR(31,339,801), XSPR_MASK, POWER9,  EXT,    {RS}},
7825
{"mfbescrr",  XSPR(31,339,802), XSPR_MASK, POWER9,  EXT,    {RS}},
7826
{"mfbescrru", XSPR(31,339,803), XSPR_MASK, POWER9,  EXT,    {RS}},
7827
{"mfebbhr", XSPR(31,339,804), XSPR_MASK, POWER9,  EXT,    {RS}},
7828
{"mfebbrr", XSPR(31,339,805), XSPR_MASK, POWER9,  EXT,    {RS}},
7829
{"mfbescr", XSPR(31,339,806), XSPR_MASK, POWER9,  EXT,    {RS}},
7830
{"mftar", XSPR(31,339,815), XSPR_MASK, POWER9,  EXT,    {RS}},
7831
{"mfasdr",  XSPR(31,339,816), XSPR_MASK, POWER10, EXT,    {RS}},
7832
{"mfmi_dbcam",  XSPR(31,339,816), XSPR_MASK, PPC860,  EXT,    {RT}},
7833
{"mfmi_dbram0", XSPR(31,339,817), XSPR_MASK, PPC860,  EXT,    {RT}},
7834
{"mfmi_dbram1", XSPR(31,339,818), XSPR_MASK, PPC860,  EXT,    {RT}},
7835
{"mfpsscr", XSPR(31,339,823), XSPR_MASK, POWER10, EXT,    {RS}},
7836
{"mfmd_dbcam",  XSPR(31,339,824), XSPR_MASK, PPC860,  EXT,    {RT}},
7837
{"mfmd_dbram0", XSPR(31,339,825), XSPR_MASK, PPC860,  EXT,    {RT}},
7838
{"mfmd_dbram1", XSPR(31,339,826), XSPR_MASK, PPC860,  EXT,    {RT}},
7839
{"mfic",  XSPR(31,339,848), XSPR_MASK, POWER8,  EXT,    {RS}},
7840
{"mfvtb", XSPR(31,339,849), XSPR_MASK, POWER8,  EXT,    {RS}},
7841
{"mfhpsscr",  XSPR(31,339,855), XSPR_MASK, POWER10, EXT,    {RS}},
7842
{"mfivndx", XSPR(31,339,880), XSPR_MASK, TITAN, EXT,    {RT}},
7843
{"mfdvndx", XSPR(31,339,881), XSPR_MASK, TITAN, EXT,    {RT}},
7844
{"mfivlim", XSPR(31,339,882), XSPR_MASK, TITAN, EXT,    {RT}},
7845
{"mfdvlim", XSPR(31,339,883), XSPR_MASK, TITAN, EXT,    {RT}},
7846
{"mfclcsr", XSPR(31,339,884), XSPR_MASK, TITAN, EXT,    {RT}},
7847
{"mfccr1",  XSPR(31,339,888), XSPR_MASK, TITAN, EXT,    {RT}},
7848
{"mfppr", XSPR(31,339,896), XSPR_MASK, POWER5,  EXT,    {RT}},
7849
{"mfppr32", XSPR(31,339,898), XSPR_MASK, POWER5,  EXT,    {RT}},
7850
{"mfgqr", XSPR(31,339,912), XSPRGQR_MASK, PPCPS,  EXT,    {RT, SPRGQR}},
7851
{"mfhid2",  XSPR(31,339,920), XSPR_MASK, GEKKO, EXT,    {RT}},
7852
{"mfwpar",  XSPR(31,339,921), XSPR_MASK, GEKKO, EXT,    {RT}},
7853
{"mfdmau",  XSPR(31,339,922), XSPR_MASK, GEKKO, EXT,    {RT}},
7854
{"mfdmal",  XSPR(31,339,923), XSPR_MASK, GEKKO, EXT,    {RT}},
7855
{"mfrstcfg",  XSPR(31,339,923), XSPR_MASK, TITAN, EXT,    {RT}},
7856
{"mfdcdbtrl", XSPR(31,339,924), XSPR_MASK, TITAN, EXT,    {RT}},
7857
{"mfdcdbtrh", XSPR(31,339,925), XSPR_MASK, TITAN, EXT,    {RT}},
7858
{"mficdbtr",  XSPR(31,339,927), XSPR_MASK, TITAN, EXT,    {RT}},
7859
{"mfummcr0",  XSPR(31,339,936), XSPR_MASK, PPC750,  EXT,    {RT}},
7860
{"mfupmc1", XSPR(31,339,937), XSPR_MASK, PPC750,  EXT,    {RT}},
7861
{"mfupmc2", XSPR(31,339,938), XSPR_MASK, PPC750,  EXT,    {RT}},
7862
{"mfusia",  XSPR(31,339,939), XSPR_MASK, PPC750,  EXT,    {RT}},
7863
{"mfummcr1",  XSPR(31,339,940), XSPR_MASK, PPC750,  EXT,    {RT}},
7864
{"mfupmc3", XSPR(31,339,941), XSPR_MASK, PPC750,  EXT,    {RT}},
7865
{"mfupmc4", XSPR(31,339,942), XSPR_MASK, PPC750,  EXT,    {RT}},
7866
{"mfzpr", XSPR(31,339,944), XSPR_MASK, PPC403,  EXT,    {RT}},
7867
{"mfpid", XSPR(31,339,945), XSPR_MASK, PPC403,  EXT,    {RT}},
7868
{"mfmmucr", XSPR(31,339,946), XSPR_MASK, TITAN, EXT,    {RT}},
7869
{"mfccr0",  XSPR(31,339,947), XSPR_MASK, PPC405|TITAN, EXT,   {RT}},
7870
{"mfiac3",  XSPR(31,339,948), XSPR_MASK, PPC405,  EXT,    {RT}},
7871
{"mfiac4",  XSPR(31,339,949), XSPR_MASK, PPC405,  EXT,    {RT}},
7872
{"mfdvc1",  XSPR(31,339,950), XSPR_MASK, PPC405,  EXT,    {RT}},
7873
{"mfdvc2",  XSPR(31,339,951), XSPR_MASK, PPC405,  EXT,    {RT}},
7874
{"mfmmcr0", XSPR(31,339,952), XSPR_MASK, PPC750,  EXT,    {RT}},
7875
{"mfpmc1",  XSPR(31,339,953), XSPR_MASK, PPC750,  EXT,    {RT}},
7876
{"mfsgr", XSPR(31,339,953), XSPR_MASK, PPC403,  EXT,    {RT}},
7877
{"mfdcwr",  XSPR(31,339,954), XSPR_MASK, PPC403,  EXT,    {RT}},
7878
{"mfpmc2",  XSPR(31,339,954), XSPR_MASK, PPC750,  EXT,    {RT}},
7879
{"mfsia", XSPR(31,339,955), XSPR_MASK, PPC750,  EXT,    {RT}},
7880
{"mfsler",  XSPR(31,339,955), XSPR_MASK, PPC405,  EXT,    {RT}},
7881
{"mfmmcr1", XSPR(31,339,956), XSPR_MASK, PPC750,  EXT,    {RT}},
7882
{"mfsu0r",  XSPR(31,339,956), XSPR_MASK, PPC405,  EXT,    {RT}},
7883
{"mfdbcr1", XSPR(31,339,957), XSPR_MASK, PPC405,  EXT,    {RT}},
7884
{"mfpmc3",  XSPR(31,339,957), XSPR_MASK, PPC750,  EXT,    {RT}},
7885
{"mfpmc4",  XSPR(31,339,958), XSPR_MASK, PPC750,  EXT,    {RT}},
7886
{"mficdbdr",  XSPR(31,339,979), XSPR_MASK, PPC403|TITAN, EXT,   {RT}},
7887
{"mfesr", XSPR(31,339,980), XSPR_MASK, PPC403,  EXT,    {RT}},
7888
{"mfdear",  XSPR(31,339,981), XSPR_MASK, PPC403,  EXT,    {RT}},
7889
{"mfevpr",  XSPR(31,339,982), XSPR_MASK, PPC403,  EXT,    {RT}},
7890
{"mfcdbcr", XSPR(31,339,983), XSPR_MASK, PPC403,  EXT,    {RT}},
7891
{"mftsr", XSPR(31,339,984), XSPR_MASK, PPC403,  EXT,    {RT}},
7892
{"mftcr", XSPR(31,339,986), XSPR_MASK, PPC403,  EXT,    {RT}},
7893
{"mfpit", XSPR(31,339,987), XSPR_MASK, PPC403,  EXT,    {RT}},
7894
{"mftbhi",  XSPR(31,339,988), XSPR_MASK, PPC403,  EXT,    {RT}},
7895
{"mftblo",  XSPR(31,339,989), XSPR_MASK, PPC403,  EXT,    {RT}},
7896
{"mfsrr2",  XSPR(31,339,990), XSPR_MASK, PPC403,  EXT,    {RT}},
7897
{"mfsrr3",  XSPR(31,339,991), XSPR_MASK, PPC403,  EXT,    {RT}},
7898
{"mfdbsr",  XSPR(31,339,1008), XSPR_MASK, PPC403, EXT,    {RT}},
7899
{"mfhid0",  XSPR(31,339,1008), XSPR_MASK, GEKKO,  EXT,    {RT}},
7900
{"mfhid1",  XSPR(31,339,1009), XSPR_MASK, GEKKO,  EXT,    {RT}},
7901
{"mfdbcr0", XSPR(31,339,1010), XSPR_MASK, PPC405, EXT,    {RT}},
7902
{"mfiabr",  XSPR(31,339,1010), XSPR_MASK, GEKKO,  EXT,    {RT}},
7903
{"mfhid4",  XSPR(31,339,1011), XSPR_MASK, BROADWAY, EXT,    {RT}},
7904
{"mfdbdr",  XSPR(31,339,1011), XSPR_MASK, TITAN,  EXT,    {RS}},
7905
{"mfiac1",  XSPR(31,339,1012), XSPR_MASK, PPC403, EXT,    {RT}},
7906
{"mfiac2",  XSPR(31,339,1013), XSPR_MASK, PPC403, EXT,    {RT}},
7907
{"mfdabr",  XSPR(31,339,1013), XSPR_MASK, PPC750, EXT,    {RT}},
7908
{"mfdac1",  XSPR(31,339,1014), XSPR_MASK, PPC403, EXT,    {RT}},
7909
{"mfdac2",  XSPR(31,339,1015), XSPR_MASK, PPC403, EXT,    {RT}},
7910
{"mfl2cr",  XSPR(31,339,1017), XSPR_MASK, PPC750, EXT,    {RT}},
7911
{"mfdccr",  XSPR(31,339,1018), XSPR_MASK, PPC403, EXT,    {RT}},
7912
{"mficcr",  XSPR(31,339,1019), XSPR_MASK, PPC403, EXT,    {RT}},
7913
{"mfictc",  XSPR(31,339,1019), XSPR_MASK, PPC750, EXT,    {RT}},
7914
{"mfpbl1",  XSPR(31,339,1020), XSPR_MASK, PPC403, EXT,    {RT}},
7915
{"mfthrm1", XSPR(31,339,1020), XSPR_MASK, PPC750, EXT,    {RT}},
7916
{"mfpbu1",  XSPR(31,339,1021), XSPR_MASK, PPC403, EXT,    {RT}},
7917
{"mfthrm2", XSPR(31,339,1021), XSPR_MASK, PPC750, EXT,    {RT}},
7918
{"mfpbl2",  XSPR(31,339,1022), XSPR_MASK, PPC403, EXT,    {RT}},
7919
{"mfthrm3", XSPR(31,339,1022), XSPR_MASK, PPC750, EXT,    {RT}},
7920
{"mfpir", XSPR(31,339,1023), XSPR_MASK, POWER10,  EXT,    {RT}},
7921
{"mfpbu2",  XSPR(31,339,1023), XSPR_MASK, PPC403, EXT,    {RT}},
7922
{"mfspr", X(31,339),  X_MASK,      COM, 0,    {RT, SPR}},
7923
7924
{"lwax",  X(31,341),  X_MASK,      PPC64, 0,    {RT, RA0, RB}},
7925
7926
{"dst",   XDSS(31,342,0), XDSS_MASK,   PPCVEC,  0,    {RA, RB, STRM}},
7927
{"dstt",  XDSS(31,342,1), XDSS_MASK,   PPCVEC,  0,    {RA, RB, STRM}},
7928
7929
{"lhax",  X(31,343),  X_MASK,      COM, 0,    {RT, RA0, RB}},
7930
7931
{"lvxl",  X(31,359),  X_MASK,      PPCVEC,  0,    {VD, RA0, RB}},
7932
7933
{"abs",   XO(31,360,0,0), XORB_MASK,   M601,  0,    {RT, RA}},
7934
{"abs.",  XO(31,360,0,1), XORB_MASK,   M601,  0,    {RT, RA}},
7935
7936
{"divs",  XO(31,363,0,0), XO_MASK,     M601,  0,    {RT, RA, RB}},
7937
{"divs.", XO(31,363,0,1), XO_MASK,     M601,  0,    {RT, RA, RB}},
7938
7939
{"lxvwsx",  X(31,364),  XX1_MASK,    PPCVSX3, 0,    {XT6, RA0, RB}},
7940
7941
{"tlbia", X(31,370),  0xffffffff,  PPC, E500|TITAN, {0}},
7942
7943
{"mftbu", XSPR(31,371,269), XSPR_MASK, PPC, NO371|POWER4|EXT, {RT}},
7944
{"mftb",  X(31,371),  X_MASK,      PPC, NO371|POWER4,   {RT, TBR}},
7945
{"mftbl", XSPR(31,371,268), XSPR_MASK, PPC, NO371|POWER4|EXT, {RT}},
7946
7947
{"lwaux", X(31,373),  X_MASK,      PPC64, 0,    {RT, RAL, RB}},
7948
7949
{"dstst", XDSS(31,374,0), XDSS_MASK,   PPCVEC,  0,    {RA, RB, STRM}},
7950
{"dststt",  XDSS(31,374,1), XDSS_MASK,   PPCVEC,  0,    {RA, RB, STRM}},
7951
7952
{"lhaux", X(31,375),  X_MASK,      COM, 0,    {RT, RAL, RB}},
7953
7954
{"popcntw", X(31,378),  XRB_MASK,    POWER7|PPCA2, 0,   {RA, RS}},
7955
7956
{"setbc", X(31,384),  XRB_MASK,    POWER10, 0,    {RT, BI}},
7957
7958
{"mtdcrx",  X(31,387),  X_MASK,      BOOKE|PPCA2|PPC476, TITAN, {RA, RS}},
7959
{"mtdcrx.", XRC(31,387,1),  X_MASK,      PPCA2, 0,    {RA, RS}},
7960
7961
{"stvexbx", X(31,389),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
7962
7963
{"dcblc", X(31,390),  X_MASK,  PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
7964
{"stdfcmx", APU(31,391,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7965
7966
{"divdeu",  XO(31,393,0,0), XO_MASK,     POWER7|PPCA2, 0,   {RT, RA, RB}},
7967
{"divdeu.", XO(31,393,0,1), XO_MASK,     POWER7|PPCA2, 0,   {RT, RA, RB}},
7968
{"divweu",  XO(31,395,0,0), XO_MASK,     POWER7|PPCA2, 0,   {RT, RA, RB}},
7969
{"divweu.", XO(31,395,0,1), XO_MASK,     POWER7|PPCA2, 0,   {RT, RA, RB}},
7970
7971
{"stxvx", X(31,396),  XX1_MASK,    PPCVSX3, 0,    {XS6, RA0, RB}},
7972
{"stxvl", X(31,397),  XX1_MASK,    PPCVSX3, 0,    {XS6, RA0, RB}},
7973
7974
{"dcblce",  X(31,398),  X_MASK,      PPCCHLK, E500MC,   {CT, RA, RB}},
7975
7976
{"slbmte",  X(31,402),  XRA_MASK,    PPC64, 0,    {RS, RB}},
7977
7978
{"mtvsrws", X(31,403),  XX1RB_MASK,  PPCVSX3, 0,    {XT6, RA}},
7979
7980
{"pbt.",  XRC(31,404,1),  X_MASK,      POWER8,  0,    {RS, RA0, RB}},
7981
7982
{"icswx", XRC(31,406,0),  X_MASK,   POWER7|PPCA2, 0,    {RS, RA, RB}},
7983
{"icswx.",  XRC(31,406,1),  X_MASK,   POWER7|PPCA2, 0,    {RS, RA, RB}},
7984
7985
{"sthx",  X(31,407),  X_MASK,      COM, 0,    {RS, RA0, RB}},
7986
7987
{"orc",   XRC(31,412,0),  X_MASK,      COM, 0,    {RA, RS, RB}},
7988
{"orc.",  XRC(31,412,1),  X_MASK,      COM, 0,    {RA, RS, RB}},
7989
7990
{"sthepx",  X(31,415),  X_MASK,   E500MC|PPCA2, 0,    {RS, RA0, RB}},
7991
7992
{"setbcr",  X(31,416),  XRB_MASK,    POWER10, 0,    {RT, BI}},
7993
7994
{"mtdcrux", X(31,419),  X_MASK,  PPC464|PPC476, 0,    {RA, RS}},
7995
7996
{"stvexhx", X(31,421),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
7997
7998
{"dcblq.",  XRC(31,422,1),  X_MASK,      E6500, 0,    {CT, RA0, RB}},
7999
8000
{"divde", XO(31,425,0,0), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8001
{"divde.",  XO(31,425,0,1), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8002
{"divwe", XO(31,427,0,0), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8003
{"divwe.",  XO(31,427,0,1), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8004
8005
{"stxvll",  X(31,429),  XX1_MASK,    PPCVSX3, 0,    {XS6, RA0, RB}},
8006
8007
{"clrbhrb", X(31,430),  0xffffffff,  POWER8,  0,    {0}},
8008
8009
{"slbie", X(31,434),  XRTRA_MASK,  PPC64, 0,    {RB}},
8010
8011
{"mtvsrdd", X(31,435),  XX1_MASK,    PPCVSX3, 0,    {XT6, RA0, RB}},
8012
8013
{"ecowx", X(31,438),  X_MASK,      PPC, E500|TITAN, {RT, RA0, RB}},
8014
8015
{"sthux", X(31,439),  X_MASK,      COM, 0,    {RS, RAS, RB}},
8016
8017
/* or 1,1,1 */
8018
{"cctpl", 0x7c210b78, 0xffffffff,  CELL,  EXT,    {0}},
8019
/* or 2,2,2 */
8020
{"cctpm", 0x7c421378, 0xffffffff,  CELL,  EXT,    {0}},
8021
/* or 3,3,3 */
8022
{"cctph", 0x7c631b78, 0xffffffff,  CELL,  EXT,    {0}},
8023
/* or 26,26,26 */
8024
{"miso",  0x7f5ad378,   0xffffffff, POWER8|E6500, EXT,    {0}},
8025
/* or 27,27,27 */
8026
{"yield", 0x7f7bdb78, 0xffffffff,  POWER7,  EXT,    {0}},
8027
/* or 28,28,28 */
8028
{"mdors", 0x7f9ce378, 0xffffffff,  E500MC,  EXT,    {0}},
8029
{"db8cyc",  0x7f9ce378, 0xffffffff,  CELL,  EXT,    {0}},
8030
/* or 29,29,29 */
8031
{"mdoio", 0x7fbdeb78, 0xffffffff,  POWER7,  EXT,    {0}},
8032
{"db10cyc", 0x7fbdeb78, 0xffffffff,  CELL,  EXT,    {0}},
8033
/* or 30,30,30 */
8034
{"mdoom", 0x7fdef378, 0xffffffff,  POWER7,  EXT,    {0}},
8035
{"db12cyc", 0x7fdef378, 0xffffffff,  CELL,  EXT,    {0}},
8036
/* or 31,31,31 */
8037
{"db16cyc", 0x7ffffb78, 0xffffffff,  CELL,  EXT,    {0}},
8038
8039
{"mr",    XRC(31,444,0),  X_MASK,      COM, EXT,    {RA, RSB}},
8040
{"or",    XRC(31,444,0),  X_MASK,      COM, 0,    {RA, RS, RB}},
8041
{"mr.",   XRC(31,444,1),  X_MASK,      COM, EXT,    {RA, RSB}},
8042
{"or.",   XRC(31,444,1),  X_MASK,      COM, 0,    {RA, RS, RB}},
8043
8044
{"setnbc",  X(31,448),  XRB_MASK,    POWER10, 0,    {RT, BI}},
8045
8046
{"mtexisr", XSPR(31,451, 64), XSPR_MASK, PPC403,  0,    {RS}},
8047
{"mtexier", XSPR(31,451, 66), XSPR_MASK, PPC403,  0,    {RS}},
8048
{"mtbr0", XSPR(31,451,128), XSPR_MASK, PPC403,  0,    {RS}},
8049
{"mtbr1", XSPR(31,451,129), XSPR_MASK, PPC403,  0,    {RS}},
8050
{"mtbr2", XSPR(31,451,130), XSPR_MASK, PPC403,  0,    {RS}},
8051
{"mtbr3", XSPR(31,451,131), XSPR_MASK, PPC403,  0,    {RS}},
8052
{"mtbr4", XSPR(31,451,132), XSPR_MASK, PPC403,  0,    {RS}},
8053
{"mtbr5", XSPR(31,451,133), XSPR_MASK, PPC403,  0,    {RS}},
8054
{"mtbr6", XSPR(31,451,134), XSPR_MASK, PPC403,  0,    {RS}},
8055
{"mtbr7", XSPR(31,451,135), XSPR_MASK, PPC403,  0,    {RS}},
8056
{"mtbear",  XSPR(31,451,144), XSPR_MASK, PPC403,  0,    {RS}},
8057
{"mtbesr",  XSPR(31,451,145), XSPR_MASK, PPC403,  0,    {RS}},
8058
{"mtiocr",  XSPR(31,451,160), XSPR_MASK, PPC403,  0,    {RS}},
8059
{"mtdmacr0",  XSPR(31,451,192), XSPR_MASK, PPC403,  0,    {RS}},
8060
{"mtdmact0",  XSPR(31,451,193), XSPR_MASK, PPC403,  0,    {RS}},
8061
{"mtdmada0",  XSPR(31,451,194), XSPR_MASK, PPC403,  0,    {RS}},
8062
{"mtdmasa0",  XSPR(31,451,195), XSPR_MASK, PPC403,  0,    {RS}},
8063
{"mtdmacc0",  XSPR(31,451,196), XSPR_MASK, PPC403,  0,    {RS}},
8064
{"mtdmacr1",  XSPR(31,451,200), XSPR_MASK, PPC403,  0,    {RS}},
8065
{"mtdmact1",  XSPR(31,451,201), XSPR_MASK, PPC403,  0,    {RS}},
8066
{"mtdmada1",  XSPR(31,451,202), XSPR_MASK, PPC403,  0,    {RS}},
8067
{"mtdmasa1",  XSPR(31,451,203), XSPR_MASK, PPC403,  0,    {RS}},
8068
{"mtdmacc1",  XSPR(31,451,204), XSPR_MASK, PPC403,  0,    {RS}},
8069
{"mtdmacr2",  XSPR(31,451,208), XSPR_MASK, PPC403,  0,    {RS}},
8070
{"mtdmact2",  XSPR(31,451,209), XSPR_MASK, PPC403,  0,    {RS}},
8071
{"mtdmada2",  XSPR(31,451,210), XSPR_MASK, PPC403,  0,    {RS}},
8072
{"mtdmasa2",  XSPR(31,451,211), XSPR_MASK, PPC403,  0,    {RS}},
8073
{"mtdmacc2",  XSPR(31,451,212), XSPR_MASK, PPC403,  0,    {RS}},
8074
{"mtdmacr3",  XSPR(31,451,216), XSPR_MASK, PPC403,  0,    {RS}},
8075
{"mtdmact3",  XSPR(31,451,217), XSPR_MASK, PPC403,  0,    {RS}},
8076
{"mtdmada3",  XSPR(31,451,218), XSPR_MASK, PPC403,  0,    {RS}},
8077
{"mtdmasa3",  XSPR(31,451,219), XSPR_MASK, PPC403,  0,    {RS}},
8078
{"mtdmacc3",  XSPR(31,451,220), XSPR_MASK, PPC403,  0,    {RS}},
8079
{"mtdmasr", XSPR(31,451,224), XSPR_MASK, PPC403,  0,    {RS}},
8080
{"mtdcr", X(31,451), X_MASK, PPC403|BOOKE|PPCA2|PPC476, E500|TITAN, {SPR, RS}},
8081
{"mtdcr.",  XRC(31,451,1), X_MASK,       PPCA2, 0,    {SPR, RS}},
8082
8083
{"stvexwx", X(31,453),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
8084
8085
{"dccci", X(31,454), XRT_MASK, PPC403|PPC440|PPC476|TITAN|PPCA2, 0, {RAOPT, RBOPT}},
8086
{"dci",   X(31,454),  XRARB_MASK, PPCA2|PPC476, 0,    {CT}},
8087
8088
{"divdu", XO(31,457,0,0), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
8089
{"divdu.",  XO(31,457,0,1), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
8090
8091
{"divwu", XO(31,459,0,0), XO_MASK,     PPC, 0,    {RT, RA, RB}},
8092
{"divwu.",  XO(31,459,0,1), XO_MASK,     PPC, 0,    {RT, RA, RB}},
8093
8094
{"stxvpx",  X(31,461),  XX1_MASK,    POWER10, 0,    {XSP, RA0, RB}},
8095
8096
{"mtpmr", X(31,462),  X_MASK, PPCPMR|PPCE300, 0,    {PMR, RS}},
8097
{"mttmr", X(31,494),  X_MASK,      PPCTMR,  0,    {TMR, RS}},
8098
8099
{"slbieg",  X(31,466),  XRA_MASK,    POWER9,  0,    {RS, RB}},
8100
8101
{"mtmq",  XSPR(31,467,  0), XSPR_MASK, M601,  EXT,    {RS}},
8102
{"mtxer", XSPR(31,467,  1), XSPR_MASK, COM, EXT,    {RS}},
8103
{"mtudscr", XSPR(31,467,  3), XSPR_MASK, POWER9,  EXT,    {RS}},
8104
{"mtlr",  XSPR(31,467,  8), XSPR_MASK, COM, EXT,    {RS}},
8105
{"mtctr", XSPR(31,467,  9), XSPR_MASK, COM, EXT,    {RS}},
8106
{"mtuamr",  XSPR(31,467, 13), XSPR_MASK, POWER9,  EXT,    {RS}},
8107
{"mtdscr",  XSPR(31,467, 17), XSPR_MASK, POWER6,  EXT,    {RS}},
8108
{"mttid", XSPR(31,467, 17), XSPR_MASK, POWER, EXT,    {RS}},
8109
{"mtdsisr", XSPR(31,467, 18), XSPR_MASK, COM, TITAN|EXT,  {RS}},
8110
{"mtdar", XSPR(31,467, 19), XSPR_MASK, COM, TITAN|EXT,  {RS}},
8111
{"mtrtcu",  XSPR(31,467, 20), XSPR_MASK, COM, TITAN|EXT,  {RS}},
8112
{"mtrtcl",  XSPR(31,467, 21), XSPR_MASK, COM, TITAN|EXT,  {RS}},
8113
{"mtdec", XSPR(31,467, 22), XSPR_MASK, COM, EXT,    {RS}},
8114
{"mtsdr0",  XSPR(31,467, 24), XSPR_MASK, POWER, EXT,    {RS}},
8115
{"mtsdr1",  XSPR(31,467, 25), XSPR_MASK, COM, TITAN|EXT,  {RS}},
8116
{"mtsrr0",  XSPR(31,467, 26), XSPR_MASK, COM, EXT,    {RS}},
8117
{"mtsrr1",  XSPR(31,467, 27), XSPR_MASK, COM, EXT,    {RS}},
8118
{"mtcfar",  XSPR(31,467, 28), XSPR_MASK, POWER6,  EXT,    {RS}},
8119
{"mtamr", XSPR(31,467, 29), XSPR_MASK, POWER7,  EXT,    {RS}},
8120
{"mtpidr",  XSPR(31,467, 48), XSPR_MASK, POWER10, EXT,    {RS}},
8121
{"mtpid", XSPR(31,467, 48), XSPR_MASK, BOOKE, EXT,    {RS}},
8122
{"mtdecar", XSPR(31,467, 54), XSPR_MASK, BOOKE, EXT,    {RS}},
8123
{"mtcsrr0", XSPR(31,467, 58), XSPR_MASK, BOOKE, EXT,    {RS}},
8124
{"mtcsrr1", XSPR(31,467, 59), XSPR_MASK, BOOKE, EXT,    {RS}},
8125
{"mtiamr",  XSPR(31,467, 61), XSPR_MASK, POWER10, EXT,    {RS}},
8126
{"mtdear",  XSPR(31,467, 61), XSPR_MASK, BOOKE, EXT,    {RS}},
8127
{"mtesr", XSPR(31,467, 62), XSPR_MASK, BOOKE, EXT,    {RS}},
8128
{"mtivpr",  XSPR(31,467, 63), XSPR_MASK, BOOKE, EXT,    {RS}},
8129
{"mttfhar", XSPR(31,467,128), XSPR_MASK, POWER9,  EXT,    {RS}},
8130
{"mttfiar", XSPR(31,467,129), XSPR_MASK, POWER9,  EXT,    {RS}},
8131
{"mttexasr",  XSPR(31,467,130), XSPR_MASK, POWER9,  EXT,    {RS}},
8132
{"mttexasru", XSPR(31,467,131), XSPR_MASK, POWER9,  EXT,    {RS}},
8133
{"mtcmpa",  XSPR(31,467,144), XSPR_MASK, PPC860,  EXT,    {RS}},
8134
{"mtcmpb",  XSPR(31,467,145), XSPR_MASK, PPC860,  EXT,    {RS}},
8135
{"mtcmpc",  XSPR(31,467,146), XSPR_MASK, PPC860,  EXT,    {RS}},
8136
{"mtcmpd",  XSPR(31,467,147), XSPR_MASK, PPC860,  EXT,    {RS}},
8137
{"mticr", XSPR(31,467,148), XSPR_MASK, PPC860,  EXT,    {RS}},
8138
{"mtder", XSPR(31,467,149), XSPR_MASK, PPC860,  EXT,    {RS}},
8139
{"mtcounta",  XSPR(31,467,150), XSPR_MASK, PPC860,  EXT,    {RS}},
8140
{"mtcountb",  XSPR(31,467,151), XSPR_MASK, PPC860,  EXT,    {RS}},
8141
{"mtctrl",  XSPR(31,467,152), XSPR_MASK, POWER4,  EXT,    {RS}},
8142
{"mtcmpe",  XSPR(31,467,152), XSPR_MASK, PPC860,  EXT,    {RS}},
8143
{"mtfscr",  XSPR(31,467,153), XSPR_MASK, POWER10, EXT,    {RS}},
8144
{"mtcmpf",  XSPR(31,467,153), XSPR_MASK, PPC860,  EXT,    {RS}},
8145
{"mtcmpg",  XSPR(31,467,154), XSPR_MASK, PPC860,  EXT,    {RS}},
8146
{"mtcmph",  XSPR(31,467,155), XSPR_MASK, PPC860,  EXT,    {RS}},
8147
{"mtlctrl1",  XSPR(31,467,156), XSPR_MASK, PPC860,  EXT,    {RS}},
8148
{"mtuamor", XSPR(31,467,157), XSPR_MASK, POWER7,  EXT,    {RS}},
8149
{"mtlctrl2",  XSPR(31,467,157), XSPR_MASK, PPC860,  EXT,    {RS}},
8150
{"mtictrl", XSPR(31,467,158), XSPR_MASK, PPC860,  EXT,    {RS}},
8151
{"mtpspb",  XSPR(31,467,159), XSPR_MASK, POWER10, EXT,    {RS}},
8152
{"mtbar", XSPR(31,467,159), XSPR_MASK, PPC860,  EXT,    {RS}},
8153
{"mtdpdes", XSPR(31,467,176), XSPR_MASK, POWER10, EXT,    {RS}},
8154
{"mtdawr0", XSPR(31,467,180), XSPR_MASK, POWER10, EXT,    {RS}},
8155
{"mtdawr1", XSPR(31,467,181), XSPR_MASK, POWER10, EXT,    {RS}},
8156
{"mtrpr", XSPR(31,467,186), XSPR_MASK, POWER10, EXT,    {RS}},
8157
{"mtciabr", XSPR(31,467,187), XSPR_MASK, POWER10, EXT,    {RS}},
8158
{"mtdawrx0",  XSPR(31,467,188), XSPR_MASK, POWER10, EXT,    {RS}},
8159
{"mtdawrx1",  XSPR(31,467,189), XSPR_MASK, POWER10, EXT,    {RS}},
8160
{"mthfscr", XSPR(31,467,190), XSPR_MASK, POWER10, EXT,    {RS}},
8161
{"mtvrsave",  XSPR(31,467,256), XSPR_MASK, PPCVEC,  EXT,    {RS}},
8162
{"mtusprg0",  XSPR(31,467,256), XSPR_MASK, BOOKE, EXT,    {RS}},
8163
{"mtsprg",  XSPR(31,467,256), XSPRG_MASK, PPC,  EXT,    {SPRG, RS}},
8164
{"mtsprg0", XSPR(31,467,272), XSPR_MASK, PPC, EXT,    {RS}},
8165
{"mtsprg1", XSPR(31,467,273), XSPR_MASK, PPC, EXT,    {RS}},
8166
{"mtsprg2", XSPR(31,467,274), XSPR_MASK, PPC, EXT,    {RS}},
8167
{"mtsprg3", XSPR(31,467,275), XSPR_MASK, PPC, EXT,    {RS}},
8168
{"mtsprg4", XSPR(31,467,276), XSPR_MASK, PPC405|BOOKE, EXT,   {RS}},
8169
{"mtsprg5", XSPR(31,467,277), XSPR_MASK, PPC405|BOOKE, EXT,   {RS}},
8170
{"mtsprg6", XSPR(31,467,278), XSPR_MASK, PPC405|BOOKE, EXT,   {RS}},
8171
{"mtsprg7", XSPR(31,467,279), XSPR_MASK, PPC405|BOOKE, EXT,   {RS}},
8172
{"mtasr", XSPR(31,467,280), XSPR_MASK, PPC64, EXT,    {RS}},
8173
{"mtear", XSPR(31,467,282), XSPR_MASK, PPC, TITAN|EXT,  {RS}},
8174
{"mttbl", XSPR(31,467,284), XSPR_MASK, PPC, EXT,    {RS}},
8175
{"mttbu", XSPR(31,467,285), XSPR_MASK, PPC, EXT,    {RS}},
8176
{"mttbu40", XSPR(31,467,286), XSPR_MASK, POWER10, EXT,    {RS}},
8177
{"mthsprg0",  XSPR(31,467,304), XSPR_MASK, POWER10, EXT,    {RS}},
8178
{"mtdbsr",  XSPR(31,467,304), XSPR_MASK, BOOKE, EXT,    {RS}},
8179
{"mthsprg1",  XSPR(31,467,305), XSPR_MASK, POWER10, EXT,    {RS}},
8180
{"mthdisr", XSPR(31,467,306), XSPR_MASK, POWER10, EXT,    {RS}},
8181
{"mthdar",  XSPR(31,467,307), XSPR_MASK, POWER10, EXT,    {RS}},
8182
{"mtspurr", XSPR(31,467,308), XSPR_MASK, POWER10, EXT,    {RS}},
8183
{"mtdbcr0", XSPR(31,467,308), XSPR_MASK, BOOKE, EXT,    {RS}},
8184
{"mtpurr",  XSPR(31,467,309), XSPR_MASK, POWER10, EXT,    {RS}},
8185
{"mtdbcr1", XSPR(31,467,309), XSPR_MASK, BOOKE, EXT,    {RS}},
8186
{"mthdec",  XSPR(31,467,310), XSPR_MASK, POWER10, EXT,    {RS}},
8187
{"mtdbcr2", XSPR(31,467,310), XSPR_MASK, BOOKE, EXT,    {RS}},
8188
{"mtiac1",  XSPR(31,467,312), XSPR_MASK, BOOKE, EXT,    {RS}},
8189
{"mthrmor", XSPR(31,467,313), XSPR_MASK, POWER10, EXT,    {RS}},
8190
{"mtiac2",  XSPR(31,467,313), XSPR_MASK, BOOKE, EXT,    {RS}},
8191
{"mthsrr0", XSPR(31,467,314), XSPR_MASK, POWER10, EXT,    {RS}},
8192
{"mtiac3",  XSPR(31,467,314), XSPR_MASK, BOOKE, EXT,    {RS}},
8193
{"mthsrr1", XSPR(31,467,315), XSPR_MASK, POWER10, EXT,    {RS}},
8194
{"mtiac4",  XSPR(31,467,315), XSPR_MASK, BOOKE, EXT,    {RS}},
8195
{"mtdac1",  XSPR(31,467,316), XSPR_MASK, BOOKE, EXT,    {RS}},
8196
{"mtdac2",  XSPR(31,467,317), XSPR_MASK, BOOKE, EXT,    {RS}},
8197
{"mtlpcr",  XSPR(31,467,318), XSPR_MASK, POWER10, EXT,    {RS}},
8198
{"mtdvc1",  XSPR(31,467,318), XSPR_MASK, BOOKE, EXT,    {RS}},
8199
{"mtlpidr", XSPR(31,467,319), XSPR_MASK, POWER10, EXT,    {RS}},
8200
{"mtdvc2",  XSPR(31,467,319), XSPR_MASK, BOOKE, EXT,    {RS}},
8201
{"mthmer",  XSPR(31,467,336), XSPR_MASK, POWER7,  EXT,    {RS}},
8202
{"mttsr", XSPR(31,467,336), XSPR_MASK, BOOKE, EXT,    {RS}},
8203
{"mthmeer", XSPR(31,467,337), XSPR_MASK, POWER7,  EXT,    {RS}},
8204
{"mtpcr", XSPR(31,467,338), XSPR_MASK, POWER10, EXT,    {RS}},
8205
{"mtheir",  XSPR(31,467,339), XSPR_MASK, POWER10, EXT,    {RS}},
8206
{"mttcr", XSPR(31,467,340), XSPR_MASK, BOOKE, EXT,    {RS}},
8207
{"mtamor",  XSPR(31,467,349), XSPR_MASK, POWER7,  EXT,    {RS}},
8208
{"mtivor0", XSPR(31,467,400), XSPR_MASK, BOOKE, EXT,    {RS}},
8209
{"mtivor1", XSPR(31,467,401), XSPR_MASK, BOOKE, EXT,    {RS}},
8210
{"mtivor2", XSPR(31,467,402), XSPR_MASK, BOOKE, EXT,    {RS}},
8211
{"mtivor3", XSPR(31,467,403), XSPR_MASK, BOOKE, EXT,    {RS}},
8212
{"mtivor4", XSPR(31,467,404), XSPR_MASK, BOOKE, EXT,    {RS}},
8213
{"mtivor5", XSPR(31,467,405), XSPR_MASK, BOOKE, EXT,    {RS}},
8214
{"mtivor6", XSPR(31,467,406), XSPR_MASK, BOOKE, EXT,    {RS}},
8215
{"mtivor7", XSPR(31,467,407), XSPR_MASK, BOOKE, EXT,    {RS}},
8216
{"mtivor8", XSPR(31,467,408), XSPR_MASK, BOOKE, EXT,    {RS}},
8217
{"mtivor9", XSPR(31,467,409), XSPR_MASK, BOOKE, EXT,    {RS}},
8218
{"mtivor10",  XSPR(31,467,410), XSPR_MASK, BOOKE, EXT,    {RS}},
8219
{"mtivor11",  XSPR(31,467,411), XSPR_MASK, BOOKE, EXT,    {RS}},
8220
{"mtivor12",  XSPR(31,467,412), XSPR_MASK, BOOKE, EXT,    {RS}},
8221
{"mtivor13",  XSPR(31,467,413), XSPR_MASK, BOOKE, EXT,    {RS}},
8222
{"mtivor14",  XSPR(31,467,414), XSPR_MASK, BOOKE, EXT,    {RS}},
8223
{"mtivor15",  XSPR(31,467,415), XSPR_MASK, BOOKE, EXT,    {RS}},
8224
{"mtptcr",  XSPR(31,467,464), XSPR_MASK, POWER10, EXT,    {RS}},
8225
{"mtusprg0",  XSPR(31,467,496), XSPR_MASK, POWER10, EXT,    {RS}},
8226
{"mtusprg1",  XSPR(31,467,497), XSPR_MASK, POWER10, EXT,    {RS}},
8227
{"mturmor", XSPR(31,467,505), XSPR_MASK, POWER10, EXT,    {RS}},
8228
{"mtusrr0", XSPR(31,467,506), XSPR_MASK, POWER10, EXT,    {RS}},
8229
{"mtusrr1", XSPR(31,467,507), XSPR_MASK, POWER10, EXT,    {RS}},
8230
{"mtsmfctrl", XSPR(31,467,511), XSPR_MASK, POWER10, EXT,    {RS}},
8231
{"mtspefscr", XSPR(31,467,512), XSPR_MASK, PPCSPE,  EXT,    {RS}},
8232
{"mtbbear", XSPR(31,467,513), XSPR_MASK, PPCBRLK, EXT,    {RS}},
8233
{"mtbbtar", XSPR(31,467,514), XSPR_MASK, PPCBRLK, EXT,    {RS}},
8234
{"mtivor32",  XSPR(31,467,528), XSPR_MASK, PPCSPE|E6500, EXT,   {RS}},
8235
{"mtivor33",  XSPR(31,467,529), XSPR_MASK, PPCSPE|E6500, EXT,   {RS}},
8236
{"mtivor34",  XSPR(31,467,530), XSPR_MASK, PPCSPE,  EXT,    {RS}},
8237
{"mtivor35",  XSPR(31,467,531), XSPR_MASK, PPCPMR,  EXT,    {RS}},
8238
{"mtibatu", XSPR(31,467,528), XSPRBAT_MASK, PPC,  TITAN|EXT,  {SPRBAT, RS}},
8239
{"mtibatl", XSPR(31,467,529), XSPRBAT_MASK, PPC,  TITAN|EXT,  {SPRBAT, RS}},
8240
{"mtdbatu", XSPR(31,467,536), XSPRBAT_MASK, PPC,  TITAN|EXT,  {SPRBAT, RS}},
8241
{"mtdbatl", XSPR(31,467,537), XSPRBAT_MASK, PPC,  TITAN|EXT,  {SPRBAT, RS}},
8242
{"mtmcsrr0",  XSPR(31,467,570), XSPR_MASK, PPCRFMCI,  EXT,    {RS}},
8243
{"mtmcsrr1",  XSPR(31,467,571), XSPR_MASK, PPCRFMCI,  EXT,    {RS}},
8244
{"mtmcsr",  XSPR(31,467,572), XSPR_MASK, PPCRFMCI,  EXT,    {RS}},
8245
{"mtsier2", XSPR(31,467,752), XSPR_MASK, POWER10, EXT,    {RS}},
8246
{"mtsier3", XSPR(31,467,753), XSPR_MASK, POWER10, EXT,    {RS}},
8247
{"mtmmcr3", XSPR(31,467,754), XSPR_MASK, POWER10, EXT,    {RS}},
8248
{"mtummcr2",  XSPR(31,467,769), XSPR_MASK, POWER9,  EXT,    {RS}},
8249
{"mtmmcr2", XSPR(31,467,769), XSPR_MASK, POWER9,  EXT,    {RS}},
8250
{"mtummcra",  XSPR(31,467,770), XSPR_MASK, POWER9,  EXT,    {RS}},
8251
{"mtupmc1", XSPR(31,467,771), XSPR_MASK, POWER9,  EXT,    {RS}},
8252
{"mtupmc2", XSPR(31,467,772), XSPR_MASK, POWER9,  EXT,    {RS}},
8253
{"mtupmc3", XSPR(31,467,773), XSPR_MASK, POWER9,  EXT,    {RS}},
8254
{"mtupmc4", XSPR(31,467,774), XSPR_MASK, POWER9,  EXT,    {RS}},
8255
{"mtupmc5", XSPR(31,467,775), XSPR_MASK, POWER9,  EXT,    {RS}},
8256
{"mtupmc6", XSPR(31,467,776), XSPR_MASK, POWER9,  EXT,    {RS}},
8257
{"mtummcr0",  XSPR(31,467,779), XSPR_MASK, POWER9,  EXT,    {RS}},
8258
{"mtsier",  XSPR(31,467,784), XSPR_MASK, POWER10, EXT,    {RS}},
8259
{"mtmmcra", XSPR(31,467,786), XSPR_MASK, POWER7,  EXT,    {RS}},
8260
{"mtpmc1",  XSPR(31,467,787), XSPR_MASK, POWER7,  EXT,    {RS}},
8261
{"mtpmc2",  XSPR(31,467,788), XSPR_MASK, POWER7,  EXT,    {RS}},
8262
{"mtpmc3",  XSPR(31,467,789), XSPR_MASK, POWER7,  EXT,    {RS}},
8263
{"mtpmc4",  XSPR(31,467,790), XSPR_MASK, POWER7,  EXT,    {RS}},
8264
{"mtpmc5",  XSPR(31,467,791), XSPR_MASK, POWER7,  EXT,    {RS}},
8265
{"mtpmc6",  XSPR(31,467,792), XSPR_MASK, POWER7,  EXT,    {RS}},
8266
{"mtmmcr0", XSPR(31,467,795), XSPR_MASK, POWER7,  EXT,    {RS}},
8267
{"mtsiar",  XSPR(31,467,796), XSPR_MASK, POWER10, EXT,    {RS}},
8268
{"mtsdar",  XSPR(31,467,797), XSPR_MASK, POWER10, EXT,    {RS}},
8269
{"mtmmcr1", XSPR(31,467,798), XSPR_MASK, POWER7,  EXT,    {RS}},
8270
{"mtbescrs",  XSPR(31,467,800), XSPR_MASK, POWER9,  EXT,    {RS}},
8271
{"mtbescrsu", XSPR(31,467,801), XSPR_MASK, POWER9,  EXT,    {RS}},
8272
{"mtbescrr",  XSPR(31,467,802), XSPR_MASK, POWER9,  EXT,    {RS}},
8273
{"mtbescrru", XSPR(31,467,803), XSPR_MASK, POWER9,  EXT,    {RS}},
8274
{"mtebbhr", XSPR(31,467,804), XSPR_MASK, POWER9,  EXT,    {RS}},
8275
{"mtebbrr", XSPR(31,467,805), XSPR_MASK, POWER9,  EXT,    {RS}},
8276
{"mtbescr", XSPR(31,467,806), XSPR_MASK, POWER9,  EXT,    {RS}},
8277
{"mttar", XSPR(31,467,815), XSPR_MASK, POWER9,  EXT,    {RS}},
8278
{"mtasdr",  XSPR(31,467,816), XSPR_MASK, POWER10, EXT,    {RS}},
8279
{"mtpsscr", XSPR(31,467,823), XSPR_MASK, POWER10, EXT,    {RS}},
8280
{"mtic",  XSPR(31,467,848), XSPR_MASK, POWER8,  EXT,    {RS}},
8281
{"mtvtb", XSPR(31,467,849), XSPR_MASK, POWER8,  EXT,    {RS}},
8282
{"mthpsscr",  XSPR(31,467,855), XSPR_MASK, POWER10, EXT,    {RS}},
8283
{"mtivndx", XSPR(31,467,880), XSPR_MASK, TITAN, EXT,    {RS}},
8284
{"mtdvndx", XSPR(31,467,881), XSPR_MASK, TITAN, EXT,    {RS}},
8285
{"mtivlim", XSPR(31,467,882), XSPR_MASK, TITAN, EXT,    {RS}},
8286
{"mtdvlim", XSPR(31,467,883), XSPR_MASK, TITAN, EXT,    {RS}},
8287
{"mtclcsr", XSPR(31,467,884), XSPR_MASK, TITAN, EXT,    {RS}},
8288
{"mtccr1",  XSPR(31,467,888), XSPR_MASK, TITAN, EXT,    {RS}},
8289
{"mtppr", XSPR(31,467,896), XSPR_MASK, POWER5,  EXT,    {RS}},
8290
{"mtppr32", XSPR(31,467,898), XSPR_MASK, POWER5,  EXT,    {RS}},
8291
{"mtgqr", XSPR(31,467,912), XSPRGQR_MASK, PPCPS,  EXT,    {SPRGQR, RS}},
8292
{"mthid2",  XSPR(31,467,920), XSPR_MASK, GEKKO, EXT,    {RS}},
8293
{"mtwpar",  XSPR(31,467,921), XSPR_MASK, GEKKO, EXT,    {RS}},
8294
{"mtdmau",  XSPR(31,467,922), XSPR_MASK, GEKKO, EXT,    {RS}},
8295
{"mtdmal",  XSPR(31,467,923), XSPR_MASK, GEKKO, EXT,    {RS}},
8296
{"mtummcr0",  XSPR(31,467,936), XSPR_MASK, PPC750,  EXT,    {RS}},
8297
{"mtupmc1", XSPR(31,467,937), XSPR_MASK, PPC750,  EXT,    {RS}},
8298
{"mtupmc2", XSPR(31,467,938), XSPR_MASK, PPC750,  EXT,    {RS}},
8299
{"mtusia",  XSPR(31,467,939), XSPR_MASK, PPC750,  EXT,    {RS}},
8300
{"mtummcr1",  XSPR(31,467,940), XSPR_MASK, PPC750,  EXT,    {RS}},
8301
{"mtupmc3", XSPR(31,467,941), XSPR_MASK, PPC750,  EXT,    {RS}},
8302
{"mtupmc4", XSPR(31,467,942), XSPR_MASK, PPC750,  EXT,    {RS}},
8303
{"mtzpr", XSPR(31,467,944), XSPR_MASK, PPC403,  EXT,    {RS}},
8304
{"mtpid", XSPR(31,467,945), XSPR_MASK, PPC403,  EXT,    {RS}},
8305
{"mtrmmucr",  XSPR(31,467,946), XSPR_MASK, TITAN, EXT,    {RS}},
8306
{"mtccr0",  XSPR(31,467,947), XSPR_MASK, PPC405|TITAN, EXT,   {RS}},
8307
{"mtiac3",  XSPR(31,467,948), XSPR_MASK, PPC405,  EXT,    {RS}},
8308
{"mtiac4",  XSPR(31,467,949), XSPR_MASK, PPC405,  EXT,    {RS}},
8309
{"mtdvc1",  XSPR(31,467,950), XSPR_MASK, PPC405,  EXT,    {RS}},
8310
{"mtdvc2",  XSPR(31,467,951), XSPR_MASK, PPC405,  EXT,    {RS}},
8311
{"mtmmcr0", XSPR(31,467,952), XSPR_MASK, PPC750,  EXT,    {RS}},
8312
{"mtpmc1",  XSPR(31,467,953), XSPR_MASK, PPC750,  EXT,    {RS}},
8313
{"mtsgr", XSPR(31,467,953), XSPR_MASK, PPC403,  EXT,    {RS}},
8314
{"mtdcwr",  XSPR(31,467,954), XSPR_MASK, PPC403,  EXT,    {RS}},
8315
{"mtpmc2",  XSPR(31,467,954), XSPR_MASK, PPC750,  EXT,    {RS}},
8316
{"mtsia", XSPR(31,467,955), XSPR_MASK, PPC750,  EXT,    {RS}},
8317
{"mtsler",  XSPR(31,467,955), XSPR_MASK, PPC405,  EXT,    {RS}},
8318
{"mtmmcr1", XSPR(31,467,956), XSPR_MASK, PPC750,  EXT,    {RS}},
8319
{"mtsu0r",  XSPR(31,467,956), XSPR_MASK, PPC405,  EXT,    {RS}},
8320
{"mtdbcr1", XSPR(31,467,957), XSPR_MASK, PPC405,  EXT,    {RS}},
8321
{"mtpmc3",  XSPR(31,467,957), XSPR_MASK, PPC750,  EXT,    {RS}},
8322
{"mtpmc4",  XSPR(31,467,958), XSPR_MASK, PPC750,  EXT,    {RS}},
8323
{"mticdbdr",  XSPR(31,467,979), XSPR_MASK, PPC403,  EXT,    {RS}},
8324
{"mtesr", XSPR(31,467,980), XSPR_MASK, PPC403,  EXT,    {RS}},
8325
{"mtdear",  XSPR(31,467,981), XSPR_MASK, PPC403,  EXT,    {RS}},
8326
{"mtevpr",  XSPR(31,467,982), XSPR_MASK, PPC403,  EXT,    {RS}},
8327
{"mtcdbcr", XSPR(31,467,983), XSPR_MASK, PPC403,  EXT,    {RS}},
8328
{"mttsr", XSPR(31,467,984), XSPR_MASK, PPC403,  EXT,    {RS}},
8329
{"mttcr", XSPR(31,467,986), XSPR_MASK, PPC403,  EXT,    {RS}},
8330
{"mtpit", XSPR(31,467,987), XSPR_MASK, PPC403,  EXT,    {RS}},
8331
{"mttbhi",  XSPR(31,467,988), XSPR_MASK, PPC403,  EXT,    {RS}},
8332
{"mttblo",  XSPR(31,467,989), XSPR_MASK, PPC403,  EXT,    {RS}},
8333
{"mtsrr2",  XSPR(31,467,990), XSPR_MASK, PPC403,  EXT,    {RS}},
8334
{"mtsrr3",  XSPR(31,467,991), XSPR_MASK, PPC403,  EXT,    {RS}},
8335
{"mtdbsr",  XSPR(31,467,1008), XSPR_MASK, PPC403, EXT,    {RS}},
8336
{"mthid0",  XSPR(31,467,1008), XSPR_MASK, GEKKO,  EXT,    {RS}},
8337
{"mthid1",  XSPR(31,467,1009), XSPR_MASK, GEKKO,  EXT,    {RS}},
8338
{"mtdbcr0", XSPR(31,467,1010), XSPR_MASK, PPC405, EXT,    {RS}},
8339
{"mtiabr",  XSPR(31,467,1010), XSPR_MASK, GEKKO,  EXT,    {RS}},
8340
{"mthid4",  XSPR(31,467,1011), XSPR_MASK, BROADWAY, EXT,    {RS}},
8341
{"mtdbdr",  XSPR(31,467,1011), XSPR_MASK, TITAN,  EXT,    {RS}},
8342
{"mtiac1",  XSPR(31,467,1012), XSPR_MASK, PPC403, EXT,    {RS}},
8343
{"mtiac2",  XSPR(31,467,1013), XSPR_MASK, PPC403, EXT,    {RS}},
8344
{"mtdabr",  XSPR(31,467,1013), XSPR_MASK, PPC750, EXT,    {RS}},
8345
{"mtdac1",  XSPR(31,467,1014), XSPR_MASK, PPC403, EXT,    {RS}},
8346
{"mtdac2",  XSPR(31,467,1015), XSPR_MASK, PPC403, EXT,    {RS}},
8347
{"mtl2cr",  XSPR(31,467,1017), XSPR_MASK, PPC750, EXT,    {RS}},
8348
{"mtdccr",  XSPR(31,467,1018), XSPR_MASK, PPC403, EXT,    {RS}},
8349
{"mticcr",  XSPR(31,467,1019), XSPR_MASK, PPC403, EXT,    {RS}},
8350
{"mtictc",  XSPR(31,467,1019), XSPR_MASK, PPC750, EXT,    {RS}},
8351
{"mtpbl1",  XSPR(31,467,1020), XSPR_MASK, PPC403, EXT,    {RS}},
8352
{"mtthrm1", XSPR(31,467,1020), XSPR_MASK, PPC750, EXT,    {RS}},
8353
{"mtpbu1",  XSPR(31,467,1021), XSPR_MASK, PPC403, EXT,    {RS}},
8354
{"mtthrm2", XSPR(31,467,1021), XSPR_MASK, PPC750, EXT,    {RS}},
8355
{"mtpbl2",  XSPR(31,467,1022), XSPR_MASK, PPC403, EXT,    {RS}},
8356
{"mtthrm3", XSPR(31,467,1022), XSPR_MASK, PPC750, EXT,    {RS}},
8357
{"mtpbu2",  XSPR(31,467,1023), XSPR_MASK, PPC403, EXT,    {RS}},
8358
{"mtspr", X(31,467),  X_MASK,      COM, 0,    {SPR, RS}},
8359
8360
{"dcbi",  X(31,470),  XRT_MASK,    PPC, 0,    {RA0, RB}},
8361
8362
{"nand",  XRC(31,476,0),  X_MASK,      COM, 0,    {RA, RS, RB}},
8363
{"nand.", XRC(31,476,1),  X_MASK,      COM, 0,    {RA, RS, RB}},
8364
8365
{"setnbcr", X(31,480),  XRB_MASK,    POWER10, 0,    {RT, BI}},
8366
8367
{"dsn",   X(31,483),  XRT_MASK,    E500MC,  0,    {RA, RB}},
8368
8369
{"dcread",  X(31,486),  X_MASK,  PPC403|PPC440, PPCA2,    {RT, RA0, RB}},
8370
8371
{"icbtls",  X(31,486),  X_MASK,  PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
8372
8373
{"stvxl", X(31,487),  X_MASK,      PPCVEC,  0,    {VS, RA0, RB}},
8374
8375
{"nabs",  XO(31,488,0,0), XORB_MASK,   M601,  0,    {RT, RA}},
8376
{"nabs.", XO(31,488,0,1), XORB_MASK,   M601,  0,    {RT, RA}},
8377
8378
{"divd",  XO(31,489,0,0), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
8379
{"divd.", XO(31,489,0,1), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
8380
8381
{"divw",  XO(31,491,0,0), XO_MASK,     PPC, 0,    {RT, RA, RB}},
8382
{"divw.", XO(31,491,0,1), XO_MASK,     PPC, 0,    {RT, RA, RB}},
8383
8384
{"icbtlse", X(31,494),  X_MASK,      PPCCHLK, E500MC,   {CT, RA, RB}},
8385
8386
{"slbia", X(31,498),  0xff1fffff,  POWER6,  0,    {IH}},
8387
{"slbia", X(31,498),  0xffffffff,  PPC64, POWER6,   {0}},
8388
8389
{"cli",   X(31,502),  XRB_MASK,    POWER, 0,    {RT, RA}},
8390
8391
{"popcntd", X(31,506),  XRB_MASK, POWER7|PPCA2, 0,    {RA, RS}},
8392
8393
{"cmpb",  X(31,508),  X_MASK, POWER6|PPCA2|PPC476, 0,   {RA, RS, RB}},
8394
8395
{"mcrxr", X(31,512),  XBFRARB_MASK, COM,  POWER7,   {BF}},
8396
8397
{"lbdcbx",  X(31,514),  X_MASK,      E200Z4,  0,    {RT, RA, RB}},
8398
{"lbdx",  X(31,515),  X_MASK,  E500MC|E200Z4, 0,    {RT, RA, RB}},
8399
8400
{"bblels",  X(31,518),  X_MASK,      PPCBRLK, 0,    {0}},
8401
8402
{"lvlx",  X(31,519),  X_MASK,      CELL,  0,    {VD, RA0, RB}},
8403
{"lbfcmux", APU(31,519,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8404
8405
{"subfco",  XO(31,8,1,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8406
{"sfo",   XO(31,8,1,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8407
{"subco", XO(31,8,1,0), XO_MASK,     PPCCOM,  EXT,    {RT, RB, RA}},
8408
{"subfco.", XO(31,8,1,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8409
{"sfo.",  XO(31,8,1,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8410
{"subco.",  XO(31,8,1,1), XO_MASK,     PPCCOM,  EXT,    {RT, RB, RA}},
8411
8412
{"addco", XO(31,10,1,0),  XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8413
{"ao",    XO(31,10,1,0),  XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8414
{"addco.",  XO(31,10,1,1),  XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8415
{"ao.",   XO(31,10,1,1),  XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8416
8417
{"lxsspx",  X(31,524),  XX1_MASK,    PPCVSX2, 0,    {XT6, RA0, RB}},
8418
{"lxvrl", X(31,525),  XX1_MASK,    PPCVSXF, 0,    {XT6, RA0, RB}},
8419
8420
{"clcs",  X(31,531),  XRB_MASK,    M601,  0,    {RT, RA}},
8421
8422
{"ldbrx", X(31,532),  X_MASK, CELL|POWER7|PPCA2, 0,   {RT, RA0, RB}},
8423
8424
{"lswx",  X(31,533),  X_MASK,      PPCCOM,  E500|E500MC,  {RT, RAX, RBX}},
8425
{"lsx",   X(31,533),  X_MASK,      PWRCOM,  0,    {RT, RA, RB}},
8426
8427
{"lwbrx", X(31,534),  X_MASK,      PPCCOM,  0,    {RT, RA0, RB}},
8428
{"lbrx",  X(31,534),  X_MASK,      PWRCOM,  0,    {RT, RA, RB}},
8429
8430
{"lfsx",  X(31,535),  X_MASK,      COM, PPCEFS,   {FRT, RA0, RB}},
8431
8432
{"srw",   XRC(31,536,0),  X_MASK,      PPCCOM,  0,    {RA, RS, RB}},
8433
{"sr",    XRC(31,536,0),  X_MASK,      PWRCOM,  0,    {RA, RS, RB}},
8434
{"srw.",  XRC(31,536,1),  X_MASK,      PPCCOM,  0,    {RA, RS, RB}},
8435
{"sr.",   XRC(31,536,1),  X_MASK,      PWRCOM,  0,    {RA, RS, RB}},
8436
8437
{"rrib",  XRC(31,537,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
8438
{"rrib.", XRC(31,537,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
8439
8440
{"cnttzw",  XRC(31,538,0),  XRB_MASK,    POWER9,  0,    {RA, RS}},
8441
{"cnttzw.", XRC(31,538,1),  XRB_MASK,    POWER9,  0,    {RA, RS}},
8442
8443
{"srd",   XRC(31,539,0),  X_MASK,      PPC64, 0,    {RA, RS, RB}},
8444
{"srd.",  XRC(31,539,1),  X_MASK,      PPC64, 0,    {RA, RS, RB}},
8445
8446
{"maskir",  XRC(31,541,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
8447
{"maskir.", XRC(31,541,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
8448
8449
{"lhdcbx",  X(31,546),  X_MASK,      E200Z4,  0,    {RT, RA, RB}},
8450
{"lhdx",  X(31,547),  X_MASK,  E500MC|E200Z4, 0,    {RT, RA, RB}},
8451
8452
{"lvtrx", X(31,549),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
8453
8454
{"bbelr", X(31,550),  X_MASK,      PPCBRLK, 0,    {0}},
8455
8456
{"lvrx",  X(31,551),  X_MASK,      CELL,  0,    {VD, RA0, RB}},
8457
{"lhfcmux", APU(31,551,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8458
8459
{"subfo", XO(31,40,1,0),  XO_MASK,     PPC, 0,    {RT, RA, RB}},
8460
{"subo",  XO(31,40,1,0),  XO_MASK,     PPC, EXT,    {RT, RB, RA}},
8461
{"subfo.",  XO(31,40,1,1),  XO_MASK,     PPC, 0,    {RT, RA, RB}},
8462
{"subo.", XO(31,40,1,1),  XO_MASK,     PPC, EXT,    {RT, RB, RA}},
8463
8464
{"lxvrll",  X(31,557),  XX1_MASK,    PPCVSXF, 0,    {XT6, RA0, RB}},
8465
8466
{"tlbsync", X(31,566),  0xffffffff,  PPC, 0,    {0}},
8467
8468
{"lfsux", X(31,567),  X_MASK,      COM, PPCEFS,   {FRT, RAS, RB}},
8469
8470
{"cnttzd",  XRC(31,570,0),  XRB_MASK,    POWER9,  0,    {RA, RS}},
8471
{"cnttzd.", XRC(31,570,1),  XRB_MASK,    POWER9,  0,    {RA, RS}},
8472
8473
{"cnttzdm", X(31,571),  X_MASK,      POWER10, 0,    {RA, RS, RB}},
8474
8475
{"mcrxrx",  X(31,576),     XBFRARB_MASK, POWER9,  0,    {BF}},
8476
8477
{"lwdcbx",  X(31,578),  X_MASK,      E200Z4,  0,    {RT, RA, RB}},
8478
{"lwdx",  X(31,579),  X_MASK,  E500MC|E200Z4, 0,    {RT, RA, RB}},
8479
8480
{"lvtlx", X(31,581),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
8481
8482
{"lwat",  X(31,582),  X_MASK,      POWER9,  0,    {RT, RA0, FC}},
8483
8484
{"lwfcmux", APU(31,583,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8485
8486
{"lxsdx", X(31,588),  XX1_MASK,    PPCVSX,  0,    {XT6, RA0, RB}},
8487
{"lxvprl",  X(31,589),  XX1_MASK,    PPCVSXF, 0,    {XTP, RA0, RB}},
8488
8489
{"mfsr",  X(31,595), XRB_MASK|(1<<20), COM, NON32,    {RT, SR}},
8490
8491
{"lswi",  X(31,597),  X_MASK,      PPCCOM,  E500|E500MC,  {RT, RAX, NBI}},
8492
{"lsi",   X(31,597),  X_MASK,      PWRCOM,  0,    {RT, RA0, NB}},
8493
8494
{"hwsync",  XSYNC(31,598,0), 0xffffffff, POWER4,  BOOKE|PPC476|EXT, {0}},
8495
{"lwsync",  XSYNC(31,598,1), 0xffffffff, PPC, E500|EXT,   {0}},
8496
{"ptesync", XSYNC(31,598,2), 0xffffffff, PPC64, EXT,      {0}},
8497
{"phwsync", XSYNCLS(31,598,4,0), 0xffffffff, POWER10, EXT,      {0}},
8498
{"plwsync", XSYNCLS(31,598,5,0), 0xffffffff, POWER10, EXT,      {0}},
8499
{"stncisync", XSYNCLS(31,598,1,1), 0xffffffff, POWER10, EXT,      {0}},
8500
{"stcisync",  XSYNCLS(31,598,0,2), 0xffffffff, POWER10, EXT,      {0}},
8501
{"stsync",  XSYNCLS(31,598,0,3), 0xffffffff, POWER10, EXT,      {0}},
8502
{"sync",  X(31,598),     XSYNCLS_MASK, POWER10, BOOKE|PPC476,   {LS3, SC2}},
8503
{"sync",  X(31,598),     XSYNCLE_MASK, E6500, 0,      {LS, ESYNC}},
8504
{"sync",  X(31,598),     XSYNC_MASK,   PPCCOM,  POWER10|BOOKE|PPC476, {LS}},
8505
{"msync", X(31,598),     0xffffffff, BOOKE|PPCA2|PPC476, 0,   {0}},
8506
{"sync",  X(31,598),     0xffffffff,   BOOKE|PPC476, E6500,   {0}},
8507
{"lwsync",  X(31,598),     0xffffffff,   E500,  0,      {0}},
8508
{"dcs",   X(31,598),     0xffffffff,   PWRCOM,  0,      {0}},
8509
8510
{"lfdx",  X(31,599),  X_MASK,      COM, PPCEFS,   {FRT, RA0, RB}},
8511
8512
{"mffgpr",  XRC(31,607,0),  XRA_MASK,    POWER6,  POWER7,   {FRT, RB}},
8513
{"lfdepx",  X(31,607),  X_MASK,   E500MC|PPCA2, 0,    {FRT, RA0, RB}},
8514
8515
{"lddx",  X(31,611),  X_MASK,      E500MC,  0,    {RT, RA, RB}},
8516
8517
{"lvswx", X(31,613),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
8518
8519
{"ldat",  X(31,614),  X_MASK,      POWER9,  0,    {RT, RA0, FC}},
8520
8521
{"lqfcmux", APU(31,615,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8522
8523
{"nego",  XO(31,104,1,0), XORB_MASK,   COM, 0,    {RT, RA}},
8524
{"nego.", XO(31,104,1,1), XORB_MASK,   COM, 0,    {RT, RA}},
8525
8526
{"mulo",  XO(31,107,1,0), XO_MASK,     M601,  0,    {RT, RA, RB}},
8527
{"mulo.", XO(31,107,1,1), XO_MASK,     M601,  0,    {RT, RA, RB}},
8528
8529
{"lxvprll", X(31,621),  XX1_MASK,    PPCVSXF, 0,    {XTP, RA0, RB}},
8530
8531
{"mfsri", X(31,627),  X_MASK,      M601,  0,    {RT, RA, RB}},
8532
8533
{"dclst", X(31,630),  XRB_MASK,    M601,  0,    {RS, RA}},
8534
8535
{"lfdux", X(31,631),  X_MASK,      COM, PPCEFS,   {FRT, RAS, RB}},
8536
8537
{"stbdcbx", X(31,642),  X_MASK,      E200Z4,  0,    {RS, RA, RB}},
8538
{"stbdx", X(31,643),  X_MASK,  E500MC|E200Z4, 0,    {RS, RA, RB}},
8539
8540
{"stvlx", X(31,647),  X_MASK,      CELL,  0,    {VS, RA0, RB}},
8541
{"stbfcmux",  APU(31,647,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8542
8543
{"stxsspx", X(31,652),  XX1_MASK,    PPCVSX2, 0,    {XS6, RA0, RB}},
8544
{"stxvrl",  X(31,653),  XX1_MASK,    PPCVSXF, 0,    {XS6, RA0, RB}},
8545
8546
{"tbegin.", XRC(31,654,1), XRTLRARB_MASK, PPCHTM, 0,    {HTM_R}},
8547
8548
{"subfeo",  XO(31,136,1,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8549
{"sfeo",  XO(31,136,1,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8550
{"subfeo.", XO(31,136,1,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8551
{"sfeo.", XO(31,136,1,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8552
8553
{"addeo", XO(31,138,1,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8554
{"aeo",   XO(31,138,1,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8555
{"addeo.",  XO(31,138,1,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8556
{"aeo.",  XO(31,138,1,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8557
8558
{"hashstp", X(31,658),  XRC_MASK,    POWER8,  0,    {RB, DW, RA0}},
8559
8560
{"mfsrin",  X(31,659),  XRA_MASK,    PPC, NON32,    {RT, RB}},
8561
8562
{"stdbrx",  X(31,660),  X_MASK, CELL|POWER7|PPCA2, 0,   {RS, RA0, RB}},
8563
8564
{"stswx", X(31,661),  X_MASK,      PPCCOM,  E500|E500MC,  {RS, RA0, RB}},
8565
{"stsx",  X(31,661),  X_MASK,      PWRCOM,  0,    {RS, RA0, RB}},
8566
8567
{"stwbrx",  X(31,662),  X_MASK,      PPCCOM,  0,    {RS, RA0, RB}},
8568
{"stbrx", X(31,662),  X_MASK,      PWRCOM,  0,    {RS, RA0, RB}},
8569
8570
{"stfsx", X(31,663),  X_MASK,      COM, PPCEFS,   {FRS, RA0, RB}},
8571
8572
{"srq",   XRC(31,664,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
8573
{"srq.",  XRC(31,664,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
8574
8575
{"sre",   XRC(31,665,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
8576
{"sre.",  XRC(31,665,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
8577
8578
{"sthdcbx", X(31,674),  X_MASK,      E200Z4,  0,    {RS, RA, RB}},
8579
{"sthdx", X(31,675),  X_MASK,  E500MC|E200Z4, 0,    {RS, RA, RB}},
8580
8581
{"stvfrx",  X(31,677),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
8582
8583
{"stvrx", X(31,679),  X_MASK,      CELL,  0,    {VS, RA0, RB}},
8584
{"sthfcmux",  APU(31,679,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8585
8586
{"stxvrll", X(31,685),  XX1_MASK,    PPCVSXF, 0,    {XS6, RA0, RB}},
8587
8588
{"tendall.",  XRC(31,686,1)|(1<<25), XRTRARB_MASK, PPCHTM, 0,   {0}},
8589
{"tend.", XRC(31,686,1), XRTARARB_MASK, PPCHTM, 0,    {HTM_A}},
8590
8591
{"hashchkp",  X(31,690),  XRC_MASK,    POWER8,  0,    {RB, DW, RA0}},
8592
8593
{"stbcx.",  XRC(31,694,1),  X_MASK,   POWER8|E6500, 0,    {RS, RA0, RB}},
8594
8595
{"stfsux",  X(31,695),  X_MASK,      COM, PPCEFS,   {FRS, RAS, RB}},
8596
8597
{"sriq",  XRC(31,696,0),  X_MASK,      M601,  0,    {RA, RS, SH}},
8598
{"sriq.", XRC(31,696,1),  X_MASK,      M601,  0,    {RA, RS, SH}},
8599
8600
{"stwdcbx", X(31,706),  X_MASK,      E200Z4,  0,    {RS, RA, RB}},
8601
{"stwdx", X(31,707),  X_MASK,  E500MC|E200Z4, 0,    {RS, RA, RB}},
8602
8603
{"stvflx",  X(31,709),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
8604
8605
{"stwat", X(31,710),  X_MASK,      POWER9,  0,    {RS, RA0, FC}},
8606
8607
{"stwfcmux",  APU(31,711,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8608
8609
{"stxsdx",  X(31,716),  XX1_MASK,    PPCVSX,  0,    {XS6, RA0, RB}},
8610
{"stxvprl", X(31,717),  XX1_MASK,    PPCVSXF, 0,    {XSP, RA0, RB}},
8611
8612
{"tcheck",  X(31,718),   XRTBFRARB_MASK, PPCHTM,  0,    {BF}},
8613
8614
{"subfzeo", XO(31,200,1,0), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
8615
{"sfzeo", XO(31,200,1,0), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
8616
{"subfzeo.",  XO(31,200,1,1), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
8617
{"sfzeo.",  XO(31,200,1,1), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
8618
8619
{"addzeo",  XO(31,202,1,0), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
8620
{"azeo",  XO(31,202,1,0), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
8621
{"addzeo.", XO(31,202,1,1), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
8622
{"azeo.", XO(31,202,1,1), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
8623
8624
{"hashst",  X(31,722),  XRC_MASK,    POWER8,  0,    {RB, DW, RA0}},
8625
8626
{"stswi", X(31,725),  X_MASK,      PPCCOM,  E500|E500MC,  {RS, RA0, NB}},
8627
{"stsi",  X(31,725),  X_MASK,      PWRCOM,  0,    {RS, RA0, NB}},
8628
8629
{"sthcx.",  XRC(31,726,1),  X_MASK,   POWER8|E6500, 0,    {RS, RA0, RB}},
8630
8631
{"stfdx", X(31,727),  X_MASK,      COM, PPCEFS,   {FRS, RA0, RB}},
8632
8633
{"srlq",  XRC(31,728,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
8634
{"srlq.", XRC(31,728,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
8635
8636
{"sreq",  XRC(31,729,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
8637
{"sreq.", XRC(31,729,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
8638
8639
{"mftgpr",  XRC(31,735,0),  XRA_MASK,    POWER6,  POWER7,   {RT, FRB}},
8640
{"stfdepx", X(31,735),  X_MASK,   E500MC|PPCA2, 0,    {FRS, RA0, RB}},
8641
8642
{"stddx", X(31,739),  X_MASK,      E500MC,  0,    {RS, RA, RB}},
8643
8644
{"stvswx",  X(31,741),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
8645
8646
{"stdat", X(31,742),  X_MASK,      POWER9,  0,    {RS, RA0, FC}},
8647
8648
{"stqfcmux",  APU(31,743,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8649
8650
{"subfmeo", XO(31,232,1,0), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
8651
{"sfmeo", XO(31,232,1,0), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
8652
{"subfmeo.",  XO(31,232,1,1), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
8653
{"sfmeo.",  XO(31,232,1,1), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
8654
8655
{"mulldo",  XO(31,233,1,0), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
8656
{"mulldo.", XO(31,233,1,1), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
8657
8658
{"addmeo",  XO(31,234,1,0), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
8659
{"ameo",  XO(31,234,1,0), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
8660
{"addmeo.", XO(31,234,1,1), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
8661
{"ameo.", XO(31,234,1,1), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
8662
8663
{"mullwo",  XO(31,235,1,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8664
{"mulso", XO(31,235,1,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8665
{"mullwo.", XO(31,235,1,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8666
{"mulso.",  XO(31,235,1,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8667
8668
{"stxvprll",  X(31,749),  XX1_MASK,    PPCVSXF, 0,    {XSP, RA0, RB}},
8669
8670
{"tsuspend.", XRCL(31,750,0,1), XRTRARB_MASK,PPCHTM,  EXT,    {0}},
8671
{"tresume.",  XRCL(31,750,1,1), XRTRARB_MASK,PPCHTM,  EXT,    {0}},
8672
{"tsr.",  XRC(31,750,1),    XRTLRARB_MASK,PPCHTM, 0,    {L}},
8673
8674
{"hashchk", X(31,754),  XRC_MASK,    POWER8,  0,    {RB, DW, RA0}},
8675
8676
{"darn",  X(31,755),  XLRAND_MASK, POWER9,  0,    {RT, LRAND}},
8677
8678
{"dcba",  X(31,758), XRT_MASK, PPC405|PPC7450|BOOKE|PPCA2|PPC476, 0, {RA0, RB}},
8679
{"dcbal", XOPL(31,758,1), XRT_MASK,    E500MC,  0,    {RA0, RB}},
8680
8681
{"stfdux",  X(31,759),  X_MASK,      COM, PPCEFS,   {FRS, RAS, RB}},
8682
8683
{"srliq", XRC(31,760,0),  X_MASK,      M601,  0,    {RA, RS, SH}},
8684
{"srliq.",  XRC(31,760,1),  X_MASK,      M601,  0,    {RA, RS, SH}},
8685
8686
{"lvsm",  X(31,773),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
8687
8688
{"copy",  XOPL(31,774,1), XRT_MASK,    POWER9,  0,    {RA0, RB}},
8689
8690
{"stvepxl", X(31,775),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
8691
{"lvlxl", X(31,775),  X_MASK,      CELL,  0,    {VD, RA0, RB}},
8692
{"ldfcmux", APU(31,775,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8693
8694
{"dozo",  XO(31,264,1,0), XO_MASK,     M601,  0,    {RT, RA, RB}},
8695
{"dozo.", XO(31,264,1,1), XO_MASK,     M601,  0,    {RT, RA, RB}},
8696
8697
{"addo",  XO(31,266,1,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8698
{"caxo",  XO(31,266,1,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8699
{"addo.", XO(31,266,1,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8700
{"caxo.", XO(31,266,1,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8701
8702
{"modsd", X(31,777),  X_MASK,      POWER9,  0,    {RT, RA, RB}},
8703
{"modsw", X(31,779),  X_MASK,      POWER9,  0,    {RT, RA, RB}},
8704
8705
{"lxvw4x",  X(31,780),  XX1_MASK,    PPCVSX,  0,    {XT6, RA0, RB}},
8706
{"lxsibzx", X(31,781),  XX1_MASK,    PPCVSX3, 0,    {XT6, RA0, RB}},
8707
8708
{"tabortwc.", XRC(31,782,1),  X_MASK,      PPCHTM,  0,    {TO, RA, RB}},
8709
8710
{"tlbivax", X(31,786),  XRT_MASK, BOOKE|PPCA2|PPC476, 0,  {RA0, RB}},
8711
8712
{"lwzcix",  X(31,789),  X_MASK,      POWER6,  0,    {RT, RA0, RB}},
8713
8714
{"lhbrx", X(31,790),  X_MASK,      COM, 0,    {RT, RA0, RB}},
8715
8716
{"lfdpx", X(31,791),    X_MASK|Q_MASK, POWER6,  POWER7,   {FRTp, RA0, RB}},
8717
{"lfqx",  X(31,791),  X_MASK,      POWER2,  0,    {FRT, RA, RB}},
8718
8719
{"sraw",  XRC(31,792,0),  X_MASK,      PPCCOM,  0,    {RA, RS, RB}},
8720
{"sra",   XRC(31,792,0),  X_MASK,      PWRCOM,  0,    {RA, RS, RB}},
8721
{"sraw.", XRC(31,792,1),  X_MASK,      PPCCOM,  0,    {RA, RS, RB}},
8722
{"sra.",  XRC(31,792,1),  X_MASK,      PWRCOM,  0,    {RA, RS, RB}},
8723
8724
{"srad",  XRC(31,794,0),  X_MASK,      PPC64, 0,    {RA, RS, RB}},
8725
{"srad.", XRC(31,794,1),  X_MASK,      PPC64, 0,    {RA, RS, RB}},
8726
8727
{"evlddepx",    VX (31, 1598),  VX_MASK,     PPCSPE,  0,    {RT, RA, RB}},
8728
{"lfddx", X(31,803),  X_MASK,      E500MC,  0,    {FRT, RA, RB}},
8729
8730
{"lvtrxl",  X(31,805),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
8731
{"stvepx",  X(31,807),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
8732
{"lvrxl", X(31,807),  X_MASK,      CELL,  0,    {VD, RA0, RB}},
8733
8734
{"lxvh8x",  X(31,812),  XX1_MASK,    PPCVSX3, 0,    {XT6, RA0, RB}},
8735
{"lxsihzx", X(31,813),  XX1_MASK,    PPCVSX3, 0,    {XT6, RA0, RB}},
8736
8737
{"tabortdc.", XRC(31,814,1),  X_MASK,      PPCHTM,  0,    {TO, RA, RB}},
8738
8739
{"rac",   X(31,818),  X_MASK,      M601,  0,    {RT, RA, RB}},
8740
8741
{"erativax",  X(31,819),  X_MASK,      PPCA2, 0,    {RS, RA0, RB}},
8742
8743
{"lhzcix",  X(31,821),  X_MASK,      POWER6,  0,    {RT, RA0, RB}},
8744
8745
{"dss",   XDSS(31,822,0), XDSS_MASK,   PPCVEC,  0,    {STRM}},
8746
{"dssall",  XDSS(31,822,1), XDSS_MASK,   PPCVEC,  0,    {0}},
8747
8748
{"lfqux", X(31,823),  X_MASK,      POWER2,  0,    {FRT, RA, RB}},
8749
8750
{"srawi", XRC(31,824,0),  X_MASK,      PPCCOM,  0,    {RA, RS, SH}},
8751
{"srai",  XRC(31,824,0),  X_MASK,      PWRCOM,  0,    {RA, RS, SH}},
8752
{"srawi.",  XRC(31,824,1),  X_MASK,      PPCCOM,  0,    {RA, RS, SH}},
8753
{"srai.", XRC(31,824,1),  X_MASK,      PWRCOM,  0,    {RA, RS, SH}},
8754
8755
{"sradi", XS(31,413,0), XS_MASK,     PPC64, 0,    {RA, RS, SH6}},
8756
{"sradi.",  XS(31,413,1), XS_MASK,     PPC64, 0,    {RA, RS, SH6}},
8757
8758
{"lvtlxl",  X(31,837),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
8759
8760
{"cpabort", X(31,838),  XRTRARB_MASK,POWER9,  0,    {0}},
8761
8762
{"divo",  XO(31,331,1,0), XO_MASK,     M601,  0,    {RT, RA, RB}},
8763
{"divo.", XO(31,331,1,1), XO_MASK,     M601,  0,    {RT, RA, RB}},
8764
8765
{"lxvd2x",  X(31,844),  XX1_MASK,    PPCVSX,  0,    {XT6, RA0, RB}},
8766
{"lxvx",  X(31,844),  XX1_MASK,    POWER8,  POWER9|PPCVSX3, {XT6, RA0, RB}},
8767
8768
{"tabortwci.",  XRC(31,846,1),  X_MASK,      PPCHTM,  0,    {TO, RA, HTM_SI}},
8769
8770
{"tlbsrx.", XRC(31,850,1),  XRT_MASK,    PPCA2, 0,    {RA0, RB}},
8771
8772
{"slbiag",  X(31,850),  XRLARB_MASK, POWER10, 0,    {RS, A_L}},
8773
{"slbiag",  X(31,850),  XRARB_MASK,  POWER9,  POWER10,  {RS}},
8774
8775
{"slbmfev", X(31,851),  XRLA_MASK,   POWER9,  0,    {RT, RB, A_L}},
8776
{"slbmfev", X(31,851),  XRA_MASK,    PPC64, POWER9,   {RT, RB}},
8777
8778
{"lbzcix",  X(31,853),  X_MASK,      POWER6,  0,    {RT, RA0, RB}},
8779
8780
{"eieio", X(31,854),  0xffffffff,  PPC,   BOOKE|PPCA2|PPC476, {0}},
8781
{"mbar",  X(31,854),  X_MASK,    BOOKE|PPCA2|PPC476, 0, {MO}},
8782
{"eieio", XMBAR(31,854,1),0xffffffff,  E500,  0,    {0}},
8783
{"eieio", X(31,854),  0xffffffff, PPCA2|PPC476, 0,    {0}},
8784
8785
{"lfiwax",  X(31,855),  X_MASK, POWER6|PPCA2|PPC476, 0,   {FRT, RA0, RB}},
8786
8787
{"lvswxl",  X(31,869),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
8788
8789
{"abso",  XO(31,360,1,0), XORB_MASK,   M601,  0,    {RT, RA}},
8790
{"abso.", XO(31,360,1,1), XORB_MASK,   M601,  0,    {RT, RA}},
8791
8792
{"divso", XO(31,363,1,0), XO_MASK,     M601,  0,    {RT, RA, RB}},
8793
{"divso.",  XO(31,363,1,1), XO_MASK,     M601,  0,    {RT, RA, RB}},
8794
8795
{"lxvb16x", X(31,876),  XX1_MASK,    PPCVSX3, 0,    {XT6, RA0, RB}},
8796
8797
{"tabortdci.",  XRC(31,878,1),  X_MASK,      PPCHTM,  0,    {TO, RA, HTM_SI}},
8798
8799
{"rmieg", X(31,882),  XRTRA_MASK,  POWER9,  0,    {RB}},
8800
8801
{"ldcix", X(31,885),  X_MASK,      POWER6,  0,    {RT, RA0, RB}},
8802
8803
{"msgsync", X(31,886),  0xffffffff,  POWER9,  0,    {0}},
8804
8805
{"lfiwzx",  X(31,887),  X_MASK,   POWER7|PPCA2, 0,    {FRT, RA0, RB}},
8806
8807
{"extswsli",  XS(31,445,0), XS_MASK,     POWER9,  0,    {RA, RS, SH6}},
8808
{"extswsli.", XS(31,445,1), XS_MASK,     POWER9,  0,    {RA, RS, SH6}},
8809
8810
{"paste.",  XRC(31,902,1),  XLRT_MASK,   POWER10, 0,    {RA0, RB, L1OPT}},
8811
{"paste.",  XRCL(31,902,1,1),XRT_MASK,   POWER9,  POWER10,  {RA0, RB}},
8812
8813
{"stvlxl",  X(31,903),  X_MASK,      CELL,  0,    {VS, RA0, RB}},
8814
{"stdfcmux",  APU(31,903,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8815
8816
{"divdeuo", XO(31,393,1,0), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8817
{"divdeuo.",  XO(31,393,1,1), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8818
{"divweuo", XO(31,395,1,0), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8819
{"divweuo.",  XO(31,395,1,1), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8820
8821
{"stxvw4x", X(31,908),  XX1_MASK,    PPCVSX,  0,    {XS6, RA0, RB}},
8822
{"stxsibx", X(31,909),  XX1_MASK,    PPCVSX3, 0,    {XS6, RA0, RB}},
8823
8824
{"tabort.", XRC(31,910,1),  XRTRB_MASK,  PPCHTM,  0,    {RA}},
8825
8826
{"tlbsx", XRC(31,914,0),  X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RTO, RA0, RB}},
8827
{"tlbsx.",  XRC(31,914,1),  X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RTO, RA0, RB}},
8828
8829
{"slbmfee", X(31,915),  XRLA_MASK,   POWER9,  0,    {RT, RB, A_L}},
8830
{"slbmfee", X(31,915),  XRA_MASK,    PPC64, POWER9,   {RT, RB}},
8831
8832
{"stwcix",  X(31,917),  X_MASK,      POWER6,  0,    {RS, RA0, RB}},
8833
8834
{"sthbrx",  X(31,918),  X_MASK,      COM, 0,    {RS, RA0, RB}},
8835
8836
{"stfdpx",  X(31,919),    X_MASK|Q_MASK, POWER6,  POWER7,   {FRSp, RA0, RB}},
8837
{"stfqx", X(31,919),  X_MASK,      POWER2,  0,    {FRS, RA0, RB}},
8838
8839
{"sraq",  XRC(31,920,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
8840
{"sraq.", XRC(31,920,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
8841
8842
{"srea",  XRC(31,921,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
8843
{"srea.", XRC(31,921,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
8844
8845
{"extsh", XRC(31,922,0),  XRB_MASK,    PPCCOM,  0,    {RA, RS}},
8846
{"exts",  XRC(31,922,0),  XRB_MASK,    PWRCOM,  0,    {RA, RS}},
8847
{"extsh.",  XRC(31,922,1),  XRB_MASK,    PPCCOM,  0,    {RA, RS}},
8848
{"exts.", XRC(31,922,1),  XRB_MASK,    PWRCOM,  0,    {RA, RS}},
8849
8850
{"evstddepx", VX (31, 1854),  VX_MASK,     PPCSPE,  0,    {RT, RA, RB}},
8851
{"stfddx",  X(31,931),  X_MASK,      E500MC,  0,    {FRS, RA, RB}},
8852
8853
{"stvfrxl", X(31,933),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
8854
8855
{"wclrone", XOPL2(31,934,2),XRT_MASK,    PPCA2, EXT,    {RA0, RB}},
8856
{"wclrall", X(31,934),  XRARB_MASK,  PPCA2, EXT,    {L2}},
8857
{"wclr",  X(31,934),  X_MASK,      PPCA2, 0,    {L2, RA0, RB}},
8858
8859
{"stvrxl",  X(31,935),  X_MASK,      CELL,  0,    {VS, RA0, RB}},
8860
8861
{"divdeo",  XO(31,425,1,0), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8862
{"divdeo.", XO(31,425,1,1), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8863
{"divweo",  XO(31,427,1,0), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8864
{"divweo.", XO(31,427,1,1), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8865
8866
{"stxvh8x", X(31,940),  XX1_MASK,    PPCVSX3, 0,    {XS6, RA0, RB}},
8867
{"stxsihx", X(31,941),  XX1_MASK,    PPCVSX3, 0,    {XS6, RA0, RB}},
8868
8869
{"treclaim.", XRC(31,942,1),  XRTRB_MASK,  PPCHTM,  0,    {RA}},
8870
8871
{"tlbrehi", XTLB(31,946,0), XTLB_MASK,   PPC403,  PPCA2|EXT,  {RT, RA}},
8872
{"tlbrelo", XTLB(31,946,1), XTLB_MASK,   PPC403,  PPCA2|EXT,  {RT, RA}},
8873
{"tlbre", X(31,946),  X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RSO, RAOPT, SHO}},
8874
8875
{"sthcix",  X(31,949),  X_MASK,      POWER6,  0,    {RS, RA0, RB}},
8876
8877
{"icswepx", XRC(31,950,0),  X_MASK,      PPCA2, 0,    {RS, RA, RB}},
8878
{"icswepx.",  XRC(31,950,1),  X_MASK,      PPCA2, 0,    {RS, RA, RB}},
8879
8880
{"stfqux",  X(31,951),  X_MASK,      POWER2,  0,    {FRS, RA, RB}},
8881
8882
{"sraiq", XRC(31,952,0),  X_MASK,      M601,  0,    {RA, RS, SH}},
8883
{"sraiq.",  XRC(31,952,1),  X_MASK,      M601,  0,    {RA, RS, SH}},
8884
8885
{"extsb", XRC(31,954,0),  XRB_MASK,    PPC, 0,    {RA, RS}},
8886
{"extsb.",  XRC(31,954,1),  XRB_MASK,    PPC, 0,    {RA, RS}},
8887
8888
{"stvflxl", X(31,965),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
8889
8890
{"iccci", X(31,966), XRT_MASK, PPC403|PPC440|PPC476|TITAN|PPCA2, 0, {RAOPT, RBOPT}},
8891
{"ici",   X(31,966),  XRARB_MASK,  PPCA2|PPC476, 0,   {CT}},
8892
8893
{"divduo",  XO(31,457,1,0), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
8894
{"divduo.", XO(31,457,1,1), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
8895
8896
{"divwuo",  XO(31,459,1,0), XO_MASK,     PPC, 0,    {RT, RA, RB}},
8897
{"divwuo.", XO(31,459,1,1), XO_MASK,     PPC, 0,    {RT, RA, RB}},
8898
8899
{"stxvd2x", X(31,972),  XX1_MASK,    PPCVSX,  0,    {XS6, RA0, RB}},
8900
{"stxvx", X(31,972),  XX1_MASK,    POWER8,  POWER9|PPCVSX3, {XS6, RA0, RB}},
8901
8902
{"tlbld", X(31,978),  XRTRA_MASK,  PPC, PPC403|BOOKE|PPCA2|PPC476, {RB}},
8903
{"tlbwehi", XTLB(31,978,0), XTLB_MASK,   PPC403,  EXT,    {RT, RA}},
8904
{"tlbwelo", XTLB(31,978,1), XTLB_MASK,   PPC403,  EXT,    {RT, RA}},
8905
{"tlbwe", X(31,978),  X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RSO, RAOPT, SHO}},
8906
8907
{"slbfee.", XRC(31,979,1),  XRA_MASK,    POWER6,  0,    {RT, RB}},
8908
8909
{"stbcix",  X(31,981),  X_MASK,      POWER6,  0,    {RS, RA0, RB}},
8910
8911
{"icbi",  X(31,982),  XRT_MASK,    PPC, 0,    {RA0, RB}},
8912
8913
{"stfiwx",  X(31,983),  X_MASK,      PPC, PPCEFS,   {FRS, RA0, RB}},
8914
8915
{"extsw", XRC(31,986,0),  XRB_MASK,    PPC64, 0,    {RA, RS}},
8916
{"extsw.",  XRC(31,986,1),  XRB_MASK,    PPC64, 0,    {RA, RS}},
8917
8918
{"icbiep",  XRT(31,991,0),  XRT_MASK,    E500MC|PPCA2, 0,   {RA0, RB}},
8919
8920
{"stvswxl", X(31,997),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
8921
8922
{"icread",  X(31,998),     XRT_MASK, PPC403|PPC440|PPC476|TITAN, 0, {RA0, RB}},
8923
8924
{"nabso", XO(31,488,1,0), XORB_MASK,   M601,  0,    {RT, RA}},
8925
{"nabso.",  XO(31,488,1,1), XORB_MASK,   M601,  0,    {RT, RA}},
8926
8927
{"divdo", XO(31,489,1,0), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
8928
{"divdo.",  XO(31,489,1,1), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
8929
8930
{"divwo", XO(31,491,1,0), XO_MASK,     PPC, 0,    {RT, RA, RB}},
8931
{"divwo.",  XO(31,491,1,1), XO_MASK,     PPC, 0,    {RT, RA, RB}},
8932
8933
{"stxvb16x",  X(31,1004), XX1_MASK,    PPCVSX3, 0,    {XS6, RA0, RB}},
8934
8935
{"trechkpt.", XRC(31,1006,1), XRTRARB_MASK,PPCHTM,  0,    {0}},
8936
8937
{"tlbli", X(31,1010), XRTRA_MASK,  PPC, TITAN,    {RB}},
8938
8939
{"stdcix",  X(31,1013), X_MASK,      POWER6,  0,    {RS, RA0, RB}},
8940
8941
{"dcbz",  X(31,1014), XRT_MASK,    PPC, 0,    {RA0, RB}},
8942
{"dclz",  X(31,1014), XRT_MASK,    PPC, 0,    {RA0, RB}},
8943
{"dcbzl", XOPL(31,1014,1), XRT_MASK,   POWER4|E500MC, PPC476, {RA0, RB}},
8944
8945
{"dcbzep",  XRT(31,1023,0), XRT_MASK,    E500MC|PPCA2, 0,   {RA0, RB}},
8946
8947
{"lwz",   OP(32),   OP_MASK,     PPCCOM,  PPCVLE,   {RT, D, RA0}},
8948
{"l",   OP(32),   OP_MASK,     PWRCOM,  PPCVLE,   {RT, D, RA0}},
8949
8950
{"lwzu",  OP(33),   OP_MASK,     PPCCOM,  PPCVLE,   {RT, D, RAL}},
8951
{"lu",    OP(33),   OP_MASK,     PWRCOM,  PPCVLE,   {RT, D, RA0}},
8952
8953
{"lbz",   OP(34),   OP_MASK,     COM, PPCVLE,   {RT, D, RA0}},
8954
8955
{"lbzu",  OP(35),   OP_MASK,     COM, PPCVLE,   {RT, D, RAL}},
8956
8957
{"stw",   OP(36),   OP_MASK,     PPCCOM,  PPCVLE,   {RS, D, RA0}},
8958
{"st",    OP(36),   OP_MASK,     PWRCOM,  PPCVLE,   {RS, D, RA0}},
8959
8960
{"stwu",  OP(37),   OP_MASK,     PPCCOM,  PPCVLE,   {RS, D, RAS}},
8961
{"stu",   OP(37),   OP_MASK,     PWRCOM,  PPCVLE,   {RS, D, RA0}},
8962
8963
{"stb",   OP(38),   OP_MASK,     COM, PPCVLE,   {RS, D, RA0}},
8964
8965
{"stbu",  OP(39),   OP_MASK,     COM, PPCVLE,   {RS, D, RAS}},
8966
8967
{"lhz",   OP(40),   OP_MASK,     COM, PPCVLE,   {RT, D, RA0}},
8968
8969
{"lhzu",  OP(41),   OP_MASK,     COM, PPCVLE,   {RT, D, RAL}},
8970
8971
{"lha",   OP(42),   OP_MASK,     COM, PPCVLE,   {RT, D, RA0}},
8972
8973
{"lhau",  OP(43),   OP_MASK,     COM, PPCVLE,   {RT, D, RAL}},
8974
8975
{"sth",   OP(44),   OP_MASK,     COM, PPCVLE,   {RS, D, RA0}},
8976
8977
{"sthu",  OP(45),   OP_MASK,     COM, PPCVLE,   {RS, D, RAS}},
8978
8979
{"lmw",   OP(46),   OP_MASK,     PPCCOM,  PPCVLE,   {RT, D, RAM}},
8980
{"lm",    OP(46),   OP_MASK,     PWRCOM,  PPCVLE,   {RT, D, RA0}},
8981
8982
{"stmw",  OP(47),   OP_MASK,     PPCCOM,  PPCVLE,   {RS, D, RA0}},
8983
{"stm",   OP(47),   OP_MASK,     PWRCOM,  PPCVLE,   {RS, D, RA0}},
8984
8985
{"lfs",   OP(48),   OP_MASK,     COM, PPCEFS|PPCVLE,  {FRT, D, RA0}},
8986
8987
{"lfsu",  OP(49),   OP_MASK,     COM, PPCEFS|PPCVLE,  {FRT, D, RAS}},
8988
8989
{"lfd",   OP(50),   OP_MASK,     COM, PPCEFS|PPCVLE,  {FRT, D, RA0}},
8990
8991
{"lfdu",  OP(51),   OP_MASK,     COM, PPCEFS|PPCVLE,  {FRT, D, RAS}},
8992
8993
{"stfs",  OP(52),   OP_MASK,     COM, PPCEFS|PPCVLE,  {FRS, D, RA0}},
8994
8995
{"stfsu", OP(53),   OP_MASK,     COM, PPCEFS|PPCVLE,  {FRS, D, RAS}},
8996
8997
{"stfd",  OP(54),   OP_MASK,     COM, PPCEFS|PPCVLE,  {FRS, D, RA0}},
8998
8999
{"stfdu", OP(55),   OP_MASK,     COM, PPCEFS|PPCVLE,  {FRS, D, RAS}},
9000
9001
{"lq",    OP(56),      OP_MASK|Q_MASK, POWER4,  PPC476|PPCVLE,  {RTQ, DQ, RAQ}},
9002
{"psq_l", OP(56),   OP_MASK,     PPCPS, PPCVLE,   {FRT,PSD,RA,PSW,PSQ}},
9003
{"lfq",   OP(56),   OP_MASK,     POWER2,  PPCVLE,   {FRT, D, RA0}},
9004
9005
{"lxsd",  DSO(57,2),  DS_MASK,     PPCVSX3, PPCVLE,   {VD, DS, RA0}},
9006
{"lxssp", DSO(57,3),  DS_MASK,     PPCVSX3, PPCVLE,   {VD, DS, RA0}},
9007
{"lfdp",  OP(57),      OP_MASK|Q_MASK, POWER6,  POWER7|PPCVLE,  {FRTp, DS, RA0}},
9008
{"psq_lu",  OP(57),   OP_MASK,     PPCPS, PPCVLE,   {FRT,PSD,RA,PSW,PSQ}},
9009
{"lfqu",  OP(57),   OP_MASK,     POWER2,  PPCVLE,   {FRT, D, RA0}},
9010
9011
{"ld",    DSO(58,0),  DS_MASK,     PPC64, PPCVLE,   {RT, DS, RA0}},
9012
{"ldu",   DSO(58,1),  DS_MASK,     PPC64, PPCVLE,   {RT, DS, RAL}},
9013
{"lwa",   DSO(58,2),  DS_MASK,     PPC64, PPCVLE,   {RT, DS, RA0}},
9014
9015
{"dadd",  XRC(59,2,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9016
{"dadd.", XRC(59,2,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9017
9018
{"dqua",  ZRC(59,3,0),  Z2_MASK,     POWER6,  PPCVLE,   {FRT,FRA,FRB,RMC}},
9019
{"dqua.", ZRC(59,3,1),  Z2_MASK,     POWER6,  PPCVLE,   {FRT,FRA,FRB,RMC}},
9020
9021
{"dmxvi8ger4pp",XX3(59,2),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9022
{"xvi8ger4pp",  XX3(59,2),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9023
{"dmxvi8ger4",  XX3(59,3),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9024
{"xvi8ger4",  XX3(59,3),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9025
9026
{"fdivs", A(59,18,0), AFRC_MASK,   PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9027
{"fdivs.",  A(59,18,1), AFRC_MASK,   PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9028
9029
{"fsubs", A(59,20,0), AFRC_MASK,   PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9030
{"fsubs.",  A(59,20,1), AFRC_MASK,   PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9031
9032
{"fadds", A(59,21,0), AFRC_MASK,   PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9033
{"fadds.",  A(59,21,1), AFRC_MASK,   PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9034
9035
{"fsqrts",  A(59,22,0),    AFRAFRC_MASK, PPC, TITAN|PPCVLE, {FRT, FRB}},
9036
{"fsqrts.", A(59,22,1),    AFRAFRC_MASK, PPC, TITAN|PPCVLE, {FRT, FRB}},
9037
9038
{"fres",  A(59,24,0),   AFRAFRC_MASK,  POWER7,  PPCVLE,   {FRT, FRB}},
9039
{"fres",  A(59,24,0),   AFRALFRC_MASK, PPC, POWER7|PPCVLE,  {FRT, FRB, A_L}},
9040
{"fres.", A(59,24,1),   AFRAFRC_MASK,  POWER7,  PPCVLE,   {FRT, FRB}},
9041
{"fres.", A(59,24,1),   AFRALFRC_MASK, PPC, POWER7|PPCVLE,  {FRT, FRB, A_L}},
9042
9043
{"fmuls", A(59,25,0), AFRB_MASK,   PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC}},
9044
{"fmuls.",  A(59,25,1), AFRB_MASK,   PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC}},
9045
9046
{"frsqrtes",  A(59,26,0),   AFRAFRC_MASK,  POWER7,  PPCVLE,   {FRT, FRB}},
9047
{"frsqrtes",  A(59,26,0),   AFRALFRC_MASK, POWER5,  POWER7|PPCVLE,  {FRT, FRB, A_L}},
9048
{"frsqrtes.", A(59,26,1),   AFRAFRC_MASK,  POWER7,  PPCVLE,   {FRT, FRB}},
9049
{"frsqrtes.", A(59,26,1),   AFRALFRC_MASK, POWER5,  POWER7|PPCVLE,  {FRT, FRB, A_L}},
9050
9051
{"fmsubs",  A(59,28,0), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9052
{"fmsubs.", A(59,28,1), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9053
9054
{"fmadds",  A(59,29,0), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9055
{"fmadds.", A(59,29,1), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9056
9057
{"fnmsubs", A(59,30,0), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9058
{"fnmsubs.",  A(59,30,1), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9059
9060
{"fnmadds", A(59,31,0), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9061
{"fnmadds.",  A(59,31,1), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9062
9063
{"dmul",  XRC(59,34,0), X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9064
{"dmul.", XRC(59,34,1), X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9065
9066
{"drrnd", ZRC(59,35,0), Z2_MASK,     POWER6,  PPCVLE,   {FRT, FRA, FRB, RMC}},
9067
{"drrnd.",  ZRC(59,35,1), Z2_MASK,     POWER6,  PPCVLE,   {FRT, FRA, FRB, RMC}},
9068
9069
{"dmxvi8gerx4pp", XX3(59,10), XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9070
{"dmxvi8gerx4",   XX3(59,11), XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9071
9072
{"dscli", ZRC(59,66,0), Z_MASK,      POWER6,  PPCVLE,   {FRT, FRA, SH16}},
9073
{"dscli.",  ZRC(59,66,1), Z_MASK,      POWER6,  PPCVLE,   {FRT, FRA, SH16}},
9074
9075
{"dquai", ZRC(59,67,0), Z2_MASK,     POWER6,  PPCVLE,   {TE, FRT,FRB,RMC}},
9076
{"dquai.",  ZRC(59,67,1), Z2_MASK,     POWER6,  PPCVLE,   {TE, FRT,FRB,RMC}},
9077
9078
{"dmxvf16ger2pp",XX3(59,18),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9079
{"xvf16ger2pp",  XX3(59,18),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9080
{"dmxvf16ger2",  XX3(59,19),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9081
{"xvf16ger2",  XX3(59,19),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9082
9083
{"dscri", ZRC(59,98,0), Z_MASK,      POWER6,  PPCVLE,   {FRT, FRA, SH16}},
9084
{"dscri.",  ZRC(59,98,1), Z_MASK,      POWER6,  PPCVLE,   {FRT, FRA, SH16}},
9085
9086
{"drintx",  ZRC(59,99,0), Z2_MASK,     POWER6,  PPCVLE,   {R, FRT, FRB, RMC}},
9087
{"drintx.", ZRC(59,99,1), Z2_MASK,     POWER6,  PPCVLE,   {R, FRT, FRB, RMC}},
9088
9089
{"dmxvf32gerpp",XX3(59,26), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9090
{"xvf32gerpp",  XX3(59,26), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9091
{"dmxvf32ger",  XX3(59,27), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9092
{"xvf32ger",  XX3(59,27), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9093
9094
{"dcmpo", X(59,130),  X_MASK,      POWER6,  PPCVLE,   {BF,  FRA, FRB}},
9095
9096
{"dmxvi4ger8pp",XX3(59,34), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9097
{"xvi4ger8pp",  XX3(59,34), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9098
{"dmxvi4ger8",  XX3(59,35), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9099
{"xvi4ger8",  XX3(59,35), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9100
9101
{"dtstex",  X(59,162),  X_MASK,      POWER6,  PPCVLE,   {BF,  FRA, FRB}},
9102
9103
{"dmxvi16ger2spp",XX3(59,42), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9104
{"xvi16ger2spp",  XX3(59,42), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9105
{"dmxvi16ger2s",  XX3(59,43), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9106
{"xvi16ger2s",    XX3(59,43), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9107
9108
{"dtstdc",  Z(59,194),  Z_MASK,      POWER6,  PPCVLE,   {BF,  FRA, DCM}},
9109
9110
{"dmxvbf16ger2pp",XX3(59,50), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9111
{"xvbf16ger2pp",  XX3(59,50), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9112
{"dmxvbf16ger2",  XX3(59,51), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9113
{"xvbf16ger2",    XX3(59,51), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9114
9115
{"dtstdg",  Z(59,226),  Z_MASK,      POWER6,  PPCVLE,   {BF,  FRA, DGM}},
9116
9117
{"drintn",  ZRC(59,227,0),  Z2_MASK,     POWER6,  PPCVLE,   {R, FRT, FRB, RMC}},
9118
{"drintn.", ZRC(59,227,1),  Z2_MASK,     POWER6,  PPCVLE,   {R, FRT, FRB, RMC}},
9119
9120
{"dmxvf64gerpp",XX3(59,58), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9121
{"xvf64gerpp",  XX3(59,58), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9122
{"dmxvf64ger",  XX3(59,59), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9123
{"xvf64ger",  XX3(59,59), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9124
9125
{"dctdp", XRC(59,258,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRB}},
9126
{"dctdp.",  XRC(59,258,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRB}},
9127
9128
{"dmxvf16gerx2pp", XX3(59,66),  XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9129
{"dmxvf16gerx2",   XX3(59,67),  XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9130
9131
{"dctfix",  XRC(59,290,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRB}},
9132
{"dctfix.", XRC(59,290,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRB}},
9133
9134
{"ddedpd",  XRC(59,322,0),  X_MASK,      POWER6,  PPCVLE,   {SP, FRT, FRB}},
9135
{"ddedpd.", XRC(59,322,1),  X_MASK,      POWER6,  PPCVLE,   {SP, FRT, FRB}},
9136
9137
{"dmxvbf16gerx2pp", XX3(59,74), XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9138
{"dmxvi16ger2", XX3(59,75), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9139
{"xvi16ger2", XX3(59,75), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9140
9141
{"dmxvf16ger2np", XX3(59,82), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9142
{"xvf16ger2np",   XX3(59,82), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9143
{"dmxvf16gerx2np",XX3(59,83), XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9144
9145
{"dxex",  XRC(59,354,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRB}},
9146
{"dxex.", XRC(59,354,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRB}},
9147
9148
{"dmxvf32gernp",  XX3(59,90), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9149
{"xvf32gernp",    XX3(59,90), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9150
{"dmxvbf16gerx2", XX3(59,91), XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9151
9152
{"dmxvi8gerx4spp",XX3(59,98), XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9153
{"dmxvi8ger4spp", XX3(59,99), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9154
{"xvi8ger4spp",   XX3(59,99), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9155
9156
{"dmxvi16ger2pp", XX3(59,107),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9157
{"xvi16ger2pp",   XX3(59,107),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9158
9159
{"dmxvbf16ger2np",XX3(59,114),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9160
{"xvbf16ger2np",  XX3(59,114),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9161
{"dmxvbf16gerx2np",XX3(59,115), XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9162
9163
{"dmxvf64gernp",  XX3(59,122),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9164
{"xvf64gernp",    XX3(59,122),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9165
9166
{"dsub",  XRC(59,514,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9167
{"dsub.", XRC(59,514,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9168
9169
{"ddiv",  XRC(59,546,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9170
{"ddiv.", XRC(59,546,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9171
9172
{"dmxvf16ger2pn", XX3(59,146),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9173
{"xvf16ger2pn",   XX3(59,146),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9174
{"dmxvf16gerx2pn",XX3(59,147),  XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9175
9176
{"dmxvf32gerpn",XX3(59,154),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9177
{"xvf32gerpn",  XX3(59,154),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9178
9179
{"dcmpu", X(59,642),  X_MASK,      POWER6,  PPCVLE,   {BF,  FRA, FRB}},
9180
9181
{"dtstsf",  X(59,674),  X_MASK,      POWER6,  PPCVLE,   {BF,  FRA, FRB}},
9182
{"dtstsfi", X(59,675),  X_MASK|1<<22,POWER9,  PPCVLE,   {BF, UIM6, FRB}},
9183
9184
{"dmxvbf16ger2pn",XX3(59,178),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9185
{"xvbf16ger2pn",  XX3(59,178),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9186
{"dmxvbf16gerx2pn", XX3(59,179),XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9187
9188
{"dmxvf64gerpn",XX3(59,186),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9189
{"xvf64gerpn",  XX3(59,186),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9190
9191
{"drsp",  XRC(59,770,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRB}},
9192
{"drsp.", XRC(59,770,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRB}},
9193
9194
{"dcffix",  XRC(59,802,0), X_MASK|FRA_MASK, POWER7, PPCVLE,   {FRT, FRB}},
9195
{"dcffix.", XRC(59,802,1), X_MASK|FRA_MASK, POWER7, PPCVLE,   {FRT, FRB}},
9196
9197
{"dmxvf16gerx2nn", XX3(59,202), XX3GERX_MASK,  FUTURE,  PPCVLE,   {DMR, XA5p, XB6}},
9198
9199
{"denbcd",  XRC(59,834,0),  X_MASK,      POWER6,  PPCVLE,   {S, FRT, FRB}},
9200
{"denbcd.", XRC(59,834,1),  X_MASK,      POWER6,  PPCVLE,   {S, FRT, FRB}},
9201
9202
{"dmxvf16ger2nn", XX3(59,210),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9203
{"xvf16ger2nn",   XX3(59,210),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9204
9205
{"fcfids",  XRC(59,846,0),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
9206
{"fcfids.", XRC(59,846,1),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
9207
9208
{"diex",  XRC(59,866,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9209
{"diex.", XRC(59,866,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9210
9211
{"dmxvf32gernn",XX3(59,218),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9212
{"xvf32gernn",  XX3(59,218),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9213
9214
{"dmxvbf16gerx2nn", XX3(59,234),XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9215
9216
{"dmxvbf16ger2nn",XX3(59,242),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9217
{"xvbf16ger2nn",  XX3(59,242),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9218
9219
{"fcfidus", XRC(59,974,0),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
9220
{"fcfidus.",  XRC(59,974,1),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
9221
9222
{"dmxvf64gernn",XX3(59,250),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9223
{"xvf64gernn",  XX3(59,250),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9224
9225
{"xsaddsp", XX3(60,0),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9226
{"xsmaddasp", XX3(60,1),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9227
{"xxsldwi", XX3(60,2),  XX3SHW_MASK, PPCVSX,  PPCVLE,   {XT6, XA6, XB6, SHW}},
9228
{"xscmpeqdp", XX3(60,3),  XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9229
{"xsrsqrtesp",  XX2(60,10), XX2_MASK,    PPCVSX2, PPCVLE,   {XT6, XB6}},
9230
{"xssqrtsp",  XX2(60,11), XX2_MASK,    PPCVSX2, PPCVLE,   {XT6, XB6}},
9231
{"xxsel", XX4(60,3),  XX4_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6, XC6}},
9232
{"xssubsp", XX3(60,8),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9233
{"xsmaddmsp", XX3(60,9),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9234
{"xxspltd", XX3(60,10), XX3DM_MASK,  PPCVSX,  PPCVLE|EXT, {XT6, XAB6, DMEX}},
9235
{"xxmrghd", XX3(60,10), XX3_MASK,    PPCVSX,  PPCVLE|EXT, {XT6, XA6, XB6}},
9236
{"xxswapd", XX3(60,10)|(2<<8), XX3_MASK, PPCVSX,  PPCVLE|EXT, {XT6, XAB6}},
9237
{"xxmrgld", XX3(60,10)|(3<<8), XX3_MASK, PPCVSX,  PPCVLE|EXT, {XT6, XA6, XB6}},
9238
{"xxpermdi",  XX3(60,10), XX3DM_MASK,  PPCVSX,  PPCVLE,   {XT6, XA6, XB6, DM}},
9239
{"xscmpgtdp", XX3(60,11), XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9240
{"xsresp",  XX2(60,26), XX2_MASK,    PPCVSX2, PPCVLE,   {XT6, XB6}},
9241
{"xsmulsp", XX3(60,16), XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9242
{"xsmsubasp", XX3(60,17), XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9243
{"xxmrghw", XX3(60,18), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9244
{"xscmpgedp", XX3(60,19), XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9245
{"xsdivsp", XX3(60,24), XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9246
{"xsmsubmsp", XX3(60,25), XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9247
{"xxperm",  XX3(60,26), XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9248
{"xsadddp", XX3(60,32), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9249
{"xsmaddadp", XX3(60,33), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9250
{"xscmpudp",  XX3(60,35), XX3BF_MASK,  PPCVSX,  PPCVLE,   {BF, XA6, XB6}},
9251
{"xscvdpuxws",  XX2(60,72), XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9252
{"xsrdpi",  XX2(60,73), XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9253
{"xsrsqrtedp",  XX2(60,74), XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9254
{"xssqrtdp",  XX2(60,75), XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9255
{"xssubdp", XX3(60,40), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9256
{"xsmaddmdp", XX3(60,41), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9257
{"xscmpodp",  XX3(60,43), XX3BF_MASK,  PPCVSX,  PPCVLE,   {BF, XA6, XB6}},
9258
{"xscvdpsxws",  XX2(60,88), XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9259
{"xsrdpiz", XX2(60,89), XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9260
{"xsredp",  XX2(60,90), XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9261
{"xsmuldp", XX3(60,48), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9262
{"xsmsubadp", XX3(60,49), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9263
{"xxmrglw", XX3(60,50), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9264
{"xsrdpip", XX2(60,105),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9265
{"xstsqrtdp", XX2(60,106),  XX2BF_MASK,  PPCVSX,  PPCVLE,   {BF, XB6}},
9266
{"xsrdpic", XX2(60,107),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9267
{"xsdivdp", XX3(60,56), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9268
{"xsmsubmdp", XX3(60,57), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9269
{"xxpermr", XX3(60,58), XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9270
{"xscmpexpdp",  XX3(60,59), XX3BF_MASK,  PPCVSX3, PPCVLE,   {BF, XA6, XB6}},
9271
{"xsrdpim", XX2(60,121),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9272
{"xstdivdp",  XX3(60,61), XX3BF_MASK,  PPCVSX,  PPCVLE,   {BF, XA6, XB6}},
9273
{"xvaddsp", XX3(60,64), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9274
{"xvmaddasp", XX3(60,65), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9275
{"xvcmpeqsp", XX3RC(60,67,0), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9276
{"xvcmpeqsp.",  XX3RC(60,67,1), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9277
{"xvcvspuxws",  XX2(60,136),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9278
{"xvrspi",  XX2(60,137),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9279
{"xvrsqrtesp",  XX2(60,138),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9280
{"xvsqrtsp",  XX2(60,139),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9281
{"xvsubsp", XX3(60,72), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9282
{"xvmaddmsp", XX3(60,73), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9283
{"xvcmpgtsp", XX3RC(60,75,0), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9284
{"xvcmpgtsp.",  XX3RC(60,75,1), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9285
{"xvcvspsxws",  XX2(60,152),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9286
{"xvrspiz", XX2(60,153),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9287
{"xvresp",  XX2(60,154),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9288
{"xvmulsp", XX3(60,80), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9289
{"xvmsubasp", XX3(60,81), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9290
{"xxspltw", XX2(60,164),  XX2UIM_MASK, PPCVSX,  PPCVLE,   {XT6, XB6, UIM}},
9291
{"xxextractuw", XX2(60,165),   XX2UIM4_MASK, PPCVSX3, PPCVLE,   {XT6, XB6, UIMM4}},
9292
{"xvcmpgesp", XX3RC(60,83,0), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9293
{"xvcmpgesp.",  XX3RC(60,83,1), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9294
{"xvcvuxwsp", XX2(60,168),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9295
{"xvrspip", XX2(60,169),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9296
{"xvtsqrtsp", XX2(60,170),  XX2BF_MASK,  PPCVSX,  PPCVLE,   {BF, XB6}},
9297
{"xvrspic", XX2(60,171),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9298
{"xvdivsp", XX3(60,88), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9299
{"xvmsubmsp", XX3(60,89), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9300
{"xxspltib",  X(60,360),   XX1_MASK|3<<19, PPCVSX3, PPCVLE,   {XT6, IMM8}},
9301
{"lxvkq", XVA(60,360,31), XVA_MASK&~1, POWER10, PPCVLE,   {XT6, UIM5}},
9302
{"xxinsertw", XX2(60,181),   XX2UIM4_MASK, PPCVSX3, PPCVLE,   {XT6, XB6, UIMM4}},
9303
{"xvcvsxwsp", XX2(60,184),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9304
{"xvrspim", XX2(60,185),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9305
{"xvtdivsp",  XX3(60,93), XX3BF_MASK,  PPCVSX,  PPCVLE,   {BF, XA6, XB6}},
9306
{"xvadddp", XX3(60,96), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9307
{"xvmaddadp", XX3(60,97), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9308
{"xvcmpeqdp", XX3RC(60,99,0), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9309
{"xvcmpeqdp.",  XX3RC(60,99,1), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9310
{"xvcvdpuxws",  XX2(60,200),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9311
{"xvrdpi",  XX2(60,201),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9312
{"xvrsqrtedp",  XX2(60,202),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9313
{"xvsqrtdp",  XX2(60,203),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9314
{"xvsubdp", XX3(60,104),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9315
{"xvmaddmdp", XX3(60,105),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9316
{"xvcmpgtdp", XX3RC(60,107,0), XX3_MASK,   PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9317
{"xvcmpgtdp.",  XX3RC(60,107,1), XX3_MASK,   PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9318
{"xvcvdpsxws",  XX2(60,216),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9319
{"xvrdpiz", XX2(60,217),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9320
{"xvredp",  XX2(60,218),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9321
{"xvmuldp", XX3(60,112),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9322
{"xvmsubadp", XX3(60,113),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9323
{"xvcmpgedp", XX3RC(60,115,0), XX3_MASK,   PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9324
{"xvcmpgedp.",  XX3RC(60,115,1), XX3_MASK,   PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9325
{"xvcvuxwdp", XX2(60,232),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9326
{"xvrdpip", XX2(60,233),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9327
{"xvtsqrtdp", XX2(60,234),  XX2BF_MASK,  PPCVSX,  PPCVLE,   {BF, XB6}},
9328
{"xvrdpic", XX2(60,235),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9329
{"xvdivdp", XX3(60,120),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9330
{"xvmsubmdp", XX3(60,121),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9331
{"xvcvsxwdp", XX2(60,248),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9332
{"xvrdpim", XX2(60,249),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9333
{"xvtdivdp",  XX3(60,125),  XX3BF_MASK,  PPCVSX,  PPCVLE,   {BF, XA6, XB6}},
9334
{"xsmaxcdp",  XX3(60,128),  XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9335
{"xsnmaddasp",  XX3(60,129),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9336
{"xxland",  XX3(60,130),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9337
{"xscvdpsp",  XX2(60,265),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9338
{"xscvdpspn", XX2(60,267),  XX2_MASK,    PPCVSX2, PPCVLE,   {XT6, XB6}},
9339
{"xsmincdp",  XX3(60,136),  XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9340
{"xsnmaddmsp",  XX3(60,137),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9341
{"xxlandc", XX3(60,138),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9342
{"xsrsp", XX2(60,281),  XX2_MASK,    PPCVSX2, PPCVLE,   {XT6, XB6}},
9343
{"xsmaxjdp",  XX3(60,144),  XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9344
{"xsnmsubasp",  XX3(60,145),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9345
{"xxmr",  XX3(60,146),  XX3_MASK,    PPCVSX,  PPCVLE|EXT, {XT6, XAB6}},
9346
{"xxlor", XX3(60,146),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9347
{"xscvuxdsp", XX2(60,296),  XX2_MASK,    PPCVSX2, PPCVLE,   {XT6, XB6}},
9348
{"xststdcsp", XX2(60,298),  XX2BFD_MASK, PPCVSX3, PPCVLE,   {BF, XB6, DCMX}},
9349
{"xsminjdp",  XX3(60,152),  XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9350
{"xsnmsubmsp",  XX3(60,153),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9351
{"xxlxor",  XX3(60,154),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9352
{"xscvsxdsp", XX2(60,312),  XX2_MASK,    PPCVSX2, PPCVLE,   {XT6, XB6}},
9353
{"xsmaxdp", XX3(60,160),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9354
{"xsnmaddadp",  XX3(60,161),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9355
{"xxlnot",  XX3(60,162),  XX3_MASK,    PPCVSX,  PPCVLE|EXT, {XT6, XAB6}},
9356
{"xxlnor",  XX3(60,162),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9357
{"xscvdpuxds",  XX2(60,328),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9358
{"xscvspdp",  XX2(60,329),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9359
{"xscvspdpn", XX2(60,331),  XX2_MASK,    PPCVSX2, PPCVLE,   {XT6, XB6}},
9360
{"xsmindp", XX3(60,168),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9361
{"xsnmaddmdp",  XX3(60,169),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9362
{"xxlorc",  XX3(60,170),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9363
{"xscvdpsxds",  XX2(60,344),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9364
{"xsabsdp", XX2(60,345),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9365
{"xsxexpdp",  XX2VA(60,347,0),XX2_MASK|1,  PPCVSX3, PPCVLE,   {RT, XB6}},
9366
{"xsxsigdp",  XX2VA(60,347,1),XX2_MASK|1,  PPCVSX3, PPCVLE,   {RT, XB6}},
9367
{"xscvhpdp",  XX2VA(60,347,16),XX2_MASK,   PPCVSX3, PPCVLE,   {XT6, XB6}},
9368
{"xscvdphp",  XX2VA(60,347,17),XX2_MASK,   PPCVSX3, PPCVLE,   {XT6, XB6}},
9369
{"xscpsgndp", XX3(60,176),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9370
{"xsnmsubadp",  XX3(60,177),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9371
{"xxlnand", XX3(60,178),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9372
{"xscvuxddp", XX2(60,360),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9373
{"xsnabsdp",  XX2(60,361),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9374
{"xststdcdp", XX2(60,362),  XX2BFD_MASK, PPCVSX3, PPCVLE,   {BF, XB6, DCMX}},
9375
{"xsnmsubmdp",  XX3(60,185),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9376
{"xxleqv",  XX3(60,186),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9377
{"xscvsxddp", XX2(60,376),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9378
{"xsnegdp", XX2(60,377),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9379
{"xvmaxsp", XX3(60,192),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9380
{"xvnmaddasp",  XX3(60,193),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9381
{"xvcvspuxds",  XX2(60,392),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9382
{"xvcvdpsp",  XX2(60,393),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9383
{"xvminsp", XX3(60,200),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9384
{"xvnmaddmsp",  XX3(60,201),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9385
{"xvcvspsxds",  XX2(60,408),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9386
{"xvabssp", XX2(60,409),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9387
{"xvmovsp", XX3(60,208),  XX3_MASK,    PPCVSX,  PPCVLE|EXT, {XT6, XAB6}},
9388
{"xvcpsgnsp", XX3(60,208),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9389
{"xvnmsubasp",  XX3(60,209),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9390
{"xvcvuxdsp", XX2(60,424),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9391
{"xvnabssp",  XX2(60,425),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9392
{"xvtstdcsp", XX2(60,426),  XX2DCMXS_MASK, PPCVSX3, PPCVLE,   {XT6, XB6, DCMXS}},
9393
{"xviexpsp",  XX3(60,216),  XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9394
{"xvnmsubmsp",  XX3(60,217),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9395
{"xvcvsxdsp", XX2(60,440),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9396
{"xvnegsp", XX2(60,441),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9397
{"xvmaxdp", XX3(60,224),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9398
{"xvnmaddadp",  XX3(60,225),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9399
{"dmxxextfdmr512",XX3(60,226),  XX3DMR_MASK, FUTURE,  PPCVLE,   {XA5p, XB5p, DMR, P1}},
9400
{"xvcvdpuxds",  XX2(60,456),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9401
{"xvcvspdp",  XX2(60,457),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9402
{"xxgenpcvbm",  X(60,916),  XX1_MASK,    POWER10, PPCVLE,   {XT6, VB, UIMM}},
9403
{"xxgenpcvhm",  X(60,917),  XX1_MASK,    POWER10, PPCVLE,   {XT6, VB, UIMM}},
9404
{"xsiexpdp",  X(60,918),  XX1_MASK,    PPCVSX3, PPCVLE,   {XT6, RA, RB}},
9405
{"xvmindp", XX3(60,232),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9406
{"xvnmaddmdp",  XX3(60,233),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9407
{"dmxxinstdmr512",XX3(60,234),  XX3DMR_MASK, FUTURE,  PPCVLE,   {DMR, XA5p, XB5p,P1}},
9408
{"xvcvdpsxds",  XX2(60,472),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9409
{"xvabsdp", XX2(60,473),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9410
{"xxgenpcvwm",  X(60,948),  XX1_MASK,    POWER10, PPCVLE,   {XT6, VB, UIMM}},
9411
{"xxgenpcvdm",  X(60,949),  XX1_MASK,    POWER10, PPCVLE,   {XT6, VB, UIMM}},
9412
{"xvxexpdp",  XX2VA(60,475,0),XX2_MASK,    PPCVSX3, PPCVLE,   {XT6, XB6}},
9413
{"xvxsigdp",  XX2VA(60,475,1),XX2_MASK,    PPCVSX3, PPCVLE,   {XT6, XB6}},
9414
{"xvtlsbb", XX2VA(60,475,2),XX2BF_MASK,  POWER10, PPCVLE,   {BF, XB6}},
9415
{"xxbrh", XX2VA(60,475,7),XX2_MASK,    PPCVSX3, PPCVLE,   {XT6, XB6}},
9416
{"xvxexpsp",  XX2VA(60,475,8),XX2_MASK,    PPCVSX3, PPCVLE,   {XT6, XB6}},
9417
{"xvxsigsp",  XX2VA(60,475,9),XX2_MASK,    PPCVSX3, PPCVLE,   {XT6, XB6}},
9418
{"xxbrw", XX2VA(60,475,15),XX2_MASK,   PPCVSX3, PPCVLE,   {XT6, XB6}},
9419
{"xvcvbf16spn", XX2VA(60,475,16),XX2_MASK,   PPCVSX4, PPCVLE,   {XT6, XB6}},
9420
{"xvcvspbf16",  XX2VA(60,475,17),XX2_MASK,   PPCVSX4, PPCVLE,   {XT6, XB6}},
9421
{"xxbrd", XX2VA(60,475,23),XX2_MASK,   PPCVSX3, PPCVLE,   {XT6, XB6}},
9422
{"xvcvhpsp",  XX2VA(60,475,24),XX2_MASK,   PPCVSX3, PPCVLE,   {XT6, XB6}},
9423
{"xvcvsphp",  XX2VA(60,475,25),XX2_MASK,   PPCVSX3, PPCVLE,   {XT6, XB6}},
9424
{"xxbrq", XX2VA(60,475,31),XX2_MASK,   PPCVSX3, PPCVLE,   {XT6, XB6}},
9425
{"xvmovdp", XX3(60,240),  XX3_MASK,    PPCVSX,  PPCVLE|EXT, {XT6, XAB6}},
9426
{"xvcpsgndp", XX3(60,240),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9427
{"xvnmsubadp",  XX3(60,241),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9428
{"dmxxextfdmr256",XX2(60,484),  XX2DMR_MASK, FUTURE,  PPCVLE,   {XB5p, DMR, P2}},
9429
{"dmxxinstdmr256",XX2(60,485),  XX2DMR_MASK, FUTURE,  PPCVLE,   {DMR, XB5p, P2}},
9430
{"xvcvuxddp", XX2(60,488),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9431
{"xvnabsdp",  XX2(60,489),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9432
{"xvtstdcdp", XX2(60,490),  XX2DCMXS_MASK, PPCVSX3, PPCVLE,   {XT6, XB6, DCMXS}},
9433
{"xviexpdp",  XX3(60,248),  XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9434
{"xvnmsubmdp",  XX3(60,249),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9435
{"xvcvsxddp", XX2(60,504),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9436
{"xvnegdp", XX2(60,505),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9437
9438
{"psq_st",  OP(60),   OP_MASK,     PPCPS, PPCVLE,   {FRS,PSD,RA,PSW,PSQ}},
9439
{"stfq",  OP(60),   OP_MASK,     POWER2,  PPCVLE,   {FRS, D, RA}},
9440
9441
{"lxv",   DQX(61,1),  DQX_MASK,    PPCVSX3, PPCVLE,   {XTQ6, DQ, RA0}},
9442
{"stxv",  DQX(61,5),  DQX_MASK,    PPCVSX3, PPCVLE,   {XSQ6, DQ, RA0}},
9443
{"stxsd", DSO(61,2),  DS_MASK,     PPCVSX3, PPCVLE,   {VS, DS, RA0}},
9444
{"stxssp",  DSO(61,3),  DS_MASK,     PPCVSX3, PPCVLE,   {VS, DS, RA0}},
9445
{"stfdp", OP(61),      OP_MASK|Q_MASK, POWER6,  POWER7|PPCVLE,  {FRSp, DS, RA0}},
9446
{"psq_stu", OP(61),   OP_MASK,     PPCPS, PPCVLE,   {FRS,PSD,RA,PSW,PSQ}},
9447
{"stfqu", OP(61),   OP_MASK,     POWER2,  PPCVLE,   {FRS, D, RA}},
9448
9449
{"std",   DSO(62,0),  DS_MASK,     PPC64, PPCVLE,   {RS, DS, RA0}},
9450
{"stdu",  DSO(62,1),  DS_MASK,     PPC64, PPCVLE,   {RS, DS, RAS}},
9451
{"stq",   DSO(62,2),   DS_MASK|Q_MASK, POWER4,  PPC476|PPCVLE,  {RSQ, DS, RA0}},
9452
9453
{"fcmpu", X(63,0),  XBF_MASK,    COM, PPCEFS|PPCVLE,  {BF, FRA, FRB}},
9454
9455
{"daddq", XRC(63,2,0),  X_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, FRBp}},
9456
{"daddq.",  XRC(63,2,1),  X_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, FRBp}},
9457
9458
{"dquaq", ZRC(63,3,0), Z2_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, FRBp, RMC}},
9459
{"dquaq.",  ZRC(63,3,1), Z2_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, FRBp, RMC}},
9460
9461
{"xsaddqp", XRC(63,4,0),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9462
{"xsaddqpo",  XRC(63,4,1),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9463
9464
{"xsrqpi",  ZRC(63,5,0),  Z2_MASK,     PPCVSX3, PPCVLE,   {R, VD, VB, RMC}},
9465
{"xsrqpix", ZRC(63,5,1),  Z2_MASK,     PPCVSX3, PPCVLE,   {R, VD, VB, RMC}},
9466
9467
{"fcpsgn",  XRC(63,8,0),  X_MASK, POWER6|PPCA2|PPC476, PPCVLE,  {FRT, FRA, FRB}},
9468
{"fcpsgn.", XRC(63,8,1),  X_MASK, POWER6|PPCA2|PPC476, PPCVLE,  {FRT, FRA, FRB}},
9469
9470
{"frsp",  XRC(63,12,0), XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
9471
{"frsp.", XRC(63,12,1), XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
9472
9473
{"fctiw", XRC(63,14,0), XRA_MASK,    PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRB}},
9474
{"fcir",  XRC(63,14,0), XRA_MASK,    PWR2COM, PPCVLE,   {FRT, FRB}},
9475
{"fctiw.",  XRC(63,14,1), XRA_MASK,    PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRB}},
9476
{"fcir.", XRC(63,14,1), XRA_MASK,    PWR2COM, PPCVLE,   {FRT, FRB}},
9477
9478
{"fctiwz",  XRC(63,15,0), XRA_MASK,    PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRB}},
9479
{"fcirz", XRC(63,15,0), XRA_MASK,    PWR2COM, PPCVLE,   {FRT, FRB}},
9480
{"fctiwz.", XRC(63,15,1), XRA_MASK,    PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRB}},
9481
{"fcirz.",  XRC(63,15,1), XRA_MASK,    PWR2COM, PPCVLE,   {FRT, FRB}},
9482
9483
{"fdiv",  A(63,18,0), AFRC_MASK,   PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9484
{"fd",    A(63,18,0), AFRC_MASK,   PWRCOM,  PPCVLE,   {FRT, FRA, FRB}},
9485
{"fdiv.", A(63,18,1), AFRC_MASK,   PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9486
{"fd.",   A(63,18,1), AFRC_MASK,   PWRCOM,  PPCVLE,   {FRT, FRA, FRB}},
9487
9488
{"fsub",  A(63,20,0), AFRC_MASK,   PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9489
{"fs",    A(63,20,0), AFRC_MASK,   PWRCOM,  PPCVLE,   {FRT, FRA, FRB}},
9490
{"fsub.", A(63,20,1), AFRC_MASK,   PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9491
{"fs.",   A(63,20,1), AFRC_MASK,   PWRCOM,  PPCVLE,   {FRT, FRA, FRB}},
9492
9493
{"fadd",  A(63,21,0), AFRC_MASK,   PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9494
{"fa",    A(63,21,0), AFRC_MASK,   PWRCOM,  PPCVLE,   {FRT, FRA, FRB}},
9495
{"fadd.", A(63,21,1), AFRC_MASK,   PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9496
{"fa.",   A(63,21,1), AFRC_MASK,   PWRCOM,  PPCVLE,   {FRT, FRA, FRB}},
9497
9498
{"fsqrt", A(63,22,0),    AFRAFRC_MASK, PPCPWR2, TITAN|PPCVLE, {FRT, FRB}},
9499
{"fsqrt.",  A(63,22,1),    AFRAFRC_MASK, PPCPWR2, TITAN|PPCVLE, {FRT, FRB}},
9500
9501
{"fsel",  A(63,23,0), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9502
{"fsel.", A(63,23,1), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9503
9504
{"fre",   A(63,24,0),   AFRAFRC_MASK,  POWER7,  PPCVLE,   {FRT, FRB}},
9505
{"fre",   A(63,24,0),   AFRALFRC_MASK, POWER5,  POWER7|PPCVLE,  {FRT, FRB, A_L}},
9506
{"fre.",  A(63,24,1),   AFRAFRC_MASK,  POWER7,  PPCVLE,   {FRT, FRB}},
9507
{"fre.",  A(63,24,1),   AFRALFRC_MASK, POWER5,  POWER7|PPCVLE,  {FRT, FRB, A_L}},
9508
9509
{"fmul",  A(63,25,0), AFRB_MASK,   PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC}},
9510
{"fm",    A(63,25,0), AFRB_MASK,   PWRCOM,  PPCVLE|PPCVLE,  {FRT, FRA, FRC}},
9511
{"fmul.", A(63,25,1), AFRB_MASK,   PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC}},
9512
{"fm.",   A(63,25,1), AFRB_MASK,   PWRCOM,  PPCVLE|PPCVLE,  {FRT, FRA, FRC}},
9513
9514
{"frsqrte", A(63,26,0),   AFRAFRC_MASK,  POWER7,  PPCVLE,   {FRT, FRB}},
9515
{"frsqrte", A(63,26,0),   AFRALFRC_MASK, PPC, POWER7|PPCVLE,  {FRT, FRB, A_L}},
9516
{"frsqrte.",  A(63,26,1),   AFRAFRC_MASK,  POWER7,  PPCVLE,   {FRT, FRB}},
9517
{"frsqrte.",  A(63,26,1),   AFRALFRC_MASK, PPC, POWER7|PPCVLE,  {FRT, FRB, A_L}},
9518
9519
{"fmsub", A(63,28,0), A_MASK,      PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9520
{"fms",   A(63,28,0), A_MASK,      PWRCOM,  PPCVLE,   {FRT, FRA, FRC, FRB}},
9521
{"fmsub.",  A(63,28,1), A_MASK,      PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9522
{"fms.",  A(63,28,1), A_MASK,      PWRCOM,  PPCVLE,   {FRT, FRA, FRC, FRB}},
9523
9524
{"fmadd", A(63,29,0), A_MASK,      PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9525
{"fma",   A(63,29,0), A_MASK,      PWRCOM,  PPCVLE,   {FRT, FRA, FRC, FRB}},
9526
{"fmadd.",  A(63,29,1), A_MASK,      PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9527
{"fma.",  A(63,29,1), A_MASK,      PWRCOM,  PPCVLE,   {FRT, FRA, FRC, FRB}},
9528
9529
{"fnmsub",  A(63,30,0), A_MASK,      PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9530
{"fnms",  A(63,30,0), A_MASK,      PWRCOM,  PPCVLE,   {FRT, FRA, FRC, FRB}},
9531
{"fnmsub.", A(63,30,1), A_MASK,      PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9532
{"fnms.", A(63,30,1), A_MASK,      PWRCOM,  PPCVLE,   {FRT, FRA, FRC, FRB}},
9533
9534
{"fnmadd",  A(63,31,0), A_MASK,      PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9535
{"fnma",  A(63,31,0), A_MASK,      PWRCOM,  PPCVLE,   {FRT, FRA, FRC, FRB}},
9536
{"fnmadd.", A(63,31,1), A_MASK,      PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9537
{"fnma.", A(63,31,1), A_MASK,      PWRCOM,  PPCVLE,   {FRT, FRA, FRC, FRB}},
9538
9539
{"fcmpo", X(63,32), XBF_MASK,    COM, PPCEFS|PPCVLE,  {BF, FRA, FRB}},
9540
9541
{"dmulq", XRC(63,34,0), X_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, FRBp}},
9542
{"dmulq.",  XRC(63,34,1), X_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, FRBp}},
9543
9544
{"drrndq",  ZRC(63,35,0), Z2_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRA, FRBp, RMC}},
9545
{"drrndq.", ZRC(63,35,1), Z2_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRA, FRBp, RMC}},
9546
9547
{"xsmulqp", XRC(63,36,0), X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9548
{"xsmulqpo",  XRC(63,36,1), X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9549
9550
{"xsrqpxp", Z(63,37), Z2_MASK,     PPCVSX3, PPCVLE,   {R, VD, VB, RMC}},
9551
9552
{"mtfsb1",  XRC(63,38,0), XRARB_MASK,  COM, PPCVLE,   {BTF}},
9553
{"mtfsb1.", XRC(63,38,1), XRARB_MASK,  COM, PPCVLE,   {BTF}},
9554
9555
{"fneg",  XRC(63,40,0), XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
9556
{"fneg.", XRC(63,40,1), XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
9557
9558
{"mcrfs",      X(63,64), XRB_MASK|(3<<21)|(3<<16), COM, PPCVLE,   {BF, BFA}},
9559
9560
{"dscliq",  ZRC(63,66,0), Z_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, SH16}},
9561
{"dscliq.", ZRC(63,66,1), Z_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, SH16}},
9562
9563
{"dquaiq",  ZRC(63,67,0), Z2_MASK|Q_MASK, POWER6, PPCVLE,   {TE, FRTp, FRBp, RMC}},
9564
{"dquaiq.", ZRC(63,67,1), Z2_MASK|Q_MASK, POWER6, PPCVLE,   {TE, FRTp, FRBp, RMC}},
9565
9566
{"xscmpeqqp", X(63,68), X_MASK,      POWER10, PPCVLE,   {VD, VA, VB}},
9567
9568
{"mtfsb0",  XRC(63,70,0), XRARB_MASK,  COM, PPCVLE,   {BTF}},
9569
{"mtfsb0.", XRC(63,70,1), XRARB_MASK,  COM, PPCVLE,   {BTF}},
9570
9571
{"fmr",   XRC(63,72,0), XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
9572
{"fmr.",  XRC(63,72,1), XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
9573
9574
{"dscriq",  ZRC(63,98,0), Z_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, SH16}},
9575
{"dscriq.", ZRC(63,98,1), Z_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, SH16}},
9576
9577
{"drintxq", ZRC(63,99,0), Z2_MASK|Q_MASK, POWER6, PPCVLE,   {R, FRTp, FRBp, RMC}},
9578
{"drintxq.",  ZRC(63,99,1), Z2_MASK|Q_MASK, POWER6, PPCVLE,   {R, FRTp, FRBp, RMC}},
9579
9580
{"xscpsgnqp", X(63,100),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9581
9582
{"ftdiv", X(63,128),  XBF_MASK,    POWER7,  PPCVLE,   {BF, FRA, FRB}},
9583
9584
{"dcmpoq",  X(63,130),  X_MASK,      POWER6,  PPCVLE,   {BF, FRAp, FRBp}},
9585
9586
{"xscmpoqp",  X(63,132),  XBF_MASK,    PPCVSX3, PPCVLE,   {BF, VA, VB}},
9587
9588
{"mtfsfi",  XRC(63,134,0), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCVLE, {BFF, U, W}},
9589
{"mtfsfi",  XRC(63,134,0), XRA_MASK|(3<<21)|(1<<11), COM, POWER6|PPCA2|PPC476|PPCVLE, {BFF, U}},
9590
{"mtfsfi.", XRC(63,134,1), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCVLE, {BFF, U, W}},
9591
{"mtfsfi.", XRC(63,134,1), XRA_MASK|(3<<21)|(1<<11), COM, POWER6|PPCA2|PPC476|PPCVLE, {BFF, U}},
9592
9593
{"fnabs", XRC(63,136,0),  XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
9594
{"fnabs.",  XRC(63,136,1),  XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
9595
9596
{"fctiwu",  XRC(63,142,0),  XRA_MASK,    POWER7,  PPCVLE,   {FRT, FRB}},
9597
{"fctiwu.", XRC(63,142,1),  XRA_MASK,    POWER7,  PPCVLE,   {FRT, FRB}},
9598
{"fctiwuz", XRC(63,143,0),  XRA_MASK,    POWER7,  PPCVLE,   {FRT, FRB}},
9599
{"fctiwuz.",  XRC(63,143,1),  XRA_MASK,    POWER7,  PPCVLE,   {FRT, FRB}},
9600
9601
{"ftsqrt",  X(63,160),  XBF_MASK|FRA_MASK, POWER7, PPCVLE,  {BF, FRB}},
9602
9603
{"dtstexq", X(63,162),  X_MASK,      POWER6,  PPCVLE,   {BF, FRAp, FRBp}},
9604
9605
{"xscmpexpqp",  X(63,164),  XBF_MASK,    PPCVSX3, PPCVLE,   {BF, VA, VB}},
9606
9607
{"dtstdcq", Z(63,194),  Z_MASK,      POWER6,  PPCVLE,   {BF, FRAp, DCM}},
9608
9609
{"xscmpgeqp", X(63,196),  X_MASK,      POWER10, PPCVLE,   {VD, VA, VB}},
9610
9611
{"dtstdgq", Z(63,226),  Z_MASK,      POWER6,  PPCVLE,   {BF, FRAp, DGM}},
9612
9613
{"drintnq", ZRC(63,227,0), Z2_MASK|Q_MASK, POWER6,  PPCVLE,   {R, FRTp, FRBp, RMC}},
9614
{"drintnq.",  ZRC(63,227,1), Z2_MASK|Q_MASK, POWER6,  PPCVLE,   {R, FRTp, FRBp, RMC}},
9615
9616
{"xscmpgtqp", X(63,228),  X_MASK,      POWER10, PPCVLE,   {VD, VA, VB}},
9617
9618
{"dctqpq",  XRC(63,258,0), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRB}},
9619
{"dctqpq.", XRC(63,258,1), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRB}},
9620
9621
{"fabs",  XRC(63,264,0),  XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
9622
{"fabs.", XRC(63,264,1),  XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
9623
9624
{"dctfixq", XRC(63,290,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRBp}},
9625
{"dctfixq.",  XRC(63,290,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRBp}},
9626
9627
{"ddedpdq", XRC(63,322,0), X_MASK|Q_MASK, POWER6, PPCVLE,   {SP, FRTp, FRBp}},
9628
{"ddedpdq.",  XRC(63,322,1), X_MASK|Q_MASK, POWER6, PPCVLE,   {SP, FRTp, FRBp}},
9629
9630
{"dxexq", XRC(63,354,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRBp}},
9631
{"dxexq.",  XRC(63,354,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRBp}},
9632
9633
{"xsmaddqp",  XRC(63,388,0),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9634
{"xsmaddqpo", XRC(63,388,1),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9635
9636
{"frin",  XRC(63,392,0),  XRA_MASK,    POWER5,  PPCVLE,   {FRT, FRB}},
9637
{"frin.", XRC(63,392,1),  XRA_MASK,    POWER5,  PPCVLE,   {FRT, FRB}},
9638
9639
{"xsmsubqp",  XRC(63,420,0),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9640
{"xsmsubqpo", XRC(63,420,1),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9641
9642
{"friz",  XRC(63,424,0),  XRA_MASK,    POWER5,  PPCVLE,   {FRT, FRB}},
9643
{"friz.", XRC(63,424,1),  XRA_MASK,    POWER5,  PPCVLE,   {FRT, FRB}},
9644
9645
{"xsnmaddqp", XRC(63,452,0),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9646
{"xsnmaddqpo",  XRC(63,452,1),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9647
9648
{"frip",  XRC(63,456,0),  XRA_MASK,    POWER5,  PPCVLE,   {FRT, FRB}},
9649
{"frip.", XRC(63,456,1),  XRA_MASK,    POWER5,  PPCVLE,   {FRT, FRB}},
9650
9651
{"xsnmsubqp", XRC(63,484,0),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9652
{"xsnmsubqpo",  XRC(63,484,1),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9653
9654
{"frim",  XRC(63,488,0),  XRA_MASK,    POWER5,  PPCVLE,   {FRT, FRB}},
9655
{"frim.", XRC(63,488,1),  XRA_MASK,    POWER5,  PPCVLE,   {FRT, FRB}},
9656
9657
{"dsubq", XRC(63,514,0), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRAp, FRBp}},
9658
{"dsubq.",  XRC(63,514,1), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRAp, FRBp}},
9659
9660
{"xssubqp", XRC(63,516,0),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9661
{"xssubqpo",  XRC(63,516,1),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9662
9663
{"ddivq", XRC(63,546,0), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRAp, FRBp}},
9664
{"ddivq.",  XRC(63,546,1), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRAp, FRBp}},
9665
9666
{"xsdivqp", XRC(63,548,0),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9667
{"xsdivqpo",  XRC(63,548,1),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9668
9669
{"mffs",  XRC(63,583,0),  XRARB_MASK,  COM, PPCEFS|PPCVLE,  {FRT}},
9670
{"mffs.", XRC(63,583,1),  XRARB_MASK,  COM, PPCEFS|PPCVLE,  {FRT}},
9671
9672
{"mffsce",  XMMF(63,583,0,1), XMMF_MASK|RB_MASK, POWER9, PPCVLE,  {FRT}},
9673
{"mffscdrn",  XMMF(63,583,2,4), XMMF_MASK,         POWER9, PPCVLE,  {FRT, FRB}},
9674
{"mffscdrni", XMMF(63,583,2,5), XMMF_MASK|(3<<14), POWER9, PPCVLE,  {FRT, DRM}},
9675
{"mffscrn", XMMF(63,583,2,6), XMMF_MASK,         POWER9, PPCVLE,  {FRT, FRB}},
9676
{"mffscrni",  XMMF(63,583,2,7), XMMF_MASK|(7<<13), POWER9, PPCVLE,  {FRT, RM}},
9677
{"mffsl", XMMF(63,583,3,0), XMMF_MASK|RB_MASK, POWER9, PPCVLE,  {FRT}},
9678
9679
{"dcmpuq",  X(63,642),  X_MASK,      POWER6,  PPCVLE,   {BF, FRAp, FRBp}},
9680
9681
{"xscmpuqp",  X(63,644),  XBF_MASK,    PPCVSX3, PPCVLE,   {BF, VA, VB}},
9682
9683
{"dtstsfq", X(63,674),  X_MASK,      POWER6,  PPCVLE,   {BF, FRA, FRBp}},
9684
{"dtstsfiq",  X(63,675),  X_MASK|1<<22,POWER9,  PPCVLE,   {BF, UIM6, FRBp}},
9685
9686
{"xsmaxcqp",  X(63,676),  X_MASK,      POWER10, PPCVLE,   {VD, VA, VB}},
9687
9688
{"xststdcqp", X(63,708),  X_MASK,      PPCVSX3, PPCVLE,   {BF, VB, DCMX}},
9689
9690
{"mtfsf", XFL(63,711,0),  XFL_MASK, POWER6|PPCA2|PPC476, PPCVLE,  {FLM, FRB, XFL_L, W}},
9691
{"mtfsf", XFL(63,711,0),  XFL_MASK,    COM, POWER6|PPCA2|PPC476|PPCEFS|PPCVLE, {FLM, FRB}},
9692
{"mtfsf.",  XFL(63,711,1),  XFL_MASK, POWER6|PPCA2|PPC476, PPCVLE,  {FLM, FRB, XFL_L, W}},
9693
{"mtfsf.",  XFL(63,711,1),  XFL_MASK,    COM, POWER6|PPCA2|PPC476|PPCEFS|PPCVLE, {FLM, FRB}},
9694
9695
{"xsmincqp",  X(63,740),  X_MASK,      POWER10, PPCVLE,   {VD, VA, VB}},
9696
9697
{"drdpq", XRC(63,770,0), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRBp}},
9698
{"drdpq.",  XRC(63,770,1), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRBp}},
9699
9700
{"dcffixq", XRC(63,802,0), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRB}},
9701
{"dcffixq.",  XRC(63,802,1), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRB}},
9702
9703
{"xsabsqp", XVA(63,804,0),  XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
9704
{"xsxexpqp",  XVA(63,804,2),  XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
9705
{"xsnabsqp",  XVA(63,804,8),  XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
9706
{"xsnegqp", XVA(63,804,16), XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
9707
{"xsxsigqp",  XVA(63,804,18), XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
9708
{"xssqrtqp",  XVARC(63,804,27,0), XVA_MASK, PPCVSX3,  PPCVLE,   {VD, VB}},
9709
{"xssqrtqpo", XVARC(63,804,27,1), XVA_MASK, PPCVSX3,  PPCVLE,   {VD, VB}},
9710
9711
{"fctid", XRC(63,814,0),  XRA_MASK,    PPC64, PPCVLE,   {FRT, FRB}},
9712
{"fctid", XRC(63,814,0),  XRA_MASK,    PPC476,  PPCVLE,   {FRT, FRB}},
9713
{"fctid.",  XRC(63,814,1),  XRA_MASK,    PPC64, PPCVLE,   {FRT, FRB}},
9714
{"fctid.",  XRC(63,814,1),  XRA_MASK,    PPC476,  PPCVLE,   {FRT, FRB}},
9715
9716
{"fctidz",  XRC(63,815,0),  XRA_MASK,    PPC64, PPCVLE,   {FRT, FRB}},
9717
{"fctidz",  XRC(63,815,0),  XRA_MASK,    PPC476,  PPCVLE,   {FRT, FRB}},
9718
{"fctidz.", XRC(63,815,1),  XRA_MASK,    PPC64, PPCVLE,   {FRT, FRB}},
9719
{"fctidz.", XRC(63,815,1),  XRA_MASK,    PPC476,  PPCVLE,   {FRT, FRB}},
9720
9721
{"denbcdq", XRC(63,834,0), X_MASK|Q_MASK, POWER6, PPCVLE,   {S, FRTp, FRBp}},
9722
{"denbcdq.",  XRC(63,834,1), X_MASK|Q_MASK, POWER6, PPCVLE,   {S, FRTp, FRBp}},
9723
9724
{"xscvqpuqz", XVA(63,836,0),  XVA_MASK,    POWER10, PPCVLE,   {VD, VB}},
9725
{"xscvqpuwz", XVA(63,836,1),  XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
9726
{"xscvudqp",  XVA(63,836,2),  XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
9727
{"xscvuqqp",  XVA(63,836,3),  XVA_MASK,    POWER10, PPCVLE,   {VD, VB}},
9728
{"xscvqpsqz", XVA(63,836,8),  XVA_MASK,    POWER10, PPCVLE,   {VD, VB}},
9729
{"xscvqpswz", XVA(63,836,9),  XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
9730
{"xscvsdqp",  XVA(63,836,10), XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
9731
{"xscvsqqp",  XVA(63,836,11), XVA_MASK,    POWER10, PPCVLE,   {VD, VB}},
9732
{"xscvqpudz", XVA(63,836,17), XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
9733
{"xscvqpdp",  XVARC(63,836,20,0), XVA_MASK, PPCVSX3,  PPCVLE,   {VD, VB}},
9734
{"xscvqpdpo", XVARC(63,836,20,1), XVA_MASK, PPCVSX3,  PPCVLE,   {VD, VB}},
9735
{"xscvdpqp",  XVA(63,836,22), XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
9736
{"xscvqpsdz", XVA(63,836,25), XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
9737
9738
{"fmrgow",  X(63,838),  X_MASK,      PPCVSX2, PPCVLE,   {FRT, FRA, FRB}},
9739
9740
{"fcfid", XRC(63,846,0),  XRA_MASK,    PPC64, PPCVLE,   {FRT, FRB}},
9741
{"fcfid", XRC(63,846,0),  XRA_MASK,    PPC476,  PPCVLE,   {FRT, FRB}},
9742
{"fcfid.",  XRC(63,846,1),  XRA_MASK,    PPC64, PPCVLE,   {FRT, FRB}},
9743
{"fcfid.",  XRC(63,846,1),  XRA_MASK,    PPC476,  PPCVLE,   {FRT, FRB}},
9744
9745
{"diexq", XRC(63,866,0), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRA, FRBp}},
9746
{"diexq.",  XRC(63,866,1), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRA, FRBp}},
9747
9748
{"xsiexpqp",  X(63,868),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9749
9750
{"fctidu",  XRC(63,942,0),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
9751
{"fctidu.", XRC(63,942,1),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
9752
9753
{"fctiduz", XRC(63,943,0),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
9754
{"fctiduz.",  XRC(63,943,1),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
9755
9756
{"fmrgew",  X(63,966),  X_MASK,      PPCVSX2, PPCVLE,   {FRT, FRA, FRB}},
9757
9758
{"fcfidu",  XRC(63,974,0),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
9759
{"fcfidu.", XRC(63,974,1),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
9760
9761
{"dcffixqq",  XVA(63,994,0),  XVA_MASK,    POWER10, PPCVLE,   {FRTp, VB}},
9762
{"dctfixqq",  XVA(63,994,1),  XVA_MASK,    POWER10, PPCVLE,   {VD, FRBp}},
9763
};
9764
9765
const unsigned int powerpc_num_opcodes = ARRAY_SIZE (powerpc_opcodes);
9766

9767
/* The opcode table for 8-byte prefix instructions.
9768
9769
   The format of this opcode table is the same as the main opcode table.  */
9770
9771
const struct powerpc_opcode prefix_opcodes[] = {
9772
{"pnop",    PMRR,          PREFIX_MASK, POWER10, 0, {0}},
9773
{"pli",     PMLS|OP(14),         P_DRAPCREL_MASK, POWER10, EXT, {RT, SI34}},
9774
{"pla",     PMLS|OP(14),         P_D_MASK,  POWER10, EXT, {RT, D34, PRA0, PCREL1}},
9775
{"paddi",   PMLS|OP(14),         P_D_MASK,  POWER10, 0, {RT, RA0, SI34, PCREL}},
9776
{"psubi",   PMLS|OP(14),         P_D_MASK,  POWER10, EXT, {RT, RA0, NSI34, PCREL}},
9777
{"xxsplti32dx",   P8RR|VSOP(32,0),     P_VSI_MASK,  POWER10, 0, {XTS, IX, IMM32}},
9778
{"xxspltidp",   P8RR|VSOP(32,2),     P_VS_MASK, POWER10, 0, {XTS, IMM32}},
9779
{"xxspltiw",    P8RR|VSOP(32,3),     P_VS_MASK, POWER10, 0, {XTS, IMM32}},
9780
{"plwz",    PMLS|OP(32),         P_D_MASK,  POWER10, 0, {RT, D34, PRA0, PCREL}},
9781
{"xxblendvb",   P8RR|XX4(33,0),      P_XX4_MASK,  POWER10, 0, {XT6, XA6, XB6, XC6}},
9782
{"xxblendvh",   P8RR|XX4(33,1),      P_XX4_MASK,  POWER10, 0, {XT6, XA6, XB6, XC6}},
9783
{"xxblendvw",   P8RR|XX4(33,2),      P_XX4_MASK,  POWER10, 0, {XT6, XA6, XB6, XC6}},
9784
{"xxblendvd",   P8RR|XX4(33,3),      P_XX4_MASK,  POWER10, 0, {XT6, XA6, XB6, XC6}},
9785
{"xxpermx",   P8RR|XX4(34,0),      P_UXX4_MASK, POWER10, 0, {XT6, XA6, XB6, XC6, UIM3}},
9786
{"xxeval",    P8RR|XX4(34,1),      P_U8XX4_MASK,  POWER10, 0, {XT6, XA6, XB6, XC6, UIM8}},
9787
{"plbz",    PMLS|OP(34),         P_D_MASK,  POWER10, 0, {RT, D34, PRA0, PCREL}},
9788
{"pstw",    PMLS|OP(36),         P_D_MASK,  POWER10, 0, {RS, D34, PRA0, PCREL}},
9789
{"pstb",    PMLS|OP(38),         P_D_MASK,  POWER10, 0, {RS, D34, PRA0, PCREL}},
9790
{"plhz",    PMLS|OP(40),         P_D_MASK,  POWER10, 0, {RT, D34, PRA0, PCREL}},
9791
{"plwa",    P8LS|OP(41),         P_D_MASK,  POWER10, 0, {RT, D34, PRA0, PCREL}},
9792
{"plxsd",   P8LS|OP(42),         P_D_MASK,  POWER10, 0, {VD, D34, PRA0, PCREL}},
9793
{"plha",    PMLS|OP(42),         P_D_MASK,  POWER10, 0, {RT, D34, PRA0, PCREL}},
9794
{"plxssp",    P8LS|OP(43),         P_D_MASK,  POWER10, 0, {VD, D34, PRA0, PCREL}},
9795
{"psth",    PMLS|OP(44),         P_D_MASK,  POWER10, 0, {RS, D34, PRA0, PCREL}},
9796
{"pstxsd",    P8LS|OP(46),         P_D_MASK,  POWER10, 0, {VS, D34, PRA0, PCREL}},
9797
{"pstxssp",   P8LS|OP(47),         P_D_MASK,  POWER10, 0, {VS, D34, PRA0, PCREL}},
9798
{"plfs",    PMLS|OP(48),         P_D_MASK,  POWER10, 0, {FRT, D34, PRA0, PCREL}},
9799
{"plxv",    P8LS|OP(50),         P_D_MASK&~OP(1), POWER10, 0, {XTOP, D34, PRA0, PCREL}},
9800
{"plfd",    PMLS|OP(50),         P_D_MASK,  POWER10, 0, {FRT, D34, PRA0, PCREL}},
9801
{"pstfs",   PMLS|OP(52),         P_D_MASK,  POWER10, 0, {FRS, D34, PRA0, PCREL}},
9802
{"pstxv",   P8LS|OP(54),         P_D_MASK&~OP(1), POWER10, 0, {XTOP, D34, PRA0, PCREL}},
9803
{"pstfd",   PMLS|OP(54),         P_D_MASK,  POWER10, 0, {FRS, D34, PRA0, PCREL}},
9804
{"plq",     P8LS|OP(56),         P_D_MASK,  POWER10, 0, {RTQ, D34, PRAQ, PCREL}},
9805
{"pld",     P8LS|OP(57),         P_D_MASK,  POWER10, 0, {RT, D34, PRA0, PCREL}},
9806
{"plxvp",   P8LS|OP(58),         P_D_MASK,  POWER10, 0, {XTP, D34, PRA0, PCREL}},
9807
{"pmdmxvi8ger4pp",PMMIRR|XX3(59,2),    P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
9808
{"pmxvi8ger4pp",  PMMIRR|XX3(59,2),    P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
9809
{"pmdmxvi8ger4",  PMMIRR|XX3(59,3),    P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
9810
{"pmxvi8ger4",    PMMIRR|XX3(59,3),    P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
9811
{"pmdmxvi8gerx4pp",PMMIRR|XX3(59,10),  P_GERX4_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK4}},
9812
{"pmdmxvi8gerx4", PMMIRR|XX3(59,11),   P_GERX4_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK4}},
9813
{"pmdmxvf16ger2pp",PMMIRR|XX3(59,18),  P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9814
{"pmxvf16ger2pp", PMMIRR|XX3(59,18),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9815
{"pmdmxvf16ger2", PMMIRR|XX3(59,19),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9816
{"pmxvf16ger2",   PMMIRR|XX3(59,19),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9817
{"pmdmxvf32gerpp",PMMIRR|XX3(59,26),   P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
9818
{"pmxvf32gerpp",  PMMIRR|XX3(59,26),   P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
9819
{"pmdmxvf32ger",  PMMIRR|XX3(59,27),   P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
9820
{"pmxvf32ger",    PMMIRR|XX3(59,27),   P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
9821
{"pmdmxvi4ger8pp",PMMIRR|XX3(59,34),   P_GER8_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK8}},
9822
{"pmxvi4ger8pp",  PMMIRR|XX3(59,34),   P_GER8_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK8}},
9823
{"pmdmxvi4ger8",  PMMIRR|XX3(59,35),   P_GER8_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK8}},
9824
{"pmxvi4ger8",    PMMIRR|XX3(59,35),   P_GER8_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK8}},
9825
{"pmdmxvi16ger2spp",PMMIRR|XX3(59,42), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9826
{"pmxvi16ger2spp",PMMIRR|XX3(59,42),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9827
{"pmdmxvi16ger2s",PMMIRR|XX3(59,43),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9828
{"pmxvi16ger2s",  PMMIRR|XX3(59,43),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9829
{"pmdmxvbf16ger2pp",PMMIRR|XX3(59,50), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9830
{"pmxvbf16ger2pp",PMMIRR|XX3(59,50),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9831
{"pmdmxvbf16ger2",PMMIRR|XX3(59,51),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9832
{"pmxvbf16ger2",  PMMIRR|XX3(59,51),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9833
{"pmdmxvf64gerpp",PMMIRR|XX3(59,58),   P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
9834
{"pmxvf64gerpp",  PMMIRR|XX3(59,58),   P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
9835
{"pmdmxvf64ger",  PMMIRR|XX3(59,59),   P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
9836
{"pmxvf64ger",    PMMIRR|XX3(59,59),   P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
9837
{"pmdmxvf16gerx2pp",PMMIRR|XX3(59,66), P_GERX2_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
9838
{"pmdmxvf16gerx2",PMMIRR|XX3(59,67),   P_GERX2_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
9839
{"pmdmxvbf16gerx2pp",PMMIRR|XX3(59,74),P_GERX2_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
9840
{"pmdmxvi16ger2", PMMIRR|XX3(59,75),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9841
{"pmxvi16ger2",   PMMIRR|XX3(59,75),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9842
{"pmdmxvf16ger2np",PMMIRR|XX3(59,82),  P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9843
{"pmxvf16ger2np", PMMIRR|XX3(59,82),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9844
{"pmdmxvf16gerx2np",PMMIRR|XX3(59,83), P_GERX2_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
9845
{"pmdmxvf32gernp",PMMIRR|XX3(59,90),   P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
9846
{"pmxvf32gernp",  PMMIRR|XX3(59,90),   P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
9847
{"pmdmxvbf16gerx2",PMMIRR|XX3(59,91),  P_GERX2_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
9848
{"pmdmxvi8gerx4spp",PMMIRR|XX3(59,98), P_GERX4_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK4}},
9849
{"pmdmxvi8ger4spp",PMMIRR|XX3(59,99),  P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
9850
{"pmxvi8ger4spp", PMMIRR|XX3(59,99),   P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
9851
{"pmdmxvi16ger2pp",PMMIRR|XX3(59,107), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9852
{"pmxvi16ger2pp", PMMIRR|XX3(59,107),  P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9853
{"pmdmxvbf16ger2np",PMMIRR|XX3(59,114),P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9854
{"pmxvbf16ger2np",PMMIRR|XX3(59,114),  P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9855
{"pmdmxvbf16gerx2np",PMMIRR|XX3(59,115),P_GERX2_MASK, FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
9856
{"pmdmxvf64gernp",PMMIRR|XX3(59,122),  P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
9857
{"pmxvf64gernp",  PMMIRR|XX3(59,122),  P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
9858
{"pmdmxvf16ger2pn",PMMIRR|XX3(59,146), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9859
{"pmxvf16ger2pn", PMMIRR|XX3(59,146),  P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9860
{"pmdmxvf16gerx2pn",PMMIRR|XX3(59,147),P_GERX2_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
9861
{"pmdmxvf32gerpn",PMMIRR|XX3(59,154),  P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
9862
{"pmxvf32gerpn",  PMMIRR|XX3(59,154),  P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
9863
{"pmdmxvbf16ger2pn",PMMIRR|XX3(59,178),P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9864
{"pmxvbf16ger2pn",PMMIRR|XX3(59,178),  P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9865
{"pmdmxvbf16gerx2pn",PMMIRR|XX3(59,179),P_GERX2_MASK, FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
9866
{"pmdmxvf64gerpn",PMMIRR|XX3(59,186),  P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
9867
{"pmxvf64gerpn",  PMMIRR|XX3(59,186),  P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
9868
{"pmdmxvf16gerx2nn",PMMIRR|XX3(59,202),P_GERX2_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
9869
{"pmdmxvf16ger2nn",PMMIRR|XX3(59,210), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9870
{"pmxvf16ger2nn", PMMIRR|XX3(59,210),  P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9871
{"pmdmxvf32gernn",PMMIRR|XX3(59,218),  P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
9872
{"pmxvf32gernn",  PMMIRR|XX3(59,218),  P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
9873
{"pmdmxvbf16gerx2nn",PMMIRR|XX3(59,234),P_GERX2_MASK, FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
9874
{"pmdmxvbf16ger2nn",PMMIRR|XX3(59,242),P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9875
{"pmxvbf16ger2nn",PMMIRR|XX3(59,242),  P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9876
{"pmdmxvf64gernn",PMMIRR|XX3(59,250),  P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
9877
{"pmxvf64gernn",  PMMIRR|XX3(59,250),  P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
9878
{"pstq",    P8LS|OP(60),         P_D_MASK,  POWER10, 0, {RSQ, D34, PRA0, PCREL}},
9879
{"pstd",    P8LS|OP(61),         P_D_MASK,  POWER10, 0, {RS, D34, PRA0, PCREL}},
9880
{"pstxvp",    P8LS|OP(62),         P_D_MASK,  POWER10, 0, {XSP, D34, PRA0, PCREL}},
9881
};
9882
9883
const unsigned int prefix_num_opcodes = ARRAY_SIZE (prefix_opcodes);
9884

9885
/* The VLE opcode table.
9886
9887
   The format of this opcode table is the same as the main opcode table.  */
9888
9889
const struct powerpc_opcode vle_opcodes[] = {
9890
{"se_illegal",  C(0),   C_MASK,   PPCVLE, 0,    {}},
9891
{"se_isync",  C(1),   C_MASK,   PPCVLE, 0,    {}},
9892
{"se_sc", C(2),   C_MASK,   PPCVLE, 0,    {}},
9893
{"se_blr",  C_LK(2,0),  C_LK_MASK,  PPCVLE, 0,    {}},
9894
{"se_blrl", C_LK(2,1),  C_LK_MASK,  PPCVLE, 0,    {}},
9895
{"se_bctr", C_LK(3,0),  C_LK_MASK,  PPCVLE, 0,    {}},
9896
{"se_bctrl",  C_LK(3,1),  C_LK_MASK,  PPCVLE, 0,    {}},
9897
{"se_rfi",  C(8),   C_MASK,   PPCVLE, 0,    {}},
9898
{"se_rfci", C(9),   C_MASK,   PPCVLE, 0,    {}},
9899
{"se_rfdi", C(10),    C_MASK,   PPCVLE, 0,    {}},
9900
/* PPCRFMCI in the following does not enable the instruction for any
9901
   PPC_OPCODE_RFMCI supporting cpu as vle_opcodes are all added to the
9902
   assembler hash table or searched by the disassembler under control
9903
   of PPC_OPCODE_VLE.  It's there to set apuinfo.  */
9904
{"se_rfmci",  C(11),    C_MASK, PPCRFMCI|PPCVLE, 0,   {}},
9905
{"se_rfgi", C(12),    C_MASK,   PPCVLE, 0,    {}},
9906
{"se_not",  SE_R(0,2),  SE_R_MASK,  PPCVLE, 0,    {RX}},
9907
{"se_neg",  SE_R(0,3),  SE_R_MASK,  PPCVLE, 0,    {RX}},
9908
{"se_mflr", SE_R(0,8),  SE_R_MASK,  PPCVLE, 0,    {RX}},
9909
{"se_mtlr", SE_R(0,9),  SE_R_MASK,  PPCVLE, 0,    {RX}},
9910
{"se_mfctr",  SE_R(0,10), SE_R_MASK,  PPCVLE, 0,    {RX}},
9911
{"se_mtctr",  SE_R(0,11), SE_R_MASK,  PPCVLE, 0,    {RX}},
9912
{"se_extzb",  SE_R(0,12), SE_R_MASK,  PPCVLE, 0,    {RX}},
9913
{"se_extsb",  SE_R(0,13), SE_R_MASK,  PPCVLE, 0,    {RX}},
9914
{"se_extzh",  SE_R(0,14), SE_R_MASK,  PPCVLE, 0,    {RX}},
9915
{"se_extsh",  SE_R(0,15), SE_R_MASK,  PPCVLE, 0,    {RX}},
9916
{"se_mr", SE_RR(0,1), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
9917
{"se_mtar", SE_RR(0,2), SE_RR_MASK, PPCVLE, 0,    {ARX, RY}},
9918
{"se_mfar", SE_RR(0,3), SE_RR_MASK, PPCVLE, 0,    {RX, ARY}},
9919
{"se_add",  SE_RR(1,0), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
9920
{"se_mullw",  SE_RR(1,1), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
9921
{"se_sub",  SE_RR(1,2), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
9922
{"se_subf", SE_RR(1,3), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
9923
{"se_cmp",  SE_RR(3,0), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
9924
{"se_cmpl", SE_RR(3,1), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
9925
{"se_cmph", SE_RR(3,2), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
9926
{"se_cmphl",  SE_RR(3,3), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
9927
9928
/* by major opcode */
9929
{"e_cmpi",  SCI8BF(6,0,21), SCI8BF_MASK,  PPCVLE, 0,    {CRD32, RA, SCLSCI8}},
9930
{"e_cmpwi", SCI8BF(6,0,21), SCI8BF_MASK,  PPCVLE, 0,    {CRD32, RA, SCLSCI8}},
9931
{"e_cmpli", SCI8BF(6,1,21), SCI8BF_MASK,  PPCVLE, 0,    {CRD32, RA, SCLSCI8}},
9932
{"e_cmplwi",  SCI8BF(6,1,21), SCI8BF_MASK,  PPCVLE, 0,    {CRD32, RA, SCLSCI8}},
9933
{"e_addi",  SCI8(6,16), SCI8_MASK,  PPCVLE, 0,    {RT, RA, SCLSCI8}},
9934
{"e_subi",  SCI8(6,16), SCI8_MASK,  PPCVLE, 0,    {RT, RA, SCLSCI8N}},
9935
{"e_addi.", SCI8(6,17), SCI8_MASK,  PPCVLE, 0,    {RT, RA, SCLSCI8}},
9936
{"e_addic", SCI8(6,18), SCI8_MASK,  PPCVLE, 0,    {RT, RA, SCLSCI8}},
9937
{"e_subic", SCI8(6,18), SCI8_MASK,  PPCVLE, EXT,    {RT, RA, SCLSCI8N}},
9938
{"e_addic.",  SCI8(6,19), SCI8_MASK,  PPCVLE, 0,    {RT, RA, SCLSCI8}},
9939
{"e_subic.",  SCI8(6,19), SCI8_MASK,  PPCVLE, EXT,    {RT, RA, SCLSCI8N}},
9940
{"e_mulli", SCI8(6,20), SCI8_MASK,  PPCVLE, 0,    {RT, RA, SCLSCI8}},
9941
{"e_subfic",  SCI8(6,22), SCI8_MASK,  PPCVLE, 0,    {RT, RA, SCLSCI8}},
9942
{"e_subfic.", SCI8(6,23), SCI8_MASK,  PPCVLE, 0,    {RT, RA, SCLSCI8}},
9943
{"e_andi",  SCI8(6,24), SCI8_MASK,  PPCVLE, 0,    {RA, RS, SCLSCI8}},
9944
{"e_andi.", SCI8(6,25), SCI8_MASK,  PPCVLE, 0,    {RA, RS, SCLSCI8}},
9945
{"e_nop", SCI8(6,26), 0xffffffff, PPCVLE, EXT,    {0}},
9946
{"e_ori", SCI8(6,26), SCI8_MASK,  PPCVLE, 0,    {RA, RS, SCLSCI8}},
9947
{"e_ori.",  SCI8(6,27), SCI8_MASK,  PPCVLE, 0,    {RA, RS, SCLSCI8}},
9948
{"e_xori",  SCI8(6,28), SCI8_MASK,  PPCVLE, 0,    {RA, RS, SCLSCI8}},
9949
{"e_xori.", SCI8(6,29), SCI8_MASK,  PPCVLE, 0,    {RA, RS, SCLSCI8}},
9950
{"e_lbzu",  OPVUP(6,0), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
9951
{"e_lhau",  OPVUP(6,3), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
9952
{"e_lhzu",  OPVUP(6,1), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
9953
{"e_lmw", OPVUP(6,8), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
9954
{"e_lwzu",  OPVUP(6,2), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
9955
{"e_stbu",  OPVUP(6,4), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
9956
{"e_sthu",  OPVUP(6,5), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
9957
{"e_stwu",  OPVUP(6,6), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
9958
{"e_stmw",  OPVUP(6,9), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
9959
{"e_lmvgprw", OPVUPRT(6,16,0),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
9960
{"e_ldmvgprw",  OPVUPRT(6,16,0),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
9961
{"e_stmvgprw",  OPVUPRT(6,17,0),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
9962
{"e_lmvsprw", OPVUPRT(6,16,1),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
9963
{"e_ldmvsprw",  OPVUPRT(6,16,1),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
9964
{"e_stmvsprw",  OPVUPRT(6,17,1),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
9965
{"e_lmvsrrw", OPVUPRT(6,16,4),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
9966
{"e_ldmvsrrw",  OPVUPRT(6,16,4),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
9967
{"e_stmvsrrw",  OPVUPRT(6,17,4),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
9968
{"e_lmvcsrrw",  OPVUPRT(6,16,5),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
9969
{"e_ldmvcsrrw", OPVUPRT(6,16,5),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
9970
{"e_stmvcsrrw", OPVUPRT(6,17,5),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
9971
{"e_lmvdsrrw",  OPVUPRT(6,16,6),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
9972
{"e_ldmvdsrrw", OPVUPRT(6,16,6),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
9973
{"e_stmvdsrrw", OPVUPRT(6,17,6),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
9974
{"e_lmvmcsrrw", OPVUPRT(6,16,7),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
9975
{"e_stmvmcsrrw",OPVUPRT(6,17,7),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
9976
{"e_add16i",  OP(7),    OP_MASK,  PPCVLE, 0,    {RT, RA, SI}},
9977
{"e_la",  OP(7),    OP_MASK,  PPCVLE, EXT,    {RT, D, RA0}},
9978
{"e_sub16i",  OP(7),    OP_MASK,  PPCVLE, EXT,    {RT, RA, NSI}},
9979
9980
{"se_addi", SE_IM5(8,0),  SE_IM5_MASK,  PPCVLE, 0,    {RX, OIMM5}},
9981
{"se_cmpli",  SE_IM5(8,1),  SE_IM5_MASK,  PPCVLE, 0,    {RX, OIMM5}},
9982
{"se_subi", SE_IM5(9,0),  SE_IM5_MASK,  PPCVLE, 0,    {RX, OIMM5}},
9983
{"se_subi.",  SE_IM5(9,1),  SE_IM5_MASK,  PPCVLE, 0,    {RX, OIMM5}},
9984
{"se_cmpi", SE_IM5(10,1), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
9985
{"se_bmaski", SE_IM5(11,0), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
9986
{"se_andi", SE_IM5(11,1), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
9987
9988
{"e_lbz", OP(12),   OP_MASK,  PPCVLE, 0,    {RT, D, RA0}},
9989
{"e_stb", OP(13),   OP_MASK,  PPCVLE, 0,    {RT, D, RA0}},
9990
{"e_lha", OP(14),   OP_MASK,  PPCVLE, 0,    {RT, D, RA0}},
9991
9992
{"se_srw",  SE_RR(16,0),  SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
9993
{"se_sraw", SE_RR(16,1),  SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
9994
{"se_slw",  SE_RR(16,2),  SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
9995
{"se_nop",  SE_RR(17,0),  0xffff,   PPCVLE, EXT,    {0}},
9996
{"se_or", SE_RR(17,0),  SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
9997
{"se_andc", SE_RR(17,1),  SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
9998
{"se_and",  SE_RR(17,2),  SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
9999
{"se_and.", SE_RR(17,3),  SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10000
{"se_li", IM7(9),   IM7_MASK, PPCVLE, 0,    {RX, UI7}},
10001
10002
{"e_lwz", OP(20),   OP_MASK,  PPCVLE, 0,    {RT, D, RA0}},
10003
{"e_stw", OP(21),   OP_MASK,  PPCVLE, 0,    {RT, D, RA0}},
10004
{"e_lhz", OP(22),   OP_MASK,  PPCVLE, 0,    {RT, D, RA0}},
10005
{"e_sth", OP(23),   OP_MASK,  PPCVLE, 0,    {RT, D, RA0}},
10006
10007
{"se_bclri",  SE_IM5(24,0), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10008
{"se_bgeni",  SE_IM5(24,1), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10009
{"se_bseti",  SE_IM5(25,0), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10010
{"se_btsti",  SE_IM5(25,1), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10011
{"se_srwi", SE_IM5(26,0), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10012
{"se_srawi",  SE_IM5(26,1), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10013
{"se_slwi", SE_IM5(27,0), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10014
10015
{"e_lis", I16L(28,28),  I16L_MASK,  PPCVLE, 0,    {RD, VLEUIMML}},
10016
{"e_and2is.", I16L(28,29),  I16L_MASK,  PPCVLE, 0,    {RD, VLEUIMML}},
10017
{"e_or2is", I16L(28,26),  I16L_MASK,  PPCVLE, 0,    {RD, VLEUIMML}},
10018
{"e_and2i.",  I16L(28,25),  I16L_MASK,  PPCVLE, 0,    {RD, VLEUIMML}},
10019
{"e_or2i",  I16L(28,24),  I16L_MASK,  PPCVLE, 0,    {RD, VLEUIMML}},
10020
{"e_cmphl16i",  IA16(28,23),  IA16_MASK,  PPCVLE, 0,    {RA, VLEUIMM}},
10021
{"e_cmph16i", IA16(28,22),  IA16_MASK,  PPCVLE, 0,    {RA, VLESIMM}},
10022
{"e_cmpl16i", I16A(28,21),  I16A_MASK,  PPCVLE, 0,    {RA, VLEUIMM}},
10023
{"e_mull2i",  I16A(28,20),  I16A_MASK,  PPCVLE, 0,    {RA, VLESIMM}},
10024
{"e_cmp16i",  IA16(28,19),  IA16_MASK,  PPCVLE, 0,    {RA, VLESIMM}},
10025
{"e_sub2is",  I16A(28,18),  I16A_MASK,  PPCVLE, EXT,    {RA, VLENSIMM}},
10026
{"e_add2is",  I16A(28,18),  I16A_MASK,  PPCVLE, 0,    {RA, VLESIMM}},
10027
{"e_sub2i.",  I16A(28,17),  I16A_MASK,  PPCVLE, EXT,    {RA, VLENSIMM}},
10028
{"e_add2i.",  I16A(28,17),  I16A_MASK,  PPCVLE, 0,    {RA, VLESIMM}},
10029
{"e_li",  LI20(28,0), LI20_MASK,  PPCVLE, 0,    {RT, IMM20}},
10030
{"e_rlwimi",  M(29,0),  M_MASK,   PPCVLE, 0,    {RA, RS, SH, MB, ME}},
10031
{"e_inslwi",  M(29,0),  M_MASK,   PPCVLE, EXT,    {RA, RS, ILWn, ILWb}},
10032
{"e_insrwi",  M(29,0),  M_MASK,   PPCVLE, EXT,    {RA, RS, IRWn, IRWb}},
10033
{"e_rotlwi",  MME(29,31,1), MMBME_MASK, PPCVLE, EXT,    {RA, RS, SH}},
10034
{"e_rotrwi",  MME(29,31,1), MMBME_MASK, PPCVLE, EXT,    {RA, RS, RRWn}},
10035
{"e_clrlwi",  MME(29,31,1), MSHME_MASK, PPCVLE, EXT,    {RA, RS, MB}},
10036
{"e_clrrwi",  M(29,1),  MSHMB_MASK, PPCVLE, EXT,    {RA, RS, CRWn}},
10037
{"e_rlwinm",  M(29,1),  M_MASK,   PPCVLE, 0,    {RA, RS, SH, MBE, ME}},
10038
{"e_extlwi",  M(29,1),  MMB_MASK, PPCVLE, EXT,    {RA, RS, ELWn, SH}},
10039
{"e_extrwi",  MME(29,31,1), MME_MASK, PPCVLE, EXT,    {RA, RS, ERWn, ERWb}},
10040
{"e_clrlslwi",  M(29,1),  M_MASK,   PPCVLE, EXT,    {RA, RS, CSLWb, CSLWn}},
10041
{"e_b",   BD24(30,0,0), BD24_MASK,  PPCVLE, 0,    {B24}},
10042
{"e_bl",  BD24(30,0,1), BD24_MASK,  PPCVLE, 0,    {B24}},
10043
{"e_bdnz",  EBD15(30,8,BO32DNZ,0),  EBD15_MASK, PPCVLE, EXT,  {B15}},
10044
{"e_bdnzl", EBD15(30,8,BO32DNZ,1),  EBD15_MASK, PPCVLE, EXT,  {B15}},
10045
{"e_bdz", EBD15(30,8,BO32DZ,0), EBD15_MASK, PPCVLE, EXT,  {B15}},
10046
{"e_bdzl",  EBD15(30,8,BO32DZ,1), EBD15_MASK, PPCVLE, EXT,  {B15}},
10047
{"e_bge", EBD15BI(30,8,BO32F,CBLT,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10048
{"e_bgel",  EBD15BI(30,8,BO32F,CBLT,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10049
{"e_bnl", EBD15BI(30,8,BO32F,CBLT,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10050
{"e_bnll",  EBD15BI(30,8,BO32F,CBLT,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10051
{"e_blt", EBD15BI(30,8,BO32T,CBLT,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10052
{"e_bltl",  EBD15BI(30,8,BO32T,CBLT,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10053
{"e_bgt", EBD15BI(30,8,BO32T,CBGT,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10054
{"e_bgtl",  EBD15BI(30,8,BO32T,CBGT,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10055
{"e_ble", EBD15BI(30,8,BO32F,CBGT,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10056
{"e_blel",  EBD15BI(30,8,BO32F,CBGT,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10057
{"e_bng", EBD15BI(30,8,BO32F,CBGT,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10058
{"e_bngl",  EBD15BI(30,8,BO32F,CBGT,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10059
{"e_bne", EBD15BI(30,8,BO32F,CBEQ,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10060
{"e_bnel",  EBD15BI(30,8,BO32F,CBEQ,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10061
{"e_beq", EBD15BI(30,8,BO32T,CBEQ,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10062
{"e_beql",  EBD15BI(30,8,BO32T,CBEQ,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10063
{"e_bso", EBD15BI(30,8,BO32T,CBSO,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10064
{"e_bsol",  EBD15BI(30,8,BO32T,CBSO,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10065
{"e_bun", EBD15BI(30,8,BO32T,CBSO,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10066
{"e_bunl",  EBD15BI(30,8,BO32T,CBSO,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10067
{"e_bns", EBD15BI(30,8,BO32F,CBSO,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10068
{"e_bnsl",  EBD15BI(30,8,BO32F,CBSO,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10069
{"e_bnu", EBD15BI(30,8,BO32F,CBSO,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10070
{"e_bnul",  EBD15BI(30,8,BO32F,CBSO,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10071
{"e_bc",  BD15(30,8,0), BD15_MASK,  PPCVLE, 0,    {BO32, BI32, B15}},
10072
{"e_bcl", BD15(30,8,1), BD15_MASK,  PPCVLE, 0,    {BO32, BI32, B15}},
10073
10074
{"e_bf",  EBD15(30,8,BO32F,0), EBD15_MASK, PPCVLE, EXT,   {BI32,B15}},
10075
{"e_bfl", EBD15(30,8,BO32F,1), EBD15_MASK, PPCVLE, EXT,   {BI32,B15}},
10076
{"e_bt",  EBD15(30,8,BO32T,0), EBD15_MASK, PPCVLE, EXT,   {BI32,B15}},
10077
{"e_btl", EBD15(30,8,BO32T,1), EBD15_MASK, PPCVLE, EXT,   {BI32,B15}},
10078
10079
{"e_cmph",  X(31,14), X_MASK,   PPCVLE, 0,    {CRD, RA, RB}},
10080
{"e_sc",  X(31,36), XRTRA_MASK, PPCVLE, 0,    {ELEV}},
10081
{"e_cmphl", X(31,46), X_MASK,   PPCVLE, 0,    {CRD, RA, RB}},
10082
{"e_crandc",  XL(31,129), XL_MASK,  PPCVLE, 0,    {BT, BA, BB}},
10083
{"e_crnand",  XL(31,225), XL_MASK,  PPCVLE, 0,    {BT, BA, BB}},
10084
{"e_crnot", XL(31,33),  XL_MASK,  PPCVLE, EXT,    {BT, BAB}},
10085
{"e_crnor", XL(31,33),  XL_MASK,  PPCVLE, 0,    {BT, BA, BB}},
10086
{"e_crclr", XL(31,193), XL_MASK,  PPCVLE, EXT,    {BTAB}},
10087
{"e_crxor", XL(31,193), XL_MASK,  PPCVLE, 0,    {BT, BA, BB}},
10088
{"e_mcrf",  XL(31,16),  XL_MASK,  PPCVLE, 0,    {CRD, CR}},
10089
{"e_slwi",  EX(31,112), EX_MASK,  PPCVLE, 0,    {RA, RS, SH}},
10090
{"e_slwi.", EX(31,113), EX_MASK,  PPCVLE, 0,    {RA, RS, SH}},
10091
10092
{"e_crand", XL(31,257), XL_MASK,  PPCVLE, 0,    {BT, BA, BB}},
10093
10094
{"e_rlw", EX(31,560), EX_MASK,  PPCVLE, 0,    {RA, RS, RB}},
10095
{"e_rlw.",  EX(31,561), EX_MASK,  PPCVLE, 0,    {RA, RS, RB}},
10096
10097
{"e_crset", XL(31,289), XL_MASK,  PPCVLE, EXT,    {BTAB}},
10098
{"e_creqv", XL(31,289), XL_MASK,  PPCVLE, 0,    {BT, BA, BB}},
10099
10100
{"e_rlwi",  EX(31,624), EX_MASK,  PPCVLE, 0,    {RA, RS, SH}},
10101
{"e_rlwi.", EX(31,625), EX_MASK,  PPCVLE, 0,    {RA, RS, SH}},
10102
10103
{"e_crorc", XL(31,417), XL_MASK,  PPCVLE, 0,    {BT, BA, BB}},
10104
10105
{"e_crmove",  XL(31,449), XL_MASK,  PPCVLE, EXT,    {BT, BAB}},
10106
{"e_cror",  XL(31,449), XL_MASK,  PPCVLE, 0,    {BT, BA, BB}},
10107
10108
{"mtmas1",  XSPR(31,467,625), XSPR_MASK,  PPCVLE, EXT,    {RS}},
10109
10110
{"e_srwi",  EX(31,1136),  EX_MASK,  PPCVLE, 0,    {RA, RS, SH}},
10111
{"e_srwi.", EX(31,1137),  EX_MASK,  PPCVLE, 0,    {RA, RS, SH}},
10112
10113
{"se_lbz",  SD4(8),   SD4_MASK, PPCVLE, 0,    {RZ, SE_SD, RX}},
10114
10115
{"se_stb",  SD4(9),   SD4_MASK, PPCVLE, 0,    {RZ, SE_SD, RX}},
10116
10117
{"se_lhz",  SD4(10),  SD4_MASK, PPCVLE, 0,    {RZ, SE_SDH, RX}},
10118
10119
{"se_sth",  SD4(11),  SD4_MASK, PPCVLE, 0,    {RZ, SE_SDH, RX}},
10120
10121
{"se_lwz",  SD4(12),  SD4_MASK, PPCVLE, 0,    {RZ, SE_SDW, RX}},
10122
10123
{"se_stw",  SD4(13),  SD4_MASK, PPCVLE, 0,    {RZ, SE_SDW, RX}},
10124
10125
{"se_bge",  EBD8IO(28,0,0), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10126
{"se_bnl",  EBD8IO(28,0,0), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10127
{"se_ble",  EBD8IO(28,0,1), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10128
{"se_bng",  EBD8IO(28,0,1), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10129
{"se_bne",  EBD8IO(28,0,2), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10130
{"se_bns",  EBD8IO(28,0,3), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10131
{"se_bnu",  EBD8IO(28,0,3), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10132
{"se_bf", EBD8IO(28,0,0), EBD8IO2_MASK, PPCVLE, EXT,    {BI16, B8}},
10133
{"se_blt",  EBD8IO(28,1,0), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10134
{"se_bgt",  EBD8IO(28,1,1), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10135
{"se_beq",  EBD8IO(28,1,2), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10136
{"se_bso",  EBD8IO(28,1,3), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10137
{"se_bun",  EBD8IO(28,1,3), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10138
{"se_bt", EBD8IO(28,1,0), EBD8IO2_MASK, PPCVLE, EXT,    {BI16, B8}},
10139
{"se_bc", BD8IO(28),  BD8IO_MASK, PPCVLE, 0,    {BO16, BI16, B8}},
10140
{"se_b",  BD8(58,0,0),  BD8_MASK, PPCVLE, 0,    {B8}},
10141
{"se_bl", BD8(58,0,1),  BD8_MASK, PPCVLE, 0,    {B8}},
10142
};
10143
10144
const unsigned int vle_num_opcodes = ARRAY_SIZE (vle_opcodes);
10145
10146
const struct powerpc_opcode lsp_opcodes[] = {
10147
{"zvaddih",       VX(4, 0x200), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM}},
10148
{"zvsubifh",        VX(4, 0x201), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM}},
10149
{"zvaddh",        VX(4, 0x204), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10150
{"zvsubfh",       VX(4, 0x205), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10151
{"zvaddsubfh",        VX(4, 0x206), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10152
{"zvsubfaddh",        VX(4, 0x207), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10153
{"zvaddhx",       VX(4, 0x20C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10154
{"zvsubfhx",        VX(4, 0x20D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10155
{"zvaddsubfhx",       VX(4, 0x20E), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10156
{"zvsubfaddhx",       VX(4, 0x20F), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10157
{"zaddwus",       VX(4, 0x210), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10158
{"zsubfwus",        VX(4, 0x211), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10159
{"zaddwss",       VX(4, 0x212), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10160
{"zsubfwss",        VX(4, 0x213), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10161
{"zvaddhus",        VX(4, 0x214), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10162
{"zvsubfhus",       VX(4, 0x215), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10163
{"zvaddhss",        VX(4, 0x216), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10164
{"zvsubfhss",       VX(4, 0x217), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10165
{"zvaddsubfhss",      VX(4, 0x21A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10166
{"zvsubfaddhss",      VX(4, 0x21B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10167
{"zvaddhxss",       VX(4, 0x21C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10168
{"zvsubfhxss",        VX(4, 0x21D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10169
{"zvaddsubfhxss",     VX(4, 0x21E), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10170
{"zvsubfaddhxss",     VX(4, 0x21F), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10171
{"zaddheuw",        VX(4, 0x220), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10172
{"zsubfheuw",       VX(4, 0x221), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10173
{"zaddhesw",        VX(4, 0x222), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10174
{"zsubfhesw",       VX(4, 0x223), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10175
{"zaddhouw",        VX(4, 0x224), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10176
{"zsubfhouw",       VX(4, 0x225), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10177
{"zaddhosw",        VX(4, 0x226), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10178
{"zsubfhosw",       VX(4, 0x227), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10179
{"zvmergehih",        VX(4, 0x22C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10180
{"zvmergeloh",        VX(4, 0x22D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10181
{"zvmergehiloh",      VX(4, 0x22E), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10182
{"zvmergelohih",      VX(4, 0x22F), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10183
{"zvcmpgthu",       VX(4, 0x230), VX_MASK,  PPCLSP, 0,    {CRFD, RA, RB}},
10184
{"zvcmpgths",       VX(4, 0x230), VX_MASK,  PPCLSP, 0,    {CRFD, RA, RB}},
10185
{"zvcmplthu",       VX(4, 0x231), VX_MASK,  PPCLSP, 0,    {CRFD, RA, RB}},
10186
{"zvcmplths",       VX(4, 0x231), VX_MASK,  PPCLSP, 0,    {CRFD, RA, RB}},
10187
{"zvcmpeqh",        VX(4, 0x232), VX_MASK,  PPCLSP, 0,    {CRFD, RA, RB}},
10188
{"zpkswgshfrs",       VX(4, 0x238), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10189
{"zpkswgswfrs",       VX(4, 0x239), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10190
{"zvpkshgwshfrs",     VX(4, 0x23A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10191
{"zvpkswshfrs",       VX(4, 0x23B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10192
{"zvpkswuhs",       VX(4, 0x23C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10193
{"zvpkswshs",       VX(4, 0x23D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10194
{"zvpkuwuhs",       VX(4, 0x23E), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10195
{"zvsplatih",       VX_LSP(4, 0x23F), VX_LSP_MASK, PPCLSP, 0,   {RD, SIMM}},
10196
{"zvsplatfih",        VX_LSP(4, 0xA3F), VX_LSP_MASK, PPCLSP, 0,   {RD, SIMM}},
10197
{"zcntlsw",       VX_LSP(4, 0x2A3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10198
{"zvcntlzh",        VX_LSP(4, 0x323F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10199
{"zvcntlsh",        VX_LSP(4, 0x3A3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10200
{"znegws",        VX_LSP(4, 0x4A3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10201
{"zvnegh",        VX_LSP(4, 0x523F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10202
{"zvneghs",       VX_LSP(4, 0x5A3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10203
{"zvnegho",       VX_LSP(4, 0x623F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10204
{"zvneghos",        VX_LSP(4, 0x6A3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10205
{"zrndwh",        VX_LSP(4, 0x823F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10206
{"zrndwhss",        VX_LSP(4, 0x8A3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10207
{"zvabsh",        VX_LSP(4, 0xA23F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10208
{"zvabshs",       VX_LSP(4, 0xAA3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10209
{"zabsw",       VX_LSP(4, 0xB23F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10210
{"zabsws",        VX_LSP(4, 0xBA3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10211
{"zsatswuw",        VX_LSP(4, 0xC23F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10212
{"zsatuwsw",        VX_LSP(4, 0xCA3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10213
{"zsatswuh",        VX_LSP(4, 0xD23F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10214
{"zsatswsh",        VX_LSP(4, 0xDA3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10215
{"zvsatshuh",       VX_LSP(4, 0xE23F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10216
{"zvsatuhsh",       VX_LSP(4, 0xEA3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10217
{"zsatuwuh",        VX_LSP(4, 0xF23F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10218
{"zsatuwsh",        VX_LSP(4, 0xFA3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10219
{"zsatsduw",        VX(4, 0x260), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10220
{"zsatsdsw",        VX(4, 0x261), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10221
{"zsatuduw",        VX(4, 0x262), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10222
{"zvselh",        VX(4, 0x264), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10223
{"zxtrw",       VX(4, 0x264), VX_LSP_OFF_MASK, PPCLSP, 0,   {RD, RA, RB, VX_OFF}},
10224
{"zbrminc",       VX(4, 0x268), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10225
{"zcircinc",        VX(4, 0x269), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10226
{"zdivwsf",       VX(4, 0x26B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10227
{"zvsrhu",        VX(4, 0x270), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10228
{"zvsrhs",        VX(4, 0x271), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10229
{"zvsrhiu",       VX(4, 0x272), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM_LT16}},
10230
{"zvsrhis",       VX(4, 0x273), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM_LT16}},
10231
{"zvslh",       VX(4, 0x274), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10232
{"zvrlh",       VX(4, 0x275), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10233
{"zvslhi",        VX(4, 0x276), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM_LT16}},
10234
{"zvrlhi",        VX(4, 0x277), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM_LT16}},
10235
{"zvslhus",       VX(4, 0x278), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10236
{"zvslhss",       VX(4, 0x279), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10237
{"zvslhius",        VX(4, 0x27A), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM_LT16}},
10238
{"zvslhiss",        VX(4, 0x27B), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM_LT16}},
10239
{"zslwus",        VX(4, 0x27C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10240
{"zslwss",        VX(4, 0x27D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10241
{"zslwius",       VX(4, 0x27E), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM}},
10242
{"zslwiss",       VX(4, 0x27F), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM}},
10243
{"zlddx",       VX(4, 0x300), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10244
{"zldd",        VX(4, 0x301), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_8, RA}},
10245
{"zldwx",       VX(4, 0x302), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10246
{"zldw",        VX(4, 0x303), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_8, RA}},
10247
{"zldhx",       VX(4, 0x304), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10248
{"zldh",        VX(4, 0x305), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_8, RA}},
10249
{"zlwgsfdx",        VX(4, 0x308), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10250
{"zlwgsfd",       VX(4, 0x309), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4, RA}},
10251
{"zlwwosdx",        VX(4, 0x30A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10252
{"zlwwosd",       VX(4, 0x30B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4, RA}},
10253
{"zlwhsplatwdx",      VX(4, 0x30C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10254
{"zlwhsplatwd",       VX(4, 0x30D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4, RA}},
10255
{"zlwhsplatdx",       VX(4, 0x30E), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10256
{"zlwhsplatd",        VX(4, 0x30F), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4, RA}},
10257
{"zlwhgwsfdx",        VX(4, 0x310), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10258
{"zlwhgwsfd",       VX(4, 0x311), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4, RA}},
10259
{"zlwhedx",       VX(4, 0x312), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10260
{"zlwhed",        VX(4, 0x313), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4, RA}},
10261
{"zlwhosdx",        VX(4, 0x314), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10262
{"zlwhosd",       VX(4, 0x315), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4, RA}},
10263
{"zlwhoudx",        VX(4, 0x316), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10264
{"zlwhoud",       VX(4, 0x317), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4, RA}},
10265
{"zlwhx",       VX(4, 0x318), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10266
{"zlwh",        VX(4, 0x319), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_4, RA}},
10267
{"zlwwx",       VX(4, 0x31A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10268
{"zlww",        VX(4, 0x31B), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_4, RA}},
10269
{"zlhgwsfx",        VX(4, 0x31C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10270
{"zlhgwsf",       VX(4, 0x31D), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2, RA}},
10271
{"zlhhsplatx",        VX(4, 0x31E), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10272
{"zlhhsplat",       VX(4, 0x31F), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2, RA}},
10273
{"zstddx",        VX(4, 0x320), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10274
{"zstdd",       VX(4, 0x321), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_8, RA}},
10275
{"zstdwx",        VX(4, 0x322), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10276
{"zstdw",       VX(4, 0x323), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_8, RA}},
10277
{"zstdhx",        VX(4, 0x324), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10278
{"zstdh",       VX(4, 0x325), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_8, RA}},
10279
{"zstwhedx",        VX(4, 0x328), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10280
{"zstwhed",       VX(4, 0x329), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_4, RA}},
10281
{"zstwhodx",        VX(4, 0x32A), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10282
{"zstwhod",       VX(4, 0x32B), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_4, RA}},
10283
{"zlhhex",        VX(4, 0x330), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10284
{"zlhhe",       VX(4, 0x331), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2, RA}},
10285
{"zlhhosx",       VX(4, 0x332), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10286
{"zlhhos",        VX(4, 0x333), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2, RA}},
10287
{"zlhhoux",       VX(4, 0x334), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10288
{"zlhhou",        VX(4, 0x335), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2, RA}},
10289
{"zsthex",        VX(4, 0x338), VX_MASK,  PPCLSP, 0,    {RS, RA, RB}},
10290
{"zsthe",       VX(4, 0x339), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_2, RA}},
10291
{"zsthox",        VX(4, 0x33A), VX_MASK,  PPCLSP, 0,    {RS, RA, RB}},
10292
{"zstho",       VX(4, 0x33B), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_2, RA}},
10293
{"zstwhx",        VX(4, 0x33C), VX_MASK,  PPCLSP, 0,    {RS, RA, RB}},
10294
{"zstwh",       VX(4, 0x33D), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_4, RA}},
10295
{"zstwwx",        VX(4, 0x33E), VX_MASK,  PPCLSP, 0,    {RS, RA, RB}},
10296
{"zstww",       VX(4, 0x33F), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_4, RA}},
10297
{"zlddmx",        VX(4, 0x340), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10298
{"zlddu",       VX(4, 0x341), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_8_EX0, RA}},
10299
{"zldwmx",        VX(4, 0x342), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10300
{"zldwu",       VX(4, 0x343), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_8_EX0, RA}},
10301
{"zldhmx",        VX(4, 0x344), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10302
{"zldhu",       VX(4, 0x345), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_8_EX0, RA}},
10303
{"zlwgsfdmx",       VX(4, 0x348), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10304
{"zlwgsfdu",        VX(4, 0x349), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4_EX0, RA}},
10305
{"zlwwosdmx",       VX(4, 0x34A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10306
{"zlwwosdu",        VX(4, 0x34B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4_EX0, RA}},
10307
{"zlwhsplatwdmx",     VX(4, 0x34C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10308
{"zlwhsplatwdu",      VX(4, 0x34D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4_EX0, RA}},
10309
{"zlwhsplatdmx",      VX(4, 0x34E), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10310
{"zlwhsplatdu",       VX(4, 0x34F), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4_EX0, RA}},
10311
{"zlwhgwsfdmx",       VX(4, 0x350), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10312
{"zlwhgwsfdu",        VX(4, 0x351), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4_EX0, RA}},
10313
{"zlwhedmx",        VX(4, 0x352), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10314
{"zlwhedu",       VX(4, 0x353), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4_EX0, RA}},
10315
{"zlwhosdmx",       VX(4, 0x354), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10316
{"zlwhosdu",        VX(4, 0x355), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4_EX0, RA}},
10317
{"zlwhoudmx",       VX(4, 0x356), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10318
{"zlwhoudu",        VX(4, 0x357), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4_EX0, RA}},
10319
{"zlwhmx",        VX(4, 0x358), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10320
{"zlwhu",       VX(4, 0x359), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_4_EX0, RA}},
10321
{"zlwwmx",        VX(4, 0x35A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10322
{"zlwwu",       VX(4, 0x35B), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_4_EX0, RA}},
10323
{"zlhgwsfmx",       VX(4, 0x35C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10324
{"zlhgwsfu",        VX(4, 0x35D), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2_EX0, RA}},
10325
{"zlhhsplatmx",       VX(4, 0x35E), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10326
{"zlhhsplatu",        VX(4, 0x35F), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2_EX0, RA}},
10327
{"zstddmx",       VX(4, 0x360), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10328
{"zstddu",        VX(4, 0x361), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_8_EX0, RA}},
10329
{"zstdwmx",       VX(4, 0x362), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10330
{"zstdwu",        VX(4, 0x363), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_8_EX0, RA}},
10331
{"zstdhmx",       VX(4, 0x364), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10332
{"zstdhu",        VX(4, 0x365), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_8_EX0, RA}},
10333
{"zstwhedmx",       VX(4, 0x368), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10334
{"zstwhedu",        VX(4, 0x369), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_4_EX0, RA}},
10335
{"zstwhodmx",       VX(4, 0x36A), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10336
{"zstwhodu",        VX(4, 0x36B), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_4_EX0, RA}},
10337
{"zlhhemx",       VX(4, 0x370), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10338
{"zlhheu",        VX(4, 0x371), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2_EX0, RA}},
10339
{"zlhhosmx",        VX(4, 0x372), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10340
{"zlhhosu",       VX(4, 0x373), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2_EX0, RA}},
10341
{"zlhhoumx",        VX(4, 0x374), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10342
{"zlhhouu",       VX(4, 0x375), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2_EX0, RA}},
10343
{"zsthemx",       VX(4, 0x378), VX_MASK,  PPCLSP, 0,    {RS, RA, RB}},
10344
{"zstheu",        VX(4, 0x379), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_2_EX0, RA}},
10345
{"zsthomx",       VX(4, 0x37A), VX_MASK,  PPCLSP, 0,    {RS, RA, RB}},
10346
{"zsthou",        VX(4, 0x37B), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_2_EX0, RA}},
10347
{"zstwhmx",       VX(4, 0x37C), VX_MASK,  PPCLSP, 0,    {RS, RA, RB}},
10348
{"zstwhu",        VX(4, 0x37D), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_4_EX0, RA}},
10349
{"zstwwmx",       VX(4, 0x37E), VX_MASK,  PPCLSP, 0,    {RS, RA, RB}},
10350
{"zstwwu",        VX(4, 0x37F), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_4_EX0, RA}},
10351
{"zaddwgui",        VX(4, 0x460), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10352
{"zsubfwgui",       VX(4, 0x461), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10353
{"zaddd",       VX(4, 0x462), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10354
{"zsubfd",        VX(4, 0x463), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10355
{"zvaddsubfw",        VX(4, 0x464), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10356
{"zvsubfaddw",        VX(4, 0x465), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10357
{"zvaddw",        VX(4, 0x466), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10358
{"zvsubfw",       VX(4, 0x467), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10359
{"zaddwgsi",        VX(4, 0x468), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10360
{"zsubfwgsi",       VX(4, 0x469), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10361
{"zadddss",       VX(4, 0x46A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10362
{"zsubfdss",        VX(4, 0x46B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10363
{"zvaddsubfwss",      VX(4, 0x46C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10364
{"zvsubfaddwss",      VX(4, 0x46D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10365
{"zvaddwss",        VX(4, 0x46E), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10366
{"zvsubfwss",       VX(4, 0x46F), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10367
{"zaddwgsf",        VX(4, 0x470), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10368
{"zsubfwgsf",       VX(4, 0x471), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10369
{"zadddus",       VX(4, 0x472), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10370
{"zsubfdus",        VX(4, 0x473), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10371
{"zvaddwus",        VX(4, 0x476), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10372
{"zvsubfwus",       VX(4, 0x477), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10373
{"zvunpkhgwsf",       VX_LSP(4, 0x478), VX_LSP_MASK, PPCLSP, 0,   {RD_EVEN, RA}},
10374
{"zvunpkhsf",       VX_LSP(4, 0xC78), VX_LSP_MASK, PPCLSP, 0,   {RD_EVEN, RA}},
10375
{"zvunpkhui",       VX_LSP(4, 0x1478), VX_LSP_MASK, PPCLSP, 0,  {RD_EVEN, RA}},
10376
{"zvunpkhsi",       VX_LSP(4, 0x1C78), VX_LSP_MASK, PPCLSP, 0,  {RD_EVEN, RA}},
10377
{"zunpkwgsf",       VX_LSP(4, 0x2478), VX_LSP_MASK, PPCLSP, 0,  {RD_EVEN, RA}},
10378
{"zvdotphgwasmf",     VX(4, 0x488), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10379
{"zvdotphgwasmfr",    VX(4, 0x489), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10380
{"zvdotphgwasmfaa",   VX(4, 0x48A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10381
{"zvdotphgwasmfraa",  VX(4, 0x48B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10382
{"zvdotphgwasmfan",   VX(4, 0x48C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10383
{"zvdotphgwasmfran",  VX(4, 0x48D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10384
{"zvmhulgwsmf",       VX(4, 0x490), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10385
{"zvmhulgwsmfr",      VX(4, 0x491), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10386
{"zvmhulgwsmfaa",     VX(4, 0x492), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10387
{"zvmhulgwsmfraa",    VX(4, 0x493), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10388
{"zvmhulgwsmfan",     VX(4, 0x494), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10389
{"zvmhulgwsmfran",    VX(4, 0x495), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10390
{"zvmhulgwsmfanp",    VX(4, 0x496), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10391
{"zvmhulgwsmfranp",   VX(4, 0x497), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10392
{"zmhegwsmf",       VX(4, 0x498), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10393
{"zmhegwsmfr",        VX(4, 0x499), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10394
{"zmhegwsmfaa",       VX(4, 0x49A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10395
{"zmhegwsmfraa",      VX(4, 0x49B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10396
{"zmhegwsmfan",       VX(4, 0x49C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10397
{"zmhegwsmfran",      VX(4, 0x49D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10398
{"zvdotphxgwasmf",    VX(4, 0x4A8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10399
{"zvdotphxgwasmfr",   VX(4, 0x4A9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10400
{"zvdotphxgwasmfaa",  VX(4, 0x4AA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10401
{"zvdotphxgwasmfraa", VX(4, 0x4AB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10402
{"zvdotphxgwasmfan",  VX(4, 0x4AC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10403
{"zvdotphxgwasmfran", VX(4, 0x4AD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10404
{"zvmhllgwsmf",       VX(4, 0x4B0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10405
{"zvmhllgwsmfr",      VX(4, 0x4B1), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10406
{"zvmhllgwsmfaa",     VX(4, 0x4B2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10407
{"zvmhllgwsmfraa",    VX(4, 0x4B3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10408
{"zvmhllgwsmfan",     VX(4, 0x4B4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10409
{"zvmhllgwsmfran",    VX(4, 0x4B5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10410
{"zvmhllgwsmfanp",    VX(4, 0x4B6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10411
{"zvmhllgwsmfranp",   VX(4, 0x4B7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10412
{"zmheogwsmf",        VX(4, 0x4B8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10413
{"zmheogwsmfr",       VX(4, 0x4B9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10414
{"zmheogwsmfaa",      VX(4, 0x4BA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10415
{"zmheogwsmfraa",     VX(4, 0x4BB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10416
{"zmheogwsmfan",      VX(4, 0x4BC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10417
{"zmheogwsmfran",     VX(4, 0x4BD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10418
{"zvdotphgwssmf",     VX(4, 0x4C8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10419
{"zvdotphgwssmfr",    VX(4, 0x4C9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10420
{"zvdotphgwssmfaa",   VX(4, 0x4CA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10421
{"zvdotphgwssmfraa",  VX(4, 0x4CB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10422
{"zvdotphgwssmfan",   VX(4, 0x4CC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10423
{"zvdotphgwssmfran",  VX(4, 0x4CD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10424
{"zvmhuugwsmf",       VX(4, 0x4D0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10425
{"zvmhuugwsmfr",      VX(4, 0x4D1), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10426
{"zvmhuugwsmfaa",     VX(4, 0x4D2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10427
{"zvmhuugwsmfraa",    VX(4, 0x4D3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10428
{"zvmhuugwsmfan",     VX(4, 0x4D4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10429
{"zvmhuugwsmfran",    VX(4, 0x4D5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10430
{"zvmhuugwsmfanp",    VX(4, 0x4D6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10431
{"zvmhuugwsmfranp",   VX(4, 0x4D7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10432
{"zmhogwsmf",       VX(4, 0x4D8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10433
{"zmhogwsmfr",        VX(4, 0x4D9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10434
{"zmhogwsmfaa",       VX(4, 0x4DA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10435
{"zmhogwsmfraa",      VX(4, 0x4DB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10436
{"zmhogwsmfan",       VX(4, 0x4DC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10437
{"zmhogwsmfran",      VX(4, 0x4DD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10438
{"zvmhxlgwsmf",       VX(4, 0x4F0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10439
{"zvmhxlgwsmfr",      VX(4, 0x4F1), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10440
{"zvmhxlgwsmfaa",     VX(4, 0x4F2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10441
{"zvmhxlgwsmfraa",    VX(4, 0x4F3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10442
{"zvmhxlgwsmfan",     VX(4, 0x4F4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10443
{"zvmhxlgwsmfran",    VX(4, 0x4F5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10444
{"zvmhxlgwsmfanp",    VX(4, 0x4F6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10445
{"zvmhxlgwsmfranp",   VX(4, 0x4F7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10446
{"zmhegui",       VX(4, 0x500), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10447
{"zvdotphgaui",       VX(4, 0x501), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10448
{"zmheguiaa",       VX(4, 0x502), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10449
{"zvdotphgauiaa",     VX(4, 0x503), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10450
{"zmheguian",       VX(4, 0x504), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10451
{"zvdotphgauian",     VX(4, 0x505), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10452
{"zmhegsi",       VX(4, 0x508), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10453
{"zvdotphgasi",       VX(4, 0x509), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10454
{"zmhegsiaa",       VX(4, 0x50A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10455
{"zvdotphgasiaa",     VX(4, 0x50B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10456
{"zmhegsian",       VX(4, 0x50C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10457
{"zvdotphgasian",     VX(4, 0x50D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10458
{"zmhegsui",        VX(4, 0x510), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10459
{"zvdotphgasui",      VX(4, 0x511), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10460
{"zmhegsuiaa",        VX(4, 0x512), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10461
{"zvdotphgasuiaa",    VX(4, 0x513), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10462
{"zmhegsuian",        VX(4, 0x514), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10463
{"zvdotphgasuian",    VX(4, 0x515), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10464
{"zmhegsmf",        VX(4, 0x518), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10465
{"zvdotphgasmf",      VX(4, 0x519), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10466
{"zmhegsmfaa",        VX(4, 0x51A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10467
{"zvdotphgasmfaa",    VX(4, 0x51B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10468
{"zmhegsmfan",        VX(4, 0x51C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10469
{"zvdotphgasmfan",    VX(4, 0x51D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10470
{"zmheogui",        VX(4, 0x520), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10471
{"zvdotphxgaui",      VX(4, 0x521), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10472
{"zmheoguiaa",        VX(4, 0x522), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10473
{"zvdotphxgauiaa",    VX(4, 0x523), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10474
{"zmheoguian",        VX(4, 0x524), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10475
{"zvdotphxgauian",    VX(4, 0x525), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10476
{"zmheogsi",        VX(4, 0x528), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10477
{"zvdotphxgasi",      VX(4, 0x529), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10478
{"zmheogsiaa",        VX(4, 0x52A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10479
{"zvdotphxgasiaa",    VX(4, 0x52B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10480
{"zmheogsian",        VX(4, 0x52C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10481
{"zvdotphxgasian",    VX(4, 0x52D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10482
{"zmheogsui",       VX(4, 0x530), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10483
{"zvdotphxgasui",     VX(4, 0x531), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10484
{"zmheogsuiaa",       VX(4, 0x532), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10485
{"zvdotphxgasuiaa",   VX(4, 0x533), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10486
{"zmheogsuian",       VX(4, 0x534), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10487
{"zvdotphxgasuian",   VX(4, 0x535), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10488
{"zmheogsmf",       VX(4, 0x538), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10489
{"zvdotphxgasmf",     VX(4, 0x539), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10490
{"zmheogsmfaa",       VX(4, 0x53A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10491
{"zvdotphxgasmfaa",   VX(4, 0x53B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10492
{"zmheogsmfan",       VX(4, 0x53C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10493
{"zvdotphxgasmfan",   VX(4, 0x53D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10494
{"zmhogui",       VX(4, 0x540), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10495
{"zvdotphgsui",       VX(4, 0x541), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10496
{"zmhoguiaa",       VX(4, 0x542), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10497
{"zvdotphgsuiaa",     VX(4, 0x543), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10498
{"zmhoguian",       VX(4, 0x544), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10499
{"zvdotphgsuian",     VX(4, 0x545), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10500
{"zmhogsi",       VX(4, 0x548), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10501
{"zvdotphgssi",       VX(4, 0x549), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10502
{"zmhogsiaa",       VX(4, 0x54A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10503
{"zvdotphgssiaa",     VX(4, 0x54B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10504
{"zmhogsian",       VX(4, 0x54C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10505
{"zvdotphgssian",     VX(4, 0x54D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10506
{"zmhogsui",        VX(4, 0x550), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10507
{"zvdotphgssui",      VX(4, 0x551), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10508
{"zmhogsuiaa",        VX(4, 0x552), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10509
{"zvdotphgssuiaa",    VX(4, 0x553), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10510
{"zmhogsuian",        VX(4, 0x554), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10511
{"zvdotphgssuian",    VX(4, 0x555), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10512
{"zmhogsmf",        VX(4, 0x558), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10513
{"zvdotphgssmf",      VX(4, 0x559), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10514
{"zmhogsmfaa",        VX(4, 0x55A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10515
{"zvdotphgssmfaa",    VX(4, 0x55B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10516
{"zmhogsmfan",        VX(4, 0x55C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10517
{"zvdotphgssmfan",    VX(4, 0x55D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10518
{"zmwgui",        VX(4, 0x560), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10519
{"zmwguiaa",        VX(4, 0x562), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10520
{"zmwguiaas",       VX(4, 0x563), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10521
{"zmwguian",        VX(4, 0x564), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10522
{"zmwguians",       VX(4, 0x565), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10523
{"zmwgsi",        VX(4, 0x568), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10524
{"zmwgsiaa",        VX(4, 0x56A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10525
{"zmwgsiaas",       VX(4, 0x56B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10526
{"zmwgsian",        VX(4, 0x56C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10527
{"zmwgsians",       VX(4, 0x56D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10528
{"zmwgsui",       VX(4, 0x570), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10529
{"zmwgsuiaa",       VX(4, 0x572), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10530
{"zmwgsuiaas",        VX(4, 0x573), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10531
{"zmwgsuian",       VX(4, 0x574), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10532
{"zmwgsuians",        VX(4, 0x575), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10533
{"zmwgsmf",       VX(4, 0x578), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10534
{"zmwgsmfr",        VX(4, 0x579), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10535
{"zmwgsmfaa",       VX(4, 0x57A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10536
{"zmwgsmfraa",        VX(4, 0x57B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10537
{"zmwgsmfan",       VX(4, 0x57C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10538
{"zmwgsmfran",        VX(4, 0x57D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10539
{"zvmhului",        VX(4, 0x580), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10540
{"zvmhuluiaa",        VX(4, 0x582), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10541
{"zvmhuluiaas",       VX(4, 0x583), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10542
{"zvmhuluian",        VX(4, 0x584), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10543
{"zvmhuluians",       VX(4, 0x585), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10544
{"zvmhuluianp",       VX(4, 0x586), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10545
{"zvmhuluianps",      VX(4, 0x587), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10546
{"zvmhulsi",        VX(4, 0x588), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10547
{"zvmhulsiaa",        VX(4, 0x58A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10548
{"zvmhulsiaas",       VX(4, 0x58B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10549
{"zvmhulsian",        VX(4, 0x58C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10550
{"zvmhulsians",       VX(4, 0x58D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10551
{"zvmhulsianp",       VX(4, 0x58E), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10552
{"zvmhulsianps",      VX(4, 0x58F), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10553
{"zvmhulsui",       VX(4, 0x590), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10554
{"zvmhulsuiaa",       VX(4, 0x592), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10555
{"zvmhulsuiaas",      VX(4, 0x593), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10556
{"zvmhulsuian",       VX(4, 0x594), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10557
{"zvmhulsuians",      VX(4, 0x595), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10558
{"zvmhulsuianp",      VX(4, 0x596), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10559
{"zvmhulsuianps",     VX(4, 0x597), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10560
{"zvmhulsf",        VX(4, 0x598), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10561
{"zvmhulsfr",       VX(4, 0x599), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10562
{"zvmhulsfaas",       VX(4, 0x59A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10563
{"zvmhulsfraas",      VX(4, 0x59B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10564
{"zvmhulsfans",       VX(4, 0x59C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10565
{"zvmhulsfrans",      VX(4, 0x59D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10566
{"zvmhulsfanps",      VX(4, 0x59E), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10567
{"zvmhulsfranps",     VX(4, 0x59F), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10568
{"zvmhllui",        VX(4, 0x5A0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10569
{"zvmhlluiaa",        VX(4, 0x5A2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10570
{"zvmhlluiaas",       VX(4, 0x5A3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10571
{"zvmhlluian",        VX(4, 0x5A4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10572
{"zvmhlluians",       VX(4, 0x5A5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10573
{"zvmhlluianp",       VX(4, 0x5A6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10574
{"zvmhlluianps",      VX(4, 0x5A7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10575
{"zvmhllsi",        VX(4, 0x5A8), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10576
{"zvmhllsiaa",        VX(4, 0x5AA), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10577
{"zvmhllsiaas",       VX(4, 0x5AB), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10578
{"zvmhllsian",        VX(4, 0x5AC), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10579
{"zvmhllsians",       VX(4, 0x5AD), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10580
{"zvmhllsianp",       VX(4, 0x5AE), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10581
{"zvmhllsianps",      VX(4, 0x5AF), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10582
{"zvmhllsui",       VX(4, 0x5B0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10583
{"zvmhllsuiaa",       VX(4, 0x5B2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10584
{"zvmhllsuiaas",      VX(4, 0x5B3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10585
{"zvmhllsuian",       VX(4, 0x5B4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10586
{"zvmhllsuians",      VX(4, 0x5B5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10587
{"zvmhllsuianp",      VX(4, 0x5B6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10588
{"zvmhllsuianps",     VX(4, 0x5B7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10589
{"zvmhllsf",        VX(4, 0x5B8), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10590
{"zvmhllsfr",       VX(4, 0x5B9), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10591
{"zvmhllsfaas",       VX(4, 0x5BA), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10592
{"zvmhllsfraas",      VX(4, 0x5BB), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10593
{"zvmhllsfans",       VX(4, 0x5BC), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10594
{"zvmhllsfrans",      VX(4, 0x5BD), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10595
{"zvmhllsfanps",      VX(4, 0x5BE), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10596
{"zvmhllsfranps",     VX(4, 0x5BF), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10597
{"zvmhuuui",        VX(4, 0x5C0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10598
{"zvmhuuuiaa",        VX(4, 0x5C2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10599
{"zvmhuuuiaas",       VX(4, 0x5C3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10600
{"zvmhuuuian",        VX(4, 0x5C4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10601
{"zvmhuuuians",       VX(4, 0x5C5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10602
{"zvmhuuuianp",       VX(4, 0x5C6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10603
{"zvmhuuuianps",      VX(4, 0x5C7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10604
{"zvmhuusi",        VX(4, 0x5C8), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10605
{"zvmhuusiaa",        VX(4, 0x5CA), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10606
{"zvmhuusiaas",       VX(4, 0x5CB), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10607
{"zvmhuusian",        VX(4, 0x5CC), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10608
{"zvmhuusians",       VX(4, 0x5CD), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10609
{"zvmhuusianp",       VX(4, 0x5CE), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10610
{"zvmhuusianps",      VX(4, 0x5CF), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10611
{"zvmhuusui",       VX(4, 0x5D0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10612
{"zvmhuusuiaa",       VX(4, 0x5D2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10613
{"zvmhuusuiaas",      VX(4, 0x5D3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10614
{"zvmhuusuian",       VX(4, 0x5D4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10615
{"zvmhuusuians",      VX(4, 0x5D5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10616
{"zvmhuusuianp",      VX(4, 0x5D6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10617
{"zvmhuusuianps",     VX(4, 0x5D7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10618
{"zvmhuusf",        VX(4, 0x5D8), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10619
{"zvmhuusfr",       VX(4, 0x5D9), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10620
{"zvmhuusfaas",       VX(4, 0x5DA), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10621
{"zvmhuusfraas",      VX(4, 0x5DB), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10622
{"zvmhuusfans",       VX(4, 0x5DC), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10623
{"zvmhuusfrans",      VX(4, 0x5DD), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10624
{"zvmhuusfanps",      VX(4, 0x5DE), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10625
{"zvmhuusfranps",     VX(4, 0x5DF), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10626
{"zvmhxlui",        VX(4, 0x5E0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10627
{"zvmhxluiaa",        VX(4, 0x5E2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10628
{"zvmhxluiaas",       VX(4, 0x5E3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10629
{"zvmhxluian",        VX(4, 0x5E4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10630
{"zvmhxluians",       VX(4, 0x5E5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10631
{"zvmhxluianp",       VX(4, 0x5E6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10632
{"zvmhxluianps",      VX(4, 0x5E7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10633
{"zvmhxlsi",        VX(4, 0x5E8), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10634
{"zvmhxlsiaa",        VX(4, 0x5EA), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10635
{"zvmhxlsiaas",       VX(4, 0x5EB), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10636
{"zvmhxlsian",        VX(4, 0x5EC), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10637
{"zvmhxlsians",       VX(4, 0x5ED), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10638
{"zvmhxlsianp",       VX(4, 0x5EE), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10639
{"zvmhxlsianps",      VX(4, 0x5EF), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10640
{"zvmhxlsui",       VX(4, 0x5F0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10641
{"zvmhxlsuiaa",       VX(4, 0x5F2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10642
{"zvmhxlsuiaas",      VX(4, 0x5F3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10643
{"zvmhxlsuian",       VX(4, 0x5F4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10644
{"zvmhxlsuians",      VX(4, 0x5F5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10645
{"zvmhxlsuianp",      VX(4, 0x5F6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10646
{"zvmhxlsuianps",     VX(4, 0x5F7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10647
{"zvmhxlsf",        VX(4, 0x5F8), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10648
{"zvmhxlsfr",       VX(4, 0x5F9), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10649
{"zvmhxlsfaas",       VX(4, 0x5FA), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10650
{"zvmhxlsfraas",      VX(4, 0x5FB), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10651
{"zvmhxlsfans",       VX(4, 0x5FC), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10652
{"zvmhxlsfrans",      VX(4, 0x5FD), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10653
{"zvmhxlsfanps",      VX(4, 0x5FE), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10654
{"zvmhxlsfranps",     VX(4, 0x5FF), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10655
{"zmheui",        VX(4, 0x600), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10656
{"zmheuiaa",        VX(4, 0x602), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10657
{"zmheuiaas",       VX(4, 0x603), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10658
{"zmheuian",        VX(4, 0x604), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10659
{"zmheuians",       VX(4, 0x605), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10660
{"zmhesi",        VX(4, 0x608), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10661
{"zmhesiaa",        VX(4, 0x60A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10662
{"zmhesiaas",       VX(4, 0x60B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10663
{"zmhesian",        VX(4, 0x60C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10664
{"zmhesians",       VX(4, 0x60D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10665
{"zmhesui",       VX(4, 0x610), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10666
{"zmhesuiaa",       VX(4, 0x612), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10667
{"zmhesuiaas",        VX(4, 0x613), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10668
{"zmhesuian",       VX(4, 0x614), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10669
{"zmhesuians",        VX(4, 0x615), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10670
{"zmhesf",        VX(4, 0x618), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10671
{"zmhesfr",       VX(4, 0x619), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10672
{"zmhesfaas",       VX(4, 0x61A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10673
{"zmhesfraas",        VX(4, 0x61B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10674
{"zmhesfans",       VX(4, 0x61C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10675
{"zmhesfrans",        VX(4, 0x61D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10676
{"zmheoui",       VX(4, 0x620), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10677
{"zmheouiaa",       VX(4, 0x622), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10678
{"zmheouiaas",        VX(4, 0x623), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10679
{"zmheouian",       VX(4, 0x624), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10680
{"zmheouians",        VX(4, 0x625), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10681
{"zmheosi",       VX(4, 0x628), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10682
{"zmheosiaa",       VX(4, 0x62A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10683
{"zmheosiaas",        VX(4, 0x62B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10684
{"zmheosian",       VX(4, 0x62C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10685
{"zmheosians",        VX(4, 0x62D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10686
{"zmheosui",        VX(4, 0x630), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10687
{"zmheosuiaa",        VX(4, 0x632), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10688
{"zmheosuiaas",       VX(4, 0x633), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10689
{"zmheosuian",        VX(4, 0x634), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10690
{"zmheosuians",       VX(4, 0x635), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10691
{"zmheosf",       VX(4, 0x638), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10692
{"zmheosfr",        VX(4, 0x639), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10693
{"zmheosfaas",        VX(4, 0x63A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10694
{"zmheosfraas",       VX(4, 0x63B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10695
{"zmheosfans",        VX(4, 0x63C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10696
{"zmheosfrans",       VX(4, 0x63D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10697
{"zmhoui",        VX(4, 0x640), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10698
{"zmhouiaa",        VX(4, 0x642), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10699
{"zmhouiaas",       VX(4, 0x643), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10700
{"zmhouian",        VX(4, 0x644), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10701
{"zmhouians",       VX(4, 0x645), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10702
{"zmhosi",        VX(4, 0x648), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10703
{"zmhosiaa",        VX(4, 0x64A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10704
{"zmhosiaas",       VX(4, 0x64B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10705
{"zmhosian",        VX(4, 0x64C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10706
{"zmhosians",       VX(4, 0x64D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10707
{"zmhosui",       VX(4, 0x650), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10708
{"zmhosuiaa",       VX(4, 0x652), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10709
{"zmhosuiaas",        VX(4, 0x653), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10710
{"zmhosuian",       VX(4, 0x654), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10711
{"zmhosuians",        VX(4, 0x655), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10712
{"zmhosf",        VX(4, 0x658), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10713
{"zmhosfr",       VX(4, 0x659), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10714
{"zmhosfaas",       VX(4, 0x65A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10715
{"zmhosfraas",        VX(4, 0x65B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10716
{"zmhosfans",       VX(4, 0x65C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10717
{"zmhosfrans",        VX(4, 0x65D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10718
{"zvmhuih",       VX(4, 0x660), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10719
{"zvmhuihs",        VX(4, 0x661), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10720
{"zvmhuiaah",       VX(4, 0x662), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10721
{"zvmhuiaahs",        VX(4, 0x663), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10722
{"zvmhuianh",       VX(4, 0x664), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10723
{"zvmhuianhs",        VX(4, 0x665), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10724
{"zvmhsihs",        VX(4, 0x669), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10725
{"zvmhsiaahs",        VX(4, 0x66B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10726
{"zvmhsianhs",        VX(4, 0x66D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10727
{"zvmhsuihs",       VX(4, 0x671), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10728
{"zvmhsuiaahs",       VX(4, 0x673), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10729
{"zvmhsuianhs",       VX(4, 0x675), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10730
{"zvmhsfh",       VX(4, 0x678), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10731
{"zvmhsfrh",        VX(4, 0x679), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10732
{"zvmhsfaahs",        VX(4, 0x67A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10733
{"zvmhsfraahs",       VX(4, 0x67B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10734
{"zvmhsfanhs",        VX(4, 0x67C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10735
{"zvmhsfranhs",       VX(4, 0x67D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10736
{"zvdotphaui",        VX(4, 0x680), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10737
{"zvdotphauis",       VX(4, 0x681), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10738
{"zvdotphauiaa",      VX(4, 0x682), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10739
{"zvdotphauiaas",     VX(4, 0x683), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10740
{"zvdotphauian",      VX(4, 0x684), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10741
{"zvdotphauians",     VX(4, 0x685), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10742
{"zvdotphasi",        VX(4, 0x688), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10743
{"zvdotphasis",       VX(4, 0x689), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10744
{"zvdotphasiaa",      VX(4, 0x68A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10745
{"zvdotphasiaas",     VX(4, 0x68B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10746
{"zvdotphasian",      VX(4, 0x68C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10747
{"zvdotphasians",     VX(4, 0x68D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10748
{"zvdotphasui",       VX(4, 0x690), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10749
{"zvdotphasuis",      VX(4, 0x691), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10750
{"zvdotphasuiaa",     VX(4, 0x692), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10751
{"zvdotphasuiaas",    VX(4, 0x693), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10752
{"zvdotphasuian",     VX(4, 0x694), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10753
{"zvdotphasuians",    VX(4, 0x695), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10754
{"zvdotphasfs",       VX(4, 0x698), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10755
{"zvdotphasfrs",      VX(4, 0x699), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10756
{"zvdotphasfaas",     VX(4, 0x69A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10757
{"zvdotphasfraas",    VX(4, 0x69B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10758
{"zvdotphasfans",     VX(4, 0x69C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10759
{"zvdotphasfrans",    VX(4, 0x69D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10760
{"zvdotphxaui",       VX(4, 0x6A0), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10761
{"zvdotphxauis",      VX(4, 0x6A1), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10762
{"zvdotphxauiaa",     VX(4, 0x6A2), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10763
{"zvdotphxauiaas",    VX(4, 0x6A3), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10764
{"zvdotphxauian",     VX(4, 0x6A4), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10765
{"zvdotphxauians",    VX(4, 0x6A5), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10766
{"zvdotphxasi",       VX(4, 0x6A8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10767
{"zvdotphxasis",      VX(4, 0x6A9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10768
{"zvdotphxasiaa",     VX(4, 0x6AA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10769
{"zvdotphxasiaas",    VX(4, 0x6AB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10770
{"zvdotphxasian",     VX(4, 0x6AC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10771
{"zvdotphxasians",    VX(4, 0x6AD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10772
{"zvdotphxasui",      VX(4, 0x6B0), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10773
{"zvdotphxasuis",     VX(4, 0x6B1), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10774
{"zvdotphxasuiaa",    VX(4, 0x6B2), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10775
{"zvdotphxasuiaas",   VX(4, 0x6B3), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10776
{"zvdotphxasuian",    VX(4, 0x6B4), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10777
{"zvdotphxasuians",   VX(4, 0x6B5), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10778
{"zvdotphxasfs",      VX(4, 0x6B8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10779
{"zvdotphxasfrs",     VX(4, 0x6B9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10780
{"zvdotphxasfaas",    VX(4, 0x6BA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10781
{"zvdotphxasfraas",   VX(4, 0x6BB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10782
{"zvdotphxasfans",    VX(4, 0x6BC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10783
{"zvdotphxasfrans",   VX(4, 0x6BD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10784
{"zvdotphsui",        VX(4, 0x6C0), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10785
{"zvdotphsuis",       VX(4, 0x6C1), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10786
{"zvdotphsuiaa",      VX(4, 0x6C2), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10787
{"zvdotphsuiaas",     VX(4, 0x6C3), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10788
{"zvdotphsuian",      VX(4, 0x6C4), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10789
{"zvdotphsuians",     VX(4, 0x6C5), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10790
{"zvdotphssi",        VX(4, 0x6C8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10791
{"zvdotphssis",       VX(4, 0x6C9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10792
{"zvdotphssiaa",      VX(4, 0x6CA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10793
{"zvdotphssiaas",     VX(4, 0x6CB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10794
{"zvdotphssian",      VX(4, 0x6CC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10795
{"zvdotphssians",     VX(4, 0x6CD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10796
{"zvdotphssui",       VX(4, 0x6D0), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10797
{"zvdotphssuis",      VX(4, 0x6D1), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10798
{"zvdotphssuiaa",     VX(4, 0x6D2), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10799
{"zvdotphssuiaas",    VX(4, 0x6D3), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10800
{"zvdotphssuian",     VX(4, 0x6D4), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10801
{"zvdotphssuians",    VX(4, 0x6D5), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10802
{"zvdotphssfs",       VX(4, 0x6D8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10803
{"zvdotphssfrs",      VX(4, 0x6D9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10804
{"zvdotphssfaas",     VX(4, 0x6DA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10805
{"zvdotphssfraas",    VX(4, 0x6DB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10806
{"zvdotphssfans",     VX(4, 0x6DC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10807
{"zvdotphssfrans",    VX(4, 0x6DD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10808
{"zmwluis",       VX(4, 0x6E1), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10809
{"zmwluiaa",        VX(4, 0x6E2), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10810
{"zmwluiaas",       VX(4, 0x6E3), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10811
{"zmwluian",        VX(4, 0x6E4), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10812
{"zmwluians",       VX(4, 0x6E5), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10813
{"zmwlsis",       VX(4, 0x6E9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10814
{"zmwlsiaas",       VX(4, 0x6EB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10815
{"zmwlsians",       VX(4, 0x6ED), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10816
{"zmwlsuis",        VX(4, 0x6F1), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10817
{"zmwlsuiaas",        VX(4, 0x6F3), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10818
{"zmwlsuians",        VX(4, 0x6F5), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10819
{"zmwsf",       VX(4, 0x6F8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10820
{"zmwsfr",        VX(4, 0x6F9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10821
{"zmwsfaas",        VX(4, 0x6FA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10822
{"zmwsfraas",       VX(4, 0x6FB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10823
{"zmwsfans",        VX(4, 0x6FC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10824
{"zmwsfrans",       VX(4, 0x6FD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10825
};
10826
10827
const unsigned int lsp_num_opcodes = ARRAY_SIZE (lsp_opcodes);
10828
10829
/* SPE v2 instruction set from SPE2PIM Rev. 2 08/2011 */
10830
const struct powerpc_opcode spe2_opcodes[] = {
10831
{"evdotpwcssi",     VX (4, 128),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10832
{"evdotpwcsmi",     VX (4, 129),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10833
{"evdotpwcssfr",    VX (4, 130),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10834
{"evdotpwcssf",     VX (4, 131),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10835
{"evdotpwgasmf",    VX (4, 136),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10836
{"evdotpwxgasmf",   VX (4, 137),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10837
{"evdotpwgasmfr",   VX (4, 138),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10838
{"evdotpwxgasmfr",    VX (4, 139),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10839
{"evdotpwgssmf",    VX (4, 140),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10840
{"evdotpwxgssmf",   VX (4, 141),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10841
{"evdotpwgssmfr",   VX (4, 142),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10842
{"evdotpwxgssmfr",    VX (4, 143),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10843
{"evdotpwcssiaaw3",   VX (4, 144),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10844
{"evdotpwcsmiaaw3",   VX (4, 145),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10845
{"evdotpwcssfraaw3",    VX (4, 146),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10846
{"evdotpwcssfaaw3",   VX (4, 147),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10847
{"evdotpwgasmfaa3",   VX (4, 152),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10848
{"evdotpwxgasmfaa3",    VX (4, 153),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10849
{"evdotpwgasmfraa3",    VX (4, 154),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10850
{"evdotpwxgasmfraa3",   VX (4, 155),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10851
{"evdotpwgssmfaa3",   VX (4, 156),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10852
{"evdotpwxgssmfaa3",    VX (4, 157),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10853
{"evdotpwgssmfraa3",    VX (4, 158),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10854
{"evdotpwxgssmfraa3",   VX (4, 159),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10855
{"evdotpwcssia",    VX (4, 160),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10856
{"evdotpwcsmia",    VX (4, 161),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10857
{"evdotpwcssfra",   VX (4, 162),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10858
{"evdotpwcssfa",    VX (4, 163),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10859
{"evdotpwgasmfa",   VX (4, 168),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10860
{"evdotpwxgasmfa",    VX (4, 169),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10861
{"evdotpwgasmfra",    VX (4, 170),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10862
{"evdotpwxgasmfra",   VX (4, 171),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10863
{"evdotpwgssmfa",   VX (4, 172),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10864
{"evdotpwxgssmfa",    VX (4, 173),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10865
{"evdotpwgssmfra",    VX (4, 174),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10866
{"evdotpwxgssmfra",   VX (4, 175),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10867
{"evdotpwcssiaaw",    VX (4, 176),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10868
{"evdotpwcsmiaaw",    VX (4, 177),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10869
{"evdotpwcssfraaw",   VX (4, 178),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10870
{"evdotpwcssfaaw",    VX (4, 179),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10871
{"evdotpwgasmfaa",    VX (4, 184),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10872
{"evdotpwxgasmfaa",   VX (4, 185),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10873
{"evdotpwgasmfraa",   VX (4, 186),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10874
{"evdotpwxgasmfraa",    VX (4, 187),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10875
{"evdotpwgssmfaa",    VX (4, 188),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10876
{"evdotpwxgssmfaa",   VX (4, 189),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10877
{"evdotpwgssmfraa",   VX (4, 190),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10878
{"evdotpwxgssmfraa",    VX (4, 191),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10879
{"evdotphihcssi",   VX (4, 256),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10880
{"evdotplohcssi",   VX (4, 257),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10881
{"evdotphihcssf",   VX (4, 258),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10882
{"evdotplohcssf",   VX (4, 259),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10883
{"evdotphihcsmi",   VX (4, 264),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10884
{"evdotplohcsmi",   VX (4, 265),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10885
{"evdotphihcssfr",    VX (4, 266),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10886
{"evdotplohcssfr",    VX (4, 267),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10887
{"evdotphihcssiaaw3",   VX (4, 272),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10888
{"evdotplohcssiaaw3",   VX (4, 273),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10889
{"evdotphihcssfaaw3",   VX (4, 274),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10890
{"evdotplohcssfaaw3",   VX (4, 275),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10891
{"evdotphihcsmiaaw3",   VX (4, 280),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10892
{"evdotplohcsmiaaw3",   VX (4, 281),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10893
{"evdotphihcssfraaw3",    VX (4, 282),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10894
{"evdotplohcssfraaw3",    VX (4, 283),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10895
{"evdotphihcssia",    VX (4, 288),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10896
{"evdotplohcssia",    VX (4, 289),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10897
{"evdotphihcssfa",    VX (4, 290),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10898
{"evdotplohcssfa",    VX (4, 291),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10899
{"evdotphihcsmia",    VX (4, 296),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10900
{"evdotplohcsmia",    VX (4, 297),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10901
{"evdotphihcssfra",   VX (4, 298),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10902
{"evdotplohcssfra",   VX (4, 299),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10903
{"evdotphihcssiaaw",    VX (4, 304),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10904
{"evdotplohcssiaaw",    VX (4, 305),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10905
{"evdotphihcssfaaw",    VX (4, 306),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10906
{"evdotplohcssfaaw",    VX (4, 307),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10907
{"evdotphihcsmiaaw",    VX (4, 312),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10908
{"evdotplohcsmiaaw",    VX (4, 313),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10909
{"evdotphihcssfraaw",   VX (4, 314),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10910
{"evdotplohcssfraaw",   VX (4, 315),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10911
{"evdotphausi",     VX (4, 320),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10912
{"evdotphassi",     VX (4, 321),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10913
{"evdotphasusi",    VX (4, 322),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10914
{"evdotphassf",     VX (4, 323),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10915
{"evdotphsssf",     VX (4, 327),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10916
{"evdotphaumi",     VX (4, 328),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10917
{"evdotphasmi",     VX (4, 329),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10918
{"evdotphasumi",    VX (4, 330),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10919
{"evdotphassfr",    VX (4, 331),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10920
{"evdotphssmi",     VX (4, 333),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10921
{"evdotphsssi",     VX (4, 333),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10922
{"evdotphsssfr",    VX (4, 335),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10923
{"evdotphausiaaw3",   VX (4, 336),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10924
{"evdotphassiaaw3",   VX (4, 337),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10925
{"evdotphasusiaaw3",    VX (4, 338),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10926
{"evdotphassfaaw3",   VX (4, 339),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10927
{"evdotphsssiaaw3",   VX (4, 341),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10928
{"evdotphsssfaaw3",   VX (4, 343),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10929
{"evdotphaumiaaw3",   VX (4, 344),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10930
{"evdotphasmiaaw3",   VX (4, 345),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10931
{"evdotphasumiaaw3",    VX (4, 346),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10932
{"evdotphassfraaw3",    VX (4, 347),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10933
{"evdotphssmiaaw3",   VX (4, 349),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10934
{"evdotphsssfraaw3",    VX (4, 351),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10935
{"evdotphausia",    VX (4, 352),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10936
{"evdotphassia",    VX (4, 353),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10937
{"evdotphasusia",   VX (4, 354),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10938
{"evdotphassfa",    VX (4, 355),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10939
{"evdotphsssfa",    VX (4, 359),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10940
{"evdotphaumia",    VX (4, 360),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10941
{"evdotphasmia",    VX (4, 361),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10942
{"evdotphasumia",   VX (4, 362),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10943
{"evdotphassfra",   VX (4, 363),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10944
{"evdotphssmia",    VX (4, 365),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10945
{"evdotphsssia",    VX (4, 365),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10946
{"evdotphsssfra",   VX (4, 367),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10947
{"evdotphausiaaw",    VX (4, 368),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10948
{"evdotphassiaaw",    VX (4, 369),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10949
{"evdotphasusiaaw",   VX (4, 370),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10950
{"evdotphassfaaw",    VX (4, 371),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10951
{"evdotphsssiaaw",    VX (4, 373),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10952
{"evdotphsssfaaw",    VX (4, 375),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10953
{"evdotphaumiaaw",    VX (4, 376),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10954
{"evdotphasmiaaw",    VX (4, 377),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10955
{"evdotphasumiaaw",   VX (4, 378),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10956
{"evdotphassfraaw",   VX (4, 379),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10957
{"evdotphssmiaaw",    VX (4, 381),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10958
{"evdotphsssfraaw",   VX (4, 383),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10959
{"evdotp4hgaumi",   VX (4, 384),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10960
{"evdotp4hgasmi",   VX (4, 385),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10961
{"evdotp4hgasumi",    VX (4, 386),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10962
{"evdotp4hgasmf",   VX (4, 387),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10963
{"evdotp4hgssmi",   VX (4, 388),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10964
{"evdotp4hgssmf",   VX (4, 389),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10965
{"evdotp4hxgasmi",    VX (4, 390),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10966
{"evdotp4hxgasmf",    VX (4, 391),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10967
{"evdotpbaumi",     VX (4, 392),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10968
{"evdotpbasmi",     VX (4, 393),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10969
{"evdotpbasumi",    VX (4, 394),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10970
{"evdotp4hxgssmi",    VX (4, 398),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10971
{"evdotp4hxgssmf",    VX (4, 399),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10972
{"evdotp4hgaumiaa3",    VX (4, 400),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10973
{"evdotp4hgasmiaa3",    VX (4, 401),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10974
{"evdotp4hgasumiaa3",   VX (4, 402),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10975
{"evdotp4hgasmfaa3",    VX (4, 403),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10976
{"evdotp4hgssmiaa3",    VX (4, 404),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10977
{"evdotp4hgssmfaa3",    VX (4, 405),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10978
{"evdotp4hxgasmiaa3",   VX (4, 406),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10979
{"evdotp4hxgasmfaa3",   VX (4, 407),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10980
{"evdotpbaumiaaw3",   VX (4, 408),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10981
{"evdotpbasmiaaw3",   VX (4, 409),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10982
{"evdotpbasumiaaw3",    VX (4, 410),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10983
{"evdotp4hxgssmiaa3",   VX (4, 414),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10984
{"evdotp4hxgssmfaa3",   VX (4, 415),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10985
{"evdotp4hgaumia",    VX (4, 416),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10986
{"evdotp4hgasmia",    VX (4, 417),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10987
{"evdotp4hgasumia",   VX (4, 418),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10988
{"evdotp4hgasmfa",    VX (4, 419),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10989
{"evdotp4hgssmia",    VX (4, 420),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10990
{"evdotp4hgssmfa",    VX (4, 421),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10991
{"evdotp4hxgasmia",   VX (4, 422),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10992
{"evdotp4hxgasmfa",   VX (4, 423),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10993
{"evdotpbaumia",    VX (4, 424),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10994
{"evdotpbasmia",    VX (4, 425),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10995
{"evdotpbasumia",   VX (4, 426),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10996
{"evdotp4hxgssmia",   VX (4, 430),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10997
{"evdotp4hxgssmfa",   VX (4, 431),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10998
{"evdotp4hgaumiaa",   VX (4, 432),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10999
{"evdotp4hgasmiaa",   VX (4, 433),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11000
{"evdotp4hgasumiaa",    VX (4, 434),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11001
{"evdotp4hgasmfaa",   VX (4, 435),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11002
{"evdotp4hgssmiaa",   VX (4, 436),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11003
{"evdotp4hgssmfaa",   VX (4, 437),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11004
{"evdotp4hxgasmiaa",    VX (4, 438),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11005
{"evdotp4hxgasmfaa",    VX (4, 439),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11006
{"evdotpbaumiaaw",    VX (4, 440),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11007
{"evdotpbasmiaaw",    VX (4, 441),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11008
{"evdotpbasumiaaw",   VX (4, 442),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11009
{"evdotp4hxgssmiaa",    VX (4, 446),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11010
{"evdotp4hxgssmfaa",    VX (4, 447),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11011
{"evdotpwausi",     VX (4, 448),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11012
{"evdotpwassi",     VX (4, 449),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11013
{"evdotpwasusi",    VX (4, 450),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11014
{"evdotpwaumi",     VX (4, 456),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11015
{"evdotpwasmi",     VX (4, 457),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11016
{"evdotpwasumi",    VX (4, 458),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11017
{"evdotpwssmi",     VX (4, 461),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11018
{"evdotpwsssi",     VX (4, 461),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11019
{"evdotpwausiaa3",    VX (4, 464),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11020
{"evdotpwassiaa3",    VX (4, 465),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11021
{"evdotpwasusiaa3",   VX (4, 466),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11022
{"evdotpwsssiaa3",    VX (4, 469),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11023
{"evdotpwaumiaa3",    VX (4, 472),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11024
{"evdotpwasmiaa3",    VX (4, 473),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11025
{"evdotpwasumiaa3",   VX (4, 474),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11026
{"evdotpwssmiaa3",    VX (4, 477),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11027
{"evdotpwausia",    VX (4, 480),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11028
{"evdotpwassia",    VX (4, 481),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11029
{"evdotpwasusia",   VX (4, 482),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11030
{"evdotpwaumia",    VX (4, 488),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11031
{"evdotpwasmia",    VX (4, 489),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11032
{"evdotpwasumia",   VX (4, 490),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11033
{"evdotpwssmia",    VX (4, 493),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11034
{"evdotpwsssia",    VX (4, 493),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11035
{"evdotpwausiaa",   VX (4, 496),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11036
{"evdotpwassiaa",   VX (4, 497),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11037
{"evdotpwasusiaa",    VX (4, 498),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11038
{"evdotpwsssiaa",   VX (4, 501),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11039
{"evdotpwaumiaa",   VX (4, 504),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11040
{"evdotpwasmiaa",   VX (4, 505),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11041
{"evdotpwasumiaa",    VX (4, 506),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11042
{"evdotpwssmiaa",   VX (4, 509),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11043
{"evaddib",     VX (4, 515),    VX_MASK,    PPCSPE2, 0, {RD, RB, UIMM}},
11044
{"evaddih",     VX (4, 513),    VX_MASK,    PPCSPE2, 0, {RD, RB, UIMM}},
11045
{"evsubifh",      VX (4, 517),    VX_MASK,    PPCSPE2, 0, {RD, UIMM, RB}},
11046
{"evsubifb",      VX (4, 519),    VX_MASK,    PPCSPE2, 0, {RD, UIMM, RB}},
11047
{"evabsb",      VX_RB_CONST(4, 520, 2),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11048
{"evabsh",      VX_RB_CONST(4, 520, 4),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11049
{"evabsd",      VX_RB_CONST(4, 520, 6),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11050
{"evabss",      VX_RB_CONST(4, 520, 8),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11051
{"evabsbs",     VX_RB_CONST(4, 520, 10), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11052
{"evabshs",     VX_RB_CONST(4, 520, 12), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11053
{"evabsds",     VX_RB_CONST(4, 520, 14), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11054
{"evnegwo",     VX_RB_CONST(4, 521, 1),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11055
{"evnegb",      VX_RB_CONST(4, 521, 2),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11056
{"evnegbo",     VX_RB_CONST(4, 521, 3),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11057
{"evnegh",      VX_RB_CONST(4, 521, 4),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11058
{"evnegho",     VX_RB_CONST(4, 521, 5),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11059
{"evnegd",      VX_RB_CONST(4, 521, 6),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11060
{"evnegs",      VX_RB_CONST(4, 521, 8),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11061
{"evnegwos",      VX_RB_CONST(4, 521, 9),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11062
{"evnegbs",     VX_RB_CONST(4, 521, 10), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11063
{"evnegbos",      VX_RB_CONST(4, 521, 11), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11064
{"evneghs",     VX_RB_CONST(4, 521, 12), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11065
{"evneghos",      VX_RB_CONST(4, 521, 13), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11066
{"evnegds",     VX_RB_CONST(4, 521, 14), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11067
{"evextzb",     VX_RB_CONST(4, 522, 1),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11068
{"evextsbh",      VX_RB_CONST(4, 522, 4),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11069
{"evextsw",     VX_RB_CONST(4, 523, 6),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11070
{"evrndwh",     VX_RB_CONST(4, 524, 0),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11071
{"evrndhb",     VX_RB_CONST(4, 524, 4),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11072
{"evrnddw",     VX_RB_CONST(4, 524, 6),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11073
{"evrndwhus",     VX_RB_CONST(4, 524, 8),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11074
{"evrndwhss",     VX_RB_CONST(4, 524, 9),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11075
{"evrndhbus",     VX_RB_CONST(4, 524, 12), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11076
{"evrndhbss",     VX_RB_CONST(4, 524, 13), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11077
{"evrnddwus",     VX_RB_CONST(4, 524, 14), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11078
{"evrnddwss",     VX_RB_CONST(4, 524, 15), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11079
{"evrndwnh",      VX_RB_CONST(4, 524, 16), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11080
{"evrndhnb",      VX_RB_CONST(4, 524, 20), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11081
{"evrnddnw",      VX_RB_CONST(4, 524, 22), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11082
{"evrndwnhus",      VX_RB_CONST(4, 524, 24), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11083
{"evrndwnhss",      VX_RB_CONST(4, 524, 25), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11084
{"evrndhnbus",      VX_RB_CONST(4, 524, 28), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11085
{"evrndhnbss",      VX_RB_CONST(4, 524, 29), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11086
{"evrnddnwus",      VX_RB_CONST(4, 524, 30), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11087
{"evrnddnwss",      VX_RB_CONST(4, 524, 31), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11088
{"evcntlzh",      VX_RB_CONST(4, 525, 4),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11089
{"evcntlsh",      VX_RB_CONST(4, 526, 4),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11090
{"evpopcntb",     VX_RB_CONST(4, 526, 26), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11091
{"circinc",     VX (4, 528),       VX_MASK,   PPCSPE2, 0, {RD, RA, RB}},
11092
{"evunpkhibui",     VX_RB_CONST(4, 540, 0),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11093
{"evunpkhibsi",     VX_RB_CONST(4, 540, 1),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11094
{"evunpkhihui",     VX_RB_CONST(4, 540, 2),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11095
{"evunpkhihsi",     VX_RB_CONST(4, 540, 3),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11096
{"evunpklobui",     VX_RB_CONST(4, 540, 4),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11097
{"evunpklobsi",     VX_RB_CONST(4, 540, 5),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11098
{"evunpklohui",     VX_RB_CONST(4, 540, 6),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11099
{"evunpklohsi",     VX_RB_CONST(4, 540, 7),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11100
{"evunpklohf",      VX_RB_CONST(4, 540, 8),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11101
{"evunpkhihf",      VX_RB_CONST(4, 540, 9),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11102
{"evunpklowgsf",    VX_RB_CONST(4, 540, 12), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11103
{"evunpkhiwgsf",    VX_RB_CONST(4, 540, 13), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11104
{"evsatsduw",     VX_RB_CONST(4, 540, 16), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11105
{"evsatsdsw",     VX_RB_CONST(4, 540, 17), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11106
{"evsatshub",     VX_RB_CONST(4, 540, 18), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11107
{"evsatshsb",     VX_RB_CONST(4, 540, 19), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11108
{"evsatuwuh",     VX_RB_CONST(4, 540, 20), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11109
{"evsatswsh",     VX_RB_CONST(4, 540, 21), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11110
{"evsatswuh",     VX_RB_CONST(4, 540, 22), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11111
{"evsatuhub",     VX_RB_CONST(4, 540, 23), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11112
{"evsatuduw",     VX_RB_CONST(4, 540, 24), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11113
{"evsatuwsw",     VX_RB_CONST(4, 540, 25), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11114
{"evsatshuh",     VX_RB_CONST(4, 540, 26), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11115
{"evsatuhsh",     VX_RB_CONST(4, 540, 27), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11116
{"evsatswuw",     VX_RB_CONST(4, 540, 28), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11117
{"evsatswgsdf",     VX_RB_CONST(4, 540, 29), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11118
{"evsatsbub",     VX_RB_CONST(4, 540, 30), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11119
{"evsatubsb",     VX_RB_CONST(4, 540, 31), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11120
{"evmaxhpuw",     VX_RB_CONST(4, 541, 0),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11121
{"evmaxhpsw",     VX_RB_CONST(4, 541, 1),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11122
{"evmaxbpuh",     VX_RB_CONST(4, 541, 4),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11123
{"evmaxbpsh",     VX_RB_CONST(4, 541, 5),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11124
{"evmaxwpud",     VX_RB_CONST(4, 541, 6),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11125
{"evmaxwpsd",     VX_RB_CONST(4, 541, 7),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11126
{"evminhpuw",     VX_RB_CONST(4, 541, 8),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11127
{"evminhpsw",     VX_RB_CONST(4, 541, 9),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11128
{"evminbpuh",     VX_RB_CONST(4, 541, 12), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11129
{"evminbpsh",     VX_RB_CONST(4, 541, 13), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11130
{"evminwpud",     VX_RB_CONST(4, 541, 14), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11131
{"evminwpsd",     VX_RB_CONST(4, 541, 15), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11132
{"evmaxmagws",      VX (4, 543),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11133
{"evsl",      VX (4, 549),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11134
{"evsli",     VX (4, 551),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM}},
11135
{"evsplatie",     VX_RB_CONST (4, 553, 1),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11136
{"evsplatib",     VX_RB_CONST (4, 553, 2),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11137
{"evsplatibe",      VX_RB_CONST (4, 553, 3),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11138
{"evsplatih",     VX_RB_CONST (4, 553, 4),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11139
{"evsplatihe",      VX_RB_CONST (4, 553, 5),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11140
{"evsplatid",     VX_RB_CONST (4, 553, 6),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11141
{"evsplatia",     VX_RB_CONST (4, 553, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11142
{"evsplatiea",      VX_RB_CONST (4, 553, 17), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11143
{"evsplatiba",      VX_RB_CONST (4, 553, 18), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11144
{"evsplatibea",     VX_RB_CONST (4, 553, 19), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11145
{"evsplatiha",      VX_RB_CONST (4, 553, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11146
{"evsplatihea",     VX_RB_CONST (4, 553, 21), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11147
{"evsplatida",      VX_RB_CONST (4, 553, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11148
{"evsplatfio",      VX_RB_CONST (4, 555, 1),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11149
{"evsplatfib",      VX_RB_CONST (4, 555, 2),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11150
{"evsplatfibo",     VX_RB_CONST (4, 555, 3),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11151
{"evsplatfih",      VX_RB_CONST (4, 555, 4),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11152
{"evsplatfiho",     VX_RB_CONST (4, 555, 5),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11153
{"evsplatfid",      VX_RB_CONST (4, 555, 6),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11154
{"evsplatfia",      VX_RB_CONST (4, 555, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11155
{"evsplatfioa",     VX_RB_CONST (4, 555, 17), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11156
{"evsplatfiba",     VX_RB_CONST (4, 555, 18), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11157
{"evsplatfiboa",    VX_RB_CONST (4, 555, 19), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11158
{"evsplatfiha",     VX_RB_CONST (4, 555, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11159
{"evsplatfihoa",    VX_RB_CONST (4, 555, 21), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11160
{"evsplatfida",     VX_RB_CONST (4, 555, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11161
{"evcmpgtdu",     VX_SPE_CRFD (4, 560, 1), VX_SPE_CRFD_MASK,  PPCSPE2, 0, {CRFD, RA, RB}},
11162
{"evcmpgtds",     VX_SPE_CRFD (4, 561, 1), VX_SPE_CRFD_MASK,  PPCSPE2, 0, {CRFD, RA, RB}},
11163
{"evcmpltdu",     VX_SPE_CRFD (4, 562, 1), VX_SPE_CRFD_MASK,  PPCSPE2, 0, {CRFD, RA, RB}},
11164
{"evcmpltds",     VX_SPE_CRFD (4, 563, 1), VX_SPE_CRFD_MASK,  PPCSPE2, 0, {CRFD, RA, RB}},
11165
{"evcmpeqd",      VX_SPE_CRFD (4, 564, 1), VX_SPE_CRFD_MASK,  PPCSPE2, 0, {CRFD, RA, RB}},
11166
{"evswapbhilo",     VX (4, 568),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11167
{"evswapblohi",     VX (4, 569),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11168
{"evswaphhilo",     VX (4, 570),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11169
{"evswaphlohi",     VX (4, 571),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11170
{"evswaphe",      VX (4, 572),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11171
{"evswaphhi",     VX (4, 573),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11172
{"evswaphlo",     VX (4, 574),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11173
{"evswapho",      VX (4, 575),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11174
{"evinsb",      VX (4, 584),    VX_MASK_DDD,    PPCSPE2, 0, {RD, RA, DDD, BBB}},
11175
{"evxtrb",      VX (4, 586),    VX_MASK_DDD,    PPCSPE2, 0, {RD, RA, DDD, BBB}},
11176
{"evsplath",      VX_SPE2_HH (4, 588, 0, 0), VX_SPE2_HH_MASK, PPCSPE2, 0, {RD, RA, HH}},
11177
{"evsplatb",      VX_SPE2_SPLATB (4, 588, 2), VX_SPE2_SPLATB_MASK, PPCSPE2, 0, {RD, RA, BBB}},
11178
{"evinsh",      VX_SPE2_DDHH (4, 589, 0), VX_SPE2_DDHH_MASK,  PPCSPE2, 0, {RD, RA, DD, HH}},
11179
{"evclrbe",     VX_SPE2_CLR (4, 590, 0), VX_SPE2_CLR_MASK,  PPCSPE2, 0, {RD, RA, MMMM}},
11180
{"evclrbo",     VX_SPE2_CLR (4, 590, 1), VX_SPE2_CLR_MASK,  PPCSPE2, 0, {RD, RA, MMMM}},
11181
{"evclrh",      VX_SPE2_CLR (4, 591, 1), VX_SPE2_CLR_MASK,  PPCSPE2, 0, {RD, RA, MMMM}},
11182
{"evxtrh",      VX_SPE2_DDHH (4, 591, 0), VX_SPE2_DDHH_MASK,  PPCSPE2, 0, {RD, RA, DD, HH}},
11183
{"evselbitm0",      VX (4, 592),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11184
{"evselbitm1",      VX (4, 593),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11185
{"evselbit",      VX (4, 594),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11186
{"evperm",      VX (4, 596),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11187
{"evperm2",     VX (4, 597),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11188
{"evperm3",     VX (4, 598),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11189
{"evxtrd",      VX (4, 600),    VX_OFF_SPE2_MASK, PPCSPE2, 0, {RD, RA, RB, VX_OFF_SPE2}},
11190
{"evsrbu",      VX (4, 608),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11191
{"evsrbs",      VX (4, 609),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11192
{"evsrbiu",     VX (4, 610),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
11193
{"evsrbis",     VX (4, 611),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
11194
{"evslb",     VX (4, 612),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11195
{"evrlb",     VX (4, 613),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11196
{"evslbi",      VX (4, 614),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
11197
{"evrlbi",      VX (4, 615),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
11198
{"evsrhu",      VX (4, 616),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11199
{"evsrhs",      VX (4, 617),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11200
{"evsrhiu",     VX (4, 618),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
11201
{"evsrhis",     VX (4, 619),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
11202
{"evslh",     VX (4, 620),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11203
{"evrlh",     VX (4, 621),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11204
{"evslhi",      VX (4, 622),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
11205
{"evrlhi",      VX (4, 623),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
11206
{"evsru",     VX (4, 624),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11207
{"evsrs",     VX (4, 625),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11208
{"evsriu",      VX (4, 626),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM}},
11209
{"evsris",      VX (4, 627),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM}},
11210
{"evlvsl",      VX (4, 628),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11211
{"evlvsr",      VX (4, 629),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11212
{"evsroiu",     VX_SPE2_OCTET (4, 631, 0), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
11213
{"evsrois",     VX_SPE2_OCTET (4, 631, 1), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
11214
{"evsloi",      VX_SPE2_OCTET (4, 631, 2), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
11215
{"evldbx",      VX (4, 774),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11216
{"evldb",     VX (4, 775),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_8, RA}},
11217
{"evlhhsplathx",    VX (4, 778),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11218
{"evlhhsplath",     VX (4, 779),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_2, RA}},
11219
{"evlwbsplatwx",    VX (4, 786),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11220
{"evlwbsplatw",     VX (4, 787),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4, RA}},
11221
{"evlwhsplatwx",    VX (4, 794),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11222
{"evlwhsplatw",     VX (4, 795),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4, RA}},
11223
{"evlbbsplatbx",    VX (4, 798),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11224
{"evlbbsplatb",     VX (4, 799),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_1, RA}},
11225
{"evstdbx",     VX (4, 806),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11226
{"evstdb",      VX (4, 807),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_8, RA}},
11227
{"evlwbex",     VX (4, 810),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11228
{"evlwbe",      VX (4, 811),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4, RA}},
11229
{"evlwboux",      VX (4, 812),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11230
{"evlwbou",     VX (4, 813),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4, RA}},
11231
{"evlwbosx",      VX (4, 814),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11232
{"evlwbos",     VX (4, 815),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4, RA}},
11233
{"evstwbex",      VX (4, 818),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11234
{"evstwbe",     VX (4, 819),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4, RA}},
11235
{"evstwbox",      VX (4, 822),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11236
{"evstwbo",     VX (4, 823),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4, RA}},
11237
{"evstwbx",     VX (4, 826),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11238
{"evstwb",      VX (4, 827),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4, RA}},
11239
{"evsthbx",     VX (4, 830),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11240
{"evsthb",      VX (4, 831),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_2, RA}},
11241
{"evlddmx",     VX (4, 832),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11242
{"evlddu",      VX (4, 833),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
11243
{"evldwmx",     VX (4, 834),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11244
{"evldwu",      VX (4, 835),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
11245
{"evldhmx",     VX (4, 836),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11246
{"evldhu",      VX (4, 837),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
11247
{"evldbmx",     VX (4, 838),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11248
{"evldbu",      VX (4, 839),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
11249
{"evlhhesplatmx",   VX (4, 840),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11250
{"evlhhesplatu",    VX (4, 841),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
11251
{"evlhhsplathmx",   VX (4, 842),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11252
{"evlhhsplathu",    VX (4, 843),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
11253
{"evlhhousplatmx",    VX (4, 844),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11254
{"evlhhousplatu",   VX (4, 845),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
11255
{"evlhhossplatmx",    VX (4, 846),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11256
{"evlhhossplatu",   VX (4, 847),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
11257
{"evlwhemx",      VX (4, 848),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11258
{"evlwheu",     VX (4, 849),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11259
{"evlwbsplatwmx",   VX (4, 850),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11260
{"evlwbsplatwu",    VX (4, 851),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11261
{"evlwhoumx",     VX (4, 852),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11262
{"evlwhouu",      VX (4, 853),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11263
{"evlwhosmx",     VX (4, 854),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11264
{"evlwhosu",      VX (4, 855),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11265
{"evlwwsplatmx",    VX (4, 856),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11266
{"evlwwsplatu",     VX (4, 857),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11267
{"evlwhsplatwmx",   VX (4, 858),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11268
{"evlwhsplatwu",    VX (4, 859),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11269
{"evlwhsplatmx",    VX (4, 860),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11270
{"evlwhsplatu",     VX (4, 861),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11271
{"evlbbsplatbmx",   VX (4, 862),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11272
{"evlbbsplatbu",    VX (4, 863),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_1_EX0, RA}},
11273
{"evstddmx",      VX (4, 864),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11274
{"evstddu",     VX (4, 865),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
11275
{"evstdwmx",      VX (4, 866),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11276
{"evstdwu",     VX (4, 867),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
11277
{"evstdhmx",      VX (4, 868),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11278
{"evstdhu",     VX (4, 869),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
11279
{"evstdbmx",      VX (4, 870),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11280
{"evstdbu",     VX (4, 871),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
11281
{"evlwbemx",      VX (4, 874),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11282
{"evlwbeu",     VX (4, 875),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11283
{"evlwboumx",     VX (4, 876),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11284
{"evlwbouu",      VX (4, 877),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11285
{"evlwbosmx",     VX (4, 878),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11286
{"evlwbosu",      VX (4, 879),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11287
{"evstwhemx",     VX (4, 880),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11288
{"evstwheu",      VX (4, 881),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11289
{"evstwbemx",     VX (4, 882),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11290
{"evstwbeu",      VX (4, 883),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11291
{"evstwhomx",     VX (4, 884),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11292
{"evstwhou",      VX (4, 885),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11293
{"evstwbomx",     VX (4, 886),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11294
{"evstwbou",      VX (4, 887),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11295
{"evstwwemx",     VX (4, 888),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11296
{"evstwweu",      VX (4, 889),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11297
{"evstwbmx",      VX (4, 890),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11298
{"evstwbu",     VX (4, 891),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11299
{"evstwwomx",     VX (4, 892),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11300
{"evstwwou",      VX (4, 893),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11301
{"evsthbmx",      VX (4, 894),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11302
{"evsthbu",     VX (4, 895),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_2_EX0, RA}},
11303
{"evmhusi",     VX (4, 1024),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11304
{"evmhssi",     VX (4, 1025),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11305
{"evmhsusi",      VX (4, 1026),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11306
{"evmhssf",     VX (4, 1028),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11307
{"evmhumi",     VX (4, 1029),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11308
{"evmhssfr",      VX (4, 1030),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11309
{"evmhesumi",     VX (4, 1034),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11310
{"evmhosumi",     VX (4, 1038),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11311
{"evmbeumi",      VX (4, 1048),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11312
{"evmbesmi",      VX (4, 1049),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11313
{"evmbesumi",     VX (4, 1050),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11314
{"evmboumi",      VX (4, 1052),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11315
{"evmbosmi",      VX (4, 1053),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11316
{"evmbosumi",     VX (4, 1054),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11317
{"evmhesumia",      VX (4, 1066),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11318
{"evmhosumia",      VX (4, 1070),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11319
{"evmbeumia",     VX (4, 1080),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11320
{"evmbesmia",     VX (4, 1081),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11321
{"evmbesumia",      VX (4, 1082),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11322
{"evmboumia",     VX (4, 1084),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11323
{"evmbosmia",     VX (4, 1085),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11324
{"evmbosumia",      VX (4, 1086),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11325
{"evmwusiw",      VX (4, 1088),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11326
{"evmwssiw",      VX (4, 1089),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11327
{"evmwhssfr",     VX (4, 1094),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11328
{"evmwehgsmfr",     VX (4, 1110),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11329
{"evmwehgsmf",      VX (4, 1111),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11330
{"evmwohgsmfr",     VX (4, 1118),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11331
{"evmwohgsmf",      VX (4, 1119),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11332
{"evmwhssfra",      VX (4, 1126),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11333
{"evmwehgsmfra",    VX (4, 1142),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11334
{"evmwehgsmfa",     VX (4, 1143),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11335
{"evmwohgsmfra",    VX (4, 1150),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11336
{"evmwohgsmfa",     VX (4, 1151),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11337
{"evaddusiaa",      VX_RB_CONST(4, 1152, 0), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11338
{"evaddssiaa",      VX_RB_CONST(4, 1153, 0), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11339
{"evsubfusiaa",     VX_RB_CONST(4, 1154, 0), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11340
{"evsubfssiaa",     VX_RB_CONST(4, 1155, 0), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11341
{"evaddsmiaa",      VX_RB_CONST(4, 1156, 0), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11342
{"evsubfsmiaa",     VX_RB_CONST(4, 1158, 0), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11343
{"evaddh",      VX (4, 1160),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11344
{"evaddhss",      VX (4, 1161),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11345
{"evsubfh",     VX (4, 1162),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11346
{"evsubfhss",     VX (4, 1163),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11347
{"evaddhx",     VX (4, 1164),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11348
{"evaddhxss",     VX (4, 1165),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11349
{"evsubfhx",      VX (4, 1166),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11350
{"evsubfhxss",      VX (4, 1167),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11351
{"evaddd",      VX (4, 1168),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11352
{"evadddss",      VX (4, 1169),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11353
{"evsubfd",     VX (4, 1170),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11354
{"evsubfdss",     VX (4, 1171),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11355
{"evaddb",      VX (4, 1172),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11356
{"evaddbss",      VX (4, 1173),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11357
{"evsubfb",     VX (4, 1174),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11358
{"evsubfbss",     VX (4, 1175),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11359
{"evaddsubfh",      VX (4, 1176),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11360
{"evaddsubfhss",    VX (4, 1177),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11361
{"evsubfaddh",      VX (4, 1178),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11362
{"evsubfaddhss",    VX (4, 1179),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11363
{"evaddsubfhx",     VX (4, 1180),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11364
{"evaddsubfhxss",   VX (4, 1181),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11365
{"evsubfaddhx",     VX (4, 1182),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11366
{"evsubfaddhxss",   VX (4, 1183),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11367
{"evadddus",      VX (4, 1184),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11368
{"evaddbus",      VX (4, 1185),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11369
{"evsubfdus",     VX (4, 1186),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11370
{"evsubfbus",     VX (4, 1187),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11371
{"evaddwus",      VX (4, 1188),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11372
{"evaddwxus",     VX (4, 1189),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11373
{"evsubfwus",     VX (4, 1190),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11374
{"evsubfwxus",      VX (4, 1191),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11375
{"evadd2subf2h",    VX (4, 1192),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11376
{"evadd2subf2hss",    VX (4, 1193),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11377
{"evsubf2add2h",    VX (4, 1194),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11378
{"evsubf2add2hss",    VX (4, 1195),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11379
{"evaddhus",      VX (4, 1196),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11380
{"evaddhxus",     VX (4, 1197),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11381
{"evsubfhus",     VX (4, 1198),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11382
{"evsubfhxus",      VX (4, 1199),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11383
{"evaddwss",      VX (4, 1201),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11384
{"evsubfwss",     VX (4, 1203),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11385
{"evaddwx",     VX (4, 1204),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11386
{"evaddwxss",     VX (4, 1205),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11387
{"evsubfwx",      VX (4, 1206),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11388
{"evsubfwxss",      VX (4, 1207),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11389
{"evaddsubfw",      VX (4, 1208),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11390
{"evaddsubfwss",    VX (4, 1209),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11391
{"evsubfaddw",      VX (4, 1210),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11392
{"evsubfaddwss",    VX (4, 1211),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11393
{"evaddsubfwx",     VX (4, 1212),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11394
{"evaddsubfwxss",   VX (4, 1213),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11395
{"evsubfaddwx",     VX (4, 1214),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11396
{"evsubfaddwxss",   VX (4, 1215),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11397
{"evmar",     VX_SPE2_EVMAR (4, 1220),  VX_SPE2_EVMAR_MASK, PPCSPE2, 0, {RD}},
11398
{"evsumwu",     VX_RB_CONST(4, 1221, 0),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11399
{"evsumws",     VX_RB_CONST(4, 1221, 1),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11400
{"evsum4bu",      VX_RB_CONST(4, 1221, 2),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11401
{"evsum4bs",      VX_RB_CONST(4, 1221, 3),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11402
{"evsum2hu",      VX_RB_CONST(4, 1221, 4),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11403
{"evsum2hs",      VX_RB_CONST(4, 1221, 5),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11404
{"evdiff2his",      VX_RB_CONST(4, 1221, 6),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11405
{"evsum2his",     VX_RB_CONST(4, 1221, 7),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11406
{"evsumwua",      VX_RB_CONST(4, 1221, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11407
{"evsumwsa",      VX_RB_CONST(4, 1221, 17), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11408
{"evsum4bua",     VX_RB_CONST(4, 1221, 18), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11409
{"evsum4bsa",     VX_RB_CONST(4, 1221, 19), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11410
{"evsum2hua",     VX_RB_CONST(4, 1221, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11411
{"evsum2hsa",     VX_RB_CONST(4, 1221, 21), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11412
{"evdiff2hisa",     VX_RB_CONST(4, 1221, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11413
{"evsum2hisa",      VX_RB_CONST(4, 1221, 23), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11414
{"evsumwuaa",     VX_RB_CONST(4, 1221, 24), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11415
{"evsumwsaa",     VX_RB_CONST(4, 1221, 25), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11416
{"evsum4buaaw",     VX_RB_CONST(4, 1221, 26), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11417
{"evsum4bsaaw",     VX_RB_CONST(4, 1221, 27), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11418
{"evsum2huaaw",     VX_RB_CONST(4, 1221, 28), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11419
{"evsum2hsaaw",     VX_RB_CONST(4, 1221, 29), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11420
{"evdiff2hisaaw",   VX_RB_CONST(4, 1221, 30), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11421
{"evsum2hisaaw",    VX_RB_CONST(4, 1221, 31), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11422
{"evdivwsf",      VX (4, 1228),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11423
{"evdivwuf",      VX (4, 1229),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11424
{"evdivs",      VX (4, 1230),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11425
{"evdivu",      VX (4, 1231),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11426
{"evaddwegsi",      VX (4, 1232),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11427
{"evaddwegsf",      VX (4, 1233),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11428
{"evsubfwegsi",     VX (4, 1234),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11429
{"evsubfwegsf",     VX (4, 1235),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11430
{"evaddwogsi",      VX (4, 1236),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11431
{"evaddwogsf",      VX (4, 1237),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11432
{"evsubfwogsi",     VX (4, 1238),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11433
{"evsubfwogsf",     VX (4, 1239),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11434
{"evaddhhiuw",      VX (4, 1240),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11435
{"evaddhhisw",      VX (4, 1241),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11436
{"evsubfhhiuw",     VX (4, 1242),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11437
{"evsubfhhisw",     VX (4, 1243),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11438
{"evaddhlouw",      VX (4, 1244),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11439
{"evaddhlosw",      VX (4, 1245),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11440
{"evsubfhlouw",     VX (4, 1246),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11441
{"evsubfhlosw",     VX (4, 1247),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11442
{"evmhesusiaaw",    VX (4, 1282),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11443
{"evmhosusiaaw",    VX (4, 1286),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11444
{"evmhesumiaaw",    VX (4, 1290),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11445
{"evmhosumiaaw",    VX (4, 1294),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11446
{"evmbeusiaah",     VX (4, 1296),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11447
{"evmbessiaah",     VX (4, 1297),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11448
{"evmbesusiaah",    VX (4, 1298),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11449
{"evmbousiaah",     VX (4, 1300),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11450
{"evmbossiaah",     VX (4, 1301),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11451
{"evmbosusiaah",    VX (4, 1302),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11452
{"evmbeumiaah",     VX (4, 1304),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11453
{"evmbesmiaah",     VX (4, 1305),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11454
{"evmbesumiaah",    VX (4, 1306),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11455
{"evmboumiaah",     VX (4, 1308),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11456
{"evmbosmiaah",     VX (4, 1309),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11457
{"evmbosumiaah",    VX (4, 1310),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11458
{"evmwlusiaaw3",    VX (4, 1346),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11459
{"evmwlssiaaw3",    VX (4, 1347),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11460
{"evmwhssfraaw3",   VX (4, 1348),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11461
{"evmwhssfaaw3",    VX (4, 1349),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11462
{"evmwhssfraaw",    VX (4, 1350),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11463
{"evmwhssfaaw",     VX (4, 1351),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11464
{"evmwlumiaaw3",    VX (4, 1354),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11465
{"evmwlsmiaaw3",    VX (4, 1355),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11466
{"evmwusiaa",     VX (4, 1360),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11467
{"evmwssiaa",     VX (4, 1361),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11468
{"evmwehgsmfraa",   VX (4, 1366),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11469
{"evmwehgsmfaa",    VX (4, 1367),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11470
{"evmwohgsmfraa",   VX (4, 1374),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11471
{"evmwohgsmfaa",    VX (4, 1375),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11472
{"evmhesusianw",    VX (4, 1410),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11473
{"evmhosusianw",    VX (4, 1414),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11474
{"evmhesumianw",    VX (4, 1418),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11475
{"evmhosumianw",    VX (4, 1422),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11476
{"evmbeusianh",     VX (4, 1424),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11477
{"evmbessianh",     VX (4, 1425),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11478
{"evmbesusianh",    VX (4, 1426),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11479
{"evmbousianh",     VX (4, 1428),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11480
{"evmbossianh",     VX (4, 1429),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11481
{"evmbosusianh",    VX (4, 1430),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11482
{"evmbeumianh",     VX (4, 1432),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11483
{"evmbesmianh",     VX (4, 1433),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11484
{"evmbesumianh",    VX (4, 1434),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11485
{"evmboumianh",     VX (4, 1436),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11486
{"evmbosmianh",     VX (4, 1437),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11487
{"evmbosumianh",    VX (4, 1438),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11488
{"evmwlusianw3",    VX (4, 1474),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11489
{"evmwlssianw3",    VX (4, 1475),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11490
{"evmwhssfranw3",   VX (4, 1476),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11491
{"evmwhssfanw3",    VX (4, 1477),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11492
{"evmwhssfranw",    VX (4, 1478),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11493
{"evmwhssfanw",     VX (4, 1479),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11494
{"evmwlumianw3",    VX (4, 1482),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11495
{"evmwlsmianw3",    VX (4, 1483),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11496
{"evmwusian",     VX (4, 1488),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11497
{"evmwssian",     VX (4, 1489),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11498
{"evmwehgsmfran",   VX (4, 1494),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11499
{"evmwehgsmfan",    VX (4, 1495),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11500
{"evmwohgsmfran",   VX (4, 1502),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11501
{"evmwohgsmfan",    VX (4, 1503),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11502
{"evseteqb",      VX (4, 1536),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11503
{"evseteqb.",     VX (4, 1537),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11504
{"evseteqh",      VX (4, 1538),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11505
{"evseteqh.",     VX (4, 1539),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11506
{"evseteqw",      VX (4, 1540),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11507
{"evseteqw.",     VX (4, 1541),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11508
{"evsetgthu",     VX (4, 1544),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11509
{"evsetgthu.",      VX (4, 1545),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11510
{"evsetgths",     VX (4, 1546),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11511
{"evsetgths.",      VX (4, 1547),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11512
{"evsetgtwu",     VX (4, 1548),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11513
{"evsetgtwu.",      VX (4, 1549),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11514
{"evsetgtws",     VX (4, 1550),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11515
{"evsetgtws.",      VX (4, 1551),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11516
{"evsetgtbu",     VX (4, 1552),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11517
{"evsetgtbu.",      VX (4, 1553),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11518
{"evsetgtbs",     VX (4, 1554),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11519
{"evsetgtbs.",      VX (4, 1555),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11520
{"evsetltbu",     VX (4, 1556),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11521
{"evsetltbu.",      VX (4, 1557),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11522
{"evsetltbs",     VX (4, 1558),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11523
{"evsetltbs.",      VX (4, 1559),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11524
{"evsetlthu",     VX (4, 1560),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11525
{"evsetlthu.",      VX (4, 1561),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11526
{"evsetlths",     VX (4, 1562),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11527
{"evsetlths.",      VX (4, 1563),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11528
{"evsetltwu",     VX (4, 1564),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11529
{"evsetltwu.",      VX (4, 1565),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11530
{"evsetltws",     VX (4, 1566),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11531
{"evsetltws.",      VX (4, 1567),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11532
{"evsaduw",     VX (4, 1568),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11533
{"evsadsw",     VX (4, 1569),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11534
{"evsad4ub",      VX (4, 1570),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11535
{"evsad4sb",      VX (4, 1571),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11536
{"evsad2uh",      VX (4, 1572),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11537
{"evsad2sh",      VX (4, 1573),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11538
{"evsaduwa",      VX (4, 1576),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11539
{"evsadswa",      VX (4, 1577),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11540
{"evsad4uba",     VX (4, 1578),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11541
{"evsad4sba",     VX (4, 1579),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11542
{"evsad2uha",     VX (4, 1580),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11543
{"evsad2sha",     VX (4, 1581),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11544
{"evabsdifuw",      VX (4, 1584),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11545
{"evabsdifsw",      VX (4, 1585),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11546
{"evabsdifub",      VX (4, 1586),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11547
{"evabsdifsb",      VX (4, 1587),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11548
{"evabsdifuh",      VX (4, 1588),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11549
{"evabsdifsh",      VX (4, 1589),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11550
{"evsaduwaa",     VX (4, 1592),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11551
{"evsadswaa",     VX (4, 1593),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11552
{"evsad4ubaaw",     VX (4, 1594),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11553
{"evsad4sbaaw",     VX (4, 1595),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11554
{"evsad2uhaaw",     VX (4, 1596),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11555
{"evsad2shaaw",     VX (4, 1597),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11556
{"evpkshubs",     VX (4, 1600),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11557
{"evpkshsbs",     VX (4, 1601),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11558
{"evpkswuhs",     VX (4, 1602),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11559
{"evpkswshs",     VX (4, 1603),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11560
{"evpkuhubs",     VX (4, 1604),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11561
{"evpkuwuhs",     VX (4, 1605),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11562
{"evpkswshilvs",    VX (4, 1606),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11563
{"evpkswgshefrs",   VX (4, 1607),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11564
{"evpkswshfrs",     VX (4, 1608),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11565
{"evpkswshilvfrs",    VX (4, 1609),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11566
{"evpksdswfrs",     VX (4, 1610),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11567
{"evpksdshefrs",    VX (4, 1611),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11568
{"evpkuduws",     VX (4, 1612),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11569
{"evpksdsws",     VX (4, 1613),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11570
{"evpkswgswfrs",    VX (4, 1614),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11571
{"evilveh",     VX (4, 1616),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11572
{"evilveoh",      VX (4, 1617),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11573
{"evilvhih",      VX (4, 1618),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11574
{"evilvhiloh",      VX (4, 1619),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11575
{"evilvloh",      VX (4, 1620),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11576
{"evilvlohih",      VX (4, 1621),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11577
{"evilvoeh",      VX (4, 1622),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11578
{"evilvoh",     VX (4, 1623),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11579
{"evdlveb",     VX (4, 1624),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11580
{"evdlveh",     VX (4, 1625),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11581
{"evdlveob",      VX (4, 1626),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11582
{"evdlveoh",      VX (4, 1627),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11583
{"evdlvob",     VX (4, 1628),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11584
{"evdlvoh",     VX (4, 1629),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11585
{"evdlvoeb",      VX (4, 1630),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11586
{"evdlvoeh",      VX (4, 1631),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11587
{"evmaxbu",     VX (4, 1632),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11588
{"evmaxbs",     VX (4, 1633),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11589
{"evmaxhu",     VX (4, 1634),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11590
{"evmaxhs",     VX (4, 1635),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11591
{"evmaxwu",     VX (4, 1636),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11592
{"evmaxws",     VX (4, 1637),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11593
{"evmaxdu",     VX (4, 1638),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11594
{"evmaxds",     VX (4, 1639),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11595
{"evminbu",     VX (4, 1640),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11596
{"evminbs",     VX (4, 1641),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11597
{"evminhu",     VX (4, 1642),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11598
{"evminhs",     VX (4, 1643),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11599
{"evminwu",     VX (4, 1644),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11600
{"evminws",     VX (4, 1645),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11601
{"evmindu",     VX (4, 1646),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11602
{"evminds",     VX (4, 1647),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11603
{"evavgwu",     VX (4, 1648),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11604
{"evavgws",     VX (4, 1649),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11605
{"evavgbu",     VX (4, 1650),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11606
{"evavgbs",     VX (4, 1651),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11607
{"evavghu",     VX (4, 1652),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11608
{"evavghs",     VX (4, 1653),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11609
{"evavgdu",     VX (4, 1654),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11610
{"evavgds",     VX (4, 1655),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11611
{"evavgwur",      VX (4, 1656),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11612
{"evavgwsr",      VX (4, 1657),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11613
{"evavgbur",      VX (4, 1658),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11614
{"evavgbsr",      VX (4, 1659),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11615
{"evavghur",      VX (4, 1660),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11616
{"evavghsr",      VX (4, 1661),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11617
{"evavgdur",      VX (4, 1662),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11618
{"evavgdsr",      VX (4, 1663),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11619
};
11620
11621
const unsigned int spe2_num_opcodes = ARRAY_SIZE (spe2_opcodes);